{"report_id":"62fc2879-1f6f-4cd4-8af4-65c54869beea","version":0,"status":"done","tags":[],"date":"2026-07-27T11:15:06Z","url":{"schema":"http","addr":"hkdtoken.com","fqdn":"hkdtoken.com","domain":"hkdtoken.com","tld":"com"},"ip":{"addr":"172.67.134.120","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"punks.my/","fqdn":"punks.my","domain":"punks.my","tld":"my"},"title":"PUNKS.MY - Malaysia's Historical NFT","dom":{"size":18231,"mime_type":"text/html; charset=utf-8","magic":"HTML document, ASCII text, with very long lines (473)","md5":"16b43e9c62d26787689aaf0a3bb595b9","sha1":"158860bb88eff783f88659020e42d984948e0a51","sha256":"4e08d62f92058f6068c87c6b446e3a486c7d0d1c72fb6e0c923fa2da896cb38d","sha512":"2156955fb157763dcf213a1d8566084133ebc2347b320ff169fcdbe7a350716db103fd03ec606231d1919a14b387e721c3a7ecf05d9b5be4575593f3fdadf2b9","ssdeep":"384:Bms/hfJUDx8lpYtidmC+jgxqjMa2ICFjQNM9964:Bm2Jkx8lpYt48jAqjMa2ICFjQNMu4","tlshash":"7682a6b24ce62233026395c4a936ffdcb8d3402fda4a9501b2fc56496fd6e92cf43619","dom_hash":"domhash79ce376a40f7cbbffc51ba60a37b7b70","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"hkdtoken.com","fqdn":"hkdtoken.com","domain":"hkdtoken.com","tld":"com"},"ip":{"addr":"172.67.134.120","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T11:15:06Z","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":1}},"detection":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null},"summary":[{"fqdn":"hkdtoken.com","ip":{"addr":"172.67.134.120","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"unknown","domain_rank":0,"first_seen":"2026-07-27T09:18:22.900035Z","last_seen":"2026-07-27T09:18:22.900035Z","alert_count":0,"request_count":1,"received_data":569,"sent_data":481,"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"]}]},{"fqdn":"punks.my","ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"unknown","domain_rank":0,"first_seen":"2025-12-16T06:43:12.724865Z","last_seen":"2026-07-21T05:17:10.539647Z","alert_count":45,"request_count":45,"received_data":1887800,"sent_data":53162,"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":"SweetAlert","description":"SweetAlert is a JavaScript library that provides alternative alert and modal dialog boxes for web applications, with customisable features, aiming to improve the user interface of the default browser dialogs.","website":"https://sweetalert.js.org","common_platform_enumeration":"","icon":"SweetAlert.png","categories":["JavaScript libraries"]},{"name":"Moment.js","description":"Moment.js is a free and open-source JavaScript library that removes the need to use the native JavaScript Date object directly.","website":"https://momentjs.com","common_platform_enumeration":"cpe:2.3:a:momentjs:moment:*:*:*:*:*:*:*:*","icon":"Moment.js.svg","categories":["JavaScript libraries"]},{"name":"TypeScript","description":"TypeScript is an open-source language which builds on JavaScript  by adding static type definitions.","website":"https://www.typescriptlang.org","common_platform_enumeration":"","icon":"TypeScript.svg","categories":["Programming languages"]},{"name":"FullCalendar","description":"FullCalendar is a full-sized drag and drop JavaScript event calendar.","website":"https://fullcalendar.io","common_platform_enumeration":"","icon":"FullCalendar.png","categories":["Widgets"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Modernizr","description":"Modernizr is a JavaScript library that detects the features available in a user's browser.","website":"https://modernizr.com","common_platform_enumeration":"","icon":"Modernizr.svg","categories":["JavaScript libraries"]},{"name":"jQuery","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-26T22:19:52.505461Z","alert_count":0,"request_count":4,"received_data":34696,"sent_data":2200,"comment":"","tags":null,"fingerprints":null},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":313,"first_seen":"2012-05-23T12:41:44Z","last_seen":"2026-07-26T22:23:14.439231Z","alert_count":0,"request_count":2,"received_data":8871,"sent_data":1023,"comment":"","tags":null,"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"]}]},{"fqdn":"www.gstatic.com","ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":146047,"first_seen":"2012-05-29T15:36:17Z","last_seen":"2026-07-26T23:06:30.068608Z","alert_count":0,"request_count":1,"received_data":63271,"sent_data":455,"comment":"","tags":null,"fingerprints":null},{"fqdn":"www.googletagmanager.com","ip":{"addr":"142.250.178.72","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2011-11-11","domain_rank":283,"first_seen":"2012-10-04T01:07:32Z","last_seen":"2026-07-26T22:31:28.839046Z","alert_count":0,"request_count":1,"received_data":460998,"sent_data":471,"comment":"","tags":null,"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"]}]}],"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":"punks.my/assets/scripts/jquery.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"d0212568ce69457081dacf84e327fa5c","sha1":"d6702a1af0378b2342f6a0692e77c169f580aed7","sha256":"266bcea0bb58b26aa5b16c5aee60d22ccc1ae9d67daeb21db6bad56119c3447d","sha512":"9738a50be24577a615f3ebd044d46d53b0ceaafe526bd124e77957b7f93dd47653269cad1d2d4bea5d6630a47d2ba555a03b782e211769ae9706b624d588464d","ssdeep":"1536:u5hEyisTikEJqRdXXe2pP7lgoVMEXvdVhvLHSh4xzAdXtqTyZSusjvKx/w7Ug2xC:0QGvHhvLJzuXkTSc6//MTDU8Cu5","tlshash":"5f83d5d9b2c670529b7730b850bf450bb17a98dab44c8c60f1a8d5d57db8a8d807bf2c","size":86341,"data":"","first_seen":"2023-03-07T01:03:28Z","last_seen":"2026-07-27T11:25:33.537811Z","times_seen":12442,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/modernizr.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"5de589ca9b8ecf3f97c799def864e063","sha1":"9c6bc837242beb2dacb5839da5cf11bbbe816aed","sha256":"51e952106b9472e97a9af121d1dfbf8d1a93a29b21f19cd0c8047d85f531e5af","sha512":"55f6bde32f369cafd5c4abe29ce328925acd00a30a1d24317c0d03b8a328b562b0f8b610a761927ef93e45ebd158f7a98a4741e3e1e92c417fc71f1fcef956e0","ssdeep":"192:waBnUsMMpKQob1dHYPeIny6ELDDhWwpy8b7z:waBFXpKQoZRY5y6WHh1pz","tlshash":"bd02b7c87652f226879721b6507f420ff175a86aa81c8940e059d9f8bd70cf8163bf2e","size":8552,"data":"","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.5646Z","times_seen":27,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/fullscreen/jquery.fullscreen-min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"c8c06428e2a353df826ceff29af00054","sha1":"9935946f475fb2574a18b4b5e0d8e99c647260fc","sha256":"f320af55c2dfe9a14413b54dd951b594605f7602e5196b749e334fde3ef08dd3","sha512":"e1a154705e5e684815687c4b55f4395aa41cc4e2f771307b2237bd35dfda4a74f7898f76f9b9e5ad1635128a481e7ba97978a98362232be543aeca6dfe455f53","ssdeep":"","tlshash":"f83137ffd18790e1e8f62e9ff96fa9efa03697957405f017a02d48b01821f589b24970","size":1569,"data":"","first_seen":"2023-03-10T15:57:30Z","last_seen":"2026-07-27T11:25:33.539557Z","times_seen":33,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/chart/chartist/chartist.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"7b14465306edff3606bebf8ddfd4c11f","sha1":"3f8edaf284826b1a5b1d5e164225e5b4b2f79aa0","sha256":"d75de3ba1937e95e7136c360f68a0d01747164c82843f64c66cf717bcf02f3a6","sha512":"97b7dd48727a84a975b783ad9c46e9346589718f88519bf60289197791bc6a4dcc2fbb3a340321218471697828b4f7e1f6123cbb41d51321cd7af5cf5fbf82f9","ssdeep":"768:bmbkWSGO6KBcEAjOsc3cRZHLXtTwfy2rRB04rcBba6GUFetnEb0shwQAzvz4U66q:bZGOmjOuZHLXtTwfy2rRB04rcBba6GUX","tlshash":"a503ea88f6567a16869362b6403f010ff171b4eda4499ca8e49ce8d0bd78d79127bf38","size":38149,"data":"","first_seen":"2024-07-26T18:42:12Z","last_seen":"2026-07-27T11:25:33.563848Z","times_seen":24,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/moment/moment.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"5584d3bedf9e614912b624e457bcb057","sha1":"0d60a088682f9c7325994c23fc88c319b8ddb534","sha256":"9eddbcbe2e9d227859ae6fd3b7774ce2de738ea1d88f32edc8cbef708f2d5396","sha512":"f3a7a8adc53b03cbc65cc6e4e5864ef737c5b05da8434f0a55fad1a855796eb141c6d973a4fe8de5f0b692e3e28a95b26f63110930a50b831f6697ddcd32a5e0","ssdeep":"1536:COJOXkMbLHDXf21z4c1i4j06HPUF8LFSN4+KzX1bDTokYi0gCJUjI:COJOXZHnc1ivy+KL18ejI","tlshash":"b9d33b8a69e72022466372394fdf5405ba388523150ede047c8da3d4af86d7847fafec","size":140639,"data":"","first_seen":"2023-03-07T13:58:55Z","last_seen":"2026-07-27T11:25:33.559706Z","times_seen":24,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/js/ethers-5.2.umd.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"50ed955cf32ac8e4e1daa0fac8fcde98","sha1":"fc073f2b9715e44dc2346d7cbe0b491fb59da146","sha256":"c2bcdc085e0557a379a6056c629be748d22a3c1dbe539a48ae02de7d69c95eff","sha512":"62b27b6739ad99525dc02c2ee81f754e15062df363b137477f521d3dfdc9ec0650229543bda85c04b5a8282d5e6d9f5137aba99bd66178814a49feecee4fd961","ssdeep":"12288:YPEmxeUs6ky8Xb863bkmCEuls/LaottWsv1TY4:YPTWbsEss/LtttJz","tlshash":"4df44b85b3a5b0b583c628a4143f5006f63af46b502c40a4f759faf269f9d8c957bb3c","size":733070,"data":"","first_seen":"2023-03-07T12:07:13Z","last_seen":"2026-07-27T11:25:33.520054Z","times_seen":1164,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/sweet-alert/sweetalert.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"0068f44b0aa1b83fa7679860ceb26590","sha1":"20d5cdb9d2002442843baab241f2e883563d1de5","sha256":"7a056fc64aba501090c8acd106b0c7bbc9a267914e695ae34aa42a6ae2a094a7","sha512":"ed54e2cbd021a5acc178a40096168b45493e9003006fca1cce58eec891cfb153d6a31fd02170c53a74fd0d4935502f046e71ca45d428c13eec3817bb2c08da8d","ssdeep":"384:Rixwo5U75rT3rOlgkhzj7qRM0I2XyySyTXmy9ti/IEUVRj6KaVnzZduTQRc8exfx:RiU3rfRMbwd9t2UVR2KaVz/uMRc8exp","tlshash":"5772b84d315438b313a765f150af8147a4b15abde80998a0366cc4e61ff8c8e6ae2f77","size":16977,"data":"","first_seen":"2023-03-07T01:15:37Z","last_seen":"2026-07-27T11:25:33.528567Z","times_seen":4056,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/waves/waves.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"2bff429e1f4236b4f210dc72140961ff","sha1":"782d212abe569400397f5e62bd5c060f105564f7","sha256":"202bc564b7fb82c9707e9bddc7343cc3ca19b746ebce816bf2fd9d5c179cb8b6","sha512":"1c687aa98be219d897855753769692fc2ea0dd59cc196f338d845255f5c9b23fd0273a1c9840d762a3981c65666e63748a6c5b1f5069bad87afc0faa9ec38403","ssdeep":"192:d4+VPfnSE5zz1r9R+JEU1UvgifucoLUjri0NiUMDHKgE:a+ZSE5zqJUvgifucoecT3E","tlshash":"97d1e6bb3205357758e326a6c2ffec42707901a2f4002ca4956eec95ae29c7d5673f8d","size":6234,"data":"","first_seen":"2023-03-07T12:05:50Z","last_seen":"2026-07-27T11:25:33.525752Z","times_seen":92,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/fullcalendar.init.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"f1a4fb47c83a7a95fd6ae119b398130d","sha1":"df0f954376027c84a55aa1612b92971996578869","sha256":"b56cd45077816b664abc05db7da86d756f64774d11000883b8bd7b6831df18c4","sha512":"956238d658a3b0e3bef630d5987cd93c48c613029b9e97b3883c458655cd495daf0ee16e5642d3d38f2a260bb99e665795a748d2aeaddee3a9cf709b9abcf81b","ssdeep":"96:8F4CwmzE+PjT5qgQ/eaDJ6r2E0zbxmVJwf9uaYoAiqr47S:BmzrNqgQ2aDc0zbxmVJwluaYoKl","tlshash":"39a1cdd5fe5d56af057ac185828e33c6e22c20b3c9705cb2f5f9bc7430d851aa5cd662","size":4667,"data":"","first_seen":"2025-12-16T06:43:19.348476Z","last_seen":"2026-07-27T11:25:33.526723Z","times_seen":16,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-M374JF434J","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.72","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"deed2ae209d30f65e94c23fbf03ac1c0","sha1":"7f1dd933a9dfa16007ae0a3abd572e4d3b3374ae","sha256":"cdc90056184a3f49d74121cf0fc988b11a9bc73e079fc0fd8104dcd295c08a42","sha512":"52556bb8110080a2e0a69384044fd442b2ce838bdb4ead3e555056330bb040aa6f6fcd8e5d05c33109424830da053ea68702394c96a1dbd24047145e8c6d2226","ssdeep":"6144:r/8U0jIWobP69FMxmRknhqsScPmfxNf3EjxxVGaHoXzRYGi:r/J1WWP69VwzxVHOvi","tlshash":"a2a419cdb3d6742643a6f478903f018ba57b29e2b44cc899f189c8d42e7465a8277f7c","size":460394,"data":"","first_seen":"2026-07-27T11:15:13.795325Z","last_seen":"2026-07-27T11:15:13.795325Z","times_seen":1,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/percircle/js/percircle.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"932ca2acaa95435fb55b46ef708b1bfd","sha1":"d9c9c51e74bda3e45ac047ec0054cbf85b2fde06","sha256":"804c87bd0e19b92fa12e2c305f028d1798c681a834a347d4a86deb0e4aecb8eb","sha512":"3382902d7e44afd35697ba361cb56ee4d587c172d52876eaf139fccdb887375402647c6485079a1dfafe66affc09674fb424019c851de6efca19f13976d6bc1e","ssdeep":"","tlshash":"0b016be40fcd092e089b29d29ffe989517388751ad03905a67ecad2b23c142c42bed65","size":851,"data":"","first_seen":"2025-12-16T06:43:19.395414Z","last_seen":"2026-07-27T11:25:33.544007Z","times_seen":16,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/charts/loader.js","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"32bc41d964faa1b95d9c61fc443df579","sha1":"02d3f83dac14fe996babbfe332779ed182d39d1c","sha256":"369ae154eab37b7ada7776b934833183bb053ebd1d0255f70ef8944f65cabb0c","sha512":"45539d5a40bf03b25c6f4328c0d10bf62a1012ff9be634877d62ec8a7ff35b25dd6cdc0fdfd5fcae2e3d980b6e4ba653b259c099935d52a20e8b6581cce521d5","ssdeep":"1536:nygImrQ9lbiv3fG3K2cRGJKeARlXAnVYqkAKDS16nH:x1QzbivRRen9K","tlshash":"6453cacc75a1b45417222db1653f620ef77e1a69b8c849c4f29cc0e83fb948d4a62f79","size":62428,"data":"","first_seen":"2023-04-05T02:08:19Z","last_seen":"2026-07-27T12:47:18.344613Z","times_seen":16686,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/chart.chartist.init.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"c87e07d0094b43d9019f3c7ef1cfb011","sha1":"22e6bcd90a30e9fa30b16f5985ee30c683fcd10b","sha256":"77f2b89df756356ba7a51fcbd557a88bfb82f2d430e6b89b88c120c0804916ac","sha512":"cc51fa194326606b60ad232a2a23a175e281c10a9dde5a18c53a86a8f990d97703602c811147fe56273d5e2d30f699994c38047dcb0e062ba17d5e9b3ca31cba","ssdeep":"96:a+dXncnDcfDyF1XOlY59pU6C4M/+sSWflBR7J1UsJ1TsHiEYFfHKPh:t81hdCacf/UrYIJ","tlshash":"6e02414aed57a323436b32b3016b9609f7b8146a1d5c5010f2b6e465ad3fa0ac337f27","size":8612,"data":"","first_seen":"2025-12-16T06:43:19.468291Z","last_seen":"2026-07-27T11:25:33.565322Z","times_seen":16,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"bd87dc43c8910ee65f834dc5119fb013","sha1":"a87656320859c05e3167549d44b8dd84e6cccc24","sha256":"a69f2f4ed73eb6785c7d0ac88965efbab2026a6d245516980f38df077abd5272","sha512":"2f7c31fd3119f84f73a8a2a5aa8c9c3ea5779c618e8c1ae0f86252ee66666e154b148675def7eaea9130dec4438e764d2e3317183d085013361e15598bcc8c88","ssdeep":"","tlshash":"0c01f19e15b32160412b29181e8b3604116df2573548cc443a9dcb739fe782ee7169fc","size":826,"data":"","first_seen":"2026-07-11T10:01:20.937819Z","last_seen":"2026-07-27T11:25:33.573775Z","times_seen":11,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"1abbbfb46106adb4a6dc7730cd2e865f","sha1":"412bc8a45f5610ba8a7409005badf550fc3ebdcf","sha256":"0964d3075f5f011f12bffef956c37caf63ea690fdc8f60b4b84e6649a51499f1","sha512":"02a00d3cb046c05e1cd6a3b59ed24627fe1ddb959141458eeadc611945a20dd6c82908a2ef0f257cb98133c715617248ec290554176ef27436d2ec18ad3284d0","ssdeep":"","tlshash":"7ec02b8c212b4cf052f737408b7ffa04f001330498e06931082a33445d30e03d744850","size":149,"data":"","first_seen":"2026-07-11T10:01:20.938667Z","last_seen":"2026-07-27T11:25:33.574514Z","times_seen":11,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/bootstrap/js/bootstrap.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"5869c96cc8f19086aee625d670d741f9","sha1":"430a443d74830fe9be26efca431f448c1b3740f9","sha256":"53964478a7c634e8dad34ecc303dd8048d00dce4993906de1bacf67f663486ef","sha512":"8b3b64a1bb2f9e329f02d4cd7479065630184ebaed942ee61a9ff9e1ce34c28c0eecb854458977815cf3704a8697fa8a5d096d2761f032b74b70d51da3e37f45","ssdeep":"768:o2rGy27UwlNqMl95qNmCFejhqs8snmi+CSFXfbx8Gf3Zq7Q:Jg73zhq0GvbJ3ZKQ","tlshash":"b6f28606b23031a147efb1e1525b020e7239696ee906907c78b99af53db9c48717bf3d","size":37045,"data":"","first_seen":"2023-03-07T01:02:54Z","last_seen":"2026-07-27T12:55:51.310764Z","times_seen":96680,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"42a368e95b4a38989c8984c672d29ec0","sha1":"70b2b29b138b9ddcdcbb58bd5d825f780eadcdfa","sha256":"fd8027b53a97cbd5782e85c5908e563c39776703ff9279f50658e630927b4167","sha512":"da12259367cbf8d3479142def6019d99afd3e6f49893cd14e6dbc0152cb7746125f170f88768ba7eb42f1efe41f9b9bf22d9a2f2727a92b01c8f915615c0468a","ssdeep":"768:QAGHCAGHHQO8nAAe1l6bV6JUOxOyywsvQm77xjBFQ/Sx1iJb2G:QAGHCAGHke26JUOxOOUjBa","tlshash":"5f132ae9370534f752db6f5e901f020972365956a60b8870387d8cb82ff1ea523a7e2d","size":45479,"data":"","first_seen":"2023-03-07T01:23:34Z","last_seen":"2026-07-27T11:25:33.541391Z","times_seen":6152,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/nprogress/nprogress.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"094e662d40f0e2a40698a857178a5f01","sha1":"d866a6b884629f0be81de48c1b41486673cc06c3","sha256":"93ee6b1a9d4a60aec30364ed836f62c40f7a67f2d5037afc4339ee4a05cafbe3","sha512":"1373b25cc388b1c0d9be176f3347d3cdfdbb79bfe59cb334ae65a8a522cef61bc35669fddb80b072e6fd4e036bd63af2dae93e5ae538afc2d8341ee917d0ff0c","ssdeep":"192:GFSXevTO4eKaC5UWFc3rI6Q1aIX0xVY42+iDSujtm9X7i814wDHzHQX7qZtncclb:GoXebQC5VEEHUiFkOmHz8alKyEd6","tlshash":"7342416cbce220aa4057797e97df5148b2394007255fda107cad1268afa0f7446fafec","size":12064,"data":"","first_seen":"2023-03-07T14:58:13Z","last_seen":"2026-07-27T11:25:33.54564Z","times_seen":882,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/fullcalendar/fullcalendar.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"a53fe55bda201b764da81aa7070e34fa","sha1":"8899940f6e50e29fc20e344268a1b6eaee657a76","sha256":"8eb96e11ab6f1e8af4d9e368eb4af250f021191697d15ab0d2f17dc993906002","sha512":"d3b8670725217d4e8b3a944fafaea9572bc33330b961b1b4668bc9cbdb06ee3445bb2ca8993812f4dfdc56c99be77e254f23f9b4d6e7280cb34c384052890bbe","ssdeep":"1536:Qei9iYVeIi2m1ZbWhu48/CgGgTSquhvSl4D15n3UZpfbYsd:GBVeIi2m1FWMT2S","tlshash":"b4c3c799b281741646ef61b5c22f260a6237158a680f449cba7dfdd7ac78d2c113bf3c","size":124839,"data":"","first_seen":"2023-03-11T11:22:48Z","last_seen":"2026-07-27T11:25:33.560843Z","times_seen":41,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/main.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"b18d1c2e6abb6c9dcfb6fce68e6c36d8","sha1":"ad6b1c9b421d8fa00ac069336062eb5fdce45943","sha256":"6ce869479bf36e063384c05337395f6381e117e937e4e5d17c948874bce8c029","sha512":"fcfed6c28bc3bf6f4683a9a5fb153d7db5cfa7455a9943a38f8a9f45c309e7561a508c864dc611b5070783459bcb9534bf37a71c88fb1021995ee2f529b10772","ssdeep":"192:bKqQeSdl9iDdmIdeFK7tUwHR4HbQpPBnCcm5Cd7/4kXk:KeG3iDdmIIFKxUwqctCcBZk","tlshash":"2a32a57ef260b8ba11b7905e186fd505b1222dd8880985817069b0e12ffbfc76177f7a","size":11849,"data":"","first_seen":"2025-12-16T06:43:19.360541Z","last_seen":"2026-07-27T11:25:33.521076Z","times_seen":16,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"hkdtoken.com/","fqdn":"hkdtoken.com","domain":"hkdtoken.com","tld":"com"},"ip":{"addr":"172.67.134.120","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T11:14:29.724Z","timestamp":1785150869724,"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":"hkdtoken.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Mon, 20 Jul 2026 00:14:43 GMT","end":"Sun, 18 Oct 2026 01:13:13 GMT"},"fingerprint":{"sha1":"90:66:13:54:3F:39:59:C6:1B:80:06:97:B1:DB:80:2F:FE:0A:AB:3D","sha256":"CC:93:FD:94:35:3A:CA:59:28:E4:BF:C9:09:4D:2C:4F:AD:DF:16:53:45:4E:07:21:AE:1C:8C:03:1A:75:EA:B4"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: hkdtoken.com\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\ncontent-type: text/html; charset=UTF-8\r\ndate: Mon, 27 Jul 2026 11:14:29 GMT\r\nlocation: https://punks.my\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=1mr2CX1tGqL4OUEDIQPzu7%2Fw1cwMG35JAZFYzIxdDBO%2BmIVSn5oKZe1iuqLeSSqXTLl6usiPzK%2Bn%2BEzx70JhYZOQwnMKMR%2F8e4tJYORFUC9Bc2YHjuNk%2Bch%2FhrwM024%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nserver: cloudflare\r\npriority: u=0,i\r\ncf-ray: a21b3887e9c6569b-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"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T13:01:10.036638Z","times_seen":17563461,"resource_available":true,"data":null}},"time_used":36,"timings":{"blocked":-1,"dns":6,"connect":14,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/styles/style.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.322Z","timestamp":1785150870322,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/styles/style.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-1b95d\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=R%2FUMVBKjww70ddwFO0mbpZbU01kWyRiY0tD4unoXOiXFeGvMYh6ePSGr%2BZULjgBrCzKDmGKpx%2B7AxnC3iXObQ3Rc%2FQSu%2FMi5q6BF0qWyDJpwLZ6KFsFdWnxjbg%3D%3D\"}]}\r\ncf-ray: a21b388b8bcd56a2-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"]}],"data":{"size":112989,"size_decoded":17983,"mime_type":"text/css","magic":"ASCII text","md5":"f7cd87da68120eaf6892184bb6591796","sha1":"e9083dc9571ba5266851f19d454efb02f094351e","sha256":"087410fe9add36f8d734ead7640170ffb8a05f1e774d6c4feee8e5521b67077e","sha512":"4d4ea919ed48214d4d0958849d92fea9e1ac15f96b065afa09c2e9d34fa8b769c8622a343aa77a2e521cf1d0882aebfb5cfc4fe9f255a873c1e4aceb552a1b83","ssdeep":"3072:vDW6RW9xydiayspg4m50nRyFZeHZHHeZfXvlHlooHqP2Z:7W6RW9xydiayspg4m50RyFZeHZHHeZfb","tlshash":"46b395eaafb515007027e1986a92aba2f37c8003950edc7dbbd1607cdec57d8817e749","first_seen":"2025-12-16T06:43:19.383751Z","last_seen":"2026-07-27T11:25:33.535987Z","times_seen":16,"resource_available":false,"data":"LyogSW5jbHVkZSB2YXJpYWJsZXMgZm9yIExFU1MgKi8KLyogSW1wb3J0IGZpbGUgc3R5bGVzICovCkBpbXBvcnQgJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAnOwpAaW1wb3J0IHVybCguLi9mb250cy9mb250LWF3ZXNvbWUvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzKTsKQGltcG9ydCB1cmwoLi4vcGx1Z2luL2Jvb3RzdHJhcC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MpOwpAaW1wb3J0IHVybCguLi9wbHVnaW4vbnByb2dyZXNzL25wcm9ncmVzcy5jc3MpOwovKiBHZW5lcmFsIGNzcyAqLwovKgpWZXJzaW9uIDIuMApbVGFibGUgb2YgY29udGVudHNdCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMS4gR2xvYmFsbHkgQXBwbGllZCBTdHlsZXMKMi4gTGF5b3V0L0JveGVkCjMuIEhvdmVyCjQuIFN1cHBvcnQgQ2xhc3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMS4gR2xvYmFsbHkgQXBwbGllZCBTdHlsZXMKKi8KaHRtbCwKYm9keSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kOiAjZjVmN2ZhOwogIGNvbG9yOiAjNTA1NDU4Owp9CiN3cmFwcGVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAwcHg7CiAgei1pbmRleDogMTA7CiAgd2lkdGg6IDEwMCU7CiAgbWluLWhlaWdodDogMTAwJTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIGJhY2tncm91bmQ6ICNmNWY3ZmE7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogLW1vei10cmFuc2Zvcm0gMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IC1tcy10cmFuc2Zvcm0gMC40cyBlYXNlOwp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAjd3JhcHBlciB7CiAgICB0b3A6IDBweCAhaW1wb3J0YW50OwogIH0KfQppbWcgewogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87CiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47Cn0KaW5wdXQsCmJ1dHRvbiwKYSB7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KYSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgb3V0bGluZTogbm9uZTsKICBjb2xvcjogIzMwNGZmZTsKfQphOmhvdmVyLAphOmFjdGl2ZSwKYTpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgb3V0bGluZTogbm9uZTsKICBjb2xvcjogIzFlM2RlZDsKfQppbnB1dCwKYnV0dG9uIHsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDBweDsKICBib3JkZXItcmFkaXVzOiAwcHg7CiAgb3V0bGluZTogbm9uZTsKfQpsYWJlbCB7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci8qIEFuaW1hdGlvbiAqLwpALW1vei1rZXlmcmFtZXMgcHVsc2UgewogIDAlIHsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIG9wYWNpdHk6IDAuMDsKICB9CiAgMjUlIHsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIG9wYWNpdHk6IDAuMTsKICB9CiAgNTAlIHsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjEpOwogICAgb3BhY2l0eTogMC4zOwogIH0KICA3NSUgewogICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQogIDEwMCUgewogICAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMC4wOwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UgewogIDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIG9wYWNpdHk6IDAuMDsKICB9CiAgMjUlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIG9wYWNpdHk6IDAuMTsKICB9CiAgNTAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjEpOwogICAgb3BhY2l0eTogMC4zOwogIH0KICA3NSUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMC4wOwogIH0KfQovKiBDbGFzcyAqLwouZmEtaG92ZXIgewogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBwYWRkaW5nLXRvcDogNXB4OwogIHBhZGRpbmctYm90dG9tOiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLmZhLWhvdmVyIC5pY28sCi5mYS1ob3ZlciAuZmEgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDIycHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBtaW4td2lkdGg6IDI4cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIGNvbG9yOiAjNDM1OTY2Owp9Ci5mYS1ob3Zlcjpob3ZlciB7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKICBjb2xvcjogI2ZmZmZmZjsKfQouZmEtaG92ZXI6aG92ZXIgLmljbywKLmZhLWhvdmVyOmhvdmVyIC5mYSB7CiAgZm9udC1zaXplOiAyMnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGhlaWdodDogMjJweDsKICBjb2xvcjogI2ZmZmZmZjsKfQouaW5wdXQtbm8tc3R5bGUgewogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiBub25lOwogIG91dGxpbmU6IG5vbmU7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIuIExheW91dC9Cb3hlZAoqLwoucm93LWlubGluZS1ibG9jayB7CiAgZm9udC1zaXplOiAwcHg7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoucm93LWlubGluZS1ibG9jayA+ICogewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbm9uZTsKICBmb250LXNpemU6IDE0cHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoucm93LWlubGluZS1ibG9jay50ZXh0LWNlbnRlciA+ICogewogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoucm93LnNtYWxsLXNwYWNpbmcgewogIG1hcmdpbi1sZWZ0OiAtMTBweDsKICBtYXJnaW4tcmlnaHQ6IC0xMHB4Owp9Ci5yb3cuc21hbGwtc3BhY2luZyA+ICpbY2xhc3NePSJjb2wtIl0gewogIHBhZGRpbmctbGVmdDogMTBweDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozLiBIb3ZlcgoqLwoubGlnaHQtZWZmZWN0IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBkaXNwbGF5OiBibG9jazsKfQoubGlnaHQtZWZmZWN0OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgbGVmdDogLTIwMCU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgLW1vei1vcGFjaXR5OiAxOwogIC1raHRtbC1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgdHJhbnNmb3JtOiBza2V3KDQ1ZGVnKTsKICAtd2Via2l0LXRyYW5zZm9ybTogc2tldyg0NWRlZyk7CiAgLW1vei10cmFuc2Zvcm06IHNrZXcoNDVkZWcpOwogIC1vLXRyYW5zZm9ybTogc2tldyg0NWRlZyk7CiAgLW1zLXRyYW5zZm9ybTogc2tldyg0NWRlZyk7Cn0KLmxpZ2h0LWVmZmVjdDpob3ZlcjphZnRlciB7CiAgbGVmdDogMTAwJTsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogIC1tb3otb3BhY2l0eTogMDsKICAta2h0bWwtb3BhY2l0eTogMDsKICBvcGFjaXR5OiAwOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0LiBTdXBwb3J0IENsYXNzCiovCi5lcnJvciB7CiAgY29sb3I6ICNlYTQzMzU7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBwYWRkaW5nOiA1cHggMHB4IDVweCAwcHg7Cn0KLmRpc3BsYXktbm9uZSB7CiAgZGlzcGxheTogbm9uZTsKfQpAbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7CiAgLmhpZGRlbi1vbi1kZXNrdG9wIHsKICAgIGRpc3BsYXk6IG5vbmUhaW1wb3J0YW50OwogIH0KfQpoNCBzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAxNnB4Owp9Ci5oZWxwLWJsb2NrIHsKICBtYXJnaW4tdG9wOiAxMHB4OwogIGNvbG9yOiAjYWFiMmJkOwp9Ci5tYXJnaW4tdG9wLTAgewogIG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tdG9wLTEwIHsKICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi10b3AtMTUgewogIG1hcmdpbi10b3A6IDE1cHggIWltcG9ydGFudDsKfQoubWFyZ2luLXRvcC0yMCB7CiAgbWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tdG9wLTMwIHsKICBtYXJnaW4tdG9wOiAzMHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi10b3AtNDAgewogIG1hcmdpbi10b3A6IDQwcHggIWltcG9ydGFudDsKfQoubWFyZ2luLXRvcC01MCB7CiAgbWFyZ2luLXRvcDogNTBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tdG9wLTYwIHsKICBtYXJnaW4tdG9wOiA2MHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi10b3AtNzAgewogIG1hcmdpbi10b3A6IDcwcHggIWltcG9ydGFudDsKfQoubWFyZ2luLXRvcC04MCB7CiAgbWFyZ2luLXRvcDogODBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tdG9wLTkwIHsKICBtYXJnaW4tdG9wOiA5MHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi10b3AtMTAwIHsKICBtYXJnaW4tdG9wOiAxMDBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tYm90dG9tLTAgewogIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tYm90dG9tLTEwIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi1ib3R0b20tMjAgewogIG1hcmdpbi1ib3R0b206IDIwcHggIWltcG9ydGFudDsKfQoubWFyZ2luLWJvdHRvbS0zMCB7CiAgbWFyZ2luLWJvdHRvbTogMzBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tYm90dG9tLTQwIHsKICBtYXJnaW4tYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi1ib3R0b20tNTAgewogIG1hcmdpbi1ib3R0b206IDUwcHggIWltcG9ydGFudDsKfQoubWFyZ2luLWJvdHRvbS02MCB7CiAgbWFyZ2luLWJvdHRvbTogNjBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tYm90dG9tLTcwIHsKICBtYXJnaW4tYm90dG9tOiA3MHB4ICFpbXBvcnRhbnQ7Cn0KLm1hcmdpbi1ib3R0b20tODAgewogIG1hcmdpbi1ib3R0b206IDgwcHggIWltcG9ydGFudDsKfQoubWFyZ2luLWJvdHRvbS05MCB7CiAgbWFyZ2luLWJvdHRvbTogOTBweCAhaW1wb3J0YW50Owp9Ci5tYXJnaW4tYm90dG9tLTEwMCB7CiAgbWFyZ2luLWJvdHRvbTogMTAwcHggIWltcG9ydGFudDsKfQoucGFkZGluZy1mb3ItbWVzcyB7CiAgcGFkZGluZzogMTBweCAxNXB4IDEwcHggMTVweDsKfQoucGFkZGluZy0xMCB7CiAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50Owp9Ci5wYWRkaW5nLTIwIHsKICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7Cn0KLnBhZGRpbmctMzAgewogIHBhZGRpbmc6IDMwcHggIWltcG9ydGFudDsKfQoubWluLWhlaWdodC0xMDAgewogIG1pbi1oZWlnaHQ6IDEwMHB4ICFpbXBvcnRhbnQ7Cn0KLm1pbi1oZWlnaHQtMjAwIHsKICBtaW4taGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50Owp9Ci5taW4taGVpZ2h0LTMwMCB7CiAgbWluLWhlaWdodDogMzAwcHggIWltcG9ydGFudDsKfQoubWluLWhlaWdodC00MDAgewogIG1pbi1oZWlnaHQ6IDQwMHB4ICFpbXBvcnRhbnQ7Cn0KLm1pbi1oZWlnaHQtNTAwIHsKICBtaW4taGVpZ2h0OiA1MDBweCAhaW1wb3J0YW50Owp9Ci5uby1tYXJnaW4gewogIG1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7Cn0KLm5vLXBhZGRpbmcgewogIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50Owp9Ci5pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQouYnRuLWdyb3VwLWxnID4gLmJ0biwKLmJ0bi1sZyB7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4Owp9Ci5idG4gewogIGJhY2tncm91bmQ6ICNlNGU3ZWE7CiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjZweDsKICBwYWRkaW5nOiA4cHggMjVweDsKICBib3JkZXI6IG5vbmU7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBib3gtc2hhZG93OiBub25lIWltcG9ydGFudDsKICAtbW96LWJveC1zaGFkb3c6IG5vbmUhaW1wb3J0YW50OwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSFpbXBvcnRhbnQ7Cn0KLmJ0bi5idG4tYm9yZGVyZWQgewogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgY29sb3I6ICM0MzU5NjY7CiAgYm9yZGVyOiAycHggc29saWQgI2U0ZTdlYTsKfQouYnRuLmJ0bi1ib3JkZXJlZDpob3ZlciB7CiAgYmFja2dyb3VuZDogI2U0ZTdlYTsKfQouYnRuLmJ0bi1yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiAyM3B4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMjNweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDIzcHg7Cn0KLmJ0bi5idG4tcm91bmRlZC5idG4tbGcgewogIGJvcmRlci1yYWRpdXM6IDMycHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzMnB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMzJweDsKfQouYnRuLmJ0bi1yb3VuZGVkLmJ0bi1zbSB7CiAgYm9yZGVyLXJhZGl1czogMTlweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDE5cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxOXB4Owp9Ci5idG4uYnRuLWxnIHsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgcGFkZGluZzogMTVweCAzNXB4Owp9Ci5idG4uYnRuLXNtIHsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgcGFkZGluZzogN3B4IDIwcHg7Cn0KLmJ0bi5idG4teHMgewogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBwYWRkaW5nOiA1cHggMTVweDsKfQouYnRuLmJ0bi1pY29uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYnRuLmJ0bi1pY29uIC5pY28gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgd2lkdGg6IDQycHg7CiAgaGVpZ2h0OiAxMDAlOwogIGxpbmUtaGVpZ2h0OiA0MnB4OwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsKfQouYnRuLmJ0bi1pY29uLmJ0bi1sZyAuaWNvIHsKICBsaW5lLWhlaWdodDogNThweDsKfQouYnRuLmJ0bi1pY29uLmJ0bi1zbSAuaWNvIHsKICBsaW5lLWhlaWdodDogMzhweDsKICB3aWR0aDogMzhweDsKfQouYnRuLmJ0bi1pY29uLmJ0bi14cyAuaWNvIHsKICBsaW5lLWhlaWdodDogMzJweDsKICB3aWR0aDogMzJweDsKfQouYnRuLmJ0bi1pY29uLWxlZnQgewogIHBhZGRpbmctbGVmdDogNTdweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4Owp9Ci5idG4uYnRuLWljb24tbGVmdC5idG4tbGcgewogIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgcGFkZGluZy1sZWZ0OiA3M3B4Owp9Ci5idG4uYnRuLWljb24tbGVmdCAuaWNvIHsKICBsZWZ0OiAwOwp9Ci5idG4uYnRuLWljb24tbGVmdC5idG4tc20gewogIHBhZGRpbmctbGVmdDogNTNweDsKfQouYnRuLmJ0bi1pY29uLWxlZnQuYnRuLXhzIHsKICBwYWRkaW5nLWxlZnQ6IDQ3cHg7Cn0KLmJ0bi5idG4taWNvbi1yaWdodCB7CiAgcGFkZGluZy1yaWdodDogNTdweDsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cn0KLmJ0bi5idG4taWNvbi1yaWdodC5idG4tbGcgewogIHBhZGRpbmctbGVmdDogMzBweDsKICBwYWRkaW5nLXJpZ2h0OiA3M3B4Owp9Ci5idG4uYnRuLWljb24tcmlnaHQgLmljbyB7CiAgcmlnaHQ6IDA7Cn0KLmJ0bi5idG4taWNvbi1yaWdodC5idG4tc20gewogIHBhZGRpbmctcmlnaHQ6IDUzcHg7Cn0KLmJ0bi5idG4taWNvbi1yaWdodC5idG4teHMgewogIHBhZGRpbmctcmlnaHQ6IDQ3cHg7Cn0KLmJ0bi5idG4tY2lyY2xlIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKICB3aWR0aDogNDJweDsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7Cn0KLmJ0bi5idG4tY2lyY2xlLmJ0bi1sZyB7CiAgd2lkdGg6IDU4cHg7Cn0KLmJ0bi5idG4tY2lyY2xlLmJ0bi1zbSB7CiAgd2lkdGg6IDM4cHg7Cn0KLmJ0bi5idG4tY2lyY2xlLmJ0bi14cyB7CiAgd2lkdGg6IDMycHg7Cn0KLmJ0bi5idG4tc29jaWFsIHsKICB3aWR0aDogMzhweDsKICBoZWlnaHQ6IDM4cHg7CiAgcGFkZGluZzogMDsKICBsaW5lLWhlaWdodDogMzhweDsKICBjb2xvcjogI2ZmZmZmZjsKfQouYnRuLmJ0bi1mYWNlYm9vayB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzNiNTk5OCAhaW1wb3J0YW50Owp9Ci5idG4uYnRuLXR3aXR0ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICM1NWFjZWUgIWltcG9ydGFudDsKfQouYnRuLmJ0bi1nb29nbGUtcGx1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkNGIzOSAhaW1wb3J0YW50Owp9Ci5idG4uYnRuLWxpbmtlZGluIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmI2ICFpbXBvcnRhbnQ7Cn0KLmJ0bi5idG4taW5zdGFncmFtIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y3MjliICFpbXBvcnRhbnQ7Cn0KLmJ0bi5idG4tcGludGVyZXN0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2IyMDI3ICFpbXBvcnRhbnQ7Cn0KLmJ0bi5idG4tZHJpYmJibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNlYTRjODkgIWltcG9ydGFudDsKfQouYnRuLmJ0bi15b3V0dWJlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmIwMDAwICFpbXBvcnRhbnQ7Cn0KLmJ0bi5idG4tc29jaWFsLXdpdGgtdGV4dCB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQouYnRuIC5pY28gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQouYnRuIC5pY28tbGVmdCB7CiAgbWFyZ2luLXJpZ2h0OiA4cHg7Cn0KLmJ0biAuaWNvLXJpZ2h0IHsKICBtYXJnaW4tbGVmdDogOHB4Owp9Ci5idG4tcHJpbWFyeSB7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKfQouYnRuLXByaW1hcnk6aG92ZXIsCi5idG4tcHJpbWFyeTphY3RpdmUsCi5idG4tcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZDogIzFlM2RlZCAhaW1wb3J0YW50Owp9Ci5idG4tcHJpbWFyeS5idG4tYm9yZGVyZWQgewogIGJvcmRlci1jb2xvcjogIzMwNGZmZTsKICBjb2xvcjogIzMwNGZmZTsKfQouYnRuLXByaW1hcnkuYnRuLWJvcmRlcmVkOmhvdmVyLAouYnRuLXByaW1hcnkuYnRuLWJvcmRlcmVkOmFjdGl2ZSwKLmJ0bi1wcmltYXJ5LmJ0bi1ib3JkZXJlZDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjMWUzZGVkOwogIGNvbG9yOiAjZmZmZmZmOwp9Ci5idG4tc3VjY2VzcyB7CiAgYmFja2dyb3VuZDogIzAwYmY0ZjsKfQouYnRuLXN1Y2Nlc3M6aG92ZXIsCi5idG4tc3VjY2VzczphY3RpdmUsCi5idG4tc3VjY2Vzczpmb2N1cyB7CiAgYmFja2dyb3VuZDogIzAwY2U1NSAhaW1wb3J0YW50Owp9Ci5idG4tc3VjY2Vzcy5idG4tYm9yZGVyZWQgewogIGJvcmRlci1jb2xvcjogIzAwYmY0ZjsKICBjb2xvcjogIzAwYmY0ZjsKfQouYnRuLXN1Y2Nlc3MuYnRuLWJvcmRlcmVkOmhvdmVyLAouYnRuLXN1Y2Nlc3MuYnRuLWJvcmRlcmVkOmFjdGl2ZSwKLmJ0bi1zdWNjZXNzLmJ0bi1ib3JkZXJlZDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjMDBjZTU1OwogIGNvbG9yOiAjZmZmZmZmOwp9Ci5idG4taW5mbyB7CiAgYmFja2dyb3VuZDogIzAwYWVmZjsKfQouYnRuLWluZm86aG92ZXIsCi5idG4taW5mbzphY3RpdmUsCi5idG4taW5mbzpmb2N1cyB7CiAgYmFja2dyb3VuZDogIzAwYWVmZiAhaW1wb3J0YW50Owp9Ci5idG4taW5mby5idG4tYm9yZGVyZWQgewogIGJvcmRlci1jb2xvcjogIzAwYWVmZjsKICBjb2xvcjogIzAwYWVmZjsKfQouYnRuLWluZm8uYnRuLWJvcmRlcmVkOmhvdmVyLAouYnRuLWluZm8uYnRuLWJvcmRlcmVkOmFjdGl2ZSwKLmJ0bi1pbmZvLmJ0bi1ib3JkZXJlZDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjMDBhZWZmOwogIGNvbG9yOiAjZmZmZmZmOwp9Ci5idG4td2FybmluZyB7CiAgYmFja2dyb3VuZDogI2ZiYmMwNTsKfQouYnRuLXdhcm5pbmc6aG92ZXIsCi5idG4td2FybmluZzphY3RpdmUsCi5idG4td2FybmluZzpmb2N1cyB7CiAgYmFja2dyb3VuZDogI2ZmYTAwMCAhaW1wb3J0YW50Owp9Ci5idG4td2FybmluZy5idG4tYm9yZGVyZWQgewogIGJvcmRlci1jb2xvcjogI2ZiYmMwNTsKICBjb2xvcjogI2ZiYmMwNTsKfQouYnRuLXdhcm5pbmcuYnRuLWJvcmRlcmVkOmhvdmVyLAouYnRuLXdhcm5pbmcuYnRuLWJvcmRlcmVkOmFjdGl2ZSwKLmJ0bi13YXJuaW5nLmJ0bi1ib3JkZXJlZDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjZmZhMDAwOwogIGNvbG9yOiAjZmZmZmZmOwp9Ci5idG4tZGFuZ2VyIHsKICBiYWNrZ3JvdW5kOiAjZWE0MzM1Owp9Ci5idG4tZGFuZ2VyOmhvdmVyLAouYnRuLWRhbmdlcjphY3RpdmUsCi5idG4tZGFuZ2VyOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiAjZmYzODM4ICFpbXBvcnRhbnQ7Cn0KLmJ0bi1kYW5nZXIuYnRuLWJvcmRlcmVkIHsKICBib3JkZXItY29sb3I6ICNlYTQzMzU7CiAgY29sb3I6ICNlYTQzMzU7Cn0KLmJ0bi1kYW5nZXIuYnRuLWJvcmRlcmVkOmhvdmVyLAouYnRuLWRhbmdlci5idG4tYm9yZGVyZWQ6YWN0aXZlLAouYnRuLWRhbmdlci5idG4tYm9yZGVyZWQ6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2ZmMzgzODsKICBjb2xvcjogI2ZmZmZmZjsKfQouYnRuLXZpb2xldCB7CiAgYmFja2dyb3VuZDogIzcwNDVmZjsKICBjb2xvcjogI2ZmZmZmZjsKfQouYnRuLXZpb2xldDpob3ZlciwKLmJ0bi12aW9sZXQ6YWN0aXZlLAouYnRuLXZpb2xldDpmb2N1cyB7CiAgY29sb3I6ICNmZmZmZmY7CiAgYmFja2dyb3VuZDogIzg0NDVmZiAhaW1wb3J0YW50Owp9Ci5idG4tdmlvbGV0LmJ0bi1ib3JkZXJlZCB7CiAgYm9yZGVyLWNvbG9yOiAjNzA0NWZmOwogIGNvbG9yOiAjNzA0NWZmOwp9Ci5idG4tdmlvbGV0LmJ0bi1ib3JkZXJlZDpob3ZlciwKLmJ0bi12aW9sZXQuYnRuLWJvcmRlcmVkOmFjdGl2ZSwKLmJ0bi12aW9sZXQuYnRuLWJvcmRlcmVkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICM4NDQ1ZmY7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLmJ0bi1vcmFuZ2UgewogIGJhY2tncm91bmQ6ICNmZjQ2MGI7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLmJ0bi1vcmFuZ2U6aG92ZXIsCi5idG4tb3JhbmdlOmFjdGl2ZSwKLmJ0bi1vcmFuZ2U6Zm9jdXMgewogIGNvbG9yOiAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICNmZjYyMzAgIWltcG9ydGFudDsKfQouYnRuLW9yYW5nZS5idG4tYm9yZGVyZWQgewogIGJvcmRlci1jb2xvcjogI2ZmNDYwYjsKICBjb2xvcjogI2ZmNDYwYjsKfQouYnRuLW9yYW5nZS5idG4tYm9yZGVyZWQ6aG92ZXIsCi5idG4tb3JhbmdlLmJ0bi1ib3JkZXJlZDphY3RpdmUsCi5idG4tb3JhbmdlLmJ0bi1ib3JkZXJlZDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjZmY2MjMwOwogIGNvbG9yOiAjZmZmZmZmOwp9Ci50b3VyLWJ1dHRvbnMgLmJ0bi5idG4tc20gewogIGhlaWdodDogMzBweDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgcGFkZGluZzogMCAxMHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTlweCkgewogIC5saXN0LWlubGluZS1mYXEgbGkgewogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5saW1pdC13aWR0aCB7CiAgbWF4LXdpZHRoOiA2MDBweDsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDBweCBhdXRvIDBweDsKICBmbG9hdDogbm9uZTsKfQoud2lkdGgtMTAwIHsKICBtYXgtd2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7Cn0KLndpZHRoLTIwMCB7CiAgbWF4LXdpZHRoOiAyMDBweCAhaW1wb3J0YW50OwogIHdpZHRoOiAyMDBweCAhaW1wb3J0YW50Owp9Ci53aWR0aC0zMDAgewogIG1heC13aWR0aDogMzAwcHggIWltcG9ydGFudDsKICB3aWR0aDogMzAwcHggIWltcG9ydGFudDsKfQoud2lkdGgtNDAwIHsKICBtYXgtd2lkdGg6IDQwMHB4ICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDQwMHB4ICFpbXBvcnRhbnQ7Cn0KLndpZHRoLTUwMCB7CiAgbWF4LXdpZHRoOiA1MDBweCAhaW1wb3J0YW50OwogIHdpZHRoOiA1MDBweCAhaW1wb3J0YW50Owp9Ci8qIEJhY2tncm91bmQgY29sb3JzICovCi5iZy1jdXN0b20gewogIGJhY2tncm91bmQtY29sb3I6ICM3MWI2ZjkgIWltcG9ydGFudDsKfQouYmctcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNGZmZSAhaW1wb3J0YW50Owp9Ci5iZy1zdWNjZXNzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZjRmICFpbXBvcnRhbnQ7Cn0KLmJnLWluZm8gewogIGJhY2tncm91bmQtY29sb3I6ICMwMGFlZmYgIWltcG9ydGFudDsKfQouYmctd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGYwMCAhaW1wb3J0YW50Owp9Ci5iZy1kYW5nZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNlYTQzMzUgIWltcG9ydGFudDsKfQouYmctbXV0ZWQgewogIGJhY2tncm91bmQtY29sb3I6ICNmNGY4ZmIgIWltcG9ydGFudDsKfQouYmctaW52ZXJzZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjEyMSAhaW1wb3J0YW50Owp9Ci5iZy1wdXJwbGUgewogIGJhY2tncm91bmQtY29sb3I6ICM1YjY5YmMgIWltcG9ydGFudDsKfQouYmctcGluayB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGFjYyAhaW1wb3J0YW50Owp9Ci5iZy13aGl0ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9Ci5iZy1saWdodGRhcmsgewogIGJhY2tncm91bmQtY29sb3I6ICNmNGY4ZmIgIWltcG9ydGFudDsKfQouYmctdmlvbGV0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzA0NWZmICFpbXBvcnRhbnQ7Cn0KLmJnLW9yYW5nZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDYwYiAhaW1wb3J0YW50Owp9Ci8qIFRleHQgY29sb3JzICovCi50ZXh0LWN1c3RvbSB7CiAgY29sb3I6ICM2MjAwZWEgIWltcG9ydGFudDsKfQoudGV4dC13aGl0ZSB7CiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKfQoudGV4dC1kYW5nZXIgewogIGNvbG9yOiAjZmYxNzQ0ICFpbXBvcnRhbnQ7Cn0KLnRleHQtbXV0ZWQgewogIGNvbG9yOiAjYWFiMmJkICFpbXBvcnRhbnQ7Cn0KLnRleHQtcHJpbWFyeSB7CiAgY29sb3I6ICMxODhhZTIgIWltcG9ydGFudDsKfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogI2ZiYmMwNSAhaW1wb3J0YW50Owp9Ci50ZXh0LXN1Y2Nlc3MgewogIGNvbG9yOiAjMDBiZjRmICFpbXBvcnRhbnQ7Cn0KLnRleHQtaW5mbyB7CiAgY29sb3I6ICMwMGFlZmYgIWltcG9ydGFudDsKfQoudGV4dC1pbnZlcnNlIHsKICBjb2xvcjogIzIxMjEyMSAhaW1wb3J0YW50Owp9Ci50ZXh0LXBpbmsgewogIGNvbG9yOiAjZmY4YWNjICFpbXBvcnRhbnQ7Cn0KLnRleHQtcHVycGxlIHsKICBjb2xvcjogIzViNjliYyAhaW1wb3J0YW50Owp9Ci50ZXh0LWRhcmsgewogIGNvbG9yOiAjMjEyMTIxICFpbXBvcnRhbnQ7Cn0KLnRleHQtb3JhbmdlIHsKICBjb2xvcjogI2ZmNDYwYiAhaW1wb3J0YW50Owp9Ci50YWJsZSA+IHRib2R5ID4gdHIuc3VjY2VzcyA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLnN1Y2Nlc3MsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5zdWNjZXNzLAoudGFibGUgPiB0Zm9vdCA+IHRyLnN1Y2Nlc3MgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5zdWNjZXNzLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGguc3VjY2VzcywKLnRhYmxlID4gdGhlYWQgPiB0ci5zdWNjZXNzID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRoLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuc3VjY2VzcywKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLnN1Y2Nlc3MgewogIGJhY2tncm91bmQ6ICMwMGJmNGY7Cn0KLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuaW5mbyA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLmluZm8gPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci5pbmZvID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguaW5mbyB7CiAgYmFja2dyb3VuZDogIzAwYWVmZjsKfQoudGFibGUgPiB0Ym9keSA+IHRyLnByaW1hcnkgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ci5wcmltYXJ5ID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5wcmltYXJ5LAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGgucHJpbWFyeSwKLnRhYmxlID4gdGZvb3QgPiB0ci5wcmltYXJ5ID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIucHJpbWFyeSA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQucHJpbWFyeSwKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLnByaW1hcnksCi50YWJsZSA+IHRoZWFkID4gdHIucHJpbWFyeSA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLnByaW1hcnkgPiB0aCwKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLnByaW1hcnksCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5wcmltYXJ5IHsKICBiYWNrZ3JvdW5kOiAjMzA0ZmZlOwp9Ci50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5kYW5nZXIgewogIGJhY2tncm91bmQ6ICNlYTQzMzU7Cn0KLnRhYmxlID4gdGJvZHkgPiB0ci53YXJuaW5nID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQud2FybmluZywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLndhcm5pbmcsCi50YWJsZSA+IHRmb290ID4gdHIud2FybmluZyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLndhcm5pbmcsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC53YXJuaW5nLAoudGFibGUgPiB0aGVhZCA+IHRyLndhcm5pbmcgPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC53YXJuaW5nLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGgud2FybmluZyB7CiAgYmFja2dyb3VuZDogI2ZiYmMwNTsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIEhlYWRlciAqLwovKgpUaGVtZXM6IE5pbmphIEFkbWluClZlcnNpb24gMi4wCltUYWJsZSBvZiBjb250ZW50c10KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxLiBNYWluIE1lbnUKMi4gU3RydWN0dXJlCjMuIEhlYWRlcgo0LiBVc2VyIE1haW4gTWVudQo1LiBOYXZpZ2F0aW9uCjYuIEZpeGVkIE5hdmJhcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxLiBNYWluIE1lbnUKKi8KLm1haW4tbWVudSB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICB6LWluZGV4OiAzMDsKICB3aWR0aDogMjYwcHg7CiAgaGVpZ2h0OiAxMDAlOwogIHBhZGRpbmctdG9wOiAxODVweDsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQoubWFpbi1tZW51IC5jb250ZW50IHsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGF1dG87Cn0KLm1haW4tbWVudSAuYnV0dG9uLWNsb3NlIHsKICBkaXNwbGF5OiBub25lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDI1cHg7CiAgcmlnaHQ6IDEwcHg7CiAgZm9udC1zaXplOiAxNnB4OwogIG91dGxpbmU6IG5vbmU7CiAgYmFja2dyb3VuZDogbm9uZTsKICBib3JkZXI6IG5vbmU7CiAgZm9udC1zaXplOiAyMHB4OwogIGNvbG9yOiAjZmZmZmZmOwp9Ci5tYWluLW1lbnUgLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciB7CiAgYmFja2dyb3VuZDogI2FhYjJiZCAhaW1wb3J0YW50Owp9Ci5tYWluLW1lbnU6aG92ZXIgLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciB7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwogIC1tb3otb3BhY2l0eTogMTsKICAta2h0bWwtb3BhY2l0eTogMTsKICBvcGFjaXR5OiAxOwp9Ci5tYWluLWNvbnRlbnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAxMDsKICBtYXJnaW4tbGVmdDogMjgwcHg7CiAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogIHBhZGRpbmctdG9wOiA5NXB4Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyLiBTdHJ1Y3R1cmUKKi8KLmZpeGVkLW5hdmJhciB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMHB4OwogIGxlZnQ6IDI2MHB4OwogIHotaW5kZXg6IDIwOwogIHJpZ2h0OiAwcHg7CiAgcGFkZGluZzogMHB4IDIwcHggMHB4IDgwcHg7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKICBjb2xvcjogI2ZmZmZmZjsKfQouZml4ZWQtbmF2YmFyIC5zZWFyY2hmb3JtIHsKICBvcGFjaXR5OiAwOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IC0zcHg7CiAgdG9wOiAxM3B4OwogIGhlaWdodDogNDlweDsKICBmb250LXNpemU6IDA7CiAgbGluZS1oZWlnaHQ6IDA7CiAgcGFkZGluZzogMDsKICB3aWR0aDogNTBweDsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQouZml4ZWQtbmF2YmFyIC5zZWFyY2hmb3JtLmFjdGl2ZSB7CiAgb3BhY2l0eTogMTsKICB3aWR0aDogMzIwcHg7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KLmZpeGVkLW5hdmJhciAuc2VhcmNoZm9ybSAuaW5wdXQtc2VhcmNoIHsKICBmb250LXdlaWdodDogNTAwOwogIGhlaWdodDogNDlweDsKICBmb250LXNpemU6IDE0cHg7CiAgd2lkdGg6IDMyMHB4OwogIG1heC13aWR0aDogMTAwJTsKICBib3JkZXItcmFkaXVzOiAyNXB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMjVweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDI1cHg7Cn0KLmZpeGVkLW5hdmJhciAuc2VhcmNoZm9ybSAuYnV0dG9uLXNlYXJjaCB7CiAgdG9wOiA1MCU7CiAgcmlnaHQ6IDExcHg7CiAgY29sb3I6ICNhYWIyYmQ7CiAgZm9udC1zaXplOiAxOHB4OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTsKfQouZml4ZWQtbmF2YmFyIC5zZWFyY2hmb3JtIC5idXR0b24tc2VhcmNoLm1kaSB7CiAgZm9udC1zaXplOiAyNHB4Owp9CkBtZWRpYSAobWF4LXdpZHRoOiA3OTlweCkgewogIC5tYWluLW1lbnUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTExMCUsIDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTEwJSwgMCk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMTAlLCAwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMTAlLCAwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTEwJSwgMCk7CiAgfQogIC5tYWluLW1lbnUgLmhlYWRlciB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIH0KICAubWFpbi1tZW51IC5idXR0b24tY2xvc2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgfQogIC5tYWluLWNvbnRlbnQgewogICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgfQogIC5maXhlZC1uYXZiYXIgewogICAgbGVmdDogMHB4OwogICAgcmlnaHQ6IDBweDsKICAgIGJveC1zaGFkb3c6IDAgMHB4IDI0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwcHggMCByZ2JhKDAsIDAsIDAsIDAuMDIpOwogICAgLW1vei1ib3gtc2hhZG93OiAwIDBweCAyNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KSwgMCAxcHggMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwcHggMjRweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDBweCAwIHJnYmEoMCwgMCwgMCwgMC4wMik7CiAgfQogIC5tZW51LWFjdGl2ZSAubWFpbi1tZW51IHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDU5OXB4KSB7CiAgLmZpeGVkLW5hdmJhciAuc2VhcmNoZm9ybSB7CiAgICB0b3A6IDc1cHg7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB3aWR0aDogMTAwJTsKICAgIHJpZ2h0OiAwOwogICAgYm94LXNoYWRvdzogMCAwcHggMjRweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDBweCAwIHJnYmEoMCwgMCwgMCwgMC4wMik7CiAgICAtbW96LWJveC1zaGFkb3c6IDAgMHB4IDI0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwcHggMCByZ2JhKDAsIDAsIDAsIDAuMDIpOwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDBweCAyNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KSwgMCAxcHggMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICB9CiAgLmZpeGVkLW5hdmJhciAuc2VhcmNoZm9ybS5hY3RpdmUgewogICAgd2lkdGg6IDEwMCU7CiAgfQogIC5maXhlZC1uYXZiYXIgLnNlYXJjaGZvcm0gLmlucHV0LXNlYXJjaCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDA7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7CiAgfQp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozLiBIZWFkZXIKKi8KLmhlYWRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDE4NXB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgcGFkZGluZy10b3A6IDc1cHg7Cn0KLmhlYWRlciAubG9nbyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LWZhbWlseTogIlBvcHBpbnMiLCBzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTogMjBweDsKICBsaW5lLWhlaWdodDogNzVweDsKICBoZWlnaHQ6IDc1cHg7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNvbG9yOiAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICMxZTNkZWQ7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQouaGVhZGVyIC5sb2dvIC5pY28gewogIG1hcmdpbi1yaWdodDogNXB4OwogIGZvbnQtc2l6ZTogMjRweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAycHg7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuIFVzZXIgTWFpbiBNZW51CiovCi51c2VyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA3NXB4OwogIGxlZnQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMzJweCA0MHB4IDAgMTAwcHg7CiAgaGVpZ2h0OiAxMTBweDsKfQoudXNlcjphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDBweDsKICBjbGVhcjogYm90aDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci51c2VyIC5jb250cm9sLXdyYXAuYWN0aXZlIC5jb250cm9sLWxpc3QgewogIG9wYWNpdHk6IDE7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKfQoudXNlciAuYXZhdGFyIHsKICBtYXgtd2lkdGg6IDcwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTlweDsKICBsZWZ0OiAyMHB4Owp9Ci51c2VyIC5hdmF0YXIgaW1nIHsKICBib3JkZXI6IDNweCBzb2xpZCAjZDdlY2ZiOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQoudXNlciAuY29udHJvbC13cmFwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDIwcHg7CiAgaGVpZ2h0OiA0MHB4OwogIHJpZ2h0OiAxNXB4OwogIHRvcDogNDRweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnVzZXIgLmNvbnRyb2wtd3JhcCA+IC5mYSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiAjNDM0YTU0OwogIGN1cnNvcjogcG9pbnRlcjsKfQoudXNlciAuY29udHJvbC1saXN0IHsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogIC1tb3otb3BhY2l0eTogMDsKICAta2h0bWwtb3BhY2l0eTogMDsKICBvcGFjaXR5OiAwOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIG1hcmdpbi1yaWdodDogNXB4OwogIHotaW5kZXg6IDIwOwogIHdpZHRoOiAyMDBweDsKICBtYXJnaW4tdG9wOiAycHg7CiAgcGFkZGluZzogMTBweCAwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNTIsIDE2NiwgMTczLCAwLjE1KTsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDIwcHgpOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgYm94LXNoYWRvdzogMCAwcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KSwgMCAxcHggMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMHB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDBweCAwIHJnYmEoMCwgMCwgMCwgMC4wMik7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDBweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwcHggMCByZ2JhKDAsIDAsIDAsIDAuMDIpOwp9Ci51c2VyIC5jb250cm9sLWxpc3QgYSB7CiAgdG9wOiAwcHg7CiAgY29sb3I6ICM0MzU5NjY7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmc6IDZweCAyMHB4IDZweCAyMHB4OwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtYWxpZ246IGxlZnQ7Cn0KLnVzZXIgLmNvbnRyb2wtbGlzdCBhIGkgewogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjRweDsKICB3aWR0aDogMjVweDsKfQoudXNlciAuY29udHJvbC1saXN0IGE6aG92ZXIgewogIGNvbG9yOiAjMzA0ZmZlOwp9Ci51c2VyIC5uYW1lIHsKICBjb2xvcjogIzQzNTk2NjsKICBtYXJnaW46IDBweDsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI2cHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnVzZXIgLm5hbWUgYSB7CiAgY29sb3I6ICM0MzU5NjY7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogIC51c2VyIC5uYW1lIGE6aG92ZXIgewogICAgY29sb3I6ICMzMDRmZmU7CiAgfQp9Ci51c2VyIC5wb3NpdGlvbiB7CiAgY29sb3I6ICNhYWIyYmQ7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LXNpemU6IDEycHg7CiAgbGluZS1oZWlnaHQ6IDE1cHg7CiAgbWFyZ2luOiAwOwp9Ci51c2VyIC5zdGF0dXMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDVweDsKICByaWdodDogNXB4OwogIHdpZHRoOiAxMnB4OwogIGhlaWdodDogMTJweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogMTAwJTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwp9Ci51c2VyIC5zdGF0dXM6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxcHg7CiAgbGVmdDogMXB4OwogIHdpZHRoOiA4cHg7CiAgaGVpZ2h0OiA4cHg7CiAgYmFja2dyb3VuZDogIzAwYmY0ZjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjUuIE5hdmlnYXRpb24KKi8KLm5hdmlnYXRpb24gLnRpdGxlIHsKICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgbWFyZ2luOiAwOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjZweDsKICBmb250LXdlaWdodDogNTAwOwogIGNvbG9yOiAjMjEyMTIxOwogIGJhY2tncm91bmQ6ICNlNmU5ZWQ7Cn0KLm5hdmlnYXRpb24gLm1lbnUgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbjogMHB4Owp9Ci5uYXZpZ2F0aW9uIC5tZW51IGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiAjNDM0YTU0Owp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAubmF2aWdhdGlvbiAubWVudSBhOmhvdmVyIHsKICAgIGNvbG9yOiAjMzA0ZmZlOwogIH0KICAubmF2aWdhdGlvbiAubWVudSBhOmhvdmVyIGkgewogICAgY29sb3I6ICMzMDRmZmU7CiAgfQp9Ci5uYXZpZ2F0aW9uIC5tZW51IGEuYWN0aXZlLAoubmF2aWdhdGlvbiAubWVudSBhLmN1cnJlbnQgewogIGNvbG9yOiAjMzA0ZmZlOwp9Ci5uYXZpZ2F0aW9uIC5tZW51IGEgaSB7CiAgY29sb3I6ICMyMTIxMjE7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KLm5hdmlnYXRpb24gLm1lbnUgPiBsaSB7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KLm5hdmlnYXRpb24gLm1lbnUgPiBsaSA+IGEgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAxNHB4IDMwcHggMTRweCA1M3B4OwogIG1hcmdpbjogMHB4Owp9Ci5uYXZpZ2F0aW9uIC5tZW51ID4gbGkgPiBhIHNwYW4gewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci5uYXZpZ2F0aW9uIC5tZW51ID4gbGkgPiBhIC5tZW51LWFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxNHB4OwogIHJpZ2h0OiAyMHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMThweDsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQoubmF2aWdhdGlvbiAubWVudSA+IGxpLmFjdGl2ZSB7CiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQoubmF2aWdhdGlvbiAubWVudSA+IGxpLmFjdGl2ZSA+IGEgewogIGJhY2tncm91bmQ6ICNlNmU5ZWQ7Cn0KLm5hdmlnYXRpb24gLm1lbnUgPiBsaS5hY3RpdmUgPiBhIC5tZW51LWFycm93IHsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpOwp9Ci5uYXZpZ2F0aW9uIC5tZW51ID4gbGkuY3VycmVudCA+IGEgewogIGJhY2tncm91bmQ6ICMzMDRmZmU7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLm5hdmlnYXRpb24gLm1lbnUgPiBsaS5jdXJyZW50ID4gYSA+IGkgewogIGNvbG9yOiAjZmZmZmZmOwp9Ci5uYXZpZ2F0aW9uIC5tZW51ID4gbGkuY3VycmVudCAuY3VycmVudCA+IGEgewogIGNvbG9yOiAjMzA0ZmZlOwp9Ci5uYXZpZ2F0aW9uIC5tZW51ID4gbGkuY3VycmVudCAuc3ViLW1lbnUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5uYXZpZ2F0aW9uIC5tZW51IC5zdWItbWVudSB7CiAgZGlzcGxheTogbm9uZTsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDBweDsKICBtYXJnaW46IDBweDsKfQoubmF2aWdhdGlvbiAubWVudSAuc3ViLW1lbnUgYSB7CiAgcGFkZGluZzogMTBweCAyMHB4IDEwcHggNTNweDsKfQoubmF2aWdhdGlvbiAubWVudSAubWVudS1pY29uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDA7CiAgd2lkdGg6IDUwcHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiA0OXB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5uYXZpZ2F0aW9uIC5tZW51IC5tZW51LWljb24ubWRpIHsKICBmb250LXNpemU6IDIwcHg7Cn0KLm5hdmlnYXRpb24gLm1lbnUgLm5vdGljZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTJweDsKICByaWdodDogMjBweDsKICBmb250LXNpemU6IDEycHg7Cn0KLm5hdmlnYXRpb24gLm1lbnUgLndhdmVzLXJpcHBsZSB7CiAgYmFja2dyb3VuZDogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQocmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjIpIDAsIHJnYmEoMTEzLCAxODIsIDI0OSwgMC4zKSA0MCUsIHJnYmEoMTEzLCAxODIsIDI0OSwgMC40KSA1MCUsIHJnYmEoMTEzLCAxODIsIDI0OSwgMC41KSA2MCUsIHJnYmEoMTEzLCAxODIsIDI0OSwgMCkgNzAlKTsKICBiYWNrZ3JvdW5kOiAtby1yYWRpYWwtZ3JhZGllbnQocmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjIpIDAsIHJnYmEoMTEzLCAxODIsIDI0OSwgMC4zKSA0MCUsIHJnYmEoMTEzLCAxODIsIDI0OSwgMC40KSA1MCUsIHJnYmEoMTEzLCAxODIsIDI0OSwgMC41KSA2MCUsIHJnYmEoMTEzLCAxODIsIDI0OSwgMCkgNzAlKTsKICBiYWNrZ3JvdW5kOiAtbW96LXJhZGlhbC1ncmFkaWVudChyZ2JhKDExMywgMTgyLCAyNDksIDAuMikgMCwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjMpIDQwJSwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjQpIDUwJSwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjUpIDYwJSwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwKSA3MCUpOwogIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDExMywgMTgyLCAyNDksIDAuMikgMCwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjMpIDQwJSwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjQpIDUwJSwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwLjUpIDYwJSwgcmdiYSgxMTMsIDE4MiwgMjQ5LCAwKSA3MCUpOwp9CkBtZWRpYSAobWluLXdpZHRoOiA4MDBweCkgewogIC5tYWluLW1lbnUgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIC1tb3otdHJhbnNpdGlvbjogbm9uZTsKICAgIC1vLXRyYW5zaXRpb246IG5vbmU7CiAgICAtbXMtdHJhbnNpdGlvbjogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKICB9CiAgLmhlYWRlciAubG9nbyB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogICAgLW1vei10cmFuc2l0aW9uOiBub25lOwogICAgLW8tdHJhbnNpdGlvbjogbm9uZTsKICAgIC1tcy10cmFuc2l0aW9uOiBub25lOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwogIH0KICAubWVudS1hY3RpdmUgLmhlYWRlciB7CiAgICB3aWR0aDogNzVweDsKICAgIGhlaWdodDogMDsKICAgIHBhZGRpbmc6IDA7CiAgfQogIC5tZW51LWFjdGl2ZSAuaGVhZGVyIC5sb2dvIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDk4ODsKICAgIHdpZHRoOiA3NXB4OwogICAgaGVpZ2h0OiA3NXB4OwogICAgZm9udC1zaXplOiAwOwogICAgbGluZS1oZWlnaHQ6IDgwcHg7CiAgICBjb2xvcjogIzFlM2RlZDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIH0KICAubWVudS1hY3RpdmUgLmhlYWRlciAubG9nbzo6Zmlyc3QtbGV0dGVyIHsKICAgIGZvbnQtc2l6ZTogMjhweDsKICB9CiAgLm1lbnUtYWN0aXZlIC5oZWFkZXIgLmxvZ286YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMDsKICAgIHRvcDogMDsKICAgIHdpZHRoOiA3NXB4OwogICAgaGVpZ2h0OiA3NXB4OwogICAgYmFja2dyb3VuZDogIzFlM2RlZDsKICAgIHotaW5kZXg6IC0yOwogIH0KICAubWVudS1hY3RpdmUgLmhlYWRlciAubG9nbzphZnRlciB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDIwcHg7CiAgICB0b3A6IDIwcHg7CiAgICB3aWR0aDogMzVweDsKICAgIGhlaWdodDogMzVweDsKICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgICB6LWluZGV4OiAtMTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogICAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7CiAgfQogIC5tZW51LWFjdGl2ZSAuaGVhZGVyIC5sb2dvIC5pY28gewogICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgdG9wOiAwOwogIH0KICAubWVudS1hY3RpdmUgLm1haW4tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogNzVweDsKICAgIHBhZGRpbmctdG9wOiA3NXB4OwogIH0KICAubWVudS1hY3RpdmUgLmZpeGVkLW5hdmJhciB7CiAgICBsZWZ0OiA3NXB4OwogICAgei1pbmRleDogNDA7CiAgfQogIC5tZW51LWFjdGl2ZSAubWFpbi1jb250ZW50IHsKICAgIG1hcmdpbi1sZWZ0OiA5NXB4OwogIH0KICAubWVudS1hY3RpdmUgLnVzZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC50aXRsZSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KICAubWVudS1hY3RpdmUgLm5hdmlnYXRpb24gLm1lbnUgPiBsaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgfQogIC5tZW51LWFjdGl2ZSAubmF2aWdhdGlvbiAubWVudSA+IGxpID4gYSB7CiAgICBoZWlnaHQ6IDQ4cHg7CiAgICBwYWRkaW5nOiAxMHB4IDMwcHg7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjRzIGVhc2U7CiAgICAtbW96LXRyYW5zaXRpb246IGNvbG9yIDAuNHMgZWFzZTsKICAgIC1vLXRyYW5zaXRpb246IGNvbG9yIDAuNHMgZWFzZTsKICAgIC1tcy10cmFuc2l0aW9uOiBjb2xvciAwLjRzIGVhc2U7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuNHMgZWFzZTsKICB9CiAgLm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC5tZW51ID4gbGkgPiBhIHNwYW4gewogICAgZGlzcGxheTogbm9uZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAzMHB4OwogIH0KICAubWVudS1hY3RpdmUgLm5hdmlnYXRpb24gLm1lbnUgPiBsaSA+IGEgLm1lbnUtYXJyb3csCiAgLm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC5tZW51ID4gbGkgPiBhIC5ub3RpY2UgewogICAgZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7CiAgfQogIC5tZW51LWFjdGl2ZSAubmF2aWdhdGlvbiAubWVudSA+IGxpOmhvdmVyID4gYSB7CiAgICB3aWR0aDogMjYwcHg7CiAgICBiYWNrZ3JvdW5kOiAjMzA0ZmZlOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBwYWRkaW5nLWxlZnQ6IDkwcHg7CiAgfQogIC5tZW51LWFjdGl2ZSAubmF2aWdhdGlvbiAubWVudSA+IGxpOmhvdmVyID4gYSBpIHsKICAgIGNvbG9yOiAjZmZmZmZmOwogIH0KICAubWVudS1hY3RpdmUgLm5hdmlnYXRpb24gLm1lbnUgPiBsaTpob3ZlciA+IGEgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9CiAgLm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC5tZW51ID4gbGk6aG92ZXIgLnN1Yi1tZW51IHsKICAgIGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDsKICB9CiAgLm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC5tZW51IC5tZW51LWljb24gewogICAgZm9udC1zaXplOiAyNHB4OwogICAgd2lkdGg6IDc1cHg7CiAgfQogIC5tZW51LWFjdGl2ZSAubmF2aWdhdGlvbiAubWVudSAubWVudS1pY29uLm1kaSB7CiAgICBmb250LXNpemU6IDI2cHg7CiAgfQogIC5tZW51LWFjdGl2ZSAubmF2aWdhdGlvbiAubWVudSAuc3ViLW1lbnUgewogICAgZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDEwMCU7CiAgICBsZWZ0OiA3NXB4OwogICAgd2lkdGg6IDE4NXB4OwogIH0KICAubWVudS1hY3RpdmUgLm5hdmlnYXRpb24gLm1lbnUgLnN1Yi1tZW51IGEgewogICAgYmFja2dyb3VuZDogI2U2ZTllZDsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICB9CiAgLm1lbnUtYWN0aXZlIC5tQ1NCX2NvbnRhaW5lciwKICAubWVudS1hY3RpdmUgLm1DdXN0b21TY3JvbGxCb3gsCiAgLm1lbnUtYWN0aXZlIC5jb250ZW50IHsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwogIH0KICAubWVudS1hY3RpdmUgYm9keSB7CiAgICBoZWlnaHQ6IGF1dG87CiAgfQp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo2LiBGaXhlZCBOYXZiYXIKKi8KLmZpeGVkLW5hdmJhciB7CiAgaGVpZ2h0OiA3NXB4Owp9Ci5maXhlZC1uYXZiYXIgLmljby1pdGVtIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG1hcmdpbi1sZWZ0OiAxNXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBmb250LXNpemU6IDE5cHg7CiAgbGluZS1oZWlnaHQ6IDc1cHg7CiAgY29sb3I6ICMwMjFjYWM7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogIC5maXhlZC1uYXZiYXIgLmljby1pdGVtOmhvdmVyIHsKICAgIGNvbG9yOiAjZmZmZmZmOwogIH0KfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbSAuaWNvLWltZyB7CiAgbWF4LWhlaWdodDogNDBweDsKICB3aWR0aDogYXV0bzsKICBtYXJnaW4tdG9wOiAtM3B4OwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogMTAwJTsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbSAuaWNvLWl0ZW0gewogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5maXhlZC1uYXZiYXIgLmljby1pdGVtIC5pY28taXRlbS5tZGkgewogIGZvbnQtc2l6ZTogMjRweDsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbSAuaWNvLWl0ZW0ubWRpOmJlZm9yZSB7CiAgZm9udC1zaXplOiAyNHB4OwogIGxpbmUtaGVpZ2h0OiA3NXB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDNweDsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS5tZGkgewogIGZvbnQtc2l6ZTogMjRweDsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS5tZGk6YmVmb3JlIHsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDc1cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogM3B4Owp9Ci5maXhlZC1uYXZiYXIgLmljby1pdGVtLnB1bHNlOmJlZm9yZSB7CiAgY29udGVudDogJyc7CiAgd2lkdGg6IDJweDsKICBoZWlnaHQ6IDJweDsKICBib3JkZXI6IDNweCBzb2xpZCAjZmZjZTU0IDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDMwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzMHB4OwogIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2U1NCA7CiAgei1pbmRleDogMTA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAycHg7CiAgdG9wOiAyOHB4Owp9Ci5maXhlZC1uYXZiYXIgLmljby1pdGVtLnB1bHNlOmFmdGVyIHsKICBjb250ZW50OiAnJzsKICBib3JkZXI6IDRweCBzb2xpZCAjZmZjZTU0IDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDYwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA2MHB4OwogIGJvcmRlci1yYWRpdXM6IDYwcHg7CiAgaGVpZ2h0OiAzMHB4OwogIHdpZHRoOiAzMHB4OwogIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSAzcyBlYXNlLW91dDsKICAtbW96LWFuaW1hdGlvbjogcHVsc2UgM3MgZWFzZS1vdXQ7CiAgYW5pbWF0aW9uOiBwdWxzZSAzcyBlYXNlLW91dDsKICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOwogIC1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTZweDsKICBsZWZ0OiAtMXB4OwogIHotaW5kZXg6IDE7CiAgb3BhY2l0eTogMDsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS50b2dnbGUtaG92ZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS50b2dnbGUtaG92ZXIgLnRvZ2dsZS1jb250ZW50IHsKICBvcGFjaXR5OiAwOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIHJpZ2h0OiAtMTBweDsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTUyLCAxNjYsIDE3MywgMC4xNSk7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDIwcHgpOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgYm94LXNoYWRvdzogMCAwcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KSwgMCAxcHggMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMHB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDBweCAwIHJnYmEoMCwgMCwgMCwgMC4wMik7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDBweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwcHggMCByZ2JhKDAsIDAsIDAsIDAuMDIpOwp9Ci5maXhlZC1uYXZiYXIgLmljby1pdGVtLnRvZ2dsZS1ob3ZlciAudG9nZ2xlLWNvbnRlbnQgdWwgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAxMHB4IDE1cHggMDsKICBsaXN0LXN0eWxlOiBub25lOwogIGZvbnQtc2l6ZTogMDsKICBsaW5lLWhlaWdodDogMDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHdpZHRoOiAzMDBweDsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS50b2dnbGUtaG92ZXIgLnRvZ2dsZS1jb250ZW50IHVsIGxpIHsKICB3aWR0aDogY2FsYygzMy4zMzMzMzMzMyUpOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS50b2dnbGUtaG92ZXIgLnRvZ2dsZS1jb250ZW50IHVsIGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBjb2xvcjogIzQzNTk2NjsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS50b2dnbGUtaG92ZXIgLnRvZ2dsZS1jb250ZW50IHVsIGEgPiBpIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KLmZpeGVkLW5hdmJhciAuaWNvLWl0ZW0udG9nZ2xlLWhvdmVyIC50b2dnbGUtY29udGVudCAucmVhZC1tb3JlIHsKICBkaXNwbGF5OiBibG9jazsKICBiYWNrZ3JvdW5kOiAjZjVmNWY1OwogIGNvbG9yOiAjNDM1OTY2OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmZpeGVkLW5hdmJhciAuaWNvLWl0ZW0udG9nZ2xlLWhvdmVyIC50b2dnbGUtY29udGVudCAucmVhZC1tb3JlOmhvdmVyIHsKICBjb2xvcjogIzMwNGZmZTsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbS50b2dnbGUtaG92ZXIuYWN0aXZlIC50b2dnbGUtY29udGVudCB7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDApOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTsKfQouZml4ZWQtbmF2YmFyIC5pY28taXRlbTpob3ZlciAuc3ViLWljby1pdGVtIHsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgLW1vei1vcGFjaXR5OiAxOwogIC1raHRtbC1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwp9Ci5maXhlZC1uYXZiYXIgLnN1Yi1pY28taXRlbSB7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAtbW96LW9wYWNpdHk6IDA7CiAgLWtodG1sLW9wYWNpdHk6IDA7CiAgb3BhY2l0eTogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAwOwogIHRvcDogNDhweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogIHBhZGRpbmc6IDVweCAwOwogIGZvbnQtc2l6ZTogMDsKICBsaW5lLWhlaWdodDogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTUyLCAxNjYsIDE3MywgMC4xNSk7CiAgdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDIwcHgpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDIwcHgpOwogIGJveC1zaGFkb3c6IDAgMCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKfQouZml4ZWQtbmF2YmFyIC5zdWItaWNvLWl0ZW06YmVmb3JlIHsKICBjb250ZW50OiAnJzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaGVpZ2h0OiAxMHB4OwogIHdpZHRoOiAxMDAlOwogIHRvcDogLTEwcHg7CiAgbGVmdDogMDsKfQouZml4ZWQtbmF2YmFyIC5zdWItaWNvLWl0ZW0gYSB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDIwMHB4OwogIHBhZGRpbmc6IDZweCAyMHB4IDZweCAyMHB4OwogIGNvbG9yOiAjNDM1OTY2OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjRweDsKfQouZml4ZWQtbmF2YmFyIC5zdWItaWNvLWl0ZW0gYTpob3ZlciB7CiAgY29sb3I6ICMzMDRmZmU7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDM5OXB4KSB7CiAgLmZpeGVkLW5hdmJhciAuaWNvLWl0ZW0gewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLmZpeGVkLW5hdmJhciAuaWNvLWl0ZW06Zmlyc3QtY2hpbGQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIH0KfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIFN0eWxlICovCi8qClRoZW1lczogTmluamEgQWRtaW4KVmVyc2lvbiAyLjAKW1RhYmxlIG9mIGNvbnRlbnRzXQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjEuIEZvb3RlcgoyLiBCb3ggQ29udGVudAozLiBDYWxlbmRhcgo0LiBDaGFydGlzdCBDaGFydAo1LiBDaGVja2JveAo2LiBEYXRhIFRhYmxlcwo3LiBEcm9wY2FwCjguIEV4YW1wbGUgQ29udGVudAo5LiBJbmJveCBMaXN0CjEwLiBKcXVlcnkgVUkKMTEuIE1lbnUgTW9iaWxlIEJ1dHRvbgoxMi4gTW9ycmlzIENoYXJ0CjEzLiBOb3RpY2UKMTQuIG5vVWlTbGlkZXIKMTUuIFByb2Nlc3MgQmFyCjE2LiBSYWRpbwoxNy4gU2VhcmNoIEZvcm0KMTguIFN0YXRpc3RpY3MgQm94CjE5LiBTd2l0Y2gKMjAuIFRhYnMKMjEuIFRpbWVwaWNrZQoyMi4gVGl0bGUKMjMuIFVzZXIgSW5mbwoyNC4gV2lkZ2V0IFN0YXQKMjUuIFdpZGdldCBTdGF0IENoYXJ0CjI2LiBNaXNjCjI3LiBNYWlsYm94CjI4LiBMb2dpbiwgUmVnaXN0ZXIsIC4uLiBGb3JtCjI5LiA0MDQsNTAwIFBhZ2UKMzAuIFByb2plY3RzIFBhZ2UKMzEuIFRhc2sgQm9hcmQKMzIuIFByb2ZpbGUKMzMuIENvbnRhY3QgTGlzdAozNC4gUHJpY2luZyBQbGFuCjM1LiBJbnZvaWNlCjM2LiBHYWxsZXJ5CjM3LiBNb2RhbAozOC4gRm9ybSBDb250cm9sCjM5LiBSZXZpZXdzIFdpZGdldAo0MC4gQWN0aXZpdHkgV2lkZ2V0CjQxLiBUb2RvIFdpZGdldAo0Mi4gWC1FZGl0YWJsZQo0My4gU3BhcmtsaW5lIENoYXJ0CjQ0LiBTd2VldEFsZXJ0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjEuIEZvb3RlcgoqLwouZm9vdGVyIHsKICBwYWRkaW5nOiAxOXB4IDMwcHggMjBweCAzMHB4OwogIG1hcmdpbjogMHB4IC0yMHB4IDBweCAtMjBweDsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpOwp9Ci5mb290ZXIgYSB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTsKfQpAbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7CiAgLmZvb3RlciBhOmhvdmVyIHsKICAgIGNvbG9yOiAjMzA0ZmZlOwogIH0KfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMi4gQm94IENvbnRlbnQKKi8KLmJveC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMjBweDsKICBtYXJnaW46IDBweCAwcHggMjBweCAwcHg7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIC1tb3otYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwogIC8qIFN0YXRlICovCiAgLyogU3R5bGUgKi8KICAvKiBDb2xvciAqLwp9Ci5ib3gtY29udGVudDphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDBweDsKICBjbGVhcjogYm90aDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5ib3gtY29udGVudCAuYm94LXRpdGxlIHsKICBtYXJnaW46IDBweCAwcHggMzBweCAwcHg7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KLmJveC1jb250ZW50IC5ib3gtdGl0bGUgLmljbyB7CiAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgbGluZS1oZWlnaHQ6IDE2cHg7Cn0KLmJveC1jb250ZW50IC5ib3gtdGl0bGUud2l0aC1jb250cm9sIC5jb250cm9scyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAyMHB4OwogIHRvcDogMjBweDsKICBmb250LXNpemU6IDBweDsKICBsaW5lLWhlaWdodDogMTZweDsKfQouYm94LWNvbnRlbnQgLmJveC10aXRsZS53aXRoLWNvbnRyb2wgLmNvbnRyb2wgewogIGJvcmRlcjogbm9uZTsKICBiYWNrZ3JvdW5kOiBub25lOwogIG91dGxpbmU6IG5vbmU7CiAgaGVpZ2h0OiAxNnB4OwogIGZvbnQtc2l6ZTogMTRweDsKfQouYm94LWNvbnRlbnQgLmJveC10aXRsZS53aXRoLWNvbnRyb2wgLmZhLXRpbWVzIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtMXB4Owp9Ci5ib3gtY29udGVudCAuY29udGVudDphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDBweDsKICBjbGVhcjogYm90aDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93biB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiAyMHB4OwogIHRvcDogMjBweDsKfQouYm94LWNvbnRlbnQgLmRyb3Bkb3duLmpzX19kcm9wX2Rvd24gLmRyb3Bkb3duLWljb24gewogIGNvbG9yOiAjYWFiMmJkOwp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAuYm94LWNvbnRlbnQgLmRyb3Bkb3duLmpzX19kcm9wX2Rvd24gLmRyb3Bkb3duLWljb246aG92ZXIgewogICAgY29sb3I6ICM0MzU5NjY7CiAgfQp9Ci5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93biAuc3ViLW1lbnUgewogIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgLW1vei1vcGFjaXR5OiAwOwogIC1raHRtbC1vcGFjaXR5OiAwOwogIG9wYWNpdHk6IDA7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICByaWdodDogMTAwJTsKICBtYXJnaW4tcmlnaHQ6IDVweDsKICB6LWluZGV4OiAyMDsKICB3aWR0aDogMjAwcHg7CiAgbWFyZ2luLXRvcDogMnB4OwogIHBhZGRpbmc6IDEwcHggMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTUyLCAxNjYsIDE3MywgMC4xNSk7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICBsaXN0LXN0eWxlOiBub25lOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogIGJvcmRlci1yYWRpdXM6IDNweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDIwcHgpOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjBweCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDIwcHgpOwogIGJveC1zaGFkb3c6IDAgMHB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDBweCAwIHJnYmEoMCwgMCwgMCwgMC4wMik7CiAgLW1vei1ib3gtc2hhZG93OiAwIDBweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwcHggMCByZ2JhKDAsIDAsIDAsIDAuMDIpOwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KSwgMCAxcHggMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKfQouYm94LWNvbnRlbnQgLmRyb3Bkb3duLmpzX19kcm9wX2Rvd24gLnN1Yi1tZW51IGEgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDZweCAyMHB4IDZweCAyMHB4OwogIGNvbG9yOiAjNDM1OTY2Owp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAuYm94LWNvbnRlbnQgLmRyb3Bkb3duLmpzX19kcm9wX2Rvd24gLnN1Yi1tZW51IGE6aG92ZXIgewogICAgY29sb3I6ICMzMDRmZmU7CiAgfQp9Ci5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93biAuc3ViLW1lbnUgLnNwbGl0IHsKICBtYXJnaW46IDlweCAwcHggOXB4IDBweDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDFweDsKICBiYWNrZ3JvdW5kOiAjZTVlNWU1Owp9Ci5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93bi5hY3RpdmUgLmRyb3Bkb3duLWljb24gewogIGNvbG9yOiAjNDM1OTY2Owp9Ci5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93bi5hY3RpdmUgLnN1Yi1tZW51IHsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgLW1vei1vcGFjaXR5OiAxOwogIC1raHRtbC1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7CiAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwp9Ci5ib3gtY29udGVudC5jYXJkLWNsb3NlZCAuYm94LXRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQouYm94LWNvbnRlbnQuY2FyZC1jbG9zZWQgLmJveC10aXRsZS53aXRoLWNvbnRyb2wgLmZhLW1pbnVzOmJlZm9yZSB7CiAgY29udGVudDogIlxmMDY3IjsKfQouYm94LWNvbnRlbnQuYm9yZGVyZWQgewogIGJvcmRlci10b3A6IDRweCBzb2xpZCAjNDM1OTY2OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMHB4OwogIGJvcmRlci1yYWRpdXM6IDBweDsKfQouYm94LWNvbnRlbnQuYm9yZGVyZWQtYWxsIHsKICBib3JkZXI6IDFweCBzb2xpZCAjNDM1OTY2OwogIGJvcmRlci10b3A6IDRweCBzb2xpZCAjNDM1OTY2OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMHB4OwogIGJvcmRlci1yYWRpdXM6IDBweDsKfQouYm94LWNvbnRlbnQuY2FyZCB7CiAgcGFkZGluZzogMHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMHB4OwogIGJvcmRlci1yYWRpdXM6IDBweDsKfQouYm94LWNvbnRlbnQuY2FyZCAuYm94LXRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgcGFkZGluZzogMTBweCAyMHB4IDEwcHggMjBweDsKICBsaW5lLWhlaWdodDogMzBweDsKICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6ICM0MzU5NjY7Cn0KLmJveC1jb250ZW50LmNhcmQgLmJveC10aXRsZSAuaWNvIHsKICBsaW5lLWhlaWdodDogMzBweDsKfQouYm94LWNvbnRlbnQuY2FyZCAuYm94LXRpdGxlIC5jb250cm9scyB7CiAgdG9wOiAxN3B4Owp9Ci5ib3gtY29udGVudC5jYXJkIC5kcm9wZG93biB7CiAgdG9wOiAxNXB4Owp9Ci5ib3gtY29udGVudC5jYXJkIC5kcm9wZG93biAuZHJvcGRvd24taWNvbiB7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLmJveC1jb250ZW50LmNhcmQgLmNhcmQtY29udGVudCB7CiAgcGFkZGluZzogMjBweDsKfQouYm94LWNvbnRlbnQuY2FyZC5ib3JkZXJlZC1hbGwgewogIGJvcmRlci10b3A6IG5vbmU7Cn0KLmJveC1jb250ZW50LmNhcmQgLmRyb3Bkb3duLmpzX19kcm9wX2Rvd24gLmRyb3Bkb3duLWljb24gewogIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7Cn0KLmJveC1jb250ZW50LmNhcmQud2hpdGUgLmJveC10aXRsZSB7CiAgY29sb3I6ICM0MzU5NjYgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTZlOWVkOwp9Ci5ib3gtY29udGVudC5wcmltYXJ5IHsKICBib3JkZXItY29sb3I6ICMxODhhZTI7Cn0KLmJveC1jb250ZW50LnByaW1hcnkgLmJveC10aXRsZSB7CiAgY29sb3I6ICMxODhhZTI7Cn0KLmJveC1jb250ZW50LnN1Y2Nlc3MgewogIGJvcmRlci1jb2xvcjogIzAwYmY0ZjsKfQouYm94LWNvbnRlbnQuc3VjY2VzcyAuYm94LXRpdGxlIHsKICBjb2xvcjogIzAwYmY0ZjsKfQouYm94LWNvbnRlbnQuaW5mbyB7CiAgYm9yZGVyLWNvbG9yOiAjMDBhZWZmOwp9Ci5ib3gtY29udGVudC5pbmZvIC5ib3gtdGl0bGUgewogIGNvbG9yOiAjMDBhZWZmOwp9Ci5ib3gtY29udGVudC53YXJuaW5nIHsKICBib3JkZXItY29sb3I6ICNmYmJjMDU7Cn0KLmJveC1jb250ZW50Lndhcm5pbmcgLmJveC10aXRsZSB7CiAgY29sb3I6ICNmYmJjMDU7Cn0KLmJveC1jb250ZW50LmRhbmdlciB7CiAgYm9yZGVyLWNvbG9yOiAjZWE0MzM1Owp9Ci5ib3gtY29udGVudC5kYW5nZXIgLmJveC10aXRsZSB7CiAgY29sb3I6ICNlYTQzMzU7Cn0KLmJveC1jb250ZW50Lm11dGVkIHsKICBib3JkZXItY29sb3I6ICNmNGY4ZmI7Cn0KLmJveC1jb250ZW50Lm11dGVkIC5ib3gtdGl0bGUgewogIGNvbG9yOiAjZjRmOGZiOwp9Ci5ib3gtY29udGVudC5pbnZlcnNlIHsKICBib3JkZXItY29sb3I6ICMyMTIxMjE7Cn0KLmJveC1jb250ZW50LmludmVyc2UgLmJveC10aXRsZSB7CiAgY29sb3I6ICMyMTIxMjE7Cn0KLmJveC1jb250ZW50LnB1cnBsZSB7CiAgYm9yZGVyLWNvbG9yOiAjNWI2OWJjOwp9Ci5ib3gtY29udGVudC5wdXJwbGUgLmJveC10aXRsZSB7CiAgY29sb3I6ICM1YjY5YmM7Cn0KLmJveC1jb250ZW50LnBpbmsgewogIGJvcmRlci1jb2xvcjogI2ZmOGFjYzsKfQouYm94LWNvbnRlbnQucGluayAuYm94LXRpdGxlIHsKICBjb2xvcjogI2ZmOGFjYzsKfQouYm94LWNvbnRlbnQubGlnaHRkYXJrIHsKICBib3JkZXItY29sb3I6ICNmNGY4ZmI7Cn0KLmJveC1jb250ZW50LmxpZ2h0ZGFyayAuYm94LXRpdGxlIHsKICBjb2xvcjogI2Y0ZjhmYjsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMy4gQ2FsZW5kYXIKKi8KLmNhbGVuZGFyIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tYm90dG9tOiAwcHg7Cn0KLmZjLXZpZXcgewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KLm5vbmUtYm9yZGVyIC5tb2RhbC1mb290ZXIgewogIGJvcmRlci10b3A6IG5vbmU7Cn0KLmZjLXRvb2xiYXIgewogIG1hcmdpbi1ib3R0b206IDVweDsKICBtYXJnaW4tdG9wOiAxNXB4Owp9Ci5mYy10b29sYmFyIGgyIHsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Ci5mYy10b29sYmFyIC5mYy1zdGF0ZS1hY3RpdmUsCi5mYy10b29sYmFyIC51aS1zdGF0ZS1hY3RpdmUsCi5mYy10b29sYmFyIGJ1dHRvbjpmb2N1cywKLmZjLXRvb2xiYXIgYnV0dG9uOmhvdmVyIHsKICB6LWluZGV4OiAwOwp9Ci5mYy13aWRnZXQtaGVhZGVyLAouZmMtd2lkZ2V0LWNvbnRlbnQgewogIGJvcmRlcjogMXB4IHNvbGlkICNkN2VjZmI7Cn0KLmZjIHRoLmZjLXdpZGdldC1oZWFkZXIgewogIGJhY2tncm91bmQ6ICNmNWY1ZjU7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIHBhZGRpbmc6IDEwcHggMHB4IDEwcHggMHB4OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KLmZjIHRoLmZjLXdpZGdldC1oZWFkZXIgYSB7CiAgY29sb3I6ICM1MDU0NTg7Cn0KLmZjIC5mYy1ldmVudCAuZmMtYmcgewogIGRpc3BsYXk6IG5vbmU7Cn0KLmZjIC5mYy1saXN0LWl0ZW1bY2xhc3MqPSIgYmctIl0gewogIGNvbG9yOiAjZmZmZmZmOwp9Ci5mYyAuZmMtbGlzdC1pdGVtW2NsYXNzKj0iIGJnLSJdOmhvdmVyIHRkIHsKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7Cn0KLmZjLWJ1dHRvbiB7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZDdlY2ZiOwogIGNvbG9yOiAjNTU1OwogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci5mYy10ZXh0LWFycm93IHsKICBmb250LXNpemU6IDE2cHg7Cn0KLmZjLXN0YXRlLWhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjZjNmM2YzOwp9Ci5mYy1zdGF0ZS1oaWdobGlnaHQsCi5mYy1jZWxsLW92ZXJsYXkgewogIGJhY2tncm91bmQ6ICNmMGYwZjA7Cn0KLmZjLXVudGhlbWVkIC5mYy10b2RheSB7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKfQouZmMgLmZjLWV2ZW50LAojZXh0ZXJuYWwtZXZlbnRzIC5mYy1ldmVudCB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAycHg7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGJvcmRlcjogbm9uZTsKICBjdXJzb3I6IG1vdmU7CiAgZm9udC1zaXplOiAxMnB4OwogIG1hcmdpbjogNXB4IDdweCA1cHggN3B4OwogIHBhZGRpbmc6IDVweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmV4dGVybmFsLWV2ZW50IHsKICBjb2xvcjogI2ZmZmZmZjsKICBjdXJzb3I6IG1vdmU7CiAgbWFyZ2luOiAxMHB4IDBweCAxMHB4IDBweDsKICBwYWRkaW5nOiA2cHggMTBweCA2cHggMTBweDsKfQouZmMtYmFzaWMtdmlldyB0ZC5mYy13ZWVrLW51bWJlciBzcGFuLAouZmMtYmFzaWMtdmlldyB0ZC5mYy1kYXktbnVtYmVyIHsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7Cn0KLmZjLXRvb2xiYXIgLmZjLWJ1dHRvbi1ncm91cCAuZmMtYnV0dG9uIHsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwp9Ci5mYy10b29sYmFyIC5mYy1idXR0b24tZ3JvdXAgLmZjLWJ1dHRvbjpob3ZlciB7CiAgYmFja2dyb3VuZDogI0Y1RjVGNTsKfQouZmMgLmZjLWV2ZW50LAouZmMgLmZjLWV2ZW50LWRvdCB7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKICB0cmFuc2l0aW9uOiBub25lOwogIC1tb3otdHJhbnNpdGlvbjogbm9uZTsKICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7Cn0KLmZjIC5mYy1ldmVudC1kb3QgewogIGJhY2tncm91bmQ6ICNmZmZmZmY7Cn0KLmZjLWx0ciAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtZGF5LW51bWJlciB7CiAgY29sb3I6ICM0MzU5NjY7Cn0KLmZjLmZjLWx0ciAuZmMtaC1ldmVudC5mYy1ub3Qtc3RhcnQsCi5mYy5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtbm90LWVuZCB7CiAgbWFyZ2luLWxlZnQ6IDdweDsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNC4gQ2hhcnRpc3QgQ2hhcnQKKi8KLmNoYXJ0aXN0LWNoYXJ0IC5jdC1sYWJlbCB7CiAgZm9udC1zaXplOiAxMnB4Owp9Ci5jaGFydGlzdC1jaGFydC1waWUgLmN0LWxhYmVsIHsKICBmb250LXNpemU6IDE0cHg7CiAgY29sb3I6ICNmZmZmZmY7CiAgZmlsbDogI2ZmZjsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNS4gQ2hlY2tib3gKKi8KLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIGRpc3BsYXk6IG5vbmU7Cn0KLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjNDE1ZGZiOwogIGJhY2tncm91bmQ6ICM0MTVkZmI7Cn0KLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgLW1vei1vcGFjaXR5OiAxOwogIC1raHRtbC1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7Cn0KLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il06ZGlzYWJsZWQgKyBsYWJlbCB7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTYwKSI7CiAgLW1vei1vcGFjaXR5OiAwLjY7CiAgLWtodG1sLW9wYWNpdHk6IDAuNjsKICBvcGFjaXR5OiAwLjY7Cn0KLmNoZWNrYm94IGxhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZy1sZWZ0OiAyNXB4Owp9Ci5jaGVja2JveCBsYWJlbDpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDFweDsKICBsZWZ0OiAwcHg7CiAgd2lkdGg6IDE3cHg7CiAgaGVpZ2h0OiAxN3B4OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQouY2hlY2tib3ggbGFiZWw6YWZ0ZXIgewogIGNvbnRlbnQ6ICJcZjAwYyI7CiAgZm9udC1mYW1pbHk6ICdGb250QXdlc29tZSc7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxNXB4OwogIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgLW1vei1vcGFjaXR5OiAwOwogIC1raHRtbC1vcGFjaXR5OiAwOwogIG9wYWNpdHk6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMnB4OwogIGxlZnQ6IDJweDsKICBjb2xvcjogI2ZmZmZmZjsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQouY2hlY2tib3gucHJpbWFyeSBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUgewogIGJhY2tncm91bmQ6ICMxODhhZTI7CiAgYm9yZGVyLWNvbG9yOiAjMTg4YWUyOwp9Ci5jaGVja2JveC5zdWNjZXNzIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYmFja2dyb3VuZDogIzAwYmY0ZjsKICBib3JkZXItY29sb3I6ICMwMGJmNGY7Cn0KLmNoZWNrYm94LmluZm8gaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjMDBhZWZmOwogIGJvcmRlci1jb2xvcjogIzAwYWVmZjsKfQouY2hlY2tib3gud2FybmluZyBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUgewogIGJhY2tncm91bmQ6ICNmYmJjMDU7CiAgYm9yZGVyLWNvbG9yOiAjZmJiYzA1Owp9Ci5jaGVja2JveC5kYW5nZXIgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjZWE0MzM1OwogIGJvcmRlci1jb2xvcjogI2VhNDMzNTsKfQouY2hlY2tib3gucHVycGxlIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYmFja2dyb3VuZDogIzViNjliYzsKICBib3JkZXItY29sb3I6ICM1YjY5YmM7Cn0KLmNoZWNrYm94LnBpbmsgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjZmY4YWNjOwogIGJvcmRlci1jb2xvcjogI2ZmOGFjYzsKfQouY2hlY2tib3guaW52ZXJzZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUgewogIGJhY2tncm91bmQ6ICMyMTIxMjE7CiAgYm9yZGVyLWNvbG9yOiAjMjEyMTIxOwp9Ci5jaGVja2JveC5jaXJjbGVkIGxhYmVsOmJlZm9yZSB7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogMTAwJTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo2LiBEYXRhIFRhYmxlcwoqLwouZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGVzX3BhZ2luYXRlIC5wYWdpbmF0aW9uIHsKICBtYXJnaW46IDA7Cn0KLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19wYWdpbmF0ZSAucGFnaW5hdGlvbiAucGFnaW5hdGVfYnV0dG9uIHsKICBwYWRkaW5nOiAwcHg7CiAgbWluLXdpZHRoOiAwcHg7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Ci5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfcGFnaW5hdGUgLnBhZ2luYXRpb24gLnBhZ2luYXRlX2J1dHRvbjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDBweDsKfQouZGF0YVRhYmxlc193cmFwcGVyIC5kYXRhVGFibGUgewogIG1hcmdpbi10b3A6IDEwcHghaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDE4cHghaW1wb3J0YW50Owp9Ci5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZSAuZ3JvdXAgewogIGJhY2tncm91bmQtY29sb3I6ICMzMDRmZmUgIWltcG9ydGFudDsKICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9Ci5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZXNfc2Nyb2xsQm9keSAuZGF0YVRhYmxlIHsKICBtYXJnaW4tdG9wOiAwcHghaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDBweCFpbXBvcnRhbnQ7Cn0KLmRhdGFUYWJsZXNfd3JhcHBlciAuZGF0YVRhYmxlc19zY3JvbGxGb290IC5kYXRhVGFibGUgewogIG1hcmdpbi10b3A6IDBweCFpbXBvcnRhbnQ7Cn0KLmRhdGFUYWJsZXNfd3JhcHBlciB0YWJsZS5kYXRhVGFibGUgdGhlYWQgdGgsCi5kYXRhVGFibGVzX3dyYXBwZXIgdGFibGUuZGF0YVRhYmxlIHRoZWFkIHRoLAouZGF0YVRhYmxlc193cmFwcGVyIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCB0ZCwKLmRhdGFUYWJsZXNfd3JhcHBlciB0YWJsZS5kYXRhVGFibGUgdGhlYWQgdGQgewogIGJvcmRlci1ib3R0b20tY29sb3I6ICNkZGQ7CiAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgcGFkZGluZy1yaWdodDogOHB4OwogIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKfQp0YWJsZS5mb2N1cy1vbiB0Ym9keSB0ci5mb2N1c2VkIHRoLAp0YWJsZS5mb2N1cy1vbiB0Ym9keSB0ci5mb2N1c2VkIHRkIHsKICBiYWNrZ3JvdW5kOiAjMzA0ZmZlICFpbXBvcnRhbnQ7CiAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNy4gRHJvcGNhcAoqLwouZHJvcGNhcCwKLmRyb3BjYXAtY2lyY2xlLAouZHJvcGNhcC1zcXVhcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBsZWZ0OwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDM2cHg7CiAgbWFyZ2luLXJpZ2h0OiA2cHg7CiAgdGV4dC1zaGFkb3c6IG5vbmU7Cn0KLmRyb3BjYXAgewogIGZvbnQtc2l6ZTogMy4xZW07Cn0KLmRyb3BjYXAtY2lyY2xlIHsKICBmb250LXNpemU6IDI2cHg7CiAgbGluZS1oZWlnaHQ6IDM2cHg7CiAgd2lkdGg6IDM2cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKfQouZHJvcGNhcC1zcXVhcmUgewogIGZvbnQtc2l6ZTogMjZweDsKICBsaW5lLWhlaWdodDogMzZweDsKICB3aWR0aDogMzZweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjguIEV4YW1wbGUgQ29udGVudAoqLwouZXhhbXBsZS1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMTVweDsKICBiYWNrZ3JvdW5kOiAjZjVmNWY1Owp9Ci5leGFtcGxlLWNvbnRlbnQgLm1vZGFsIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiBhdXRvOwogIGxlZnQ6IGF1dG87CiAgcmlnaHQ6IGF1dG87CiAgYm90dG9tOiBhdXRvOwogIHotaW5kZXg6IDEwOwp9Ci5leGFtcGxlLWNvbnRlbnQgLm1vZGFsLWRpYWxvZyB7CiAgbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KLmJzLWV4YW1wbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiA0NXB4IDE1cHggMTVweCAxNXB4OwogIG1hcmdpbjogMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgYmFja2dyb3VuZDogI2Y0ZjRmNDsKfQouYnMtZXhhbXBsZSAuYnMtdGl0bGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDE1cHg7CiAgbGVmdDogMTVweDsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogIzQzNTk2NjsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Ci5icy1leGFtcGxlID4gLmRyb3Bkb3duID4gLmRyb3Bkb3duLXRvZ2dsZSB7CiAgZmxvYXQ6IGxlZnQ7Cn0KLmJzLWV4YW1wbGUgPiAuZHJvcGRvd24gPiAuZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgY2xlYXI6IGxlZnQ7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjkuIEluYm94IExpc3QKKi8KLmluYm94LWxpc3QgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBwYWRkaW5nOiAwcHg7Cn0KLmluYm94LWxpc3QgbGkgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjNmM2YzOwp9Ci5pbmJveC1saXN0IC5hdmF0YXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwcHg7CiAgbGVmdDogMHB4OwogIHdpZHRoOiA0MHB4OwogIGhlaWdodDogNDBweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7Cn0KLmluYm94LWxpc3QgLmluYm94LWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtaW4taGVpZ2h0OiA0MHB4OwogIHBhZGRpbmc6IDEwcHggMHB4IDEwcHggNTVweDsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQouaW5ib3gtbGlzdCAubmFtZSB7CiAgY29sb3I6ICMzMDRmZmU7CiAgbWFyZ2luOiAwcHg7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBmb250LXdlaWdodDogNTAwOwp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAuaW5ib3gtbGlzdCAubmFtZTpob3ZlciB7CiAgICBjb2xvcjogIzFlM2RlZDsKICB9Cn0KLmluYm94LWxpc3QgLnRleHQgewogIGNvbG9yOiAjNjU2ZDc4OwogIGZvbnQtc2l6ZTogMTJweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgbWFyZ2luOiAwcHg7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQouaW5ib3gtbGlzdCAudGltZSB7CiAgZm9udC1zaXplOiAxMXB4OwogIGNvbG9yOiAjYWFiMmJkOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwcHg7CiAgcmlnaHQ6IDBweDsKfQouaW5ib3gtbGlzdCAuZnVsbC10ZXh0IC50ZXh0IHsKICB3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Ci5pbmJveC1yZWFkLW1vcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiAjNDM1OTY2OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMTAuIEpxdWVyeSBVSQoqLwoudWktc29ydGFibGUtcGxhY2Vob2xkZXIgewogIGJvcmRlcjogMnB4IGRhc2hlZCAjNDM1OTY2OwogIGJhY2tncm91bmQ6ICNjY2M7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTcwKSI7CiAgLW1vei1vcGFjaXR5OiAwLjc7CiAgLWtodG1sLW9wYWNpdHk6IDAuNzsKICBvcGFjaXR5OiAwLjc7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjExLiBNZW51IE1vYmlsZSBCdXR0b24KKi8KLm1lbnUtbW9iaWxlLWJ1dHRvbiB7CiAgZGlzcGxheTogYmxvY2s7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIGhlaWdodDogNzVweDsKICB3aWR0aDogNzBweDsKICBib3JkZXI6IG5vbmU7CiAgb3V0bGluZTogbm9uZTsKICBmb250LXNpemU6IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDc1cHg7CiAgY29sb3I6ICNmZmZmZmY7CiAgYmFja2dyb3VuZDogIzMwNmZmZTsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMTIuIE1vcnJpcyBDaGFydAoqLwoubW9ycmlzLWNoYXJ0LWRldGFpbC1saXN0IHsKICBtYXJnaW4tdG9wOiAxMHB4Owp9Ci5tb3JyaXMtY2hhcnQtZGV0YWlsLWxpc3QgLmZhIHsKICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoubW9ycmlzLWNoYXJ0LWRldGFpbC1saXN0IGxpOm50aC1jaGlsZCgxKSB7CiAgY29sb3I6ICNmY2IwM2I7Cn0KLm1vcnJpcy1jaGFydC1kZXRhaWwtbGlzdCBsaTpudGgtY2hpbGQoMikgewogIGNvbG9yOiAjZWE2NWEyOwp9Ci5tb3JyaXMtY2hhcnQtZGV0YWlsLWxpc3QgbGk6bnRoLWNoaWxkKDMpIHsKICBjb2xvcjogIzU2NkZDOTsKfQoubW9ycmlzLWNoYXJ0LWRldGFpbC1saXN0IGxpOm50aC1jaGlsZCg0KSB7CiAgY29sb3I6ICMzMzMzMzM7Cn0KLm1vcnJpcy1jaGFydC1yZWFsdGltZSAubW9ycmlzLWhvdmVyLXJvdy1sYWJlbCB7CiAgZGlzcGxheTogbm9uZTsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMTMuIE5vdGljZQoqLwoubm90aWNlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwLjI1ZW07CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjI1ZW07CiAgYm9yZGVyLXJhZGl1czogMC4yNWVtOwogIHBhZGRpbmc6IDJweCA2cHggMDsKICBmb250LXNpemU6IDc1JTsKfQoubm90aWNlLWJsdWUgewogIGNvbG9yOiAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICMzMDRmZmU7Cn0KLm5vdGljZS1wdXJwbGUgewogIGNvbG9yOiAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICM1YjY5YmM7Cn0KLm5vdGljZS15ZWxsb3cgewogIGNvbG9yOiAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICNmYmJjMDU7Cn0KLm5vdGljZS1kYW5nZXIgewogIGNvbG9yOiAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICNmZjE3NDQ7Cn0KLyogTm90aWNlIExpc3QgKi8KLm5vdGljZS1saXN0IHsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDBweDsKfQoubm90aWNlLWxpc3QgbGkgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWFlZGVmOwp9Ci5ub3RpY2UtbGlzdCBhIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMTRweCAxNXB4IDE0cHggODVweDsKICBtaW4taGVpZ2h0OiA3NXB4Owp9Ci5ub3RpY2UtbGlzdCBhOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjZjVmN2ZhOwp9Ci5ub3RpY2UtbGlzdCAuYXZhdGFyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMHB4OwogIGxlZnQ6IDE1cHg7CiAgd2lkdGg6IDU1cHg7CiAgaGVpZ2h0OiA1NXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKfQoubm90aWNlLWxpc3QgLmF2YXRhciBpIHsKICBmb250LXNpemU6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDU1cHg7CiAgY29sb3I6ICNmZmZmZmY7CiAgdG9wOiAwcHg7Cn0KLm5vdGljZS1saXN0IC5kZXNjIHsKICBjb2xvcjogIzkwYTRhZTsKICBmb250LXNpemU6IDEzcHg7CiAgbGluZS1oZWlnaHQ6IDIzcHg7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdpZHRoOiAxMDAlOwogIGRpc3BsYXk6IGJsb2NrOwp9Ci5ub3RpY2UtbGlzdCAubmFtZSB7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgY29sb3I6ICMyMTIxMjE7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB3aWR0aDogMTAwJTsKICBkaXNwbGF5OiBibG9jazsKfQpAbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7CiAgLm5vdGljZS1saXN0IC5uYW1lOmhvdmVyIHsKICAgIGNvbG9yOiAjMzA0ZmZlOwogIH0KfQoubm90aWNlLWxpc3QgLnRpbWUgewogIGZvbnQtc2l6ZTogMTJweDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiAjYWFiMmJkOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMjBweDsKICB0b3A6IDE3cHg7Cn0KLyogTm90aWNlIFBvcHVwICovCi5ub3RpY2UtcG9wdXAgewogIG9wYWNpdHk6IDA7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDc1cHg7CiAgcmlnaHQ6IDIwcHg7CiAgei1pbmRleDogNDA7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICB3aWR0aDogNDUwcHg7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmctdG9wOiA1MHB4OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDMwcHgpOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMzBweCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAzMHB4KTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAzMHB4KTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMzBweCk7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgYm94LXNoYWRvdzogMCAwcHggMjRweCAwIHJnYmEoMCwgMCwgMCwgMC4wNiksIDAgMXB4IDBweCAwIHJnYmEoMCwgMCwgMCwgMC4wMik7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDBweCAyNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KSwgMCAxcHggMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjAyKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMHB4IDI0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpLCAwIDFweCAwcHggMCByZ2JhKDAsIDAsIDAsIDAuMDIpOwp9CkBtZWRpYSAobWF4LXdpZHRoOiA1NTBweCkgewogIC5ub3RpY2UtcG9wdXAgewogICAgd2lkdGg6IDEwMCU7CiAgICByaWdodDogMDsKICB9CiAgLm5vdGljZS1wb3B1cCNtZXNzYWdlLXBvcHVwIHsKICAgIHJpZ2h0OiAwOwogIH0KfQoubm90aWNlLXBvcHVwLmFjdGl2ZSB7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KLm5vdGljZS1wb3B1cCAubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyIHsKICBiYWNrZ3JvdW5kOiAjYWFiMmJkICFpbXBvcnRhbnQ7Cn0KLm5vdGljZS1wb3B1cDpob3ZlciAubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyIHsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgLW1vei1vcGFjaXR5OiAxOwogIC1raHRtbC1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7Cn0KLm5vdGljZS1wb3B1cCAuY29udGVudCB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgaGVpZ2h0OiAxMDAlOwp9Ci5ub3RpY2UtcG9wdXAgLmNvbnRlbnQgLm5vdGljZS1saXN0IHsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5ub3RpY2UtcG9wdXAgLnBvcHVwLXRpdGxlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgbGVmdDogMHB4OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogNTBweDsKICBwYWRkaW5nOiAxMXB4IDEwcHggMTFweCAxOHB4OwogIGNvbG9yOiAjMWIxZjIwOwogIG1hcmdpbjogMHB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTZlOWVkOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjdweDsKfQoubm90aWNlLXBvcHVwIC5wb3B1cC10aXRsZSBhIHsKICB0ZXh0LXRyYW5zZm9ybTogaW5pdGlhbDsKICBmb250LXdlaWdodDogNDAwOwp9Ci5ub3RpY2UtcG9wdXAgLnBvcHVwLWNsb3NlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgcmlnaHQ6IDBweDsKICB6LWluZGV4OiAxMDsKICBmb250LXNpemU6IDE4cHg7CiAgbGluZS1oZWlnaHQ6IDU5cHg7CiAgcGFkZGluZzogMHB4IDEwcHggMHB4IDEwcHg7CiAgY29sb3I6ICM0MzU5NjY7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogIC5ub3RpY2UtcG9wdXAgLnBvcHVwLWNsb3NlOmhvdmVyIHsKICAgIGNvbG9yOiAjZWE0MzM1OwogIH0KfQoubm90aWNlLXBvcHVwIC5ub3RpY2UtcmVhZC1tb3JlIHsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgY29sb3I6ICMyMTIxMjE7CiAgcGFkZGluZzogM3B4IDEwcHggMTNweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZGlzcGxheTogYmxvY2s7Cn0KLm5vdGljZS1wb3B1cCAubm90aWNlLXJlYWQtbW9yZTpob3ZlciB7CiAgY29sb3I6ICMzMDRmZmU7Cn0KI21lc3NhZ2UtcG9wdXAgewogIHJpZ2h0OiA2MHB4Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxNC4gbm9VaVNsaWRlcgoqLwoubm91aS1jb25uZWN0IC5ub1VpLW9yaWdpbiB7CiAgcmlnaHQ6IGF1dG87CiAgd2lkdGg6IDBweDsKfQoubm91aS1jb25uZWN0IC5jb25uZWN0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgYm90dG9tOiAwcHg7CiAgYmFja2dyb3VuZDogIzgwQzlGNTsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgM3B4IHJnYmEoNTEsIDUxLCA1MSwgMC40NSk7CiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDAgM3B4IHJnYmEoNTEsIDUxLCA1MSwgMC40NSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDAgM3B4IHJnYmEoNTEsIDUxLCA1MSwgMC40NSk7Cn0KLm5vdWktY29ubmVjdC5ub1VpLXN0YXRlLXRhcCAuY29ubmVjdCB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBsZWZ0IDMwMG1zLCByaWdodCAzMDBtczsKICAtbW96LXRyYW5zaXRpb246IGxlZnQgMzAwbXMsIHJpZ2h0IDMwMG1zOwogIHRyYW5zaXRpb246IGxlZnQgMzAwbXMsIHJpZ2h0IDMwMG1zOwp9Ci5ub3VpLXNlbGVjdCwKLm5vdWktbnVtYmVyIHsKICBwYWRkaW5nOiA3cHg7CiAgbWFyZ2luOiAxNXB4IDVweCA1cHggNXB4OwogIHdpZHRoOiA3MHB4Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxNS4gUHJvY2VzcyBCYXIKKi8KLnByb2Nlc3MtYmFyIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA1cHg7CiAgbWFyZ2luLXRvcDogMTJweDsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLnByb2Nlc3MtYmFyIC5iYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgaGVpZ2h0OiA1cHg7CiAgei1pbmRleDogMjsKfQoucHJvY2Vzcy1iYXIgLmJhci1iZyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIGhlaWdodDogNXB4OwogIHotaW5kZXg6IDE7CiAgb3BhY2l0eTogMC4yOwogIHdpZHRoOiAxMDAlOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxNi4gUmFkaW8KKi8KLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl0gewogIGRpc3BsYXk6IG5vbmU7Cn0KLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjNDM1OTY2Owp9Ci5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwogIC1tb3otb3BhY2l0eTogMTsKICAta2h0bWwtb3BhY2l0eTogMTsKICBvcGFjaXR5OiAxOwp9Ci5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdOmRpc2FibGVkICsgbGFiZWwgewogIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT02MCkiOwogIC1tb3otb3BhY2l0eTogMC42OwogIC1raHRtbC1vcGFjaXR5OiAwLjY7CiAgb3BhY2l0eTogMC42Owp9Ci5yYWRpbyBsYWJlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmctbGVmdDogMjVweDsKfQoucmFkaW8gbGFiZWw6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxcHg7CiAgbGVmdDogMHB4OwogIHdpZHRoOiAxN3B4OwogIGhlaWdodDogMTdweDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKfQoucmFkaW8gbGFiZWw6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgLW1vei1vcGFjaXR5OiAwOwogIC1raHRtbC1vcGFjaXR5OiAwOwogIG9wYWNpdHk6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNHB4OwogIGxlZnQ6IDNweDsKICB3aWR0aDogMTFweDsKICBoZWlnaHQ6IDExcHg7CiAgYmFja2dyb3VuZDogIzQzNTk2NjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KLnJhZGlvLnByaW1hcnkgbGFiZWw6YWZ0ZXIgewogIGJhY2tncm91bmQ6ICMzMDRmZmU7Cn0KLnJhZGlvLnN1Y2Nlc3MgbGFiZWw6YWZ0ZXIgewogIGJhY2tncm91bmQ6ICMwMGJmNGY7Cn0KLnJhZGlvLmluZm8gbGFiZWw6YWZ0ZXIgewogIGJhY2tncm91bmQ6ICMwMGFlZmY7Cn0KLnJhZGlvLndhcm5pbmcgbGFiZWw6YWZ0ZXIgewogIGJhY2tncm91bmQ6ICNmYmJjMDU7Cn0KLnJhZGlvLmRhbmdlciBsYWJlbDphZnRlciB7CiAgYmFja2dyb3VuZDogI2VhNDMzNTsKfQoucmFkaW8ucHVycGxlIGxhYmVsOmFmdGVyIHsKICBiYWNrZ3JvdW5kOiAjNWI2OWJjOwp9Ci5yYWRpby5waW5rIGxhYmVsOmFmdGVyIHsKICBiYWNrZ3JvdW5kOiAjZmY4YWNjOwp9Ci5yYWRpby5pbnZlcnNlIGxhYmVsOmFmdGVyIHsKICBiYWNrZ3JvdW5kOiAjMjEyMTIxOwp9Ci5yYWRpby5wcmltYXJ5IGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjMzA0ZmZlOwp9Ci5yYWRpby5zdWNjZXNzIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjMDBiZjRmOwp9Ci5yYWRpby5pbmZvIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjMDBhZWZmOwp9Ci5yYWRpby53YXJuaW5nIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjZmJiYzA1Owp9Ci5yYWRpby5kYW5nZXIgaW5wdXRbdHlwZT0icmFkaW8iXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBib3JkZXItY29sb3I6ICNlYTQzMzU7Cn0KLnJhZGlvLnB1cnBsZSBpbnB1dFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUgewogIG9yZGVyLWNvbG9yOiAjNWI2OWJjOwp9Ci5yYWRpby5waW5rIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjZmY4YWNjOwp9Ci5yYWRpby5pbnZlcnNlIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYm9yZGVyLWNvbG9yOiAjMjEyMTIxOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxNy4gU2VhcmNoIEZvcm0KKi8KLnNlYXJjaGZvcm0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgcGFkZGluZzogMTNweCAwcHggMTNweCAwcHg7Cn0KLnNlYXJjaGZvcm0gLmlucHV0LXNlYXJjaCB7CiAgYm9yZGVyOiBub25lOwogIHdpZHRoOiAxOTBweDsKICBoZWlnaHQ6IDM0cHg7CiAgcGFkZGluZzogN3B4IDQwcHggN3B4IDIwcHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiAjNTA1NDU4OwogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzMHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogMzBweDsKICBib3JkZXItcmFkaXVzOiAzMHB4Owp9Ci5zZWFyY2hmb3JtIC5pbnB1dC1zZWFyY2g6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5zZWFyY2hmb3JtIC5pbnB1dC1zZWFyY2g6LW1vei1pbnB1dC1wbGFjZWhvbGRlciB7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLnNlYXJjaGZvcm0gLmlucHV0LXNlYXJjaDo6LW1vei1pbnB1dC1wbGFjZWhvbGRlciB7CiAgY29sb3I6ICM5OTk5OTk7Cn0KLnNlYXJjaGZvcm0gLmlucHV0LXNlYXJjaDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjOTk5OTk5Owp9Ci5zZWFyY2hmb3JtIC5idXR0b24tc2VhcmNoIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAyMnB4OwogIHJpZ2h0OiAxMHB4OwogIGNvbG9yOiAjNDM1OTY2OwogIHotaW5kZXg6IDEwOwogIGJhY2tncm91bmQ6IG5vbmU7CiAgb3V0bGluZTogbm9uZTsKICBib3JkZXI6IG5vbmU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogIC5zZWFyY2hmb3JtIC5idXR0b24tc2VhcmNoOmhvdmVyIHsKICAgIGNvbG9yOiAjMzA0ZmZlOwogIH0KfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMTguIFN0YXRpc3RpY3MgQm94CiovCi5zdGF0aXN0aWNzLWJveCB7CiAgcGFkZGluZy10b3A6IDE0cHg7CiAgbWluLWhlaWdodDogODBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnN0YXRpc3RpY3MtYm94LndpdGgtaWNvbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmctbGVmdDogODBweDsKICB0ZXh0LWFsaWduOiByaWdodDsKfQouc3RhdGlzdGljcy1ib3gud2l0aC1pY29uIC5pY28gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgd2lkdGg6IDgwcHg7CiAgaGVpZ2h0OiA4MHB4OwogIGZvbnQtc2l6ZTogNzBweDsKICBsaW5lLWhlaWdodDogODBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnN0YXRpc3RpY3MtYm94LndpdGgtaWNvbiAuaWNvLnNtYWxsIHsKICBmb250LXNpemU6IDQycHg7Cn0KLnN0YXRpc3RpY3MtYm94IC5jb3VudGVyIHsKICBtYXJnaW4tdG9wOiAwcHg7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9Ci5zdGF0aXN0aWNzLWJveCAudGV4dCB7CiAgY29sb3I6ICNhYWIyYmQ7CiAgbWFyZ2luOiAwcHg7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjE5LiBTd2l0Y2gKKi8KLnN3aXRjaCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQouc3dpdGNoIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIGRpc3BsYXk6IG5vbmU7Cn0KLnN3aXRjaCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUgewogIGJhY2tncm91bmQ6ICM0MzU5NjY7CiAgYm9yZGVyLWNvbG9yOiAjNDM1OTY2Owp9Ci5zd2l0Y2ggaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YWZ0ZXIgewogIGxlZnQ6IDE0cHg7Cn0KLnN3aXRjaCBsYWJlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmctbGVmdDogNDBweDsKICBmb250LXdlaWdodDogNDAwOwogIGN1cnNvcjogcG9pbnRlcjsKICBtYXJnaW46IDBweDsKICBtaW4taGVpZ2h0OiAyMHB4Owp9Ci5zd2l0Y2ggbGFiZWw6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICB3aWR0aDogMzBweDsKICBoZWlnaHQ6IDE4cHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMXB4OwogIGxlZnQ6IDBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogOHB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBiYWNrZ3JvdW5kOiAjZjFmMWYxOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwp9Ci5zd2l0Y2ggbGFiZWw6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIHdpZHRoOiAxNnB4OwogIGhlaWdodDogMTZweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMnB4OwogIGxlZnQ6IDBweDsKICB6LWluZGV4OiAxMDsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgLW1vei1ib3gtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpOwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQouc3dpdGNoLnByaW1hcnkgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjMzA0ZmZlOwogIGJvcmRlci1jb2xvcjogIzMwNGZmZTsKfQouc3dpdGNoLnN1Y2Nlc3MgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjMDBiZjRmOwogIGJvcmRlci1jb2xvcjogIzAwYmY0ZjsKfQouc3dpdGNoLmluZm8gaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjMDBhZWZmOwogIGJvcmRlci1jb2xvcjogIzAwYWVmZjsKfQouc3dpdGNoLndhcm5pbmcgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHsKICBiYWNrZ3JvdW5kOiAjZmJiYzA1OwogIGJvcmRlci1jb2xvcjogI2ZiYmMwNTsKfQouc3dpdGNoLmRhbmdlciBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUgewogIGJhY2tncm91bmQ6ICNlYTQzMzU7CiAgYm9yZGVyLWNvbG9yOiAjZWE0MzM1Owp9Ci5zd2l0Y2gucHVycGxlIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYmFja2dyb3VuZDogIzViNjliYzsKICBib3JkZXItY29sb3I6ICM1YjY5YmM7Cn0KLnN3aXRjaC5waW5rIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYmFja2dyb3VuZDogI2ZmOGFjYzsKICBib3JkZXItY29sb3I6ICNmZjhhY2M7Cn0KLnN3aXRjaC5pbnZlcnNlIGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7CiAgYmFja2dyb3VuZDogIzIxMjEyMTsKICBib3JkZXItY29sb3I6ICMyMTIxMjE7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwLiBUYWJzCiovCi50YWItY29udGVudCB7CiAgcGFkZGluZzogMTVweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci10b3A6IG5vbmU7Cn0KLnRhYi1oZWFkZXIgewogIHBhZGRpbmc6IDE1cHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQoudGFiLWhlYWRlciAubmF2YmFyIHsKICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgYm9yZGVyOiBub25lOwogIG1pbi1oZWlnaHQ6IGF1dG87Cn0KLnRhYi1oZWFkZXIucGlsbCB7CiAgYm9yZGVyOiBub25lOwogIHBhZGRpbmc6IDBweDsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjEuIFRpbWVwaWNrZQoqLwouYm9vdHN0cmFwLXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRkIGE6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGNvbG9yOiAjMTg4YWUyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouYm9vdHN0cmFwLXRpbWVwaWNrZXItd2lkZ2V0IHRhYmxlIHRkIGlucHV0IHsKICBib3JkZXI6IG5vbmU7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIyLiBUaXRsZQoqLwoucGFnZS10aXRsZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbjogMHB4OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogNzVweDsKICBmb250LXdlaWdodDogNTAwOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMy4gVXNlciBJbmZvCiovCi51c2VyLWluZm8gLmF2YXRhciB7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IDc4cHg7Cn0KLnVzZXItaW5mbyAuYXZhdGFyIGltZyB7CiAgYm9yZGVyOiAzcHggc29saWQgI2ZmZmZmZjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggMHB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjI1KTsKICAtbW96LWJveC1zaGFkb3c6IDBweCAwcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjUpOwogIGJveC1zaGFkb3c6IDBweCAwcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjUpOwp9Ci51c2VyLWluZm8gLm5hbWUsCi51c2VyLWluZm8gcCwKLnVzZXItaW5mbyAudGV4dC1jdXN0b20gewogIGRpc3BsYXk6IGJsb2NrOwogIG92ZXJmbG93OiBoaWRkZW47CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoudXNlci1pbmZvIC50ZXh0LWN1c3RvbSB7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQoudXNlci1pbmZvIC5uYW1lIHsKICBtYXJnaW46IDBweCAwcHggNXB4IDBweDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjJweDsKfQoudXNlci1pbmZvIC5yaWdodC1jb250ZW50IHsKICBtYXJnaW4tbGVmdDogOTBweDsKfQoudXNlci1pbmZvIHAgewogIGZvbnQtc2l6ZTogMTNweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLnVzZXItaW5mbyBhIHsKICBjb2xvcjogIzI5NjJmZjsKICBmb250LXNpemU6IDEzcHg7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjI0LiBXaWRnZXQgU3RhdAoqLwoud2lkZ2V0LXN0YXQgewogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIHRleHQtYWxpZ246IHJpZ2h0Owp9Ci53aWRnZXQtc3RhdCAuY291bnRlciB7CiAgcGFkZGluZy10b3A6IDEwcHg7CiAgbWFyZ2luLXRvcDogMHB4OwogIG1hcmdpbi1ib3R0b206IDBweDsKICBjb2xvcjogIzQzNGE1NDsKfQoud2lkZ2V0LXN0YXQgLnBlcmNlbnQgewogIGZsb2F0OiBsZWZ0OwogIHBhZGRpbmc6IDBweCAxMHB4IDBweCAxMHB4OwogIG1hcmdpbi10b3A6IDIwcHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGNvbG9yOiAjZmZmZmZmOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoud2lkZ2V0LXN0YXQgLnBlcmNlbnQgaSB7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG1hcmdpbi1yaWdodDogNHB4Owp9Ci53aWRnZXQtc3RhdCAubGVmdC1jb250ZW50IHsKICBmbG9hdDogbGVmdDsKfQoud2lkZ2V0LXN0YXQgLnJpZ2h0LWNvbnRlbnQgewogIG1hcmdpbi1sZWZ0OiAxMzBweDsKfQoud2lkZ2V0LXN0YXQgLnRleHQgewogIGNvbG9yOiAjYWFiMmJkOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjUuIFdpZGdldCBTdGF0IENoYXJ0CiovCi53aWRnZXQtc3RhdC1jaGFydCB7CiAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLndpZGdldC1zdGF0LWNoYXJ0IC5jMTAwIHsKICBtYXJnaW46IDBweDsKfQoud2lkZ2V0LXN0YXQtY2hhcnQgLmNvdW50ZXIgewogIHBhZGRpbmctdG9wOiAxMHB4OwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiAwcHg7Cn0KLndpZGdldC1zdGF0LWNoYXJ0IC5yaWdodC1jb250ZW50IHsKICBtYXJnaW4tbGVmdDogODBweDsKfQoud2lkZ2V0LXN0YXQtY2hhcnQgLnRleHQgewogIGNvbG9yOiAjYWFiMmJkOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBmb250LXdlaWdodDogNjAwOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyNi4gTWlzYwoqLwouZm9ybS1pbmxpbmUgLmNoZWNrYm94IGxhYmVsLAouZm9ybS1pbmxpbmUgLnJhZGlvIGxhYmVsIHsKICBwYWRkaW5nLWxlZnQ6IDI1cHg7Cn0KLmxhYmVsIHsKICBwYWRkaW5nOiAuMmVtIC42ZW0gLjJlbTsKICBmb250LXdlaWdodDogNDAwOwp9Ci50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aCwKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGggewogIHBhZGRpbmc6IDlweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVsIHsKICAgIHBhZGRpbmctdG9wOiAxMnB4OwogIH0KfQoudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyIHsKICBvdXRsaW5lOiBub25lOwp9Ci5saXN0LWdyb3VwLWl0ZW0sCi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQsCi5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogMHB4OwogIGJvcmRlci1jb2xvcjogcmdiYSgxMjAsIDEzMCwgMTQwLCAwLjEzKTsKfQoudGFibGUtcHVyY2hhc2VzIGEgewogIGNvbG9yOiAjY2NjOwp9Ci50YWJsZS1wdXJjaGFzZXMgYTpob3ZlciB7CiAgY29sb3I6ICM5OTk7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjI3LiBNYWlsYm94CiovCi5ib3ggewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2UxZTNlNTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAtbW96LWJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEpOwp9Ci5ib3guY29sbGFwc2VkLWJveCAuYm94LWJvZHksCi5ib3guY29sbGFwc2VkLWJveCAuYm94LWZvb3RlciB7CiAgZGlzcGxheTogbm9uZTsKfQouYm94IC5uYXYtc3RhY2tlZCA+IGxpIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y0ZjRmNDsKICBtYXJnaW46IDBweDsKfQouYm94IC5uYXYtc3RhY2tlZCA+IGxpOmxhc3Qtb2YtdHlwZSB7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsKfQouYm94IC5ib3JkZXItcmlnaHQgewogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmNGY0ZjQ7Cn0KLmJveCAuYm9yZGVyLWxlZnQgewogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Y0ZjRmNDsKfQouYm94LmJveC1zb2xpZCB7CiAgYm9yZGVyLXRvcDogbm9uZTsKfQouYm94LmJveC1zb2xpZCA+IC5ib3gtaGVhZGVyIC5idG4uYnRuLWRlZmF1bHQgewogIGJhY2tncm91bmQ6IG5vbmU7Cn0KLmJveC5ib3gtc29saWQgPiAuYm94LWhlYWRlciAuYnRuOmhvdmVyLAouYm94LmJveC1zb2xpZCA+IC5ib3gtaGVhZGVyIGE6aG92ZXIgewogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsKfQouYm94LmJveC1zb2xpZC5ib3gtZGVmYXVsdCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2QyZDZkZTsKfQouYm94LmJveC1zb2xpZC5ib3gtZGVmYXVsdCA+IC5ib3gtaGVhZGVyIHsKICBjb2xvcjogIzQ0NDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDJkNmRlOwp9Ci5ib3guYm94LXNvbGlkLmJveC1kZWZhdWx0ID4gLmJveC1oZWFkZXIgYSwKLmJveC5ib3gtc29saWQuYm94LWRlZmF1bHQgPiAuYm94LWhlYWRlciAuYnRuIHsKICBjb2xvcjogIzQ0NDsKfQouYm94LmJveC1zb2xpZC5ib3gtcHJpbWFyeSB7CiAgYm9yZGVyOiAxcHggc29saWQgIzMwNGZmZTsKfQouYm94LmJveC1zb2xpZC5ib3gtcHJpbWFyeSA+IC5ib3gtaGVhZGVyIHsKICBjb2xvcjogI2ZmZmZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzA0ZmZlOwp9Ci5ib3guYm94LXNvbGlkLmJveC1wcmltYXJ5ID4gLmJveC1oZWFkZXIgYSwKLmJveC5ib3gtc29saWQuYm94LXByaW1hcnkgPiAuYm94LWhlYWRlciAuYnRuIHsKICBjb2xvcjogI2ZmZmZmZjsKfQouYm94LmJveC1zb2xpZC5ib3gtc3VjY2VzcyB7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwYmY0ZjsKfQouYm94LmJveC1zb2xpZC5ib3gtc3VjY2VzcyA+IC5ib3gtaGVhZGVyIHsKICBjb2xvcjogI2ZmZmZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZjRmOwp9Ci5ib3guYm94LXNvbGlkLmJveC1zdWNjZXNzID4gLmJveC1oZWFkZXIgYSwKLmJveC5ib3gtc29saWQuYm94LXN1Y2Nlc3MgPiAuYm94LWhlYWRlciAuYnRuIHsKICBjb2xvcjogI2ZmZmZmZjsKfQouYm94LmJveC1zb2xpZC5ib3gtaW5mbyB7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwYWVmZjsKfQouYm94LmJveC1zb2xpZC5ib3gtaW5mbyA+IC5ib3gtaGVhZGVyIHsKICBjb2xvcjogI2ZmZmZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBhZWZmOwp9Ci5ib3guYm94LXNvbGlkLmJveC1pbmZvID4gLmJveC1oZWFkZXIgYSwKLmJveC5ib3gtc29saWQuYm94LWluZm8gPiAuYm94LWhlYWRlciAuYnRuIHsKICBjb2xvcjogI2ZmZmZmZjsKfQouYm94LmJveC1zb2xpZC5ib3gtd2FybmluZyB7CiAgYm9yZGVyOiAxcHggc29saWQgI2ZiYmMwNTsKfQouYm94LmJveC1zb2xpZC5ib3gtd2FybmluZyA+IC5ib3gtaGVhZGVyIHsKICBjb2xvcjogI2ZmZmZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJiYzA1Owp9Ci5ib3guYm94LXNvbGlkLmJveC13YXJuaW5nID4gLmJveC1oZWFkZXIgYSwKLmJveC5ib3gtc29saWQuYm94LXdhcm5pbmcgPiAuYm94LWhlYWRlciAuYnRuIHsKICBjb2xvcjogI2ZmZmZmZjsKfQouYm94LmJveC1zb2xpZC5ib3gtZGFuZ2VyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZWE0MzM1Owp9Ci5ib3guYm94LXNvbGlkLmJveC1kYW5nZXIgPiAuYm94LWhlYWRlciB7CiAgY29sb3I6ICNmZmZmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VhNDMzNTsKfQouYm94LmJveC1zb2xpZC5ib3gtZGFuZ2VyID4gLmJveC1oZWFkZXIgYSwKLmJveC5ib3gtc29saWQuYm94LWRhbmdlciA+IC5ib3gtaGVhZGVyIC5idG4gewogIGNvbG9yOiAjZmZmZmZmOwp9Ci5ib3guYm94LXNvbGlkLmJveC1wdXJwbGUgewogIGJvcmRlcjogMXB4IHNvbGlkICM1YjY5YmM7Cn0KLmJveC5ib3gtc29saWQuYm94LXB1cnBsZSA+IC5ib3gtaGVhZGVyIHsKICBjb2xvcjogI2ZmZmZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWI2OWJjOwp9Ci5ib3guYm94LXNvbGlkLmJveC1wdXJwbGUgPiAuYm94LWhlYWRlciBhLAouYm94LmJveC1zb2xpZC5ib3gtcHVycGxlID4gLmJveC1oZWFkZXIgLmJ0biB7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLmJveC5ib3gtc29saWQuYm94LXBpbmsgewogIGJvcmRlcjogMXB4IHNvbGlkICNmZjhhY2M7Cn0KLmJveC5ib3gtc29saWQuYm94LXBpbmsgPiAuYm94LWhlYWRlciB7CiAgY29sb3I6ICNmZmZmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOGFjYzsKfQouYm94LmJveC1zb2xpZC5ib3gtcGluayA+IC5ib3gtaGVhZGVyIGEsCi5ib3guYm94LXNvbGlkLmJveC1waW5rID4gLmJveC1oZWFkZXIgLmJ0biB7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLmJveC5ib3gtc29saWQuYm94LWludmVyc2UgewogIGJvcmRlcjogMXB4IHNvbGlkICMyMTIxMjE7Cn0KLmJveC5ib3gtc29saWQuYm94LWludmVyc2UgPiAuYm94LWhlYWRlciB7CiAgY29sb3I6ICNmZmZmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjEyMTsKfQouYm94LmJveC1zb2xpZC5ib3gtaW52ZXJzZSA+IC5ib3gtaGVhZGVyIGEsCi5ib3guYm94LXNvbGlkLmJveC1pbnZlcnNlID4gLmJveC1oZWFkZXIgLmJ0biB7CiAgY29sb3I6ICNmZmZmZmY7Cn0KLmJveC5ib3gtc29saWRbY2xhc3MqPSdiZyddID4gLmJveC1oZWFkZXIgewogIGNvbG9yOiAjZmZmZmZmOwp9Ci5ib3ggPiAuYm94LWhlYWRlciA+IC5ib3gtdG9vbHMgLmJ0biB7CiAgYm9yZGVyOiBub25lOwogIGJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKfQouYm94IC5ib3gtaGVhZGVyOmJlZm9yZSwKLmJveCAuYm94LWJvZHk6YmVmb3JlLAouYm94IC5ib3gtZm9vdGVyOmJlZm9yZSwKLmJveCAuYm94LWhlYWRlcjphZnRlciwKLmJveCAuYm94LWJvZHk6YWZ0ZXIsCi5ib3ggLmJveC1mb290ZXI6YWZ0ZXIgewogIGNvbnRlbnQ6ICIiOwogIGRpc3BsYXk6IHRhYmxlOwp9Ci5ib3ggLmJveC1oZWFkZXI6YWZ0ZXIsCi5ib3ggLmJveC1ib2R5OmFmdGVyLAouYm94IC5ib3gtZm9vdGVyOmFmdGVyIHsKICBjbGVhcjogYm90aDsKfQouYm94IC5ib3gtaGVhZGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMTRweCAyMHB4OwogIGNvbG9yOiAjNDQ0Owp9Ci5ib3ggLmJveC1oZWFkZXIud2l0aC1ib3JkZXIgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjJmNGY2Owp9Ci5ib3ggLmJveC1oZWFkZXIgPiAuZmEsCi5ib3ggLmJveC1oZWFkZXIgPiAuZ2x5cGhpY29uLAouYm94IC5ib3gtaGVhZGVyIC5ib3gtdGl0bGUsCi5ib3ggLmJveC1oZWFkZXIgLmljbyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMjBweDsKICBtYXJnaW46IDBweDsKICBtYXJnaW4tcmlnaHQ6IDVweDsKICBmb250LXdlaWdodDogNTAwOwp9Ci5ib3ggLmJveC1oZWFkZXIgPiAuYm94LXRvb2xzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA3cHg7CiAgcmlnaHQ6IDIwcHg7Cn0KLmJveCAuYm94LWhlYWRlciA+IC5ib3gtdG9vbHMgW2RhdGEtdG9nZ2xlPSJ0b29sdGlwIl0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouYm94IC5ib3gtaGVhZGVyID4gLmJveC10b29scy5wdWxsLXJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICByaWdodDogMHB4OwogIGxlZnQ6IGF1dG87Cn0KLmJveCAuYm94LWhlYWRlciAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wgewogIHdpZHRoOiAzMDBweDsKICBoZWlnaHQ6IDM1cHg7Cn0KLmJveCAuYm94LWhlYWRlciAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2sgewogIHdpZHRoOiAzNXB4OwogIGhlaWdodDogMzVweDsKICBsaW5lLWhlaWdodDogMzVweDsKICBjb2xvcjogIzY1NmQ3ODsKfQouYm94LmNvbGxhcHNlZC1ib3ggLmJveC1oZWFkZXIud2l0aC1ib3JkZXIgewogIGJvcmRlci1ib3R0b206IG5vbmU7Cn0KLmJ0bi1tYWlsLW1haW4gewogIGhlaWdodDogNTBweDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDM0cHg7Cn0KLmJ0bi1ib3gtdG9vbCB7CiAgcGFkZGluZzogNXB4OwogIGZvbnQtc2l6ZTogMTJweDsKICBiYWNrZ3JvdW5kOiBub25lOwogIGNvbG9yOiAjOTdhMGIzOwp9Ci5idG4tYm94LXRvb2wuYnRuOmFjdGl2ZSB7CiAgYm94LXNoYWRvdzogbm9uZTsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwp9Ci5vcGVuIC5idG4tYm94LXRvb2wsCi5idG4tYm94LXRvb2w6aG92ZXIgewogIGNvbG9yOiAjNjA2Yzg0Owp9Ci5ib3gtYm9keSB7CiAgcGFkZGluZzogMHB4IDIwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDBweDsKICAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiAwcHg7CiAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMHB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDNweDsKICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiAzcHg7CiAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7Cn0KLmJveC1ib2R5ID4gLnRhYmxlIHsKICBtYXJnaW4tYm90dG9tOiAwcHg7Cn0KLmJveC1ib2R5IC5uYXYgbGkuYWN0aXZlIGEgewogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgY29sb3I6ICMzMDRmZmU7Cn0KLmJveC1ib2R5IC5uYXYgYSB7CiAgcGFkZGluZzogMTNweCAwOwogIGNvbG9yOiAjMjEyMTIxOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjVweDsKICBmb250LXdlaWdodDogNTAwOwp9Ci5ib3gtYm9keSAubmF2IGE6aG92ZXIgewogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgY29sb3I6ICMzMDRmZmU7Cn0KLmJveC1ib2R5IC5uYXYgLmZhIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDM1cHg7CiAgbGluZS1oZWlnaHQ6IDI2cHg7CiAgZm9udC1zaXplOiAxN3B4Owp9Ci5ib3gtYm9keSAubmF2IC5sYWJlbC10ZXh0LXJpZ2h0IHsKICBjb2xvcjogIzY1NmQ3ODsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDI1cHg7Cn0KLmJveC1ib2R5IC5uYXYgLmxhYmVsLXJpZ2h0IHsKICBwYWRkaW5nOiAwcHggN3B4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjBweDsKICBtYXJnaW4tdG9wOiAycHg7CiAgcGFkZGluZy10b3A6IDJweDsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgZm9udC13ZWlnaHQ6IDQwMDsKfQouYm94LWZvb3RlciB7CiAgcGFkZGluZzogMTBweCAyMHB4OwogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDBweDsKICAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiAwcHg7CiAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMHB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDNweDsKICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiAzcHg7CiAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7Cn0KLm1haWxib3gtbWVzc2FnZXMgLnRhYmxlIHsKICBtYXJnaW4tYm90dG9tOiAwOwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgYm9yZGVyLXNwYWNpbmc6IDBweCAxcHg7Cn0KLm1haWxib3gtbWVzc2FnZXMgLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkIHsKICBib3JkZXItdG9wOiBub25lOwp9Ci5tYWlsYm94LW1lc3NhZ2VzIC50YWJsZSAubWFpbGJveC1zdWJqZWN0IHsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIG1heC13aWR0aDogNTAwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoubWFpbGJveC1tZXNzYWdlcyAubWFpbGJveC1zdGFyIGEgewogIGNvbG9yOiAjY2NkMWQ5OwogIGZvbnQtc2l6ZTogMTdweDsKfQoubWFpbGJveC1tZXNzYWdlcyAubWFpbGJveC1uYW1lIGEgewogIGNvbG9yOiAjMjEyMTIxOwogIGZvbnQtd2VpZ2h0OiA1MDA7Cn0KLm1haWxib3gtbWVzc2FnZXMgLm1haWxib3gtc3ViamVjdCB7CiAgY29sb3I6ICM5MGE0YWU7Cn0KLm1haWxib3gtbWVzc2FnZXMgLm1haWxib3gtc3ViamVjdCBzcGFuIHsKICBjb2xvcjogIzY1NmQ3ODsKICBmb250LXdlaWdodDogNTAwOwp9Ci5tYWlsYm94LW1lc3NhZ2VzIC50YWJsZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtb2YtdHlwZShvZGQpIHsKICBiYWNrZ3JvdW5kOiAjZjVmN2ZhOwp9Ci5tYWlsYm94LW1lc3NhZ2VzIC51bnJlYWQgPiB0ZDpmaXJzdC1vZi10eXBlIHsKICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMzMDRmZmU7Cn0KLm1haWxib3gtbWVzc2FnZXMgLnVucmVhZCAubWFpbGJveC1zdWJqZWN0IHNwYW4gewogIGNvbG9yOiAjMjEyMTIxOwp9Ci5tYWlsYm94LW1lc3NhZ2VzIHRyID4gdGQ6Zmlyc3Qtb2YtdHlwZSB7CiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoubWFpbGJveC1yZWFkLWluZm8gewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjRmNGY0OwogIHBhZGRpbmc6IDEwcHggMjBweDsKfQoubWFpbGJveC1yZWFkLWluZm8gaDMgewogIGZvbnQtc2l6ZTogMjBweDsKICBtYXJnaW46IDBweDsKfQoubWFpbGJveC1yZWFkLWluZm8gaDUgewogIHBhZGRpbmc6IDVweCAwcHggMHB4IDBweDsKICBtYXJnaW46IDBweDsKfQoubWFpbGJveC1yZWFkLXRpbWUgewogIGNvbG9yOiAjOTk5OwogIGZvbnQtc2l6ZTogMTNweDsKfQoubWFpbGJveC1jb250cm9scyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmNGY0ZjQ7CiAgcGFkZGluZzogOHB4IDIwcHggMXB4IDE1cHg7Cn0KLm1haWxib3gtY29udHJvbHM6YWZ0ZXIgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIGNsZWFyOiBib3RoOwp9Ci5tYWlsYm94LWNvbnRyb2xzIC5idG4gewogIHBhZGRpbmc6IDA7CiAgbGluZS1oZWlnaHQ6IDM1cHg7CiAgaGVpZ2h0OiAzNXB4OwogIG1pbi13aWR0aDogODBweDsKICBtYXJnaW46IDAgNXB4IDdweDsKICBmb250LXNpemU6IDE4cHg7CiAgY29sb3I6ICM2NTZkNzg7CiAgYmFja2dyb3VuZDogI2Y1ZjdmYTsKICBib3JkZXItY29sb3I6ICNjY2QxZDk7Cn0KLm1haWxib3gtY29udHJvbHMgLmJ0bi1ncm91cCB7CiAgZm9udC1zaXplOiAwOwp9Ci5tYWlsYm94LWNvbnRyb2xzIC5idG4tZ3JvdXAgLmJ0biB7CiAgbWluLXdpZHRoOiA0MHB4OwogIGNvbG9yOiAjYWFiMmJkOwogIGZvbnQtc2l6ZTogMjZweDsKICBiYWNrZ3JvdW5kOiAjZjVmN2ZhOwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2QxZDk7CiAgbWFyZ2luOiAwIWltcG9ydGFudDsKICB6LWluZGV4OiAxIWltcG9ydGFudDsKfQoubWFpbGJveC1jb250cm9scyAuYnRuLWdyb3VwIC5idG46Zmlyc3QtY2hpbGQgewogIGJvcmRlci1yaWdodDogbm9uZTsKfQoubWFpbGJveC1jb250cm9scyAuaW5ib3gtdGV4dCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMzVweDsKICBtYXJnaW4tcmlnaHQ6IDhweDsKfQpAbWVkaWEgKG1heC13aWR0aDogOTI5cHgpIHsKICAubWFpbGJveC1jb250cm9scyAucHVsbC1yaWdodCB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQp9Ci5pY2hlY2tib3hfc3F1YXJlLWJsdWUgewogIHRyYW5zZm9ybTogc2NhbGUoMC43KTsKfQoubWFpbGJveC1yZWFkLW1lc3NhZ2UgewogIHBhZGRpbmc6IDEwcHggMjBweDsKfQoubWFpbGJveC1mb290ZXIgewogIHBhZGRpbmc6IDEwcHggMjBweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y0ZjRmNDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2Y0ZjRmNDsKfQoubWFpbGJveC1hdHRhY2htZW50cyB7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBwYWRkaW5nOiAwcHg7Cn0KLm1haWxib3gtYXR0YWNobWVudHMgbGkgewogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAyMDBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZWVlOwogIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9Ci5tYWlsYm94LWF0dGFjaG1lbnQtbmFtZSB7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBjb2xvcjogIzY2NjsKfQoubWFpbGJveC1hdHRhY2htZW50LWljb24sCi5tYWlsYm94LWF0dGFjaG1lbnQtaW5mbywKLm1haWxib3gtYXR0YWNobWVudC1zaXplIHsKICBkaXNwbGF5OiBibG9jazsKfQoubWFpbGJveC1hdHRhY2htZW50LWluZm8gewogIHBhZGRpbmc6IDEwcHg7CiAgYmFja2dyb3VuZDogI2Y0ZjRmNDsKfQoubWFpbGJveC1hdHRhY2htZW50LXNpemUgewogIGNvbG9yOiAjOTk5OwogIGZvbnQtc2l6ZTogMTJweDsKfQoubWFpbGJveC1hdHRhY2htZW50LWljb24gewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LXNpemU6IDY1cHg7CiAgY29sb3I6ICM2NjY7CiAgcGFkZGluZzogMjBweCAxMHB4IDIwcHggMTBweDsKfQoubWFpbGJveC1hdHRhY2htZW50LWljb24uaGFzLWltZyB7CiAgcGFkZGluZzogMHB4Owp9Ci5tYWlsYm94LWF0dGFjaG1lbnQtaWNvbi5oYXMtaW1nID4gaW1nIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyOC4gTG9naW4sIFJlZ2lzdGVyLCAuLi4gRm9ybQoqLwojc2luZ2xlLXdyYXBwZXIgewogIG1pbi1oZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvc2F0aXZhLnBuZycpIHRvcCBjZW50ZXIgcmVwZWF0OwogIG92ZXJmbG93OiBoaWRkZW47CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMHB4IDE1cHggMHB4IDE1cHg7Cn0KLmZybS1zaW5nbGUgewogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogNDAwcHg7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiA2MHB4IGF1dG8gNjBweDsKICBmbG9hdDogbm9uZTsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmZybS1zaW5nbGU6YmVmb3JlLAouZnJtLXNpbmdsZTphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICB6LWluZGV4OiAxMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICB0cmFuc2Zvcm06IHJvdGF0ZSgyZGVnKTsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDJkZWcpOwogIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMmRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMmRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDJkZWcpOwogIGJveC1zaGFkb3c6IDAgMCAxcHggMCAjY2NjOwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCAwICNjY2M7CiAgLW1vei1ib3gtc2hhZG93OiAwIDAgMXB4IDAgI2NjYzsKfQouZnJtLXNpbmdsZTphZnRlciB7CiAgdHJhbnNmb3JtOiByb3RhdGUoMWRlZyk7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDFkZWcpOwogIC1vLXRyYW5zZm9ybTogcm90YXRlKDFkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxZGVnKTsKfQouZnJtLXNpbmdsZSAuaW5zaWRlIHsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAyMHB4OwogIHotaW5kZXg6IDIwOwogIGJveC1zaGFkb3c6IDAgMCAxcHggMCAjY2NjOwogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDFweCAwICNjY2M7CiAgLW1vei1ib3gtc2hhZG93OiAwIDAgMXB4IDAgI2NjYzsKfQouZnJtLXNpbmdsZSAudGl0bGUgewogIG1hcmdpbi1ib3R0b206IDVweDsKICBmb250LWZhbWlseTogIlBvcHBpbnMiLCBzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTogMjBweDsKICBsaW5lLWhlaWdodDogMzRweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGNvbG9yOiAjNDM1OTY2OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouZnJtLXNpbmdsZSAuYS1saW5rIHsKICBjb2xvcjogIzk5OTsKfQouZnJtLXNpbmdsZSAuYS1saW5rOmhvdmVyIHsKICBjb2xvcjogIzQzNTk2NjsKfQouZnJtLXNpbmdsZSAuZnJtLXRpdGxlIHsKICBjb2xvcjogIzk5OTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxNnB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4Owp9Ci5mcm0tc2luZ2xlIC5mcm0taW5wdXQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5mcm0tc2luZ2xlIC5mcm0taW5wdXQgLmZybS1pbnAgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogNDBweDsKICBwYWRkaW5nOiAwcHg7CiAgcGFkZGluZy1sZWZ0OiAzMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAzOHB4OwogIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzk5OTsKfQouZnJtLXNpbmdsZSAuZnJtLWlucHV0IC5mcm0taW5wOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICMzMDRmZmU7CiAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9Ci5mcm0tc2luZ2xlIC5mcm0taW5wdXQgLmZybS1pbnA6Zm9jdXMgKyAuZnJtLWljbyB7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAtbW96LW9wYWNpdHk6IDA7CiAgLWtodG1sLW9wYWNpdHk6IDA7CiAgb3BhY2l0eTogMDsKICB0cmFuc2Zvcm06IHNjYWxlKDAuOCwgMC44KTsKICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC44LCAwLjgpOwogIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjgsIDAuOCk7CiAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwLjgsIDAuOCk7CiAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMC44LCAwLjgpOwp9Ci5mcm0tc2luZ2xlIC5mcm0taW5wdXQgLmZybS1pY28gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAzcHg7CiAgd2lkdGg6IDMwcHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiA0MHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBjb2xvcjogIzk5OTsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQouZnJtLXNpbmdsZSAuY2hlY2tib3ggewogIG1hcmdpbjogMHB4Owp9Ci5mcm0tc2luZ2xlIC5hLWxpbmsgaSB7CiAgbWFyZ2luLXJpZ2h0OiA1cHg7Cn0KLmZybS1zaW5nbGUgLmZybS1zdWJtaXQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMzZweDsKICBib3JkZXI6IG5vbmU7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKICBjb2xvcjogI2ZmZmZmZjsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAuZnJtLXNpbmdsZSAuZnJtLXN1Ym1pdDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjMWUzZGVkOwogIH0KfQouZnJtLXNpbmdsZSAuZnJtLXN1Ym1pdCBpIHsKICBtYXJnaW4tbGVmdDogNXB4Owp9Ci5mcm0tc2luZ2xlIC5mcm0tZm9vdGVyIHsKICBwYWRkaW5nOiAyMHB4IDBweCAwcHggMHB4OwogIG1hcmdpbi10b3A6IDE1cHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7CiAgY29sb3I6ICM5OTk7Cn0KLmZybS1zaW5nbGUgLmF2YXRhciB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwcHggYXV0byAyMHB4OwogIGZsb2F0OiBub25lOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogNzBweDsKICBoZWlnaHQ6IDcwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogMTAwJTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmZybS1zaW5nbGUgLmljby1lbWFpbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwcHggYXV0byAyMHB4OwogIGZsb2F0OiBub25lOwogIHdpZHRoOiA4MHB4OwogIGhlaWdodDogODBweDsKfQouZnJtLXNpbmdsZSAudHh0LWxvZ2luLXdpdGggewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIGNvbG9yOiAjOTk5Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyOS4gNDA0LDUwMCBQYWdlCiovCiNwYWdlLTQwNCB7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzLzQwNC5qcGcnKSB0b3AgY2VudGVyIHJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwcHggMTVweCAwcHggMTVweDsKfQojcGFnZS00MDQgLmNvbnRlbnQgewogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogNjAwcHg7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwcHggYXV0byAwcHg7CiAgZmxvYXQ6IG5vbmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwp9CiNwYWdlLTQwNCBwIHsKICBwYWRkaW5nOiAzMHB4IDBweCAzMHB4IDBweDsKICBjb2xvcjogIzc3NzsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgbWFyZ2luOiAwcHg7Cn0KQG1lZGlhIChtYXgtaGVpZ2h0OiAzNTlweCkgewogICNwYWdlLTQwNCB7CiAgICBtaW4taGVpZ2h0OiAxMDAlOwogICAgaGVpZ2h0OiBhdXRvOwogIH0KICAjcGFnZS00MDQgLmNvbnRlbnQgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgdG9wOiAwcHg7CiAgICBtYXJnaW4tdG9wOiA2MHB4OwogICAgbWFyZ2luLWJvdHRvbTogNjBweDsKICB9Cn0KLnRpdGxlLW9uLWRlc2t0b3AgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudGl0bGUtb24tZGVza3RvcCAudGl0bGUgewogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBmb250LXNpemU6IDI4cHg7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIGxlZnQ6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnRpdGxlLW9uLW1vYmlsZSB7CiAgZGlzcGxheTogbm9uZTsKfQpAbWVkaWEgKG1heC13aWR0aDogNjQ5cHgpIHsKICAudGl0bGUtb24tZGVza3RvcCB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KICAudGl0bGUtb24tbW9iaWxlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMzAuIFByb2plY3RzIFBhZ2UKKi8KLnByai1oZWFkZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtaW4taGVpZ2h0OiA2NHB4OwogIHBhZGRpbmc6IDAgMTMwcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOGU4ZTg7Cn0KLnByai1oZWFkZXIgLmJ0bi1zdWJtaXQtcHJqIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMHB4OwogIHJpZ2h0OiAwcHg7Cn0KLnByai1oZWFkZXIgLnJlc3VsdC1jb3VudCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTBweDsKICBsZWZ0OiAwcHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4Owp9Ci5wcmotaGVhZGVyIC5maWx0ZXJzIHsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDBweDsKICBmb250LXNpemU6IDBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9Ci5wcmotaGVhZGVyIC5maWx0ZXJzIGxpIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIG1hcmdpbjogMHB4IDVweCAwcHggNXB4Owp9Ci5wcmotaGVhZGVyIC5maWx0ZXJzIGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiAjNDM1OTY2OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAxMHB4IDEwcHggMjBweDsKfQoucHJqLWhlYWRlciAuZmlsdGVycyBhOmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAycHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogLTFweDsKICBsZWZ0OiAwcHg7CiAgYmFja2dyb3VuZDogIzE4OGFlMjsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MCkiOwogIC1tb3otb3BhY2l0eTogMDsKICAta2h0bWwtb3BhY2l0eTogMDsKICBvcGFjaXR5OiAwOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwp9Ci5wcmotaGVhZGVyIC5maWx0ZXJzIGE6aG92ZXIsCi5wcmotaGVhZGVyIC5maWx0ZXJzIGEuYWN0aXZlIHsKICBjb2xvcjogIzE4OGFlMjsKfQoucHJqLWhlYWRlciAuZmlsdGVycyBhOmhvdmVyOmJlZm9yZSwKLnByai1oZWFkZXIgLmZpbHRlcnMgYS5hY3RpdmU6YmVmb3JlIHsKICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgLW1vei1vcGFjaXR5OiAxOwogIC1raHRtbC1vcGFjaXR5OiAxOwogIG9wYWNpdHk6IDE7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDk5OXB4KSB7CiAgLnByai1oZWFkZXIgewogICAgcGFkZGluZzogNjVweCAwIDA7CiAgfQp9Ci5wcmotaXRlbSB7CiAgZGlzcGxheTogYmxvY2s7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQ6ICNmZmZmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgI2U5ZTllOTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKICBib3JkZXItcmFkaXVzOiAycHg7Cn0KLnByai1pdGVtIC50b3AtcHJvamVjdC1zZWN0aW9uIHsKICBoZWlnaHQ6IDIyMHB4OwogIHBhZGRpbmc6IDQwcHggMjBweCAyMHB4IDIwcHg7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWU5ZTk7Cn0KLnByai1pdGVtIC50b3AtcHJvamVjdC1zZWN0aW9uIGgzIHsKICBtYXJnaW46IDIwcHggMHB4IDBweCAwcHg7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiAjM2EzYTNhOwp9Ci5wcmotaXRlbSAudG9wLXByb2plY3Qtc2VjdGlvbiAubWV0YSB7CiAgZm9udC1zaXplOiAxM3B4OwogIGNvbG9yOiAjYjJiMmIyOwp9Ci5wcmotaXRlbSAudG9wLXByb2plY3Qtc2VjdGlvbiAubWV0YSBzcGFuIHsKICBjb2xvcjogIzc2NzY3NjsKfQoucHJqLWl0ZW0gLnByb2plY3QtaWNvbiB7CiAgaGVpZ2h0OiA5MHB4Owp9Ci5wcmotaXRlbSAucHJvamVjdC1pY29uIGltZyB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwcHggYXV0byAwcHg7CiAgZmxvYXQ6IG5vbmU7CiAgbWF4LXdpZHRoOiA4MHB4OwogIGhlaWdodDogYXV0bzsKfQoucHJqLWl0ZW0gLmJvdHRvbS1wcm9qZWN0LXNlY3Rpb24gewogIHBhZGRpbmc6IDE1cHggMjBweCAxNXB4IDIwcHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGNvbG9yOiAjNzY3Njc2Owp9Ci5wcmotaXRlbSAuYm90dG9tLXByb2plY3Qtc2VjdGlvbjphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDBweDsKICBjbGVhcjogYm90aDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5wcmotaXRlbSAuYm90dG9tLXByb2plY3Qtc2VjdGlvbiAucG9pbnRzIHsKICBmbG9hdDogbGVmdDsKICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KLnByai1pdGVtIC5ib3R0b20tcHJvamVjdC1zZWN0aW9uIC52aWV3cyB7CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4Owp9Ci5wcmotaXRlbSAuYm90dG9tLXByb2plY3Qtc2VjdGlvbiAuZmVlZGFibGUtdGltZSB7CiAgZmxvYXQ6IHJpZ2h0Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozMS4gVGFzayBCb2FyZAoqLwoudGFzay1pdGVtIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHBhZGRpbmc6IDEwcHggMTVweCAxMHB4IDE1cHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2U5ZTllOTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KLnRhc2staXRlbSAudGl0bGUgewogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgY29sb3I6ICM0MzU5NjY7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogIC50YXNrLWl0ZW0gLnRpdGxlOmhvdmVyIHsKICAgIGNvbG9yOiAjMTg4YWUyOwogIH0KfQoudGFzay1pdGVtIC5tZXRhcyB7CiAgcGFkZGluZy10b3A6IDVweDsKICBjb2xvcjogI2JiYjsKfQoudGFzay1pdGVtIC5tZXRhczphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDBweDsKICBjbGVhcjogYm90aDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci50YXNrLWl0ZW0gLm1ldGFzIC5tZXRhIHsKICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgZmxvYXQ6IGxlZnQ7Cn0KLnRhc2staXRlbSAubWV0YXMgLmljbyB7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tcmlnaHQ6IDRweDsKfQoudGFzay1pdGVtIC5wcm9ncmVzcyB7CiAgbWFyZ2luLWJvdHRvbTogNXB4OwogIGhlaWdodDogMTBweDsKICBtYXJnaW4tdG9wOiAxMHB4Owp9Ci50YXNrLWl0ZW0gLnRhc2staWNvbiB7CiAgZm9udC1zaXplOiA0MHB4OwogIGxpbmUtaGVpZ2h0OiA1MHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KLnRhc2stdXNlciB7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IGF1dG87Cn0KLnRhc2stdXNlciAubmFtZSB7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9Ci51c2VyLWFzc2lnbi1saXN0IGxpIHsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Ci51c2VyLWFzc2lnbi1saXN0IC5hdmF0YXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAzNHB4OwogIGhlaWdodDogMzRweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7Cn0KLnVzZXItYXNzaWduLWxpc3QgLmFkZF9uZXcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKfQoudXNlci1hdHRhY2gtbGlzdCAudGh1bWJzIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiA1cHg7CiAgd2lkdGg6IDEwMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNlOWU5ZTk7Cn0KLnVzZXItYXR0YWNoLWxpc3QgLmFkZF9uZXcgewogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKfQouZnJtLWNvbW1lbnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAxMHB4IDBweCAxMHB4IDU1cHg7Cn0KLmZybS1jb21tZW50IC5hdmF0YXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDRweDsKICBsZWZ0OiAwcHg7CiAgd2lkdGg6IDQ0cHg7CiAgaGVpZ2h0OiA0NHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozMi4gUHJvZmlsZQoqLwoucHJvZmlsZS1hdmF0YXIgLmJ0biB7CiAgbWFyZ2luOiAwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwcHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwcHg7CiAgYm9yZGVyLXJhZGl1czogMHB4OwogIGNvbG9yOiAjZmZmOwp9Ci5wcm9maWxlLWF2YXRhciAuYnRuLWZyaWVuZCB7CiAgYmFja2dyb3VuZDogIzAwYWVmZjsKfQoucHJvZmlsZS1hdmF0YXIgLmJ0bi1pbmJveCB7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKfQoucHJvZmlsZS1mcmllbmRzLWxpc3QgbGkgewogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KLnByb2ZpbGUtZnJpZW5kcy1saXN0IGxpIC5hdmF0YXIgewogIHdpZHRoOiA0OHB4OwogIGhlaWdodDogNDhweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmRvdC1saXN0IHsKICBsaXN0LXN0eWxlOiBub25lOwogIHBhZGRpbmc6IDBweDsKICBtYXJnaW46IDBweDsKfQouZG90LWxpc3QgbGkgewogIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgcGFkZGluZzogMHB4IDBweCAwcHggMzBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRvdC1saXN0IGxpOmJlZm9yZSB7CiAgY29udGVudDogIlxmMTBjIjsKICBmb250LWZhbWlseTogJ0ZvbnRBd2Vzb21lJzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgbGVmdDogMHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjBweDsKfQouZG90LWxpc3QgLmRhdGUgewogIGZvbnQtc2l6ZTogMTJweDsKICBjb2xvcjogIzkzOWJhMjsKICBkaXNwbGF5OiBibG9jazsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMzMuIENvbnRhY3QgTGlzdAoqLwouYm94LWNvbnRhY3QgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tdG9wOiA2MHB4OwogIHBhZGRpbmc6IDYwcHggMjBweCAyMHB4IDIwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogOHB4OwogIGJvcmRlci1yYWRpdXM6IDhweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMzBweDsKfQouYm94LWNvbnRhY3QgLmF2YXRhciB7CiAgd2lkdGg6IDEwOHB4OwogIGhlaWdodDogMTA4cHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTU0cHg7CiAgYm9yZGVyOiA0cHggc29saWQgI2U3ZTZlNjsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwMCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgbGVmdDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7Cn0KLmJveC1jb250YWN0IC5uYW1lIHsKICBmb250LXNpemU6IDI0cHg7CiAgbWFyZ2luLWJvdHRvbTogMHB4Owp9Ci5ib3gtY29udGFjdCAuam9iIHsKICBmb250LXNpemU6IDE2cHg7CiAgY29sb3I6ICNhOGE4YTg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBwYWRkaW5nLWJvdHRvbTogMTVweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQouYm94LWNvbnRhY3QgLmpvYjpiZWZvcmUgewogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDBweDsKICBsZWZ0OiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICB3aWR0aDogNzVweDsKICBoZWlnaHQ6IDJweDsKICBiYWNrZ3JvdW5kOiAjZmJiYzA1Owp9Ci5ib3gtY29udGFjdCBwIHsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDIycHg7Cn0KLmNvbnRhY3Qtc29jaWFsIGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMjBweDsKICBsaW5lLWhlaWdodDogNDBweDsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMDAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogMTAwJTsKICBib3JkZXItcmFkaXVzOiAxMDAlOwogIGNvbG9yOiAjZmZmOwp9Ci5jb250YWN0LXNvY2lhbCAuZmEtcGhvbmUgewogIGJhY2tncm91bmQ6ICMwMGFlZmY7Cn0KLmNvbnRhY3Qtc29jaWFsIC5mYS1lbnZlbG9wZSB7CiAgYmFja2dyb3VuZDogIzAwYmY0ZjsKfQouY29udGFjdC1zb2NpYWwgLmZhLWZhY2Vib29rIHsKICBiYWNrZ3JvdW5kOiAjM2I1OTk5Owp9Ci5jb250YWN0LXNvY2lhbCAuZmEtdHdpdHRlciB7CiAgYmFja2dyb3VuZDogIzU1YWNlZTsKfQouY29udGFjdC1zb2NpYWwgLmZhLWdvb2dsZS1wbHVzIHsKICBiYWNrZ3JvdW5kOiAjZGQ0YjM5Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozNC4gUHJpY2luZyBQbGFuCiovCi5wcmljaW5nLXRhYmxlIHsKICBkaXNwbGF5OiB0YWJsZTsKICBtYXJnaW4tdG9wOiAzMHB4OwogIHdpZHRoOiAxMDAlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoucHJpY2luZy10YWJsZTphZnRlciB7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDBweDsKICBjbGVhcjogYm90aDsKICBvdmVyZmxvdzogaGlkZGVuOwp9Ci5wcmljaW5nLXRhYmxlIC5wcmljaW5nLXRhYmxlLXJvdyB7CiAgZGlzcGxheTogdGFibGUtcm93Owp9Ci5wcmljaW5nLXRhYmxlIC5jb2wgewogIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAyMCU7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoucHJpY2luZy10YWJsZSAuY29sOmJlZm9yZSB7CiAgY29udGVudDogIiI7CiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApIjsKICAtbW96LW9wYWNpdHk6IDA7CiAgLWtodG1sLW9wYWNpdHk6IDA7CiAgb3BhY2l0eTogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAtN3B4OwogIGxlZnQ6IDBweDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDdweDsKICBiYWNrZ3JvdW5kOiAjZmZjZDAzOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwp9Ci5wcmljaW5nLXRhYmxlIC5jb2wtZmlyc3Q6YmVmb3JlIHsKICBkaXNwbGF5OiBub25lOwp9Ci5wcmljaW5nLXRhYmxlIC5jb2wtZmlyc3QgLnRoZWFkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZTllYWViOwogIGJhY2tncm91bmQ6IG5vbmU7CiAgY29sb3I6ICMzMDRmZmU7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBmb250LXNpemU6IDE4cHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBiYWNrZ3JvdW5kOiAjZmZmOwp9Ci5wcmljaW5nLXRhYmxlIC5jb2wtZmlyc3QgLnRkIHsKICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlOWVhZWI7Cn0KLnByaWNpbmctdGFibGUgLnRoZWFkIHsKICBoZWlnaHQ6IDExMHB4OwogIHBhZGRpbmc6IDEzcHg7CiAgYmFja2dyb3VuZDogIzMwNGZmZTsKICBjb2xvcjogI2ZmZjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5wcmljaW5nLXRhYmxlIC50aGVhZCBoNCB7CiAgbWFyZ2luOiAwcHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnByaWNpbmctdGFibGUgLnRoZWFkLmJnLW1haW4tMiB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNGZmZTsKfQoucHJpY2luZy10YWJsZSAudGhlYWQuYmctYmx1ZS0xIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQ0NGY5Owp9Ci5wcmljaW5nLXRhYmxlIC50aGVhZC5iZy1ibHVlLTIgewogIGJhY2tncm91bmQtY29sb3I6ICMxZTNkZWY7Cn0KLnByaWNpbmctdGFibGUgLnRoZWFkLmJnLWJsdWUtMyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzMwNGZmZTsKfQoucHJpY2luZy10YWJsZSAucHJpY2UgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMHB4IDQ1cHggMHB4IDE1cHg7Cn0KLnByaWNpbmctdGFibGUgLnByaWNlIC5udW1iZXIgewogIGZvbnQtc2l6ZTogNDVweDsKICBsaW5lLWhlaWdodDogNTBweDsKICBmb250LXdlaWdodDogNzAwOwp9Ci5wcmljaW5nLXRhYmxlIC5wcmljZSAuY3VycmVuY3kgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiA1MHB4OwogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLnByaWNpbmctdGFibGUgLnByaWNlIC5zbWFsbF9udW1iZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMHB4OwogIHRvcDogNXB4OwogIHdpZHRoOiA0MHB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgZm9udC1zaXplOiAxOHB4Owp9Ci5wcmljaW5nLXRhYmxlIC5wcmljZSAudGltZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMzBweDsKICByaWdodDogMHB4OwogIHdpZHRoOiA0MHB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiAjZmNkMjBiOwogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLnByaWNpbmctdGFibGUgLnRkIHsKICBsZWZ0OiAyNHB4OwogIGhlaWdodDogNjJweDsKICBwYWRkaW5nOiA3cHg7CiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U5ZWFlYjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWFlYjsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDQ4cHg7CiAgY29sb3I6ICMyMjIyMjI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQ6ICNmZmY7Cn0KLnByaWNpbmctdGFibGUgLnRkOmxhc3QtY2hpbGQgewogIGhlaWdodDogMTAwcHg7Cn0KLnByaWNpbmctdGFibGUgLnRkIC5mYS10aW1lcyB7CiAgY29sb3I6ICM2NjY2NjY7CiAgZm9udC1zaXplOiAyNHB4OwogIGxpbmUtaGVpZ2h0OiA0OHB4Owp9Ci5wcmljaW5nLXRhYmxlIC50ZCAuZmEtY2hlY2sgewogIGNvbG9yOiAjMzA0ZmZlOwogIGZvbnQtc2l6ZTogMjRweDsKICBsaW5lLWhlaWdodDogNDhweDsKfQoucHJpY2luZy10YWJsZSAudGQgLmJ0bi1vcmRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMjVweDsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kOiAjMjEyMTIxOwogIGZvbnQtc2l6ZTogMTJweDsKICBsaW5lLWhlaWdodDogNDBweDsKICBmb250LXdlaWdodDogNzAwOwogIG1hcmdpbjogMjNweCAwcHggMjNweCAwcHg7Cn0KLnByaWNpbmctdGFibGUgLmNlbnRlci12IHsKICB0b3A6IDUwJTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoucHJpY2luZy10YWJsZSAuY29sLWZlYXR1cmVkIHsKICB0b3A6IC0xMHB4OwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDFweCAxMnB4IDBweCByZ2JhKDM0LCAzNCwgMzQsIDAuMjUpOwogIC1tb3otYm94LXNoYWRvdzogMHB4IDFweCAxMnB4IDBweCByZ2JhKDM0LCAzNCwgMzQsIDAuMjUpOwogIGJveC1zaGFkb3c6IDBweCAxcHggMTJweCAwcHggcmdiYSgzNCwgMzQsIDM0LCAwLjI1KTsKfQoucHJpY2luZy10YWJsZSAuY29sLWZlYXR1cmVkIC50aGVhZCB7CiAgaGVpZ2h0OiAxMjBweDsKICBwYWRkaW5nLXRvcDogMjNweDsKfQoucHJpY2luZy10YWJsZSAuY29sLWZlYXR1cmVkIC50ZDpsYXN0LWNoaWxkIHsKICBoZWlnaHQ6IDExMHB4Owp9Ci5wcmljaW5nLXRhYmxlIC5jb2wtZmVhdHVyZWQgLnRkIC5idG4tb3JkZXIgewogIGJhY2tncm91bmQ6ICMzMDRmZmU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogIC5wcmljaW5nLXRhYmxlIC50ZCAuYnRuLW9yZGVyOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICMzMDRmZmU7CiAgfQogIC5wcmljaW5nLXRhYmxlIC5jb2w6aG92ZXI6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsKICAucHJpY2luZy10YWJsZSAudGhlYWQgaDQgewogICAgZm9udC1zaXplOiAxNHB4OwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsKICAucHJpY2luZy10YWJsZSAuY29sLWZpcnN0IHsKICAgIGRpc3BsYXk6IG5vbmUhaW1wb3J0YW50OwogIH0KICAucHJpY2luZy10YWJsZSAuY29sOm50aC1jaGlsZCgyKSAudGQgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRTlFQUVCOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsKICAucHJpY2luZy10YWJsZSAuY29sIHsKICAgIHdpZHRoOiAxMDAlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDAgYXV0byA1MHB4OwogICAgbWF4LXdpZHRoOiAzMDBweDsKICB9CiAgLnByaWNpbmctdGFibGUgLmNvbDpsYXN0LWNoaWxkIHsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC5wcmljaW5nLXRhYmxlIC5jb2wgLnRkIHsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0U5RUFFQjsKICB9CiAgLnByaWNpbmctdGFibGUgLnRoZWFkIGg0IHsKICAgIGZvbnQtc2l6ZTogMThweDsKICB9Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjM1LiBJbnZvaWNlCiovCi5pbnZvaWNlLWJveCB7CiAgbWF4LXdpZHRoOiA4MDBweDsKICBtYXJnaW46IGF1dG87CiAgcGFkZGluZzogMzBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZWVlOwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBjb2xvcjogIzU1NTsKICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIC1tb3otYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKfQouaW52b2ljZS1ib3ggLmxvZ28gewogIGNvbG9yOiAjNDM1OTY2OwogIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KLmludm9pY2UtYm94IC5sb2dvIHNwYW4gewogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KLmludm9pY2UtYm94IHRhYmxlIHsKICB3aWR0aDogMTAwJTsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5pbnZvaWNlLWJveCB0YWJsZSB0ZCB7CiAgcGFkZGluZzogNXB4OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KLmludm9pY2UtYm94IHRhYmxlIHRyIHRkOm50aC1jaGlsZCgyKSB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLmludm9pY2UtYm94IHRhYmxlIHRyLnRvcCB0YWJsZSB0ZCB7CiAgcGFkZGluZy1ib3R0b206IDIwcHg7Cn0KLmludm9pY2UtYm94IHRhYmxlIHRyLnRvcCB0YWJsZSB0ZC50aXRsZSB7CiAgZm9udC1zaXplOiA0NXB4OwogIGxpbmUtaGVpZ2h0OiA0NXB4OwogIGNvbG9yOiAjMzMzOwp9Ci5pbnZvaWNlLWJveCB0YWJsZSB0ci5pbmZvcm1hdGlvbiB0YWJsZSB0ZCB7CiAgcGFkZGluZy1ib3R0b206IDQwcHg7Cn0KLmludm9pY2UtYm94IHRhYmxlIHRyLmhlYWRpbmcgdGQgewogIGJhY2tncm91bmQ6ICNlZWU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7CiAgZm9udC13ZWlnaHQ6IDcwMDsKfQouaW52b2ljZS1ib3ggdGFibGUgdHIuZGV0YWlscyB0ZCB7CiAgcGFkZGluZy1ib3R0b206IDIwcHg7Cn0KLmludm9pY2UtYm94IHRhYmxlIHRyLml0ZW0gdGQgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Ci5pbnZvaWNlLWJveCB0YWJsZSB0ci5pdGVtLmxhc3QgdGQgewogIGJvcmRlci1ib3R0b206IG5vbmU7Cn0KLmludm9pY2UtYm94IHRhYmxlIHRyLnRvdGFsIHRkOm50aC1jaGlsZCgyKSB7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNlZWU7CiAgZm9udC13ZWlnaHQ6IDcwMDsKfQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7CiAgLmludm9pY2UtYm94IHRhYmxlIHRyLmluZm9ybWF0aW9uIHRhYmxlIHRkLAogIC5pbnZvaWNlLWJveCB0YWJsZSB0ci50b3AgdGFibGUgdGQgewogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjM2LiBHYWxsZXJ5CiovCi5pdGVtLWdhbGxlcnkgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIGJvcmRlcjogMTBweCBzb2xpZCAjZmZmZmZmOwogIGJhY2tncm91bmQ6ICMyMjI7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggMHB4IDVweCAwcHggcmdiYSgxNCwgMTQsIDE0LCAwLjEpOwogIC1tb3otYm94LXNoYWRvdzogMHB4IDBweCA1cHggMHB4IHJnYmEoMTQsIDE0LCAxNCwgMC4xKTsKICBib3gtc2hhZG93OiAwcHggMHB4IDVweCAwcHggcmdiYSgxNCwgMTQsIDE0LCAwLjEpOwp9Ci5pdGVtLWdhbGxlcnk6YmVmb3JlIHsKICBjb250ZW50OiAiXGYwNjUiOwogIGZvbnQtZmFtaWx5OiAnRm9udEF3ZXNvbWUnOwogIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgLW1vei1vcGFjaXR5OiAwOwogIC1raHRtbC1vcGFjaXR5OiAwOwogIG9wYWNpdHk6IDA7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAxMHB4OwogIGJvdHRvbTogNXB4OwogIGNvbG9yOiAjYTVhNWE1OwogIHotaW5kZXg6IDEwOwogIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1vLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwp9Ci5pdGVtLWdhbGxlcnkgaW1nIHsKICBtaW4td2lkdGg6IDEwMCU7CiAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtbXMtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7Cn0KLml0ZW0tZ2FsbGVyeSAudGl0bGUgewogIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKSI7CiAgLW1vei1vcGFjaXR5OiAwOwogIC1raHRtbC1vcGFjaXR5OiAwOwogIG9wYWNpdHk6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNTAlOwogIGxlZnQ6IDBweDsKICB6LWluZGV4OiAyMDsKICB3aWR0aDogMTAwJTsKICBtYXJnaW46IDBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY29sb3I6ICNmZmZmZmY7CiAgZm9udC1zaXplOiAxOHB4OwogIGxpbmUtaGVpZ2h0OiAyOHB4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTQwJSk7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNDAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC00MCUpOwogIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC00MCUpOwogIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNDAlKTsKICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC1tcy10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKfQpAbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7CiAgLml0ZW0tZ2FsbGVyeTpob3ZlcjpiZWZvcmUgewogICAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCkiOwogICAgLW1vei1vcGFjaXR5OiAxOwogICAgLWtodG1sLW9wYWNpdHk6IDE7CiAgICBvcGFjaXR5OiAxOwogIH0KICAuaXRlbS1nYWxsZXJ5OmhvdmVyIC50aXRsZSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7CiAgICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKSI7CiAgICAtbW96LW9wYWNpdHk6IDE7CiAgICAta2h0bWwtb3BhY2l0eTogMTsKICAgIG9wYWNpdHk6IDE7CiAgfQogIC5pdGVtLWdhbGxlcnk6aG92ZXIgaW1nIHsKICAgIC1tcy1maWx0ZXI6ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0zNSkiOwogICAgLW1vei1vcGFjaXR5OiAwLjM1OwogICAgLWtodG1sLW9wYWNpdHk6IDAuMzU7CiAgICBvcGFjaXR5OiAwLjM1OwogIH0KfQovKiAuaXRlbS1nYWxsZXJ5ICovCi5pc290b3BlLWZpbHRlciAuZmlsdGVyLWNvbnRyb2xzIHsKICBwYWRkaW5nLXRvcDogOHB4OwogIG1hcmdpbi1ib3R0b206IDQzcHg7CiAgZm9udC1zaXplOiAwcHg7CiAgcGFkZGluZy1sZWZ0OiAwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5pc290b3BlLWZpbHRlciAuZmlsdGVyLWNvbnRyb2xzIGxpIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogMTBweCAxNXB4IDBweCAxNXB4Owp9Ci5pc290b3BlLWZpbHRlciAuZmlsdGVyLWNvbnRyb2xzIGEgewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbG9yOiAjNDM1OTY2OwogIGZvbnQtc2l6ZTogMTZweDsKICBsaW5lLWhlaWdodDogMjZweDsKICBmb250LXdlaWdodDogNTAwOwp9CkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAuaXNvdG9wZS1maWx0ZXIgLmZpbHRlci1jb250cm9scyBhOmhvdmVyIHsKICAgIGNvbG9yOiAjMzA0ZmZlOwogIH0KfQouaXNvdG9wZS1maWx0ZXIgLmZpbHRlci1jb250cm9scyAuanNfX2FjdGl2ZSB7CiAgY29sb3I6ICMzMDRmZmU7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjM3LiBNb2RhbAoqLwoubW9kYWwtY29udGVudCB7CiAgcGFkZGluZzogMCAxNXB4OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDA7Cn0KLm1vZGFsLWRpYWxvZyB7CiAgbWF4LXdpZHRoOiAxMDAlOwp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozOC4gRm9ybSBDb250cm9sCiovCi5mb3JtLWNvbnRyb2wgewogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmc6IDlweCAxNHB4OwogIGhlaWdodDogNDVweDsKICBib3JkZXItY29sb3I6ICNjY2QxZDk7CiAgYm94LXNoYWRvdzogbm9uZTsKICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgLW1vei1ib3gtc2hhZG93OiBub25lOwogIGJvcmRlci1yYWRpdXM6IDJweDsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsKICAtbW96LWJvcmRlci1yYWRpdXM6IDJweDsKfQouZm9ybS1jb250cm9sLmlucHV0LXNtIHsKICBwYWRkaW5nOiAwIDEwcHg7CiAgaGVpZ2h0OiAzMHB4Owp9Ci5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzAwYWVmZiAhaW1wb3J0YW50OwogIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCAxMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpICFpbXBvcnRhbnQ7CiAgLW1vei1ib3gtc2hhZG93OiAwcHggMHB4IDEycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMikgIWltcG9ydGFudDsKICBib3gtc2hhZG93OiAwcHggMHB4IDEycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMikgIWltcG9ydGFudDsKfQp0ZXh0YXJlYS5mb3JtLWNvbnRyb2wgewogIGhlaWdodDogMTA1cHg7Cn0KLmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2wgewogIGJvcmRlci1jb2xvcjogIzAwYmY0ZjsKfQouaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjZmJiYzA1Owp9Ci5oYXMtZXJyb3IgLmZvcm0tY29udHJvbCB7CiAgYm9yZGVyLWNvbG9yOiAjZWE0MzM1Owp9Ci5oYXMtaW52ZXJzZSAuZm9ybS1jb250cm9sIHsKICBib3JkZXItY29sb3I6ICM0MzU5NjY7Cn0KLmZvcm0td2l0aC1pY29uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmZvcm0td2l0aC1pY29uIC5pdGVtLWljb24tcmlnaHQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMDsKICB0b3A6IDUwJTsKICB3aWR0aDogNTBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAzMHB4OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKfQouZm9ybS13aXRoLWljb24gLmZvcm0tY29udHJvbCB7CiAgcGFkZGluZy1yaWdodDogNTBweDsKfQouaGFzLXN1Y2Nlc3MgLmZvcm0td2l0aC1pY29uIC5pdGVtLWljb24gewogIGNvbG9yOiAjMDBiZjRmOwp9Ci5oYXMtd2FybmluZyAuZm9ybS13aXRoLWljb24gLml0ZW0taWNvbiB7CiAgY29sb3I6ICNmYmJjMDU7Cn0KLmhhcy1lcnJvciAuZm9ybS13aXRoLWljb24gLml0ZW0taWNvbiB7CiAgY29sb3I6ICNlYTQzMzU7Cn0KLmhhcy1pbnZlcnNlIC5mb3JtLXdpdGgtaWNvbiAuaXRlbS1pY29uIHsKICBjb2xvcjogIzQzNTk2NjsKfQouaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biB7CiAgbWluLXdpZHRoOiA1MHB4OwogIHBhZGRpbmc6IDdweCAxMHB4OwogIGZvbnQtc2l6ZTogMThweDsKICBsaW5lLWhlaWdodDogMjlweDsKICBjb2xvcjogIzY1NmQ3ODsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NkMWQ5OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogIC1tb3otYm94LXNoYWRvdzogbm9uZTsKICBoZWlnaHQ6IDQ1cHg7Cn0KLmlucHV0LWdyb3VwLWJ0biA+IC5idG4ubm8tYm9yZGVyIHsKICBib3JkZXI6IG5vbmU7CiAgbGluZS1oZWlnaHQ6IDMxcHg7Cn0KLmlucHV0LWdyb3VwLWJ0biA+IC5idG4gc3BhbiB7CiAgZm9udC1zaXplOiAxNHB4Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQozOS4gUmV2aWV3cyBXaWRnZXQKKi8KLnJldmlldy1saXN0IHsKICBjb2xvcjogI2FkYWRhZDsKICBmb250LXNpemU6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7Cn0KLnJldmlldy1pdGVtIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4OwogIHBhZGRpbmctYm90dG9tOiAxNXB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Ci5yZXZpZXctaXRlbSAudG9wIHsKICBwYWRkaW5nLWJvdHRvbTogNXB4Owp9Ci5yZXZpZXctaXRlbSAudG9wOmFmdGVyIHsKICBjb250ZW50OiAnJzsKICBjbGVhcjogYm90aDsKICBkaXNwbGF5OiBibG9jazsKfQoucmV2aWV3LWl0ZW0gLnRvcCAubmFtZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1yaWdodDogMTBweDsKICBjb2xvcjogIzQzNTk2NjsKfQoucmV2aWV3LWl0ZW0gLnRvcCAuZGF0ZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5yZXZpZXctaXRlbSAudG9wIC5zdGFyLXJhdGluZyB7CiAgZmxvYXQ6IHJpZ2h0OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDEyOTlweCkgYW5kIChtaW4td2lkdGg6IDExOTlweCkgewogIC5yZXZpZXctaXRlbSAudG9wIC5zdGFyLXJhdGluZyB7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KLnJldmlldy1pdGVtIC5kZXNjIHsKICBmb250LXNpemU6IDEzcHg7CiAgbGluZS1oZWlnaHQ6IDIzcHg7Cn0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQwLiBBY3Rpdml0eSBXaWRnZXQKKi8KLmFjdGl2aXR5LWxpc3QgewogIGNvbG9yOiAjNDM1OTY2OwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KLmFjdGl2aXR5LWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nLWxlZnQ6IDM1cHg7CiAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4Owp9Ci5hY3Rpdml0eS1pdGVtIC5iYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDEwcHg7CiAgd2lkdGg6IDFweDsKfQouYWN0aXZpdHktaXRlbSAuZG90IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IC00cHg7CiAgd2lkdGg6IDlweDsKICBoZWlnaHQ6IDlweDsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7Cn0KLmFjdGl2aXR5LWl0ZW0gLmxhc3QtZG90IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAwOwogIGxlZnQ6IC0ycHg7CiAgd2lkdGg6IDVweDsKICBoZWlnaHQ6IDVweDsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1MCU7Cn0KLmFjdGl2aXR5LWl0ZW0gLmRhdGUgewogIGZvbnQtc2l6ZTogMTJweDsKICBjb2xvcjogI2FkYWRhZDsKfQouYWN0aXZpdHktbGluayB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogOHB4IDEwcHggNXB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBjb2xvcjogIzQzNTk2NjsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNDEuIFRvZG8gV2lkZ2V0CiovCi50b2RvLWxpc3QgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KLnRvZG8taXRlbSB7CiAgcGFkZGluZzogMTVweCAwOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOwp9Ci50b2RvLWl0ZW0gLmNoZWNrYm94IHsKICBtYXJnaW46IDA7Cn0KLnRvZG8taXRlbSAuY2hlY2tib3ggaW5wdXQ6Y2hlY2tlZCArIGxhYmVsIHsKICBjb2xvcjogI2FkYWRhZDsKICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsKfQoudG9kby1mb3JtIHsKICBwYWRkaW5nLXRvcDogMTBweDsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNDIuIFgtRWRpdGFibGUKKi8KLmVkaXRhYmxlZm9ybSBzZWxlY3QuZm9ybS1jb250cm9sLAouZWRpdGFibGVmb3JtIGlucHV0LmZvcm0tY29udHJvbCB7CiAgcGFkZGluZzogNHB4IDEwcHg7CiAgaGVpZ2h0OiAzMnB4Owp9Ci5lZGl0YWJsZWZvcm0gLmJ0bi1zbSB7CiAgaGVpZ2h0OiAzMnB4OwogIHBhZGRpbmc6IDAgMjBweDsKICBsaW5lLWhlaWdodDogMzJweDsKfQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KNDMuIFNwYXJrbGluZSBDaGFydAoqLwouanFzdG9vbHRpcCB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0NC4gU3dlZXRBbGVydAoqLwouc3dlZXQtYWxlcnQgLnNhLWJ1dHRvbi1jb250YWluZXIgYnV0dG9uIHsKICBiYWNrZ3JvdW5kOiAjZTRlN2VhOwogIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI2cHg7CiAgcGFkZGluZzogOHB4IDI1cHg7CiAgYm9yZGVyOiBub25lOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1mYW1pbHk6ICJQb3BwaW5zIjsKICBib3gtc2hhZG93OiBub25lIWltcG9ydGFudDsKICAtbW96LWJveC1zaGFkb3c6IG5vbmUhaW1wb3J0YW50OwogIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZSFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwogIC1tb3otYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5zd2VldC1hbGVydCAuc2EtYnV0dG9uLWNvbnRhaW5lciBidXR0b24uY2FuY2VsIHsKICBiYWNrZ3JvdW5kOiAjZTRlN2VhOwogIGNvbG9yOiAjNDM1OTY2Owp9Ci5zd2VldC1hbGVydCAuc2EtYnV0dG9uLWNvbnRhaW5lciBidXR0b24uY2FuY2VsOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiAjZTRlN2VhOwp9Ci5zd2VldC1hbGVydCAuc2EtYnV0dG9uLWNvbnRhaW5lciBidXR0b24uY29uZmlybSB7CiAgYmFja2dyb3VuZDogI2VhNDMzNTsKfQouc3dlZXQtYWxlcnQudmlzaWJsZSAuc2EtaWNvbi5zYS1zdWNjZXNzIC5zYS1saW5lIHsKICBiYWNrZ3JvdW5kOiAjMDBiZjRmOwp9Ci5zd2VldC1hbGVydC52aXNpYmxlIC5zYS1pY29uLnNhLXdhcm5pbmcgewogIGJvcmRlci1jb2xvcjogI2ZiYmMwNTsKfQouc3dlZXQtYWxlcnQudmlzaWJsZSAuc2EtaWNvbi5zYS1lcnJvciB7CiAgYm9yZGVyLWNvbG9yOiAjZWE0MzM1Owp9Ci5zd2VldC1hbGVydC52aXNpYmxlIC5zYS1pY29uLnNhLWVycm9yIC5zYS1saW5lIHsKICBiYWNrZ3JvdW5kOiAjZWE0MzM1Owp9Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K"}},"time_used":202,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":201,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/percircle/js/percircle.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.345Z","timestamp":1785150870345,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/percircle/js/percircle.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-353\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=kaNcQ2p7tJHUBisLV8O6pNB2qxDNni%2FgOOOLmjazWXaRUPLdc7G%2F1Awv0E8O9tvsbfdV4SXyKBBjbL0FKh7IMQY086gbzSP%2FJ%2FX9oVkPtoobMb7dPNUbaa6Cmw%3D%3D\"}]}\r\ncf-ray: a21b388babd956a2-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"]}],"data":{"size":851,"size_decoded":1190,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text","md5":"932ca2acaa95435fb55b46ef708b1bfd","sha1":"d9c9c51e74bda3e45ac047ec0054cbf85b2fde06","sha256":"804c87bd0e19b92fa12e2c305f028d1798c681a834a347d4a86deb0e4aecb8eb","sha512":"3382902d7e44afd35697ba361cb56ee4d587c172d52876eaf139fccdb887375402647c6485079a1dfafe66affc09674fb424019c851de6efca19f13976d6bc1e","ssdeep":"","tlshash":"0b016be40fcd092e089b29d29ffe989517388751ad03905a67ecad2b23c142c42bed65","first_seen":"2025-12-16T06:43:19.395414Z","last_seen":"2026-07-27T11:25:33.544007Z","times_seen":16,"resource_available":true,"data":"JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgewoJdmFyIHJvdGF0aW9uTXVsdGlwbGllciA9IDMuNjsKCSQoICIuanNfX2NpcmNsZSIgKS5lYWNoKGZ1bmN0aW9uKCkgewoJCS8vIFNhdmUgYWxsIG9mIGl0cyBjbGFzc2VzIGluIGFuIGFycmF5LgoJCXZhciBjbGFzc0xpc3QgPSAkKCB0aGlzICkuYXR0cignY2xhc3MnKS5zcGxpdCgvXHMrLyk7CgkJLy8gSXRlcmF0ZSBvdmVyIHRoZSBhcnJheQoJCWZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NMaXN0Lmxlbmd0aDsgaSsrKSB7CgkJICAgaWYgKGNsYXNzTGlzdFtpXS5tYXRjaCgiXnAiKSkgewoJCQl2YXIgcm90YXRpb25QZXJjZW50YWdlID0gY2xhc3NMaXN0W2ldLnN1YnN0cmluZygxLCBjbGFzc0xpc3RbaV0ubGVuZ3RoKTsKCQkJdmFyIHJvdGF0aW9uRGVncmVlcyA9IHJvdGF0aW9uTXVsdGlwbGllcipyb3RhdGlvblBlcmNlbnRhZ2U7CgkJCSQoJy5jMTAwLnAnK3JvdGF0aW9uUGVyY2VudGFnZSsgJyAuYmFyJykuY3NzKHsKCQkJICAnLXdlYmtpdC10cmFuc2Zvcm0nIDogJ3JvdGF0ZSgnICsgcm90YXRpb25EZWdyZWVzICsgJ2RlZyknLAoJCQkgICctbW96LXRyYW5zZm9ybScgICAgOiAncm90YXRlKCcgKyByb3RhdGlvbkRlZ3JlZXMgKyAnZGVnKScsCgkJCSAgJy1tcy10cmFuc2Zvcm0nICAgICA6ICdyb3RhdGUoJyArIHJvdGF0aW9uRGVncmVlcyArICdkZWcpJywKCQkJICAnLW8tdHJhbnNmb3JtJyAgICAgIDogJ3JvdGF0ZSgnICsgcm90YXRpb25EZWdyZWVzICsgJ2RlZyknLAoJCQkgICd0cmFuc2Zvcm0nICAgICAgICAgOiAncm90YXRlKCcgKyByb3RhdGlvbkRlZ3JlZXMgKyAnZGVnKScKCQkJfSk7CgkJICAgfQoJCX0KCX0pOwp9KTs="}},"time_used":204,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":204,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0021.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.381Z","timestamp":1785150870381,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0021.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-105\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=7fb4EqKl6KlLbcDSGtYO6%2BPQEkRUIyIhmAeS9l%2FDlxAbrOs%2FXTkzNar9psHZTnKxBo2Q095KXQK%2Bi4jOx4U5CkEG7M%2BDWbCjzUbElqrVQhxH%2F%2Bqz75%2BGwiRkqA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bebeb56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 261\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"]}],"data":{"size":261,"size_decoded":1045,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"b237e0a389cd20b3804edecc8e5a7b73","sha1":"b52444f13a0d261ae5066ca8eee750c7a4ce0d47","sha256":"b8c6d6d71681e0a8f5365b4a32b395ae9e50e33d79431f92e56e6576902fbea5","sha512":"e6359189cfb5ad1454e02482e5f64cb16280c2614e42df8e0fb1ea92885c4f02e49f0806ab79a4e0e38473f7c6cca41557a198dcc6ab7023662eaa00a219ab04","ssdeep":"","tlshash":"7dd0970dc89328e0ea4883380f84822682eda3ee82642050900ea1228b6857b8628f8c","first_seen":"2026-05-13T03:42:55.514323Z","last_seen":"2026-07-27T11:25:33.544796Z","times_seen":3,"resource_available":false,"data":"R0lGODlhIAAgALMAAAAAAABzbSVdWiYmJtCeefe1UffRUfm4fvzWsv7+/gAAAAAAAAAAAAAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAASyEMhJqxzD6r0z8FwYgmL5YahZDkiLsKRasUc91K9sDUTt+zndhPcrxmTEw813O6qSRZtw2DskEr6r00TUMhPbVc9rA08v1euBQNCeT9FqeFSNSqc8ts34xtRRd2dQP3NidYF9bAQohVyKjUiPbxMBlQF5i5YBeAEGBgFrep2fkEM1o6CnnqmlH6qrlZ6fiCJLo7K4rEivsbGzSrsHqJ2+uk+8xKi0dAQCBc8C0c8FAmxbEQA7"}},"time_used":204,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":204,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/bootstrap/css/bootstrap.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.581Z","timestamp":1785150870581,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/bootstrap/css/bootstrap.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/assets/styles/style.css\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-1d967\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=hIjsQ349rVMrRY0gmRvLrI3ivXUFT06DaLGAWJF3ljn83HedNgmApcG1M26vzyZ3%2BftqWuYfwJDzQTxuxrebUdBqE0Icw0cCVKd3QhFzKvocmVjqqXjUcew%2FMg%3D%3D\"}]}\r\ncf-ray: a21b388d2bf856a2-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"]}],"data":{"size":121191,"size_decoded":20864,"mime_type":"text/css","magic":"ASCII text, with very long lines (65371)","md5":"8ec233bea37b78f0acad41a550963597","sha1":"ee7b105af8c617a54186661fccde0e17658c555a","sha256":"2be7babdc8c80fc86826363a55f20dd210f9fe3eb9eec8f187bbd34ed12c9776","sha512":"8d00180df05b6374923f5df823ca50d2a0b9ea77676ccf21233b790c24542221e10364b4f07106dffea1d9019de107a3d7a15ac41b5136c121b0915df64978cc","ssdeep":"768:Vy3Gxw//4/QWlJxtQOIuiHlqOm8I4X8OlMuFKbv2ctl2BRYJP7ecQVvH1FS:nw/Q1fIuiHlqOmC8kmbIiPbh","tlshash":"6dc3d7a0f21031ea7323c55a71d0ed872259a153e6664fb7f22f25d88f845cb16b3f1a","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.555657Z","times_seen":34,"resource_available":false,"data":"LyohCiAqIEJvb3RzdHJhcCB2My4zLjcgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE2IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL2h0bWx7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbWVudSxuYXYsc2VjdGlvbixzdW1tYXJ5e2Rpc3BsYXk6YmxvY2t9YXVkaW8sY2FudmFzLHByb2dyZXNzLHZpZGVve2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfWF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7aGVpZ2h0OjB9W2hpZGRlbl0sdGVtcGxhdGV7ZGlzcGxheTpub25lfWF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH1hOmFjdGl2ZSxhOmhvdmVye291dGxpbmU6MH1hYmJyW3RpdGxlXXtib3JkZXItYm90dG9tOjFweCBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfWRmbntmb250LXN0eWxlOml0YWxpY31oMXttYXJnaW46LjY3ZW0gMDtmb250LXNpemU6MmVtfW1hcmt7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOiNmZjB9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdXB7dG9wOi0uNWVtfXN1Yntib3R0b206LS4yNWVtfWltZ3tib3JkZXI6MH1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRkZW59ZmlndXJle21hcmdpbjoxZW0gNDBweH1ocntoZWlnaHQ6MDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9cHJle292ZXJmbG93OmF1dG99Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udDppbmhlcml0O2NvbG9yOmluaGVyaXR9YnV0dG9ue292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIGlucHV0W3R5cGU9YnV0dG9uXSxpbnB1dFt0eXBlPXJlc2V0XSxpbnB1dFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtjdXJzb3I6cG9pbnRlcn1idXR0b25bZGlzYWJsZWRdLGh0bWwgaW5wdXRbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyOjB9aW5wdXR7bGluZS1oZWlnaHQ6bm9ybWFsfWlucHV0W3R5cGU9Y2hlY2tib3hdLGlucHV0W3R5cGU9cmFkaW9dey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9aW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGR9aW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLGlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1maWVsZHNldHtwYWRkaW5nOi4zNWVtIC42MjVlbSAuNzVlbTttYXJnaW46MCAycHg7Ym9yZGVyOjFweCBzb2xpZCBzaWx2ZXJ9bGVnZW5ke3BhZGRpbmc6MDtib3JkZXI6MH10ZXh0YXJlYXtvdmVyZmxvdzphdXRvfW9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OjcwMH10YWJsZXtib3JkZXItc3BhY2luZzowO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX10ZCx0aHtwYWRkaW5nOjB9LyohIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9tYWluLmNzcyAqL0BtZWRpYSBwcmludHsqLDphZnRlciw6YmVmb3Jle2NvbG9yOiMwMDAhaW1wb3J0YW50O3RleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50O2JhY2tncm91bmQ6MCAwIWltcG9ydGFudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH1hLGE6dmlzaXRlZHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWFbaHJlZl06YWZ0ZXJ7Y29udGVudDoiICgiIGF0dHIoaHJlZikgIikifWFiYnJbdGl0bGVdOmFmdGVye2NvbnRlbnQ6IiAoIiBhdHRyKHRpdGxlKSAiKSJ9YVtocmVmXj0iamF2YXNjcmlwdDoiXTphZnRlcixhW2hyZWZePSIjIl06YWZ0ZXJ7Y29udGVudDoiIn1ibG9ja3F1b3RlLHByZXtib3JkZXI6MXB4IHNvbGlkICM5OTk7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9dGhlYWR7ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9aW1nLHRye3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfWltZ3ttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnR9aDIsaDMscHtvcnBoYW5zOjM7d2lkb3dzOjN9aDIsaDN7cGFnZS1icmVhay1hZnRlcjphdm9pZH0ubmF2YmFye2Rpc3BsYXk6bm9uZX0uYnRuPi5jYXJldCwuZHJvcHVwPi5idG4+LmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzAwMCFpbXBvcnRhbnR9LmxhYmVse2JvcmRlcjoxcHggc29saWQgIzAwMH0udGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlIWltcG9ydGFudH0udGFibGUgdGQsLnRhYmxlIHRoe2JhY2tncm91bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnR9LnRhYmxlLWJvcmRlcmVkIHRkLC50YWJsZS1ib3JkZXJlZCB0aHtib3JkZXI6MXB4IHNvbGlkICNkZGQhaW1wb3J0YW50fX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OidHbHlwaGljb25zIEhhbGZsaW5ncyc7c3JjOnVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdCk7c3JjOnVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdD8jaWVmaXgpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSx1cmwoLi4vZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci53b2ZmMikgZm9ybWF0KCd3b2ZmMicpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLndvZmYpIGZvcm1hdCgnd29mZicpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZikgZm9ybWF0KCd0cnVldHlwZScpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnN2ZyNnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIpIGZvcm1hdCgnc3ZnJyl9LmdseXBoaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtZmFtaWx5OidHbHlwaGljb25zIEhhbGZsaW5ncyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9LmdseXBoaWNvbi1hc3RlcmlzazpiZWZvcmV7Y29udGVudDoiXDAwMmEifS5nbHlwaGljb24tcGx1czpiZWZvcmV7Y29udGVudDoiXDAwMmIifS5nbHlwaGljb24tZXVyOmJlZm9yZSwuZ2x5cGhpY29uLWV1cm86YmVmb3Jle2NvbnRlbnQ6IlwyMGFjIn0uZ2x5cGhpY29uLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcMjIxMiJ9LmdseXBoaWNvbi1jbG91ZDpiZWZvcmV7Y29udGVudDoiXDI2MDEifS5nbHlwaGljb24tZW52ZWxvcGU6YmVmb3Jle2NvbnRlbnQ6IlwyNzA5In0uZ2x5cGhpY29uLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXDI3MGYifS5nbHlwaGljb24tZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxlMDAxIn0uZ2x5cGhpY29uLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZTAwMiJ9LmdseXBoaWNvbi1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDAzIn0uZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZTAwNSJ9LmdseXBoaWNvbi1zdGFyOmJlZm9yZXtjb250ZW50OiJcZTAwNiJ9LmdseXBoaWNvbi1zdGFyLWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZTAwNyJ9LmdseXBoaWNvbi11c2VyOmJlZm9yZXtjb250ZW50OiJcZTAwOCJ9LmdseXBoaWNvbi1maWxtOmJlZm9yZXtjb250ZW50OiJcZTAwOSJ9LmdseXBoaWNvbi10aC1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGUwMTAifS5nbHlwaGljb24tdGg6YmVmb3Jle2NvbnRlbnQ6IlxlMDExIn0uZ2x5cGhpY29uLXRoLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDEyIn0uZ2x5cGhpY29uLW9rOmJlZm9yZXtjb250ZW50OiJcZTAxMyJ9LmdseXBoaWNvbi1yZW1vdmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDE0In0uZ2x5cGhpY29uLXpvb20taW46YmVmb3Jle2NvbnRlbnQ6IlxlMDE1In0uZ2x5cGhpY29uLXpvb20tb3V0OmJlZm9yZXtjb250ZW50OiJcZTAxNiJ9LmdseXBoaWNvbi1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxlMDE3In0uZ2x5cGhpY29uLXNpZ25hbDpiZWZvcmV7Y29udGVudDoiXGUwMTgifS5nbHlwaGljb24tY29nOmJlZm9yZXtjb250ZW50OiJcZTAxOSJ9LmdseXBoaWNvbi10cmFzaDpiZWZvcmV7Y29udGVudDoiXGUwMjAifS5nbHlwaGljb24taG9tZTpiZWZvcmV7Y29udGVudDoiXGUwMjEifS5nbHlwaGljb24tZmlsZTpiZWZvcmV7Y29udGVudDoiXGUwMjIifS5nbHlwaGljb24tdGltZTpiZWZvcmV7Y29udGVudDoiXGUwMjMifS5nbHlwaGljb24tcm9hZDpiZWZvcmV7Y29udGVudDoiXGUwMjQifS5nbHlwaGljb24tZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZTAyNSJ9LmdseXBoaWNvbi1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGUwMjYifS5nbHlwaGljb24tdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZTAyNyJ9LmdseXBoaWNvbi1pbmJveDpiZWZvcmV7Y29udGVudDoiXGUwMjgifS5nbHlwaGljb24tcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDI5In0uZ2x5cGhpY29uLXJlcGVhdDpiZWZvcmV7Y29udGVudDoiXGUwMzAifS5nbHlwaGljb24tcmVmcmVzaDpiZWZvcmV7Y29udGVudDoiXGUwMzEifS5nbHlwaGljb24tbGlzdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDMyIn0uZ2x5cGhpY29uLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDMzIn0uZ2x5cGhpY29uLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxlMDM0In0uZ2x5cGhpY29uLWhlYWRwaG9uZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDM1In0uZ2x5cGhpY29uLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxlMDM2In0uZ2x5cGhpY29uLXZvbHVtZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTAzNyJ9LmdseXBoaWNvbi12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDM4In0uZ2x5cGhpY29uLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGUwMzkifS5nbHlwaGljb24tYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGUwNDAifS5nbHlwaGljb24tdGFnOmJlZm9yZXtjb250ZW50OiJcZTA0MSJ9LmdseXBoaWNvbi10YWdzOmJlZm9yZXtjb250ZW50OiJcZTA0MiJ9LmdseXBoaWNvbi1ib29rOmJlZm9yZXtjb250ZW50OiJcZTA0MyJ9LmdseXBoaWNvbi1ib29rbWFyazpiZWZvcmV7Y29udGVudDoiXGUwNDQifS5nbHlwaGljb24tcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDQ1In0uZ2x5cGhpY29uLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGUwNDYifS5nbHlwaGljb24tZm9udDpiZWZvcmV7Y29udGVudDoiXGUwNDcifS5nbHlwaGljb24tYm9sZDpiZWZvcmV7Y29udGVudDoiXGUwNDgifS5nbHlwaGljb24taXRhbGljOmJlZm9yZXtjb250ZW50OiJcZTA0OSJ9LmdseXBoaWNvbi10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTAifS5nbHlwaGljb24tdGV4dC13aWR0aDpiZWZvcmV7Y29udGVudDoiXGUwNTEifS5nbHlwaGljb24tYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGUwNTIifS5nbHlwaGljb24tYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZTA1MyJ9LmdseXBoaWNvbi1hbGlnbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTQifS5nbHlwaGljb24tYWxpZ24tanVzdGlmeTpiZWZvcmV7Y29udGVudDoiXGUwNTUifS5nbHlwaGljb24tbGlzdDpiZWZvcmV7Y29udGVudDoiXGUwNTYifS5nbHlwaGljb24taW5kZW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDU3In0uZ2x5cGhpY29uLWluZGVudC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUwNTgifS5nbHlwaGljb24tZmFjZXRpbWUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxlMDU5In0uZ2x5cGhpY29uLXBpY3R1cmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDYwIn0uZ2x5cGhpY29uLW1hcC1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDYyIn0uZ2x5cGhpY29uLWFkanVzdDpiZWZvcmV7Y29udGVudDoiXGUwNjMifS5nbHlwaGljb24tdGludDpiZWZvcmV7Y29udGVudDoiXGUwNjQifS5nbHlwaGljb24tZWRpdDpiZWZvcmV7Y29udGVudDoiXGUwNjUifS5nbHlwaGljb24tc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDY2In0uZ2x5cGhpY29uLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTA2NyJ9LmdseXBoaWNvbi1tb3ZlOmJlZm9yZXtjb250ZW50OiJcZTA2OCJ9LmdseXBoaWNvbi1zdGVwLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA2OSJ9LmdseXBoaWNvbi1mYXN0LWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA3MCJ9LmdseXBoaWNvbi1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGUwNzEifS5nbHlwaGljb24tcGxheTpiZWZvcmV7Y29udGVudDoiXGUwNzIifS5nbHlwaGljb24tcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDczIn0uZ2x5cGhpY29uLXN0b3A6YmVmb3Jle2NvbnRlbnQ6IlxlMDc0In0uZ2x5cGhpY29uLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDc1In0uZ2x5cGhpY29uLWZhc3QtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGUwNzYifS5nbHlwaGljb24tc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZTA3NyJ9LmdseXBoaWNvbi1lamVjdDpiZWZvcmV7Y29udGVudDoiXGUwNzgifS5nbHlwaGljb24tY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTA3OSJ9LmdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTA4MCJ9LmdseXBoaWNvbi1wbHVzLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDgxIn0uZ2x5cGhpY29uLW1pbnVzLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDgyIn0uZ2x5cGhpY29uLXJlbW92ZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4MyJ9LmdseXBoaWNvbi1vay1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4NCJ9LmdseXBoaWNvbi1xdWVzdGlvbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZTA4NSJ9LmdseXBoaWNvbi1pbmZvLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMDg2In0uZ2x5cGhpY29uLXNjcmVlbnNob3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDg3In0uZ2x5cGhpY29uLXJlbW92ZS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDg4In0uZ2x5cGhpY29uLW9rLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwODkifS5nbHlwaGljb24tYmFuLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGUwOTAifS5nbHlwaGljb24tYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGUwOTEifS5nbHlwaGljb24tYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDkyIn0uZ2x5cGhpY29uLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZTA5MyJ9LmdseXBoaWNvbi1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZTA5NCJ9LmdseXBoaWNvbi1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDk1In0uZ2x5cGhpY29uLXJlc2l6ZS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZTA5NiJ9LmdseXBoaWNvbi1yZXNpemUtc21hbGw6YmVmb3Jle2NvbnRlbnQ6IlxlMDk3In0uZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTAxIn0uZ2x5cGhpY29uLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTAyIn0uZ2x5cGhpY29uLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxlMTAzIn0uZ2x5cGhpY29uLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTA0In0uZ2x5cGhpY29uLWV5ZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTEwNSJ9LmdseXBoaWNvbi1leWUtY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMTA2In0uZ2x5cGhpY29uLXdhcm5pbmctc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxMDcifS5nbHlwaGljb24tcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTA4In0uZ2x5cGhpY29uLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZTEwOSJ9LmdseXBoaWNvbi1yYW5kb206YmVmb3Jle2NvbnRlbnQ6IlxlMTEwIn0uZ2x5cGhpY29uLWNvbW1lbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTExIn0uZ2x5cGhpY29uLW1hZ25ldDpiZWZvcmV7Y29udGVudDoiXGUxMTIifS5nbHlwaGljb24tY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGUxMTMifS5nbHlwaGljb24tY2hldnJvbi1kb3duOmJlZm9yZXtjb250ZW50OiJcZTExNCJ9LmdseXBoaWNvbi1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZTExNSJ9LmdseXBoaWNvbi1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZTExNiJ9LmdseXBoaWNvbi1mb2xkZXItY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMTE3In0uZ2x5cGhpY29uLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTExOCJ9LmdseXBoaWNvbi1yZXNpemUtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMTE5In0uZ2x5cGhpY29uLXJlc2l6ZS1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZTEyMCJ9LmdseXBoaWNvbi1oZGQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTIxIn0uZ2x5cGhpY29uLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZTEyMiJ9LmdseXBoaWNvbi1iZWxsOmJlZm9yZXtjb250ZW50OiJcZTEyMyJ9LmdseXBoaWNvbi1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGUxMjQifS5nbHlwaGljb24tdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZTEyNSJ9LmdseXBoaWNvbi10aHVtYnMtZG93bjpiZWZvcmV7Y29udGVudDoiXGUxMjYifS5nbHlwaGljb24taGFuZC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUxMjcifS5nbHlwaGljb24taGFuZC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTEyOCJ9LmdseXBoaWNvbi1oYW5kLXVwOmJlZm9yZXtjb250ZW50OiJcZTEyOSJ9LmdseXBoaWNvbi1oYW5kLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMTMwIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUxMzEifS5nbHlwaGljb24tY2lyY2xlLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTMyIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGUxMzMifS5nbHlwaGljb24tY2lyY2xlLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMTM0In0uZ2x5cGhpY29uLWdsb2JlOmJlZm9yZXtjb250ZW50OiJcZTEzNSJ9LmdseXBoaWNvbi13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxlMTM2In0uZ2x5cGhpY29uLXRhc2tzOmJlZm9yZXtjb250ZW50OiJcZTEzNyJ9LmdseXBoaWNvbi1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMTM4In0uZ2x5cGhpY29uLWJyaWVmY2FzZTpiZWZvcmV7Y29udGVudDoiXGUxMzkifS5nbHlwaGljb24tZnVsbHNjcmVlbjpiZWZvcmV7Y29udGVudDoiXGUxNDAifS5nbHlwaGljb24tZGFzaGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZTE0MSJ9LmdseXBoaWNvbi1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxlMTQyIn0uZ2x5cGhpY29uLWhlYXJ0LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZTE0MyJ9LmdseXBoaWNvbi1saW5rOmJlZm9yZXtjb250ZW50OiJcZTE0NCJ9LmdseXBoaWNvbi1waG9uZTpiZWZvcmV7Y29udGVudDoiXGUxNDUifS5nbHlwaGljb24tcHVzaHBpbjpiZWZvcmV7Y29udGVudDoiXGUxNDYifS5nbHlwaGljb24tdXNkOmJlZm9yZXtjb250ZW50OiJcZTE0OCJ9LmdseXBoaWNvbi1nYnA6YmVmb3Jle2NvbnRlbnQ6IlxlMTQ5In0uZ2x5cGhpY29uLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTUwIn0uZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTUxIn0uZ2x5cGhpY29uLXNvcnQtYnktYWxwaGFiZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE1MiJ9LmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyOmJlZm9yZXtjb250ZW50OiJcZTE1MyJ9LmdseXBoaWNvbi1zb3J0LWJ5LW9yZGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGUxNTQifS5nbHlwaGljb24tc29ydC1ieS1hdHRyaWJ1dGVzOmJlZm9yZXtjb250ZW50OiJcZTE1NSJ9LmdseXBoaWNvbi1zb3J0LWJ5LWF0dHJpYnV0ZXMtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE1NiJ9LmdseXBoaWNvbi11bmNoZWNrZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTU3In0uZ2x5cGhpY29uLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGUxNTgifS5nbHlwaGljb24tY29sbGFwc2UtZG93bjpiZWZvcmV7Y29udGVudDoiXGUxNTkifS5nbHlwaGljb24tY29sbGFwc2UtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMTYwIn0uZ2x5cGhpY29uLWxvZy1pbjpiZWZvcmV7Y29udGVudDoiXGUxNjEifS5nbHlwaGljb24tZmxhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMTYyIn0uZ2x5cGhpY29uLWxvZy1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTYzIn0uZ2x5cGhpY29uLW5ldy13aW5kb3c6YmVmb3Jle2NvbnRlbnQ6IlxlMTY0In0uZ2x5cGhpY29uLXJlY29yZDpiZWZvcmV7Y29udGVudDoiXGUxNjUifS5nbHlwaGljb24tc2F2ZTpiZWZvcmV7Y29udGVudDoiXGUxNjYifS5nbHlwaGljb24tb3BlbjpiZWZvcmV7Y29udGVudDoiXGUxNjcifS5nbHlwaGljb24tc2F2ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTY4In0uZ2x5cGhpY29uLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGUxNjkifS5nbHlwaGljb24tZXhwb3J0OmJlZm9yZXtjb250ZW50OiJcZTE3MCJ9LmdseXBoaWNvbi1zZW5kOmJlZm9yZXtjb250ZW50OiJcZTE3MSJ9LmdseXBoaWNvbi1mbG9wcHktZGlzazpiZWZvcmV7Y29udGVudDoiXGUxNzIifS5nbHlwaGljb24tZmxvcHB5LXNhdmVkOmJlZm9yZXtjb250ZW50OiJcZTE3MyJ9LmdseXBoaWNvbi1mbG9wcHktcmVtb3ZlOmJlZm9yZXtjb250ZW50OiJcZTE3NCJ9LmdseXBoaWNvbi1mbG9wcHktc2F2ZTpiZWZvcmV7Y29udGVudDoiXGUxNzUifS5nbHlwaGljb24tZmxvcHB5LW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxlMTc2In0uZ2x5cGhpY29uLWNyZWRpdC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZTE3NyJ9LmdseXBoaWNvbi10cmFuc2ZlcjpiZWZvcmV7Y29udGVudDoiXGUxNzgifS5nbHlwaGljb24tY3V0bGVyeTpiZWZvcmV7Y29udGVudDoiXGUxNzkifS5nbHlwaGljb24taGVhZGVyOmJlZm9yZXtjb250ZW50OiJcZTE4MCJ9LmdseXBoaWNvbi1jb21wcmVzc2VkOmJlZm9yZXtjb250ZW50OiJcZTE4MSJ9LmdseXBoaWNvbi1lYXJwaG9uZTpiZWZvcmV7Y29udGVudDoiXGUxODIifS5nbHlwaGljb24tcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZTE4MyJ9LmdseXBoaWNvbi10b3dlcjpiZWZvcmV7Y29udGVudDoiXGUxODQifS5nbHlwaGljb24tc3RhdHM6YmVmb3Jle2NvbnRlbnQ6IlxlMTg1In0uZ2x5cGhpY29uLXNkLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZTE4NiJ9LmdseXBoaWNvbi1oZC12aWRlbzpiZWZvcmV7Y29udGVudDoiXGUxODcifS5nbHlwaGljb24tc3VidGl0bGVzOmJlZm9yZXtjb250ZW50OiJcZTE4OCJ9LmdseXBoaWNvbi1zb3VuZC1zdGVyZW86YmVmb3Jle2NvbnRlbnQ6IlxlMTg5In0uZ2x5cGhpY29uLXNvdW5kLWRvbGJ5OmJlZm9yZXtjb250ZW50OiJcZTE5MCJ9LmdseXBoaWNvbi1zb3VuZC01LTE6YmVmb3Jle2NvbnRlbnQ6IlxlMTkxIn0uZ2x5cGhpY29uLXNvdW5kLTYtMTpiZWZvcmV7Y29udGVudDoiXGUxOTIifS5nbHlwaGljb24tc291bmQtNy0xOmJlZm9yZXtjb250ZW50OiJcZTE5MyJ9LmdseXBoaWNvbi1jb3B5cmlnaHQtbWFyazpiZWZvcmV7Y29udGVudDoiXGUxOTQifS5nbHlwaGljb24tcmVnaXN0cmF0aW9uLW1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlMTk1In0uZ2x5cGhpY29uLWNsb3VkLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZTE5NyJ9LmdseXBoaWNvbi1jbG91ZC11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTk4In0uZ2x5cGhpY29uLXRyZWUtY29uaWZlcjpiZWZvcmV7Y29udGVudDoiXGUxOTkifS5nbHlwaGljb24tdHJlZS1kZWNpZHVvdXM6YmVmb3Jle2NvbnRlbnQ6IlxlMjAwIn0uZ2x5cGhpY29uLWNkOmJlZm9yZXtjb250ZW50OiJcZTIwMSJ9LmdseXBoaWNvbi1zYXZlLWZpbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMjAyIn0uZ2x5cGhpY29uLW9wZW4tZmlsZTpiZWZvcmV7Y29udGVudDoiXGUyMDMifS5nbHlwaGljb24tbGV2ZWwtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMjA0In0uZ2x5cGhpY29uLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxlMjA1In0uZ2x5cGhpY29uLXBhc3RlOmJlZm9yZXtjb250ZW50OiJcZTIwNiJ9LmdseXBoaWNvbi1hbGVydDpiZWZvcmV7Y29udGVudDoiXGUyMDkifS5nbHlwaGljb24tZXF1YWxpemVyOmJlZm9yZXtjb250ZW50OiJcZTIxMCJ9LmdseXBoaWNvbi1raW5nOmJlZm9yZXtjb250ZW50OiJcZTIxMSJ9LmdseXBoaWNvbi1xdWVlbjpiZWZvcmV7Y29udGVudDoiXGUyMTIifS5nbHlwaGljb24tcGF3bjpiZWZvcmV7Y29udGVudDoiXGUyMTMifS5nbHlwaGljb24tYmlzaG9wOmJlZm9yZXtjb250ZW50OiJcZTIxNCJ9LmdseXBoaWNvbi1rbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjE1In0uZ2x5cGhpY29uLWJhYnktZm9ybXVsYTpiZWZvcmV7Y29udGVudDoiXGUyMTYifS5nbHlwaGljb24tdGVudDpiZWZvcmV7Y29udGVudDoiXDI2ZmEifS5nbHlwaGljb24tYmxhY2tib2FyZDpiZWZvcmV7Y29udGVudDoiXGUyMTgifS5nbHlwaGljb24tYmVkOmJlZm9yZXtjb250ZW50OiJcZTIxOSJ9LmdseXBoaWNvbi1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGY4ZmYifS5nbHlwaGljb24tZXJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxlMjIxIn0uZ2x5cGhpY29uLWhvdXJnbGFzczpiZWZvcmV7Y29udGVudDoiXDIzMWIifS5nbHlwaGljb24tbGFtcDpiZWZvcmV7Y29udGVudDoiXGUyMjMifS5nbHlwaGljb24tZHVwbGljYXRlOmJlZm9yZXtjb250ZW50OiJcZTIyNCJ9LmdseXBoaWNvbi1waWdneS1iYW5rOmJlZm9yZXtjb250ZW50OiJcZTIyNSJ9LmdseXBoaWNvbi1zY2lzc29yczpiZWZvcmV7Y29udGVudDoiXGUyMjYifS5nbHlwaGljb24tYml0Y29pbjpiZWZvcmV7Y29udGVudDoiXGUyMjcifS5nbHlwaGljb24tYnRjOmJlZm9yZXtjb250ZW50OiJcZTIyNyJ9LmdseXBoaWNvbi14YnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjI3In0uZ2x5cGhpY29uLXllbjpiZWZvcmV7Y29udGVudDoiXDAwYTUifS5nbHlwaGljb24tanB5OmJlZm9yZXtjb250ZW50OiJcMDBhNSJ9LmdseXBoaWNvbi1ydWJsZTpiZWZvcmV7Y29udGVudDoiXDIwYmQifS5nbHlwaGljb24tcnViOmJlZm9yZXtjb250ZW50OiJcMjBiZCJ9LmdseXBoaWNvbi1zY2FsZTpiZWZvcmV7Y29udGVudDoiXGUyMzAifS5nbHlwaGljb24taWNlLWxvbGx5OmJlZm9yZXtjb250ZW50OiJcZTIzMSJ9LmdseXBoaWNvbi1pY2UtbG9sbHktdGFzdGVkOmJlZm9yZXtjb250ZW50OiJcZTIzMiJ9LmdseXBoaWNvbi1lZHVjYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlMjMzIn0uZ2x5cGhpY29uLW9wdGlvbi1ob3Jpem9udGFsOmJlZm9yZXtjb250ZW50OiJcZTIzNCJ9LmdseXBoaWNvbi1vcHRpb24tdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMjM1In0uZ2x5cGhpY29uLW1lbnUtaGFtYnVyZ2VyOmJlZm9yZXtjb250ZW50OiJcZTIzNiJ9LmdseXBoaWNvbi1tb2RhbC13aW5kb3c6YmVmb3Jle2NvbnRlbnQ6IlxlMjM3In0uZ2x5cGhpY29uLW9pbDpiZWZvcmV7Y29udGVudDoiXGUyMzgifS5nbHlwaGljb24tZ3JhaW46YmVmb3Jle2NvbnRlbnQ6IlxlMjM5In0uZ2x5cGhpY29uLXN1bmdsYXNzZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMjQwIn0uZ2x5cGhpY29uLXRleHQtc2l6ZTpiZWZvcmV7Y29udGVudDoiXGUyNDEifS5nbHlwaGljb24tdGV4dC1jb2xvcjpiZWZvcmV7Y29udGVudDoiXGUyNDIifS5nbHlwaGljb24tdGV4dC1iYWNrZ3JvdW5kOmJlZm9yZXtjb250ZW50OiJcZTI0MyJ9LmdseXBoaWNvbi1vYmplY3QtYWxpZ24tdG9wOmJlZm9yZXtjb250ZW50OiJcZTI0NCJ9LmdseXBoaWNvbi1vYmplY3QtYWxpZ24tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZTI0NSJ9LmdseXBoaWNvbi1vYmplY3QtYWxpZ24taG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDoiXGUyNDYifS5nbHlwaGljb24tb2JqZWN0LWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjQ3In0uZ2x5cGhpY29uLW9iamVjdC1hbGlnbi12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGUyNDgifS5nbHlwaGljb24tb2JqZWN0LWFsaWduLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTI0OSJ9LmdseXBoaWNvbi10cmlhbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUyNTAifS5nbHlwaGljb24tdHJpYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGUyNTEifS5nbHlwaGljb24tdHJpYW5nbGUtYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZTI1MiJ9LmdseXBoaWNvbi10cmlhbmdsZS10b3A6YmVmb3Jle2NvbnRlbnQ6IlxlMjUzIn0uZ2x5cGhpY29uLWNvbnNvbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMjU0In0uZ2x5cGhpY29uLXN1cGVyc2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZTI1NSJ9LmdseXBoaWNvbi1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMjU2In0uZ2x5cGhpY29uLW1lbnUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGUyNTcifS5nbHlwaGljb24tbWVudS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGUyNTgifS5nbHlwaGljb24tbWVudS1kb3duOmJlZm9yZXtjb250ZW50OiJcZTI1OSJ9LmdseXBoaWNvbi1tZW51LXVwOmJlZm9yZXtjb250ZW50OiJcZTI2MCJ9Knstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9OmFmdGVyLDpiZWZvcmV7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWx7Zm9udC1zaXplOjEwcHg7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCl9Ym9keXtmb250LWZhbWlseToiUG9wcGlucyIsUG9wcGlucyxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9YnV0dG9uLGlucHV0LHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXR9YXtjb2xvcjojMzA0ZmZlO3RleHQtZGVjb3JhdGlvbjpub25lfWE6Zm9jdXMsYTpob3Zlcntjb2xvcjojMjM1MjdjO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTpmb2N1c3tvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDotMnB4fWZpZ3VyZXttYXJnaW46MH1pbWd7dmVydGljYWwtYWxpZ246bWlkZGxlfS5jYXJvdXNlbC1pbm5lcj4uaXRlbT5hPmltZywuY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+aW1nLC5pbWctcmVzcG9uc2l2ZSwudGh1bWJuYWlsIGE+aW1nLC50aHVtYm5haWw+aW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99LmltZy1yb3VuZGVke2JvcmRlci1yYWRpdXM6NnB4fS5pbWctdGh1bWJuYWlse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO3BhZGRpbmc6NHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dDstby10cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fS5pbWctY2lyY2xle2JvcmRlci1yYWRpdXM6NTAlfWhye21hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VlZX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTtib3JkZXI6MH0uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1c3twb3NpdGlvbjpzdGF0aWM7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxlO2NsaXA6YXV0b31bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfS5oMSwuaDIsLmgzLC5oNCwuaDUsLmg2LGgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuMTtjb2xvcjppbmhlcml0fS5oMSAuc21hbGwsLmgxIHNtYWxsLC5oMiAuc21hbGwsLmgyIHNtYWxsLC5oMyAuc21hbGwsLmgzIHNtYWxsLC5oNCAuc21hbGwsLmg0IHNtYWxsLC5oNSAuc21hbGwsLmg1IHNtYWxsLC5oNiAuc21hbGwsLmg2IHNtYWxsLGgxIC5zbWFsbCxoMSBzbWFsbCxoMiAuc21hbGwsaDIgc21hbGwsaDMgLnNtYWxsLGgzIHNtYWxsLGg0IC5zbWFsbCxoNCBzbWFsbCxoNSAuc21hbGwsaDUgc21hbGwsaDYgLnNtYWxsLGg2IHNtYWxse2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxO2NvbG9yOiM3Nzd9LmgxLC5oMiwuaDMsaDEsaDIsaDN7bWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MTBweH0uaDEgLnNtYWxsLC5oMSBzbWFsbCwuaDIgLnNtYWxsLC5oMiBzbWFsbCwuaDMgLnNtYWxsLC5oMyBzbWFsbCxoMSAuc21hbGwsaDEgc21hbGwsaDIgLnNtYWxsLGgyIHNtYWxsLGgzIC5zbWFsbCxoMyBzbWFsbHtmb250LXNpemU6NjUlfS5oNCwuaDUsLmg2LGg0LGg1LGg2e21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHh9Lmg0IC5zbWFsbCwuaDQgc21hbGwsLmg1IC5zbWFsbCwuaDUgc21hbGwsLmg2IC5zbWFsbCwuaDYgc21hbGwsaDQgLnNtYWxsLGg0IHNtYWxsLGg1IC5zbWFsbCxoNSBzbWFsbCxoNiAuc21hbGwsaDYgc21hbGx7Zm9udC1zaXplOjc1JX0uaDEsaDF7Zm9udC1zaXplOjM2cHh9LmgyLGgye2ZvbnQtc2l6ZTozMHB4fS5oMyxoM3tmb250LXNpemU6MjRweH0uaDQsaDR7Zm9udC1zaXplOjE4cHh9Lmg1LGg1e2ZvbnQtc2l6ZToxNHB4fS5oNixoNntmb250LXNpemU6MTJweH1we21hcmdpbjowIDAgMTBweH0ubGVhZHttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuNH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmxlYWR7Zm9udC1zaXplOjIxcHh9fS5zbWFsbCxzbWFsbHtmb250LXNpemU6ODUlfS5tYXJrLG1hcmt7cGFkZGluZzouMmVtO2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM30udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1qdXN0aWZ5e3RleHQtYWxpZ246anVzdGlmeX0udGV4dC1ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS50ZXh0LWxvd2VyY2FzZXt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnRleHQtdXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udGV4dC1jYXBpdGFsaXple3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemV9LnRleHQtbXV0ZWR7Y29sb3I6Izc3N30udGV4dC1wcmltYXJ5e2NvbG9yOiMzMDRmZmV9YS50ZXh0LXByaW1hcnk6Zm9jdXMsYS50ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6IzI4NjA5MH0udGV4dC1zdWNjZXNze2NvbG9yOiMzYzc2M2R9YS50ZXh0LXN1Y2Nlc3M6Zm9jdXMsYS50ZXh0LXN1Y2Nlc3M6aG92ZXJ7Y29sb3I6IzJiNTQyY30udGV4dC1pbmZve2NvbG9yOiMzMTcwOGZ9YS50ZXh0LWluZm86Zm9jdXMsYS50ZXh0LWluZm86aG92ZXJ7Y29sb3I6IzI0NTI2OX0udGV4dC13YXJuaW5ne2NvbG9yOiM4YTZkM2J9YS50ZXh0LXdhcm5pbmc6Zm9jdXMsYS50ZXh0LXdhcm5pbmc6aG92ZXJ7Y29sb3I6IzY2NTEyY30udGV4dC1kYW5nZXJ7Y29sb3I6I2E5NDQ0Mn1hLnRleHQtZGFuZ2VyOmZvY3VzLGEudGV4dC1kYW5nZXI6aG92ZXJ7Y29sb3I6Izg0MzUzNH0uYmctcHJpbWFyeXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMwNGZmZX1hLmJnLXByaW1hcnk6Zm9jdXMsYS5iZy1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzI4NjA5MH0uYmctc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9YS5iZy1zdWNjZXNzOmZvY3VzLGEuYmctc3VjY2Vzczpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNjMWUyYjN9LmJnLWluZm97YmFja2dyb3VuZC1jb2xvcjojZDllZGY3fWEuYmctaW5mbzpmb2N1cyxhLmJnLWluZm86aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYWZkOWVlfS5iZy13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM31hLmJnLXdhcm5pbmc6Zm9jdXMsYS5iZy13YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y3ZWNiNX0uYmctZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2YyZGVkZX1hLmJnLWRhbmdlcjpmb2N1cyxhLmJnLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNGI5Yjl9LnBhZ2UtaGVhZGVye3BhZGRpbmctYm90dG9tOjlweDttYXJnaW46NDBweCAwIDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZX1vbCx1bHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxMHB4fW9sIG9sLG9sIHVsLHVsIG9sLHVsIHVse21hcmdpbi1ib3R0b206MH0ubGlzdC11bnN0eWxlZHtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5le3BhZGRpbmctbGVmdDowO21hcmdpbi1sZWZ0Oi01cHg7bGlzdC1zdHlsZTpub25lfS5saXN0LWlubGluZT5saXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXJpZ2h0OjVweDtwYWRkaW5nLWxlZnQ6NXB4fWRse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjIwcHh9ZGQsZHR7bGluZS1oZWlnaHQ6MS40Mjg1NzE0M31kdHtmb250LXdlaWdodDo3MDB9ZGR7bWFyZ2luLWxlZnQ6MH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bGVmdDt3aWR0aDoxNjBweDtvdmVyZmxvdzpoaWRkZW47Y2xlYXI6bGVmdDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5kbC1ob3Jpem9udGFsIGRke21hcmdpbi1sZWZ0OjE4MHB4fX1hYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdLGFiYnJbdGl0bGVde2N1cnNvcjpoZWxwO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjNzc3fS5pbml0aWFsaXNte2ZvbnQtc2l6ZTo5MCU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJsb2NrcXVvdGV7cGFkZGluZzoxMHB4IDIwcHg7bWFyZ2luOjAgMCAyMHB4O2ZvbnQtc2l6ZToxNy41cHg7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkICNlZWV9YmxvY2txdW90ZSBvbDpsYXN0LWNoaWxkLGJsb2NrcXVvdGUgcDpsYXN0LWNoaWxkLGJsb2NrcXVvdGUgdWw6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9YmxvY2txdW90ZSAuc21hbGwsYmxvY2txdW90ZSBmb290ZXIsYmxvY2txdW90ZSBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTo4MCU7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojNzc3fWJsb2NrcXVvdGUgLnNtYWxsOmJlZm9yZSxibG9ja3F1b3RlIGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZSBzbWFsbDpiZWZvcmV7Y29udGVudDonXDIwMTQgXDAwQTAnfS5ibG9ja3F1b3RlLXJldmVyc2UsYmxvY2txdW90ZS5wdWxsLXJpZ2h0e3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MDt0ZXh0LWFsaWduOnJpZ2h0O2JvcmRlci1yaWdodDo1cHggc29saWQgI2VlZTtib3JkZXItbGVmdDowfS5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmJlZm9yZSwuYmxvY2txdW90ZS1yZXZlcnNlIGZvb3RlcjpiZWZvcmUsLmJsb2NrcXVvdGUtcmV2ZXJzZSBzbWFsbDpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxsOmJlZm9yZXtjb250ZW50OicnfS5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmFmdGVyLC5ibG9ja3F1b3RlLXJldmVyc2UgZm9vdGVyOmFmdGVyLC5ibG9ja3F1b3RlLXJldmVyc2Ugc21hbGw6YWZ0ZXIsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDphZnRlcixibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmFmdGVyLGJsb2NrcXVvdGUucHVsbC1yaWdodCBzbWFsbDphZnRlcntjb250ZW50OidcMDBBMCBcMjAxNCd9YWRkcmVzc3ttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7bGluZS1oZWlnaHQ6MS40Mjg1NzE0M31jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTpNZW5sbyxNb25hY28sQ29uc29sYXMsIkNvdXJpZXIgTmV3Iixtb25vc3BhY2V9Y29kZXtwYWRkaW5nOjJweCA0cHg7Zm9udC1zaXplOjkwJTtjb2xvcjojYzcyNTRlO2JhY2tncm91bmQtY29sb3I6I2Y5ZjJmNDtib3JkZXItcmFkaXVzOjRweH1rYmR7cGFkZGluZzoycHggNHB4O2ZvbnQtc2l6ZTo5MCU7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7Ym9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KX1rYmQga2Jke3BhZGRpbmc6MDtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDo3MDA7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfXByZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OS41cHg7bWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzMzMzt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3b3JkLXdyYXA6YnJlYWstd29yZDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4fXByZSBjb2Rle3BhZGRpbmc6MDtmb250LXNpemU6aW5oZXJpdDtjb2xvcjppbmhlcml0O3doaXRlLXNwYWNlOnByZS13cmFwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowfS5wcmUtc2Nyb2xsYWJsZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXk6c2Nyb2xsfS5jb250YWluZXJ7cGFkZGluZy1yaWdodDoxNXB4O3BhZGRpbmctbGVmdDoxNXB4O21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7d2lkdGg6NzUwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29udGFpbmVye3dpZHRoOjk3MHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jb250YWluZXJ7d2lkdGg6MTE3MHB4fX0uY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfS5yb3d7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4fS5jb2wtbGctMSwuY29sLWxnLTEwLC5jb2wtbGctMTEsLmNvbC1sZy0xMiwuY29sLWxnLTIsLmNvbC1sZy0zLC5jb2wtbGctNCwuY29sLWxnLTUsLmNvbC1sZy02LC5jb2wtbGctNywuY29sLWxnLTgsLmNvbC1sZy05LC5jb2wtbWQtMSwuY29sLW1kLTEwLC5jb2wtbWQtMTEsLmNvbC1tZC0xMiwuY29sLW1kLTIsLmNvbC1tZC0zLC5jb2wtbWQtNCwuY29sLW1kLTUsLmNvbC1tZC02LC5jb2wtbWQtNywuY29sLW1kLTgsLmNvbC1tZC05LC5jb2wtc20tMSwuY29sLXNtLTEwLC5jb2wtc20tMTEsLmNvbC1zbS0xMiwuY29sLXNtLTIsLmNvbC1zbS0zLC5jb2wtc20tNCwuY29sLXNtLTUsLmNvbC1zbS02LC5jb2wtc20tNywuY29sLXNtLTgsLmNvbC1zbS05LC5jb2wteHMtMSwuY29sLXhzLTEwLC5jb2wteHMtMTEsLmNvbC14cy0xMiwuY29sLXhzLTIsLmNvbC14cy0zLC5jb2wteHMtNCwuY29sLXhzLTUsLmNvbC14cy02LC5jb2wteHMtNywuY29sLXhzLTgsLmNvbC14cy05e3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MXB4O3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweH0uY29sLXhzLTEsLmNvbC14cy0xMCwuY29sLXhzLTExLC5jb2wteHMtMTIsLmNvbC14cy0yLC5jb2wteHMtMywuY29sLXhzLTQsLmNvbC14cy01LC5jb2wteHMtNiwuY29sLXhzLTcsLmNvbC14cy04LC5jb2wteHMtOXtmbG9hdDpsZWZ0fS5jb2wteHMtMTJ7d2lkdGg6MTAwJX0uY29sLXhzLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLXhzLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLXhzLTl7d2lkdGg6NzUlfS5jb2wteHMtOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC14cy03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLXhzLTZ7d2lkdGg6NTAlfS5jb2wteHMtNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC14cy00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLXhzLTN7d2lkdGg6MjUlfS5jb2wteHMtMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC14cy0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wteHMtcHVsbC0xMntyaWdodDoxMDAlfS5jb2wteHMtcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC14cy1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLXhzLXB1bGwtOXtyaWdodDo3NSV9LmNvbC14cy1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wteHMtcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLXhzLXB1bGwtNntyaWdodDo1MCV9LmNvbC14cy1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wteHMtcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLXhzLXB1bGwtM3tyaWdodDoyNSV9LmNvbC14cy1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wteHMtcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wteHMtcHVsbC0we3JpZ2h0OmF1dG99LmNvbC14cy1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLXhzLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC14cy1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wteHMtcHVzaC05e2xlZnQ6NzUlfS5jb2wteHMtcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wteHMtcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wteHMtcHVzaC02e2xlZnQ6NTAlfS5jb2wteHMtcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wteHMtcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wteHMtcHVzaC0ze2xlZnQ6MjUlfS5jb2wteHMtcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wteHMtcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC14cy1wdXNoLTB7bGVmdDphdXRvfS5jb2wteHMtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC14cy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wteHMtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLXhzLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLXhzLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLXhzLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLXhzLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLXhzLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLXhzLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLXhzLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLXhzLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLXhzLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wteHMtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNvbC1zbS0xLC5jb2wtc20tMTAsLmNvbC1zbS0xMSwuY29sLXNtLTEyLC5jb2wtc20tMiwuY29sLXNtLTMsLmNvbC1zbS00LC5jb2wtc20tNSwuY29sLXNtLTYsLmNvbC1zbS03LC5jb2wtc20tOCwuY29sLXNtLTl7ZmxvYXQ6bGVmdH0uY29sLXNtLTEye3dpZHRoOjEwMCV9LmNvbC1zbS0xMXt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1zbS0xMHt3aWR0aDo4My4zMzMzMzMzMyV9LmNvbC1zbS05e3dpZHRoOjc1JX0uY29sLXNtLTh7d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtc20tN3t3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1zbS02e3dpZHRoOjUwJX0uY29sLXNtLTV7d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtc20tNHt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1zbS0ze3dpZHRoOjI1JX0uY29sLXNtLTJ7d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtc20tMXt3aWR0aDo4LjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtMTJ7cmlnaHQ6MTAwJX0uY29sLXNtLXB1bGwtMTF7cmlnaHQ6OTEuNjY2NjY2NjclfS5jb2wtc20tcHVsbC0xMHtyaWdodDo4My4zMzMzMzMzMyV9LmNvbC1zbS1wdWxsLTl7cmlnaHQ6NzUlfS5jb2wtc20tcHVsbC04e3JpZ2h0OjY2LjY2NjY2NjY3JX0uY29sLXNtLXB1bGwtN3tyaWdodDo1OC4zMzMzMzMzMyV9LmNvbC1zbS1wdWxsLTZ7cmlnaHQ6NTAlfS5jb2wtc20tcHVsbC01e3JpZ2h0OjQxLjY2NjY2NjY3JX0uY29sLXNtLXB1bGwtNHtyaWdodDozMy4zMzMzMzMzMyV9LmNvbC1zbS1wdWxsLTN7cmlnaHQ6MjUlfS5jb2wtc20tcHVsbC0ye3JpZ2h0OjE2LjY2NjY2NjY3JX0uY29sLXNtLXB1bGwtMXtyaWdodDo4LjMzMzMzMzMzJX0uY29sLXNtLXB1bGwtMHtyaWdodDphdXRvfS5jb2wtc20tcHVzaC0xMntsZWZ0OjEwMCV9LmNvbC1zbS1wdXNoLTExe2xlZnQ6OTEuNjY2NjY2NjclfS5jb2wtc20tcHVzaC0xMHtsZWZ0OjgzLjMzMzMzMzMzJX0uY29sLXNtLXB1c2gtOXtsZWZ0Ojc1JX0uY29sLXNtLXB1c2gtOHtsZWZ0OjY2LjY2NjY2NjY3JX0uY29sLXNtLXB1c2gtN3tsZWZ0OjU4LjMzMzMzMzMzJX0uY29sLXNtLXB1c2gtNntsZWZ0OjUwJX0uY29sLXNtLXB1c2gtNXtsZWZ0OjQxLjY2NjY2NjY3JX0uY29sLXNtLXB1c2gtNHtsZWZ0OjMzLjMzMzMzMzMzJX0uY29sLXNtLXB1c2gtM3tsZWZ0OjI1JX0uY29sLXNtLXB1c2gtMntsZWZ0OjE2LjY2NjY2NjY3JX0uY29sLXNtLXB1c2gtMXtsZWZ0OjguMzMzMzMzMzMlfS5jb2wtc20tcHVzaC0we2xlZnQ6YXV0b30uY29sLXNtLW9mZnNldC0xMnttYXJnaW4tbGVmdDoxMDAlfS5jb2wtc20tb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uY29sLXNtLW9mZnNldC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9LmNvbC1zbS1vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9LmNvbC1zbS1vZmZzZXQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9LmNvbC1zbS1vZmZzZXQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMyV9LmNvbC1zbS1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNvbC1zbS1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9LmNvbC1zbS1vZmZzZXQtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMyV9LmNvbC1zbS1vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9LmNvbC1zbS1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9LmNvbC1zbS1vZmZzZXQtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0uY29sLXNtLW9mZnNldC0we21hcmdpbi1sZWZ0OjB9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29sLW1kLTEsLmNvbC1tZC0xMCwuY29sLW1kLTExLC5jb2wtbWQtMTIsLmNvbC1tZC0yLC5jb2wtbWQtMywuY29sLW1kLTQsLmNvbC1tZC01LC5jb2wtbWQtNiwuY29sLW1kLTcsLmNvbC1tZC04LC5jb2wtbWQtOXtmbG9hdDpsZWZ0fS5jb2wtbWQtMTJ7d2lkdGg6MTAwJX0uY29sLW1kLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLW1kLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLW1kLTl7d2lkdGg6NzUlfS5jb2wtbWQtOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC1tZC03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLW1kLTZ7d2lkdGg6NTAlfS5jb2wtbWQtNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC1tZC00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLW1kLTN7d2lkdGg6MjUlfS5jb2wtbWQtMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1tZC0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtbWQtcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC1tZC1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLW1kLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1tZC1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wtbWQtcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLW1kLXB1bGwtNntyaWdodDo1MCV9LmNvbC1tZC1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wtbWQtcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLW1kLXB1bGwtM3tyaWdodDoyNSV9LmNvbC1tZC1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wtbWQtcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wtbWQtcHVsbC0we3JpZ2h0OmF1dG99LmNvbC1tZC1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLW1kLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC1tZC1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtbWQtcHVzaC05e2xlZnQ6NzUlfS5jb2wtbWQtcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wtbWQtcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wtbWQtcHVzaC02e2xlZnQ6NTAlfS5jb2wtbWQtcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wtbWQtcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtbWQtcHVzaC0ze2xlZnQ6MjUlfS5jb2wtbWQtcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wtbWQtcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC1tZC1wdXNoLTB7bGVmdDphdXRvfS5jb2wtbWQtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1tZC1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wtbWQtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLW1kLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLW1kLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLW1kLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLW1kLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLW1kLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLW1kLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLW1kLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLW1kLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLW1kLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wtbWQtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY29sLWxnLTEsLmNvbC1sZy0xMCwuY29sLWxnLTExLC5jb2wtbGctMTIsLmNvbC1sZy0yLC5jb2wtbGctMywuY29sLWxnLTQsLmNvbC1sZy01LC5jb2wtbGctNiwuY29sLWxnLTcsLmNvbC1sZy04LC5jb2wtbGctOXtmbG9hdDpsZWZ0fS5jb2wtbGctMTJ7d2lkdGg6MTAwJX0uY29sLWxnLTExe3dpZHRoOjkxLjY2NjY2NjY3JX0uY29sLWxnLTEwe3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLWxnLTl7d2lkdGg6NzUlfS5jb2wtbGctOHt3aWR0aDo2Ni42NjY2NjY2NyV9LmNvbC1sZy03e3dpZHRoOjU4LjMzMzMzMzMzJX0uY29sLWxnLTZ7d2lkdGg6NTAlfS5jb2wtbGctNXt3aWR0aDo0MS42NjY2NjY2NyV9LmNvbC1sZy00e3dpZHRoOjMzLjMzMzMzMzMzJX0uY29sLWxnLTN7d2lkdGg6MjUlfS5jb2wtbGctMnt3aWR0aDoxNi42NjY2NjY2NyV9LmNvbC1sZy0xe3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtbGctcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtbGctcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NyV9LmNvbC1sZy1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzJX0uY29sLWxnLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1sZy1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjclfS5jb2wtbGctcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzJX0uY29sLWxnLXB1bGwtNntyaWdodDo1MCV9LmNvbC1sZy1wdWxsLTV7cmlnaHQ6NDEuNjY2NjY2NjclfS5jb2wtbGctcHVsbC00e3JpZ2h0OjMzLjMzMzMzMzMzJX0uY29sLWxnLXB1bGwtM3tyaWdodDoyNSV9LmNvbC1sZy1wdWxsLTJ7cmlnaHQ6MTYuNjY2NjY2NjclfS5jb2wtbGctcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMlfS5jb2wtbGctcHVsbC0we3JpZ2h0OmF1dG99LmNvbC1sZy1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLWxnLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NyV9LmNvbC1sZy1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMlfS5jb2wtbGctcHVzaC05e2xlZnQ6NzUlfS5jb2wtbGctcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjclfS5jb2wtbGctcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMlfS5jb2wtbGctcHVzaC02e2xlZnQ6NTAlfS5jb2wtbGctcHVzaC01e2xlZnQ6NDEuNjY2NjY2NjclfS5jb2wtbGctcHVzaC00e2xlZnQ6MzMuMzMzMzMzMzMlfS5jb2wtbGctcHVzaC0ze2xlZnQ6MjUlfS5jb2wtbGctcHVzaC0ye2xlZnQ6MTYuNjY2NjY2NjclfS5jb2wtbGctcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMyV9LmNvbC1sZy1wdXNoLTB7bGVmdDphdXRvfS5jb2wtbGctb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1sZy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5jb2wtbGctb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0uY29sLWxnLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLWxnLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0uY29sLWxnLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0uY29sLWxnLW9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0uY29sLWxnLW9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0uY29sLWxnLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0uY29sLWxnLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY29sLWxnLW9mZnNldC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0uY29sLWxnLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5jb2wtbGctb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19dGFibGV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH1jYXB0aW9ue3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHg7Y29sb3I6Izc3Nzt0ZXh0LWFsaWduOmxlZnR9dGh7dGV4dC1hbGlnbjpsZWZ0fS50YWJsZXt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MjBweH0udGFibGU+dGJvZHk+dHI+dGQsLnRhYmxlPnRib2R5PnRyPnRoLC50YWJsZT50Zm9vdD50cj50ZCwudGFibGU+dGZvb3Q+dHI+dGgsLnRhYmxlPnRoZWFkPnRyPnRkLC50YWJsZT50aGVhZD50cj50aHtwYWRkaW5nOjhweDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS50YWJsZT50aGVhZD50cj50aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2RkZH0udGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwudGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50aCwudGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGQsLnRhYmxlPmNvbGdyb3VwK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLC50YWJsZT50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZD50ZCwudGFibGU+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQ+dGh7Ym9yZGVyLXRvcDowfS50YWJsZT50Ym9keSt0Ym9keXtib3JkZXItdG9wOjJweCBzb2xpZCAjZGRkfS50YWJsZSAudGFibGV7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50YWJsZS1jb25kZW5zZWQ+dGJvZHk+dHI+dGQsLnRhYmxlLWNvbmRlbnNlZD50Ym9keT50cj50aCwudGFibGUtY29uZGVuc2VkPnRmb290PnRyPnRkLC50YWJsZS1jb25kZW5zZWQ+dGZvb3Q+dHI+dGgsLnRhYmxlLWNvbmRlbnNlZD50aGVhZD50cj50ZCwudGFibGUtY29uZGVuc2VkPnRoZWFkPnRyPnRoe3BhZGRpbmc6NXB4fS50YWJsZS1ib3JkZXJlZHtib3JkZXI6MXB4IHNvbGlkICNkZGR9LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkLC50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aCwudGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQsLnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoLC50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZCwudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGh7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZCwudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGh7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHh9LnRhYmxlLXN0cmlwZWQ+dGJvZHk+dHI6bnRoLW9mLXR5cGUob2RkKXtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjl9LnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX10YWJsZSBjb2xbY2xhc3MqPWNvbC1de3Bvc2l0aW9uOnN0YXRpYztkaXNwbGF5OnRhYmxlLWNvbHVtbjtmbG9hdDpub25lfXRhYmxlIHRkW2NsYXNzKj1jb2wtXSx0YWJsZSB0aFtjbGFzcyo9Y29sLV17cG9zaXRpb246c3RhdGljO2Rpc3BsYXk6dGFibGUtY2VsbDtmbG9hdDpub25lfS50YWJsZT50Ym9keT50ci5hY3RpdmU+dGQsLnRhYmxlPnRib2R5PnRyLmFjdGl2ZT50aCwudGFibGU+dGJvZHk+dHI+dGQuYWN0aXZlLC50YWJsZT50Ym9keT50cj50aC5hY3RpdmUsLnRhYmxlPnRmb290PnRyLmFjdGl2ZT50ZCwudGFibGU+dGZvb3Q+dHIuYWN0aXZlPnRoLC50YWJsZT50Zm9vdD50cj50ZC5hY3RpdmUsLnRhYmxlPnRmb290PnRyPnRoLmFjdGl2ZSwudGFibGU+dGhlYWQ+dHIuYWN0aXZlPnRkLC50YWJsZT50aGVhZD50ci5hY3RpdmU+dGgsLnRhYmxlPnRoZWFkPnRyPnRkLmFjdGl2ZSwudGFibGU+dGhlYWQ+dHI+dGguYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0udGFibGUtaG92ZXI+dGJvZHk+dHIuYWN0aXZlOmhvdmVyPnRkLC50YWJsZS1ob3Zlcj50Ym9keT50ci5hY3RpdmU6aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5hY3RpdmUsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLmFjdGl2ZTpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHI+dGguYWN0aXZlOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2U4ZThlOH0udGFibGU+dGJvZHk+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGJvZHk+dHIuc3VjY2Vzcz50aCwudGFibGU+dGJvZHk+dHI+dGQuc3VjY2VzcywudGFibGU+dGJvZHk+dHI+dGguc3VjY2VzcywudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGZvb3Q+dHIuc3VjY2Vzcz50aCwudGFibGU+dGZvb3Q+dHI+dGQuc3VjY2VzcywudGFibGU+dGZvb3Q+dHI+dGguc3VjY2VzcywudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50ZCwudGFibGU+dGhlYWQ+dHIuc3VjY2Vzcz50aCwudGFibGU+dGhlYWQ+dHI+dGQuc3VjY2VzcywudGFibGU+dGhlYWQ+dHI+dGguc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9LnRhYmxlLWhvdmVyPnRib2R5PnRyLnN1Y2Nlc3M6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLnN1Y2Nlc3M6aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5zdWNjZXNzLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5zdWNjZXNzOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5zdWNjZXNzOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2QwZTljNn0udGFibGU+dGJvZHk+dHIuaW5mbz50ZCwudGFibGU+dGJvZHk+dHIuaW5mbz50aCwudGFibGU+dGJvZHk+dHI+dGQuaW5mbywudGFibGU+dGJvZHk+dHI+dGguaW5mbywudGFibGU+dGZvb3Q+dHIuaW5mbz50ZCwudGFibGU+dGZvb3Q+dHIuaW5mbz50aCwudGFibGU+dGZvb3Q+dHI+dGQuaW5mbywudGFibGU+dGZvb3Q+dHI+dGguaW5mbywudGFibGU+dGhlYWQ+dHIuaW5mbz50ZCwudGFibGU+dGhlYWQ+dHIuaW5mbz50aCwudGFibGU+dGhlYWQ+dHI+dGQuaW5mbywudGFibGU+dGhlYWQ+dHI+dGguaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjd9LnRhYmxlLWhvdmVyPnRib2R5PnRyLmluZm86aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLmluZm86aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi5pbmZvLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5pbmZvOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5pbmZvOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM30udGFibGU+dGJvZHk+dHIud2FybmluZz50ZCwudGFibGU+dGJvZHk+dHIud2FybmluZz50aCwudGFibGU+dGJvZHk+dHI+dGQud2FybmluZywudGFibGU+dGJvZHk+dHI+dGgud2FybmluZywudGFibGU+dGZvb3Q+dHIud2FybmluZz50ZCwudGFibGU+dGZvb3Q+dHIud2FybmluZz50aCwudGFibGU+dGZvb3Q+dHI+dGQud2FybmluZywudGFibGU+dGZvb3Q+dHI+dGgud2FybmluZywudGFibGU+dGhlYWQ+dHIud2FybmluZz50ZCwudGFibGU+dGhlYWQ+dHIud2FybmluZz50aCwudGFibGU+dGhlYWQ+dHI+dGQud2FybmluZywudGFibGU+dGhlYWQ+dHI+dGgud2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9LnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGgsLnRhYmxlLWhvdmVyPnRib2R5PnRyOmhvdmVyPi53YXJuaW5nLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC53YXJuaW5nOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC53YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZhZjJjY30udGFibGU+dGJvZHk+dHIuZGFuZ2VyPnRkLC50YWJsZT50Ym9keT50ci5kYW5nZXI+dGgsLnRhYmxlPnRib2R5PnRyPnRkLmRhbmdlciwudGFibGU+dGJvZHk+dHI+dGguZGFuZ2VyLC50YWJsZT50Zm9vdD50ci5kYW5nZXI+dGQsLnRhYmxlPnRmb290PnRyLmRhbmdlcj50aCwudGFibGU+dGZvb3Q+dHI+dGQuZGFuZ2VyLC50YWJsZT50Zm9vdD50cj50aC5kYW5nZXIsLnRhYmxlPnRoZWFkPnRyLmRhbmdlcj50ZCwudGFibGU+dGhlYWQ+dHIuZGFuZ2VyPnRoLC50YWJsZT50aGVhZD50cj50ZC5kYW5nZXIsLnRhYmxlPnRoZWFkPnRyPnRoLmRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9LnRhYmxlLWhvdmVyPnRib2R5PnRyLmRhbmdlcjpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHIuZGFuZ2VyOmhvdmVyPnRoLC50YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj4uZGFuZ2VyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5kYW5nZXI6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlYmNjY2N9LnRhYmxlLXJlc3BvbnNpdmV7bWluLWhlaWdodDouMDElO292ZXJmbG93LXg6YXV0b31AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KXsudGFibGUtcmVzcG9uc2l2ZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTVweDtvdmVyZmxvdy15OmhpZGRlbjstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyO2JvcmRlcjoxcHggc29saWQgI2RkZH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGV7bWFyZ2luLWJvdHRvbTowfS50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Ym9keT50cj50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGJvZHk+dHI+dGgsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRmb290PnRyPnRkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Zm9vdD50cj50aCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGhlYWQ+dHI+dGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRoZWFkPnRyPnRoe3doaXRlLXNwYWNlOm5vd3JhcH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6bGFzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aHtib3JkZXItYm90dG9tOjB9fWZpZWxkc2V0e21pbi13aWR0aDowO3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MH1sZWdlbmR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3BhZGRpbmc6MDttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zaXplOjIxcHg7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjojMzMzO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9bGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbTo1cHg7Zm9udC13ZWlnaHQ6NzAwfWlucHV0W3R5cGU9c2VhcmNoXXstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9aW5wdXRbdHlwZT1jaGVja2JveF0saW5wdXRbdHlwZT1yYWRpb117bWFyZ2luOjRweCAwIDA7bWFyZ2luLXRvcDoxcHhcOTtsaW5lLWhlaWdodDpub3JtYWx9aW5wdXRbdHlwZT1maWxlXXtkaXNwbGF5OmJsb2NrfWlucHV0W3R5cGU9cmFuZ2Vde2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX1zZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPWZpbGVdOmZvY3VzLGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzLGlucHV0W3R5cGU9cmFkaW9dOmZvY3Vze291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0ycHh9b3V0cHV0e2Rpc3BsYXk6YmxvY2s7cGFkZGluZy10b3A6N3B4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzU1NX0uZm9ybS1jb250cm9se2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MzRweDtwYWRkaW5nOjZweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzU1NTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTstd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7LW8tdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXN9LmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzY2YWZlOTtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA4cHggcmdiYSgxMDIsMTc1LDIzMywuNik7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgOHB4IHJnYmEoMTAyLDE3NSwyMzMsLjYpfS5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OTtvcGFjaXR5OjF9LmZvcm0tY29udHJvbDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0uZm9ybS1jb250cm9sOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTl9LmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5mb3JtLWNvbnRyb2xbZGlzYWJsZWRdLC5mb3JtLWNvbnRyb2xbcmVhZG9ubHldLGZpZWxkc2V0W2Rpc2FibGVkXSAuZm9ybS1jb250cm9se2JhY2tncm91bmQtY29sb3I6I2VlZTtvcGFjaXR5OjF9LmZvcm0tY29udHJvbFtkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5mb3JtLWNvbnRyb2x7Y3Vyc29yOm5vdC1hbGxvd2VkfXRleHRhcmVhLmZvcm0tY29udHJvbHtoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXtpbnB1dFt0eXBlPWRhdGVdLmZvcm0tY29udHJvbCxpbnB1dFt0eXBlPXRpbWVdLmZvcm0tY29udHJvbCxpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5mb3JtLWNvbnRyb2wsaW5wdXRbdHlwZT1tb250aF0uZm9ybS1jb250cm9se2xpbmUtaGVpZ2h0OjM0cHh9LmlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9ZGF0ZV0sLmlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9dGltZV0sLmlucHV0LWdyb3VwLXNtIGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLC5pbnB1dC1ncm91cC1zbSBpbnB1dFt0eXBlPW1vbnRoXSxpbnB1dFt0eXBlPWRhdGVdLmlucHV0LXNtLGlucHV0W3R5cGU9dGltZV0uaW5wdXQtc20saW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0uaW5wdXQtc20saW5wdXRbdHlwZT1tb250aF0uaW5wdXQtc217bGluZS1oZWlnaHQ6MzBweH0uaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT1kYXRlXSwuaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT10aW1lXSwuaW5wdXQtZ3JvdXAtbGcgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sLmlucHV0LWdyb3VwLWxnIGlucHV0W3R5cGU9bW9udGhdLGlucHV0W3R5cGU9ZGF0ZV0uaW5wdXQtbGcsaW5wdXRbdHlwZT10aW1lXS5pbnB1dC1sZyxpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXS5pbnB1dC1sZyxpbnB1dFt0eXBlPW1vbnRoXS5pbnB1dC1sZ3tsaW5lLWhlaWdodDo0NnB4fX0uZm9ybS1ncm91cHttYXJnaW4tYm90dG9tOjE1cHh9LmNoZWNrYm94LC5yYWRpb3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHh9LmNoZWNrYm94IGxhYmVsLC5yYWRpbyBsYWJlbHttaW4taGVpZ2h0OjIwcHg7cGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luLWJvdHRvbTowO2ZvbnQtd2VpZ2h0OjQwMDtjdXJzb3I6cG9pbnRlcn0uY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sLmNoZWNrYm94LWlubGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XSwucmFkaW8gaW5wdXRbdHlwZT1yYWRpb10sLnJhZGlvLWlubGluZSBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOjRweFw5O21hcmdpbi1sZWZ0Oi0yMHB4fS5jaGVja2JveCsuY2hlY2tib3gsLnJhZGlvKy5yYWRpb3ttYXJnaW4tdG9wOi01cHh9LmNoZWNrYm94LWlubGluZSwucmFkaW8taW5saW5le3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbi1ib3R0b206MDtmb250LXdlaWdodDo0MDA7dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyfS5jaGVja2JveC1pbmxpbmUrLmNoZWNrYm94LWlubGluZSwucmFkaW8taW5saW5lKy5yYWRpby1pbmxpbmV7bWFyZ2luLXRvcDowO21hcmdpbi1sZWZ0OjEwcHh9ZmllbGRzZXRbZGlzYWJsZWRdIGlucHV0W3R5cGU9Y2hlY2tib3hdLGZpZWxkc2V0W2Rpc2FibGVkXSBpbnB1dFt0eXBlPXJhZGlvXSxpbnB1dFt0eXBlPWNoZWNrYm94XS5kaXNhYmxlZCxpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF0saW5wdXRbdHlwZT1yYWRpb10uZGlzYWJsZWQsaW5wdXRbdHlwZT1yYWRpb11bZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZH0uY2hlY2tib3gtaW5saW5lLmRpc2FibGVkLC5yYWRpby1pbmxpbmUuZGlzYWJsZWQsZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveC1pbmxpbmUsZmllbGRzZXRbZGlzYWJsZWRdIC5yYWRpby1pbmxpbmV7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jaGVja2JveC5kaXNhYmxlZCBsYWJlbCwucmFkaW8uZGlzYWJsZWQgbGFiZWwsZmllbGRzZXRbZGlzYWJsZWRdIC5jaGVja2JveCBsYWJlbCxmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uZm9ybS1jb250cm9sLXN0YXRpY3ttaW4taGVpZ2h0OjM0cHg7cGFkZGluZy10b3A6N3B4O3BhZGRpbmctYm90dG9tOjdweDttYXJnaW4tYm90dG9tOjB9LmZvcm0tY29udHJvbC1zdGF0aWMuaW5wdXQtbGcsLmZvcm0tY29udHJvbC1zdGF0aWMuaW5wdXQtc217cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowfS5pbnB1dC1zbXtoZWlnaHQ6MzBweDtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH1zZWxlY3QuaW5wdXQtc217aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MzBweH1zZWxlY3RbbXVsdGlwbGVdLmlucHV0LXNtLHRleHRhcmVhLmlucHV0LXNte2hlaWdodDphdXRvfS5mb3JtLWdyb3VwLXNtIC5mb3JtLWNvbnRyb2x7aGVpZ2h0OjMwcHg7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmZvcm0tZ3JvdXAtc20gc2VsZWN0LmZvcm0tY29udHJvbHtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4fS5mb3JtLWdyb3VwLXNtIHNlbGVjdFttdWx0aXBsZV0uZm9ybS1jb250cm9sLC5mb3JtLWdyb3VwLXNtIHRleHRhcmVhLmZvcm0tY29udHJvbHtoZWlnaHQ6YXV0b30uZm9ybS1ncm91cC1zbSAuZm9ybS1jb250cm9sLXN0YXRpY3toZWlnaHQ6MzBweDttaW4taGVpZ2h0OjMycHg7cGFkZGluZzo2cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LmlucHV0LWxne2hlaWdodDo0NnB4O3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzMzMzMzMztib3JkZXItcmFkaXVzOjZweH1zZWxlY3QuaW5wdXQtbGd7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH1zZWxlY3RbbXVsdGlwbGVdLmlucHV0LWxnLHRleHRhcmVhLmlucHV0LWxne2hlaWdodDphdXRvfS5mb3JtLWdyb3VwLWxnIC5mb3JtLWNvbnRyb2x7aGVpZ2h0OjQ2cHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MS4zMzMzMzMzO2JvcmRlci1yYWRpdXM6NnB4fS5mb3JtLWdyb3VwLWxnIHNlbGVjdC5mb3JtLWNvbnRyb2x7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH0uZm9ybS1ncm91cC1sZyBzZWxlY3RbbXVsdGlwbGVdLmZvcm0tY29udHJvbCwuZm9ybS1ncm91cC1sZyB0ZXh0YXJlYS5mb3JtLWNvbnRyb2x7aGVpZ2h0OmF1dG99LmZvcm0tZ3JvdXAtbGcgLmZvcm0tY29udHJvbC1zdGF0aWN7aGVpZ2h0OjQ2cHg7bWluLWhlaWdodDozOHB4O3BhZGRpbmc6MTFweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzMzMzMzM30uaGFzLWZlZWRiYWNre3Bvc2l0aW9uOnJlbGF0aXZlfS5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbHtwYWRkaW5nLXJpZ2h0OjQyLjVweH0uZm9ybS1jb250cm9sLWZlZWRiYWNre3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7ei1pbmRleDoyO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO3BvaW50ZXItZXZlbnRzOm5vbmV9LmZvcm0tZ3JvdXAtbGcgLmZvcm0tY29udHJvbCsuZm9ybS1jb250cm9sLWZlZWRiYWNrLC5pbnB1dC1ncm91cC1sZysuZm9ybS1jb250cm9sLWZlZWRiYWNrLC5pbnB1dC1sZysuZm9ybS1jb250cm9sLWZlZWRiYWNre3dpZHRoOjQ2cHg7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH0uZm9ybS1ncm91cC1zbSAuZm9ybS1jb250cm9sKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssLmlucHV0LWdyb3VwLXNtKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2ssLmlucHV0LXNtKy5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4fS5oYXMtc3VjY2VzcyAuY2hlY2tib3gsLmhhcy1zdWNjZXNzIC5jaGVja2JveC1pbmxpbmUsLmhhcy1zdWNjZXNzIC5jb250cm9sLWxhYmVsLC5oYXMtc3VjY2VzcyAuaGVscC1ibG9jaywuaGFzLXN1Y2Nlc3MgLnJhZGlvLC5oYXMtc3VjY2VzcyAucmFkaW8taW5saW5lLC5oYXMtc3VjY2Vzcy5jaGVja2JveCBsYWJlbCwuaGFzLXN1Y2Nlc3MuY2hlY2tib3gtaW5saW5lIGxhYmVsLC5oYXMtc3VjY2Vzcy5yYWRpbyBsYWJlbCwuaGFzLXN1Y2Nlc3MucmFkaW8taW5saW5lIGxhYmVse2NvbG9yOiMzYzc2M2R9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2x7Ym9yZGVyLWNvbG9yOiMzYzc2M2Q7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSl9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2w6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMyYjU0MmM7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggIzY3YjE2ODtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggIzY3YjE2OH0uaGFzLXN1Y2Nlc3MgLmlucHV0LWdyb3VwLWFkZG9ue2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojM2M3NjNkfS5oYXMtc3VjY2VzcyAuZm9ybS1jb250cm9sLWZlZWRiYWNre2NvbG9yOiMzYzc2M2R9Lmhhcy13YXJuaW5nIC5jaGVja2JveCwuaGFzLXdhcm5pbmcgLmNoZWNrYm94LWlubGluZSwuaGFzLXdhcm5pbmcgLmNvbnRyb2wtbGFiZWwsLmhhcy13YXJuaW5nIC5oZWxwLWJsb2NrLC5oYXMtd2FybmluZyAucmFkaW8sLmhhcy13YXJuaW5nIC5yYWRpby1pbmxpbmUsLmhhcy13YXJuaW5nLmNoZWNrYm94IGxhYmVsLC5oYXMtd2FybmluZy5jaGVja2JveC1pbmxpbmUgbGFiZWwsLmhhcy13YXJuaW5nLnJhZGlvIGxhYmVsLC5oYXMtd2FybmluZy5yYWRpby1pbmxpbmUgbGFiZWx7Y29sb3I6IzhhNmQzYn0uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6IzhhNmQzYjstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzY2NTEyYzstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjYzBhMTZiO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjYzBhMTZifS5oYXMtd2FybmluZyAuaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiM4YTZkM2J9Lmhhcy13YXJuaW5nIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7Y29sb3I6IzhhNmQzYn0uaGFzLWVycm9yIC5jaGVja2JveCwuaGFzLWVycm9yIC5jaGVja2JveC1pbmxpbmUsLmhhcy1lcnJvciAuY29udHJvbC1sYWJlbCwuaGFzLWVycm9yIC5oZWxwLWJsb2NrLC5oYXMtZXJyb3IgLnJhZGlvLC5oYXMtZXJyb3IgLnJhZGlvLWlubGluZSwuaGFzLWVycm9yLmNoZWNrYm94IGxhYmVsLC5oYXMtZXJyb3IuY2hlY2tib3gtaW5saW5lIGxhYmVsLC5oYXMtZXJyb3IucmFkaW8gbGFiZWwsLmhhcy1lcnJvci5yYWRpby1pbmxpbmUgbGFiZWx7Y29sb3I6I2E5NDQ0Mn0uaGFzLWVycm9yIC5mb3JtLWNvbnRyb2x7Ym9yZGVyLWNvbG9yOiNhOTQ0NDI7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSl9Lmhhcy1lcnJvciAuZm9ybS1jb250cm9sOmZvY3Vze2JvcmRlci1jb2xvcjojODQzNTM0Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICNjZTg0ODM7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICNjZTg0ODN9Lmhhcy1lcnJvciAuaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6I2E5NDQ0MjtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGU7Ym9yZGVyLWNvbG9yOiNhOTQ0NDJ9Lmhhcy1lcnJvciAuZm9ybS1jb250cm9sLWZlZWRiYWNre2NvbG9yOiNhOTQ0NDJ9Lmhhcy1mZWVkYmFjayBsYWJlbH4uZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDoyNXB4fS5oYXMtZmVlZGJhY2sgbGFiZWwuc3Itb25seX4uZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDowfS5oZWxwLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHg7bWFyZ2luLWJvdHRvbToxMHB4O2NvbG9yOiM3MzczNzN9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mb3JtLWlubGluZSAuZm9ybS1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuZm9ybS1jb250cm9se2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOmF1dG87dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXN0YXRpY3tkaXNwbGF5OmlubGluZS1ibG9ja30uZm9ybS1pbmxpbmUgLmlucHV0LWdyb3Vwe2Rpc3BsYXk6aW5saW5lLXRhYmxlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9ybS1pbmxpbmUgLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2wsLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYWRkb24sLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtYnRue3dpZHRoOmF1dG99LmZvcm0taW5saW5lIC5pbnB1dC1ncm91cD4uZm9ybS1jb250cm9se3dpZHRoOjEwMCV9LmZvcm0taW5saW5lIC5jb250cm9sLWxhYmVse21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5jaGVja2JveCwuZm9ybS1pbmxpbmUgLnJhZGlve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuY2hlY2tib3ggbGFiZWwsLmZvcm0taW5saW5lIC5yYWRpbyBsYWJlbHtwYWRkaW5nLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLC5mb3JtLWlubGluZSAucmFkaW8gaW5wdXRbdHlwZT1yYWRpb117cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWxlZnQ6MH0uZm9ybS1pbmxpbmUgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3RvcDowfX0uZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCwuZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveC1pbmxpbmUsLmZvcm0taG9yaXpvbnRhbCAucmFkaW8sLmZvcm0taG9yaXpvbnRhbCAucmFkaW8taW5saW5le3BhZGRpbmctdG9wOjdweDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5mb3JtLWhvcml6b250YWwgLmNoZWNrYm94LC5mb3JtLWhvcml6b250YWwgLnJhZGlve21pbi1oZWlnaHQ6MjdweH0uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3Vwe21hcmdpbi1yaWdodDotMTVweDttYXJnaW4tbGVmdDotMTVweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1sYWJlbHtwYWRkaW5nLXRvcDo3cHg7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246cmlnaHR9fS5mb3JtLWhvcml6b250YWwgLmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9sLWZlZWRiYWNre3JpZ2h0OjE1cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtbGcgLmNvbnRyb2wtbGFiZWx7cGFkZGluZy10b3A6MTFweDtmb250LXNpemU6MThweH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXAtc20gLmNvbnRyb2wtbGFiZWx7cGFkZGluZy10b3A6NnB4O2ZvbnQtc2l6ZToxMnB4fX0uYnRue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NnB4IDEycHg7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LW1zLXRvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjtjdXJzb3I6cG9pbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHh9LmJ0bi5hY3RpdmUuZm9jdXMsLmJ0bi5hY3RpdmU6Zm9jdXMsLmJ0bi5mb2N1cywuYnRuOmFjdGl2ZS5mb2N1cywuYnRuOmFjdGl2ZTpmb2N1cywuYnRuOmZvY3Vze291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0ycHh9LmJ0bi5mb2N1cywuYnRuOmZvY3VzLC5idG46aG92ZXJ7Y29sb3I6IzMzMzt0ZXh0LWRlY29yYXRpb246bm9uZX0uYnRuLmFjdGl2ZSwuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7b3V0bGluZTowOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KTtib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpfS5idG4uZGlzYWJsZWQsLmJ0bltkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG57Y3Vyc29yOm5vdC1hbGxvd2VkO2ZpbHRlcjphbHBoYShvcGFjaXR5PTY1KTstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7b3BhY2l0eTouNjV9YS5idG4uZGlzYWJsZWQsZmllbGRzZXRbZGlzYWJsZWRdIGEuYnRue3BvaW50ZXItZXZlbnRzOm5vbmV9LmJ0bi1kZWZhdWx0e2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojY2NjfS5idG4tZGVmYXVsdC5mb2N1cywuYnRuLWRlZmF1bHQ6Zm9jdXN7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiM4YzhjOGN9LmJ0bi1kZWZhdWx0OmhvdmVye2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5idG4tZGVmYXVsdC5hY3RpdmUsLmJ0bi1kZWZhdWx0OmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0e2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5idG4tZGVmYXVsdC5hY3RpdmUuZm9jdXMsLmJ0bi1kZWZhdWx0LmFjdGl2ZTpmb2N1cywuYnRuLWRlZmF1bHQuYWN0aXZlOmhvdmVyLC5idG4tZGVmYXVsdDphY3RpdmUuZm9jdXMsLmJ0bi1kZWZhdWx0OmFjdGl2ZTpmb2N1cywuYnRuLWRlZmF1bHQ6YWN0aXZlOmhvdmVyLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLWRlZmF1bHQuZm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGVmYXVsdDpmb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0OmhvdmVye2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZDRkNGQ0O2JvcmRlci1jb2xvcjojOGM4YzhjfS5idG4tZGVmYXVsdC5hY3RpdmUsLmJ0bi1kZWZhdWx0OmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kZWZhdWx0e2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWRlZmF1bHQuZGlzYWJsZWQuZm9jdXMsLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmZvY3VzLC5idG4tZGVmYXVsdC5kaXNhYmxlZDpob3ZlciwuYnRuLWRlZmF1bHRbZGlzYWJsZWRdLmZvY3VzLC5idG4tZGVmYXVsdFtkaXNhYmxlZF06Zm9jdXMsLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0LmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQ6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNjY2N9LmJ0bi1kZWZhdWx0IC5iYWRnZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMzM30uYnRuLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMDRmZmU7Ym9yZGVyLWNvbG9yOiMyZTZkYTR9LmJ0bi1wcmltYXJ5LmZvY3VzLC5idG4tcHJpbWFyeTpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzI4NjA5MDtib3JkZXItY29sb3I6IzEyMmI0MH0uYnRuLXByaW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyODYwOTA7Ym9yZGVyLWNvbG9yOiMyMDRkNzR9LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuYnRuLXByaW1hcnk6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyODYwOTA7Ym9yZGVyLWNvbG9yOiMyMDRkNzR9LmJ0bi1wcmltYXJ5LmFjdGl2ZS5mb2N1cywuYnRuLXByaW1hcnkuYWN0aXZlOmZvY3VzLC5idG4tcHJpbWFyeS5hY3RpdmU6aG92ZXIsLmJ0bi1wcmltYXJ5OmFjdGl2ZS5mb2N1cywuYnRuLXByaW1hcnk6YWN0aXZlOmZvY3VzLC5idG4tcHJpbWFyeTphY3RpdmU6aG92ZXIsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeS5mb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1wcmltYXJ5OmZvY3VzLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXByaW1hcnk6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyMDRkNzQ7Ym9yZGVyLWNvbG9yOiMxMjJiNDB9LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuYnRuLXByaW1hcnk6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXByaW1hcnl7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4tcHJpbWFyeS5kaXNhYmxlZC5mb2N1cywuYnRuLXByaW1hcnkuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmhvdmVyLC5idG4tcHJpbWFyeVtkaXNhYmxlZF0uZm9jdXMsLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXTpmb2N1cywuYnRuLXByaW1hcnlbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnkuZm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzMwNGZmZTtib3JkZXItY29sb3I6IzJlNmRhNH0uYnRuLXByaW1hcnkgLmJhZGdle2NvbG9yOiMzMDRmZmU7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwYmY0Zjtib3JkZXItY29sb3I6IzRjYWU0Y30uYnRuLXN1Y2Nlc3MuZm9jdXMsLmJ0bi1zdWNjZXNzOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNDQ5ZDQ0O2JvcmRlci1jb2xvcjojMjU1NjI1fS5idG4tc3VjY2Vzczpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQ0OWQ0NDtib3JkZXItY29sb3I6IzM5ODQzOX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLC5idG4tc3VjY2VzczphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQ0OWQ0NDtib3JkZXItY29sb3I6IzM5ODQzOX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLmZvY3VzLC5idG4tc3VjY2Vzcy5hY3RpdmU6Zm9jdXMsLmJ0bi1zdWNjZXNzLmFjdGl2ZTpob3ZlciwuYnRuLXN1Y2Nlc3M6YWN0aXZlLmZvY3VzLC5idG4tc3VjY2VzczphY3RpdmU6Zm9jdXMsLmJ0bi1zdWNjZXNzOmFjdGl2ZTpob3Zlciwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNzLmZvY3VzLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXN1Y2Nlc3M6Zm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2Vzczpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzM5ODQzOTtib3JkZXItY29sb3I6IzI1NTYyNX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLC5idG4tc3VjY2VzczphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tc3VjY2Vzc3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmJ0bi1zdWNjZXNzLmRpc2FibGVkLmZvY3VzLC5idG4tc3VjY2Vzcy5kaXNhYmxlZDpmb2N1cywuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6aG92ZXIsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXS5mb2N1cywuYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmZvY3VzLC5idG4tc3VjY2Vzc1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzcy5mb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDBiZjRmO2JvcmRlci1jb2xvcjojNGNhZTRjfS5idG4tc3VjY2VzcyAuYmFkZ2V7Y29sb3I6IzAwYmY0ZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJ0bi1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDBhZWZmO2JvcmRlci1jb2xvcjojNDZiOGRhfS5idG4taW5mby5mb2N1cywuYnRuLWluZm86Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMWIwZDU7Ym9yZGVyLWNvbG9yOiMxYjZkODV9LmJ0bi1pbmZvOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzFiMGQ1O2JvcmRlci1jb2xvcjojMjY5YWJjfS5idG4taW5mby5hY3RpdmUsLmJ0bi1pbmZvOmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMzFiMGQ1O2JvcmRlci1jb2xvcjojMjY5YWJjfS5idG4taW5mby5hY3RpdmUuZm9jdXMsLmJ0bi1pbmZvLmFjdGl2ZTpmb2N1cywuYnRuLWluZm8uYWN0aXZlOmhvdmVyLC5idG4taW5mbzphY3RpdmUuZm9jdXMsLmJ0bi1pbmZvOmFjdGl2ZTpmb2N1cywuYnRuLWluZm86YWN0aXZlOmhvdmVyLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLWluZm8uZm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4taW5mbzpmb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZvOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjY5YWJjO2JvcmRlci1jb2xvcjojMWI2ZDg1fS5idG4taW5mby5hY3RpdmUsLmJ0bi1pbmZvOmFjdGl2ZSwub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1pbmZve2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWluZm8uZGlzYWJsZWQuZm9jdXMsLmJ0bi1pbmZvLmRpc2FibGVkOmZvY3VzLC5idG4taW5mby5kaXNhYmxlZDpob3ZlciwuYnRuLWluZm9bZGlzYWJsZWRdLmZvY3VzLC5idG4taW5mb1tkaXNhYmxlZF06Zm9jdXMsLmJ0bi1pbmZvW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvLmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm86Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMwMGFlZmY7Ym9yZGVyLWNvbG9yOiM0NmI4ZGF9LmJ0bi1pbmZvIC5iYWRnZXtjb2xvcjojMDBhZWZmO2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYnRuLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmEwMDA7Ym9yZGVyLWNvbG9yOiNlZWEyMzZ9LmJ0bi13YXJuaW5nLmZvY3VzLC5idG4td2FybmluZzpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2VjOTcxZjtib3JkZXItY29sb3I6Izk4NWYwZH0uYnRuLXdhcm5pbmc6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlYzk3MWY7Ym9yZGVyLWNvbG9yOiNkNTg1MTJ9LmJ0bi13YXJuaW5nLmFjdGl2ZSwuYnRuLXdhcm5pbmc6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlYzk3MWY7Ym9yZGVyLWNvbG9yOiNkNTg1MTJ9LmJ0bi13YXJuaW5nLmFjdGl2ZS5mb2N1cywuYnRuLXdhcm5pbmcuYWN0aXZlOmZvY3VzLC5idG4td2FybmluZy5hY3RpdmU6aG92ZXIsLmJ0bi13YXJuaW5nOmFjdGl2ZS5mb2N1cywuYnRuLXdhcm5pbmc6YWN0aXZlOmZvY3VzLC5idG4td2FybmluZzphY3RpdmU6aG92ZXIsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZy5mb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi13YXJuaW5nOmZvY3VzLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmc6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNkNTg1MTI7Ym9yZGVyLWNvbG9yOiM5ODVmMGR9LmJ0bi13YXJuaW5nLmFjdGl2ZSwuYnRuLXdhcm5pbmc6YWN0aXZlLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4td2FybmluZy5kaXNhYmxlZC5mb2N1cywuYnRuLXdhcm5pbmcuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5idG4td2FybmluZ1tkaXNhYmxlZF0uZm9jdXMsLmJ0bi13YXJuaW5nW2Rpc2FibGVkXTpmb2N1cywuYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmcuZm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZzpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmYTAwMDtib3JkZXItY29sb3I6I2VlYTIzNn0uYnRuLXdhcm5pbmcgLmJhZGdle2NvbG9yOiNmZmEwMDA7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZTUzOTM1O2JvcmRlci1jb2xvcjojZDQzZjNhfS5idG4tZGFuZ2VyLmZvY3VzLC5idG4tZGFuZ2VyOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojNzYxYzE5fS5idG4tZGFuZ2VyOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojYWMyOTI1fS5idG4tZGFuZ2VyLmFjdGl2ZSwuYnRuLWRhbmdlcjphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjO2JvcmRlci1jb2xvcjojYWMyOTI1fS5idG4tZGFuZ2VyLmFjdGl2ZS5mb2N1cywuYnRuLWRhbmdlci5hY3RpdmU6Zm9jdXMsLmJ0bi1kYW5nZXIuYWN0aXZlOmhvdmVyLC5idG4tZGFuZ2VyOmFjdGl2ZS5mb2N1cywuYnRuLWRhbmdlcjphY3RpdmU6Zm9jdXMsLmJ0bi1kYW5nZXI6YWN0aXZlOmhvdmVyLC5vcGVuPi5kcm9wZG93bi10b2dnbGUuYnRuLWRhbmdlci5mb2N1cywub3Blbj4uZHJvcGRvd24tdG9nZ2xlLmJ0bi1kYW5nZXI6Zm9jdXMsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2VyOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYWMyOTI1O2JvcmRlci1jb2xvcjojNzYxYzE5fS5idG4tZGFuZ2VyLmFjdGl2ZSwuYnRuLWRhbmdlcjphY3RpdmUsLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2Vye2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWRhbmdlci5kaXNhYmxlZC5mb2N1cywuYnRuLWRhbmdlci5kaXNhYmxlZDpmb2N1cywuYnRuLWRhbmdlci5kaXNhYmxlZDpob3ZlciwuYnRuLWRhbmdlcltkaXNhYmxlZF0uZm9jdXMsLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmZvY3VzLC5idG4tZGFuZ2VyW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXIuZm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNTM5MzU7Ym9yZGVyLWNvbG9yOiNkNDNmM2F9LmJ0bi1kYW5nZXIgLmJhZGdle2NvbG9yOiNlNTM5MzU7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tbGlua3tmb250LXdlaWdodDo0MDA7Y29sb3I6IzMwNGZmZTtib3JkZXItcmFkaXVzOjB9LmJ0bi1saW5rLC5idG4tbGluay5hY3RpdmUsLmJ0bi1saW5rOmFjdGl2ZSwuYnRuLWxpbmtbZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWxpbmt7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LmJ0bi1saW5rLC5idG4tbGluazphY3RpdmUsLmJ0bi1saW5rOmZvY3VzLC5idG4tbGluazpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmJ0bi1saW5rOmZvY3VzLC5idG4tbGluazpob3Zlcntjb2xvcjojMjM1MjdjO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLC5idG4tbGlua1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1saW5rOmhvdmVye2NvbG9yOiM3Nzc7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmJ0bi1ncm91cC1sZz4uYnRuLC5idG4tbGd7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MS4zMzMzMzMzO2JvcmRlci1yYWRpdXM6NnB4fS5idG4tZ3JvdXAtc20+LmJ0biwuYnRuLXNte3BhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6M3B4fS5idG4tZ3JvdXAteHM+LmJ0biwuYnRuLXhze3BhZGRpbmc6MXB4IDVweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmJ0bi1ibG9ja3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmJ0bi1ibG9jaysuYnRuLWJsb2Nre21hcmdpbi10b3A6NXB4fWlucHV0W3R5cGU9YnV0dG9uXS5idG4tYmxvY2ssaW5wdXRbdHlwZT1yZXNldF0uYnRuLWJsb2NrLGlucHV0W3R5cGU9c3VibWl0XS5idG4tYmxvY2t7d2lkdGg6MTAwJX0uZmFkZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXI7LW8tdHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0uZmFkZS5pbntvcGFjaXR5OjF9LmNvbGxhcHNle2Rpc3BsYXk6bm9uZX0uY29sbGFwc2UuaW57ZGlzcGxheTpibG9ja310ci5jb2xsYXBzZS5pbntkaXNwbGF5OnRhYmxlLXJvd310Ym9keS5jb2xsYXBzZS5pbntkaXNwbGF5OnRhYmxlLXJvdy1ncm91cH0uY29sbGFwc2luZ3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlOy1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2U7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZTstd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246LjM1czstby10cmFuc2l0aW9uLWR1cmF0aW9uOi4zNXM7dHJhbnNpdGlvbi1kdXJhdGlvbjouMzVzOy13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTpoZWlnaHQsdmlzaWJpbGl0eTstby10cmFuc2l0aW9uLXByb3BlcnR5OmhlaWdodCx2aXNpYmlsaXR5O3RyYW5zaXRpb24tcHJvcGVydHk6aGVpZ2h0LHZpc2liaWxpdHl9LmNhcmV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLWxlZnQ6MnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3JkZXItdG9wOjRweCBkYXNoZWQ7Ym9yZGVyLXRvcDo0cHggc29saWRcOTtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcGRvd24sLmRyb3B1cHtwb3NpdGlvbjpyZWxhdGl2ZX0uZHJvcGRvd24tdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0uZHJvcGRvd24tbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7ei1pbmRleDoxMDAwO2Rpc3BsYXk6bm9uZTtmbG9hdDpsZWZ0O21pbi13aWR0aDoxNjBweDtwYWRkaW5nOjVweCAwO21hcmdpbjoycHggMCAwO2ZvbnQtc2l6ZToxNHB4O3RleHQtYWxpZ246bGVmdDtsaXN0LXN0eWxlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmOy13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTtib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KX0uZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wZG93bi1tZW51IC5kaXZpZGVye2hlaWdodDoxcHg7bWFyZ2luOjlweCAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTV9LmRyb3Bkb3duLW1lbnU+bGk+YXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDIwcHg7Y2xlYXI6Ym90aDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mztjb2xvcjojMzMzO3doaXRlLXNwYWNlOm5vd3JhcH0uZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXJ7Y29sb3I6IzI2MjYyNjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9LmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1cywuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMzMDRmZmU7b3V0bGluZTowfS5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hLC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3VzLC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiM3Nzd9LmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXMsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9Lm9wZW4+LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9ja30ub3Blbj5he291dGxpbmU6MH0uZHJvcGRvd24tbWVudS1yaWdodHtyaWdodDowO2xlZnQ6YXV0b30uZHJvcGRvd24tbWVudS1sZWZ0e3JpZ2h0OmF1dG87bGVmdDowfS5kcm9wZG93bi1oZWFkZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweCAyMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6Izc3Nzt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLWJhY2tkcm9we3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6OTkwfS5wdWxsLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wdXAgLmNhcmV0LC5uYXZiYXItZml4ZWQtYm90dG9tIC5kcm9wZG93biAuY2FyZXR7Y29udGVudDoiIjtib3JkZXItdG9wOjA7Ym9yZGVyLWJvdHRvbTo0cHggZGFzaGVkO2JvcmRlci1ib3R0b206NHB4IHNvbGlkXDl9LmRyb3B1cCAuZHJvcGRvd24tbWVudSwubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCU7bWFyZ2luLWJvdHRvbToycHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99Lm5hdmJhci1yaWdodCAuZHJvcGRvd24tbWVudS1sZWZ0e3JpZ2h0OmF1dG87bGVmdDowfX0uYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0biwuYnRuLWdyb3VwPi5idG57cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4uYWN0aXZlLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjphY3RpdmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZvY3VzLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpob3ZlciwuYnRuLWdyb3VwPi5idG4uYWN0aXZlLC5idG4tZ3JvdXA+LmJ0bjphY3RpdmUsLmJ0bi1ncm91cD4uYnRuOmZvY3VzLC5idG4tZ3JvdXA+LmJ0bjpob3Zlcnt6LWluZGV4OjJ9LmJ0bi1ncm91cCAuYnRuKy5idG4sLmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAsLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4sLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4tZ3JvdXB7bWFyZ2luLWxlZnQ6LTFweH0uYnRuLXRvb2xiYXJ7bWFyZ2luLWxlZnQ6LTVweH0uYnRuLXRvb2xiYXIgLmJ0biwuYnRuLXRvb2xiYXIgLmJ0bi1ncm91cCwuYnRuLXRvb2xiYXIgLmlucHV0LWdyb3Vwe2Zsb2F0OmxlZnR9LmJ0bi10b29sYmFyPi5idG4sLmJ0bi10b29sYmFyPi5idG4tZ3JvdXAsLmJ0bi10b29sYmFyPi5pbnB1dC1ncm91cHttYXJnaW4tbGVmdDo1cHh9LmJ0bi1ncm91cD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpe2JvcmRlci1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLC5idG4tZ3JvdXA+LmRyb3Bkb3duLXRvZ2dsZTpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cHtmbG9hdDpsZWZ0fS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5idG46bGFzdC1jaGlsZCwuYnRuLWdyb3VwPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwuYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZXtvdXRsaW5lOjB9LmJ0bi1ncm91cD4uYnRuKy5kcm9wZG93bi10b2dnbGV7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjhweH0uYnRuLWdyb3VwPi5idG4tbGcrLmRyb3Bkb3duLXRvZ2dsZXtwYWRkaW5nLXJpZ2h0OjEycHg7cGFkZGluZy1sZWZ0OjEycHh9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGV7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpO2JveC1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSl9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWxpbmt7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5idG4gLmNhcmV0e21hcmdpbi1sZWZ0OjB9LmJ0bi1sZyAuY2FyZXR7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItYm90dG9tLXdpZHRoOjB9LmRyb3B1cCAuYnRuLWxnIC5jYXJldHtib3JkZXItd2lkdGg6MCA1cHggNXB4fS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZGlzcGxheTpibG9jaztmbG9hdDpub25lO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZmxvYXQ6bm9uZX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0bi1ncm91cCwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0bi1ncm91cHttYXJnaW4tdG9wOi0xcHg7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKT4uYnRue2JvcmRlci1yYWRpdXM6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uYnRuOmxhc3QtY2hpbGQsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk+LmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXAtanVzdGlmaWVke2Rpc3BsYXk6dGFibGU7d2lkdGg6MTAwJTt0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlfS5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4sLmJ0bi1ncm91cC1qdXN0aWZpZWQ+LmJ0bi1ncm91cHtkaXNwbGF5OnRhYmxlLWNlbGw7ZmxvYXQ6bm9uZTt3aWR0aDoxJX0uYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3VwIC5idG57d2lkdGg6MTAwJX0uYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51e2xlZnQ6YXV0b31bZGF0YS10b2dnbGU9YnV0dG9uc10+LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XSxbZGF0YS10b2dnbGU9YnV0dG9uc10+LmJ0biBpbnB1dFt0eXBlPXJhZGlvXSxbZGF0YS10b2dnbGU9YnV0dG9uc10+LmJ0bi1ncm91cD4uYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdLFtkYXRhLXRvZ2dsZT1idXR0b25zXT4uYnRuLWdyb3VwPi5idG4gaW5wdXRbdHlwZT1yYWRpb117cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDAsMCwwLDApO3BvaW50ZXItZXZlbnRzOm5vbmV9LmlucHV0LWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlfS5pbnB1dC1ncm91cFtjbGFzcyo9Y29sLV17ZmxvYXQ6bm9uZTtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2x7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjB9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6Zm9jdXN7ei1pbmRleDozfS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6NDZweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjMzMzMzMzM7Ym9yZGVyLXJhZGl1czo2cHh9c2VsZWN0LmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsc2VsZWN0LmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1hZGRvbixzZWxlY3QuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDo0NnB4O2xpbmUtaGVpZ2h0OjQ2cHh9c2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWJ0bj4uYnRuLHRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6YXV0b30uaW5wdXQtZ3JvdXAtc20+LmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OjMwcHg7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9c2VsZWN0LmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsc2VsZWN0LmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hZGRvbixzZWxlY3QuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHh9c2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHNlbGVjdFttdWx0aXBsZV0uaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRuLHRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsdGV4dGFyZWEuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6YXV0b30uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCwuaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLWJ0bntkaXNwbGF5OnRhYmxlLWNlbGx9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czowfS5pbnB1dC1ncm91cC1hZGRvbiwuaW5wdXQtZ3JvdXAtYnRue3dpZHRoOjElO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmlucHV0LWdyb3VwLWFkZG9ue3BhZGRpbmc6NnB4IDEycHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6IzU1NTt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4fS5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1zbXtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2JvcmRlci1yYWRpdXM6M3B4fS5pbnB1dC1ncm91cC1hZGRvbi5pbnB1dC1sZ3twYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtib3JkZXItcmFkaXVzOjZweH0uaW5wdXQtZ3JvdXAtYWRkb24gaW5wdXRbdHlwZT1jaGVja2JveF0sLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9cmFkaW9de21hcmdpbi10b3A6MH0uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpmaXJzdC1jaGlsZCwuaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGQsLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmRyb3Bkb3duLXRvZ2dsZSwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5pbnB1dC1ncm91cC1hZGRvbjpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpsYXN0LWNoaWxkLC5pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNoaWxkLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKT4uYnRuLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLC5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmlucHV0LWdyb3VwLWFkZG9uOmxhc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0uaW5wdXQtZ3JvdXAtYnRue3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTowO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5wdXQtZ3JvdXAtYnRuPi5idG57cG9zaXRpb246cmVsYXRpdmV9LmlucHV0LWdyb3VwLWJ0bj4uYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweH0uaW5wdXQtZ3JvdXAtYnRuPi5idG46YWN0aXZlLC5pbnB1dC1ncm91cC1idG4+LmJ0bjpmb2N1cywuaW5wdXQtZ3JvdXAtYnRuPi5idG46aG92ZXJ7ei1pbmRleDoyfS5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4tZ3JvdXB7bWFyZ2luLXJpZ2h0Oi0xcHh9LmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4tZ3JvdXB7ei1pbmRleDoyO21hcmdpbi1sZWZ0Oi0xcHh9Lm5hdntwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7bGlzdC1zdHlsZTpub25lfS5uYXY+bGl7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9ja30ubmF2PmxpPmF7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHggMTVweH0ubmF2PmxpPmE6Zm9jdXMsLm5hdj5saT5hOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubmF2PmxpLmRpc2FibGVkPmF7Y29sb3I6Izc3N30ubmF2PmxpLmRpc2FibGVkPmE6Zm9jdXMsLm5hdj5saS5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiM3Nzc7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdiAub3Blbj5hLC5uYXYgLm9wZW4+YTpmb2N1cywubmF2IC5vcGVuPmE6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlci1jb2xvcjojMzA0ZmZlfS5uYXYgLm5hdi1kaXZpZGVye2hlaWdodDoxcHg7bWFyZ2luOjlweCAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTV9Lm5hdj5saT5hPmltZ3ttYXgtd2lkdGg6bm9uZX0ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ubmF2LXRhYnM+bGl7ZmxvYXQ6bGVmdDttYXJnaW4tYm90dG9tOi0xcHh9Lm5hdi10YWJzPmxpPmF7bWFyZ2luLXJpZ2h0OjJweDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMH0ubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZSAjZWVlICNkZGR9Lm5hdi10YWJzPmxpLmFjdGl2ZT5hLC5uYXYtdGFicz5saS5hY3RpdmU+YTpmb2N1cywubmF2LXRhYnM+bGkuYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzU1NTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWR7d2lkdGg6MTAwJTtib3JkZXItYm90dG9tOjB9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGl7ZmxvYXQ6bm9uZX0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5he21hcmdpbi1ib3R0b206NXB4O3RleHQtYWxpZ246Y2VudGVyfS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5kcm9wZG93biAuZHJvcGRvd24tbWVudXt0b3A6YXV0bztsZWZ0OmF1dG99QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpe2Rpc3BsYXk6dGFibGUtY2VsbDt3aWR0aDoxJX0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5he21hcmdpbi1ib3R0b206MH19Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tcmlnaHQ6MDtib3JkZXItcmFkaXVzOjRweH0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmZvY3VzLC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICNkZGR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpPmF7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwfS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YSwubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXMsLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVye2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn19Lm5hdi1waWxscz5saXtmbG9hdDpsZWZ0fS5uYXYtcGlsbHM+bGk+YXtib3JkZXItcmFkaXVzOjRweH0ubmF2LXBpbGxzPmxpK2xpe21hcmdpbi1sZWZ0OjJweH0ubmF2LXBpbGxzPmxpLmFjdGl2ZT5hLC5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6Zm9jdXMsLm5hdi1waWxscz5saS5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMwNGZmZX0ubmF2LXN0YWNrZWQ+bGl7ZmxvYXQ6bm9uZX0ubmF2LXN0YWNrZWQ+bGkrbGl7bWFyZ2luLXRvcDoycHg7bWFyZ2luLWxlZnQ6MH0ubmF2LWp1c3RpZmllZHt3aWR0aDoxMDAlfS5uYXYtanVzdGlmaWVkPmxpe2Zsb2F0Om5vbmV9Lm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tYm90dG9tOjVweDt0ZXh0LWFsaWduOmNlbnRlcn0ubmF2LWp1c3RpZmllZD4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87bGVmdDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LWp1c3RpZmllZD5saXtkaXNwbGF5OnRhYmxlLWNlbGw7d2lkdGg6MSV9Lm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tYm90dG9tOjB9fS5uYXYtdGFicy1qdXN0aWZpZWR7Ym9yZGVyLWJvdHRvbTowfS5uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tcmlnaHQ6MDtib3JkZXItcmFkaXVzOjRweH0ubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YSwubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YTpmb2N1cywubmF2LXRhYnMtanVzdGlmaWVkPi5hY3RpdmU+YTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICNkZGR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXYtdGFicy1qdXN0aWZpZWQ+bGk+YXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDB9Lm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXMsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6aG92ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfX0udGFiLWNvbnRlbnQ+LnRhYi1wYW5le2Rpc3BsYXk6bm9uZX0udGFiLWNvbnRlbnQ+LmFjdGl2ZXtkaXNwbGF5OmJsb2NrfS5uYXYtdGFicyAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOi0xcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9Lm5hdmJhcntwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjUwcHg7bWFyZ2luLWJvdHRvbToyMHB4O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnR9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXJ7Ym9yZGVyLXJhZGl1czo0cHh9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWhlYWRlcntmbG9hdDpsZWZ0fX0ubmF2YmFyLWNvbGxhcHNle3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDtvdmVyZmxvdy14OnZpc2libGU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7Ym9yZGVyLXRvcDoxcHggc29saWQgdHJhbnNwYXJlbnQ7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpfS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWNvbGxhcHNle3dpZHRoOmF1dG87Ym9yZGVyLXRvcDowOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0ubmF2YmFyLWNvbGxhcHNlLmNvbGxhcHNle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowO292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTp2aXNpYmxlfS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLXN0YXRpYy10b3AgLm5hdmJhci1jb2xsYXBzZXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjB9fS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZXttYXgtaGVpZ2h0OjM0MHB4fUBtZWRpYSAobWF4LWRldmljZS13aWR0aDo0ODBweCkgYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpey5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1jb2xsYXBzZXttYXgtaGVpZ2h0OjIwMHB4fX0uY29udGFpbmVyLWZsdWlkPi5uYXZiYXItY29sbGFwc2UsLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWhlYWRlciwuY29udGFpbmVyPi5uYXZiYXItY29sbGFwc2UsLmNvbnRhaW5lcj4ubmF2YmFyLWhlYWRlcnttYXJnaW4tcmlnaHQ6LTE1cHg7bWFyZ2luLWxlZnQ6LTE1cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXItZmx1aWQ+Lm5hdmJhci1jb2xsYXBzZSwuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItaGVhZGVyLC5jb250YWluZXI+Lm5hdmJhci1jb2xsYXBzZSwuY29udGFpbmVyPi5uYXZiYXItaGVhZGVye21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9fS5uYXZiYXItc3RhdGljLXRvcHt6LWluZGV4OjEwMDA7Ym9yZGVyLXdpZHRoOjAgMCAxcHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItc3RhdGljLXRvcHtib3JkZXItcmFkaXVzOjB9fS5uYXZiYXItZml4ZWQtYm90dG9tLC5uYXZiYXItZml4ZWQtdG9we3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7bGVmdDowO3otaW5kZXg6MTAzMH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1maXhlZC1ib3R0b20sLm5hdmJhci1maXhlZC10b3B7Ym9yZGVyLXJhZGl1czowfX0ubmF2YmFyLWZpeGVkLXRvcHt0b3A6MDtib3JkZXItd2lkdGg6MCAwIDFweH0ubmF2YmFyLWZpeGVkLWJvdHRvbXtib3R0b206MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXdpZHRoOjFweCAwIDB9Lm5hdmJhci1icmFuZHtmbG9hdDpsZWZ0O2hlaWdodDo1MHB4O3BhZGRpbmc6MTVweCAxNXB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHh9Lm5hdmJhci1icmFuZDpmb2N1cywubmF2YmFyLWJyYW5kOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5uYXZiYXItYnJhbmQ+aW1ne2Rpc3BsYXk6YmxvY2t9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXI+LmNvbnRhaW5lciAubmF2YmFyLWJyYW5kLC5uYXZiYXI+LmNvbnRhaW5lci1mbHVpZCAubmF2YmFyLWJyYW5ke21hcmdpbi1sZWZ0Oi0xNXB4fX0ubmF2YmFyLXRvZ2dsZXtwb3NpdGlvbjpyZWxhdGl2ZTtmbG9hdDpyaWdodDtwYWRkaW5nOjlweCAxMHB4O21hcmdpbi10b3A6OHB4O21hcmdpbi1yaWdodDoxNXB4O21hcmdpbi1ib3R0b206OHB4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdmJhci10b2dnbGU6Zm9jdXN7b3V0bGluZTowfS5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcntkaXNwbGF5OmJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDtib3JkZXItcmFkaXVzOjFweH0ubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXIrLmljb24tYmFye21hcmdpbi10b3A6NHB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXRvZ2dsZXtkaXNwbGF5Om5vbmV9fS5uYXZiYXItbmF2e21hcmdpbjo3LjVweCAtMTVweH0ubmF2YmFyLW5hdj5saT5he3BhZGRpbmctdG9wOjEwcHg7cGFkZGluZy1ib3R0b206MTBweDtsaW5lLWhlaWdodDoyMHB4fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjpzdGF0aWM7ZmxvYXQ6bm9uZTt3aWR0aDphdXRvO21hcmdpbi10b3A6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowOy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0ubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVyLC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmF7cGFkZGluZzo1cHggMTVweCA1cHggMjVweH0ubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5he2xpbmUtaGVpZ2h0OjIwcHh9Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cywubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVye2JhY2tncm91bmQtaW1hZ2U6bm9uZX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItbmF2e2Zsb2F0OmxlZnQ7bWFyZ2luOjB9Lm5hdmJhci1uYXY+bGl7ZmxvYXQ6bGVmdH0ubmF2YmFyLW5hdj5saT5he3BhZGRpbmctdG9wOjE1cHg7cGFkZGluZy1ib3R0b206MTVweH19Lm5hdmJhci1mb3Jte3BhZGRpbmc6MTBweCAxNXB4O21hcmdpbi10b3A6OHB4O21hcmdpbi1yaWdodDotMTVweDttYXJnaW4tYm90dG9tOjhweDttYXJnaW4tbGVmdDotMTVweDtib3JkZXItdG9wOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKSwwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKSwwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLmZvcm0tY29udHJvbHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDphdXRvO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLmZvcm0tY29udHJvbC1zdGF0aWN7ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cHtkaXNwbGF5OmlubGluZS10YWJsZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm5hdmJhci1mb3JtIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sLC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWFkZG9uLC5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWJ0bnt3aWR0aDphdXRvfS5uYXZiYXItZm9ybSAuaW5wdXQtZ3JvdXA+LmZvcm0tY29udHJvbHt3aWR0aDoxMDAlfS5uYXZiYXItZm9ybSAuY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAuY2hlY2tib3gsLm5hdmJhci1mb3JtIC5yYWRpb3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLmNoZWNrYm94IGxhYmVsLC5uYXZiYXItZm9ybSAucmFkaW8gbGFiZWx7cGFkZGluZy1sZWZ0OjB9Lm5hdmJhci1mb3JtIC5jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSwubmF2YmFyLWZvcm0gLnJhZGlvIGlucHV0W3R5cGU9cmFkaW9de3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1sZWZ0OjB9Lm5hdmJhci1mb3JtIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFja3t0b3A6MH19QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpey5uYXZiYXItZm9ybSAuZm9ybS1ncm91cHttYXJnaW4tYm90dG9tOjVweH0ubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXA6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZvcm17d2lkdGg6YXV0bztwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDtib3JkZXI6MDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9fS5uYXZiYXItbmF2PmxpPi5kcm9wZG93bi1tZW51e21hcmdpbi10b3A6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLW5hdj5saT4uZHJvcGRvd24tbWVudXttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5uYXZiYXItYnRue21hcmdpbi10b3A6OHB4O21hcmdpbi1ib3R0b206OHB4fS5uYXZiYXItYnRuLmJ0bi1zbXttYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4fS5uYXZiYXItYnRuLmJ0bi14c3ttYXJnaW4tdG9wOjE0cHg7bWFyZ2luLWJvdHRvbToxNHB4fS5uYXZiYXItdGV4dHttYXJnaW4tdG9wOjE1cHg7bWFyZ2luLWJvdHRvbToxNXB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXRleHR7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MTVweDttYXJnaW4tbGVmdDoxNXB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5uYXZiYXItcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50O21hcmdpbi1yaWdodDotMTVweH0ubmF2YmFyLXJpZ2h0fi5uYXZiYXItcmlnaHR7bWFyZ2luLXJpZ2h0OjB9fS5uYXZiYXItZGVmYXVsdHtiYWNrZ3JvdW5kLWNvbG9yOiNmOGY4Zjg7Ym9yZGVyLWNvbG9yOiNlN2U3ZTd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItYnJhbmR7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZDpob3Zlcntjb2xvcjojNWU1ZTVlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdGV4dHtjb2xvcjojNzc3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj5saT5he2NvbG9yOiM3Nzd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmE6aG92ZXJ7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uYWN0aXZlPmEsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiM1NTU7YmFja2dyb3VuZC1jb2xvcjojZTdlN2U3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXMsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiNjY2M7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGV7Ym9yZGVyLWNvbG9yOiNkZGR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkZGR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiM4ODh9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItZm9ybXtib3JkZXItY29sb3I6I2U3ZTdlN30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+Lm9wZW4+YTpob3Zlcntjb2xvcjojNTU1O2JhY2tncm91bmQtY29sb3I6I2U3ZTdlN31AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmF7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpob3Zlcntjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzU1NTtiYWNrZ3JvdW5kLWNvbG9yOiNlN2U3ZTd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXJ7Y29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fX0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1saW5re2NvbG9yOiM3Nzd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbGluazpob3Zlcntjb2xvcjojMzMzfS5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbmt7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAuYnRuLWxpbms6aG92ZXJ7Y29sb3I6IzMzM30ubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rW2Rpc2FibGVkXTpmb2N1cywubmF2YmFyLWRlZmF1bHQgLmJ0bi1saW5rW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLm5hdmJhci1kZWZhdWx0IC5idG4tbGluazpob3Zlcntjb2xvcjojY2NjfS5uYXZiYXItaW52ZXJzZXtiYWNrZ3JvdW5kLWNvbG9yOiMyMjI7Ym9yZGVyLWNvbG9yOiMwODA4MDh9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItYnJhbmR7Y29sb3I6IzlkOWQ5ZH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZDpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZDpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdGV4dHtjb2xvcjojOWQ5ZDlkfS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj5saT5he2NvbG9yOiM5ZDlkOWR9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmE6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmE6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uYWN0aXZlPmEsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hOmhvdmVye2NvbG9yOiM0NDQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGV7Ym9yZGVyLWNvbG9yOiMzMzN9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlIC5pY29uLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItZm9ybXtib3JkZXItY29sb3I6IzEwMTAxMH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+Lm9wZW4+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzA4MDgwOH1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kcm9wZG93bi1oZWFkZXJ7Ym9yZGVyLWNvbG9yOiMwODA4MDh9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51IC5kaXZpZGVye2JhY2tncm91bmQtY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YXtjb2xvcjojOWQ5ZDlkfS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3Zlcntjb2xvcjojNDQ0O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbmt7Y29sb3I6IzlkOWQ5ZH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5idG4tbGlua3tjb2xvcjojOWQ5ZDlkfS5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbms6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5idG4tbGluazpob3Zlcntjb2xvcjojZmZmfS5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAuYnRuLWxpbmtbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAubmF2YmFyLWludmVyc2UgLmJ0bi1saW5rOmhvdmVye2NvbG9yOiM0NDR9LmJyZWFkY3J1bWJ7cGFkZGluZzo4cHggMTVweDttYXJnaW4tYm90dG9tOjIwcHg7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItcmFkaXVzOjRweH0uYnJlYWRjcnVtYj5saXtkaXNwbGF5OmlubGluZS1ibG9ja30uYnJlYWRjcnVtYj5saStsaTpiZWZvcmV7cGFkZGluZzowIDVweDtjb2xvcjojY2NjO2NvbnRlbnQ6Ii9cMDBhMCJ9LmJyZWFkY3J1bWI+LmFjdGl2ZXtjb2xvcjojNzc3fS5wYWdpbmF0aW9ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctbGVmdDowO21hcmdpbjoyMHB4IDA7Ym9yZGVyLXJhZGl1czo0cHh9LnBhZ2luYXRpb24+bGl7ZGlzcGxheTppbmxpbmV9LnBhZ2luYXRpb24+bGk+YSwucGFnaW5hdGlvbj5saT5zcGFue3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7cGFkZGluZzo2cHggMTJweDttYXJnaW4tbGVmdDotMXB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7Y29sb3I6IzMwNGZmZTt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS5wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24+bGk6Zmlyc3QtY2hpbGQ+c3BhbnttYXJnaW4tbGVmdDowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fS5wYWdpbmF0aW9uPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbj5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0ucGFnaW5hdGlvbj5saT5hOmZvY3VzLC5wYWdpbmF0aW9uPmxpPmE6aG92ZXIsLnBhZ2luYXRpb24+bGk+c3Bhbjpmb2N1cywucGFnaW5hdGlvbj5saT5zcGFuOmhvdmVye3otaW5kZXg6Mjtjb2xvcjojMjM1MjdjO2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXItY29sb3I6I2RkZH0ucGFnaW5hdGlvbj4uYWN0aXZlPmEsLnBhZ2luYXRpb24+LmFjdGl2ZT5hOmZvY3VzLC5wYWdpbmF0aW9uPi5hY3RpdmU+YTpob3ZlciwucGFnaW5hdGlvbj4uYWN0aXZlPnNwYW4sLnBhZ2luYXRpb24+LmFjdGl2ZT5zcGFuOmZvY3VzLC5wYWdpbmF0aW9uPi5hY3RpdmU+c3Bhbjpob3Zlcnt6LWluZGV4OjM7Y29sb3I6I2ZmZjtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiMzMDRmZmU7Ym9yZGVyLWNvbG9yOiMzMDRmZmV9LnBhZ2luYXRpb24+LmRpc2FibGVkPmEsLnBhZ2luYXRpb24+LmRpc2FibGVkPmE6Zm9jdXMsLnBhZ2luYXRpb24+LmRpc2FibGVkPmE6aG92ZXIsLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW4sLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW46Zm9jdXMsLnBhZ2luYXRpb24+LmRpc2FibGVkPnNwYW46aG92ZXJ7Y29sb3I6Izc3NztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojZGRkfS5wYWdpbmF0aW9uLWxnPmxpPmEsLnBhZ2luYXRpb24tbGc+bGk+c3BhbntwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjMzMzMzMzN9LnBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sZz5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4fS5wYWdpbmF0aW9uLWxnPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweH0ucGFnaW5hdGlvbi1zbT5saT5hLC5wYWdpbmF0aW9uLXNtPmxpPnNwYW57cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LnBhZ2luYXRpb24tc20+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbT5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS5wYWdpbmF0aW9uLXNtPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbT5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0ucGFnZXJ7cGFkZGluZy1sZWZ0OjA7bWFyZ2luOjIwcHggMDt0ZXh0LWFsaWduOmNlbnRlcjtsaXN0LXN0eWxlOm5vbmV9LnBhZ2VyIGxpe2Rpc3BsYXk6aW5saW5lfS5wYWdlciBsaT5hLC5wYWdlciBsaT5zcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NXB4IDE0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjE1cHh9LnBhZ2VyIGxpPmE6Zm9jdXMsLnBhZ2VyIGxpPmE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5wYWdlciAubmV4dD5hLC5wYWdlciAubmV4dD5zcGFue2Zsb2F0OnJpZ2h0fS5wYWdlciAucHJldmlvdXM+YSwucGFnZXIgLnByZXZpb3VzPnNwYW57ZmxvYXQ6bGVmdH0ucGFnZXIgLmRpc2FibGVkPmEsLnBhZ2VyIC5kaXNhYmxlZD5hOmZvY3VzLC5wYWdlciAuZGlzYWJsZWQ+YTpob3ZlciwucGFnZXIgLmRpc2FibGVkPnNwYW57Y29sb3I6Izc3NztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5sYWJlbHtkaXNwbGF5OmlubGluZTtwYWRkaW5nOi4yZW0gLjZlbSAuM2VtO2ZvbnQtc2l6ZTo3NSU7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Ym9yZGVyLXJhZGl1czouMjVlbX1hLmxhYmVsOmZvY3VzLGEubGFiZWw6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0ubGFiZWw6ZW1wdHl7ZGlzcGxheTpub25lfS5idG4gLmxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMXB4fS5sYWJlbC1kZWZhdWx0e2JhY2tncm91bmQtY29sb3I6Izc3N30ubGFiZWwtZGVmYXVsdFtocmVmXTpmb2N1cywubGFiZWwtZGVmYXVsdFtocmVmXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZTVlNWV9LmxhYmVsLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojMzA0ZmZlfS5sYWJlbC1wcmltYXJ5W2hyZWZdOmZvY3VzLC5sYWJlbC1wcmltYXJ5W2hyZWZdOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzI4NjA5MH0ubGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiMwMGJmNGZ9LmxhYmVsLXN1Y2Nlc3NbaHJlZl06Zm9jdXMsLmxhYmVsLXN1Y2Nlc3NbaHJlZl06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNDQ5ZDQ0fS5sYWJlbC1pbmZve2JhY2tncm91bmQtY29sb3I6IzAwYWVmZn0ubGFiZWwtaW5mb1tocmVmXTpmb2N1cywubGFiZWwtaW5mb1tocmVmXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMzMWIwZDV9LmxhYmVsLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmZhMDAwfS5sYWJlbC13YXJuaW5nW2hyZWZdOmZvY3VzLC5sYWJlbC13YXJuaW5nW2hyZWZdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2VjOTcxZn0ubGFiZWwtZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2U1MzkzNX0ubGFiZWwtZGFuZ2VyW2hyZWZdOmZvY3VzLC5sYWJlbC1kYW5nZXJbaHJlZl06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojYzkzMDJjfS5iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MTBweDtwYWRkaW5nOjNweCA3cHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtY29sb3I6Izc3Nztib3JkZXItcmFkaXVzOjEwcHh9LmJhZGdlOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYnRuIC5iYWRnZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweH0uYnRuLWdyb3VwLXhzPi5idG4gLmJhZGdlLC5idG4teHMgLmJhZGdle3RvcDowO3BhZGRpbmc6MXB4IDVweH1hLmJhZGdlOmZvY3VzLGEuYmFkZ2U6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0ubGlzdC1ncm91cC1pdGVtLmFjdGl2ZT4uYmFkZ2UsLm5hdi1waWxscz4uYWN0aXZlPmE+LmJhZGdle2NvbG9yOiMzMDRmZmU7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5saXN0LWdyb3VwLWl0ZW0+LmJhZGdle2Zsb2F0OnJpZ2h0fS5saXN0LWdyb3VwLWl0ZW0+LmJhZGdlKy5iYWRnZXttYXJnaW4tcmlnaHQ6NXB4fS5uYXYtcGlsbHM+bGk+YT4uYmFkZ2V7bWFyZ2luLWxlZnQ6M3B4fS5qdW1ib3Ryb257cGFkZGluZy10b3A6MzBweDtwYWRkaW5nLWJvdHRvbTozMHB4O21hcmdpbi1ib3R0b206MzBweDtjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6I2VlZX0uanVtYm90cm9uIC5oMSwuanVtYm90cm9uIGgxe2NvbG9yOmluaGVyaXR9Lmp1bWJvdHJvbiBwe21hcmdpbi1ib3R0b206MTVweDtmb250LXNpemU6MjFweDtmb250LXdlaWdodDoyMDB9Lmp1bWJvdHJvbj5ocntib3JkZXItdG9wLWNvbG9yOiNkNWQ1ZDV9LmNvbnRhaW5lciAuanVtYm90cm9uLC5jb250YWluZXItZmx1aWQgLmp1bWJvdHJvbntwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyLXJhZGl1czo2cHh9Lmp1bWJvdHJvbiAuY29udGFpbmVye21heC13aWR0aDoxMDAlfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey5qdW1ib3Ryb257cGFkZGluZy10b3A6NDhweDtwYWRkaW5nLWJvdHRvbTo0OHB4fS5jb250YWluZXIgLmp1bWJvdHJvbiwuY29udGFpbmVyLWZsdWlkIC5qdW1ib3Ryb257cGFkZGluZy1yaWdodDo2MHB4O3BhZGRpbmctbGVmdDo2MHB4fS5qdW1ib3Ryb24gLmgxLC5qdW1ib3Ryb24gaDF7Zm9udC1zaXplOjYzcHh9fS50aHVtYm5haWx7ZGlzcGxheTpibG9jaztwYWRkaW5nOjRweDttYXJnaW4tYm90dG9tOjIwcHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0MztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXIgLjJzIGVhc2UtaW4tb3V0Oy1vLXRyYW5zaXRpb246Ym9yZGVyIC4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmJvcmRlciAuMnMgZWFzZS1pbi1vdXR9LnRodW1ibmFpbCBhPmltZywudGh1bWJuYWlsPmltZ3ttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfWEudGh1bWJuYWlsLmFjdGl2ZSxhLnRodW1ibmFpbDpmb2N1cyxhLnRodW1ibmFpbDpob3Zlcntib3JkZXItY29sb3I6IzMwNGZmZX0udGh1bWJuYWlsIC5jYXB0aW9ue3BhZGRpbmc6OXB4O2NvbG9yOiMzMzN9LmFsZXJ0e3BhZGRpbmc6MTVweDttYXJnaW4tYm90dG9tOjIwcHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweH0uYWxlcnQgaDR7bWFyZ2luLXRvcDowO2NvbG9yOmluaGVyaXR9LmFsZXJ0IC5hbGVydC1saW5re2ZvbnQtd2VpZ2h0OjcwMH0uYWxlcnQ+cCwuYWxlcnQ+dWx7bWFyZ2luLWJvdHRvbTowfS5hbGVydD5wK3B7bWFyZ2luLXRvcDo1cHh9LmFsZXJ0LWRpc21pc3NhYmxlLC5hbGVydC1kaXNtaXNzaWJsZXtwYWRkaW5nLXJpZ2h0OjM1cHh9LmFsZXJ0LWRpc21pc3NhYmxlIC5jbG9zZSwuYWxlcnQtZGlzbWlzc2libGUgLmNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4O3JpZ2h0Oi0yMXB4O2NvbG9yOmluaGVyaXR9LmFsZXJ0LXN1Y2Nlc3N7Y29sb3I6IzNjNzYzZDtiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDg7Ym9yZGVyLWNvbG9yOiNkNmU5YzZ9LmFsZXJ0LXN1Y2Nlc3MgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYzllMmIzfS5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5re2NvbG9yOiMyYjU0MmN9LmFsZXJ0LWluZm97Y29sb3I6IzMxNzA4ZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjc7Ym9yZGVyLWNvbG9yOiNiY2U4ZjF9LmFsZXJ0LWluZm8gaHJ7Ym9yZGVyLXRvcC1jb2xvcjojYTZlMWVjfS5hbGVydC1pbmZvIC5hbGVydC1saW5re2NvbG9yOiMyNDUyNjl9LmFsZXJ0LXdhcm5pbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LmFsZXJ0LXdhcm5pbmcgaHJ7Ym9yZGVyLXRvcC1jb2xvcjojZjdlMWI1fS5hbGVydC13YXJuaW5nIC5hbGVydC1saW5re2NvbG9yOiM2NjUxMmN9LmFsZXJ0LWRhbmdlcntjb2xvcjojYTk0NDQyO2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2ViY2NkMX0uYWxlcnQtZGFuZ2VyIGhye2JvcmRlci10b3AtY29sb3I6I2U0YjljMH0uYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5re2NvbG9yOiM4NDM1MzR9QC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9fUAtby1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH19QGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246NDBweCAwfXRve2JhY2tncm91bmQtcG9zaXRpb246MCAwfX0ucHJvZ3Jlc3N7aGVpZ2h0OjIwcHg7bWFyZ2luLWJvdHRvbToyMHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKX0ucHJvZ3Jlc3MtYmFye2Zsb2F0OmxlZnQ7d2lkdGg6MDtoZWlnaHQ6MTAwJTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMzA0ZmZlOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4xNSk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4xNSk7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC42cyBlYXNlOy1vLXRyYW5zaXRpb246d2lkdGggLjZzIGVhc2U7dHJhbnNpdGlvbjp3aWR0aCAuNnMgZWFzZX0ucHJvZ3Jlc3MtYmFyLXN0cmlwZWQsLnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhcntiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpOy13ZWJraXQtYmFja2dyb3VuZC1zaXplOjQwcHggNDBweDtiYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4fS5wcm9ncmVzcy1iYXIuYWN0aXZlLC5wcm9ncmVzcy5hY3RpdmUgLnByb2dyZXNzLWJhcnstd2Via2l0LWFuaW1hdGlvbjpwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7LW8tYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlfS5wcm9ncmVzcy1iYXItc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiMwMGJmNGZ9LnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCl9LnByb2dyZXNzLWJhci1pbmZve2JhY2tncm91bmQtY29sb3I6IzAwYWVmZn0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWluZm97YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3MtYmFyLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmZhMDAwfS5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItd2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy1iYXItZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2U1MzkzNX0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWRhbmdlcntiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5tZWRpYXttYXJnaW4tdG9wOjE1cHh9Lm1lZGlhOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubWVkaWEsLm1lZGlhLWJvZHl7b3ZlcmZsb3c6aGlkZGVuO3pvb206MX0ubWVkaWEtYm9keXt3aWR0aDoxMDAwMHB4fS5tZWRpYS1vYmplY3R7ZGlzcGxheTpibG9ja30ubWVkaWEtb2JqZWN0LmltZy10aHVtYm5haWx7bWF4LXdpZHRoOm5vbmV9Lm1lZGlhLXJpZ2h0LC5tZWRpYT4ucHVsbC1yaWdodHtwYWRkaW5nLWxlZnQ6MTBweH0ubWVkaWEtbGVmdCwubWVkaWE+LnB1bGwtbGVmdHtwYWRkaW5nLXJpZ2h0OjEwcHh9Lm1lZGlhLWJvZHksLm1lZGlhLWxlZnQsLm1lZGlhLXJpZ2h0e2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1lZGlhLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1lZGlhLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b219Lm1lZGlhLWhlYWRpbmd7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206NXB4fS5tZWRpYS1saXN0e3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1ncm91cHtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjIwcHh9Lmxpc3QtZ3JvdXAtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweCAxNXB4O21hcmdpbi1ib3R0b206LTFweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4fS5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4fWEubGlzdC1ncm91cC1pdGVtLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW17Y29sb3I6IzU1NX1hLmxpc3QtZ3JvdXAtaXRlbSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6IzMzM31hLmxpc3QtZ3JvdXAtaXRlbTpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbTpob3ZlcixidXR0b24ubGlzdC1ncm91cC1pdGVtOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW06aG92ZXJ7Y29sb3I6IzU1NTt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9YnV0dG9uLmxpc3QtZ3JvdXAtaXRlbXt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdH0ubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkLC5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpob3Zlcntjb2xvcjojNzc3O2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpmb2N1cyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZDpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH0ubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwubGlzdC1ncm91cC1pdGVtLmRpc2FibGVkOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0tdGV4dHtjb2xvcjojNzc3fS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVye3otaW5kZXg6Mjtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMwNGZmZTtib3JkZXItY29sb3I6IzMwNGZmZX0ubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPi5zbWFsbCwubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+c21hbGwsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZz4uc21hbGwsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6Zm9jdXMgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nPnNtYWxsLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZywubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmc+LnNtYWxsLC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZz5zbWFsbHtjb2xvcjppbmhlcml0fS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIC5saXN0LWdyb3VwLWl0ZW0tdGV4dCwubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyAubGlzdC1ncm91cC1pdGVtLXRleHQsLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0e2NvbG9yOiNjN2RkZWZ9Lmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMzYzc2M2R9YS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmcsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjppbmhlcml0fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXMsYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzczpob3ZlcixidXR0b24ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXMsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmhvdmVye2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZDBlOWM2fWEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlLGEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmZvY3VzLGEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmUsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmFjdGl2ZTpmb2N1cyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MuYWN0aXZlOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojM2M3NjNkO2JvcmRlci1jb2xvcjojM2M3NjNkfS5saXN0LWdyb3VwLWl0ZW0taW5mb3tjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmN31hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mb3tjb2xvcjojMzE3MDhmfWEubGlzdC1ncm91cC1pdGVtLWluZm8gLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mbyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLGEubGlzdC1ncm91cC1pdGVtLWluZm86aG92ZXIsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1pbmZvOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mbzpob3Zlcntjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM31hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZSxhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpob3ZlcixidXR0b24ubGlzdC1ncm91cC1pdGVtLWluZm8uYWN0aXZlLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0taW5mby5hY3RpdmU6Zm9jdXMsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMxNzA4Zjtib3JkZXItY29sb3I6IzMxNzA4Zn0ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmd7Y29sb3I6IzhhNmQzYn1hLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5ne2NvbG9yOmluaGVyaXR9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpmb2N1cyxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmc6aG92ZXJ7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWYyY2N9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6Zm9jdXMsYS5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXIsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmFjdGl2ZSxidXR0b24ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5hY3RpdmU6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM4YTZkM2I7Ym9yZGVyLWNvbG9yOiM4YTZkM2J9Lmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXJ7Y29sb3I6I2E5NDQ0MjtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2Vye2NvbG9yOiNhOTQ0NDJ9YS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyxidXR0b24ubGlzdC1ncm91cC1pdGVtLWRhbmdlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6Zm9jdXMsYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3VzLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmhvdmVye2NvbG9yOiNhOTQ0NDI7YmFja2dyb3VuZC1jb2xvcjojZWJjY2NjfWEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZTpmb2N1cyxhLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmhvdmVyLGJ1dHRvbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZSxidXR0b24ubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmU6Zm9jdXMsYnV0dG9uLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYTk0NDQyO2JvcmRlci1jb2xvcjojYTk0NDQyfS5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3ttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTo1cHh9Lmxpc3QtZ3JvdXAtaXRlbS10ZXh0e21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDoxLjN9LnBhbmVse21hcmdpbi1ib3R0b206MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LnBhbmVsLWJvZHl7cGFkZGluZzoxNXB4fS5wYW5lbC1oZWFkaW5ne3BhZGRpbmc6MTBweCAxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0ucGFuZWwtaGVhZGluZz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjppbmhlcml0fS5wYW5lbC10aXRsZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNnB4O2NvbG9yOmluaGVyaXR9LnBhbmVsLXRpdGxlPi5zbWFsbCwucGFuZWwtdGl0bGU+LnNtYWxsPmEsLnBhbmVsLXRpdGxlPmEsLnBhbmVsLXRpdGxlPnNtYWxsLC5wYW5lbC10aXRsZT5zbWFsbD5he2NvbG9yOmluaGVyaXR9LnBhbmVsLWZvb3RlcntwYWRkaW5nOjEwcHggMTVweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi5saXN0LWdyb3VwLC5wYW5lbD4ucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXB7bWFyZ2luLWJvdHRvbTowfS5wYW5lbD4ubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtLC5wYW5lbD4ucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbXtib3JkZXItd2lkdGg6MXB4IDA7Ym9yZGVyLXJhZGl1czowfS5wYW5lbD4ubGlzdC1ncm91cDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkLC5wYW5lbD4ucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4ubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCwucGFuZWw+LnBhbmVsLWNvbGxhcHNlPi5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ubGlzdC1ncm91cCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5wYW5lbC1oZWFkaW5nKy5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowfS5saXN0LWdyb3VwKy5wYW5lbC1mb290ZXJ7Ym9yZGVyLXRvcC13aWR0aDowfS5wYW5lbD4ucGFuZWwtY29sbGFwc2U+LnRhYmxlLC5wYW5lbD4udGFibGUsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZXttYXJnaW4tYm90dG9tOjB9LnBhbmVsPi5wYW5lbC1jb2xsYXBzZT4udGFibGUgY2FwdGlvbiwucGFuZWw+LnRhYmxlIGNhcHRpb24sLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZSBjYXB0aW9ue3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGZvb3Q6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4fS5wYW5lbD4ucGFuZWwtYm9keSsudGFibGUsLnBhbmVsPi5wYW5lbC1ib2R5Ky50YWJsZS1yZXNwb25zaXZlLC5wYW5lbD4udGFibGUrLnBhbmVsLWJvZHksLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlKy5wYW5lbC1ib2R5e2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGR9LnBhbmVsPi50YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZCwucGFuZWw+LnRhYmxlPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoe2JvcmRlci10b3A6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWR7Ym9yZGVyOjB9LnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZHtib3JkZXItcmlnaHQ6MH0ucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGh7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGh7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZXttYXJnaW4tYm90dG9tOjA7Ym9yZGVyOjB9LnBhbmVsLWdyb3Vwe21hcmdpbi1ib3R0b206MjBweH0ucGFuZWwtZ3JvdXAgLnBhbmVse21hcmdpbi1ib3R0b206MDtib3JkZXItcmFkaXVzOjRweH0ucGFuZWwtZ3JvdXAgLnBhbmVsKy5wYW5lbHttYXJnaW4tdG9wOjVweH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmd7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbC1ncm91cCAucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+Lmxpc3QtZ3JvdXAsLnBhbmVsLWdyb3VwIC5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS5wYW5lbC1ncm91cCAucGFuZWwtZm9vdGVye2JvcmRlci10b3A6MH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ucGFuZWwtZGVmYXVsdHtib3JkZXItY29sb3I6I2RkZH0ucGFuZWwtZGVmYXVsdD4ucGFuZWwtaGVhZGluZ3tjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItY29sb3I6I2RkZH0ucGFuZWwtZGVmYXVsdD4ucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLXRvcC1jb2xvcjojZGRkfS5wYW5lbC1kZWZhdWx0Pi5wYW5lbC1oZWFkaW5nIC5iYWRnZXtjb2xvcjojZjVmNWY1O2JhY2tncm91bmQtY29sb3I6IzMzM30ucGFuZWwtZGVmYXVsdD4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNkZGR9LnBhbmVsLXByaW1hcnl7Ym9yZGVyLWNvbG9yOiMzMDRmZmV9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMDRmZmU7Ym9yZGVyLWNvbG9yOiMzMDRmZmV9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6IzMwNGZmZX0ucGFuZWwtcHJpbWFyeT4ucGFuZWwtaGVhZGluZyAuYmFkZ2V7Y29sb3I6IzMwNGZmZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzA0ZmZlfS5wYW5lbC1zdWNjZXNze2JvcmRlci1jb2xvcjojZDZlOWM2fS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1oZWFkaW5ne2NvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojZDZlOWM2fS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNkNmU5YzZ9LnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWhlYWRpbmcgLmJhZGdle2NvbG9yOiNkZmYwZDg7YmFja2dyb3VuZC1jb2xvcjojM2M3NjNkfS5wYW5lbC1zdWNjZXNzPi5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5e2JvcmRlci1ib3R0b20tY29sb3I6I2Q2ZTljNn0ucGFuZWwtaW5mb3tib3JkZXItY29sb3I6I2JjZThmMX0ucGFuZWwtaW5mbz4ucGFuZWwtaGVhZGluZ3tjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmNztib3JkZXItY29sb3I6I2JjZThmMX0ucGFuZWwtaW5mbz4ucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLXRvcC1jb2xvcjojYmNlOGYxfS5wYW5lbC1pbmZvPi5wYW5lbC1oZWFkaW5nIC5iYWRnZXtjb2xvcjojZDllZGY3O2JhY2tncm91bmQtY29sb3I6IzMxNzA4Zn0ucGFuZWwtaW5mbz4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNiY2U4ZjF9LnBhbmVsLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlPi5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2ZhZWJjY30ucGFuZWwtd2FybmluZz4ucGFuZWwtaGVhZGluZyAuYmFkZ2V7Y29sb3I6I2ZjZjhlMztiYWNrZ3JvdW5kLWNvbG9yOiM4YTZkM2J9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWZvb3RlcisucGFuZWwtY29sbGFwc2U+LnBhbmVsLWJvZHl7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmFlYmNjfS5wYW5lbC1kYW5nZXJ7Ym9yZGVyLWNvbG9yOiNlYmNjZDF9LnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZ3tjb2xvcjojYTk0NDQyO2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2ViY2NkMX0ucGFuZWwtZGFuZ2VyPi5wYW5lbC1oZWFkaW5nKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItdG9wLWNvbG9yOiNlYmNjZDF9LnBhbmVsLWRhbmdlcj4ucGFuZWwtaGVhZGluZyAuYmFkZ2V7Y29sb3I6I2YyZGVkZTtiYWNrZ3JvdW5kLWNvbG9yOiNhOTQ0NDJ9LnBhbmVsLWRhbmdlcj4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZT4ucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNlYmNjZDF9LmVtYmVkLXJlc3BvbnNpdmV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVufS5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsLmVtYmVkLXJlc3BvbnNpdmUgaWZyYW1lLC5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwuZW1iZWQtcmVzcG9uc2l2ZSB2aWRlb3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MH0uZW1iZWQtcmVzcG9uc2l2ZS0xNmJ5OXtwYWRkaW5nLWJvdHRvbTo1Ni4yNSV9LmVtYmVkLXJlc3BvbnNpdmUtNGJ5M3twYWRkaW5nLWJvdHRvbTo3NSV9LndlbGx7bWluLWhlaWdodDoyMHB4O3BhZGRpbmc6MTlweDttYXJnaW4tYm90dG9tOjIwcHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlcjoxcHggc29saWQgI2UzZTNlMztib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LndlbGwgYmxvY2txdW90ZXtib3JkZXItY29sb3I6I2RkZDtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTUpfS53ZWxsLWxne3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjZweH0ud2VsbC1zbXtwYWRkaW5nOjlweDtib3JkZXItcmFkaXVzOjNweH0uY2xvc2V7ZmxvYXQ6cmlnaHQ7Zm9udC1zaXplOjIxcHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6IzAwMDt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MjApO29wYWNpdHk6LjJ9LmNsb3NlOmZvY3VzLC5jbG9zZTpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKTtvcGFjaXR5Oi41fWJ1dHRvbi5jbG9zZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjB9Lm1vZGFsLW9wZW57b3ZlcmZsb3c6aGlkZGVufS5tb2RhbHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNTA7ZGlzcGxheTpub25lO292ZXJmbG93OmhpZGRlbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtvdXRsaW5lOjB9Lm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZ3std2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246LW8tdHJhbnNmb3JtIC4zcyBlYXNlLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMjUlKTstby10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yNSUpfS5tb2RhbC5pbiAubW9kYWwtZGlhbG9ney13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0ubW9kYWwtb3BlbiAubW9kYWx7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvfS5tb2RhbC1kaWFsb2d7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6YXV0bzttYXJnaW46MTBweH0ubW9kYWwtY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6NnB4O291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsLjUpfS5tb2RhbC1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNDA7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tb2RhbC1iYWNrZHJvcC5mYWRle2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO29wYWNpdHk6MH0ubW9kYWwtYmFja2Ryb3AuaW57ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApO29wYWNpdHk6LjV9Lm1vZGFsLWhlYWRlcntwYWRkaW5nOjE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNX0ubW9kYWwtaGVhZGVyIC5jbG9zZXttYXJnaW4tdG9wOi0ycHh9Lm1vZGFsLXRpdGxle21hcmdpbjowO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDN9Lm1vZGFsLWJvZHl7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzoxNXB4fS5tb2RhbC1mb290ZXJ7cGFkZGluZzoxNXB4O3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0ubW9kYWwtZm9vdGVyIC5idG4rLmJ0bnttYXJnaW4tYm90dG9tOjA7bWFyZ2luLWxlZnQ6NXB4fS5tb2RhbC1mb290ZXIgLmJ0bi1ncm91cCAuYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweH0ubW9kYWwtZm9vdGVyIC5idG4tYmxvY2srLmJ0bi1ibG9ja3ttYXJnaW4tbGVmdDowfS5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTk5OTlweDt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OnNjcm9sbH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm1vZGFsLWRpYWxvZ3t3aWR0aDo2MDBweDttYXJnaW46MzBweCBhdXRvfS5tb2RhbC1jb250ZW50ey13ZWJraXQtYm94LXNoYWRvdzowIDVweCAxNXB4IHJnYmEoMCwwLDAsLjUpO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC41KX0ubW9kYWwtc217d2lkdGg6MzAwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsubW9kYWwtbGd7d2lkdGg6OTAwcHh9fS50b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTA3MDtkaXNwbGF5OmJsb2NrO2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7dGV4dC1hbGlnbjpsZWZ0O3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1zaGFkb3c6bm9uZTt0ZXh0LXRyYW5zZm9ybTpub25lO2xldHRlci1zcGFjaW5nOm5vcm1hbDt3b3JkLWJyZWFrOm5vcm1hbDt3b3JkLXNwYWNpbmc6bm9ybWFsO3dvcmQtd3JhcDpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO29wYWNpdHk6MDtsaW5lLWJyZWFrOmF1dG99LnRvb2x0aXAuaW57ZmlsdGVyOmFscGhhKG9wYWNpdHk9OTApO29wYWNpdHk6Ljl9LnRvb2x0aXAudG9we3BhZGRpbmc6NXB4IDA7bWFyZ2luLXRvcDotM3B4fS50b29sdGlwLnJpZ2h0e3BhZGRpbmc6MCA1cHg7bWFyZ2luLWxlZnQ6M3B4fS50b29sdGlwLmJvdHRvbXtwYWRkaW5nOjVweCAwO21hcmdpbi10b3A6M3B4fS50b29sdGlwLmxlZnR7cGFkZGluZzowIDVweDttYXJnaW4tbGVmdDotM3B4fS50b29sdGlwLWlubmVye21heC13aWR0aDoyMDBweDtwYWRkaW5nOjNweCA4cHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czo0cHh9LnRvb2x0aXAtYXJyb3d7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvd3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci13aWR0aDo1cHggNXB4IDA7Ym9yZGVyLXRvcC1jb2xvcjojMDAwfS50b29sdGlwLnRvcC1sZWZ0IC50b29sdGlwLWFycm93e3JpZ2h0OjVweDtib3R0b206MDttYXJnaW4tYm90dG9tOi01cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItdG9wLWNvbG9yOiMwMDB9LnRvb2x0aXAudG9wLXJpZ2h0IC50b29sdGlwLWFycm93e2JvdHRvbTowO2xlZnQ6NXB4O21hcmdpbi1ib3R0b206LTVweDtib3JkZXItd2lkdGg6NXB4IDVweCAwO2JvcmRlci10b3AtY29sb3I6IzAwMH0udG9vbHRpcC5yaWdodCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO2xlZnQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXdpZHRoOjVweCA1cHggNXB4IDA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMwMDB9LnRvb2x0aXAubGVmdCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci13aWR0aDo1cHggMCA1cHggNXB4O2JvcmRlci1sZWZ0LWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tIC50b29sdGlwLWFycm93e3RvcDowO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXdpZHRoOjAgNXB4IDVweDtib3JkZXItYm90dG9tLWNvbG9yOiMwMDB9LnRvb2x0aXAuYm90dG9tLWxlZnQgLnRvb2x0aXAtYXJyb3d7dG9wOjA7cmlnaHQ6NXB4O21hcmdpbi10b3A6LTVweDtib3JkZXItd2lkdGg6MCA1cHggNXB4O2JvcmRlci1ib3R0b20tY29sb3I6IzAwMH0udG9vbHRpcC5ib3R0b20tcmlnaHQgLnRvb2x0aXAtYXJyb3d7dG9wOjA7bGVmdDo1cHg7bWFyZ2luLXRvcDotNXB4O2JvcmRlci13aWR0aDowIDVweCA1cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAwfS5wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwNjA7ZGlzcGxheTpub25lO21heC13aWR0aDoyNzZweDtwYWRkaW5nOjFweDtmb250LWZhbWlseToiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjQyODU3MTQzO3RleHQtYWxpZ246bGVmdDt0ZXh0LWFsaWduOnN0YXJ0O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93Om5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZTtsZXR0ZXItc3BhY2luZzpub3JtYWw7d29yZC1icmVhazpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3b3JkLXdyYXA6bm9ybWFsO3doaXRlLXNwYWNlOm5vcm1hbDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpO2JveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsMCwwLC4yKTtsaW5lLWJyZWFrOmF1dG99LnBvcG92ZXIudG9we21hcmdpbi10b3A6LTEwcHh9LnBvcG92ZXIucmlnaHR7bWFyZ2luLWxlZnQ6MTBweH0ucG9wb3Zlci5ib3R0b217bWFyZ2luLXRvcDoxMHB4fS5wb3BvdmVyLmxlZnR7bWFyZ2luLWxlZnQ6LTEwcHh9LnBvcG92ZXItdGl0bGV7cGFkZGluZzo4cHggMTRweDttYXJnaW46MDtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwfS5wb3BvdmVyLWNvbnRlbnR7cGFkZGluZzo5cHggMTRweH0ucG9wb3Zlcj4uYXJyb3csLnBvcG92ZXI+LmFycm93OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXN0eWxlOnNvbGlkfS5wb3BvdmVyPi5hcnJvd3tib3JkZXItd2lkdGg6MTFweH0ucG9wb3Zlcj4uYXJyb3c6YWZ0ZXJ7Y29udGVudDoiIjtib3JkZXItd2lkdGg6MTBweH0ucG9wb3Zlci50b3A+LmFycm93e2JvdHRvbTotMTFweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTFweDtib3JkZXItdG9wLWNvbG9yOiM5OTk7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4yNSk7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5wb3BvdmVyLnRvcD4uYXJyb3c6YWZ0ZXJ7Ym90dG9tOjFweDttYXJnaW4tbGVmdDotMTBweDtjb250ZW50OiIgIjtib3JkZXItdG9wLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5wb3BvdmVyLnJpZ2h0Pi5hcnJvd3t0b3A6NTAlO2xlZnQ6LTExcHg7bWFyZ2luLXRvcDotMTFweDtib3JkZXItcmlnaHQtY29sb3I6Izk5OTtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMjUpO2JvcmRlci1sZWZ0LXdpZHRoOjB9LnBvcG92ZXIucmlnaHQ+LmFycm93OmFmdGVye2JvdHRvbTotMTBweDtsZWZ0OjFweDtjb250ZW50OiIgIjtib3JkZXItcmlnaHQtY29sb3I6I2ZmZjtib3JkZXItbGVmdC13aWR0aDowfS5wb3BvdmVyLmJvdHRvbT4uYXJyb3d7dG9wOi0xMXB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xMXB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiM5OTk7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4yNSl9LnBvcG92ZXIuYm90dG9tPi5hcnJvdzphZnRlcnt0b3A6MXB4O21hcmdpbi1sZWZ0Oi0xMHB4O2NvbnRlbnQ6IiAiO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LnBvcG92ZXIubGVmdD4uYXJyb3d7dG9wOjUwJTtyaWdodDotMTFweDttYXJnaW4tdG9wOi0xMXB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiM5OTk7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMjUpfS5wb3BvdmVyLmxlZnQ+LmFycm93OmFmdGVye3JpZ2h0OjFweDtib3R0b206LTEwcHg7Y29udGVudDoiICI7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZn0uY2Fyb3VzZWx7cG9zaXRpb246cmVsYXRpdmV9LmNhcm91c2VsLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5jYXJvdXNlbC1pbm5lcj4uaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7LXdlYmtpdC10cmFuc2l0aW9uOi42cyBlYXNlLWluLW91dCBsZWZ0Oy1vLXRyYW5zaXRpb246LjZzIGVhc2UtaW4tb3V0IGxlZnQ7dHJhbnNpdGlvbjouNnMgZWFzZS1pbi1vdXQgbGVmdH0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+YT5pbWcsLmNhcm91c2VsLWlubmVyPi5pdGVtPmltZ3tsaW5lLWhlaWdodDoxfUBtZWRpYSBhbGwgYW5kICh0cmFuc2Zvcm0tM2QpLCgtd2Via2l0LXRyYW5zZm9ybS0zZCl7LmNhcm91c2VsLWlubmVyPi5pdGVtey13ZWJraXQtdHJhbnNpdGlvbjotd2Via2l0LXRyYW5zZm9ybSAuNnMgZWFzZS1pbi1vdXQ7LW8tdHJhbnNpdGlvbjotby10cmFuc2Zvcm0gLjZzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlLWluLW91dDstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtcGVyc3BlY3RpdmU6MTAwMHB4O3BlcnNwZWN0aXZlOjEwMDBweH0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0uYWN0aXZlLnJpZ2h0LC5jYXJvdXNlbC1pbm5lcj4uaXRlbS5uZXh0e2xlZnQ6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKX0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0uYWN0aXZlLmxlZnQsLmNhcm91c2VsLWlubmVyPi5pdGVtLnByZXZ7bGVmdDowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCl9LmNhcm91c2VsLWlubmVyPi5pdGVtLmFjdGl2ZSwuY2Fyb3VzZWwtaW5uZXI+Lml0ZW0ubmV4dC5sZWZ0LC5jYXJvdXNlbC1pbm5lcj4uaXRlbS5wcmV2LnJpZ2h0e2xlZnQ6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19LmNhcm91c2VsLWlubmVyPi5hY3RpdmUsLmNhcm91c2VsLWlubmVyPi5uZXh0LC5jYXJvdXNlbC1pbm5lcj4ucHJldntkaXNwbGF5OmJsb2NrfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZle2xlZnQ6MH0uY2Fyb3VzZWwtaW5uZXI+Lm5leHQsLmNhcm91c2VsLWlubmVyPi5wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LmNhcm91c2VsLWlubmVyPi5uZXh0e2xlZnQ6MTAwJX0uY2Fyb3VzZWwtaW5uZXI+LnByZXZ7bGVmdDotMTAwJX0uY2Fyb3VzZWwtaW5uZXI+Lm5leHQubGVmdCwuY2Fyb3VzZWwtaW5uZXI+LnByZXYucmlnaHR7bGVmdDowfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLmxlZnR7bGVmdDotMTAwJX0uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZS5yaWdodHtsZWZ0OjEwMCV9LmNhcm91c2VsLWNvbnRyb2x7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjE1JTtmb250LXNpemU6MjBweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC42KTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApO29wYWNpdHk6LjV9LmNhcm91c2VsLWNvbnRyb2wubGVmdHtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQscmdiYSgwLDAsMCwuNSkgMCxyZ2JhKDAsMCwwLC4wMDAxKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMCwwLDAsLjUpIDAscmdiYSgwLDAsMCwuMDAwMSkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCB0b3AsZnJvbShyZ2JhKDAsMCwwLC41KSksdG8ocmdiYSgwLDAsMCwuMDAwMSkpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC41KSAwLHJnYmEoMCwwLDAsLjAwMDEpIDEwMCUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzgwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyMwMDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0uY2Fyb3VzZWwtY29udHJvbC5yaWdodHtyaWdodDowO2xlZnQ6YXV0bztiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQscmdiYSgwLDAsMCwuMDAwMSkgMCxyZ2JhKDAsMCwwLC41KSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMCwwLDAsLjAwMDEpIDAscmdiYSgwLDAsMCwuNSkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCB0b3AsZnJvbShyZ2JhKDAsMCwwLC4wMDAxKSksdG8ocmdiYSgwLDAsMCwuNSkpKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2JhKDAsMCwwLC4wMDAxKSAwLHJnYmEoMCwwLDAsLjUpIDEwMCUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwMDAwMDAwJywgZW5kQ29sb3JzdHI9JyM4MDAwMDAwMCcsIEdyYWRpZW50VHlwZT0xKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0uY2Fyb3VzZWwtY29udHJvbDpmb2N1cywuY2Fyb3VzZWwtY29udHJvbDpob3Zlcntjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2ZpbHRlcjphbHBoYShvcGFjaXR5PTkwKTtvdXRsaW5lOjA7b3BhY2l0eTouOX0uY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7ei1pbmRleDo1O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6LTEwcHh9LmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbi1jaGV2cm9uLWxlZnQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldntsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTBweH0uY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dHtyaWdodDo1MCU7bWFyZ2luLXJpZ2h0Oi0xMHB4fS5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldnt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2ZvbnQtZmFtaWx5OnNlcmlmO2xpbmUtaGVpZ2h0OjF9LmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldjpiZWZvcmV7Y29udGVudDonXDIwMzknfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQ6YmVmb3Jle2NvbnRlbnQ6J1wyMDNhJ30uY2Fyb3VzZWwtaW5kaWNhdG9yc3twb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MTBweDtsZWZ0OjUwJTt6LWluZGV4OjE1O3dpZHRoOjYwJTtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tbGVmdDotMzAlO3RleHQtYWxpZ246Y2VudGVyO2xpc3Qtc3R5bGU6bm9uZX0uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O21hcmdpbjoxcHg7dGV4dC1pbmRlbnQ6LTk5OXB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6IzAwMFw5O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6MXB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czoxMHB4fS5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmV7d2lkdGg6MTJweDtoZWlnaHQ6MTJweDttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmNhcm91c2VsLWNhcHRpb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTUlO2JvdHRvbToyMHB4O2xlZnQ6MTUlO3otaW5kZXg6MTA7cGFkZGluZy10b3A6MjBweDtwYWRkaW5nLWJvdHRvbToyMHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjYpfS5jYXJvdXNlbC1jYXB0aW9uIC5idG57dGV4dC1zaGFkb3c6bm9uZX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KXsuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHQsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2e3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7bWFyZ2luLXRvcDotMTBweDtmb250LXNpemU6MzBweH0uY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2e21hcmdpbi1sZWZ0Oi0xMHB4fS5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0e21hcmdpbi1yaWdodDotMTBweH0uY2Fyb3VzZWwtY2FwdGlvbntyaWdodDoyMCU7bGVmdDoyMCU7cGFkZGluZy1ib3R0b206MzBweH0uY2Fyb3VzZWwtaW5kaWNhdG9yc3tib3R0b206MjBweH19LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmFmdGVyLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpiZWZvcmUsLmJ0bi10b29sYmFyOmFmdGVyLC5idG4tdG9vbGJhcjpiZWZvcmUsLmNsZWFyZml4OmFmdGVyLC5jbGVhcmZpeDpiZWZvcmUsLmNvbnRhaW5lci1mbHVpZDphZnRlciwuY29udGFpbmVyLWZsdWlkOmJlZm9yZSwuY29udGFpbmVyOmFmdGVyLC5jb250YWluZXI6YmVmb3JlLC5kbC1ob3Jpem9udGFsIGRkOmFmdGVyLC5kbC1ob3Jpem9udGFsIGRkOmJlZm9yZSwuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmFmdGVyLC5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YmVmb3JlLC5tb2RhbC1mb290ZXI6YWZ0ZXIsLm1vZGFsLWZvb3RlcjpiZWZvcmUsLm1vZGFsLWhlYWRlcjphZnRlciwubW9kYWwtaGVhZGVyOmJlZm9yZSwubmF2OmFmdGVyLC5uYXY6YmVmb3JlLC5uYXZiYXItY29sbGFwc2U6YWZ0ZXIsLm5hdmJhci1jb2xsYXBzZTpiZWZvcmUsLm5hdmJhci1oZWFkZXI6YWZ0ZXIsLm5hdmJhci1oZWFkZXI6YmVmb3JlLC5uYXZiYXI6YWZ0ZXIsLm5hdmJhcjpiZWZvcmUsLnBhZ2VyOmFmdGVyLC5wYWdlcjpiZWZvcmUsLnBhbmVsLWJvZHk6YWZ0ZXIsLnBhbmVsLWJvZHk6YmVmb3JlLC5yb3c6YWZ0ZXIsLnJvdzpiZWZvcmV7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIgIn0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6YWZ0ZXIsLmJ0bi10b29sYmFyOmFmdGVyLC5jbGVhcmZpeDphZnRlciwuY29udGFpbmVyLWZsdWlkOmFmdGVyLC5jb250YWluZXI6YWZ0ZXIsLmRsLWhvcml6b250YWwgZGQ6YWZ0ZXIsLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1ncm91cDphZnRlciwubW9kYWwtZm9vdGVyOmFmdGVyLC5tb2RhbC1oZWFkZXI6YWZ0ZXIsLm5hdjphZnRlciwubmF2YmFyLWNvbGxhcHNlOmFmdGVyLC5uYXZiYXItaGVhZGVyOmFmdGVyLC5uYXZiYXI6YWZ0ZXIsLnBhZ2VyOmFmdGVyLC5wYW5lbC1ib2R5OmFmdGVyLC5yb3c6YWZ0ZXJ7Y2xlYXI6Ym90aH0uY2VudGVyLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b30ucHVsbC1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LnB1bGwtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uaGlkZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5zaG93e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LnRleHQtaGlkZXtmb250OjAvMCBhO2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MH0uaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmFmZml4e3Bvc2l0aW9uOmZpeGVkfUAtbXMtdmlld3BvcnR7d2lkdGg6ZGV2aWNlLXdpZHRofS52aXNpYmxlLWxnLC52aXNpYmxlLW1kLC52aXNpYmxlLXNtLC52aXNpYmxlLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnZpc2libGUtbGctYmxvY2ssLnZpc2libGUtbGctaW5saW5lLC52aXNpYmxlLWxnLWlubGluZS1ibG9jaywudmlzaWJsZS1tZC1ibG9jaywudmlzaWJsZS1tZC1pbmxpbmUsLnZpc2libGUtbWQtaW5saW5lLWJsb2NrLC52aXNpYmxlLXNtLWJsb2NrLC52aXNpYmxlLXNtLWlubGluZSwudmlzaWJsZS1zbS1pbmxpbmUtYmxvY2ssLnZpc2libGUteHMtYmxvY2ssLnZpc2libGUteHMtaW5saW5lLC52aXNpYmxlLXhzLWlubGluZS1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsudmlzaWJsZS14c3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXhze2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fXRyLnZpc2libGUteHN7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fXRkLnZpc2libGUteHMsdGgudmlzaWJsZS14c3tkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnZpc2libGUteHMtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsudmlzaWJsZS14cy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnZpc2libGUteHMtaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpIGFuZCAobWF4LXdpZHRoOjk5MXB4KXsudmlzaWJsZS1zbXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXNte2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fXRyLnZpc2libGUtc217ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fXRkLnZpc2libGUtc20sdGgudmlzaWJsZS1zbXtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpey52aXNpYmxlLXNtLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpey52aXNpYmxlLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCl7LnZpc2libGUtc20taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpIGFuZCAobWF4LXdpZHRoOjExOTlweCl7LnZpc2libGUtbWR7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9dGFibGUudmlzaWJsZS1tZHtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH10ci52aXNpYmxlLW1ke2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10ZC52aXNpYmxlLW1kLHRoLnZpc2libGUtbWR7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpIGFuZCAobWF4LXdpZHRoOjExOTlweCl7LnZpc2libGUtbWQtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpey52aXNpYmxlLW1kLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KSBhbmQgKG1heC13aWR0aDoxMTk5cHgpey52aXNpYmxlLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LnZpc2libGUtbGd7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9dGFibGUudmlzaWJsZS1sZ3tkaXNwbGF5OnRhYmxlIWltcG9ydGFudH10ci52aXNpYmxlLWxne2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10ZC52aXNpYmxlLWxnLHRoLnZpc2libGUtbGd7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudmlzaWJsZS1sZy1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudmlzaWJsZS1sZy1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey52aXNpYmxlLWxnLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsuaGlkZGVuLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCl7LmhpZGRlbi1zbXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KXsuaGlkZGVuLW1ke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmhpZGRlbi1sZ3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXByaW50e2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fXRyLnZpc2libGUtcHJpbnR7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fXRkLnZpc2libGUtcHJpbnQsdGgudmlzaWJsZS1wcmludHtkaXNwbGF5OnRhYmxlLWNlbGwhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludC1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH19LnZpc2libGUtcHJpbnQtaW5saW5le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey52aXNpYmxlLXByaW50LWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fS52aXNpYmxlLXByaW50LWlubGluZS1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludC1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fX1AbWVkaWEgcHJpbnR7LmhpZGRlbi1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0KLyojIHNvdXJjZU1hcHBpbmdVUkw9Ym9vdHN0cmFwLm1pbi5jc3MubWFwICov"}},"time_used":187,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":187,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/nprogress/nprogress.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.583Z","timestamp":1785150870583,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/nprogress/nprogress.css HTTP/1.1\r\nHost: punks.my\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://punks.my/assets/styles/style.css\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-602\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=3bdK4AHQHTgbTSZHwmU3yfDog9E%2BDlJ9RQTd8JkOHemjcJJFmS%2FynXfVE22K1ndCCj9Bov8G%2BR9JCUMpVPduLBJN%2FqyCxGteq4R2xiUdNlGXEH3gO0NtRrZn4Q%3D%3D\"}]}\r\ncf-ray: a21b388d2bf956a2-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"]}],"data":{"size":1538,"size_decoded":1354,"mime_type":"text/css","magic":"ASCII text","md5":"7e0b3ea67fec9d8009f0aec96cbab3f1","sha1":"c3eb27febad9f7a636fb0cb14ad96de82a2c20a2","sha256":"3060b49158c180afdd1bfdd1a0a4f7c570c7e30e40fcd8f346eb0f0b7b2201c2","sha512":"89431ea5d00cdd044b6cce7f9931480bfcdd96cae653e2da9849dfc6894cdd4733c7c906e9006c44f4bfce917e3a86a007ff19081b66b539811dcab03287f2ec","ssdeep":"","tlshash":"b431e161ac690824731fcb4e7bca1619972e9042570fdca47bd9100ecf99b5c189efd7","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.56231Z","times_seen":19,"resource_available":false,"data":"LyogTWFrZSBjbGlja3MgcGFzcy10aHJvdWdoICovCiNucHJvZ3Jlc3MgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiA5OTk5OTk5OTk5Owp9CgojbnByb2dyZXNzIC5iYXIgewogIGJhY2tncm91bmQ6ICNGNkQ0MzM7CgogIHBvc2l0aW9uOiBmaXhlZDsKICB6LWluZGV4OiA5OTk5OTk5OTk5OTk7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CgogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMnB4Owp9CgovKiBGYW5jeSBibHVyIGVmZmVjdCAqLwojbnByb2dyZXNzIC5wZWcgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMHB4OwogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMCU7CiAgYm94LXNoYWRvdzogMCAwIDEwcHggIzI5ZCwgMCAwIDVweCAjMjlkOwogIG9wYWNpdHk6IDEuMDsKCiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKSB0cmFuc2xhdGUoMHB4LCAtNHB4KTsKICAgICAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDNkZWcpIHRyYW5zbGF0ZSgwcHgsIC00cHgpOwogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7Cn0KCi8qIFJlbW92ZSB0aGVzZSB0byBnZXQgcmlkIG9mIHRoZSBzcGlubmVyICovCiNucHJvZ3Jlc3MgLnNwaW5uZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBmaXhlZDsKICB6LWluZGV4OiAxMDMxOwogIHRvcDogMTVweDsKICByaWdodDogMTVweDsKfQoKI25wcm9ncmVzcyAuc3Bpbm5lci1pY29uIHsKICB3aWR0aDogMThweDsKICBoZWlnaHQ6IDE4cHg7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKCiAgYm9yZGVyOiBzb2xpZCAycHggdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXRvcC1jb2xvcjogI0Y2RDQzMzsKICBib3JkZXItbGVmdC1jb2xvcjogI0Y2RDQzMzsKICBib3JkZXItcmFkaXVzOiA1MCU7CgogIC13ZWJraXQtYW5pbWF0aW9uOiBucHJvZ3Jlc3Mtc3Bpbm5lciA0MDBtcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgICBhbmltYXRpb246IG5wcm9ncmVzcy1zcGlubmVyIDQwMG1zIGxpbmVhciBpbmZpbml0ZTsKfQoKLm5wcm9ncmVzcy1jdXN0b20tcGFyZW50IHsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLm5wcm9ncmVzcy1jdXN0b20tcGFyZW50ICNucHJvZ3Jlc3MgLnNwaW5uZXIsCi5ucHJvZ3Jlc3MtY3VzdG9tLXBhcmVudCAjbnByb2dyZXNzIC5iYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIG5wcm9ncmVzcy1zcGlubmVyIHsKICAwJSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQogIDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KfQpAa2V5ZnJhbWVzIG5wcm9ncmVzcy1zcGlubmVyIHsKICAwJSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQp9Cgo="}},"time_used":198,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":198,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.859Z","timestamp":1785150870859,"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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/poppins/v24/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://punks.my\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 8000\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:16 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:16 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Mon, 15 Sep 2025 16:33:57 GMT\r\ncontent-type: font/woff2\r\nage: 425054\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":8000,"size_decoded":8812,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 8000, version 1.0","md5":"72993dddf88a63e8f226656f7de88e57","sha1":"179f97ec0275f09603a8db94d4380eb584d81cd5","sha256":"f4e80d9dfd374d02989b87a27b5ed4cb78fbb177c27f1478e9a8b0afb7513149","sha512":"7c20165f9d22a86341e841fd58526209017dcde2afe2d0d2a89fe853d95dc69f658d25cf798c71f452dab09843fc808c1ae87a60b1284134163abf5a1d93e50a","ssdeep":"192:GDonmfrEdXT8WrxzRXwyQo3zGEOM7Y2hOMgWnsfYSjv4ENFGwrlKJ:8onPxTzjgyQSzLPXOTIYHJAJ","tlshash":"08f1b0ffa92456c4df692475a5044f27623652b4dd35cb2f496f3e12d2d74224bcc4c1","first_seen":"2023-04-05T18:53:14Z","last_seen":"2026-07-27T12:59:07.151283Z","times_seen":283593,"resource_available":false,"data":"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"}},"time_used":50,"timings":{"blocked":25,"dns":0,"connect":0,"send":0,"wait":24,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/main.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.357Z","timestamp":1785150870357,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/scripts/main.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-2e49\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=WU3PSOvr2cUoaSkDJswp4Wesj9rBKR2rd4rGivyQBZfuLnf0EKj7DQz%2F3v7QFV5p61p4lTkyndixmZgeAoXuvY34wTCSYHRYwMhO1AXJLfvt84DSllIPPUfQDw%3D%3D\"}]}\r\ncf-ray: a21b388bbbe056a2-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"]}],"data":{"size":11849,"size_decoded":3874,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (11849), with no line terminators","md5":"b18d1c2e6abb6c9dcfb6fce68e6c36d8","sha1":"ad6b1c9b421d8fa00ac069336062eb5fdce45943","sha256":"6ce869479bf36e063384c05337395f6381e117e937e4e5d17c948874bce8c029","sha512":"fcfed6c28bc3bf6f4683a9a5fb153d7db5cfa7455a9943a38f8a9f45c309e7561a508c864dc611b5070783459bcb9534bf37a71c88fb1021995ee2f529b10772","ssdeep":"192:bKqQeSdl9iDdmIdeFK7tUwHR4HbQpPBnCcm5Cd7/4kXk:KeG3iDdmIIFKxUwqctCcBZk","tlshash":"2a32a57ef260b8ba11b7905e186fd505b1222dd8880985817069b0e12ffbfc76177f7a","first_seen":"2025-12-16T06:43:19.360541Z","last_seen":"2026-07-27T11:25:33.521076Z","times_seen":16,"resource_available":true,"data":"IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD17fTtOUHJvZ3Jlc3Muc3RhcnQoKSxlKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe3JldHVybiB0Lm1vZHVsZS5pbml0KCksdC5wbHVnaW4uaW5pdCgpLGUoJ1tkYXRhLXRvZ2dsZT0idG9vbHRpcCJdJykubGVuZ3RoJiZlKCdbZGF0YS10b2dnbGU9InRvb2x0aXAiXScpLnRvb2x0aXAoKSwhMX0pLGUod2luZG93KS5iaW5kKCJsb2FkIixmdW5jdGlvbigpe3JldHVybiB0LnBsdWdpbi5pc290b3BlLmluaXQoKSx0LmZ1bmMucmVzaXplTm90aWNlKCksTlByb2dyZXNzLmRvbmUoKSwhMX0pLGUod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbigpe3JldHVybiB0LmZ1bmMucmVzaXplTm90aWNlKCksdC5mdW5jLmdldENoYXJ0KCksITF9KSxlKCIuanNfX2Z1bGxfc2NyZWVuIikub24oImNsaWNrIixmdW5jdGlvbigpe2UoZG9jdW1lbnQpLmZ1bGxTY3JlZW4oITApfSksdC5tb2R1bGU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5tb2R1bGUuYWNjb3JkaW9uKCksdC5tb2R1bGUuY2FyZCgpLHQubW9kdWxlLmNzcyhlKCIuanNfX3dpZHRoIiksIndpZHRoIiksdC5tb2R1bGUuZHJvcERvd24oImpzX19kcm9wX2Rvd24iLCExKSx0Lm1vZHVsZS5sb2dvdXQoKSx0Lm1vZHVsZS5tZW51KCksdC5tb2R1bGUudGFiKCIuanNfX3RhYiIsImxpIiksdC5tb2R1bGUudG9nZ2xlKCksdC5tb2R1bGUudG9kbygpLCExfSxhY2NvcmRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgiLmpzX19hY2NvcmRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTt0LmZpbmQoIi5qc19fY29udHJvbCIpLm9uKCJjbGljayIsZnVuY3Rpb24obyl7aWYoby5wcmV2ZW50RGVmYXVsdCgpLGUodGhpcykucGFyZW50KCkuaGFzQ2xhc3MoImFjdGl2ZSIpKWUodGhpcykucGFyZW50KCkucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGUodGhpcykubmV4dCgpLnN0b3AoKS5zbGlkZVVwKDQwMCk7ZWxzZXt2YXIgcj1lKHRoaXMpO3QuZmluZCgiLmFjdGl2ZSIpLmNoaWxkcmVuKCIuanNfX2NvbnRlbnQiKS5zdG9wKCkuc2xpZGVVcCg0MDApLHQuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxlKHRoaXMpLnBhcmVudCgpLmFkZENsYXNzKCJhY3RpdmUiKSxlKHRoaXMpLm5leHQoIi5qc19fY29udGVudCIpLnNsaWRlRG93big0MDAsZnVuY3Rpb24oKXt0LnBhcmVudHMoIi5tYWluLW1lbnUiKS5sZW5ndGgmJmUoIi5tYWluLW1lbnUgLmNvbnRlbnQiKS5tQ3VzdG9tU2Nyb2xsYmFyKCJzY3JvbGxUbyIscix7dGltZW91dDowLHNjcm9sbEluZXJ0aWE6MjAwfSl9KX19KX0pLCExfSxjYXJkOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi5qc19fY2FyZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3Qub24oImNsaWNrIiwiLmpzX19jYXJkX21pbnVzIixmdW5jdGlvbigpe3QudG9nZ2xlQ2xhc3MoImNhcmQtY2xvc2VkIiksdC5maW5kKCIuanNfX2NhcmRfY29udGVudCIpLnN0b3AoKS5zbGlkZVRvZ2dsZSg0MDApfSksdC5vbigiY2xpY2siLCIuanNfX2NhcmRfcmVtb3ZlIixmdW5jdGlvbigpe3Quc2xpZGVVcCg0MDApfSl9KSwhMX0sY3NzOmZ1bmN0aW9uKHQsbyxyKXtyZXR1cm4gcnx8KHI9byksdC5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5kYXRhKHIpO2lmKHQpe3ZhciBhPXt9O2Fbb109dCxlKHRoaXMpLmNzcyhhKX19KSwhMX0sZHJvcERvd246ZnVuY3Rpb24odCxvKXt2YXIgcj1lKCIuIit0KTtyZXR1cm4gci5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTt0Lm9uKCJjbGljayIsIi5qc19fZHJvcF9kb3duX2J1dHRvbiIsZnVuY3Rpb24oYSl7cmV0dXJuIGEucHJldmVudERlZmF1bHQoKSwoZSh3aW5kb3cpLndpZHRoKCk8MTAyNXx8MD09bykmJih0Lmhhc0NsYXNzKCJhY3RpdmUiKT90LnJlbW92ZUNsYXNzKCJhY3RpdmUiKTooci5yZW1vdmVDbGFzcygiYWN0aXZlIiksdC5hZGRDbGFzcygiYWN0aXZlIikpKSwhMX0pfSksZSgiaHRtbCIpLm9uKCJjbGljayIsZnVuY3Rpb24obyl7dmFyIHI9ZShvLnRhcmdldCk7ci5oYXNDbGFzcyh0KXx8ci5wYXJlbnRzKCIuIit0KS5sZW5ndGh8fGUoIi4iK3QrIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIil9KSwhMX0sbG9nb3V0OmZ1bmN0aW9uKCl7ZSgiLmpzX19sb2dvdXQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3JldHVybiBlLnByZXZlbnREZWZhdWx0KCksc3dhbCh7dGl0bGU6IkxvZ291dD8iLHRleHQ6IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBsb2dvdXQ/Iix0eXBlOiJ3YXJuaW5nIixzaG93Q2FuY2VsQnV0dG9uOiEwLGNvbmZpcm1CdXR0b25Db2xvcjoiI0RENkI1NSIsY29uZmlybUJ1dHRvblRleHQ6IlllcywgSSdtIG91dCEiLGNhbmNlbEJ1dHRvblRleHQ6Ik5vLCBzdGF5IHBseCEiLGNsb3NlT25Db25maXJtOiExLGNsb3NlT25DYW5jZWw6ITAsY29uZmlybUJ1dHRvbkNvbG9yOiIjZjYwZTBlIn0sZnVuY3Rpb24oZSl7ZSYmc3dhbCh7dGl0bGU6IkxvZ291dCBzdWNjZXNzIix0ZXh0OiJTZWUgeW91IGxhdGVyISIsdHlwZToic3VjY2VzcyIsY29uZmlybUJ1dHRvbkNvbG9yOiIjMzA0ZmZlIn0pfSksITF9KX0sbWVudTpmdW5jdGlvbigpe3JldHVybiBlKCIuanNfX21lbnVfbW9iaWxlIikub24oImNsaWNrIixmdW5jdGlvbigpe2UoImh0bWwiKS50b2dnbGVDbGFzcygibWVudS1hY3RpdmUiKSxlKHdpbmRvdykudHJpZ2dlcigicmVzaXplIil9KSxlKCIuanNfX21lbnVfY2xvc2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7ZSgiaHRtbCIpLnJlbW92ZUNsYXNzKCJtZW51LWFjdGl2ZSIpfSksZSgiYm9keSIpLm9uKCJjbGljayIsZnVuY3Rpb24odCl7aWYoZSgiaHRtbC5tZW51LWFjdGl2ZSIpLmxlbmd0aCYmZSh3aW5kb3cpLndpZHRoKCk8ODAwKXt2YXIgbz1lKHQudGFyZ2V0KTtvLmhhc0NsYXNzKCJtYWluLW1lbnUiKXx8by5oYXNDbGFzcygianNfX21lbnVfbW9iaWxlIil8fG8ucGFyZW50cygiLm1haW4tbWVudSIpLmxlbmd0aHx8by5wYXJlbnRzKCIuanNfX21lbnVfbW9iaWxlIikubGVuZ3RofHxlKCJodG1sIikucmVtb3ZlQ2xhc3MoIm1lbnUtYWN0aXZlIil9fSksITF9LHRhYjpmdW5jdGlvbih0LG8pe3JldHVybiBlKCIuanNfX3RhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3Qub24oImNsaWNrIiwiLmpzX190YWJfY29udHJvbCIsZnVuY3Rpb24ocil7dmFyIGE9ZSh0aGlzKS5kYXRhKCJ0YXJnZXQiKTtpZihyLnByZXZlbnREZWZhdWx0KCksdC5maW5kKCIuanNfX3RhYl9jb250ZW50IikucmVtb3ZlQ2xhc3MoImpzX19hY3RpdmUiKSx0LmZpbmQoIi5qc19fdGFiX2NvbnRyb2wiKS5yZW1vdmVDbGFzcygianNfX2FjdGl2ZSIpLGUodGhpcykuYWRkQ2xhc3MoImpzX19hY3RpdmUiKSxhKWUoYSkuYWRkQ2xhc3MoImpzX19hY3RpdmUiKTtlbHNle3ZhciBuO249bz9lKHRoaXMpLnBhcmVudHMobykuZmlyc3QoKS5pbmRleCgpOmUodGhpcykuaW5kZXgoKSx0LmZpbmQoIi5qc19fdGFiX2NvbnRlbnQiKS5lcShuKS5hZGRDbGFzcygianNfX2FjdGl2ZSIpfXJldHVybiExfSl9KSwhMX0sdG9kbzpmdW5jdGlvbigpe3JldHVybiBlKCIuanNfX3RvZG9fd2lkZ2V0IikuZWFjaChmdW5jdGlvbigpe3ZhciB0PShlKHRoaXMpLGUodGhpcykuZmluZCgiLmpzX190b2RvX2xpc3QiKSksbz1lKHRoaXMpLmZpbmQoIi5qc19fdG9kb192YWx1ZSIpLHI9ZSh0aGlzKS5maW5kKCIuanNfX3RvZG9fYnV0dG9uIik7ci5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoIiIhPW8udmFsKCkpe3ZhciBlPU1hdGguZmxvb3IoMWU4Kk1hdGgucmFuZG9tKCkrMSk7dC5hcHBlbmQoJzxkaXYgY2xhc3M9InRvZG8taXRlbSI+PGRpdiBjbGFzcz0iY2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InRvZG8tJytlKyciPjxsYWJlbCBmb3I9InRvZG8tJytlKyciPicrby52YWwoKSsiPC9sYWJlbD48L2Rpdj48L2Rpdj4iKSxvLnZhbCgiIil9ZWxzZSBhbGVydCgiWW91IG11c3QgZW50ZXIgdGFzayBuYW1lLiIpO3JldHVybiExfSl9KSwhMX0sdG9nZ2xlOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi5qc19fdG9nZ2xlX29wZW4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0KCksZShlKHRoaXMpLmRhdGEoInRhcmdldCIpKS5oYXNDbGFzcygiYWN0aXZlIil8fGUoIi5qc19fdG9nZ2xlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGUoZSh0aGlzKS5kYXRhKCJ0YXJnZXQiKSkudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpLCExfSksZSgiLmpzX190b2dnbGVfY2xvc2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0KCksZSh0aGlzKS5wYXJlbnRzKCIuanNfX3RvZ2dsZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSwhMX0pLGUoImJvZHkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe2lmKGUoIi5qc19fdG9nZ2xlIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgbz1lKHQudGFyZ2V0KTtvLmhhc0NsYXNzKCJqc19fdG9nZ2xlX29wZW4iKXx8by5oYXNDbGFzcygianNfX3RvZ2dsZSIpfHxvLnBhcmVudHMoIi5qc19fdG9nZ2xlX29wZW4iKS5sZW5ndGh8fG8ucGFyZW50cygiLmpzX190b2dnbGUiKS5sZW5ndGh8fGUoIi5qc19fdG9nZ2xlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfX0pLCExfX0sdC5mdW5jPXtjaGlsZFJldHVybldpZHRoOmZ1bmN0aW9uKG8scil7aWYoby5jaGlsZHJlbigibGkiKS5jaGlsZHJlbigiLnN1Yi1tZW51IikubGVuZ3RoKXt2YXIgYT0wO3JldHVybiBvLmNoaWxkcmVuKCJsaSIpLmNoaWxkcmVuKCIuc3ViLW1lbnUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89dC5mdW5jLmNoaWxkUmV0dXJuV2lkdGgoZSh0aGlzKSxyK2UodGhpcykub3V0ZXJXaWR0aCgpKTtvPmEmJihhPW8pfSksYX1yZXR1cm4gcn0sZ2V0UmVzcG9uc2l2ZVNldHRpbmdzOmZ1bmN0aW9uKHQpe3ZhciBvPXQuZGF0YSgicmVzcG9uc2l2ZSIpLHI9W107aWYobyl7Zm9yKDtvLmluZGV4T2YoIiciKT4tMTspbz1vLnJlcGxhY2UoIiciLCciJyk7dmFyIGE9SlNPTi5wYXJzZShvKTtlLmVhY2goYSxmdW5jdGlvbihlLHQpe3Jbci5sZW5ndGhdPXticmVha3BvaW50OmUsc2V0dGluZ3M6e3NsaWRlc1RvU2hvdzp0LHNsaWRlc1RvU2Nyb2xsOnR9fX0pfXJldHVybiByfSxnZXRDaGFydDpmdW5jdGlvbigpe2UoIi5qc19fY2hhcnQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQsbyxyLGE9ZSh0aGlzKSxuPWEuZGF0YSgiY2hhcnQiKSxpPVtdLGw9YS5hdHRyKCJpZCIpLHM9YS5kYXRhKCJ0eXBlIiksYz1lKHRoaXMpLmhhc0NsYXNzKCJibGFjay1jaGFydCIpPyIjMWIxYzFjIjoiI2ZmZmZmZiI7aWYobil7dmFyIGQsaCx1PW4uc3BsaXQoInwiKTtmb3IoZD0wO2Q8dS5sZW5ndGg7ZCsrKWZvcih1W2RdPXVbZF0udHJpbSgpLGlbZF09dVtkXS5zcGxpdCgiLyIpLGg9MDtoPGlbZF0ubGVuZ3RoO2grKylpZihpW2RdW2hdLmluZGV4T2YoIiciKT4tMSl7Zm9yKDtpW2RdW2hdLmluZGV4T2YoIiciKT4tMTspaVtkXVtoXT1pW2RdW2hdLnJlcGxhY2UoIiciLCIiKTtpW2RdW2hdPWlbZF1baF0udHJpbSgpfWVsc2UgaVtkXVtoXS5pbmRleE9mKCIuIik+LTE/aVtkXVtoXT1wYXJzZUZsb2F0KGlbZF1baF0pOmlbZF1baF09cGFyc2VJbnQoaVtkXVtoXSwxMCk7aWYobz1nb29nbGUudmlzdWFsaXphdGlvbi5hcnJheVRvRGF0YVRhYmxlKGkpLGUodGhpcykuaGFzQ2xhc3MoImJsYWNrLWNoYXJ0Iikpc3dpdGNoKHMpe2Nhc2UiY2lyY2xlIjp0PXtjaGFydEFyZWE6e2xlZnQ6MCx0b3A6MCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiI3NSUifSxjb2xvcnM6WyIjMzA0ZmZlIiwiI2Y2MGUwZSIsIiNmZmEwMDAiXSxmb250TmFtZToiUG9wcGlucyIsYmFja2dyb3VuZENvbG9yOmMsbGVnZW5kOntwb3NpdGlvbjoiYm90dG9tIix0ZXh0U3R5bGU6e2NvbG9yOiIjNDg0ODQ4In19LHZBeGlzOntiYXNlbGluZUNvbG9yOiIjNDg0ODQ4IixncmlkbGluZXM6e2NvbG9yOiIjNDg0ODQ4In0sdGV4dFN0eWxlOntjb2xvcjoiIzQ4NDg0OCJ9fSxoQXhpczp7dGV4dFN0eWxlOntjb2xvcjoiIzQ4NDg0OCJ9fX0scj1uZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uUGllQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobCkpO2JyZWFrO2Nhc2UiZG9udXQiOnQ9e3BpZUhvbGU6LjMsY2hhcnRBcmVhOntsZWZ0OjAsdG9wOjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiNzUlIn0sbGVnZW5kOntwb3NpdGlvbjoiYm90dG9tIix0ZXh0U3R5bGU6e2NvbG9yOiIjNDg0ODQ4In19LGNvbG9yczpbIiMzMDRmZmUiLCIjZjYwZTBlIiwiI2ZmYTAwMCJdLGZvbnROYW1lOiJQb3BwaW5zIixiYWNrZ3JvdW5kQ29sb3I6Y30scj1uZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uUGllQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobCkpO2JyZWFrO2Nhc2UiY29sdW1uIjp0PXtjaGFydEFyZWE6e2xlZnQ6MzAsdG9wOjEwLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjgwJSJ9LGNvbG9yczpbIiMzMDRmZmUiXSxmb250TmFtZToiUG9wcGlucyIsYmFja2dyb3VuZENvbG9yOmMsdkF4aXM6e2Jhc2VsaW5lQ29sb3I6IiM0ODQ4NDgiLGdyaWRsaW5lczp7Y29sb3I6IiM0ODQ4NDgifSx0ZXh0U3R5bGU6e2NvbG9yOiIjNDg0ODQ4In19LGhBeGlzOnt0ZXh0U3R5bGU6e2NvbG9yOiIjNDg0ODQ4In19fSxyPW5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsKSk7YnJlYWs7Y2FzZSJjdXJ2ZSI6dD17Y2hhcnRBcmVhOntsZWZ0OjMwLHRvcDoxMCx3aWR0aDoiOTAlIixoZWlnaHQ6IjgwJSJ9LGN1cnZlVHlwZToiZnVuY3Rpb24iLGNvbG9yczpbIiMzMDRmZmUiLCIjZjYwZTBlIiwiI2ZmYTAwMCJdLGZvbnROYW1lOiJQb3BwaW5zIixiYWNrZ3JvdW5kQ29sb3I6Yyx2QXhpczp7YmFzZWxpbmVDb2xvcjoiIzQ4NDg0OCIsZ3JpZGxpbmVzOntjb2xvcjoiIzQ4NDg0OCJ9LHRleHRTdHlsZTp7Y29sb3I6IiM0ODQ4NDgifX0saEF4aXM6e3RleHRTdHlsZTp7Y29sb3I6IiM0ODQ4NDgifX19LHI9bmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsKSk7YnJlYWs7Y2FzZSJsaW5lIjp0PXtjaGFydEFyZWE6e2xlZnQ6MzAsdG9wOjEwLHdpZHRoOiI5MCUiLGhlaWdodDoiODAlIn0sZm9udE5hbWU6IlBvcHBpbnMiLGJhY2tncm91bmRDb2xvcjpjLHZBeGlzOntiYXNlbGluZUNvbG9yOiIjNDg0ODQ4IixncmlkbGluZXM6e2NvbG9yOiIjNDg0ODQ4In0sdGV4dFN0eWxlOntjb2xvcjoiIzQ4NDg0OCJ9fSxoQXhpczp7dGV4dFN0eWxlOntjb2xvcjoiIzQ4NDg0OCJ9fX0scj1uZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uTGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpKTticmVhaztjYXNlImFyZWEiOnQ9e2NoYXJ0QXJlYTp7bGVmdDo1MCx0b3A6MjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiNzAlIn0sbGVnZW5kOntwb3NpdGlvbjoiYm90dG9tIn0sZm9udE5hbWU6IlBvcHBpbnMiLGJhY2tncm91bmRDb2xvcjpjLHZBeGlzOntiYXNlbGluZUNvbG9yOiIjNDg0ODQ4IixncmlkbGluZXM6e2NvbG9yOiIjNDg0ODQ4In0sdGV4dFN0eWxlOntjb2xvcjoiIzQ4NDg0OCJ9fSxoQXhpczp7dGV4dFN0eWxlOntjb2xvcjoiIzQ4NDg0OCJ9fX0scj1uZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQXJlYUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpKX1lbHNlIHN3aXRjaChzKXtjYXNlImNpcmNsZSI6dD17Y2hhcnRBcmVhOntsZWZ0OjAsdG9wOjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiNzUlIn0sbGVnZW5kOntwb3NpdGlvbjoiYm90dG9tIn0sY29sb3JzOlsiIzMwNGZmZSIsIiNmNjBlMGUiLCIjZmZhMDAwIl0sZm9udE5hbWU6IlBvcHBpbnMiLGJhY2tncm91bmRDb2xvcjpjfSxyPW5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5QaWVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsKSk7YnJlYWs7Y2FzZSJkb251dCI6dD17cGllSG9sZTouMyxjaGFydEFyZWE6e2xlZnQ6MCx0b3A6MCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiI3NSUifSxsZWdlbmQ6e3Bvc2l0aW9uOiJib3R0b20ifSxjb2xvcnM6WyIjMzA0ZmZlIiwiI2Y2MGUwZSIsIiNmZmEwMDAiXSxmb250TmFtZToiUG9wcGlucyIsYmFja2dyb3VuZENvbG9yOmN9LHI9bmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLlBpZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpKTticmVhaztjYXNlImNvbHVtbiI6dD17Y2hhcnRBcmVhOntsZWZ0OjMwLHRvcDoxMCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiI4MCUifSxjb2xvcnM6WyIjMzA0ZmZlIl0sZm9udE5hbWU6IlBvcHBpbnMiLGJhY2tncm91bmRDb2xvcjpjfSxyPW5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsKSk7YnJlYWs7Y2FzZSJjdXJ2ZSI6dD17Y2hhcnRBcmVhOntsZWZ0OjMwLHRvcDoxMCx3aWR0aDoiOTAlIixoZWlnaHQ6IjgwJSJ9LGN1cnZlVHlwZToiZnVuY3Rpb24iLGNvbG9yczpbIiMzMDRmZmUiLCIjZjYwZTBlIiwiI2ZmYTAwMCJdLGZvbnROYW1lOiJQb3BwaW5zIixiYWNrZ3JvdW5kQ29sb3I6Y30scj1uZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uTGluZUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpKTticmVhaztjYXNlImxpbmUiOnQ9e2NoYXJ0QXJlYTp7bGVmdDozMCx0b3A6MTAsd2lkdGg6IjkwJSIsaGVpZ2h0OiI4MCUifSxmb250TmFtZToiUG9wcGlucyIsYmFja2dyb3VuZENvbG9yOmN9LHI9bmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkxpbmVDaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsKSk7YnJlYWs7Y2FzZSJhcmVhIjp0PXtjaGFydEFyZWE6e2xlZnQ6NTAsdG9wOjIwLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjcwJSJ9LGxlZ2VuZDp7cG9zaXRpb246ImJvdHRvbSJ9LGZvbnROYW1lOiJQb3BwaW5zIixiYWNrZ3JvdW5kQ29sb3I6Y30scj1uZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQXJlYUNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwpKX1yLmRyYXcobyx0KX19KX0scmVzaXplTm90aWNlOmZ1bmN0aW9uKCl7ZSgiLm5vdGljZS1wb3B1cCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG89cGFyc2VJbnQodC5kYXRhKCJzcGFjZSIpLDEwKT4wP3BhcnNlSW50KHQuZGF0YSgic3BhY2UiKSwxMCk6NzUscj1lKHdpbmRvdykuaGVpZ2h0KCktbzt0LmF0dHIoInN0eWxlIiwiIiksdC5oZWlnaHQoKT5yJiZ0LmNzcyh7aGVpZ2h0OnJ9KX0pfX0sdC5wbHVnaW49e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5wbHVnaW4uY2hhcnQoKSx0LnBsdWdpbi5tQ3VzdG9tU2Nyb2xsYmFyKCksdC5wbHVnaW4uc2VsZWN0MigpLHQucGx1Z2luLnVpLmFjY29yZGlvbigpLHQucGx1Z2luLnVpLnNsaWRlcigpLHQucGx1Z2luLnVpLnNvcnRhYmxlKCksdC5wbHVnaW4udWkudGFicygpLHQucGx1Z2luLndhdmVzKCksdC5wbHVnaW4uaXNvdG9wZS5maWx0ZXIoKSwhMX0sY2hhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgiLmpzX19jaGFydCIpLmxlbmd0aCYmKGdvb2dsZS5jaGFydHMubG9hZCgiY3VycmVudCIse3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KSxnb29nbGUuY2hhcnRzLnNldE9uTG9hZENhbGxiYWNrKHQuZnVuYy5nZXRDaGFydCkpLCExfSxpc290b3BlOntpbml0OmZ1bmN0aW9uKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKCIuanNfX2ZpbHRlcl9pc290b3BlIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5maW5kKCIuanNfX2lzb3RvcGVfaXRlbXMiKS5pc290b3BlKHtpdGVtU2VsZWN0b3I6Ii5qc19faXNvdG9wZV9pdGVtIixsYXlvdXRNb2RlOiJjZWxsc0J5Um93In0pfSl9LDEwMCksITF9LGZpbHRlcjpmdW5jdGlvbigpe3JldHVybiBlKCIuanNfX2ZpbHRlcl9pc290b3BlIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5vbigiY2xpY2siLCIuanNfX2ZpbHRlcl9jb250cm9sIixmdW5jdGlvbihvKXtyZXR1cm4gby5wcmV2ZW50RGVmYXVsdCgpLGUodGhpcykuaGFzQ2xhc3MoIi5qc19fYWN0aXZlIil8fCh0LmZpbmQoIi5qc19fZmlsdGVyX2NvbnRyb2wiKS5yZW1vdmVDbGFzcygianNfX2FjdGl2ZSIpLGUodGhpcykuYWRkQ2xhc3MoImpzX19hY3RpdmUiKSx0LmZpbmQoIi5qc19faXNvdG9wZV9pdGVtcyIpLmlzb3RvcGUoe2ZpbHRlcjplKHRoaXMpLmRhdGEoImZpbHRlciIpfSkpLCExfSl9KSwhMX19LG1DdXN0b21TY3JvbGxiYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZSgiLm1haW4tbWVudSIpLmxlbmd0aCYmZSgiLm1haW4tbWVudSAuY29udGVudCIpLm1DdXN0b21TY3JvbGxiYXIoKSxlKCIubm90aWNlLXBvcHVwIikubGVuZ3RoJiZlKCIubm90aWNlLXBvcHVwIC5jb250ZW50IikubUN1c3RvbVNjcm9sbGJhcigpLCExfSxzZWxlY3QyOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi5qc19fc2VsZWN0MiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLmRhdGEoIm1pbi1yZXN1bHRzIiksbz1lKHRoaXMpLmRhdGEoImNvbnRhaW5lci1jbGFzcyIpO3Q/KCJJbmZpbml0eSI9PXQ/ZSh0aGlzKS5zZWxlY3QyKHttaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxLzB9KTplKHRoaXMpLnNlbGVjdDIoe21pbmltdW1SZXN1bHRzRm9yU2VhcmNoOnBhcnNlSW50KHQsMTApfSksbyYmZSh0aGlzKS5vbigic2VsZWN0MjpvcGVuIixmdW5jdGlvbigpe3JldHVybiBlKCIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4iKS5hZGRDbGFzcyhvKSwhMX0pKTplKHRoaXMpLnNlbGVjdDIoKX0pLCExfSx1aTp7YWNjb3JkaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi5qc19fdWlfYWNjb3JkaW9uIikubGVuZ3RoJiZlKCIuanNfX3VpX2FjY29yZGlvbiIpLmFjY29yZGlvbih7aGVpZ2h0U3R5bGU6ImNvbnRlbnQiLGNvbGxhcHNpYmxlOiEwfSksITF9LHNsaWRlcjpmdW5jdGlvbigpe3JldHVybiBlKCIuanNfX3VpX3NsaWRlciIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG89dC5maW5kKCIuanNfX3NsaWRlcl9yYW5nZSIpLHI9dC5maW5kKCIuanNfX3NsaWRlcl9hbW91bnQiKSxhPXBhcnNlSW50KHQuZGF0YSgibWluIiksMTApLG49cGFyc2VJbnQodC5kYXRhKCJtYXgiKSwxMCksaT1wYXJzZUludCh0LmRhdGEoInZhbHVlLTEiKSwxMCksbD1wYXJzZUludCh0LmRhdGEoInZhbHVlLTIiKSwxMCkscz10LmRhdGEoInJhbmdlIik7bD4wPyhvLnNsaWRlcih7cmFuZ2U6ITAsbWluOmEsbWF4Om4sdmFsdWVzOltpLGxdLHNsaWRlOmZ1bmN0aW9uKGUsdCl7ci52YWwoIiQiK3QudmFsdWVzWzBdKyIgLSAkIit0LnZhbHVlc1sxXSl9fSksci52YWwoIiQiK28uc2xpZGVyKCJ2YWx1ZXMiLDApKyIgLSAkIitvLnNsaWRlcigidmFsdWVzIiwxKSkpOihvLnNsaWRlcih7cmFuZ2U6cyxtaW46YSxtYXg6bix2YWx1ZTppLHNsaWRlOmZ1bmN0aW9uKGUsdCl7ci52YWwoIiQiK3QudmFsdWUpfX0pLHIudmFsKCIkIitvLnNsaWRlcigidmFsdWUiKSkpfSksITF9LHNvcnRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGUoIi5qc19fc29ydGFibGUiKS5sZW5ndGgmJmUoIi5qc19fc29ydGFibGUiKS5zb3J0YWJsZSh7cmV2ZXJ0OiEwLHN0YXJ0OmZ1bmN0aW9uKGUsdCl7dC5wbGFjZWhvbGRlci5oZWlnaHQodC5pdGVtLmhlaWdodCgpLTIwKSx0LnBsYWNlaG9sZGVyLmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKX19KSwhMX0sdGFiczpmdW5jdGlvbigpe3JldHVybiBlKCIuanNfX3VpX3RhYiIpLmxlbmd0aCYmZSgiLmpzX191aV90YWIiKS50YWJzKCksITF9fSx3YXZlczpmdW5jdGlvbigpe3JldHVybiBlKCIuanNfX2NvbnRyb2wiKS5sZW5ndGgmJihXYXZlcy5hdHRhY2goIi5qc19fY29udHJvbCIpLFdhdmVzLmluaXQoKSksITF9fX0oalF1ZXJ5KTs="}},"time_used":188,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":188,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/favicon.ico","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.994Z","timestamp":1785150870994,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /favicon.ico HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\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 11:14:31 GMT\r\ncontent-type: image/x-icon\r\nlast-modified: Thu, 04 Apr 2024 06:21:49 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=6,i=?0\r\nvary: Accept-Encoding\r\netag: \"660e46fd-53d\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Hlrfs7Qy%2FDiHs7y6YjYNIVcaoNaJAcY9tOsFK2pvr5XtYu19lifYkgh5ZC9QKORYkHjdywsc%2BUOfxGWzuSVJnYgMpWEV7c9ZsGLPSimzUh%2Fe1eoM3nZ7V8V38Q%3D%3D\"}]}\r\ncf-ray: a21b388fbc0f56a2-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"]}],"data":{"size":1341,"size_decoded":2153,"mime_type":"image/x-icon","magic":"GIF image data, version 89a, 128 x 128","md5":"a2858b35b634b21432d0c320f241c0da","sha1":"a7fa02c4e6a50e6ff0659c748c45dd93a25a6919","sha256":"6e3dec9fd9a37853653ce4d6c8be6c53867c65632749ad07dbace82c98e6d49e","sha512":"4fa38c645c36d159d5dff52c3a30a54328a146d2b89f18d46bdb8cdccbaa7c3cbeacc4f43a9d93531b3c7562bddbac5b173e9e1e26e62b1e3ca3b66a84c58f8a","ssdeep":"","tlshash":"8e21d5348c21a0aae89b54387a82df8248154fc51341dea89638bab9dc391e3e0e808c","first_seen":"2025-12-16T06:43:19.29545Z","last_seen":"2026-07-27T11:25:33.561578Z","times_seen":16,"resource_available":false,"data":"R0lGODlhgACAAOMNAAAAACQ1IiYmJmUoOX9/f4mkUaampqy+gr+/v9GLk+bm5urzyv/9yv///////////yH5BAEKAA8ALAAAAACAAIAAAAT+8MlJq7046yq6/x0GjsJmnmiqpiQott4qz3T9wPGFh3bv/7fdCwcsGlkehBKhaCpazugzd6xaKZ8l0wmVNj/XsDW7jHa9YLEaSFaaSd4vdU33fQx4Q1yarvt/d3l7bzx/hjWBeINcc4eOSB15eotThY+XWDuampiYm58wnZegpC6ijqWpJad1bVuUsHF9rGNJZbG4hKu0tR1aucCVu7xHrsG5s8Q9xrKqzHKWyjLPfM62bozR0irUus6/2cPb3Nev1dYC4NDi4xrd4QXxBQf09fb399TJ7Rzlex/y5uEbiE9fI36ZfN1C4yEgwYf1DGpDKOHdOocQH0pk186iMIz+GUNG9BcOoUeA8kSqPLDRJEmGHUCuhNiS38mGKWdmrNnx5cecOnV+0OVSIbaLQIOuHFrSpk+U8ZQK9UDUqVFzUAVKVcl0XdF0C39G3cqVatOeV3XJJEvTrFerYI+K1cq2bYeqaONixTm2rl0BeMdtlBmgcIAFiBcQNHw4McGuwr6qm2uPcWLFAy07Hgh5n7LBSTUjXmz48mO3keFOzlq59GZ8ojEXRO2ZGOi+BxgzJq07wOm7ZwU/5Uu3d2Heun8DDr7tdnHjyHdzpn3w8/CYoaFn1j4b+Nu8q4n73Ul9ou3rAtaOz1ee4/m08JKuZ+89NfiwrOdPr1+bl3P9+y3+951w8CGFG4D0dFbde3qpJR+CCprnH3rqARihexMWSFlGDHTIwAAgDuAhAyFdKBl+4nHoYYgielhieyfKlR9EI7I44ov8LZhhg/EdOFCNId5IXo4S0vLfQDauGKSSICoXWHMUPkhPkh1S+WGITjInzZH4WOkllgE+uWWUPk65ZJVnXtlkmFpap+GM97CYwJx01jkni1kOCOWbKXYZop2AJoAnm3qOySd2ZR4gZ6B1DtqdgPYRyKOBdNmzKKN3gvmomG5Oek56SWEqagL2QKZFf0b65CBuo2JaKmqn6piqhqvS1Sqjr9YXa5Gs3ISorbcCmiuku2JoqKe1VqgRrEv+oHqfXMlKuayuzcr6rDnRJpqnAsVSpIOqPQZU6ZDEVsurpFpM5o0qUaRrrrHXqhuOM+26i4Cz6Nr7DzrluovvnnrJuw69Tth7r7UUuSLwMQXb+6+3QVy1MMPcOowwxBEHHBbF9fp7McQKb8xxEwY/jHFF5UxMSckfn9yPxCLjwvK5LlsQMrS5zAxvzTanHHMsOvNMw80GF92t0DYQbbTRJiP9LcxLL9200y9rHDXTLQvdgiRc50HA12CH/XXXeBQ7NVyJkI2H2GwToLbZWX+Vttpti/32u2fnNTfZdYd9txItUG3q0moXnkfUnCbMrNGGG454m4pTy3jjfxed+FfuHRdNeeUGX34sMFeHji0leRsCGSyiXw1M6X+cvnLqS68eNyqooQ670bLT3InrI/c+COt+8O778J73WjvxyBfaafLMQ76jys3bDvjsh3gUPdDvxjj69TJnr9rP3L8+ve6e+Ixz+JkfHS/46Af9vbvoD+L++ufHX7HH5I/igSS39y+6JMBrxf4O578CTg4PAaRD2gzIQHsBkHqmG2DZGkhBJTwwf4/Y2+Y2yEHKJXANGuygCEeIQAi2ToIkTOEIP6iGEKrwhYVjoQA70Lca2vCGNZRhBGmIwx76sG86PCEPf0hEIgYxeB4oohJ9mMAIAAA7"}},"time_used":203,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":203,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0000.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.374Z","timestamp":1785150870374,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0000.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-109\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=68o0Ssnsi3D2FUm4B%2BWX00Xa41kPSLo6EvYPPpJVOuixUgLWsxVctdhpfUIaYY6sJAqoffQMn36uosgQRvu6V28ton65FvwQzXcAWz1MIDGzHjJbLq8JMkAZcQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe656a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 265\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"]}],"data":{"size":265,"size_decoded":1035,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"c283a7f4d2a7b24da35f665b800c8d1b","sha1":"1d16589f16744456efc38bb012140e9a86198a4c","sha256":"c9816c0c9e7c151cbe3f9c54b1d5e61a3cd121fc8f1e67486b07080ef225fa70","sha512":"5a18aba0b4d4c80ca2c2db74ee15c0159ab270475a9069761535e8c231fa2754d97721420e836cfe68c1ea6942991c5e54e1569c2774949db548ecd8ab405100","ssdeep":"","tlshash":"5cd02b156d955f81e347d0ba7e6821489d4db65caa346e1ca91d451067032d841cc5b1","first_seen":"2025-12-16T06:43:19.392683Z","last_seen":"2026-07-27T11:25:33.533207Z","times_seen":16,"resource_available":false,"data":"R0lGODlhIAAgALMAAAAAACYmJjMzM0FBQUZLVXtqTqh0aayUbbyahMzMzNCeed+6nvrx9gAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAAS2EMhJq704682D/x63BUhploGIkeXitkuqUizi3rg8AzXu67Oe7wZUCYexnUTocTWLouMQ2jEtCFjCNasEZLMKBVjc9bQIAYYWrVYGwqRrej13h8Mu7A1L1bzvSE5lfy4GU108eIUGjIJlcEh9HXcBP4hLdwogklECngKcI5sFn5uhNAOpqgMHq6unPK6qrbKppwG1rAm5t7m0tb21B7vAHaq4s67IA8HMq8Ovxx2lnwKk1QGlFxEAOw=="}},"time_used":196,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":196,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0010.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.376Z","timestamp":1785150870376,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0010.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-167\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ie0JQCoxv0G8tpNCvU85%2Bv78GHXiFk%2BG8KOAuXO2T%2FUYZ0%2BpXQuy7NeUZMdUGsr3kQVzzqNyoXgvfJ9PJIvQmbmgl4UM15qZmdjkMFDVN0MYYLCMOLLq6CCHvA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe756a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 359\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"]}],"data":{"size":359,"size_decoded":1135,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"ed885c36568784a03e0a2918754690b9","sha1":"7d6049615e02adc6ab88e78750ef19fbf0d35610","sha256":"3a63b06de611e6c6aad65668780e371f1767366eeb8e94460a97810638037223","sha512":"493dd0dd29b143e20894b51602c6e6519002495cf299377d7971a075e32ccc73a3622dc9884934b9d6424cc2ceecf75aed8c5a332d2921b8ababe2513b13a134","ssdeep":"","tlshash":"89e0203385dc80c7fd40343e5425167b7345146d7676f7b4d41a92fdec6c00ca720a09","first_seen":"2026-05-13T03:42:55.512294Z","last_seen":"2026-07-27T11:25:32.165861Z","times_seen":3,"resource_available":false,"data":"R0lGODlhIAAgAMQAAAAAACYmJjMzM0xMTFBZaGZmZmhseXl8h4Q0TpaXm6uio7Ozs7hJcMK1s8PIzshfhNCeedPFwt+6nt/L3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAAXkICCOZGmeaKquauC+LrsGQj3cQxHIKG3jNx2v5BMAgcIhoHg8JnnMJu4pi95gLirLGmhEIo1wbBjtesHhBkHpc1zDkUPYoGYLEg63+Zuuk+94A3tyDXRrf3dXCl6EhkpLPwESCnxph4guEpoKnJ07jzQBEJqkpZ+goqOaL6uPIy6qpa2uIqmyEqczWC8QvVhQDBMIw8SpELlVwcTLxshbysywvi/AwggvDNmSq9rOJgHK4Azi4w/m4uDeJODC5OjZ49rjM+Hw7/Lx6q/1+O7y+rXCLRiIbuCCggCXCCSozSBCFCEAADs="}},"time_used":202,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":202,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0024.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.382Z","timestamp":1785150870382,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0024.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-166\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: REVALIDATED\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=m5t1frh4TQoYdxcz512ZgIj84BoRF0tOSMjshA1ApWgCh8QDCu0VtvL3HfmyOim6PUaJc4jalr%2FKegMInA83C7dWhr9EZjP%2FMw3pXJfXfZYOnDEzDmXFWRseIw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bebec56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 358\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"]}],"data":{"size":358,"size_decoded":1138,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"1b3bcc36437bf488a7f31dcfe92c60a1","sha1":"f7e45a292fc91a53545b7f9bab7754783a690bdb","sha256":"bce4abb807870ef674b305d014ab84ef57c33eb51eec52015313a46f4f18e775","sha512":"316346d80ab61519fb3573d719d21f55f553d86a9c57c045ab39c40b60f548ea4d9db40b83d43ded5282b8a6720f7ceb427e71c3ba101b0f02e2740bf616681e","ssdeep":"","tlshash":"3ce0c06f03ebd896c84b42351fce494bc9f1105dc2a20a5d22196704fe237153e82b34","first_seen":"2026-07-22T10:08:56.439482Z","last_seen":"2026-07-27T11:15:13.739044Z","times_seen":2,"resource_available":false,"data":"R0lGODlhIAAgALMAAAAAACYmJiosMDMzM0JLL0ZLVUxMTFkNS2tXRYQ0NaF7aLWPe7lJU8zMzNWeOP3PACH5BAUKAAAALAAAAAAgACAAAAT/EMhJKwg42M1pTkyYdaQUJGioiiV3omD4PKrWenDMOLPD3pNXKuQo+hg2oBC2qgGDmagU8/QYebPsI6kMFL6FAGJBLnM3VBP4Ky67zxZvZh1GjN1keMW75oenUiRTfWIBAwMBC4aISmxsdouJkR1pfBh/doqJeXpBf3ICcnZ3eDZpHn0CoXV2Cq6vChqSaFGrmAiuGbkXimiqv6BiuLC7kiNQUWyho8SmDQEEs6hgAarCCIEmGIq9HrWh13ABB5rHtLKj4ppmG1oZ6RhavOwWWxk12DUZDxfScYcAB4gIEfCQrDwuCh4yoBDgwW7/FBpg0JDRpk6RAjIckAWRwXkYEw1qpNhx0sWEHgFO5Dgj5UMbEQAAOw=="}},"time_used":194,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":194,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/fullcalendar.init.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.356Z","timestamp":1785150870356,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/scripts/fullcalendar.init.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-123b\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=%2BEOUkmGB%2Fx33pOvQFDHn1seSIqycb8tHKOARnil2PPsNf8E9XniHbXtBD8uPAkW%2FWYG0pYMe5zq%2BP7EQASHJS49b93VtRyMH6KYGs5XafAnOrfx0NK8eO10VOA%3D%3D\"}]}\r\ncf-ray: a21b388bbbde56a2-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"]}],"data":{"size":4667,"size_decoded":2310,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text","md5":"f1a4fb47c83a7a95fd6ae119b398130d","sha1":"df0f954376027c84a55aa1612b92971996578869","sha256":"b56cd45077816b664abc05db7da86d756f64774d11000883b8bd7b6831df18c4","sha512":"956238d658a3b0e3bef630d5987cd93c48c613029b9e97b3883c458655cd495daf0ee16e5642d3d38f2a260bb99e665795a748d2aeaddee3a9cf709b9abcf81b","ssdeep":"96:8F4CwmzE+PjT5qgQ/eaDJ6r2E0zbxmVJwf9uaYoAiqr47S:BmzrNqgQ2aDc0zbxmVJwluaYoKl","tlshash":"39a1cdd5fe5d56af057ac185828e33c6e22c20b3c9705cb2f5f9bc7430d851aa5cd662","first_seen":"2025-12-16T06:43:19.348476Z","last_seen":"2026-07-27T11:25:33.526723Z","times_seen":16,"resource_available":true,"data":"LyoqCiAqIFRoZW1lOiBOaW5qYSBBZG1pbiBUZW1wbGF0ZQogKiBBdXRob3I6IE5pbmphVGVhbQogKiBNb2R1bGUvQXBwOiBGdWxsIENhbGVuZGFyCiAqLwoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgoKCS8qIGluaXRpYWxpemUgdGhlIGNhbGVuZGFyCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoJaWYgKCQoJyNjYWxlbmRhcicpLmxlbmd0aCl7CgkJdmFyIHRvZGF5RGF0ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpOwoJCXZhciBZTSA9IHRvZGF5RGF0ZS5mb3JtYXQoJ1lZWVktTU0nKTsKCQl2YXIgWUVTVEVSREFZID0gdG9kYXlEYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ2RheScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpOwoJCXZhciBUT0RBWSA9IHRvZGF5RGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKTsKCQl2YXIgVE9NT1JST1cgPSB0b2RheURhdGUuY2xvbmUoKS5hZGQoMSwgJ2RheScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpOwoJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcih7CgkJCWhlYWRlcjogewoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsCgkJCQljZW50ZXI6ICd0aXRsZScsCgkJCQlyaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5LGxpc3QnCgkJCX0sCgkJCWJ1dHRvbkljb25zOiB7CgkJCQlwcmV2OiAnbm9uZSBmYSBmYS1hbmdsZS1sZWZ0JywKCQkJCW5leHQ6ICdub25lIGZhIGZhLWFuZ2xlLXJpZ2h0JywKCQkJCXByZXZZZWFyOiAnbm9uZSBmYSBmYS1hbmdsZS1sZWZ0JywKCQkJCW5leHRZZWFyOiAnbm9uZSBmYSBmYS1hbmdsZS1yaWdodCcKCQkJfSwKCQkJZWRpdGFibGU6IHRydWUsCgkJCWV2ZW50TGltaXQ6IHRydWUsIC8vIGFsbG93ICJtb3JlIiBsaW5rIHdoZW4gdG9vIG1hbnkgZXZlbnRzCgkJCW5hdkxpbmtzOiB0cnVlLAoJCQlkcm9wcGFibGU6IHRydWUsIC8vIHRoaXMgYWxsb3dzIHRoaW5ncyB0byBiZSBkcm9wcGVkIG9udG8gdGhlIGNhbGVuZGFyCgkJCWRyb3A6IGZ1bmN0aW9uKGRhdGUsIGFsbERheSkgewoJCQkJdmFyIG9yaWdpbmFsRXZlbnRPYmplY3QgPSAkKHRoaXMpLmRhdGEoJ2V2ZW50T2JqZWN0Jyk7CgkJCQl2YXIgdmFsdWVBcnJheSA9ICgkKHRoaXMpLmF0dHIoJ2NsYXNzJykpLnNwbGl0KCIgIik7CgkJCQl2YXIgdGhpc0NsYXNzOwoJCQkJZm9yKHZhciBpPTA7IGk8dmFsdWVBcnJheS5sZW5ndGg7IGkrKyl7CgkJCQkJaWYgKHZhbHVlQXJyYXlbaV0uc2VhcmNoKCJiZyIpID4gLTEpewoJCQkJCQl0aGlzQ2xhc3MgPSB2YWx1ZUFycmF5W2ldOwoJCQkJCX0KCQkJCX0KCQkJCXZhciBjb3BpZWRFdmVudE9iamVjdCA9ICQuZXh0ZW5kKHt9LCBvcmlnaW5hbEV2ZW50T2JqZWN0KTsKCQkJCWNvcGllZEV2ZW50T2JqZWN0LnN0YXJ0ID0gZGF0ZTsKCQkJCWNvcGllZEV2ZW50T2JqZWN0LmNsYXNzTmFtZSA9IHRoaXNDbGFzczsKCQkJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcigncmVuZGVyRXZlbnQnLCBjb3BpZWRFdmVudE9iamVjdCwgdHJ1ZSk7CgkJCQkvLyBpcyB0aGUgInJlbW92ZSBhZnRlciBkcm9wIiBjaGVja2JveCBjaGVja2VkPwoJCQkJaWYgKCQoJyNkcm9wLXJlbW92ZScpLmlzKCc6Y2hlY2tlZCcpKSB7CgkJCQkJLy8gaWYgc28sIHJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHRoZSAiRHJhZ2dhYmxlIEV2ZW50cyIgbGlzdAoJCQkJCSQodGhpcykucmVtb3ZlKCk7CgkJCQl9CgkJCX0sCgkJCWV2ZW50czogWwoJCQkJewoJCQkJCXRpdGxlOiAnQWxsIERheSBFdmVudCcsCgkJCQkJc3RhcnQ6IFlNICsgJy0wMScsCgkJCQkJY2xhc3NOYW1lOiAnYmctc3VjY2VzcycKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdMb25nIEV2ZW50JywKCQkJCQlzdGFydDogWU0gKyAnLTA3JywKCQkJCQllbmQ6IFlNICsgJy0xMCcKCQkJCX0sCgkJCQl7CgkJCQkJaWQ6IDk5OSwKCQkJCQl0aXRsZTogJ1JlcGVhdGluZyBFdmVudCcsCgkJCQkJc3RhcnQ6IFlNICsgJy0wOVQxNjowMDowMCcsCgkJCQkJY2xhc3NOYW1lOiAnYmctZGFuZ2VyJwoJCQkJfSwKCQkJCXsKCQkJCQlpZDogOTk5LAoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywKCQkJCQlzdGFydDogWU0gKyAnLTE2VDE2OjAwOjAwJywKCQkJCQljbGFzc05hbWU6ICdiZy1kYW5nZXInCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnQ29uZmVyZW5jZScsCgkJCQkJc3RhcnQ6IFlFU1RFUkRBWSwKCQkJCQllbmQ6IFRPTU9SUk9XLAoJCQkJCWNsYXNzTmFtZTogJ2JnLXdhcm5pbmcnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTWVldGluZycsCgkJCQkJc3RhcnQ6IFRPREFZICsgJ1QxMDozMDowMCcsCgkJCQkJZW5kOiBUT0RBWSArICdUMTI6MzA6MDAnLAoJCQkJCWNsYXNzTmFtZTogJ2JnLXN1Y2Nlc3MnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTHVuY2gnLAoJCQkJCXN0YXJ0OiBUT0RBWSArICdUMTI6MDA6MDAnLAoJCQkJCWNsYXNzTmFtZTogJ2JnLWluZm8nCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTWVldGluZycsCgkJCQkJc3RhcnQ6IFRPREFZICsgJ1QxNDozMDowMCcsCgkJCQkJY2xhc3NOYW1lOiAnYmctc3VjY2VzcycKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdIYXBweSBIb3VyJywKCQkJCQlzdGFydDogVE9EQVkgKyAnVDE3OjMwOjAwJywKCQkJCQljbGFzc05hbWU6ICdiZy1pbmZvJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0Rpbm5lcicsCgkJCQkJc3RhcnQ6IFRPREFZICsgJ1QyMDowMDowMCcsCgkJCQkJY2xhc3NOYW1lOiAnYmctc3VjY2VzcycKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdCaXJ0aGRheSBQYXJ0eScsCgkJCQkJc3RhcnQ6IFRPTU9SUk9XICsgJ1QwNzowMDowMCcsCgkJCQkJY2xhc3NOYW1lOiAnYmctb3JhbmdlJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0NsaWNrIGZvciBHb29nbGUnLAoJCQkJCXVybDogJ2h0dHA6Ly9nb29nbGUuY29tLycsCgkJCQkJc3RhcnQ6IFlNICsgJy0yOCcKCQkJCX0KCQkJXQoJCX0pOwoJCSQoJyNleHRlcm5hbC1ldmVudHMgLmZjLWV2ZW50JykuZWFjaChmdW5jdGlvbiAoKSB7CgkJCS8vIGNyZWF0ZSBhbiBFdmVudCBPYmplY3QgKGh0dHA6Ly9hcnNoYXcuY29tL2Z1bGxjYWxlbmRhci9kb2NzL2V2ZW50X2RhdGEvRXZlbnRfT2JqZWN0LykKCQkJLy8gaXQgZG9lc24ndCBuZWVkIHRvIGhhdmUgYSBzdGFydCBvciBlbmQKCQkJdmFyIGV2ZW50T2JqZWN0ID0gewoJCQkJdGl0bGU6ICQudHJpbSgkKHRoaXMpLnRleHQoKSkgLy8gdXNlIHRoZSBlbGVtZW50J3MgdGV4dCBhcyB0aGUgZXZlbnQgdGl0bGUKCQkJfTsKCQkJLy8gc3RvcmUgdGhlIEV2ZW50IE9iamVjdCBpbiB0aGUgRE9NIGVsZW1lbnQgc28gd2UgY2FuIGdldCB0byBpdCBsYXRlcgoJCQkkKHRoaXMpLmRhdGEoJ2V2ZW50T2JqZWN0JywgZXZlbnRPYmplY3QpOwoJCQkvLyBtYWtlIHRoZSBldmVudCBkcmFnZ2FibGUgdXNpbmcgalF1ZXJ5IFVJCgkJCSQodGhpcykuZHJhZ2dhYmxlKHsKCQkJCXpJbmRleDogOTk5LAoJCQkJcmV2ZXJ0OiB0cnVlLCAgICAgIC8vIHdpbGwgY2F1c2UgdGhlIGV2ZW50IHRvIGdvIGJhY2sgdG8gaXRzCgkJCQlyZXZlcnREdXJhdGlvbjogMCAgLy8gIG9yaWdpbmFsIHBvc2l0aW9uIGFmdGVyIHRoZSBkcmFnCgkJCX0pOwoJCX0pOwoJfQoKCWlmICgkKCIjY2FsZW5kYXItd2lkZ2V0IikubGVuZ3RoKXsKCQkkKCcjY2FsZW5kYXItd2lkZ2V0JykuZnVsbENhbGVuZGFyKHsKCQkJaGVpZ2h0OiA0NzAsCgkJCWhlYWRlcjogewoJCQkJbGVmdDogJ3ByZXYsbmV4dCcsCgkJCQljZW50ZXI6ICd0aXRsZScsCgkJCQlyaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5JwoJCQl9LAoJCQlidXR0b25JY29uczogewoJCQkJcHJldjogJ25vbmUgZmEgZmEtYW5nbGUtbGVmdCcsCgkJCQluZXh0OiAnbm9uZSBmYSBmYS1hbmdsZS1yaWdodCcsCgkJCQlwcmV2WWVhcjogJ25vbmUgZmEgZmEtYW5nbGUtbGVmdCcsCgkJCQluZXh0WWVhcjogJ25vbmUgZmEgZmEtYW5nbGUtcmlnaHQnCgkJCX0sCgkJCWVkaXRhYmxlOiB0cnVlLAoJCQlkZWZhdWx0RGF0ZTogJzIwMTYtMTAtMTEnLAoJCQlldmVudHM6IFsKCQkJCXsKCQkJCQl0aXRsZTogJ0JpcnRoZGF5JywKCQkJCQlzdGFydDogJzIwMTYtMTAtMTEnLAoJCQkJCWNsYXNzTmFtZTogJ2JnLXN1Y2Nlc3MnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTmluamFUZWFtIEV2ZW50cycsCgkJCQkJc3RhcnQ6ICcyMDE2LTEwLTE2JywKCQkJCQllbmQ6ICcyMDE2LTEwLTE4JywKCQkJCQljbGFzc05hbWU6ICdiZy1wcmltYXJ5JwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ01lZXRpbmcnLAoJCQkJCXN0YXJ0OiAnMjAxNi0xMC0xMycsCgkJCQkJZW5kOiAnMjAxNi0xMC0xNCcsCgkJCQkJY2xhc3NOYW1lOiAnYmctZGFuZ2VyJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0V2ZW50cyBHcm91cCcsCgkJCQkJc3RhcnQ6ICcyMDE2LTEwLTAzJywKCQkJCQllbmQ6ICcyMDE2LTEwLTA0JywKCQkJCQljbGFzc05hbWU6ICdiZy13YXJuaW5nJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0dyb3VwJywKCQkJCQlzdGFydDogJzIwMTYtMTAtMjgnLAoJCQkJCWVuZDogJzIwMTYtMTAtMjknLAoJCQkJCWNsYXNzTmFtZTogJ2JnLXZpb2xldCcKCQkJCX0sCgkJCV0KCQl9KTsKCX0KCgp9KTs="}},"time_used":206,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":206,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/css/app.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.328Z","timestamp":1785150870328,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /css/app.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sat, 06 Apr 2024 04:22:22 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"6610cdfe-2b8\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=pbwd7t6S0Cm%2FSOHVaSe7gAFzgzALOGKITHPDS6VR6LzyfYvkZfiqqLLpVDbXy7swXpO%2BfAgODXOL33MMtqZjHrWmuL0PCJhN7v6sBUKmttQaZCLqS1t7f7jA9Q%3D%3D\"}]}\r\ncf-ray: a21b388b8bcf56a2-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"]}],"data":{"size":696,"size_decoded":1116,"mime_type":"text/css","magic":"ASCII text","md5":"735c8b47a8e9d579db139a783afd4df3","sha1":"c12018764a9cbceda05e43b071beb83123da9064","sha256":"37a0fda1f57d196787204c969fb47f49ee66b30f4a1ef6f16a5a058e13937baa","sha512":"9ca3035a500cb88d4c904bdfec1ea9083c31097ed2fe07b5e3b803f365295ff2e77a5c6f83842919a3eb079e7e6477ea25f5518476b0546774b249a617a3d6c1","ssdeep":"","tlshash":"94012063a9d5740a75354c06f2477f3c392d1865764b5dd17a403a28cb4b6e313f1f08","first_seen":"2025-12-16T06:43:19.314969Z","last_seen":"2026-07-27T11:25:33.531387Z","times_seen":16,"resource_available":false,"data":"LnBvcAp7Cglmb250LWZhbWlseTpQb3BwaW5zOwoJZm9tdC1zaXplOjE0cHggIWltcG9ydGFudDsKfQoKLnBvcC0zNgp7Cglmb250LWZhbWlseTpQb3BwaW5zOwoJZm9udC13ZWlnaHQ6Qm9sZGVyOwoJZm9udC1zaXplOjM2cHg7CQp9CgoucG9wLTcyCnsKCWZvbnQtZmFtaWx5OlBvcHBpbnM7Cglmb250LXdlaWdodDpCb2xkZXI7Cglmb250LXNpemU6NzJweDsKfQoKLmdyZXkKewoJY29sb3I6Z3JleTsKfQoKLm1vbm8KewoJZm9udC1mYW1pbHk6bW9ub3NwYWNlOwp9CgoucHJlc3Mtc3RhcnQgMnAtcmVndWxhciB7CiAgZm9udC1mYW1pbHk6ICJQcmVzcyBTdGFydCAyUCIsIHN5c3RlbS11aTsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQoKLmZsaXAKewoJLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgtMSk7dHJhbnNmb3JtOiBzY2FsZVgoLTEpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAwcHgpIHsgICAgCiAgLnB1bmstdmlldyB7d2lkdGg6MjUlICFpbXBvcnRhbnR9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAwMHB4KSB7ICAKICAubm9tcCB7bWFyZ2luOjAgIWltcG9ydGFudDtwYWRkaW5nOjAgIWltcG9ydGFudDt9CiAgLnB1bmstdmlldyB7d2lkdGg6MTAwJSAhaW1wb3J0YW50fQogIC5hbGwtcHVuayB7d2lkdGg6MjAlICFpbXBvcnRhbnR9Cn0K"}},"time_used":201,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":201,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/jquery.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.332Z","timestamp":1785150870332,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/scripts/jquery.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-15145\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Jb87mSOcKb0MB9NyeuBdxGbuzRaBHaC70qfhp450Y4sNJiSUXQqcLff8QDqF0fo1vJqEGdWrRN2Aniaabi9B1JovIxMg8OjhvXMQ8f9dMOgKBGwvt8Dxpu2fVw%3D%3D\"}]}\r\ncf-ray: a21b388b9bd156a2-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"]}],"data":{"size":86341,"size_decoded":31053,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (32034)","md5":"d0212568ce69457081dacf84e327fa5c","sha1":"d6702a1af0378b2342f6a0692e77c169f580aed7","sha256":"266bcea0bb58b26aa5b16c5aee60d22ccc1ae9d67daeb21db6bad56119c3447d","sha512":"9738a50be24577a615f3ebd044d46d53b0ceaafe526bd124e77957b7f93dd47653269cad1d2d4bea5d6630a47d2ba555a03b782e211769ae9706b624d588464d","ssdeep":"1536:u5hEyisTikEJqRdXXe2pP7lgoVMEXvdVhvLHSh4xzAdXtqTyZSusjvKx/w7Ug2xC:0QGvHhvLJzuXkTSc6//MTDU8Cu5","tlshash":"5f83d5d9b2c670529b7730b850bf450bb17a98dab44c8c60f1a8d5d57db8a8d807bf2c","first_seen":"2023-03-07T01:03:28Z","last_seen":"2026-07-27T11:25:33.537811Z","times_seen":12442,"resource_available":true,"data":"LyohIGpRdWVyeSB2My4wLjAgfCAoYykgalF1ZXJ5IEZvdW5kYXRpb24gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiOyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihhKXtpZighYS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9W10sZD1hLmRvY3VtZW50LGU9T2JqZWN0LmdldFByb3RvdHlwZU9mLGY9Yy5zbGljZSxnPWMuY29uY2F0LGg9Yy5wdXNoLGk9Yy5pbmRleE9mLGo9e30saz1qLnRvU3RyaW5nLGw9ai5oYXNPd25Qcm9wZXJ0eSxtPWwudG9TdHJpbmcsbj1tLmNhbGwoT2JqZWN0KSxvPXt9O2Z1bmN0aW9uIHAoYSxiKXtiPWJ8fGQ7dmFyIGM9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtjLnRleHQ9YSxiLmhlYWQuYXBwZW5kQ2hpbGQoYykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKX12YXIgcT0iMy4wLjAiLHI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHIuZm4uaW5pdChhLGIpfSxzPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyx0PS9eLW1zLS8sdT0vLShbYS16XSkvZyx2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07ci5mbj1yLnByb3RvdHlwZT17anF1ZXJ5OnEsY29uc3RydWN0b3I6cixsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGYuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hPzA+YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV06Zi5jYWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9ci5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0dXJuIGIucHJldk9iamVjdD10aGlzLGJ9LGVhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZWFjaCh0aGlzLGEpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYz49MCYmYj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDpoLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sci5leHRlbmQ9ci5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fHIuaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oYT1hcmd1bWVudHNbaF0pKWZvcihiIGluIGEpYz1nW2JdLGQ9YVtiXSxnIT09ZCYmKGomJmQmJihyLmlzUGxhaW5PYmplY3QoZCl8fChlPXIuaXNBcnJheShkKSkpPyhlPyhlPSExLGY9YyYmci5pc0FycmF5KGMpP2M6W10pOmY9YyYmci5pc1BsYWluT2JqZWN0KGMpP2M6e30sZ1tiXT1yLmV4dGVuZChqLGYsZCkpOnZvaWQgMCE9PWQmJihnW2JdPWQpKTtyZXR1cm4gZ30sci5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKHErTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXIudHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiZhPT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXt2YXIgYj1yLnR5cGUoYSk7cmV0dXJuKCJudW1iZXIiPT09Ynx8InN0cmluZyI9PT1iKSYmIWlzTmFOKGEtcGFyc2VGbG9hdChhKSl9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4gYSYmIltvYmplY3QgT2JqZWN0XSI9PT1rLmNhbGwoYSk/KGI9ZShhKSk/KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9uIj09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pOiEwOiExfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2ZvcihiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2pbay5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYSl7cChhKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UodCwibXMtIikucmVwbGFjZSh1LHYpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTA7aWYodyhhKSl7Zm9yKGM9YS5sZW5ndGg7Yz5kO2QrKylpZihiLmNhbGwoYVtkXSxkLGFbZF0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoZCBpbiBhKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShzLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJih3KE9iamVjdChhKSk/ci5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6aC5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsPT1iPy0xOmkuY2FsbChiLGEsYyl9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxkPTAsZT1hLmxlbmd0aDtjPmQ7ZCsrKWFbZSsrXT1iW2RdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9MCxoPVtdO2lmKHcoYSkpZm9yKGQ9YS5sZW5ndGg7ZD5mO2YrKyllPWIoYVtmXSxmLGMpLG51bGwhPWUmJmgucHVzaChlKTtlbHNlIGZvcihmIGluIGEpZT1iKGFbZl0sZixjKSxudWxsIT1lJiZoLnB1c2goZSk7cmV0dXJuIGcuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9Yyksci5pc0Z1bmN0aW9uKGEpPyhkPWYuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZC5jb25jYXQoZi5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fHIuZ3VpZCsrLGUpOnZvaWQgMH0sbm93OkRhdGUubm93LHN1cHBvcnQ6b30pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihyLmZuW1N5bWJvbC5pdGVyYXRvcl09Y1tTeW1ib2wuaXRlcmF0b3JdKSxyLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7alsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiB3KGEpe3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPXIudHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iPT09Y3x8ci5pc1dpbmRvdyhhKT8hMToiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgeD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9e30uaGFzT3duUHJvcGVydHksRD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtkPmM7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVybi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxcXC58W1xcdy1dfFteXHgwMC1cXHhhMF0pKyIsTT0iXFxbIitLKyIqKCIrTCsiKSg/OiIrSysiKihbKl4kfCF+XT89KSIrSysiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0wrIikpfCkiK0srIipcXF0iLE49IjooIitMKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitNKyIpKil8LiopXFwpfCkiLE89bmV3IFJlZ0V4cChLKyIrIiwiZyIpLFA9bmV3IFJlZ0V4cCgiXiIrSysiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitLKyIrJCIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0srIiosIitLKyIqIiksUj1uZXcgUmVnRXhwKCJeIitLKyIqKFs+K35dfCIrSysiKSIrSysiKiIpLFM9bmV3IFJlZ0V4cCgiPSIrSysiKihbXlxcXSdcIl0qPykiK0srIipcXF0iLCJnIiksVD1uZXcgUmVnRXhwKE4pLFU9bmV3IFJlZ0V4cCgiXiIrTCsiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTCsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitMKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitMKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrTSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK04pLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrSysiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrSysiKig/OihbKy1dfCkiK0srIiooXFxkKyl8KSkiK0srIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0orIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitLKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0srIiooKD86LVxcZCk/XFxkKikiK0srIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFc9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxYPS9eaFxkJC9pLFk9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLywkPS9bK35dLyxfPW5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIrSysiP3woIitLKyIpfC4pIiwiaWciKSxhYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IjB4IitiLTY1NTM2O3JldHVybiBkIT09ZHx8Yz9iOjA+ZD9TdHJpbmcuZnJvbUNoYXJDb2RlKGQrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoZD4+MTB8NTUyOTYsMTAyMyZkfDU2MzIwKX0sYmE9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15ceDgwLVx1RkZGRlx3LV0vZyxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyJceDAwIj09PWE/Ilx1ZmZmZCI6YS5zbGljZSgwLC0xKSsiXFwiK2EuY2hhckNvZGVBdChhLmxlbmd0aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrYX0sZGE9ZnVuY3Rpb24oKXttKCl9LGVhPXRhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7Ry5hcHBseShEPUguY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRFt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChmYSl7Rz17YXBwbHk6RC5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtGLmFwcGx5KGEsSC5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscz1iJiZiLm93bmVyRG9jdW1lbnQsdz1iP2Iubm9kZVR5cGU6OTtpZihkPWR8fFtdLCJzdHJpbmciIT10eXBlb2YgYXx8IWF8fDEhPT13JiY5IT09dyYmMTEhPT13KXJldHVybiBkO2lmKCFlJiYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4scCkpe2lmKDExIT09dyYmKGw9Wi5leGVjKGEpKSlpZihmPWxbMV0pe2lmKDk9PT13KXtpZighKGo9Yi5nZXRFbGVtZW50QnlJZChmKSkpcmV0dXJuIGQ7aWYoai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxkfWVsc2UgaWYocyYmKGo9cy5nZXRFbGVtZW50QnlJZChmKSkmJnQoYixqKSYmai5pZD09PWYpcmV0dXJuIGQucHVzaChqKSxkfWVsc2V7aWYobFsyXSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSkpLGQ7aWYoKGY9bFszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGYpKSxkfWlmKGMucXNhJiYhQVthKyIgIl0mJighcXx8IXEudGVzdChhKSkpe2lmKDEhPT13KXM9YixyPWE7ZWxzZSBpZigib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7KGs9Yi5nZXRBdHRyaWJ1dGUoImlkIikpP2s9ay5yZXBsYWNlKGJhLGNhKTpiLnNldEF0dHJpYnV0ZSgiaWQiLGs9dSksbz1nKGEpLGg9by5sZW5ndGg7d2hpbGUoaC0tKW9baF09IiMiK2srIiAiK3NhKG9baF0pO3I9by5qb2luKCIsIikscz0kLnRlc3QoYSkmJnFhKGIucGFyZW50Tm9kZSl8fGJ9aWYocil0cnl7cmV0dXJuIEcuYXBwbHkoZCxzLnF1ZXJ5U2VsZWN0b3JBbGwocikpLGR9Y2F0Y2goeCl7fWZpbmFsbHl7az09PXUmJmIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFAsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMubGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBsYShhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJmEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmYi50eXBlPT09YX19ZnVuY3Rpb24gbmEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09YykmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG9hKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4ibGFiZWwiaW4gYiYmYi5kaXNhYmxlZD09PWF8fCJmb3JtImluIGImJmIuZGlzYWJsZWQ9PT1hfHwiZm9ybSJpbiBiJiZiLmRpc2FibGVkPT09ITEmJihiLmlzRGlzYWJsZWQ9PT1hfHxiLmlzRGlzYWJsZWQhPT0hYSYmKCJsYWJlbCJpbiBifHwhZWEoYikpIT09YSl9fWZ1bmN0aW9uIHBhKGEpe3JldHVybiBpYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixpYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1nYS5zdXBwb3J0PXt9LGY9Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBiPyJIVE1MIiE9PWIubm9kZU5hbWU6ITF9LG09Z2Euc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZSxnPWE/YS5vd25lckRvY3VtZW50fHxhOnY7cmV0dXJuIGchPT1uJiY5PT09Zy5ub2RlVHlwZSYmZy5kb2N1bWVudEVsZW1lbnQ/KG49ZyxvPW4uZG9jdW1lbnRFbGVtZW50LHA9IWYobiksdiE9PW4mJihlPW4uZGVmYXVsdFZpZXcpJiZlLnRvcCE9PWUmJihlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLGRhLCExKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsZGEpKSxjLmF0dHJpYnV0ZXM9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1ZLnRlc3Qobi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhbi5nZXRFbGVtZW50c0J5TmFtZXx8IW4uZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGM/W2NdOltdfX0sZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lP2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmcD9iLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSk6dm9pZCAwfSxyPVtdLHE9W10sKGMucXNhPVkudGVzdChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGphKGZ1bmN0aW9uKGEpe28uYXBwZW5kQ2hpbGQoYSkuaW5uZXJIVE1MPSI8YSBpZD0nIit1KyInPjwvYT48c2VsZWN0IGlkPSciK3UrIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK0srIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0srIiooPzp2YWx1ZXwiK0orIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/PSIpLDIhPT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksby5hcHBlbmRDaGlsZChhKS5kaXNhYmxlZD0hMCwyIT09YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9WS50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCIqIikscy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE4pfSkscT1xLmxlbmd0aCYmbmV3IFJlZ0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwiKSksYj1ZLnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxZLnRlc3Qoby5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJEb2N1bWVudD09PXYmJnQodixiKT8xOms/SShrLGEpLUkoayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxmPWIucGFyZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1uPzE6ZT8tMTpmPzE6az9JKGssYSktSShrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGxhKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9sYShnW2RdLGhbZF0pOmdbZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZ2EubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBnYShhLG51bGwsbnVsbCxiKX0sZ2EubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFMsIj0nJDEnXSIpLGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkmJighcXx8IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVzY2FwZT1mdW5jdGlvbihhKXtyZXR1cm4oYSsiIikucmVwbGFjZShiYSxjYSl9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpWLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoXyxhYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoXyxhYSksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGdhLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmdhLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBWLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlQudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoXyxhYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShPLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1JKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmlhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFt1XT9pYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhfHwiIil8fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6b2EoITEpLGRpc2FibGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBhKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpwYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpwYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rpb24gcmEoKXt9cmEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyByYSxnPWdhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1RLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1SLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFAsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1WW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBzYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1iLmRpcixlPWIubmV4dCxmPWV8fGQsZz1jJiYicGFyZW50Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxlKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpcmV0dXJuIGEoYixjLGUpfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG09W3csaF07aWYoaSl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZykmJmEoYixjLGkpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8KGJbdV09e30pLGs9bFtiLnVuaXF1ZUlEXXx8KGxbYi51bmlxdWVJRF09e30pLGUmJmU9PT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpYj1iW2RdfHxiO2Vsc2V7aWYoKGo9a1tmXSkmJmpbMF09PT13JiZqWzFdPT09aClyZXR1cm4gbVsyXT1qWzJdO2lmKGtbZl09bSxtWzJdPWEoYixjLGkpKXJldHVybiEwfX19ZnVuY3Rpb24gdWEoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdmEoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylnYShhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gd2EoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKGMmJiFjKGYsZCxlKXx8KGcucHVzaChmKSxqJiZiLnB1c2goaCkpKTtyZXR1cm4gZ31mdW5jdGlvbiB4YShhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD14YShkKSksZSYmIWVbdV0mJihlPXhhKGUsZikpLGlhKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHZhKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOndhKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj13YShyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/SShmLGwpOm1ba10pPi0xJiYoZltqXT0hKGdbal09bCkpfX1lbHNlIHI9d2Eocj09PWc/ci5zcGxpY2UobyxyLmxlbmd0aCk6ciksZT9lKG51bGwsZyxyLGkpOkcuYXBwbHkoZyxyKX0pfWZ1bmN0aW9uIHlhKGEpe2Zvcih2YXIgYixjLGUsZj1hLmxlbmd0aCxnPWQucmVsYXRpdmVbYVswXS50eXBlXSxoPWd8fGQucmVsYXRpdmVbIiAiXSxpPWc/MTowLGs9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1ifSxoLCEwKSxsPXRhKGZ1bmN0aW9uKGEpe3JldHVybiBJKGIsYSk+LTF9LGgsITApLG09W2Z1bmN0aW9uKGEsYyxkKXt2YXIgZT0hZyYmKGR8fGMhPT1qKXx8KChiPWMpLm5vZGVUeXBlP2soYSxjLGQpOmwoYSxjLGQpKTtyZXR1cm4gYj1udWxsLGV9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3RhKHVhKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB4YShpPjEmJnVhKG0pLGk+MSYmc2EoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShQLCIkMSIpLGMsZT5pJiZ5YShhLnNsaWNlKGksZSkpLGY+ZSYmeWEoYT1hLnNsaWNlKGUpKSxmPmUmJnNhKGEpKX1tLnB1c2goYyl9cmV0dXJuIHVhKG0pfWZ1bmN0aW9uIHphKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG8scSxyPTAscz0iMCIsdD1mJiZbXSx1PVtdLHY9aix4PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHk9dys9bnVsbD09dj8xOk1hdGgucmFuZG9tKCl8fC4xLHo9eC5sZW5ndGg7Zm9yKGsmJihqPWc9PT1ufHxnfHxrKTtzIT09eiYmbnVsbCE9KGw9eFtzXSk7cysrKXtpZihlJiZsKXtvPTAsZ3x8bC5vd25lckRvY3VtZW50PT09bnx8KG0obCksaD0hcCk7d2hpbGUocT1hW28rK10paWYocShsLGd8fG4saCkpe2kucHVzaChsKTticmVha31rJiYodz15KX1jJiYoKGw9IXEmJmwpJiZyLS0sZiYmdC5wdXNoKGwpKX1pZihyKz1zLGMmJnMhPT1yKXtvPTA7d2hpbGUocT1iW28rK10pcSh0LHUsZyxoKTtpZihmKXtpZihyPjApd2hpbGUocy0tKXRbc118fHVbc118fCh1W3NdPUUuY2FsbChpKSk7dT13YSh1KX1HLmFwcGx5KGksdSksayYmIWYmJnUubGVuZ3RoPjAmJnIrYi5sZW5ndGg+MSYmZ2EudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9eSxqPXYpLHR9O3JldHVybiBjP2lhKGYpOmZ9cmV0dXJuIGg9Z2EuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXlhKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx6YShlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9Z2Euc2VsZWN0PWZ1bmN0aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO24mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGouc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWk9Vi5uZWVkc0NvbnRleHQudGVzdChhKT8wOmoubGVuZ3RoO3doaWxlKGktLSl7aWYoaz1qW2ldLGQucmVsYXRpdmVbbD1rLnR5cGVdKWJyZWFrO2lmKChtPWQuZmluZFtsXSkmJihmPW0oay5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksJC50ZXN0KGpbMF0udHlwZSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZzYShqKSwhYSlyZXR1cm4gRy5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSwhYnx8JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6YS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGN8fCJpbnB1dCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEosZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDphW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTtyLmZpbmQ9eCxyLmV4cHI9eC5zZWxlY3RvcnMsci5leHByWyI6Il09ci5leHByLnBzZXVkb3Msci51bmlxdWVTb3J0PXIudW5pcXVlPXgudW5pcXVlU29ydCxyLnRleHQ9eC5nZXRUZXh0LHIuaXNYTUxEb2M9eC5pc1hNTCxyLmNvbnRhaW5zPXguY29udGFpbnMsci5lc2NhcGVTZWxlY3Rvcj14LmVzY2FwZTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmcihhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LEE9ci5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxCPS9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxmXSopW1x4MjBcdFxyXG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pLEM9L14uW146I1xbXC4sXSokLztmdW5jdGlvbiBEKGEsYixjKXtpZihyLmlzRnVuY3Rpb24oYikpcmV0dXJuIHIuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuISFiLmNhbGwoYSxkLGEpIT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIHIuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KTtpZigic3RyaW5nIj09dHlwZW9mIGIpe2lmKEMudGVzdChiKSlyZXR1cm4gci5maWx0ZXIoYixhLGMpO2I9ci5maWx0ZXIoYixhKX1yZXR1cm4gci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09YyYmMT09PWEubm9kZVR5cGV9KX1yLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2socihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYoci5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7ZD5iO2IrKylyLmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhRCh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRSxGPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sRz1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxFLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkYuZXhlYyhhKSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06YixyLm1lcmdlKHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpkLCEwKSksQi50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilyLmlzRnVuY3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIpOnIubWFrZUFycmF5KGEsdGhpcyl9O0cucHJvdG90eXBlPXIuZm4sRT1yKGQpO3ZhciBIPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEk9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDtjPmE7YSsrKWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2YgYSYmcihhKTtpZighQS50ZXN0KGEpKWZvcig7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlzWzBdKTppLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBKKGEsYil7d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBKKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEooYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNvbnRlbnREb2N1bWVudHx8ci5tZXJnZShbXSxhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtyLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5tYXAodGhpcyxiLGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmInN0cmluZyI9PXR5cGVvZiBkJiYoZT1yLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYoSVthXXx8ci51bmlxdWVTb3J0KGUpLEgudGVzdChhKSYmZS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBLPS9cUysvZztmdW5jdGlvbiBMKGEpe3ZhciBiPXt9O3JldHVybiByLmVhY2goYS5tYXRjaChLKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1yLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9MKGEpOnIuZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGY9W10sZz1bXSxoPS0xLGk9ZnVuY3Rpb24oKXtmb3IoZT1hLm9uY2UsZD1iPSEwO2cubGVuZ3RoO2g9LTEpe2M9Zy5zaGlmdCgpO3doaWxlKCsraDxmLmxlbmd0aClmW2hdLmFwcGx5KGNbMF0sY1sxXSk9PT0hMSYmYS5zdG9wT25GYWxzZSYmKGg9Zi5sZW5ndGgsYz0hMSl9YS5tZW1vcnl8fChjPSExKSxiPSExLGUmJihmPWM/W106IiIpfSxqPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGMmJiFiJiYoaD1mLmxlbmd0aC0xLGcucHVzaChjKSksZnVuY3Rpb24gZChiKXtyLmVhY2goYixmdW5jdGlvbihiLGMpe3IuaXNGdW5jdGlvbihjKT9hLnVuaXF1ZSYmai5oYXMoYyl8fGYucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1yLnR5cGUoYykmJmQoYyl9KX0oYXJndW1lbnRzKSxjJiYhYiYmaSgpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gci5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihhLGIpe3ZhciBjO3doaWxlKChjPXIuaW5BcnJheShiLGYsYykpPi0xKWYuc3BsaWNlKGMsMSksaD49YyYmaC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGEpe3JldHVybiBhP3IuaW5BcnJheShhLGYpPi0xOmYubGVuZ3RoPjB9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIGYmJihmPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxmPWM9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZn0sbG9jazpmdW5jdGlvbigpe3JldHVybiBlPWc9W10sY3x8Ynx8KGY9Yz0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFlfSxmaXJlV2l0aDpmdW5jdGlvbihhLGMpe3JldHVybiBlfHwoYz1jfHxbXSxjPVthLGMuc2xpY2U/Yy5zbGljZSgpOmNdLGcucHVzaChjKSxifHxpKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gai5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWR9fTtyZXR1cm4gan07ZnVuY3Rpb24gTShhKXtyZXR1cm4gYX1mdW5jdGlvbiBOKGEpe3Rocm93IGF9ZnVuY3Rpb24gTyhhLGIsYyl7dmFyIGQ7dHJ5e2EmJnIuaXNGdW5jdGlvbihkPWEucHJvbWlzZSk/ZC5jYWxsKGEpLmRvbmUoYikuZmFpbChjKTphJiZyLmlzRnVuY3Rpb24oZD1hLnRoZW4pP2QuY2FsbChhLGIsYyk6Yi5jYWxsKHZvaWQgMCxhKX1jYXRjaChhKXtjLmNhbGwodm9pZCAwLGEpfX1yLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYil7dmFyIGM9W1sibm90aWZ5IiwicHJvZ3Jlc3MiLHIuQ2FsbGJhY2tzKCJtZW1vcnkiKSxyLkNhbGxiYWNrcygibWVtb3J5IiksMl0sWyJyZXNvbHZlIiwiZG9uZSIsci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMCwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDEsInJlamVjdGVkIl1dLGQ9InBlbmRpbmciLGU9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBmLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sImNhdGNoIjpmdW5jdGlvbihhKXtyZXR1cm4gZS50aGVuKG51bGwsYSl9LHBpcGU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIHIuRGVmZXJyZWQoZnVuY3Rpb24oYil7ci5lYWNoKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1yLmlzRnVuY3Rpb24oYVtkWzRdXSkmJmFbZFs0XV07ZltkWzFdXShmdW5jdGlvbigpe3ZhciBhPWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJnIuaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLnByb2dyZXNzKGIubm90aWZ5KS5kb25lKGIucmVzb2x2ZSkuZmFpbChiLnJlamVjdCk6YltkWzBdKyJXaXRoIl0odGhpcyxlP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24oYixkLGUpe3ZhciBmPTA7ZnVuY3Rpb24gZyhiLGMsZCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaD10aGlzLGk9YXJndW1lbnRzLGo9ZnVuY3Rpb24oKXt2YXIgYSxqO2lmKCEoZj5iKSl7aWYoYT1kLmFwcGx5KGgsaSksYT09PWMucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO2o9YSYmKCJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGEpJiZhLnRoZW4sci5pc0Z1bmN0aW9uKGopP2U/ai5jYWxsKGEsZyhmLGMsTSxlKSxnKGYsYyxOLGUpKTooZisrLGouY2FsbChhLGcoZixjLE0sZSksZyhmLGMsTixlKSxnKGYsYyxNLGMubm90aWZ5V2l0aCkpKTooZCE9PU0mJihoPXZvaWQgMCxpPVthXSksKGV8fGMucmVzb2x2ZVdpdGgpKGgsaSkpfX0saz1lP2o6ZnVuY3Rpb24oKXt0cnl7aigpfWNhdGNoKGEpe3IuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayYmci5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGEsay5zdGFja1RyYWNlKSxiKzE+PWYmJihkIT09TiYmKGg9dm9pZCAwLGk9W2FdKSxjLnJlamVjdFdpdGgoaCxpKSl9fTtiP2soKTooci5EZWZlcnJlZC5nZXRTdGFja0hvb2smJihrLnN0YWNrVHJhY2U9ci5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksYS5zZXRUaW1lb3V0KGspKX19cmV0dXJuIHIuRGVmZXJyZWQoZnVuY3Rpb24oYSl7Y1swXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGUpP2U6TSxhLm5vdGlmeVdpdGgpKSxjWzFdWzNdLmFkZChnKDAsYSxyLmlzRnVuY3Rpb24oYik/YjpNKSksY1syXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGQpP2Q6TikpfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP3IuZXh0ZW5kKGEsZSk6ZX19LGY9e307cmV0dXJuIHIuZWFjaChjLGZ1bmN0aW9uKGEsYil7dmFyIGc9YlsyXSxoPWJbNV07ZVtiWzFdXT1nLmFkZCxoJiZnLmFkZChmdW5jdGlvbigpe2Q9aH0sY1szLWFdWzJdLmRpc2FibGUsY1swXVsyXS5sb2NrKSxnLmFkZChiWzNdLmZpcmUpLGZbYlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZltiWzBdKyJXaXRoIl0odGhpcz09PWY/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxmW2JbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZS5wcm9taXNlKGYpLGImJmIuY2FsbChmLGYpLGZ9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aCxjPWIsZD1BcnJheShjKSxlPWYuY2FsbChhcmd1bWVudHMpLGc9ci5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2RbYV09dGhpcyxlW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9mLmNhbGwoYXJndW1lbnRzKTpjLC0tYnx8Zy5yZXNvbHZlV2l0aChkLGUpfX07aWYoMT49YiYmKE8oYSxnLmRvbmUoaChjKSkucmVzb2x2ZSxnLnJlamVjdCksInBlbmRpbmciPT09Zy5zdGF0ZSgpfHxyLmlzRnVuY3Rpb24oZVtjXSYmZVtjXS50aGVuKSkpcmV0dXJuIGcudGhlbigpO3doaWxlKGMtLSlPKGVbY10saChjKSxnLnJlamVjdCk7cmV0dXJuIGcucHJvbWlzZSgpfX0pO3ZhciBQPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO3IuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihiLGMpe2EuY29uc29sZSYmYS5jb25zb2xlLndhcm4mJmImJlAudGVzdChiLm5hbWUpJiZhLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitiLm1lc3NhZ2UsYi5zdGFjayxjKX07dmFyIFE9ci5EZWZlcnJlZCgpO3IuZm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIFEudGhlbihhKSx0aGlzfSxyLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9yLnJlYWR5V2FpdCsrOnIucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFkeVdhaXQ6ci5pc1JlYWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8US5yZXNvbHZlV2l0aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1RLnRoZW47ZnVuY3Rpb24gUigpe2QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUiksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixSKSxyLnJlYWR5KCl9ImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09ZC5yZWFkeVN0YXRlJiYhZC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/YS5zZXRUaW1lb3V0KHIucmVhZHkpOihkLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFIpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsUikpO3ZhciBTPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1yLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylTKGEsYixoLGNbaF0sITAsZixnKX1lbHNlIGlmKHZvaWQgMCE9PWQmJihlPSEwLHIuaXNGdW5jdGlvbihkKXx8KGc9ITApLGomJihnPyhiLmNhbGwoYSxkKSxiPW51bGwpOihqPWIsYj1mdW5jdGlvbihhLGIsYyl7CnJldHVybiBqLmNhbGwocihhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxUPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8fCErYS5ub2RlVHlwZX07ZnVuY3Rpb24gVSgpe3RoaXMuZXhwYW5kbz1yLmV4cGFuZG8rVS51aWQrK31VLnVpZD0xLFUucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhwYW5kb107cmV0dXJuIGJ8fChiPXt9LFQoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1iOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmNhY2hlKGEpO2lmKCJzdHJpbmciPT10eXBlb2YgYillW3IuY2FtZWxDYXNlKGIpXT1jO2Vsc2UgZm9yKGQgaW4gYillW3IuY2FtZWxDYXNlKGQpXT1iW2RdO3JldHVybiBlfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9dW3IuY2FtZWxDYXNlKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMuc2V0KGEsYixjKSx2b2lkIDAhPT1jP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9YVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWQpe2lmKHZvaWQgMCE9PWIpe3IuaXNBcnJheShiKT9iPWIubWFwKHIuY2FtZWxDYXNlKTooYj1yLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5tYXRjaChLKXx8W10pLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWRlbGV0ZSBkW2JbY11dfSh2b2lkIDA9PT1ifHxyLmlzRW1wdHlPYmplY3QoZCkpJiYoYS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBhW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PWImJiFyLmlzRW1wdHlPYmplY3QoYil9fTt2YXIgVj1uZXcgVSxXPW5ldyBVLFg9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxZPS9bQS1aXS9nO2Z1bmN0aW9uIFooYSxiLGMpe3ZhciBkO2lmKHZvaWQgMD09PWMmJjE9PT1hLm5vZGVUeXBlKWlmKGQ9ImRhdGEtIitiLnJlcGxhY2UoWSwiLSQmIikudG9Mb3dlckNhc2UoKSxjPWEuZ2V0QXR0cmlidXRlKGQpLCJzdHJpbmciPT10eXBlb2YgYyl7dHJ5e2M9InRydWUiPT09Yz8hMDoiZmFsc2UiPT09Yz8hMToibnVsbCI9PT1jP251bGw6K2MrIiI9PT1jPytjOlgudGVzdChjKT9KU09OLnBhcnNlKGMpOmN9Y2F0Y2goZSl7fVcuc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfXIuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBXLmhhc0RhdGEoYSl8fFYuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFcuYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gVi5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1YucmVtb3ZlKGEsYil9fSksci5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1XLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIVYuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPXIuY2FtZWxDYXNlKGQuc2xpY2UoNSkpLFooZixkLGVbZF0pKSk7Vi5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe1cuc2V0KHRoaXMsYSl9KTpTKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM7aWYoZiYmdm9pZCAwPT09Yil7aWYoYz1XLmdldChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1aKGYsYSksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe1cuc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtXLnJlbW92ZSh0aGlzLGEpfSl9fSksci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYT8oYj0oYnx8ImZ4IikrInF1ZXVlIixkPVYuZ2V0KGEsYiksYyYmKCFkfHxyLmlzQXJyYXkoYyk/ZD1WLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1yLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPXIuX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7ci5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIFYuZ2V0KGEsYyl8fFYuYWNjZXNzKGEsYyx7ZW1wdHk6ci5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Vi5yZW1vdmUoYSxbYisicXVldWUiLGNdKX0pfSl9fSksci5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP3IucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9ci5xdWV1ZSh0aGlzLGEsYik7ci5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1jWzBdJiZyLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xLGU9ci5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1WLmdldChmW2ddLGErInF1ZXVlSG9va3MiKSxjJiZjLmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgpLGUucHJvbWlzZShiKX19KTt2YXIgJD0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxfPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIiskKyIpKFthLXolXSopJCIsImkiKSxhYT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGJhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSwibm9uZSI9PT1hLnN0eWxlLmRpc3BsYXl8fCIiPT09YS5zdHlsZS5kaXNwbGF5JiZyLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKSYmIm5vbmUiPT09ci5jc3MoYSwiZGlzcGxheSIpfSxjYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX07ZnVuY3Rpb24gZGEoYSxiLGMsZCl7dmFyIGUsZj0xLGc9MjAsaD1kP2Z1bmN0aW9uKCl7cmV0dXJuIGQuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIHIuY3NzKGEsYiwiIil9LGk9aCgpLGo9YyYmY1szXXx8KHIuY3NzTnVtYmVyW2JdPyIiOiJweCIpLGs9KHIuY3NzTnVtYmVyW2JdfHwicHgiIT09aiYmK2kpJiZfLmV4ZWMoci5jc3MoYSxiKSk7aWYoayYma1szXSE9PWope2o9anx8a1szXSxjPWN8fFtdLGs9K2l8fDE7ZG8gZj1mfHwiLjUiLGsvPWYsci5zdHlsZShhLGIsaytqKTt3aGlsZShmIT09KGY9aCgpL2kpJiYxIT09ZiYmLS1nKX1yZXR1cm4gYyYmKGs9K2t8fCtpfHwwLGU9Y1sxXT9rKyhjWzFdKzEpKmNbMl06K2NbMl0sZCYmKGQudW5pdD1qLGQuc3RhcnQ9ayxkLmVuZD1lKSksZX12YXIgZWE9e307ZnVuY3Rpb24gZmEoYSl7dmFyIGIsYz1hLm93bmVyRG9jdW1lbnQsZD1hLm5vZGVOYW1lLGU9ZWFbZF07cmV0dXJuIGU/ZTooYj1jLmJvZHkuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KGQpKSxlPXIuY3NzKGIsImRpc3BsYXkiKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksIm5vbmUiPT09ZSYmKGU9ImJsb2NrIiksZWFbZF09ZSxlKX1mdW5jdGlvbiBnYShhLGIpe2Zvcih2YXIgYyxkLGU9W10sZj0wLGc9YS5sZW5ndGg7Zz5mO2YrKylkPWFbZl0sZC5zdHlsZSYmKGM9ZC5zdHlsZS5kaXNwbGF5LGI/KCJub25lIj09PWMmJihlW2ZdPVYuZ2V0KGQsImRpc3BsYXkiKXx8bnVsbCxlW2ZdfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJmJhKGQpJiYoZVtmXT1mYShkKSkpOiJub25lIiE9PWMmJihlW2ZdPSJub25lIixWLnNldChkLCJkaXNwbGF5IixjKSkpO2ZvcihmPTA7Zz5mO2YrKyludWxsIT1lW2ZdJiYoYVtmXS5zdHlsZS5kaXNwbGF5PWVbZl0pO3JldHVybiBhfXIuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGdhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGdhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2JhKHRoaXMpP3IodGhpcykuc2hvdygpOnIodGhpcykuaGlkZSgpfSl9fSk7dmFyIGhhPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLGlhPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0rKS9pLGphPS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxrYT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2thLm9wdGdyb3VwPWthLm9wdGlvbixrYS50Ym9keT1rYS50Zm9vdD1rYS5jb2xncm91cD1rYS5jYXB0aW9uPWthLnRoZWFkLGthLnRoPWthLnRkO2Z1bmN0aW9uIGxhKGEsYil7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXTtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmci5ub2RlTmFtZShhLGIpP3IubWVyZ2UoW2FdLGMpOmN9ZnVuY3Rpb24gbWEoYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2Q+YztjKyspVi5zZXQoYVtjXSwiZ2xvYmFsRXZhbCIsIWJ8fFYuZ2V0KGJbY10sImdsb2JhbEV2YWwiKSl9dmFyIG5hPS88fCYjP1x3KzsvO2Z1bmN0aW9uIG9hKGEsYixjLGQsZSl7Zm9yKHZhciBmLGcsaCxpLGosayxsPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG09W10sbj0wLG89YS5sZW5ndGg7bz5uO24rKylpZihmPWFbbl0sZnx8MD09PWYpaWYoIm9iamVjdCI9PT1yLnR5cGUoZikpci5tZXJnZShtLGYubm9kZVR5cGU/W2ZdOmYpO2Vsc2UgaWYobmEudGVzdChmKSl7Zz1nfHxsLmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGg9KGlhLmV4ZWMoZil8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksaT1rYVtoXXx8a2EuX2RlZmF1bHQsZy5pbm5lckhUTUw9aVsxXStyLmh0bWxQcmVmaWx0ZXIoZikraVsyXSxrPWlbMF07d2hpbGUoay0tKWc9Zy5sYXN0Q2hpbGQ7ci5tZXJnZShtLGcuY2hpbGROb2RlcyksZz1sLmZpcnN0Q2hpbGQsZy50ZXh0Q29udGVudD0iIn1lbHNlIG0ucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtsLnRleHRDb250ZW50PSIiLG49MDt3aGlsZShmPW1bbisrXSlpZihkJiZyLmluQXJyYXkoZixkKT4tMSllJiZlLnB1c2goZik7ZWxzZSBpZihqPXIuY29udGFpbnMoZi5vd25lckRvY3VtZW50LGYpLGc9bGEobC5hcHBlbmRDaGlsZChmKSwic2NyaXB0IiksaiYmbWEoZyksYyl7az0wO3doaWxlKGY9Z1trKytdKWphLnRlc3QoZi50eXBlfHwiIikmJmMucHVzaChmKX1yZXR1cm4gbH0hZnVuY3Rpb24oKXt2YXIgYT1kLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxiPWEuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KCJkaXYiKSksYz1kLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGMuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGMuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGIuYXBwZW5kQ2hpbGQoYyksby5jaGVja0Nsb25lPWIuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixvLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWV9KCk7dmFyIHBhPWQuZG9jdW1lbnRFbGVtZW50LHFhPS9ea2V5LyxyYT0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sc2E9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHRhKCl7cmV0dXJuITB9ZnVuY3Rpb24gdWEoKXtyZXR1cm4hMX1mdW5jdGlvbiB2YSgpe3RyeXtyZXR1cm4gZC5hY3RpdmVFbGVtZW50fWNhdGNoKGEpe319ZnVuY3Rpb24gd2EoYSxiLGMsZCxlLGYpe3ZhciBnLGg7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXsic3RyaW5nIiE9dHlwZW9mIGMmJihkPWR8fGMsYz12b2lkIDApO2ZvcihoIGluIGIpd2EoYSxoLGMsZCxiW2hdLGYpO3JldHVybiBhfWlmKG51bGw9PWQmJm51bGw9PWU/KGU9YyxkPWM9dm9pZCAwKTpudWxsPT1lJiYoInN0cmluZyI9PXR5cGVvZiBjPyhlPWQsZD12b2lkIDApOihlPWQsZD1jLGM9dm9pZCAwKSksZT09PSExKWU9dWE7ZWxzZSBpZighZSlyZXR1cm4gYTtyZXR1cm4gMT09PWYmJihnPWUsZT1mdW5jdGlvbihhKXtyZXR1cm4gcigpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1yLmd1aWQrKykpLGEuZWFjaChmdW5jdGlvbigpe3IuZXZlbnQuYWRkKHRoaXMsYixlLGQsYyl9KX1yLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxPVYuZ2V0KGEpO2lmKHEpe2MuaGFuZGxlciYmKGY9YyxjPWYuaGFuZGxlcixlPWYuc2VsZWN0b3IpLGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IocGEsZSksYy5ndWlkfHwoYy5ndWlkPXIuZ3VpZCsrKSwoaT1xLmV2ZW50cyl8fChpPXEuZXZlbnRzPXt9KSwoZz1xLmhhbmRsZSl8fChnPXEuaGFuZGxlPWZ1bmN0aW9uKGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgciYmci5ldmVudC50cmlnZ2VyZWQhPT1iLnR5cGU/ci5ldmVudC5kaXNwYXRjaC5hcHBseShhLGFyZ3VtZW50cyk6dm9pZCAwfSksYj0oYnx8IiIpLm1hdGNoKEspfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWg9c2EuZXhlYyhiW2pdKXx8W10sbj1wPWhbMV0sbz0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG4mJihsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZT9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8bixsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30saz1yLmV4dGVuZCh7dHlwZTpuLG9yaWdUeXBlOnAsZGF0YTpkLGhhbmRsZXI6YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZyLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZSksbmFtZXNwYWNlOm8uam9pbigiLiIpfSxmKSwobT1pW25dKXx8KG09aVtuXT1bXSxtLmRlbGVnYXRlQ291bnQ9MCxsLnNldHVwJiZsLnNldHVwLmNhbGwoYSxkLG8sZykhPT0hMXx8YS5hZGRFdmVudExpc3RlbmVyJiZhLmFkZEV2ZW50TGlzdGVuZXIobixnKSksbC5hZGQmJihsLmFkZC5jYWxsKGEsayksay5oYW5kbGVyLmd1aWR8fChrLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP20uc3BsaWNlKG0uZGVsZWdhdGVDb3VudCsrLDAsayk6bS5wdXNoKGspLHIuZXZlbnQuZ2xvYmFsW25dPSEwKX19LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1WLmhhc0RhdGEoYSkmJlYuZ2V0KGEpO2lmKHEmJihpPXEuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEspfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9c2EuZXhlYyhiW2pdKXx8W10sbj1wPWhbMV0sbz0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG4pe2w9ci5ldmVudC5zcGVjaWFsW25dfHx7fSxuPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxuLG09aVtuXXx8W10saD1oWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitvLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGc9Zj1tLmxlbmd0aDt3aGlsZShmLS0paz1tW2ZdLCFlJiZwIT09ay5vcmlnVHlwZXx8YyYmYy5ndWlkIT09ay5ndWlkfHxoJiYhaC50ZXN0KGsubmFtZXNwYWNlKXx8ZCYmZCE9PWsuc2VsZWN0b3ImJigiKioiIT09ZHx8IWsuc2VsZWN0b3IpfHwobS5zcGxpY2UoZiwxKSxrLnNlbGVjdG9yJiZtLmRlbGVnYXRlQ291bnQtLSxsLnJlbW92ZSYmbC5yZW1vdmUuY2FsbChhLGspKTtnJiYhbS5sZW5ndGgmJihsLnRlYXJkb3duJiZsLnRlYXJkb3duLmNhbGwoYSxvLHEuaGFuZGxlKSE9PSExfHxyLnJlbW92ZUV2ZW50KGEsbixxLmhhbmRsZSksZGVsZXRlIGlbbl0pfWVsc2UgZm9yKG4gaW4gaSlyLmV2ZW50LnJlbW92ZShhLG4rYltqXSxjLGQsITApO3IuaXNFbXB0eU9iamVjdChpKSYmVi5yZW1vdmUoYSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dmFyIGI9ci5ldmVudC5maXgoYSksYyxkLGUsZixnLGgsaT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksaj0oVi5nZXQodGhpcywiZXZlbnRzIil8fHt9KVtiLnR5cGVdfHxbXSxrPXIuZXZlbnQuc3BlY2lhbFtiLnR5cGVdfHx7fTtmb3IoaVswXT1iLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWlbY109YXJndW1lbnRzW2NdO2lmKGIuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYikhPT0hMSl7aD1yLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxiLGopLGM9MDt3aGlsZSgoZj1oW2MrK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXtiLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGQ9MDt3aGlsZSgoZz1mLmhhbmRsZXJzW2QrK10pJiYhYi5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWIucm5hbWVzcGFjZSYmIWIucm5hbWVzcGFjZS50ZXN0KGcubmFtZXNwYWNlKXx8KGIuaGFuZGxlT2JqPWcsYi5kYXRhPWcuZGF0YSxlPSgoci5ldmVudC5zcGVjaWFsW2cub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxnLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1lJiYoYi5yZXN1bHQ9ZSk9PT0hMSYmKGIucHJldmVudERlZmF1bHQoKSxiLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYiksYi5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8aXNOYU4oYS5idXR0b24pfHxhLmJ1dHRvbjwxKSlmb3IoO2khPT10aGlzO2k9aS5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1pLm5vZGVUeXBlJiYoaS5kaXNhYmxlZCE9PSEwfHwiY2xpY2siIT09YS50eXBlKSl7Zm9yKGQ9W10sYz0wO2g+YztjKyspZj1iW2NdLGU9Zi5zZWxlY3RvcisiICIsdm9pZCAwPT09ZFtlXSYmKGRbZV09Zi5uZWVkc0NvbnRleHQ/cihlLHRoaXMpLmluZGV4KGkpPi0xOnIuZmluZChlLHRoaXMsbnVsbCxbaV0pLmxlbmd0aCksZFtlXSYmZC5wdXNoKGYpO2QubGVuZ3RoJiZnLnB1c2goe2VsZW06aSxoYW5kbGVyczpkfSl9cmV0dXJuIGg8Yi5sZW5ndGgmJmcucHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRXZlbnQucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpyLmlzRnVuY3Rpb24oYik/ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50P2IodGhpcy5vcmlnaW5hbEV2ZW50KTp2b2lkIDB9OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudD90aGlzLm9yaWdpbmFsRXZlbnRbYV06dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfX0pfSxmaXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbci5leHBhbmRvXT9hOm5ldyByLkV2ZW50KGEpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyE9PXZhKCkmJnRoaXMuZm9jdXM/KHRoaXMuZm9jdXMoKSwhMSk6dm9pZCAwfSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT12YSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2smJnIubm9kZU5hbWUodGhpcywiaW5wdXQiKT8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiByLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fX0sci5yZW1vdmVFdmVudD1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKX0sci5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygci5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/dGE6dWEsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRhcmdldC5ub2RlVHlwZT9hLnRhcmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1hLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWEsYiYmci5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8ci5ub3coKSx2b2lkKHRoaXNbci5leHBhbmRvXT0hMCkpOm5ldyByLkV2ZW50KGEsYil9LHIuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpyLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDp1YSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDp1YSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDp1YSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD10YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9dGEsYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHIuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRvbnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVySWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ZnVuY3Rpb24oYSl7dmFyIGI9YS5idXR0b247cmV0dXJuIG51bGw9PWEud2hpY2gmJnFhLnRlc3QoYS50eXBlKT9udWxsIT1hLmNoYXJDb2RlP2EuY2hhckNvZGU6YS5rZXlDb2RlOiFhLndoaWNoJiZ2b2lkIDAhPT1iJiZyYS50ZXN0KGEudHlwZSk/MSZiPzE6MiZiPzM6NCZiPzI6MDphLndoaWNofX0sci5ldmVudC5hZGRQcm9wKSxyLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7ci5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4gZSYmKGU9PT1kfHxyLmNvbnRhaW5zKGQsZSkpfHwoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxyLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHdhKHRoaXMsYSxiLGMsZCl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gd2EodGhpcyxhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5kbGVPYmoscihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJldHVybiBiIT09ITEmJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPXVhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfX0pO3ZhciB4YT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKilbXj5dKilcLz4vZ2kseWE9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksemE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksQWE9L150cnVlXC8oLiopLyxCYT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2c7ZnVuY3Rpb24gQ2EoYSxiKXtyZXR1cm4gci5ub2RlTmFtZShhLCJ0YWJsZSIpJiZyLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhOmF9ZnVuY3Rpb24gRGEoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlvbiBFYShhKXt2YXIgYj1BYS5leGVjKGEudHlwZSk7cmV0dXJuIGI/YS50eXBlPWJbMV06YS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxhfWZ1bmN0aW9uIEZhKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtpZigxPT09Yi5ub2RlVHlwZSl7aWYoVi5oYXNEYXRhKGEpJiYoZj1WLmFjY2VzcyhhKSxnPVYuc2V0KGIsZiksaj1mLmV2ZW50cykpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17fTtmb3IoZSBpbiBqKWZvcihjPTAsZD1qW2VdLmxlbmd0aDtkPmM7YysrKXIuZXZlbnQuYWRkKGIsZSxqW2VdW2NdKX1XLmhhc0RhdGEoYSkmJihoPVcuYWNjZXNzKGEpLGk9ci5leHRlbmQoe30saCksVy5zZXQoYixpKSl9fWZ1bmN0aW9uIEdhKGEsYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyJpbnB1dCI9PT1jJiZoYS50ZXN0KGEudHlwZSk/Yi5jaGVja2VkPWEuY2hlY2tlZDoiaW5wdXQiIT09YyYmInRleHRhcmVhIiE9PWN8fChiLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9ZnVuY3Rpb24gSGEoYSxiLGMsZCl7Yj1nLmFwcGx5KFtdLGIpO3ZhciBlLGYsaCxpLGosayxsPTAsbT1hLmxlbmd0aCxuPW0tMSxxPWJbMF0scz1yLmlzRnVuY3Rpb24ocSk7aWYoc3x8bT4xJiYic3RyaW5nIj09dHlwZW9mIHEmJiFvLmNoZWNrQ2xvbmUmJnphLnRlc3QocSkpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1hLmVxKGUpO3MmJihiWzBdPXEuY2FsbCh0aGlzLGUsZi5odG1sKCkpKSxIYShmLGIsYyxkKX0pO2lmKG0mJihlPW9hKGIsYVswXS5vd25lckRvY3VtZW50LCExLGEsZCksZj1lLmZpcnN0Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5sZW5ndGgmJihlPWYpLGZ8fGQpKXtmb3IoaD1yLm1hcChsYShlLCJzY3JpcHQiKSxEYSksaT1oLmxlbmd0aDttPmw7bCsrKWo9ZSxsIT09biYmKGo9ci5jbG9uZShqLCEwLCEwKSxpJiZyLm1lcmdlKGgsbGEoaiwic2NyaXB0IikpKSxjLmNhbGwoYVtsXSxqLGwpO2lmKGkpZm9yKGs9aFtoLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LHIubWFwKGgsRWEpLGw9MDtpPmw7bCsrKWo9aFtsXSxqYS50ZXN0KGoudHlwZXx8IiIpJiYhVi5hY2Nlc3MoaiwiZ2xvYmFsRXZhbCIpJiZyLmNvbnRhaW5zKGssaikmJihqLnNyYz9yLl9ldmFsVXJsJiZyLl9ldmFsVXJsKGouc3JjKTpwKGoudGV4dENvbnRlbnQucmVwbGFjZShCYSwiIiksaykpfXJldHVybiBhfWZ1bmN0aW9uIElhKGEsYixjKXtmb3IodmFyIGQsZT1iP3IuZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGQ9ZVtmXSk7ZisrKWN8fDEhPT1kLm5vZGVUeXBlfHxyLmNsZWFuRGF0YShsYShkKSksZC5wYXJlbnROb2RlJiYoYyYmci5jb250YWlucyhkLm93bmVyRG9jdW1lbnQsZCkmJm1hKGxhKGQsInNjcmlwdCIpKSxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCkpO3JldHVybiBhfXIuZXh0ZW5kKHtodG1sUHJlZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoeGEsIjwkMT48LyQyPiIpfSxjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNsb25lTm9kZSghMCksaT1yLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZighKG8ubm9DbG9uZUNoZWNrZWR8fDEhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGV8fHIuaXNYTUxEb2MoYSkpKWZvcihnPWxhKGgpLGY9bGEoYSksZD0wLGU9Zi5sZW5ndGg7ZT5kO2QrKylHYShmW2RdLGdbZF0pO2lmKGIpaWYoYylmb3IoZj1mfHxsYShhKSxnPWd8fGxhKGgpLGQ9MCxlPWYubGVuZ3RoO2U+ZDtkKyspRmEoZltkXSxnW2RdKTtlbHNlIEZhKGEsaCk7cmV0dXJuIGc9bGEoaCwic2NyaXB0IiksZy5sZW5ndGg+MCYmbWEoZywhaSYmbGEoYSwic2NyaXB0IikpLGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkLGU9ci5ldmVudC5zcGVjaWFsLGY9MDt2b2lkIDAhPT0oYz1hW2ZdKTtmKyspaWYoVChjKSl7aWYoYj1jW1YuZXhwYW5kb10pe2lmKGIuZXZlbnRzKWZvcihkIGluIGIuZXZlbnRzKWVbZF0/ci5ldmVudC5yZW1vdmUoYyxkKTpyLnJlbW92ZUV2ZW50KGMsZCxiLmhhbmRsZSk7Y1tWLmV4cGFuZG9dPXZvaWQgMH1jW1cuZXhwYW5kb10mJihjW1cuZXhwYW5kb109dm9pZCAwKX19fSksci5mbi5leHRlbmQoe2RldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gSWEodGhpcyxhLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBJYSh0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/ci50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWEpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1DYSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPUNhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKGxhKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsPT1hPyExOmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiByLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBTKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIXlhLnRlc3QoYSkmJiFrYVsoaWEuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9ci5odG1sUHJlZmlsdGVyKGEpO3RyeXtmb3IoO2Q+YztjKyspYj10aGlzW2NdfHx7fSwxPT09Yi5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKGxhKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtyLmluQXJyYXkodGhpcyxhKTwwJiYoci5jbGVhbkRhdGEobGEodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KSxyLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1yKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zj49ZztnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLHIoZVtnXSlbYl0oYyksaC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgSmE9L15tYXJnaW4vLEthPW5ldyBSZWdFeHAoIl4oIiskKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksTGE9ZnVuY3Rpb24oYil7dmFyIGM9Yi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiBjJiZjLm9wZW5lcnx8KGM9YSksYy5nZXRDb21wdXRlZFN0eWxlKGIpfTshZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7aWYoaSl7aS5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3RvcDoxJTt3aWR0aDo1MCUiLGkuaW5uZXJIVE1MPSIiLHBhLmFwcGVuZENoaWxkKGgpO3ZhciBiPWEuZ2V0Q29tcHV0ZWRTdHlsZShpKTtjPSIxJSIhPT1iLnRvcCxnPSIycHgiPT09Yi5tYXJnaW5MZWZ0LGU9IjRweCI9PT1iLndpZHRoLGkuc3R5bGUubWFyZ2luUmlnaHQ9IjUwJSIsZj0iNHB4Ij09PWIubWFyZ2luUmlnaHQscGEucmVtb3ZlQ2hpbGQoaCksaT1udWxsfX12YXIgYyxlLGYsZyxoPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksaT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuc3R5bGUmJihpLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsaS5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLG8uY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1pLnN0eWxlLmJhY2tncm91bmRDbGlwLGguc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjA7d2lkdGg6OHB4O2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDtwYWRkaW5nOjA7bWFyZ2luLXRvcDoxcHg7cG9zaXRpb246YWJzb2x1dGUiLGguYXBwZW5kQ2hpbGQoaSksci5leHRlbmQobyx7cGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBiKCksY30sYm94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGV9LHBpeGVsTWFyZ2luUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGZ9LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBiKCksZ319KSl9KCk7ZnVuY3Rpb24gTWEoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxMYShhKSxjJiYoZz1jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl0sIiIhPT1nfHxyLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9ci5zdHlsZShhLGIpKSwhby5waXhlbE1hcmdpblJpZ2h0KCkmJkthLnRlc3QoZykmJkphLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMCE9PWc/ZysiIjpnfWZ1bmN0aW9uIE5hKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBhKCk/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXZhciBPYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFFhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxSYT1bIldlYmtpdCIsIk1veiIsIm1zIl0sU2E9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTtmdW5jdGlvbiBUYShhKXtpZihhIGluIFNhKXJldHVybiBhO3ZhciBiPWFbMF0udG9VcHBlckNhc2UoKSthLnNsaWNlKDEpLGM9UmEubGVuZ3RoO3doaWxlKGMtLSlpZihhPVJhW2NdK2IsYSBpbiBTYSlyZXR1cm4gYX1mdW5jdGlvbiBVYShhLGIsYyl7dmFyIGQ9Xy5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsyXS0oY3x8MCkpKyhkWzNdfHwicHgiKTpifWZ1bmN0aW9uIFZhKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrYWFbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIithYVtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09ci5jc3MoYSwiYm9yZGVyIithYVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPXIuY3NzKGEsInBhZGRpbmciK2FhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNzcyhhLCJib3JkZXIiK2FhW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBXYShhLGIsYyl7dmFyIGQsZT0hMCxmPUxhKGEpLGc9ImJvcmRlci1ib3giPT09ci5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZihhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoZD1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2JdKSwwPj1kfHxudWxsPT1kKXtpZihkPU1hKGEsYixmKSwoMD5kfHxudWxsPT1kKSYmKGQ9YS5zdHlsZVtiXSksS2EudGVzdChkKSlyZXR1cm4gZDtlPWcmJihvLmJveFNpemluZ1JlbGlhYmxlKCl8fGQ9PT1hLnN0eWxlW2JdKSxkPXBhcnNlRmxvYXQoZCl8fDB9cmV0dXJuIGQrVmEoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZSxmKSsicHgifXIuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9TWEoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjoiY3NzRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPXIuY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtyZXR1cm4gYj1yLmNzc1Byb3BzW2hdfHwoci5jc3NQcm9wc1toXT1UYShoKXx8aCksZz1yLmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tzW2hdLHZvaWQgMD09PWM/ZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl06KGY9dHlwZW9mIGMsInN0cmluZyI9PT1mJiYoZT1fLmV4ZWMoYykpJiZlWzFdJiYoYz1kYShhLGIsZSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIj09PWYmJihjKz1lJiZlWzNdfHwoci5jc3NOdW1iZXJbaF0/IiI6InB4IikpLG8uY2xlYXJDbG9uZVN0eWxlfHwiIiE9PWN8fDAhPT1iLmluZGV4T2YoImJhY2tncm91bmQiKXx8KGlbYl09ImluaGVyaXQiKSxnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSl8fChpW2JdPWMpKSx2b2lkIDApfX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPXIuY2FtZWxDYXNlKGIpO3JldHVybiBiPXIuY3NzUHJvcHNbaF18fChyLmNzc1Byb3BzW2hdPVRhKGgpfHxoKSxnPXIuY3NzSG9va3NbYl18fHIuY3NzSG9va3NbaF0sZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1lJiYoZT1NYShhLGIsZCkpLCJub3JtYWwiPT09ZSYmYiBpbiBRYSYmKGU9UWFbYl0pLCIiPT09Y3x8Yz8oZj1wYXJzZUZsb2F0KGUpLGM9PT0hMHx8aXNGaW5pdGUoZik/Znx8MDplKTplfX0pLHIuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBjPyFPYS50ZXN0KHIuY3NzKGEsImRpc3BsYXkiKSl8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/V2EoYSxiLGQpOmNhKGEsUGEsZnVuY3Rpb24oKXtyZXR1cm4gV2EoYSxiLGQpfSk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9ZCYmTGEoYSksZz1kJiZWYShhLGIsZCwiYm9yZGVyLWJveCI9PT1yLmNzcyhhLCJib3hTaXppbmciLCExLGYpLGYpO3JldHVybiBnJiYoZT1fLmV4ZWMoYykpJiYicHgiIT09KGVbM118fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9ci5jc3MoYSxiKSksVWEoYSxjLGcpfX19KSxyLmNzc0hvb2tzLm1hcmdpbkxlZnQ9TmEoby5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj8ocGFyc2VGbG9hdChNYShhLCJtYXJnaW5MZWZ0IikpfHxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtY2EoYSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4Ijp2b2lkIDB9KSxyLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYSthYVtkXStiXT1mW2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxKYS50ZXN0KGEpfHwoci5jc3NIb29rc1thK2JdLnNldD1VYSl9KSxyLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFModGhpcyxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihyLmlzQXJyYXkoYikpe2ZvcihkPUxhKGEpLGU9Yi5sZW5ndGg7ZT5nO2crKylmW2JbZ11dPXIuY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9yLnN0eWxlKGEsYixjKTpyLmNzcyhhLGIpfSxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX19KTtmdW5jdGlvbiBYYShhLGIsYyxkLGUpe3JldHVybiBuZXcgWGEucHJvdG90eXBlLmluaXQoYSxiLGMsZCxlKX1yLlR3ZWVuPVhhLFhhLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WGEsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsdGhpcy5lYXNpbmc9ZXx8ci5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChyLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9WGEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOlhhLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPVhhLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9Yj1yLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WGEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWGEucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVhhLnByb3RvdHlwZSxYYS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIDEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGwhPWEuZWxlbVthLnByb3BdJiZudWxsPT1hLmVsZW0uc3R5bGVbYS5wcm9wXT9hLmVsZW1bYS5wcm9wXTooYj1yLmNzcyhhLmVsZW0sYS5wcm9wLCIiKSxiJiYiYXV0byIhPT1iP2I6MCl9LHNldDpmdW5jdGlvbihhKXtyLmZ4LnN0ZXBbYS5wcm9wXT9yLmZ4LnN0ZXBbYS5wcm9wXShhKToxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsPT1hLmVsZW0uc3R5bGVbci5jc3NQcm9wc1thLnByb3BdXSYmIXIuY3NzSG9va3NbYS5wcm9wXT9hLmVsZW1bYS5wcm9wXT1hLm5vdzpyLnN0eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KX19fSxYYS5wcm9wSG9va3Muc2Nyb2xsVG9wPVhhLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19LHIuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi41LU1hdGguY29zKGEqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sci5meD1YYS5wcm90b3R5cGUuaW5pdCxyLmZ4LnN0ZXA9e307dmFyIFlhLFphLCRhPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxfYT0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIGFiKCl7WmEmJihhLnJlcXVlc3RBbmltYXRpb25GcmFtZShhYiksci5meC50aWNrKCkpfWZ1bmN0aW9uIGJiKCl7cmV0dXJuIGEuc2V0VGltZW91dChmdW5jdGlvbigpe1lhPXZvaWQgMH0pLFlhPXIubm93KCl9ZnVuY3Rpb24gY2IoYSxiKXt2YXIgYyxkPTAsZT17aGVpZ2h0OmF9O2ZvcihiPWI/MTowOzQ+ZDtkKz0yLWIpYz1hYVtkXSxlWyJtYXJnaW4iK2NdPWVbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9uIGRiKGEsYixjKXtmb3IodmFyIGQsZT0oZ2IudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoZ2IudHdlZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gZWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD0id2lkdGgiaW4gYnx8ImhlaWdodCJpbiBiLG09dGhpcyxuPXt9LG89YS5zdHlsZSxwPWEubm9kZVR5cGUmJmJhKGEpLHE9Vi5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGc9ci5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWcudW5xdWV1ZWQmJihnLnVucXVldWVkPTAsaD1nLmVtcHR5LmZpcmUsZy5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7Zy51bnF1ZXVlZHx8aCgpfSksZy51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtnLnVucXVldWVkLS0sci5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8Zy5lbXB0eS5maXJlKCl9KX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSwkYS50ZXN0KGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHA/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFxfHx2b2lkIDA9PT1xW2RdKWNvbnRpbnVlO3A9ITB9bltkXT1xJiZxW2RdfHxyLnN0eWxlKGEsZCl9aWYoaT0hci5pc0VtcHR5T2JqZWN0KGIpLGl8fCFyLmlzRW1wdHlPYmplY3Qobikpe2wmJjE9PT1hLm5vZGVUeXBlJiYoYy5vdmVyZmxvdz1bby5vdmVyZmxvdyxvLm92ZXJmbG93WCxvLm92ZXJmbG93WV0saj1xJiZxLmRpc3BsYXksbnVsbD09aiYmKGo9Vi5nZXQoYSwiZGlzcGxheSIpKSxrPXIuY3NzKGEsImRpc3BsYXkiKSwibm9uZSI9PT1rJiYoaj9rPWo6KGdhKFthXSwhMCksaj1hLnN0eWxlLmRpc3BsYXl8fGosaz1yLmNzcyhhLCJkaXNwbGF5IiksZ2EoW2FdKSkpLCgiaW5saW5lIj09PWt8fCJpbmxpbmUtYmxvY2siPT09ayYmbnVsbCE9aikmJiJub25lIj09PXIuY3NzKGEsImZsb2F0IikmJihpfHwobS5kb25lKGZ1bmN0aW9uKCl7by5kaXNwbGF5PWp9KSxudWxsPT1qJiYoaz1vLmRpc3BsYXksaj0ibm9uZSI9PT1rPyIiOmspKSxvLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYoby5vdmVyZmxvdz0iaGlkZGVuIixtLmFsd2F5cyhmdW5jdGlvbigpe28ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxvLm92ZXJmbG93WD1jLm92ZXJmbG93WzFdLG8ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksaT0hMTtmb3IoZCBpbiBuKWl8fChxPyJoaWRkZW4iaW4gcSYmKHA9cS5oaWRkZW4pOnE9Vi5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpqfSksZiYmKHEuaGlkZGVuPSFwKSxwJiZnYShbYV0sITApLG0uZG9uZShmdW5jdGlvbigpe3B8fGdhKFthXSksVi5yZW1vdmUoYSwiZnhzaG93Iik7Zm9yKGQgaW4gbilyLnN0eWxlKGEsZCxuW2RdKX0pKSxpPWRiKHA/cVtkXTowLGQsbSksZCBpbiBxfHwocVtkXT1pLnN0YXJ0LHAmJihpLmVuZD1pLnN0YXJ0LGkuc3RhcnQ9MCkpfX1mdW5jdGlvbiBmYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPXIuY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sci5pc0FycmF5KGYpJiYoZT1mWzFdLGY9YVtjXT1mWzBdKSxjIT09ZCYmKGFbZF09ZixkZWxldGUgYVtjXSksZz1yLmNzc0hvb2tzW2RdLGcmJiJleHBhbmQiaW4gZyl7Zj1nLmV4cGFuZChmKSxkZWxldGUgYVtkXTtmb3IoYyBpbiBmKWMgaW4gYXx8KGFbY109ZltjXSxiW2NdPWUpfWVsc2UgYltkXT1lfWZ1bmN0aW9uIGdiKGEsYixjKXt2YXIgZCxlLGY9MCxnPWdiLnByZWZpbHRlcnMubGVuZ3RoLGg9ci5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9WWF8fGJiKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOnIuZXh0ZW5kKHt9LGIpLG9wdHM6ci5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOnIuZWFzaW5nLl9kZWZhdWx0fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6WWF8fGJiKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oYixjKXt2YXIgZD1yLlR3ZWVuKGEsai5vcHRzLGIsYyxqLm9wdHMuc3BlY2lhbEVhc2luZ1tiXXx8ai5vcHRzLmVhc2luZyk7cmV0dXJuIGoudHdlZW5zLnB1c2goZCksZH0sc3RvcDpmdW5jdGlvbihiKXt2YXIgYz0wLGQ9Yj9qLnR3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO2Q+YztjKyspai50d2VlbnNbY10ucnVuKDEpO3JldHVybiBiPyhoLm5vdGlmeVdpdGgoYSxbaiwxLDBdKSxoLnJlc29sdmVXaXRoKGEsW2osYl0pKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGZiKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1nYi5wcmVmaWx0ZXJzW2ZdLmNhbGwoaixhLGssai5vcHRzKSlyZXR1cm4gci5pc0Z1bmN0aW9uKGQuc3RvcCkmJihyLl9xdWV1ZUhvb2tzKGouZWxlbSxqLm9wdHMucXVldWUpLnN0b3A9ci5wcm94eShkLnN0b3AsZCkpLGQ7cmV0dXJuIHIubWFwKGssZGIsaiksci5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksci5meC50aW1lcihyLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1yLkFuaW1hdGlvbj1yLmV4dGVuZChnYix7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIGRhKGMuZWxlbSxhLF8uZXhlYyhiKSxjKSxjfV19LHR3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtyLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEubWF0Y2goSyk7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLGdiLnR3ZWVuZXJzW2NdPWdiLnR3ZWVuZXJzW2NdfHxbXSxnYi50d2VlbmVyc1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXJzOltlYl0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9nYi5wcmVmaWx0ZXJzLnVuc2hpZnQoYSk6Z2IucHJlZmlsdGVycy5wdXNoKGEpfX0pLHIuc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWEmJiJvYmplY3QiPT10eXBlb2YgYT9yLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fHIuaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhci5pc0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gci5meC5vZmZ8fGQuaGlkZGVuP2UuZHVyYXRpb249MDplLmR1cmF0aW9uPSJudW1iZXIiPT10eXBlb2YgZS5kdXJhdGlvbj9lLmR1cmF0aW9uOmUuZHVyYXRpb24gaW4gci5meC5zcGVlZHM/ci5meC5zcGVlZHNbZS5kdXJhdGlvbl06ci5meC5zcGVlZHMuX2RlZmF1bHQsbnVsbCE9ZS5xdWV1ZSYmZS5xdWV1ZSE9PSEwfHwoZS5xdWV1ZT0iZngiKSxlLm9sZD1lLmNvbXBsZXRlLGUuY29tcGxldGU9ZnVuY3Rpb24oKXtyLmlzRnVuY3Rpb24oZS5vbGQpJiZlLm9sZC5jYWxsKHRoaXMpLGUucXVldWUmJnIuZGVxdWV1ZSh0aGlzLGUucXVldWUpfSxlfSxyLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihiYSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ci5pc0VtcHR5T2JqZWN0KGEpLGY9ci5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWdiKHRoaXMsci5leHRlbmQoe30sYSksZik7KGV8fFYuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9ci50aW1lcnMsZz1WLmdldCh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZfYS50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxyLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1WLmdldCh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9ci50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLHIucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2c+YjtiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksci5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPXIuZm5bYl07ci5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGNiKGIsITApLGEsZCxlKX19KSxyLmVhY2goe3NsaWRlRG93bjpjYigic2hvdyIpLHNsaWRlVXA6Y2IoImhpZGUiKSxzbGlkZVRvZ2dsZTpjYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksci50aW1lcnM9W10sci5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9ci50aW1lcnM7Zm9yKFlhPXIubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ci5meC5zdG9wKCksWWE9dm9pZCAwfSxyLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe3IudGltZXJzLnB1c2goYSksYSgpP3IuZnguc3RhcnQoKTpyLnRpbWVycy5wb3AoKX0sci5meC5pbnRlcnZhbD0xMyxyLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7WmF8fChaYT1hLnJlcXVlc3RBbmltYXRpb25GcmFtZT9hLnJlcXVlc3RBbmltYXRpb25GcmFtZShhYik6YS5zZXRJbnRlcnZhbChyLmZ4LnRpY2ssci5meC5pbnRlcnZhbCkpfSxyLmZ4LnN0b3A9ZnVuY3Rpb24oKXthLmNhbmNlbEFuaW1hdGlvbkZyYW1lP2EuY2FuY2VsQW5pbWF0aW9uRnJhbWUoWmEpOmEuY2xlYXJJbnRlcnZhbChaYSksWmE9bnVsbH0sci5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sci5mbi5kZWxheT1mdW5jdGlvbihiLGMpe3JldHVybiBiPXIuZng/ci5meC5zcGVlZHNbYl18fGI6YixjPWN8fCJmeCIsdGhpcy5xdWV1ZShjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9YS5zZXRUaW1lb3V0KGMsYik7ZC5zdG9wPWZ1bmN0aW9uKCl7YS5jbGVhclRpbWVvdXQoZSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGI9ZC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxjPWIuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7YS50eXBlPSJjaGVja2JveCIsby5jaGVja09uPSIiIT09YS52YWx1ZSxvLm9wdFNlbGVjdGVkPWMuc2VsZWN0ZWQsYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1ZT0idCIsYS50eXBlPSJyYWRpbyIsby5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGhiLGliPXIuZXhwci5hdHRySGFuZGxlO3IuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFModGhpcyxyLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3IucmVtb3ZlQXR0cih0aGlzLGEpfSl9fSksci5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhLmdldEF0dHJpYnV0ZT9yLnByb3AoYSxiLGMpOigxPT09ZiYmci5pc1hNTERvYyhhKXx8KGU9ci5hdHRySG9va3NbYi50b0xvd2VyQ2FzZSgpXXx8KHIuZXhwci5tYXRjaC5ib29sLnRlc3QoYik/aGI6dm9pZCAwKSksdm9pZCAwIT09Yz9udWxsPT09Yz92b2lkIHIucmVtb3ZlQXR0cihhLGIpOmUmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOihhLnNldEF0dHJpYnV0ZShiLGMrIiIpLGMpOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6KGQ9ci5maW5kLmF0dHIoYSxiKSxudWxsPT1kP3ZvaWQgMDpkKSl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIW8ucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJnIubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTAsZT1iJiZiLm1hdGNoKEspO2lmKGUmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZVtkKytdKWEucmVtb3ZlQXR0cmlidXRlKGMpOwp9fSksaGI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9yLnJlbW92ZUF0dHIoYSxjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fSxyLmVhY2goci5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1pYltiXXx8ci5maW5kLmF0dHI7aWJbYl09ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGYsZz1iLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGR8fChmPWliW2ddLGliW2ddPWUsZT1udWxsIT1jKGEsYixkKT9nOm51bGwsaWJbZ109ZiksZX19KTt2YXIgamI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxrYj0vXig/OmF8YXJlYSkkL2k7ci5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyh0aGlzLHIucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbci5wcm9wRml4W2FdfHxhXX0pfX0pLHIuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZigzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiAxPT09ZiYmci5pc1hNTERvYyhhKXx8KGI9ci5wcm9wRml4W2JdfHxiLGU9ci5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXIuZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6amIudGVzdChhLm5vZGVOYW1lKXx8a2IudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSksby5vcHRTZWxlY3RlZHx8KHIucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxyLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe3IucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTt2YXIgbGI9L1tcdFxyXG5cZl0vZztmdW5jdGlvbiBtYihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1yLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYixtYih0aGlzKSkpfSk7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goSyl8fFtdO3doaWxlKGM9dGhpc1tpKytdKWlmKGU9bWIoYyksZD0xPT09Yy5ub2RlVHlwZSYmKCIgIitlKyIgIikucmVwbGFjZShsYiwiICIpKXtnPTA7d2hpbGUoZj1iW2crK10pZC5pbmRleE9mKCIgIitmKyIgIik8MCYmKGQrPWYrIiAiKTtoPXIudHJpbShkKSxlIT09aCYmYy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtyKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsbWIodGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwiIik7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhKXtiPWEubWF0Y2goSyl8fFtdO3doaWxlKGM9dGhpc1tpKytdKWlmKGU9bWIoYyksZD0xPT09Yy5ub2RlVHlwZSYmKCIgIitlKyIgIikucmVwbGFjZShsYiwiICIpKXtnPTA7d2hpbGUoZj1iW2crK10pd2hpbGUoZC5pbmRleE9mKCIgIitmKyIgIik+LTEpZD1kLnJlcGxhY2UoIiAiK2YrIiAiLCIgIik7aD1yLnRyaW0oZCksZSE9PWgmJmMuc2V0QXR0cmlidXRlKCJjbGFzcyIsaCl9fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTpyLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3IodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyxtYih0aGlzKSxiKSxiKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGQsZSxmO2lmKCJzdHJpbmciPT09Yyl7ZD0wLGU9cih0aGlzKSxmPWEubWF0Y2goSyl8fFtdO3doaWxlKGI9ZltkKytdKWUuaGFzQ2xhc3MoYik/ZS5yZW1vdmVDbGFzcyhiKTplLmFkZENsYXNzKGIpfWVsc2Ugdm9pZCAwIT09YSYmImJvb2xlYW4iIT09Y3x8KGI9bWIodGhpcyksYiYmVi5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsYiksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsYnx8YT09PSExPyIiOlYuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQ9MDtiPSIgIithKyIgIjt3aGlsZShjPXRoaXNbZCsrXSlpZigxPT09Yy5ub2RlVHlwZSYmKCIgIittYihjKSsiICIpLnJlcGxhY2UobGIsIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBuYj0vXHIvZyxvYj0vW1x4MjBcdFxyXG5cZl0rL2c7ci5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPXIuaXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7MT09PXRoaXMubm9kZVR5cGUmJihlPWQ/YS5jYWxsKHRoaXMsYyxyKHRoaXMpLnZhbCgpKTphLG51bGw9PWU/ZT0iIjoibnVtYmVyIj09dHlwZW9mIGU/ZSs9IiI6ci5pc0FycmF5KGUpJiYoZT1yLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksYj1yLnZhbEhvb2tzW3RoaXMudHlwZV18fHIudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsZSwidmFsdWUiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1yLnZhbEhvb2tzW2UudHlwZV18fHIudmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGUsInZhbHVlIikpP2M6KGM9ZS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIGM/Yy5yZXBsYWNlKG5iLCIiKTpudWxsPT1jPyIiOmMpfX19KSxyLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXIuZmluZC5hdHRyKGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI/YjpyLnRyaW0oci50ZXh0KGEpKS5yZXBsYWNlKG9iLCIgIil9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkPWEub3B0aW9ucyxlPWEuc2VsZWN0ZWRJbmRleCxmPSJzZWxlY3Qtb25lIj09PWEudHlwZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sKGMuc2VsZWN0ZWR8fGk9PT1lKSYmIWMuZGlzYWJsZWQmJighYy5wYXJlbnROb2RlLmRpc2FibGVkfHwhci5ub2RlTmFtZShjLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZihiPXIoYykudmFsKCksZilyZXR1cm4gYjtnLnB1c2goYil9cmV0dXJuIGd9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT1hLm9wdGlvbnMsZj1yLm1ha2VBcnJheShiKSxnPWUubGVuZ3RoO3doaWxlKGctLSlkPWVbZ10sKGQuc2VsZWN0ZWQ9ci5pbkFycmF5KHIudmFsSG9va3Mub3B0aW9uLmdldChkKSxmKT4tMSkmJihjPSEwKTtyZXR1cm4gY3x8KGEuc2VsZWN0ZWRJbmRleD0tMSksZn19fX0pLHIuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3IudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihhLGIpe3JldHVybiByLmlzQXJyYXkoYik/YS5jaGVja2VkPXIuaW5BcnJheShyKGEpLnZhbCgpLGIpPi0xOnZvaWQgMH19LG8uY2hlY2tPbnx8KHIudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjphLnZhbHVlfSl9KTt2YXIgcGI9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvO3IuZXh0ZW5kKHIuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oYixjLGUsZil7dmFyIGcsaCxpLGosayxtLG4sbz1bZXx8ZF0scD1sLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHE9bC5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaD1pPWU9ZXx8ZCwzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJiFwYi50ZXN0KHArci5ldmVudC50cmlnZ2VyZWQpJiYocC5pbmRleE9mKCIuIik+LTEmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hpZnQoKSxxLnNvcnQoKSksaz1wLmluZGV4T2YoIjoiKTwwJiYib24iK3AsYj1iW3IuZXhwYW5kb10/YjpuZXcgci5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9Zj8yOjMsYi5uYW1lc3BhY2U9cS5qb2luKCIuIiksYi5ybmFtZXNwYWNlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1lKSxjPW51bGw9PWM/W2JdOnIubWFrZUFycmF5KGMsW2JdKSxuPXIuZXZlbnQuc3BlY2lhbFtwXXx8e30sZnx8IW4udHJpZ2dlcnx8bi50cmlnZ2VyLmFwcGx5KGUsYykhPT0hMSkpe2lmKCFmJiYhbi5ub0J1YmJsZSYmIXIuaXNXaW5kb3coZSkpe2ZvcihqPW4uZGVsZWdhdGVUeXBlfHxwLHBiLnRlc3QoaitwKXx8KGg9aC5wYXJlbnROb2RlKTtoO2g9aC5wYXJlbnROb2RlKW8ucHVzaChoKSxpPWg7aT09PShlLm93bmVyRG9jdW1lbnR8fGQpJiZvLnB1c2goaS5kZWZhdWx0Vmlld3x8aS5wYXJlbnRXaW5kb3d8fGEpfWc9MDt3aGlsZSgoaD1vW2crK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1nPjE/ajpuLmJpbmRUeXBlfHxwLG09KFYuZ2V0KGgsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmVi5nZXQoaCwiaGFuZGxlIiksbSYmbS5hcHBseShoLGMpLG09ayYmaFtrXSxtJiZtLmFwcGx5JiZUKGgpJiYoYi5yZXN1bHQ9bS5hcHBseShoLGMpLGIucmVzdWx0PT09ITEmJmIucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGIudHlwZT1wLGZ8fGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fG4uX2RlZmF1bHQmJm4uX2RlZmF1bHQuYXBwbHkoby5wb3AoKSxjKSE9PSExfHwhVChlKXx8ayYmci5pc0Z1bmN0aW9uKGVbcF0pJiYhci5pc1dpbmRvdyhlKSYmKGk9ZVtrXSxpJiYoZVtrXT1udWxsKSxyLmV2ZW50LnRyaWdnZXJlZD1wLGVbcF0oKSxyLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsaSYmKGVba109aSkpLGIucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXIuZXh0ZW5kKG5ldyByLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO3IuZXZlbnQudHJpZ2dlcihkLG51bGwsYil9fSksci5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/ci5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9fSksci5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ci5mbltiXT1mdW5jdGlvbihhLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRyaWdnZXIoYil9fSksci5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLG8uZm9jdXNpbj0ib25mb2N1c2luImluIGEsby5mb2N1c2lufHxyLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oYSl7ci5ldmVudC5zaW11bGF0ZShiLGEudGFyZ2V0LHIuZXZlbnQuZml4KGEpKX07ci5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPVYuYWNjZXNzKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksVi5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1WLmFjY2VzcyhkLGIpLTE7ZT9WLmFjY2VzcyhkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLFYucmVtb3ZlKGQsYikpfX19KTt2YXIgcWI9YS5sb2NhdGlvbixyYj1yLm5vdygpLHNiPS9cPy87ci5wYXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYztpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXtjPShuZXcgYS5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3htbCIpfWNhdGNoKGQpe2M9dm9pZCAwfXJldHVybiBjJiYhYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fHIuZXJyb3IoIkludmFsaWQgWE1MOiAiK2IpLGN9O3ZhciB0Yj0vXFtcXSQvLHViPS9ccj9cbi9nLHZiPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx3Yj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24geGIoYSxiLGMsZCl7dmFyIGU7aWYoci5pc0FycmF5KGIpKXIuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8dGIudGVzdChhKT9kKGEsZSk6eGIoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PXIudHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKXhiKGErIlsiK2UrIl0iLGJbZV0sYyxkKX1yLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ci5pc0Z1bmN0aW9uKGIpP2IoKTpiO2RbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PWM/IiI6Yyl9O2lmKHIuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFyLmlzUGxhaW5PYmplY3QoYSkpci5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSl4YihjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIil9LHIuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP3IubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ3Yi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhdmIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IWhhLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9cih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOnIuaXNBcnJheShjKT9yLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UodWIsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKHViLCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIHliPS8lMjAvZyx6Yj0vIy4qJC8sQWI9LyhbPyZdKV89W14mXSovLEJiPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sQ2I9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sRGI9L14oPzpHRVR8SEVBRCkkLyxFYj0vXlwvXC8vLEZiPXt9LEdiPXt9LEhiPSIqLyIuY29uY2F0KCIqIiksSWI9ZC5jcmVhdGVFbGVtZW50KCJhIik7SWIuaHJlZj1xYi5ocmVmO2Z1bmN0aW9uIEpiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEspfHxbXTtpZihyLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZFswXT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBLYihhLGIsYyxkKXt2YXIgZT17fSxmPWE9PT1HYjtmdW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLHIuZWFjaChhW2hdfHxbXSxmdW5jdGlvbihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8ZVtqXT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJldHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIExiKGEsYil7dmFyIGMsZCxlPXIuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9PWJbY10mJigoZVtjXT9hOmR8fChkPXt9KSlbY109YltjXSk7cmV0dXJuIGQmJnIuZXh0ZW5kKCEwLGEsZCksYX1mdW5jdGlvbiBNYihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRzLGk9YS5kYXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZCYmKGQ9YS5taW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGQpZm9yKGUgaW4gaClpZihoW2VdJiZoW2VdLnRlc3QoZCkpe2kudW5zaGlmdChlKTticmVha31pZihpWzBdaW4gYylmPWlbMF07ZWxzZXtmb3IoZSBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2UrIiAiK2lbMF1dKXtmPWU7YnJlYWt9Z3x8KGc9ZSl9Zj1mfHxnfXJldHVybiBmPyhmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl0pOnZvaWQgMH1mdW5jdGlvbiBOYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9e30saz1hLmRhdGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJzKWpbZy50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpKWlmKCIqIj09PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitmXXx8alsiKiAiK2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihnPWpbaSsiICIraFswXV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJdKWI9ZyhiKTtlbHNlIHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6Zz9sOiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOmJ9fXIuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpxYi5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDpDYi50ZXN0KHFiLnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOkhiLHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpyLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9MYihMYihhLHIuYWpheFNldHRpbmdzKSxiKTpMYihyLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpKYihGYiksYWpheFRyYW5zcG9ydDpKYihHYiksYWpheDpmdW5jdGlvbihiLGMpeyJvYmplY3QiPT10eXBlb2YgYiYmKGM9YixiPXZvaWQgMCksYz1jfHx7fTt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvPXIuYWpheFNldHVwKHt9LGMpLHA9by5jb250ZXh0fHxvLHE9by5jb250ZXh0JiYocC5ub2RlVHlwZXx8cC5qcXVlcnkpP3IocCk6ci5ldmVudCxzPXIuRGVmZXJyZWQoKSx0PXIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHU9by5zdGF0dXNDb2RlfHx7fSx2PXt9LHc9e30seD0iY2FuY2VsZWQiLHk9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZihrKXtpZighaCl7aD17fTt3aGlsZShiPUJiLmV4ZWMoZykpaFtiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1oW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaz9nOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09ayYmKGE9d1thLnRvTG93ZXJDYXNlKCldPXdbYS50b0xvd2VyQ2FzZSgpXXx8YSx2W2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWsmJihvLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlpZihrKXkuYWx3YXlzKGFbeS5zdGF0dXNdKTtlbHNlIGZvcihiIGluIGEpdVtiXT1bdVtiXSxhW2JdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8eDtyZXR1cm4gZSYmZS5hYm9ydChiKSxBKDAsYiksdGhpc319O2lmKHMucHJvbWlzZSh5KSxvLnVybD0oKGJ8fG8udXJsfHxxYi5ocmVmKSsiIikucmVwbGFjZShFYixxYi5wcm90b2NvbCsiLy8iKSxvLnR5cGU9Yy5tZXRob2R8fGMudHlwZXx8by5tZXRob2R8fG8udHlwZSxvLmRhdGFUeXBlcz0oby5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEspfHxbIiJdLG51bGw9PW8uY3Jvc3NEb21haW4pe2o9ZC5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2ouaHJlZj1vLnVybCxqLmhyZWY9ai5ocmVmLG8uY3Jvc3NEb21haW49SWIucHJvdG9jb2wrIi8vIitJYi5ob3N0IT1qLnByb3RvY29sKyIvLyIrai5ob3N0fWNhdGNoKHope28uY3Jvc3NEb21haW49ITB9fWlmKG8uZGF0YSYmby5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBvLmRhdGEmJihvLmRhdGE9ci5wYXJhbShvLmRhdGEsby50cmFkaXRpb25hbCkpLEtiKEZiLG8sYyx5KSxrKXJldHVybiB5O2w9ci5ldmVudCYmby5nbG9iYWwsbCYmMD09PXIuYWN0aXZlKysmJnIuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksby50eXBlPW8udHlwZS50b1VwcGVyQ2FzZSgpLG8uaGFzQ29udGVudD0hRGIudGVzdChvLnR5cGUpLGY9by51cmwucmVwbGFjZSh6YiwiIiksby5oYXNDb250ZW50P28uZGF0YSYmby5wcm9jZXNzRGF0YSYmMD09PShvLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJihvLmRhdGE9by5kYXRhLnJlcGxhY2UoeWIsIisiKSk6KG49by51cmwuc2xpY2UoZi5sZW5ndGgpLG8uZGF0YSYmKGYrPShzYi50ZXN0KGYpPyImIjoiPyIpK28uZGF0YSxkZWxldGUgby5kYXRhKSxvLmNhY2hlPT09ITEmJihmPWYucmVwbGFjZShBYiwiIiksbj0oc2IudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3JiKysgK24pLG8udXJsPWYrbiksby5pZk1vZGlmaWVkJiYoci5sYXN0TW9kaWZpZWRbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLHIubGFzdE1vZGlmaWVkW2ZdKSxyLmV0YWdbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsci5ldGFnW2ZdKSksKG8uZGF0YSYmby5oYXNDb250ZW50JiZvLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ5LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsby5jb250ZW50VHlwZSkseS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLG8uZGF0YVR5cGVzWzBdJiZvLmFjY2VwdHNbby5kYXRhVHlwZXNbMF1dP28uYWNjZXB0c1tvLmRhdGFUeXBlc1swXV0rKCIqIiE9PW8uZGF0YVR5cGVzWzBdPyIsICIrSGIrIjsgcT0wLjAxIjoiIik6by5hY2NlcHRzWyIqIl0pO2ZvcihtIGluIG8uaGVhZGVycyl5LnNldFJlcXVlc3RIZWFkZXIobSxvLmhlYWRlcnNbbV0pO2lmKG8uYmVmb3JlU2VuZCYmKG8uYmVmb3JlU2VuZC5jYWxsKHAseSxvKT09PSExfHxrKSlyZXR1cm4geS5hYm9ydCgpO2lmKHg9ImFib3J0Iix0LmFkZChvLmNvbXBsZXRlKSx5LmRvbmUoby5zdWNjZXNzKSx5LmZhaWwoby5lcnJvciksZT1LYihHYixvLGMseSkpe2lmKHkucmVhZHlTdGF0ZT0xLGwmJnEudHJpZ2dlcigiYWpheFNlbmQiLFt5LG9dKSxrKXJldHVybiB5O28uYXN5bmMmJm8udGltZW91dD4wJiYoaT1hLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmFib3J0KCJ0aW1lb3V0Iil9LG8udGltZW91dCkpO3RyeXtrPSExLGUuc2VuZCh2LEEpfWNhdGNoKHope2lmKGspdGhyb3cgejtBKC0xLHopfX1lbHNlIEEoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIEEoYixjLGQsaCl7dmFyIGosbSxuLHYsdyx4PWM7a3x8KGs9ITAsaSYmYS5jbGVhclRpbWVvdXQoaSksZT12b2lkIDAsZz1ofHwiIix5LnJlYWR5U3RhdGU9Yj4wPzQ6MCxqPWI+PTIwMCYmMzAwPmJ8fDMwND09PWIsZCYmKHY9TWIobyx5LGQpKSx2PU5iKG8sdix5LGopLGo/KG8uaWZNb2RpZmllZCYmKHc9eS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihyLmxhc3RNb2RpZmllZFtmXT13KSx3PXkuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYoci5ldGFnW2ZdPXcpKSwyMDQ9PT1ifHwiSEVBRCI9PT1vLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1iP3g9Im5vdG1vZGlmaWVkIjooeD12LnN0YXRlLG09di5kYXRhLG49di5lcnJvcixqPSFuKSk6KG49eCwhYiYmeHx8KHg9ImVycm9yIiwwPmImJihiPTApKSkseS5zdGF0dXM9Yix5LnN0YXR1c1RleHQ9KGN8fHgpKyIiLGo/cy5yZXNvbHZlV2l0aChwLFttLHgseV0pOnMucmVqZWN0V2l0aChwLFt5LHgsbl0pLHkuc3RhdHVzQ29kZSh1KSx1PXZvaWQgMCxsJiZxLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt5LG8saj9tOm5dKSx0LmZpcmVXaXRoKHAsW3kseF0pLGwmJihxLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3ksb10pLC0tci5hY3RpdmV8fHIuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB5fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gci5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHIuZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLHIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe3JbYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIHIuaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLHIuYWpheChyLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sci5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksci5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gci5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxyLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gdGhpc1swXSYmKHIuaXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXNbMF0pKSxiPXIoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiByLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXIodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9ci5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCl7cih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxyLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIuZXhwci5wc2V1ZG9zLnZpc2libGUoYSl9LHIuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxyLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319O3ZhciBPYj17MDoyMDAsMTIyMzoyMDR9LFBiPXIuYWpheFNldHRpbmdzLnhocigpO28uY29ycz0hIVBiJiYid2l0aENyZWRlbnRpYWxzImluIFBiLG8uYWpheD1QYj0hIVBiLHIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihiKXt2YXIgYyxkO3JldHVybiBvLmNvcnN8fFBiJiYhYi5jcm9zc0RvbWFpbj97c2VuZDpmdW5jdGlvbihlLGYpe3ZhciBnLGg9Yi54aHIoKTtpZihoLm9wZW4oYi50eXBlLGIudXJsLGIuYXN5bmMsYi51c2VybmFtZSxiLnBhc3N3b3JkKSxiLnhockZpZWxkcylmb3IoZyBpbiBiLnhockZpZWxkcyloW2ddPWIueGhyRmllbGRzW2ddO2IubWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlKGIubWltZVR5cGUpLGIuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZyBpbiBlKWguc2V0UmVxdWVzdEhlYWRlcihnLGVbZ10pO2M9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7YyYmKGM9ZD1oLm9ubG9hZD1oLm9uZXJyb3I9aC5vbmFib3J0PWgub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWE/aC5hYm9ydCgpOiJlcnJvciI9PT1hPyJudW1iZXIiIT10eXBlb2YgaC5zdGF0dXM/ZigwLCJlcnJvciIpOmYoaC5zdGF0dXMsaC5zdGF0dXNUZXh0KTpmKE9iW2guc3RhdHVzXXx8aC5zdGF0dXMsaC5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShoLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiBoLnJlc3BvbnNlVGV4dD97YmluYXJ5OmgucmVzcG9uc2V9Ont0ZXh0OmgucmVzcG9uc2VUZXh0fSxoLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxoLm9ubG9hZD1jKCksZD1oLm9uZXJyb3I9YygiZXJyb3IiKSx2b2lkIDAhPT1oLm9uYWJvcnQ/aC5vbmFib3J0PWQ6aC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09aC5yZWFkeVN0YXRlJiZhLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjJiZkKCl9KX0sYz1jKCJhYm9ydCIpO3RyeXtoLnNlbmQoYi5oYXNDb250ZW50JiZiLmRhdGF8fG51bGwpfWNhdGNoKGkpe2lmKGMpdGhyb3cgaX19LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX06dm9pZCAwfSksci5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2EuY3Jvc3NEb21haW4mJihhLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxyLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtyZXR1cm4gci5nbG9iYWxFdmFsKGEpLGF9fX0pLHIuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXt2b2lkIDA9PT1hLmNhY2hlJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIil9KSxyLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGIsYztyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe2I9cigiPHNjcmlwdD4iKS5wcm9wKHtjaGFyc2V0OmEuc2NyaXB0Q2hhcnNldCxzcmM6YS51cmx9KS5vbigibG9hZCBlcnJvciIsYz1mdW5jdGlvbihhKXtiLnJlbW92ZSgpLGM9bnVsbCxhJiZmKCJlcnJvciI9PT1hLnR5cGU/NDA0OjIwMCxhLnR5cGUpfSksZC5oZWFkLmFwcGVuZENoaWxkKGJbMF0pfSxhYm9ydDpmdW5jdGlvbigpe2MmJmMoKX19fX0pO3ZhciBRYj1bXSxSYj0vKD0pXD8oPz0mfCQpfFw/XD8vO3IuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1RYi5wb3AoKXx8ci5leHBhbmRvKyJfIityYisrO3JldHVybiB0aGlzW2FdPSEwLGF9fSksci5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGUsZixnLGg9Yi5qc29ucCE9PSExJiYoUmIudGVzdChiLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBiLmRhdGEmJjA9PT0oYi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZSYi50ZXN0KGIuZGF0YSkmJiJkYXRhIik7cmV0dXJuIGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXT8oZT1iLmpzb25wQ2FsbGJhY2s9ci5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGg/YltoXT1iW2hdLnJlcGxhY2UoUmIsIiQxIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KHNiLnRlc3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2UpLGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxyLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIpLGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWY/cihhKS5yZW1vdmVQcm9wKGUpOmFbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMuanNvbnBDYWxsYmFjayxRYi5wdXNoKGUpKSxnJiZyLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1mPXZvaWQgMH0pLCJzY3JpcHQiKTp2b2lkIDB9KSxvLmNyZWF0ZUhUTUxEb2N1bWVudD1mdW5jdGlvbigpe3ZhciBhPWQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5O3JldHVybiBhLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1hLmNoaWxkTm9kZXMubGVuZ3RofSgpLHIucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuW107ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKTt2YXIgZSxmLGc7cmV0dXJuIGJ8fChvLmNyZWF0ZUhUTUxEb2N1bWVudD8oYj1kLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIiksZT1iLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSxlLmhyZWY9ZC5sb2NhdGlvbi5ocmVmLGIuaGVhZC5hcHBlbmRDaGlsZChlKSk6Yj1kKSxmPUIuZXhlYyhhKSxnPSFjJiZbXSxmP1tiLmNyZWF0ZUVsZW1lbnQoZlsxXSldOihmPW9hKFthXSxiLGcpLGcmJmcubGVuZ3RoJiZyKGcpLnJlbW92ZSgpLHIubWVyZ2UoW10sZi5jaGlsZE5vZGVzKSl9LHIuZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIpO3JldHVybiBoPi0xJiYoZD1yLnRyaW0oYS5zbGljZShoKSksYT1hLnNsaWNlKDAsaCkpLHIuaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmci5hamF4KHt1cmw6YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP3IoIjxkaXY+IikuYXBwZW5kKHIucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sci5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksci5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ3JlcChyLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07ZnVuY3Rpb24gU2IoYSl7cmV0dXJuIHIuaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZSYmYS5kZWZhdWx0Vmlld31yLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPXIuY3NzKGEsInBvc2l0aW9uIiksbD1yKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1yLmNzcyhhLCJ0b3AiKSxpPXIuY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLHIuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxyLmV4dGVuZCh7fSxoKSkpLG51bGwhPWIudG9wJiYobS50b3A9Yi50b3AtaC50b3ArZyksbnVsbCE9Yi5sZWZ0JiYobS5sZWZ0PWIubGVmdC1oLmxlZnQrZSksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsbSk6bC5jc3MobSl9fSxyLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWE/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oYil7ci5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBiLGMsZCxlLGY9dGhpc1swXTtpZihmKXJldHVybiBmLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhkPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZC53aWR0aHx8ZC5oZWlnaHQ/KGU9Zi5vd25lckRvY3VtZW50LGM9U2IoZSksYj1lLmRvY3VtZW50RWxlbWVudCx7dG9wOmQudG9wK2MucGFnZVlPZmZzZXQtYi5jbGllbnRUb3AsbGVmdDpkLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTpkKTp7dG9wOjAsbGVmdDowfX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9dGhpc1swXSxkPXt0b3A6MCxsZWZ0OjB9O3JldHVybiJmaXhlZCI9PT1yLmNzcyhjLCJwb3NpdGlvbiIpP2I9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxyLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGQ9YS5vZmZzZXQoKSksZD17dG9wOmQudG9wK3IuY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksbGVmdDpkLmxlZnQrci5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCl9KSx7dG9wOmIudG9wLWQudG9wLXIuY3NzKGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1yLmNzcyhjLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoYSYmInN0YXRpYyI9PT1yLmNzcyhhLCJwb3NpdGlvbiIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fHBhfSl9fSksci5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9InBhZ2VZT2Zmc2V0Ij09PWI7ci5mblthXT1mdW5jdGlvbihkKXtyZXR1cm4gUyh0aGlzLGZ1bmN0aW9uKGEsZCxlKXt2YXIgZj1TYihhKTtyZXR1cm4gdm9pZCAwPT09ZT9mP2ZbYl06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP2YucGFnZVhPZmZzZXQ6ZSxjP2U6Zi5wYWdlWU9mZnNldCk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgpfX0pLHIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09TmEoby5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9TWEoYSxiKSxLYS50ZXN0KGMpP3IoYSkucG9zaXRpb24oKVtiXSsicHgiOmMpOnZvaWQgMH0pfSksci5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7ci5mbltkXT1mdW5jdGlvbihlLGYpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxoPWN8fChlPT09ITB8fGY9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFModGhpcyxmdW5jdGlvbihiLGMsZSl7dmFyIGY7cmV0dXJuIHIuaXNXaW5kb3coYik/MD09PWQuaW5kZXhPZigib3V0ZXIiKT9iWyJpbm5lciIrYV06Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGY9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGZbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGZbIm9mZnNldCIrYV0sZlsiY2xpZW50IithXSkpOnZvaWQgMD09PWU/ci5jc3MoYixjLGgpOnIuc3R5bGUoYixjLGUsaCl9LGIsZz9lOnZvaWQgMCxnKX19KX0pLHIuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KSxyLnBhcnNlSlNPTj1KU09OLnBhcnNlLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiByfSk7dmFyIFRiPWEualF1ZXJ5LFViPWEuJDtyZXR1cm4gci5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1yJiYoYS4kPVViKSxiJiZhLmpRdWVyeT09PXImJihhLmpRdWVyeT1UYikscn0sYnx8KGEualF1ZXJ5PWEuJD1yKSxyfSk7Cg=="}},"time_used":200,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":200,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/modernizr.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.334Z","timestamp":1785150870334,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/scripts/modernizr.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-2168\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=PaLZR2rNINGq3ihsYHRPsIdFf7jy8vDjx8JfkXJieMnj9OQZg2njDSbRzJhDidtY0pCkilQPAkTMHHL07ImuHaR7iDKbbuBCkWmG9BX%2BlJNWnRBSdlgyeS%2BlkA%3D%3D\"}]}\r\ncf-ray: a21b388b9bd256a2-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"]}],"data":{"size":8552,"size_decoded":4634,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (8425)","md5":"5de589ca9b8ecf3f97c799def864e063","sha1":"9c6bc837242beb2dacb5839da5cf11bbbe816aed","sha256":"51e952106b9472e97a9af121d1dfbf8d1a93a29b21f19cd0c8047d85f531e5af","sha512":"55f6bde32f369cafd5c4abe29ce328925acd00a30a1d24317c0d03b8a328b562b0f8b610a761927ef93e45ebd158f7a98a4741e3e1e92c417fc71f1fcef956e0","ssdeep":"192:waBnUsMMpKQob1dHYPeIny6ELDDhWwpy8b7z:waBFXpKQoZRY5y6WHh1pz","tlshash":"bd02b7c87652f226879721b6507f420ff175a86aa81c8940e059d9f8bd70cf8163bf2e","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.5646Z","times_seen":27,"resource_available":true,"data":"LyogTW9kZXJuaXpyIDIuOC4zIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECiAqIEJ1aWxkOiBodHRwOi8vbW9kZXJuaXpyLmNvbS9kb3dubG9hZC8jLXNoaXYtbXEtY3NzY2xhc3Nlcy10ZXN0c3R5bGVzLWxvYWQKICovCjt3aW5kb3cuTW9kZXJuaXpyPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiB3KGEpe2ouY3NzVGV4dD1hfWZ1bmN0aW9uIHgoYSxiKXtyZXR1cm4gdyhwcmVmaXhlcy5qb2luKGErIjsiKSsoYnx8IiIpKX1mdW5jdGlvbiB5KGEsYil7cmV0dXJuIHR5cGVvZiBhPT09Yn1mdW5jdGlvbiB6KGEsYil7cmV0dXJuISF+KCIiK2EpLmluZGV4T2YoYil9ZnVuY3Rpb24gQShhLGIsZCl7Zm9yKHZhciBlIGluIGEpe3ZhciBmPWJbYVtlXV07aWYoZiE9PWMpcmV0dXJuIGQ9PT0hMT9hW2VdOnkoZiwiZnVuY3Rpb24iKT9mLmJpbmQoZHx8Yik6Zn1yZXR1cm4hMX12YXIgZD0iMi44LjMiLGU9e30sZj0hMCxnPWIuZG9jdW1lbnRFbGVtZW50LGg9Im1vZGVybml6ciIsaT1iLmNyZWF0ZUVsZW1lbnQoaCksaj1pLnN0eWxlLGssbD17fS50b1N0cmluZyxtPXt9LG49e30sbz17fSxwPVtdLHE9cC5zbGljZSxyLHM9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsaSxqLGssbD1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG09Yi5ib2R5LG49bXx8Yi5jcmVhdGVFbGVtZW50KCJib2R5Iik7aWYocGFyc2VJbnQoZCwxMCkpd2hpbGUoZC0tKWo9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxqLmlkPWU/ZVtkXTpoKyhkKzEpLGwuYXBwZW5kQ2hpbGQoaik7cmV0dXJuIGY9WyImIzE3MzsiLCc8c3R5bGUgaWQ9InMnLGgsJyI+JyxhLCI8L3N0eWxlPiJdLmpvaW4oIiIpLGwuaWQ9aCwobT9sOm4pLmlubmVySFRNTCs9ZixuLmFwcGVuZENoaWxkKGwpLG18fChuLnN0eWxlLmJhY2tncm91bmQ9IiIsbi5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixrPWcuc3R5bGUub3ZlcmZsb3csZy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixnLmFwcGVuZENoaWxkKG4pKSxpPWMobCxhKSxtP2wucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKToobi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLGcuc3R5bGUub3ZlcmZsb3c9ayksISFpfSx0PWZ1bmN0aW9uKGIpe3ZhciBjPWEubWF0Y2hNZWRpYXx8YS5tc01hdGNoTWVkaWE7aWYoYylyZXR1cm4gYyhiKSYmYyhiKS5tYXRjaGVzfHwhMTt2YXIgZDtyZXR1cm4gcygiQG1lZGlhICIrYisiIHsgIyIraCsiIHsgcG9zaXRpb246IGFic29sdXRlOyB9IH0iLGZ1bmN0aW9uKGIpe2Q9KGEuZ2V0Q29tcHV0ZWRTdHlsZT9nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCk6Yi5jdXJyZW50U3R5bGUpWyJwb3NpdGlvbiJdPT0iYWJzb2x1dGUifSksZH0sdT17fS5oYXNPd25Qcm9wZXJ0eSx2OyF5KHUsInVuZGVmaW5lZCIpJiYheSh1LmNhbGwsInVuZGVmaW5lZCIpP3Y9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdS5jYWxsKGEsYil9OnY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiBpbiBhJiZ5KGEuY29uc3RydWN0b3IucHJvdG90eXBlW2JdLCJ1bmRlZmluZWQiKX0sRnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fChGdW5jdGlvbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2lmKHR5cGVvZiBjIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIGQ9cS5jYWxsKGFyZ3VtZW50cywxKSxlPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBhPWZ1bmN0aW9uKCl7fTthLnByb3RvdHlwZT1jLnByb3RvdHlwZTt2YXIgZj1uZXcgYSxnPWMuYXBwbHkoZixkLmNvbmNhdChxLmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiBPYmplY3QoZyk9PT1nP2c6Zn1yZXR1cm4gYy5hcHBseShiLGQuY29uY2F0KHEuY2FsbChhcmd1bWVudHMpKSl9O3JldHVybiBlfSk7Zm9yKHZhciBCIGluIG0pdihtLEIpJiYocj1CLnRvTG93ZXJDYXNlKCksZVtyXT1tW0JdKCkscC5wdXNoKChlW3JdPyIiOiJuby0iKStyKSk7cmV0dXJuIGUuYWRkVGVzdD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT0ib2JqZWN0Iilmb3IodmFyIGQgaW4gYSl2KGEsZCkmJmUuYWRkVGVzdChkLGFbZF0pO2Vsc2V7YT1hLnRvTG93ZXJDYXNlKCk7aWYoZVthXSE9PWMpcmV0dXJuIGU7Yj10eXBlb2YgYj09ImZ1bmN0aW9uIj9iKCk6Yix0eXBlb2YgZiE9InVuZGVmaW5lZCImJmYmJihnLmNsYXNzTmFtZSs9IiAiKyhiPyIiOiJuby0iKSthKSxlW2FdPWJ9cmV0dXJuIGV9LHcoIiIpLGk9az1udWxsLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gbChhLGIpe3ZhciBjPWEuY3JlYXRlRWxlbWVudCgicCIpLGQ9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxhLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYy5pbm5lckhUTUw9Ing8c3R5bGU+IitiKyI8L3N0eWxlPiIsZC5pbnNlcnRCZWZvcmUoYy5sYXN0Q2hpbGQsZC5maXJzdENoaWxkKX1mdW5jdGlvbiBtKCl7dmFyIGE9cy5lbGVtZW50cztyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciP2Euc3BsaXQoIiAiKTphfWZ1bmN0aW9uIG4oYSl7dmFyIGI9althW2hdXTtyZXR1cm4gYnx8KGI9e30saSsrLGFbaF09aSxqW2ldPWIpLGJ9ZnVuY3Rpb24gbyhhLGMsZCl7Y3x8KGM9Yik7aWYoaylyZXR1cm4gYy5jcmVhdGVFbGVtZW50KGEpO2R8fChkPW4oYykpO3ZhciBnO3JldHVybiBkLmNhY2hlW2FdP2c9ZC5jYWNoZVthXS5jbG9uZU5vZGUoKTpmLnRlc3QoYSk/Zz0oZC5jYWNoZVthXT1kLmNyZWF0ZUVsZW0oYSkpLmNsb25lTm9kZSgpOmc9ZC5jcmVhdGVFbGVtKGEpLGcuY2FuSGF2ZUNoaWxkcmVuJiYhZS50ZXN0KGEpJiYhZy50YWdVcm4/ZC5mcmFnLmFwcGVuZENoaWxkKGcpOmd9ZnVuY3Rpb24gcChhLGMpe2F8fChhPWIpO2lmKGspcmV0dXJuIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2M9Y3x8bihhKTt2YXIgZD1jLmZyYWcuY2xvbmVOb2RlKCksZT0wLGY9bSgpLGc9Zi5sZW5ndGg7Zm9yKDtlPGc7ZSsrKWQuY3JlYXRlRWxlbWVudChmW2VdKTtyZXR1cm4gZH1mdW5jdGlvbiBxKGEsYil7Yi5jYWNoZXx8KGIuY2FjaGU9e30sYi5jcmVhdGVFbGVtPWEuY3JlYXRlRWxlbWVudCxiLmNyZWF0ZUZyYWc9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50LGIuZnJhZz1iLmNyZWF0ZUZyYWcoKSksYS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGMpe3JldHVybiBzLnNoaXZNZXRob2RzP28oYyxhLGIpOmIuY3JlYXRlRWxlbShjKX0sYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50PUZ1bmN0aW9uKCJoLGYiLCJyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1mLmNsb25lTm9kZSgpLGM9bi5jcmVhdGVFbGVtZW50O2guc2hpdk1ldGhvZHMmJigiK20oKS5qb2luKCkucmVwbGFjZSgvW1x3XC1dKy9nLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNyZWF0ZUVsZW0oYSksYi5mcmFnLmNyZWF0ZUVsZW1lbnQoYSksJ2MoIicrYSsnIiknfSkrIik7cmV0dXJuIG59IikocyxiLmZyYWcpfWZ1bmN0aW9uIHIoYSl7YXx8KGE9Yik7dmFyIGM9bihhKTtyZXR1cm4gcy5zaGl2Q1NTJiYhZyYmIWMuaGFzQ1NTJiYoYy5oYXNDU1M9ISFsKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksa3x8cShhLGMpLGF9dmFyIGM9IjMuNy4wIixkPWEuaHRtbDV8fHt9LGU9L148fF4oPzpidXR0b258bWFwfHNlbGVjdHx0ZXh0YXJlYXxvYmplY3R8aWZyYW1lfG9wdGlvbnxvcHRncm91cCkkL2ksZj0vXig/OmF8Ynxjb2RlfGRpdnxmaWVsZHNldHxoMXxoMnxoM3xoNHxoNXxoNnxpfGxhYmVsfGxpfG9sfHB8cXxzcGFufHN0cm9uZ3xzdHlsZXx0YWJsZXx0Ym9keXx0ZHx0aHx0cnx1bCkkL2ksZyxoPSJfaHRtbDVzaGl2IixpPTAsaj17fSxrOyhmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGc9ImhpZGRlbiJpbiBhLGs9YS5jaGlsZE5vZGVzLmxlbmd0aD09MXx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4gdHlwZW9mIGEuY2xvbmVOb2RlPT0idW5kZWZpbmVkInx8dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD09InVuZGVmaW5lZCJ8fHR5cGVvZiBhLmNyZWF0ZUVsZW1lbnQ9PSJ1bmRlZmluZWQifSgpfWNhdGNoKGMpe2c9ITAsaz0hMH19KSgpO3ZhciBzPXtlbGVtZW50czpkLmVsZW1lbnRzfHwiYWJiciBhcnRpY2xlIGFzaWRlIGF1ZGlvIGJkaSBjYW52YXMgZGF0YSBkYXRhbGlzdCBkZXRhaWxzIGRpYWxvZyBmaWdjYXB0aW9uIGZpZ3VyZSBmb290ZXIgaGVhZGVyIGhncm91cCBtYWluIG1hcmsgbWV0ZXIgbmF2IG91dHB1dCBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjpjLHNoaXZDU1M6ZC5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6ayxzaGl2TWV0aG9kczpkLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OnIsY3JlYXRlRWxlbWVudDpvLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6cH07YS5odG1sNT1zLHIoYil9KHRoaXMsYiksZS5fdmVyc2lvbj1kLGUubXE9dCxlLnRlc3RTdHlsZXM9cyxnLmNsYXNzTmFtZT1nLmNsYXNzTmFtZS5yZXBsYWNlKC8oXnxccyluby1qcyhcc3wkKS8sIiQxJDIiKSsoZj8iIGpzICIrcC5qb2luKCIgIik6IiIpLGV9KHRoaXMsdGhpcy5kb2N1bWVudCksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09by5jYWxsKGEpfWZ1bmN0aW9uIGUoYSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhfWZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gZyhhKXtyZXR1cm4hYXx8ImxvYWRlZCI9PWF8fCJjb21wbGV0ZSI9PWF8fCJ1bmluaXRpYWxpemVkIj09YX1mdW5jdGlvbiBoKCl7dmFyIGE9cC5zaGlmdCgpO3E9MSxhP2EudD9tKGZ1bmN0aW9uKCl7KCJjIj09YS50P0IuaW5qZWN0Q3NzOkIuaW5qZWN0SnMpKGEucywwLGEuYSxhLngsYS5lLDEpfSwwKTooYSgpLGgoKSk6cT0wfWZ1bmN0aW9uIGkoYSxjLGQsZSxmLGksail7ZnVuY3Rpb24gayhiKXtpZighbyYmZyhsLnJlYWR5U3RhdGUpJiYodS5yPW89MSwhcSYmaCgpLGwub25sb2FkPWwub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsYikpeyJpbWciIT1hJiZtKGZ1bmN0aW9uKCl7dC5yZW1vdmVDaGlsZChsKX0sNTApO2Zvcih2YXIgZCBpbiB5W2NdKXlbY10uaGFzT3duUHJvcGVydHkoZCkmJnlbY11bZF0ub25sb2FkKCl9fXZhciBqPWp8fEIuZXJyb3JUaW1lb3V0LGw9Yi5jcmVhdGVFbGVtZW50KGEpLG89MCxyPTAsdT17dDpkLHM6YyxlOmYsYTppLHg6an07MT09PXlbY10mJihyPTEseVtjXT1bXSksIm9iamVjdCI9PWE/bC5kYXRhPWM6KGwuc3JjPWMsbC50eXBlPWEpLGwud2lkdGg9bC5oZWlnaHQ9IjAiLGwub25lcnJvcj1sLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2suY2FsbCh0aGlzLHIpfSxwLnNwbGljZShlLDAsdSksImltZyIhPWEmJihyfHwyPT09eVtjXT8odC5pbnNlcnRCZWZvcmUobCxzP251bGw6biksbShrLGopKTp5W2NdLnB1c2gobCkpfWZ1bmN0aW9uIGooYSxiLGMsZCxmKXtyZXR1cm4gcT0wLGI9Ynx8ImoiLGUoYSk/aSgiYyI9PWI/djp1LGEsYix0aGlzLmkrKyxjLGQsZik6KHAuc3BsaWNlKHRoaXMuaSsrLDAsYSksMT09cC5sZW5ndGgmJmgoKSksdGhpc31mdW5jdGlvbiBrKCl7dmFyIGE9QjtyZXR1cm4gYS5sb2FkZXI9e2xvYWQ6aixpOjB9LGF9dmFyIGw9Yi5kb2N1bWVudEVsZW1lbnQsbT1hLnNldFRpbWVvdXQsbj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxvPXt9LnRvU3RyaW5nLHA9W10scT0wLHI9Ik1vekFwcGVhcmFuY2UiaW4gbC5zdHlsZSxzPXImJiEhYi5jcmVhdGVSYW5nZSgpLmNvbXBhcmVOb2RlLHQ9cz9sOm4ucGFyZW50Tm9kZSxsPWEub3BlcmEmJiJbb2JqZWN0IE9wZXJhXSI9PW8uY2FsbChhLm9wZXJhKSxsPSEhYi5hdHRhY2hFdmVudCYmIWwsdT1yPyJvYmplY3QiOmw/InNjcmlwdCI6ImltZyIsdj1sPyJzY3JpcHQiOnUsdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1vLmNhbGwoYSl9LHg9W10seT17fSx6PXt0aW1lb3V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubGVuZ3RoJiYoYS50aW1lb3V0PWJbMF0pLGF9fSxBLEI7Qj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3ZhciBhPWEuc3BsaXQoIiEiKSxiPXgubGVuZ3RoLGM9YS5wb3AoKSxkPWEubGVuZ3RoLGM9e3VybDpjLG9yaWdVcmw6YyxwcmVmaXhlczphfSxlLGYsZztmb3IoZj0wO2Y8ZDtmKyspZz1hW2ZdLnNwbGl0KCI9IiksKGU9eltnLnNoaWZ0KCldKSYmKGM9ZShjLGcpKTtmb3IoZj0wO2Y8YjtmKyspYz14W2ZdKGMpO3JldHVybiBjfWZ1bmN0aW9uIGcoYSxlLGYsZyxoKXt2YXIgaT1iKGEpLGo9aS5hdXRvQ2FsbGJhY2s7aS51cmwuc3BsaXQoIi4iKS5wb3AoKS5zcGxpdCgiPyIpLnNoaWZ0KCksaS5ieXBhc3N8fChlJiYoZT1kKGUpP2U6ZVthXXx8ZVtnXXx8ZVthLnNwbGl0KCIvIikucG9wKCkuc3BsaXQoIj8iKVswXV0pLGkuaW5zdGVhZD9pLmluc3RlYWQoYSxlLGYsZyxoKTooeVtpLnVybF0/aS5ub2V4ZWM9ITA6eVtpLnVybF09MSxmLmxvYWQoaS51cmwsaS5mb3JjZUNTU3x8IWkuZm9yY2VKUyYmImNzcyI9PWkudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpPyJjIjpjLGkubm9leGVjLGkuYXR0cnMsaS50aW1lb3V0KSwoZChlKXx8ZChqKSkmJmYubG9hZChmdW5jdGlvbigpe2soKSxlJiZlKGkub3JpZ1VybCxoLGcpLGomJmooaS5vcmlnVXJsLGgsZykseVtpLnVybF09Mn0pKSl9ZnVuY3Rpb24gaChhLGIpe2Z1bmN0aW9uIGMoYSxjKXtpZihhKXtpZihlKGEpKWN8fChqPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9KSxnKGEsaixiLDAsaCk7ZWxzZSBpZihPYmplY3QoYSk9PT1hKWZvcihuIGluIG09ZnVuY3Rpb24oKXt2YXIgYj0wLGM7Zm9yKGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiZiKys7cmV0dXJuIGJ9KCksYSlhLmhhc093blByb3BlcnR5KG4pJiYoIWMmJiEtLW0mJihkKGopP2o9ZnVuY3Rpb24oKXt2YXIgYT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7ay5hcHBseSh0aGlzLGEpLGwoKX06altuXT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7YSYmYS5hcHBseSh0aGlzLGIpLGwoKX19KGtbbl0pKSxnKGFbbl0saixiLG4saCkpfWVsc2UhYyYmbCgpfXZhciBoPSEhYS50ZXN0LGk9YS5sb2FkfHxhLmJvdGgsaj1hLmNhbGxiYWNrfHxmLGs9aixsPWEuY29tcGxldGV8fGYsbSxuO2MoaD9hLnllcDphLm5vcGUsISFpKSxpJiZjKGkpfXZhciBpLGosbD10aGlzLnllcG5vcGUubG9hZGVyO2lmKGUoYSkpZyhhLDAsbCwwKTtlbHNlIGlmKHcoYSkpZm9yKGk9MDtpPGEubGVuZ3RoO2krKylqPWFbaV0sZShqKT9nKGosMCxsLDApOncoaik/QihqKTpPYmplY3Qoaik9PT1qJiZoKGosbCk7ZWxzZSBPYmplY3QoYSk9PT1hJiZoKGEsbCl9LEIuYWRkUHJlZml4PWZ1bmN0aW9uKGEsYil7elthXT1ifSxCLmFkZEZpbHRlcj1mdW5jdGlvbihhKXt4LnB1c2goYSl9LEIuZXJyb3JUaW1lb3V0PTFlNCxudWxsPT1iLnJlYWR5U3RhdGUmJmIuYWRkRXZlbnRMaXN0ZW5lciYmKGIucmVhZHlTdGF0ZT0ibG9hZGluZyIsYi5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixBPWZ1bmN0aW9uKCl7Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixBLDApLGIucmVhZHlTdGF0ZT0iY29tcGxldGUifSwwKSksYS55ZXBub3BlPWsoKSxhLnllcG5vcGUuZXhlY3V0ZVN0YWNrPWgsYS55ZXBub3BlLmluamVjdEpzPWZ1bmN0aW9uKGEsYyxkLGUsaSxqKXt2YXIgaz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGwsbyxlPWV8fEIuZXJyb3JUaW1lb3V0O2suc3JjPWE7Zm9yKG8gaW4gZClrLnNldEF0dHJpYnV0ZShvLGRbb10pO2M9aj9oOmN8fGYsay5vbnJlYWR5c3RhdGVjaGFuZ2U9ay5vbmxvYWQ9ZnVuY3Rpb24oKXshbCYmZyhrLnJlYWR5U3RhdGUpJiYobD0xLGMoKSxrLm9ubG9hZD1rLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsKX0sbShmdW5jdGlvbigpe2x8fChsPTEsYygxKSl9LGUpLGk/ay5vbmxvYWQoKTpuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGssbil9LGEueWVwbm9wZS5pbmplY3RDc3M9ZnVuY3Rpb24oYSxjLGQsZSxnLGkpe3ZhciBlPWIuY3JlYXRlRWxlbWVudCgibGluayIpLGosYz1pP2g6Y3x8ZjtlLmhyZWY9YSxlLnJlbD0ic3R5bGVzaGVldCIsZS50eXBlPSJ0ZXh0L2NzcyI7Zm9yKGogaW4gZCllLnNldEF0dHJpYnV0ZShqLGRbal0pO2d8fChuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsbiksbShjLDApKX19KHRoaXMsZG9jdW1lbnQpLE1vZGVybml6ci5sb2FkPWZ1bmN0aW9uKCl7eWVwbm9wZS5hcHBseSh3aW5kb3csW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfTs="}},"time_used":201,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":201,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/sweet-alert/sweetalert.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.340Z","timestamp":1785150870340,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/sweet-alert/sweetalert.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-4251\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=AbVAYrrXGxilNdMbI5IeU7q5TAv1hhaGUGq%2Bg7FqaLu9S8fwamesu7HcTl9%2FvXwBW0MUQZ2YBA8LykrNyOIQaZ064KgywKYgjz97s4q%2BW8O8JN9NEDJe06J63g%3D%3D\"}]}\r\ncf-ray: a21b388babd656a2-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"]}],"data":{"size":16977,"size_decoded":6238,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (16977), with no line terminators","md5":"0068f44b0aa1b83fa7679860ceb26590","sha1":"20d5cdb9d2002442843baab241f2e883563d1de5","sha256":"7a056fc64aba501090c8acd106b0c7bbc9a267914e695ae34aa42a6ae2a094a7","sha512":"ed54e2cbd021a5acc178a40096168b45493e9003006fca1cce58eec891cfb153d6a31fd02170c53a74fd0d4935502f046e71ca45d428c13eec3817bb2c08da8d","ssdeep":"384:Rixwo5U75rT3rOlgkhzj7qRM0I2XyySyTXmy9ti/IEUVRj6KaVnzZduTQRc8exfx:RiU3rfRMbwd9t2UVR2KaVz/uMRc8exp","tlshash":"5772b84d315438b313a765f150af8147a4b15abde80998a0366cc4e61ff8c8e6ae2f77","first_seen":"2023-03-07T01:15:37Z","last_seen":"2026-07-27T11:25:33.528567Z","times_seen":4056,"resource_available":true,"data":"IWZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7IWZ1bmN0aW9uIG8oZSx0LG4pe2Z1bmN0aW9uIGEocyxsKXtpZighdFtzXSl7aWYoIWVbc10pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFsJiZpKXJldHVybiBpKHMsITApO2lmKHIpcmV0dXJuIHIocywhMCk7dmFyIHU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrcysiJyIpO3Rocm93IHUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsdX12YXIgYz10W3NdPXtleHBvcnRzOnt9fTtlW3NdWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKHQpe3ZhciBuPWVbc11bMV1bdF07cmV0dXJuIGEobj9uOnQpfSxjLGMuZXhwb3J0cyxvLGUsdCxuKX1yZXR1cm4gdFtzXS5leHBvcnRzfWZvcih2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxzPTA7czxuLmxlbmd0aDtzKyspYShuW3NdKTtyZXR1cm4gYX0oezE6W2Z1bmN0aW9uKG8sYSxyKXt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBsLGksdSxjLGQ9bygiLi9tb2R1bGVzL2hhbmRsZS1kb20iKSxmPW8oIi4vbW9kdWxlcy91dGlscyIpLHA9bygiLi9tb2R1bGVzL2hhbmRsZS1zd2FsLWRvbSIpLG09bygiLi9tb2R1bGVzL2hhbmRsZS1jbGljayIpLHY9bygiLi9tb2R1bGVzL2hhbmRsZS1rZXkiKSx5PXModiksaD1vKCIuL21vZHVsZXMvZGVmYXVsdC1wYXJhbXMiKSxiPXMoaCksZz1vKCIuL21vZHVsZXMvc2V0LXBhcmFtcyIpLHc9cyhnKTtyWyJkZWZhdWx0Il09dT1jPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyhlKXt2YXIgdD1hO3JldHVybiB0W2VdPT09bj9iWyJkZWZhdWx0Il1bZV06dFtlXX12YXIgYT1hcmd1bWVudHNbMF07aWYoZC5hZGRDbGFzcyh0LmJvZHksInN0b3Atc2Nyb2xsaW5nIikscC5yZXNldElucHV0KCksYT09PW4pcmV0dXJuIGYubG9nU3RyKCJTd2VldEFsZXJ0IGV4cGVjdHMgYXQgbGVhc3QgMSBhdHRyaWJ1dGUhIiksITE7dmFyIHI9Zi5leHRlbmQoe30sYlsiZGVmYXVsdCJdKTtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjpyLnRpdGxlPWEsci50ZXh0PWFyZ3VtZW50c1sxXXx8IiIsci50eXBlPWFyZ3VtZW50c1syXXx8IiI7YnJlYWs7Y2FzZSJvYmplY3QiOmlmKGEudGl0bGU9PT1uKXJldHVybiBmLmxvZ1N0cignTWlzc2luZyAidGl0bGUiIGFyZ3VtZW50IScpLCExO3IudGl0bGU9YS50aXRsZTtmb3IodmFyIHMgaW4gYlsiZGVmYXVsdCJdKXJbc109byhzKTtyLmNvbmZpcm1CdXR0b25UZXh0PXIuc2hvd0NhbmNlbEJ1dHRvbj8iQ29uZmlybSI6YlsiZGVmYXVsdCJdLmNvbmZpcm1CdXR0b25UZXh0LHIuY29uZmlybUJ1dHRvblRleHQ9bygiY29uZmlybUJ1dHRvblRleHQiKSxyLmRvbmVGdW5jdGlvbj1hcmd1bWVudHNbMV18fG51bGw7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZi5sb2dTdHIoJ1VuZXhwZWN0ZWQgdHlwZSBvZiBhcmd1bWVudCEgRXhwZWN0ZWQgInN0cmluZyIgb3IgIm9iamVjdCIsIGdvdCAnK3R5cGVvZiBhKSwhMX13WyJkZWZhdWx0Il0ocikscC5maXhWZXJ0aWNhbFBvc2l0aW9uKCkscC5vcGVuTW9kYWwoYXJndW1lbnRzWzFdKTtmb3IodmFyIHU9cC5nZXRNb2RhbCgpLHY9dS5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKSxoPVsib25jbGljayIsIm9ubW91c2VvdmVyIiwib25tb3VzZW91dCIsIm9ubW91c2Vkb3duIiwib25tb3VzZXVwIiwib25mb2N1cyJdLGc9ZnVuY3Rpb24oZSl7cmV0dXJuIG0uaGFuZGxlQnV0dG9uKGUscix1KX0sQz0wO0M8di5sZW5ndGg7QysrKWZvcih2YXIgUz0wO1M8aC5sZW5ndGg7UysrKXt2YXIgeD1oW1NdO3ZbQ11beF09Z31wLmdldE92ZXJsYXkoKS5vbmNsaWNrPWcsbD1lLm9ua2V5ZG93bjt2YXIgaz1mdW5jdGlvbihlKXtyZXR1cm4geVsiZGVmYXVsdCJdKGUscix1KX07ZS5vbmtleWRvd249ayxlLm9uZm9jdXM9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aSE9PW4mJihpLmZvY3VzKCksaT1uKX0sMCl9LGMuZW5hYmxlQnV0dG9ucygpfSx1LnNldERlZmF1bHRzPWMuc2V0RGVmYXVsdHM9ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJ1c2VyUGFyYW1zIGlzIHJlcXVpcmVkIik7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigidXNlclBhcmFtcyBoYXMgdG8gYmUgYSBvYmplY3QiKTtmLmV4dGVuZChiWyJkZWZhdWx0Il0sZSl9LHUuY2xvc2U9Yy5jbG9zZT1mdW5jdGlvbigpe3ZhciBvPXAuZ2V0TW9kYWwoKTtkLmZhZGVPdXQocC5nZXRPdmVybGF5KCksNSksZC5mYWRlT3V0KG8sNSksZC5yZW1vdmVDbGFzcyhvLCJzaG93U3dlZXRBbGVydCIpLGQuYWRkQ2xhc3MobywiaGlkZVN3ZWV0QWxlcnQiKSxkLnJlbW92ZUNsYXNzKG8sInZpc2libGUiKTt2YXIgYT1vLnF1ZXJ5U2VsZWN0b3IoIi5zYS1pY29uLnNhLXN1Y2Nlc3MiKTtkLnJlbW92ZUNsYXNzKGEsImFuaW1hdGUiKSxkLnJlbW92ZUNsYXNzKGEucXVlcnlTZWxlY3RvcigiLnNhLXRpcCIpLCJhbmltYXRlU3VjY2Vzc1RpcCIpLGQucmVtb3ZlQ2xhc3MoYS5xdWVyeVNlbGVjdG9yKCIuc2EtbG9uZyIpLCJhbmltYXRlU3VjY2Vzc0xvbmciKTt2YXIgcj1vLnF1ZXJ5U2VsZWN0b3IoIi5zYS1pY29uLnNhLWVycm9yIik7ZC5yZW1vdmVDbGFzcyhyLCJhbmltYXRlRXJyb3JJY29uIiksZC5yZW1vdmVDbGFzcyhyLnF1ZXJ5U2VsZWN0b3IoIi5zYS14LW1hcmsiKSwiYW5pbWF0ZVhNYXJrIik7dmFyIHM9by5xdWVyeVNlbGVjdG9yKCIuc2EtaWNvbi5zYS13YXJuaW5nIik7cmV0dXJuIGQucmVtb3ZlQ2xhc3MocywicHVsc2VXYXJuaW5nIiksZC5yZW1vdmVDbGFzcyhzLnF1ZXJ5U2VsZWN0b3IoIi5zYS1ib2R5IiksInB1bHNlV2FybmluZ0lucyIpLGQucmVtb3ZlQ2xhc3Mocy5xdWVyeVNlbGVjdG9yKCIuc2EtZG90IiksInB1bHNlV2FybmluZ0lucyIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT1vLmdldEF0dHJpYnV0ZSgiZGF0YS1jdXN0b20tY2xhc3MiKTtkLnJlbW92ZUNsYXNzKG8sZSl9LDMwMCksZC5yZW1vdmVDbGFzcyh0LmJvZHksInN0b3Atc2Nyb2xsaW5nIiksZS5vbmtleWRvd249bCxlLnByZXZpb3VzQWN0aXZlRWxlbWVudCYmZS5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMoKSxpPW4sY2xlYXJUaW1lb3V0KG8udGltZW91dCksITB9LHUuc2hvd0lucHV0RXJyb3I9Yy5zaG93SW5wdXRFcnJvcj1mdW5jdGlvbihlKXt2YXIgdD1wLmdldE1vZGFsKCksbj10LnF1ZXJ5U2VsZWN0b3IoIi5zYS1pbnB1dC1lcnJvciIpO2QuYWRkQ2xhc3Mobiwic2hvdyIpO3ZhciBvPXQucXVlcnlTZWxlY3RvcigiLnNhLWVycm9yLWNvbnRhaW5lciIpO2QuYWRkQ2xhc3Mobywic2hvdyIpLG8ucXVlcnlTZWxlY3RvcigicCIpLmlubmVySFRNTD1lLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt1LmVuYWJsZUJ1dHRvbnMoKX0sMSksdC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLmZvY3VzKCl9LHUucmVzZXRJbnB1dEVycm9yPWMucmVzZXRJbnB1dEVycm9yPWZ1bmN0aW9uKGUpe2lmKGUmJjEzPT09ZS5rZXlDb2RlKXJldHVybiExO3ZhciB0PXAuZ2V0TW9kYWwoKSxuPXQucXVlcnlTZWxlY3RvcigiLnNhLWlucHV0LWVycm9yIik7ZC5yZW1vdmVDbGFzcyhuLCJzaG93Iik7dmFyIG89dC5xdWVyeVNlbGVjdG9yKCIuc2EtZXJyb3ItY29udGFpbmVyIik7ZC5yZW1vdmVDbGFzcyhvLCJzaG93Iil9LHUuZGlzYWJsZUJ1dHRvbnM9Yy5kaXNhYmxlQnV0dG9ucz1mdW5jdGlvbigpe3ZhciBlPXAuZ2V0TW9kYWwoKSx0PWUucXVlcnlTZWxlY3RvcigiYnV0dG9uLmNvbmZpcm0iKSxuPWUucXVlcnlTZWxlY3RvcigiYnV0dG9uLmNhbmNlbCIpO3QuZGlzYWJsZWQ9ITAsbi5kaXNhYmxlZD0hMH0sdS5lbmFibGVCdXR0b25zPWMuZW5hYmxlQnV0dG9ucz1mdW5jdGlvbigpe3ZhciBlPXAuZ2V0TW9kYWwoKSx0PWUucXVlcnlTZWxlY3RvcigiYnV0dG9uLmNvbmZpcm0iKSxuPWUucXVlcnlTZWxlY3RvcigiYnV0dG9uLmNhbmNlbCIpO3QuZGlzYWJsZWQ9ITEsbi5kaXNhYmxlZD0hMX0sInVuZGVmaW5lZCIhPXR5cGVvZiBlP2Uuc3dlZXRBbGVydD1lLnN3YWw9dTpmLmxvZ1N0cigiU3dlZXRBbGVydCBpcyBhIGZyb250ZW5kIG1vZHVsZSEiKSxhLmV4cG9ydHM9clsiZGVmYXVsdCJdfSx7Ii4vbW9kdWxlcy9kZWZhdWx0LXBhcmFtcyI6MiwiLi9tb2R1bGVzL2hhbmRsZS1jbGljayI6MywiLi9tb2R1bGVzL2hhbmRsZS1kb20iOjQsIi4vbW9kdWxlcy9oYW5kbGUta2V5Ijo1LCIuL21vZHVsZXMvaGFuZGxlLXN3YWwtZG9tIjo2LCIuL21vZHVsZXMvc2V0LXBhcmFtcyI6OCwiLi9tb2R1bGVzL3V0aWxzIjo5fV0sMjpbZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz17dGl0bGU6IiIsdGV4dDoiIix0eXBlOm51bGwsYWxsb3dPdXRzaWRlQ2xpY2s6ITEsc2hvd0NvbmZpcm1CdXR0b246ITAsc2hvd0NhbmNlbEJ1dHRvbjohMSxjbG9zZU9uQ29uZmlybTohMCxjbG9zZU9uQ2FuY2VsOiEwLGNvbmZpcm1CdXR0b25UZXh0OiJPSyIsY29uZmlybUJ1dHRvbkNvbG9yOiIjOENENEY1IixjYW5jZWxCdXR0b25UZXh0OiJDYW5jZWwiLGltYWdlVXJsOm51bGwsaW1hZ2VTaXplOm51bGwsdGltZXI6bnVsbCxjdXN0b21DbGFzczoiIixodG1sOiExLGFuaW1hdGlvbjohMCxhbGxvd0VzY2FwZUtleTohMCxpbnB1dFR5cGU6InRleHQiLGlucHV0UGxhY2Vob2xkZXI6IiIsaW5wdXRWYWx1ZToiIixzaG93TG9hZGVyT25Db25maXJtOiExfTtuWyJkZWZhdWx0Il09byx0LmV4cG9ydHM9blsiZGVmYXVsdCJdfSx7fV0sMzpbZnVuY3Rpb24odCxuLG8pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYT10KCIuL3V0aWxzIikscj0odCgiLi9oYW5kbGUtc3dhbC1kb20iKSx0KCIuL2hhbmRsZS1kb20iKSkscz1mdW5jdGlvbih0LG4sbyl7ZnVuY3Rpb24gcyhlKXttJiZuLmNvbmZpcm1CdXR0b25Db2xvciYmKHAuc3R5bGUuYmFja2dyb3VuZENvbG9yPWUpfXZhciB1LGMsZCxmPXR8fGUuZXZlbnQscD1mLnRhcmdldHx8Zi5zcmNFbGVtZW50LG09LTEhPT1wLmNsYXNzTmFtZS5pbmRleE9mKCJjb25maXJtIiksdj0tMSE9PXAuY2xhc3NOYW1lLmluZGV4T2YoInN3ZWV0LW92ZXJsYXkiKSx5PXIuaGFzQ2xhc3MobywidmlzaWJsZSIpLGg9bi5kb25lRnVuY3Rpb24mJiJ0cnVlIj09PW8uZ2V0QXR0cmlidXRlKCJkYXRhLWhhcy1kb25lLWZ1bmN0aW9uIik7c3dpdGNoKG0mJm4uY29uZmlybUJ1dHRvbkNvbG9yJiYodT1uLmNvbmZpcm1CdXR0b25Db2xvcixjPWEuY29sb3JMdW1pbmFuY2UodSwtLjA0KSxkPWEuY29sb3JMdW1pbmFuY2UodSwtLjE0KSksZi50eXBlKXtjYXNlIm1vdXNlb3ZlciI6cyhjKTticmVhaztjYXNlIm1vdXNlb3V0IjpzKHUpO2JyZWFrO2Nhc2UibW91c2Vkb3duIjpzKGQpO2JyZWFrO2Nhc2UibW91c2V1cCI6cyhjKTticmVhaztjYXNlImZvY3VzIjp2YXIgYj1vLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5jb25maXJtIiksZz1vLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5jYW5jZWwiKTttP2cuc3R5bGUuYm94U2hhZG93PSJub25lIjpiLnN0eWxlLmJveFNoYWRvdz0ibm9uZSI7YnJlYWs7Y2FzZSJjbGljayI6dmFyIHc9bz09PXAsQz1yLmlzRGVzY2VuZGFudChvLHApO2lmKCF3JiYhQyYmeSYmIW4uYWxsb3dPdXRzaWRlQ2xpY2spYnJlYWs7bSYmaCYmeT9sKG8sbik6aCYmeXx8dj9pKG8sbik6ci5pc0Rlc2NlbmRhbnQobyxwKSYmIkJVVFRPTiI9PT1wLnRhZ05hbWUmJnN3ZWV0QWxlcnQuY2xvc2UoKX19LGw9ZnVuY3Rpb24oZSx0KXt2YXIgbj0hMDtyLmhhc0NsYXNzKGUsInNob3ctaW5wdXQiKSYmKG49ZS5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLnZhbHVlLG58fChuPSIiKSksdC5kb25lRnVuY3Rpb24obiksdC5jbG9zZU9uQ29uZmlybSYmc3dlZXRBbGVydC5jbG9zZSgpLHQuc2hvd0xvYWRlck9uQ29uZmlybSYmc3dlZXRBbGVydC5kaXNhYmxlQnV0dG9ucygpfSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49U3RyaW5nKHQuZG9uZUZ1bmN0aW9uKS5yZXBsYWNlKC9ccy9nLCIiKSxvPSJmdW5jdGlvbigiPT09bi5zdWJzdHJpbmcoMCw5KSYmIikiIT09bi5zdWJzdHJpbmcoOSwxMCk7byYmdC5kb25lRnVuY3Rpb24oITEpLHQuY2xvc2VPbkNhbmNlbCYmc3dlZXRBbGVydC5jbG9zZSgpfTtvWyJkZWZhdWx0Il09e2hhbmRsZUJ1dHRvbjpzLGhhbmRsZUNvbmZpcm06bCxoYW5kbGVDYW5jZWw6aX0sbi5leHBvcnRzPW9bImRlZmF1bHQiXX0seyIuL2hhbmRsZS1kb20iOjQsIi4vaGFuZGxlLXN3YWwtZG9tIjo2LCIuL3V0aWxzIjo5fV0sNDpbZnVuY3Rpb24obixvLGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUmVnRXhwKCIgIit0KyIgIikudGVzdCgiICIrZS5jbGFzc05hbWUrIiAiKX0scz1mdW5jdGlvbihlLHQpe3IoZSx0KXx8KGUuY2xhc3NOYW1lKz0iICIrdCl9LGw9ZnVuY3Rpb24oZSx0KXt2YXIgbj0iICIrZS5jbGFzc05hbWUucmVwbGFjZSgvW1x0XHJcbl0vZywiICIpKyIgIjtpZihyKGUsdCkpe2Zvcig7bi5pbmRleE9mKCIgIit0KyIgIik+PTA7KW49bi5yZXBsYWNlKCIgIit0KyIgIiwiICIpO2UuY2xhc3NOYW1lPW4ucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfX0saT1mdW5jdGlvbihlKXt2YXIgbj10LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoZSkpLG4uaW5uZXJIVE1MfSx1PWZ1bmN0aW9uKGUpe2Uuc3R5bGUub3BhY2l0eT0iIixlLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0sYz1mdW5jdGlvbihlKXtpZihlJiYhZS5sZW5ndGgpcmV0dXJuIHUoZSk7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3QpdShlW3RdKX0sZD1mdW5jdGlvbihlKXtlLnN0eWxlLm9wYWNpdHk9IiIsZS5zdHlsZS5kaXNwbGF5PSJub25lIn0sZj1mdW5jdGlvbihlKXtpZihlJiYhZS5sZW5ndGgpcmV0dXJuIGQoZSk7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3QpZChlW3RdKX0scD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10LnBhcmVudE5vZGU7bnVsbCE9PW47KXtpZihuPT09ZSlyZXR1cm4hMDtuPW4ucGFyZW50Tm9kZX1yZXR1cm4hMX0sbT1mdW5jdGlvbihlKXtlLnN0eWxlLmxlZnQ9Ii05OTk5cHgiLGUuc3R5bGUuZGlzcGxheT0iYmxvY2siO3ZhciB0LG49ZS5jbGllbnRIZWlnaHQ7cmV0dXJuIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb21wdXRlZFN0eWxlP3BhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZSkuZ2V0UHJvcGVydHlWYWx1ZSgicGFkZGluZy10b3AiKSwxMCk6cGFyc2VJbnQoZS5jdXJyZW50U3R5bGUucGFkZGluZyksZS5zdHlsZS5sZWZ0PSIiLGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsIi0iK3BhcnNlSW50KChuK3QpLzIpKyJweCJ9LHY9ZnVuY3Rpb24oZSx0KXtpZigrZS5zdHlsZS5vcGFjaXR5PDEpe3Q9dHx8MTYsZS5zdHlsZS5vcGFjaXR5PTAsZS5zdHlsZS5kaXNwbGF5PSJibG9jayI7dmFyIG49K25ldyBEYXRlLG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBlLnRvU3RyaW5nKCl9LHR9KGZ1bmN0aW9uKCl7ZS5zdHlsZS5vcGFjaXR5PStlLnN0eWxlLm9wYWNpdHkrKG5ldyBEYXRlLW4pLzEwMCxuPStuZXcgRGF0ZSwrZS5zdHlsZS5vcGFjaXR5PDEmJnNldFRpbWVvdXQobyx0KX0pO28oKX1lLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0seT1mdW5jdGlvbihlLHQpe3Q9dHx8MTYsZS5zdHlsZS5vcGFjaXR5PTE7dmFyIG49K25ldyBEYXRlLG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBlLnRvU3RyaW5nKCl9LHR9KGZ1bmN0aW9uKCl7ZS5zdHlsZS5vcGFjaXR5PStlLnN0eWxlLm9wYWNpdHktKG5ldyBEYXRlLW4pLzEwMCxuPStuZXcgRGF0ZSwrZS5zdHlsZS5vcGFjaXR5PjA/c2V0VGltZW91dChvLHQpOmUuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KTtvKCl9LGg9ZnVuY3Rpb24obil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE1vdXNlRXZlbnQpe3ZhciBvPW5ldyBNb3VzZUV2ZW50KCJjbGljayIse3ZpZXc6ZSxidWJibGVzOiExLGNhbmNlbGFibGU6ITB9KTtuLmRpc3BhdGNoRXZlbnQobyl9ZWxzZSBpZih0LmNyZWF0ZUV2ZW50KXt2YXIgYT10LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO2EuaW5pdEV2ZW50KCJjbGljayIsITEsITEpLG4uZGlzcGF0Y2hFdmVudChhKX1lbHNlIHQuY3JlYXRlRXZlbnRPYmplY3Q/bi5maXJlRXZlbnQoIm9uY2xpY2siKToiZnVuY3Rpb24iPT10eXBlb2Ygbi5vbmNsaWNrJiZuLm9uY2xpY2soKX0sYj1mdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5zdG9wUHJvcGFnYXRpb24/KHQuc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpKTplLmV2ZW50JiZlLmV2ZW50Lmhhc093blByb3BlcnR5KCJjYW5jZWxCdWJibGUiKSYmKGUuZXZlbnQuY2FuY2VsQnViYmxlPSEwKX07YS5oYXNDbGFzcz1yLGEuYWRkQ2xhc3M9cyxhLnJlbW92ZUNsYXNzPWwsYS5lc2NhcGVIdG1sPWksYS5fc2hvdz11LGEuc2hvdz1jLGEuX2hpZGU9ZCxhLmhpZGU9ZixhLmlzRGVzY2VuZGFudD1wLGEuZ2V0VG9wTWFyZ2luPW0sYS5mYWRlSW49dixhLmZhZGVPdXQ9eSxhLmZpcmVDbGljaz1oLGEuc3RvcEV2ZW50UHJvcGFnYXRpb249Yn0se31dLDU6W2Z1bmN0aW9uKHQsbyxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9dCgiLi9oYW5kbGUtZG9tIikscz10KCIuL2hhbmRsZS1zd2FsLWRvbSIpLGw9ZnVuY3Rpb24odCxvLGEpe3ZhciBsPXR8fGUuZXZlbnQsaT1sLmtleUNvZGV8fGwud2hpY2gsdT1hLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5jb25maXJtIiksYz1hLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5jYW5jZWwiKSxkPWEucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW3RhYmluZGV4XSIpO2lmKC0xIT09WzksMTMsMzIsMjddLmluZGV4T2YoaSkpe2Zvcih2YXIgZj1sLnRhcmdldHx8bC5zcmNFbGVtZW50LHA9LTEsbT0wO208ZC5sZW5ndGg7bSsrKWlmKGY9PT1kW21dKXtwPW07YnJlYWt9OT09PWk/KGY9LTE9PT1wP3U6cD09PWQubGVuZ3RoLTE/ZFswXTpkW3ArMV0sci5zdG9wRXZlbnRQcm9wYWdhdGlvbihsKSxmLmZvY3VzKCksby5jb25maXJtQnV0dG9uQ29sb3ImJnMuc2V0Rm9jdXNTdHlsZShmLG8uY29uZmlybUJ1dHRvbkNvbG9yKSk6MTM9PT1pPygiSU5QVVQiPT09Zi50YWdOYW1lJiYoZj11LHUuZm9jdXMoKSksZj0tMT09PXA/dTpuKToyNz09PWkmJm8uYWxsb3dFc2NhcGVLZXk9PT0hMD8oZj1jLHIuZmlyZUNsaWNrKGYsbCkpOmY9bn19O2FbImRlZmF1bHQiXT1sLG8uZXhwb3J0cz1hWyJkZWZhdWx0Il19LHsiLi9oYW5kbGUtZG9tIjo0LCIuL2hhbmRsZS1zd2FsLWRvbSI6Nn1dLDY6W2Z1bmN0aW9uKG4sbyxhKXt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzPW4oIi4vdXRpbHMiKSxsPW4oIi4vaGFuZGxlLWRvbSIpLGk9bigiLi9kZWZhdWx0LXBhcmFtcyIpLHU9cihpKSxjPW4oIi4vaW5qZWN0ZWQtaHRtbCIpLGQ9cihjKSxmPSIuc3dlZXQtYWxlcnQiLHA9Ii5zd2VldC1vdmVybGF5IixtPWZ1bmN0aW9uKCl7dmFyIGU9dC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoZS5pbm5lckhUTUw9ZFsiZGVmYXVsdCJdO2UuZmlyc3RDaGlsZDspdC5ib2R5LmFwcGVuZENoaWxkKGUuZmlyc3RDaGlsZCl9LHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBlLnRvU3RyaW5nKCl9LHR9KGZ1bmN0aW9uKCl7dmFyIGU9dC5xdWVyeVNlbGVjdG9yKGYpO3JldHVybiBlfHwobSgpLGU9digpKSxlfSkseT1mdW5jdGlvbigpe3ZhciBlPXYoKTtyZXR1cm4gZT9lLnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik6dm9pZCAwfSxoPWZ1bmN0aW9uKCl7cmV0dXJuIHQucXVlcnlTZWxlY3RvcihwKX0sYj1mdW5jdGlvbihlLHQpe3ZhciBuPXMuaGV4VG9SZ2IodCk7ZS5zdHlsZS5ib3hTaGFkb3c9IjAgMCAycHggcmdiYSgiK24rIiwgMC44KSwgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSkifSxnPWZ1bmN0aW9uKG4pe3ZhciBvPXYoKTtsLmZhZGVJbihoKCksMTApLGwuc2hvdyhvKSxsLmFkZENsYXNzKG8sInNob3dTd2VldEFsZXJ0IiksbC5yZW1vdmVDbGFzcyhvLCJoaWRlU3dlZXRBbGVydCIpLGUucHJldmlvdXNBY3RpdmVFbGVtZW50PXQuYWN0aXZlRWxlbWVudDt2YXIgYT1vLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5jb25maXJtIik7YS5mb2N1cygpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLmFkZENsYXNzKG8sInZpc2libGUiKX0sNTAwKTt2YXIgcj1vLmdldEF0dHJpYnV0ZSgiZGF0YS10aW1lciIpO2lmKCJudWxsIiE9PXImJiIiIT09cil7dmFyIHM9bjtvLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPShzfHxudWxsKSYmInRydWUiPT09by5nZXRBdHRyaWJ1dGUoImRhdGEtaGFzLWRvbmUtZnVuY3Rpb24iKTtlP3MobnVsbCk6c3dlZXRBbGVydC5jbG9zZSgpfSxyKX19LHc9ZnVuY3Rpb24oKXt2YXIgZT12KCksdD15KCk7bC5yZW1vdmVDbGFzcyhlLCJzaG93LWlucHV0IiksdC52YWx1ZT11WyJkZWZhdWx0Il0uaW5wdXRWYWx1ZSx0LnNldEF0dHJpYnV0ZSgidHlwZSIsdVsiZGVmYXVsdCJdLmlucHV0VHlwZSksdC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIix1WyJkZWZhdWx0Il0uaW5wdXRQbGFjZWhvbGRlciksQygpfSxDPWZ1bmN0aW9uKGUpe2lmKGUmJjEzPT09ZS5rZXlDb2RlKXJldHVybiExO3ZhciB0PXYoKSxuPXQucXVlcnlTZWxlY3RvcigiLnNhLWlucHV0LWVycm9yIik7bC5yZW1vdmVDbGFzcyhuLCJzaG93Iik7dmFyIG89dC5xdWVyeVNlbGVjdG9yKCIuc2EtZXJyb3ItY29udGFpbmVyIik7bC5yZW1vdmVDbGFzcyhvLCJzaG93Iil9LFM9ZnVuY3Rpb24oKXt2YXIgZT12KCk7ZS5zdHlsZS5tYXJnaW5Ub3A9bC5nZXRUb3BNYXJnaW4odigpKX07YS5zd2VldEFsZXJ0SW5pdGlhbGl6ZT1tLGEuZ2V0TW9kYWw9dixhLmdldE92ZXJsYXk9aCxhLmdldElucHV0PXksYS5zZXRGb2N1c1N0eWxlPWIsYS5vcGVuTW9kYWw9ZyxhLnJlc2V0SW5wdXQ9dyxhLnJlc2V0SW5wdXRFcnJvcj1DLGEuZml4VmVydGljYWxQb3NpdGlvbj1TfSx7Ii4vZGVmYXVsdC1wYXJhbXMiOjIsIi4vaGFuZGxlLWRvbSI6NCwiLi9pbmplY3RlZC1odG1sIjo3LCIuL3V0aWxzIjo5fV0sNzpbZnVuY3Rpb24oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz0nPGRpdiBjbGFzcz0ic3dlZXQtb3ZlcmxheSIgdGFiSW5kZXg9Ii0xIj48L2Rpdj48ZGl2IGNsYXNzPSJzd2VldC1hbGVydCI+PGRpdiBjbGFzcz0ic2EtaWNvbiBzYS1lcnJvciI+XG4gICAgICA8c3BhbiBjbGFzcz0ic2EteC1tYXJrIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9InNhLWxpbmUgc2EtbGVmdCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0ic2EtbGluZSBzYS1yaWdodCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PjxkaXYgY2xhc3M9InNhLWljb24gc2Etd2FybmluZyI+XG4gICAgICA8c3BhbiBjbGFzcz0ic2EtYm9keSI+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9InNhLWRvdCI+PC9zcGFuPlxuICAgIDwvZGl2PjxkaXYgY2xhc3M9InNhLWljb24gc2EtaW5mbyI+PC9kaXY+PGRpdiBjbGFzcz0ic2EtaWNvbiBzYS1zdWNjZXNzIj5cbiAgICAgIDxzcGFuIGNsYXNzPSJzYS1saW5lIHNhLXRpcCI+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9InNhLWxpbmUgc2EtbG9uZyI+PC9zcGFuPlxuXG4gICAgICA8ZGl2IGNsYXNzPSJzYS1wbGFjZWhvbGRlciI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJzYS1maXgiPjwvZGl2PlxuICAgIDwvZGl2PjxkaXYgY2xhc3M9InNhLWljb24gc2EtY3VzdG9tIj48L2Rpdj48aDI+VGl0bGU8L2gyPlxuICAgIDxwPlRleHQ8L3A+XG4gICAgPGZpZWxkc2V0PlxuICAgICAgPGlucHV0IHR5cGU9InRleHQiIHRhYkluZGV4PSIzIiAvPlxuICAgICAgPGRpdiBjbGFzcz0ic2EtaW5wdXQtZXJyb3IiPjwvZGl2PlxuICAgIDwvZmllbGRzZXQ+PGRpdiBjbGFzcz0ic2EtZXJyb3ItY29udGFpbmVyIj5cbiAgICAgIDxkaXYgY2xhc3M9Imljb24iPiE8L2Rpdj5cbiAgICAgIDxwPk5vdCB2YWxpZCE8L3A+XG4gICAgPC9kaXY+PGRpdiBjbGFzcz0ic2EtYnV0dG9uLWNvbnRhaW5lciI+XG4gICAgICA8YnV0dG9uIGNsYXNzPSJjYW5jZWwiIHRhYkluZGV4PSIyIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9InNhLWNvbmZpcm0tYnV0dG9uLWNvbnRhaW5lciI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9ImNvbmZpcm0iIHRhYkluZGV4PSIxIj5PSzwvYnV0dG9uPjxkaXYgY2xhc3M9ImxhLWJhbGwtZmFsbCI+XG4gICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+PC9kaXY+JztuWyJkZWZhdWx0Il09byx0LmV4cG9ydHM9blsiZGVmYXVsdCJdfSx7fV0sODpbZnVuY3Rpb24oZSx0LG8pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYT1lKCIuL3V0aWxzIikscj1lKCIuL2hhbmRsZS1zd2FsLWRvbSIpLHM9ZSgiLi9oYW5kbGUtZG9tIiksbD1bImVycm9yIiwid2FybmluZyIsImluZm8iLCJzdWNjZXNzIiwiaW5wdXQiLCJwcm9tcHQiXSxpPWZ1bmN0aW9uKGUpe3ZhciB0PXIuZ2V0TW9kYWwoKSxvPXQucXVlcnlTZWxlY3RvcigiaDIiKSxpPXQucXVlcnlTZWxlY3RvcigicCIpLHU9dC5xdWVyeVNlbGVjdG9yKCJidXR0b24uY2FuY2VsIiksYz10LnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5jb25maXJtIik7aWYoby5pbm5lckhUTUw9ZS5odG1sP2UudGl0bGU6cy5lc2NhcGVIdG1sKGUudGl0bGUpLnNwbGl0KCJcbiIpLmpvaW4oIjxicj4iKSxpLmlubmVySFRNTD1lLmh0bWw/ZS50ZXh0OnMuZXNjYXBlSHRtbChlLnRleHR8fCIiKS5zcGxpdCgiXG4iKS5qb2luKCI8YnI+IiksZS50ZXh0JiZzLnNob3coaSksZS5jdXN0b21DbGFzcylzLmFkZENsYXNzKHQsZS5jdXN0b21DbGFzcyksdC5zZXRBdHRyaWJ1dGUoImRhdGEtY3VzdG9tLWNsYXNzIixlLmN1c3RvbUNsYXNzKTtlbHNle3ZhciBkPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWN1c3RvbS1jbGFzcyIpO3MucmVtb3ZlQ2xhc3ModCxkKSx0LnNldEF0dHJpYnV0ZSgiZGF0YS1jdXN0b20tY2xhc3MiLCIiKX1pZihzLmhpZGUodC5xdWVyeVNlbGVjdG9yQWxsKCIuc2EtaWNvbiIpKSxlLnR5cGUmJiFhLmlzSUU4KCkpe3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBvPSExLGE9MDthPGwubGVuZ3RoO2ErKylpZihlLnR5cGU9PT1sW2FdKXtvPSEwO2JyZWFrfWlmKCFvKXJldHVybiBsb2dTdHIoIlVua25vd24gYWxlcnQgdHlwZTogIitlLnR5cGUpLHt2OiExfTt2YXIgaT1bInN1Y2Nlc3MiLCJlcnJvciIsIndhcm5pbmciLCJpbmZvIl0sdT1uOy0xIT09aS5pbmRleE9mKGUudHlwZSkmJih1PXQucXVlcnlTZWxlY3RvcigiLnNhLWljb24uc2EtIitlLnR5cGUpLHMuc2hvdyh1KSk7dmFyIGM9ci5nZXRJbnB1dCgpO3N3aXRjaChlLnR5cGUpe2Nhc2Uic3VjY2VzcyI6cy5hZGRDbGFzcyh1LCJhbmltYXRlIikscy5hZGRDbGFzcyh1LnF1ZXJ5U2VsZWN0b3IoIi5zYS10aXAiKSwiYW5pbWF0ZVN1Y2Nlc3NUaXAiKSxzLmFkZENsYXNzKHUucXVlcnlTZWxlY3RvcigiLnNhLWxvbmciKSwiYW5pbWF0ZVN1Y2Nlc3NMb25nIik7YnJlYWs7Y2FzZSJlcnJvciI6cy5hZGRDbGFzcyh1LCJhbmltYXRlRXJyb3JJY29uIikscy5hZGRDbGFzcyh1LnF1ZXJ5U2VsZWN0b3IoIi5zYS14LW1hcmsiKSwiYW5pbWF0ZVhNYXJrIik7YnJlYWs7Y2FzZSJ3YXJuaW5nIjpzLmFkZENsYXNzKHUsInB1bHNlV2FybmluZyIpLHMuYWRkQ2xhc3ModS5xdWVyeVNlbGVjdG9yKCIuc2EtYm9keSIpLCJwdWxzZVdhcm5pbmdJbnMiKSxzLmFkZENsYXNzKHUucXVlcnlTZWxlY3RvcigiLnNhLWRvdCIpLCJwdWxzZVdhcm5pbmdJbnMiKTticmVhaztjYXNlImlucHV0IjpjYXNlInByb21wdCI6Yy5zZXRBdHRyaWJ1dGUoInR5cGUiLGUuaW5wdXRUeXBlKSxjLnZhbHVlPWUuaW5wdXRWYWx1ZSxjLnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLGUuaW5wdXRQbGFjZWhvbGRlcikscy5hZGRDbGFzcyh0LCJzaG93LWlucHV0Iiksc2V0VGltZW91dChmdW5jdGlvbigpe2MuZm9jdXMoKSxjLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixzd2FsLnJlc2V0SW5wdXRFcnJvcil9LDQwMCl9fSgpO2lmKCJvYmplY3QiPT10eXBlb2YgZilyZXR1cm4gZi52fWlmKGUuaW1hZ2VVcmwpe3ZhciBwPXQucXVlcnlTZWxlY3RvcigiLnNhLWljb24uc2EtY3VzdG9tIik7cC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9InVybCgiK2UuaW1hZ2VVcmwrIikiLHMuc2hvdyhwKTt2YXIgbT04MCx2PTgwO2lmKGUuaW1hZ2VTaXplKXt2YXIgeT1lLmltYWdlU2l6ZS50b1N0cmluZygpLnNwbGl0KCJ4IiksaD15WzBdLGI9eVsxXTtoJiZiPyhtPWgsdj1iKTpsb2dTdHIoIlBhcmFtZXRlciBpbWFnZVNpemUgZXhwZWN0cyB2YWx1ZSB3aXRoIGZvcm1hdCBXSURUSHhIRUlHSFQsIGdvdCAiK2UuaW1hZ2VTaXplKX1wLnNldEF0dHJpYnV0ZSgic3R5bGUiLHAuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKyJ3aWR0aDoiK20rInB4OyBoZWlnaHQ6Iit2KyJweCIpfXQuc2V0QXR0cmlidXRlKCJkYXRhLWhhcy1jYW5jZWwtYnV0dG9uIixlLnNob3dDYW5jZWxCdXR0b24pLGUuc2hvd0NhbmNlbEJ1dHRvbj91LnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6cy5oaWRlKHUpLHQuc2V0QXR0cmlidXRlKCJkYXRhLWhhcy1jb25maXJtLWJ1dHRvbiIsZS5zaG93Q29uZmlybUJ1dHRvbiksZS5zaG93Q29uZmlybUJ1dHRvbj9jLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6cy5oaWRlKGMpLGUuY2FuY2VsQnV0dG9uVGV4dCYmKHUuaW5uZXJIVE1MPXMuZXNjYXBlSHRtbChlLmNhbmNlbEJ1dHRvblRleHQpKSxlLmNvbmZpcm1CdXR0b25UZXh0JiYoYy5pbm5lckhUTUw9cy5lc2NhcGVIdG1sKGUuY29uZmlybUJ1dHRvblRleHQpKSxlLmNvbmZpcm1CdXR0b25Db2xvciYmKGMuc3R5bGUuYmFja2dyb3VuZENvbG9yPWUuY29uZmlybUJ1dHRvbkNvbG9yLGMuc3R5bGUuYm9yZGVyTGVmdENvbG9yPWUuY29uZmlybUxvYWRpbmdCdXR0b25Db2xvcixjLnN0eWxlLmJvcmRlclJpZ2h0Q29sb3I9ZS5jb25maXJtTG9hZGluZ0J1dHRvbkNvbG9yLHIuc2V0Rm9jdXNTdHlsZShjLGUuY29uZmlybUJ1dHRvbkNvbG9yKSksdC5zZXRBdHRyaWJ1dGUoImRhdGEtYWxsb3ctb3V0c2lkZS1jbGljayIsZS5hbGxvd091dHNpZGVDbGljayk7dmFyIGc9ZS5kb25lRnVuY3Rpb24/ITA6ITE7dC5zZXRBdHRyaWJ1dGUoImRhdGEtaGFzLWRvbmUtZnVuY3Rpb24iLGcpLGUuYW5pbWF0aW9uPyJzdHJpbmciPT10eXBlb2YgZS5hbmltYXRpb24/dC5zZXRBdHRyaWJ1dGUoImRhdGEtYW5pbWF0aW9uIixlLmFuaW1hdGlvbik6dC5zZXRBdHRyaWJ1dGUoImRhdGEtYW5pbWF0aW9uIiwicG9wIik6dC5zZXRBdHRyaWJ1dGUoImRhdGEtYW5pbWF0aW9uIiwibm9uZSIpLHQuc2V0QXR0cmlidXRlKCJkYXRhLXRpbWVyIixlLnRpbWVyKX07b1siZGVmYXVsdCJdPWksdC5leHBvcnRzPW9bImRlZmF1bHQiXX0seyIuL2hhbmRsZS1kb20iOjQsIi4vaGFuZGxlLXN3YWwtZG9tIjo2LCIuL3V0aWxzIjo5fV0sOTpbZnVuY3Rpb24odCxuLG8pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihlW25dPXRbbl0pO3JldHVybiBlfSxyPWZ1bmN0aW9uKGUpe3ZhciB0PS9eIz8oW2EtZlxkXXsyfSkoW2EtZlxkXXsyfSkoW2EtZlxkXXsyfSkkL2kuZXhlYyhlKTtyZXR1cm4gdD9wYXJzZUludCh0WzFdLDE2KSsiLCAiK3BhcnNlSW50KHRbMl0sMTYpKyIsICIrcGFyc2VJbnQodFszXSwxNik6bnVsbH0scz1mdW5jdGlvbigpe3JldHVybiBlLmF0dGFjaEV2ZW50JiYhZS5hZGRFdmVudExpc3RlbmVyfSxsPWZ1bmN0aW9uKHQpe2UuY29uc29sZSYmZS5jb25zb2xlLmxvZygiU3dlZXRBbGVydDogIit0KX0saT1mdW5jdGlvbihlLHQpe2U9U3RyaW5nKGUpLnJlcGxhY2UoL1teMC05YS1mXS9naSwiIiksZS5sZW5ndGg8NiYmKGU9ZVswXStlWzBdK2VbMV0rZVsxXStlWzJdK2VbMl0pLHQ9dHx8MDt2YXIgbixvLGE9IiMiO2ZvcihvPTA7Mz5vO28rKyluPXBhcnNlSW50KGUuc3Vic3RyKDIqbywyKSwxNiksbj1NYXRoLnJvdW5kKE1hdGgubWluKE1hdGgubWF4KDAsbituKnQpLDI1NSkpLnRvU3RyaW5nKDE2KSxhKz0oIjAwIituKS5zdWJzdHIobi5sZW5ndGgpO3JldHVybiBhfTtvLmV4dGVuZD1hLG8uaGV4VG9SZ2I9cixvLmlzSUU4PXMsby5sb2dTdHI9bCxvLmNvbG9yTHVtaW5hbmNlPWl9LHt9XX0se30sWzFdKSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShmdW5jdGlvbigpe3JldHVybiBzd2VldEFsZXJ0fSk6InVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9c3dlZXRBbGVydCl9KHdpbmRvdyxkb2N1bWVudCk7"}},"time_used":199,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":199,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/punksmy.png","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.373Z","timestamp":1785150870373,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/punksmy.png HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\nlast-modified: Tue, 02 Apr 2024 19:06:50 GMT\r\npriority: u=5,i\r\netag: \"660c574a-48eb\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=OD3EsGoVz7hdrQ%2FjA5nR7K9WFLKogZWCvWuBQgdRB%2FVY%2FX8BvDunJtaL9Q0WzO8MGej1vbQ0QkOfreh4Hs3M2v4Z4iHWMDWvffzO%2FoKZz12Dilhce8ZLRocQaA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe556a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 18667\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"]}],"data":{"size":18667,"size_decoded":19446,"mime_type":"image/png","magic":"PNG image data, 936 x 109, 8-bit/color RGBA, non-interlaced","md5":"32dd6073b9f3c40fc6b592c947afa0cd","sha1":"e1647dd3f33dc6a3a366c74d9970ee69f61f50aa","sha256":"422cf8c80d4c9bdc76ce172bcfa4023636fe8db29cec1431c60cd01f990d2405","sha512":"e262c7113930a3c36d41078afcb5cef04f0f89ac3b85b58cbdfa226d0146de0a7ae1582147e9ac14946a746e2ffc46199d58e1290bfe549c229aa18242b5c0be","ssdeep":"384:anlDFtzeD0zI1HiuIWPLKOUzlAUKjKp8zprsRf4bI7svvM14ZEl8R1gkGi:alHekI1HiunLKVufjt1rs2tvG4pBR","tlshash":"8582d117d2a0de30621a6858fbb89367cb37b7649e60a5d2bde66c05dc630f1c8051df","first_seen":"2025-12-16T06:43:19.351488Z","last_seen":"2026-07-27T11:25:33.532279Z","times_seen":16,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAA6gAAABtCAYAAACsjEyyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGOWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuZjM1NGVmYzcwLCAyMDIzLzExLzA5LTEyOjA1OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuNCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDQtMDNUMDI6NDA6NDQrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI0LTA0LTAzVDAyOjQyOjA5KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0LTA0LTAzVDAyOjQyOjA5KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMDRiODJhYS03YmIzLTQ5MmItYmZlNS0wY2E4ZTQ4ZDVlZmIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDowY2ZhNTZjZS0zYTY4LTI2NGUtYjRjNC04NTUzMzc1ZTA5NmIiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MWFkMmUyZS0zZmQ4LTRmZmQtYmNkZi1hNDQyN2Q2MTkzYWIiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxYWQyZTJlLTNmZDgtNGZmZC1iY2RmLWE0NDI3ZDYxOTNhYiIgc3RFdnQ6d2hlbj0iMjAyNC0wNC0wM1QwMjo0MDo0NCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjQgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDA0YjgyYWEtN2JiMy00OTJiLWJmZTUtMGNhOGU0OGQ1ZWZiIiBzdEV2dDp3aGVuPSIyMDI0LTA0LTAzVDAyOjQyOjA5KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuNCAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5AUOKOAABCWElEQVR42u2deahVZffHP+fe66w555DZtXytbDAbbe6tLBrfjAajCUuyeA2Lil4xKpLCMIrCUAxFCkWMUMQIQ0QJUUSSCBElQiREERERERHx98da+3f2PfcMez97OHvvs77wkHa9ez/7Gdf4XWAwGAwGQ7wYDrTZMBgMBoPBYDAYDAaDoRkoAdcD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"}},"time_used":195,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":195,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0038.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.377Z","timestamp":1785150870377,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0038.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-134\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\nage: 6919\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Fw8WAexZwio4vD9YDQIZ%2BWQ5nZMHy80US9QxLNHgqnftUuodrxeWs0061HixYaCjllq79iq9W4D0O4j7Spj6ldk%2Bkkg95VMLy%2B5%2B3FPDU1YhFA4%2ByBqkdZGEaw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe856a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 308\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"]}],"data":{"size":308,"size_decoded":1097,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"55cd1239ded8434defab25d823938401","sha1":"9411b3916ac4abae641cc15f6f429769f611bc5d","sha256":"a82b5abbf754d4ae0cb0a0eba85b3631907d562beadce5046a9b371b776aff06","sha512":"be3af690eea94a82bcf7f1b9cc90bd1a968826345cff0e069ff45a643936003d82755c84edfe2d3ffe49ebc67245fef52eb5e941b7ea6fa98449d18758bf7ed6","ssdeep":"","tlshash":"b4e07d12e0da8542c3901a3910578c2da4ad43ba4a4a9b51064b4462278fb685e0cb2c","first_seen":"2026-07-27T09:19:46.701165Z","last_seen":"2026-07-27T11:15:13.74734Z","times_seen":2,"resource_available":false,"data":"R0lGODlhIAAgALMAAAAAABoaGiYmJjqih0FBQUk3HWlPKXb82YNPAK1rAMqGctCeed+6ngAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAAThEMhJq704652F/+DHWUJgEmiqCuNUnmqMsuMLy2tt7nhMbzZej/ADho6hlkvYK9aQSCVAUCgYrgKGdqt1aqjVqyHL3XpJn2p4bO4yzhQwAqxmu99vYHWuVpMVXApwEnR8fmRlXV99hgUCC4lmi36Gj5BdHoqTjoQfl2WDLn1FlqAtdKQLqiBKqHGqC6EXrhIIc7ACtranHhMICQkIuL/ACFJTxMGwqslzpwPECAMHB9PV0QeyhAfYurbcxdk11NHA5tHT2lPWtsHe7gLU6vHZ4AjU0MH14hzxA/G62H3z5yUCADs="}},"time_used":9,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/sweet-alert/sweetalert.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.313Z","timestamp":1785150870313,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/sweet-alert/sweetalert.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-595f\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=%2F3Pm8Ludl%2BoBkbkR3ZnCHlAy0T4esmR7SbNl6nfREJF%2FLxtp72bwvOm0lGvLpWnT3KEB3Wv4MEaNdx6qwE69ARH5yaAga%2B490tL6VNWTSgBrol0rlvt9c63YWQ%3D%3D\"}]}\r\ncf-ray: a21b388b7bc956a2-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"]}],"data":{"size":22879,"size_decoded":4541,"mime_type":"text/css","magic":"ASCII text","md5":"13c04b2e70f8bfc13d0254f5f9c4e8bc","sha1":"c52cc95e29f0f2ff51f779505dc28ca82c9ea771","sha256":"711b4b42f0aa30a2b8bb62aa898ffc1678a6a3f2a8eca4f48bb17830aa5e9531","sha512":"2753d8a23fb767d6e799c0848debaa35d8f2db1e1857fd7640a52a7e96eb3549b3f653f3acad2cef5f08a5acdd82a5af069ed157ed6d761abe57ebadd642f04a","ssdeep":"384:MrFKaS3yF8FkfZ6vFyFiFt2FFF01GF7xGxTxGx5wdD3qX1YtiemnEzpazAP:MrFKaS3yeFkR6vFyFiFgFFFhxGxTxGxO","tlshash":"65a232eb1ee31284a727874553de4b2827384043a81becad77cd119ecf85eec21da756","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.558768Z","times_seen":18,"resource_available":false,"data":"Ym9keS5zdG9wLXNjcm9sbGluZyB7CiAgaGVpZ2h0OiAxMDAlOwogIG92ZXJmbG93OiBoaWRkZW47IH0KCi5zd2VldC1vdmVybGF5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICAvKiBJRTggKi8KICAtbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9NDApIjsKICAvKiBJRTggKi8KICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgcmlnaHQ6IDA7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBkaXNwbGF5OiBub25lOwogIHotaW5kZXg6IDEwMDAwOyB9Cgouc3dlZXQtYWxlcnQgewogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsKICB3aWR0aDogNDc4cHg7CiAgcGFkZGluZzogMTdweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgbWFyZ2luLWxlZnQ6IC0yNTZweDsKICBtYXJnaW4tdG9wOiAtMjAwcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBkaXNwbGF5OiBub25lOwogIHotaW5kZXg6IDk5OTk5OyB9CiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNTQwcHgpIHsKICAgIC5zd2VldC1hbGVydCB7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgICBsZWZ0OiAxNXB4OwogICAgICByaWdodDogMTVweDsgfSB9CiAgLnN3ZWV0LWFsZXJ0IGgyIHsKICAgIGNvbG9yOiAjNTc1NzU3OwogICAgZm9udC1zaXplOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luOiAyNXB4IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICBkaXNwbGF5OiBibG9jazsgfQogIC5zd2VldC1hbGVydCBwIHsKICAgIGNvbG9yOiAjNzk3OTc5OwogICAgZm9udC1zaXplOiAxNnB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgICBmbG9hdDogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBsaW5lLWhlaWdodDogbm9ybWFsOyB9CiAgLnN3ZWV0LWFsZXJ0IGZpZWxkc2V0IHsKICAgIGJvcmRlcjogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfQogIC5zd2VldC1hbGVydCAuc2EtZXJyb3ItY29udGFpbmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmMWYxZjE7CiAgICBtYXJnaW4tbGVmdDogLTE3cHg7CiAgICBtYXJnaW4tcmlnaHQ6IC0xN3B4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDAgMTBweDsKICAgIG1heC1oZWlnaHQ6IDA7CiAgICB3ZWJraXQtdHJhbnNpdGlvbjogcGFkZGluZyAwLjE1cywgbWF4LWhlaWdodCAwLjE1czsKICAgIHRyYW5zaXRpb246IHBhZGRpbmcgMC4xNXMsIG1heC1oZWlnaHQgMC4xNXM7IH0KICAgIC5zd2VldC1hbGVydCAuc2EtZXJyb3ItY29udGFpbmVyLnNob3cgewogICAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICAgIG1heC1oZWlnaHQ6IDEwMHB4OwogICAgICB3ZWJraXQtdHJhbnNpdGlvbjogcGFkZGluZyAwLjJzLCBtYXgtaGVpZ2h0IDAuMnM7CiAgICAgIHRyYW5zaXRpb246IHBhZGRpbmcgMC4yNXMsIG1heC1oZWlnaHQgMC4yNXM7IH0KICAgIC5zd2VldC1hbGVydCAuc2EtZXJyb3ItY29udGFpbmVyIC5pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB3aWR0aDogMjRweDsKICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYTdkN2Q7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7IH0KICAgIC5zd2VldC1hbGVydCAuc2EtZXJyb3ItY29udGFpbmVyIHAgewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KICAuc3dlZXQtYWxlcnQgLnNhLWlucHV0LWVycm9yIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMjlweDsKICAgIHJpZ2h0OiAyNnB4OwogICAgd2lkdGg6IDIwcHg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4xczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjFzOyB9CiAgICAuc3dlZXQtYWxlcnQgLnNhLWlucHV0LWVycm9yOjpiZWZvcmUsIC5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3I6OmFmdGVyIHsKICAgICAgY29udGVudDogIiI7CiAgICAgIHdpZHRoOiAyMHB4OwogICAgICBoZWlnaHQ6IDZweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwNmU1NzsKICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogNTAlOwogICAgICBtYXJnaW4tdG9wOiAtNHB4OwogICAgICBsZWZ0OiA1MCU7CiAgICAgIG1hcmdpbi1sZWZ0OiAtOXB4OyB9CiAgICAuc3dlZXQtYWxlcnQgLnNhLWlucHV0LWVycm9yOjpiZWZvcmUgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0KICAgIC5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3I6OmFmdGVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfQogICAgLnN3ZWV0LWFsZXJ0IC5zYS1pbnB1dC1lcnJvci5zaG93IHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgLnN3ZWV0LWFsZXJ0IGlucHV0IHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkN2Q3ZDc7CiAgICBoZWlnaHQ6IDQzcHg7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTdweDsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGJveC1zaGFkb3c6IGluc2V0IDBweCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICBwYWRkaW5nOiAwIDEycHg7CiAgICBkaXNwbGF5OiBub25lOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOyB9CiAgICAuc3dlZXQtYWxlcnQgaW5wdXQ6Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjYzRlNmY1OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjYjRkYmVkOyB9CiAgICAgIC5zd2VldC1hbGVydCBpbnB1dDpmb2N1czo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIDAuMDNzIGVhc2U7CiAgICAgICAgb3BhY2l0eTogMC41OyB9CiAgICAgIC5zd2VldC1hbGVydCBpbnB1dDpmb2N1czotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAwLjAzcyBlYXNlOwogICAgICAgIG9wYWNpdHk6IDAuNTsgfQogICAgICAuc3dlZXQtYWxlcnQgaW5wdXQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAwLjAzcyBlYXNlOwogICAgICAgIG9wYWNpdHk6IDAuNTsgfQogICAgLnN3ZWV0LWFsZXJ0IGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgY29sb3I6ICNiZGJkYmQ7IH0KICAgIC5zd2VldC1hbGVydCBpbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICBjb2xvcjogI2JkYmRiZDsgfQogICAgLnN3ZWV0LWFsZXJ0IGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgY29sb3I6ICNiZGJkYmQ7IH0KICAuc3dlZXQtYWxlcnQuc2hvdy1pbnB1dCBpbnB1dCB7CiAgICBkaXNwbGF5OiBibG9jazsgfQogIC5zd2VldC1hbGVydCAuc2EtY29uZmlybS1idXR0b24tY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfQogIC5zd2VldC1hbGVydCAubGEtYmFsbC1mYWxsIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IDUwJTsKICAgIHRvcDogNTAlOwogICAgbWFyZ2luLWxlZnQ6IC0yN3B4OwogICAgbWFyZ2luLXRvcDogNHB4OwogICAgb3BhY2l0eTogMDsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfQogIC5zd2VldC1hbGVydCBidXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogIzhDRDRGNTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICBmb250LXNpemU6IDE3cHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBwYWRkaW5nOiAxMHB4IDMycHg7CiAgICBtYXJnaW46IDI2cHggNXB4IDAgNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOyB9CiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uOmZvY3VzIHsKICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgYm94LXNoYWRvdzogMCAwIDJweCByZ2JhKDEyOCwgMTc5LCAyMzUsIDAuNSksIGluc2V0IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOyB9CiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzdlY2ZmNDsgfQogICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbjphY3RpdmUgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWRjMmYxOyB9CiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uLmNhbmNlbCB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNDMUMxQzE7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jYW5jZWw6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiOWI5Yjk7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jYW5jZWw6YWN0aXZlIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThhOGE4OyB9CiAgICAgIC5zd2VldC1hbGVydCBidXR0b24uY2FuY2VsOmZvY3VzIHsKICAgICAgICBib3gtc2hhZG93OiByZ2JhKDE5NywgMjA1LCAyMTEsIDAuOCkgMHB4IDBweCAycHgsIHJnYmEoMCwgMCwgMCwgMC4wNDcwNTg4KSAwcHggMHB4IDBweCAxcHggaW5zZXQgIWltcG9ydGFudDsgfQogICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbltkaXNhYmxlZF0gewogICAgICBvcGFjaXR5OiAuNjsKICAgICAgY3Vyc29yOiBkZWZhdWx0OyB9CiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uLmNvbmZpcm1bZGlzYWJsZWRdIHsKICAgICAgY29sb3I6IHRyYW5zcGFyZW50OyB9CiAgICAgIC5zd2VldC1hbGVydCBidXR0b24uY29uZmlybVtkaXNhYmxlZF0gfiAubGEtYmFsbC1mYWxsIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMHM7IH0KICAgIC5zd2VldC1hbGVydCBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIgewogICAgICBib3JkZXI6IDA7IH0KICAuc3dlZXQtYWxlcnRbZGF0YS1oYXMtY2FuY2VsLWJ1dHRvbj1mYWxzZV0gYnV0dG9uIHsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfQogIC5zd2VldC1hbGVydFtkYXRhLWhhcy1jb25maXJtLWJ1dHRvbj1mYWxzZV1bZGF0YS1oYXMtY2FuY2VsLWJ1dHRvbj1mYWxzZV0gewogICAgcGFkZGluZy1ib3R0b206IDQwcHg7IH0KICAuc3dlZXQtYWxlcnQgLnNhLWljb24gewogICAgd2lkdGg6IDgwcHg7CiAgICBoZWlnaHQ6IDgwcHg7CiAgICBib3JkZXI6IDRweCBzb2xpZCBncmF5OwogICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0MHB4OwogICAgYm9yZGVyLXJhZGl1czogNDBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG1hcmdpbjogMjBweCBhdXRvOwogICAgcGFkZGluZzogMDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB9CiAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgewogICAgICBib3JkZXItY29sb3I6ICNGMjc0NzQ7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWVycm9yIC5zYS14LW1hcmsgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsgfQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgLnNhLWxpbmUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDVweDsKICAgICAgICB3aWR0aDogNDdweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjI3NDc0OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRvcDogMzdweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7IH0KICAgICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgLnNhLWxpbmUuc2EtbGVmdCB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgICAgICAgIGxlZnQ6IDE3cHg7IH0KICAgICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgLnNhLWxpbmUuc2EtcmlnaHQgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgICAgICAgIHJpZ2h0OiAxNnB4OyB9CiAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etd2FybmluZyB7CiAgICAgIGJvcmRlci1jb2xvcjogI0Y4QkI4NjsgfQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etd2FybmluZyAuc2EtYm9keSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgaGVpZ2h0OiA0N3B4OwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0b3A6IDEwcHg7CiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGOEJCODY7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXdhcm5pbmcgLnNhLWRvdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiA3cHg7CiAgICAgICAgaGVpZ2h0OiA3cHg7CiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtM3B4OwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICBib3R0b206IDEwcHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4QkI4NjsgfQogICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWluZm8gewogICAgICBib3JkZXItY29sb3I6ICNDOURBRTE7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWluZm86OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgaGVpZ2h0OiAyOXB4OwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICBib3R0b206IDE3cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNDOURBRTE7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWluZm86OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2lkdGg6IDdweDsKICAgICAgICBoZWlnaHQ6IDdweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0zcHg7CiAgICAgICAgdG9wOiAxOXB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNDOURBRTE7IH0KICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzIHsKICAgICAgYm9yZGVyLWNvbG9yOiAjQTVEQzg2OyB9CiAgICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzOjpiZWZvcmUsIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICBoZWlnaHQ6IDEyMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2Vzczo6YmVmb3JlIHsKICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEyMHB4IDAgMCAxMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMjBweCAwIDAgMTIwcHg7CiAgICAgICAgdG9wOiAtN3B4OwogICAgICAgIGxlZnQ6IC0zM3B4OwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNjBweCA2MHB4OwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDYwcHggNjBweDsgfQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2Vzczo6YWZ0ZXIgewogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAxMjBweCAxMjBweCAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMTIwcHggMTIwcHggMDsKICAgICAgICB0b3A6IC0xMXB4OwogICAgICAgIGxlZnQ6IDMwcHg7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwcHggNjBweDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwcHggNjBweDsgfQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtcGxhY2Vob2xkZXIgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgIGhlaWdodDogODBweDsKICAgICAgICBib3JkZXI6IDRweCBzb2xpZCByZ2JhKDE2NSwgMjIwLCAxMzQsIDAuMik7CiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAtNHB4OwogICAgICAgIHRvcDogLTRweDsKICAgICAgICB6LWluZGV4OiAyOyB9CiAgICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzIC5zYS1maXggewogICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgaGVpZ2h0OiA5MHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiAyOHB4OwogICAgICAgIHRvcDogOHB4OwogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUgewogICAgICAgIGhlaWdodDogNXB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNBNURDODY7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiAyOyB9CiAgICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUuc2EtdGlwIHsKICAgICAgICAgIHdpZHRoOiAyNXB4OwogICAgICAgICAgbGVmdDogMTRweDsKICAgICAgICAgIHRvcDogNDZweDsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9CiAgICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUuc2EtbG9uZyB7CiAgICAgICAgICB3aWR0aDogNDdweDsKICAgICAgICAgIHJpZ2h0OiA4cHg7CiAgICAgICAgICB0b3A6IDM4cHg7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9CiAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtY3VzdG9tIHsKICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluOwogICAgICBib3JkZXItcmFkaXVzOiAwOwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH0KCi8qCiAqIEFuaW1hdGlvbnMKICovCkAtd2Via2l0LWtleWZyYW1lcyBzaG93U3dlZXRBbGVydCB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNyk7IH0KICA0NSUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsgfQogIDgwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOTUpOyB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOyB9IH0KCkBrZXlmcmFtZXMgc2hvd1N3ZWV0QWxlcnQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjcpOyB9CiAgNDUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH0KICA4MCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSB9CgpALXdlYmtpdC1rZXlmcmFtZXMgaGlkZVN3ZWV0QWxlcnQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOyB9IH0KCkBrZXlmcmFtZXMgaGlkZVN3ZWV0QWxlcnQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOyB9IH0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21Ub3AgewogIDAlIHsKICAgIHRvcDogMCU7IH0KICAxMDAlIHsKICAgIHRvcDogNTAlOyB9IH0KCkBrZXlmcmFtZXMgc2xpZGVGcm9tVG9wIHsKICAwJSB7CiAgICB0b3A6IDAlOyB9CiAgMTAwJSB7CiAgICB0b3A6IDUwJTsgfSB9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb1RvcCB7CiAgMCUgewogICAgdG9wOiA1MCU7IH0KICAxMDAlIHsKICAgIHRvcDogMCU7IH0gfQoKQGtleWZyYW1lcyBzbGlkZVRvVG9wIHsKICAwJSB7CiAgICB0b3A6IDUwJTsgfQogIDEwMCUgewogICAgdG9wOiAwJTsgfSB9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVGcm9tQm90dG9tIHsKICAwJSB7CiAgICB0b3A6IDcwJTsgfQogIDEwMCUgewogICAgdG9wOiA1MCU7IH0gfQoKQGtleWZyYW1lcyBzbGlkZUZyb21Cb3R0b20gewogIDAlIHsKICAgIHRvcDogNzAlOyB9CiAgMTAwJSB7CiAgICB0b3A6IDUwJTsgfSB9CgpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb0JvdHRvbSB7CiAgMCUgewogICAgdG9wOiA1MCU7IH0KICAxMDAlIHsKICAgIHRvcDogNzAlOyB9IH0KCkBrZXlmcmFtZXMgc2xpZGVUb0JvdHRvbSB7CiAgMCUgewogICAgdG9wOiA1MCU7IH0KICAxMDAlIHsKICAgIHRvcDogNzAlOyB9IH0KCi5zaG93U3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1wb3BdIHsKICAtd2Via2l0LWFuaW1hdGlvbjogc2hvd1N3ZWV0QWxlcnQgMC4zczsKICBhbmltYXRpb246IHNob3dTd2VldEFsZXJ0IDAuM3M7IH0KCi5zaG93U3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1ub25lXSB7CiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7CiAgYW5pbWF0aW9uOiBub25lOyB9Cgouc2hvd1N3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249c2xpZGUtZnJvbS10b3BdIHsKICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tVG9wIDAuM3M7CiAgYW5pbWF0aW9uOiBzbGlkZUZyb21Ub3AgMC4zczsgfQoKLnNob3dTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPXNsaWRlLWZyb20tYm90dG9tXSB7CiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlRnJvbUJvdHRvbSAwLjNzOwogIGFuaW1hdGlvbjogc2xpZGVGcm9tQm90dG9tIDAuM3M7IH0KCi5oaWRlU3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1wb3BdIHsKICAtd2Via2l0LWFuaW1hdGlvbjogaGlkZVN3ZWV0QWxlcnQgMC4yczsKICBhbmltYXRpb246IGhpZGVTd2VldEFsZXJ0IDAuMnM7IH0KCi5oaWRlU3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1ub25lXSB7CiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7CiAgYW5pbWF0aW9uOiBub25lOyB9CgouaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249c2xpZGUtZnJvbS10b3BdIHsKICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVUb1RvcCAwLjRzOwogIGFuaW1hdGlvbjogc2xpZGVUb1RvcCAwLjRzOyB9CgouaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249c2xpZGUtZnJvbS1ib3R0b21dIHsKICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVUb0JvdHRvbSAwLjNzOwogIGFuaW1hdGlvbjogc2xpZGVUb0JvdHRvbSAwLjNzOyB9CgpALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0ZVN1Y2Nlc3NUaXAgewogIDAlIHsKICAgIHdpZHRoOiAwOwogICAgbGVmdDogMXB4OwogICAgdG9wOiAxOXB4OyB9CiAgNTQlIHsKICAgIHdpZHRoOiAwOwogICAgbGVmdDogMXB4OwogICAgdG9wOiAxOXB4OyB9CiAgNzAlIHsKICAgIHdpZHRoOiA1MHB4OwogICAgbGVmdDogLThweDsKICAgIHRvcDogMzdweDsgfQogIDg0JSB7CiAgICB3aWR0aDogMTdweDsKICAgIGxlZnQ6IDIxcHg7CiAgICB0b3A6IDQ4cHg7IH0KICAxMDAlIHsKICAgIHdpZHRoOiAyNXB4OwogICAgbGVmdDogMTRweDsKICAgIHRvcDogNDVweDsgfSB9CgpAa2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzVGlwIHsKICAwJSB7CiAgICB3aWR0aDogMDsKICAgIGxlZnQ6IDFweDsKICAgIHRvcDogMTlweDsgfQogIDU0JSB7CiAgICB3aWR0aDogMDsKICAgIGxlZnQ6IDFweDsKICAgIHRvcDogMTlweDsgfQogIDcwJSB7CiAgICB3aWR0aDogNTBweDsKICAgIGxlZnQ6IC04cHg7CiAgICB0b3A6IDM3cHg7IH0KICA4NCUgewogICAgd2lkdGg6IDE3cHg7CiAgICBsZWZ0OiAyMXB4OwogICAgdG9wOiA0OHB4OyB9CiAgMTAwJSB7CiAgICB3aWR0aDogMjVweDsKICAgIGxlZnQ6IDE0cHg7CiAgICB0b3A6IDQ1cHg7IH0gfQoKQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzTG9uZyB7CiAgMCUgewogICAgd2lkdGg6IDA7CiAgICByaWdodDogNDZweDsKICAgIHRvcDogNTRweDsgfQogIDY1JSB7CiAgICB3aWR0aDogMDsKICAgIHJpZ2h0OiA0NnB4OwogICAgdG9wOiA1NHB4OyB9CiAgODQlIHsKICAgIHdpZHRoOiA1NXB4OwogICAgcmlnaHQ6IDBweDsKICAgIHRvcDogMzVweDsgfQogIDEwMCUgewogICAgd2lkdGg6IDQ3cHg7CiAgICByaWdodDogOHB4OwogICAgdG9wOiAzOHB4OyB9IH0KCkBrZXlmcmFtZXMgYW5pbWF0ZVN1Y2Nlc3NMb25nIHsKICAwJSB7CiAgICB3aWR0aDogMDsKICAgIHJpZ2h0OiA0NnB4OwogICAgdG9wOiA1NHB4OyB9CiAgNjUlIHsKICAgIHdpZHRoOiAwOwogICAgcmlnaHQ6IDQ2cHg7CiAgICB0b3A6IDU0cHg7IH0KICA4NCUgewogICAgd2lkdGg6IDU1cHg7CiAgICByaWdodDogMHB4OwogICAgdG9wOiAzNXB4OyB9CiAgMTAwJSB7CiAgICB3aWR0aDogNDdweDsKICAgIHJpZ2h0OiA4cHg7CiAgICB0b3A6IDM4cHg7IH0gfQoKQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZVBsYWNlaG9sZGVyIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9CiAgNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQogIDEyJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZyk7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsgfSB9CgpAa2V5ZnJhbWVzIHJvdGF0ZVBsYWNlaG9sZGVyIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9CiAgNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQogIDEyJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZyk7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsgfSB9CgouYW5pbWF0ZVN1Y2Nlc3NUaXAgewogIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc1RpcCAwLjc1czsKICBhbmltYXRpb246IGFuaW1hdGVTdWNjZXNzVGlwIDAuNzVzOyB9CgouYW5pbWF0ZVN1Y2Nlc3NMb25nIHsKICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0ZVN1Y2Nlc3NMb25nIDAuNzVzOwogIGFuaW1hdGlvbjogYW5pbWF0ZVN1Y2Nlc3NMb25nIDAuNzVzOyB9Cgouc2EtaWNvbi5zYS1zdWNjZXNzLmFuaW1hdGU6OmFmdGVyIHsKICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRlUGxhY2Vob2xkZXIgNC4yNXMgZWFzZS1pbjsKICBhbmltYXRpb246IHJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW47IH0KCkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlRXJyb3JJY29uIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTAwZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDEwMGRlZyk7CiAgICBvcGFjaXR5OiAwOyB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgIG9wYWNpdHk6IDE7IH0gfQoKQGtleWZyYW1lcyBhbmltYXRlRXJyb3JJY29uIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTAwZGVnKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDEwMGRlZyk7CiAgICBvcGFjaXR5OiAwOyB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgIG9wYWNpdHk6IDE7IH0gfQoKLmFuaW1hdGVFcnJvckljb24gewogIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlRXJyb3JJY29uIDAuNXM7CiAgYW5pbWF0aW9uOiBhbmltYXRlRXJyb3JJY29uIDAuNXM7IH0KCkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlWE1hcmsgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC40KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjQpOwogICAgbWFyZ2luLXRvcDogMjZweDsKICAgIG9wYWNpdHk6IDA7IH0KICA1MCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNCk7CiAgICBtYXJnaW4tdG9wOiAyNnB4OwogICAgb3BhY2l0eTogMDsgfQogIDgwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMTUpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMTUpOwogICAgbWFyZ2luLXRvcDogLTZweDsgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBvcGFjaXR5OiAxOyB9IH0KCkBrZXlmcmFtZXMgYW5pbWF0ZVhNYXJrIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNCk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC40KTsKICAgIG1hcmdpbi10b3A6IDI2cHg7CiAgICBvcGFjaXR5OiAwOyB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC40KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjQpOwogICAgbWFyZ2luLXRvcDogMjZweDsKICAgIG9wYWNpdHk6IDA7IH0KICA4MCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjE1KTsKICAgIG1hcmdpbi10b3A6IC02cHg7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgb3BhY2l0eTogMTsgfSB9CgouYW5pbWF0ZVhNYXJrIHsKICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0ZVhNYXJrIDAuNXM7CiAgYW5pbWF0aW9uOiBhbmltYXRlWE1hcmsgMC41czsgfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlV2FybmluZyB7CiAgMCUgewogICAgYm9yZGVyLWNvbG9yOiAjZmZlMDAwOyB9CiAgMTAwJSB7CiAgICBib3JkZXItY29sb3I6ICNmZmEwMDA7IH0gfQoKQGtleWZyYW1lcyBwdWxzZVdhcm5pbmcgewogIDAlIHsKICAgIGJvcmRlci1jb2xvcjogI2ZmZTAwMDsgfQogIDEwMCUgewogICAgYm9yZGVyLWNvbG9yOiAjZmZhMDAwOyB9IH0KCi5wdWxzZVdhcm5pbmcgewogIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZVdhcm5pbmcgMC43NXMgaW5maW5pdGUgYWx0ZXJuYXRlOwogIGFuaW1hdGlvbjogcHVsc2VXYXJuaW5nIDAuNzVzIGluZmluaXRlIGFsdGVybmF0ZTsgfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlV2FybmluZ0lucyB7CiAgMCUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTAwMDsgfQogIDEwMCUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTAwMDsgfSB9CgpAa2V5ZnJhbWVzIHB1bHNlV2FybmluZ0lucyB7CiAgMCUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTAwMDsgfQogIDEwMCUgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTAwMDsgfSB9CgoucHVsc2VXYXJuaW5nSW5zIHsKICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2VXYXJuaW5nSW5zIDAuNzVzIGluZmluaXRlIGFsdGVybmF0ZTsKICBhbmltYXRpb246IHB1bHNlV2FybmluZ0lucyAwLjc1cyBpbmZpbml0ZSBhbHRlcm5hdGU7IH0KCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGUtbG9hZGluZyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfQoKQGtleWZyYW1lcyByb3RhdGUtbG9hZGluZyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfQoKLyogSW50ZXJuZXQgRXhwbG9yZXIgOSBoYXMgc29tZSBzcGVjaWFsIHF1aXJrcyB0aGF0IGFyZSBmaXhlZCBoZXJlICovCi8qIFRoZSBpY29ucyBhcmUgbm90IGFuaW1hdGVkLiAqLwovKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBtZXJnZWQgaW50byBzd2VldC1hbGVydC5taW4uanMgdGhyb3VnaCBHdWxwICovCi8qIEVycm9yIGljb24gKi8KLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWVycm9yIC5zYS1saW5lLnNhLWxlZnQgewogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgXDk7IH0KCi5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciAuc2EtbGluZS5zYS1yaWdodCB7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgXDk7IH0KCi8qIFN1Y2Nlc3MgaWNvbiAqLwouc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudFw5OyB9Cgouc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZS5zYS10aXAgewogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgXDk7IH0KCi5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzIC5zYS1saW5lLnNhLWxvbmcgewogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIFw5OyB9CgovKiEKICogTG9hZCBBd2Vzb21lIHYxLjEuMCAoaHR0cDovL2dpdGh1Yi5kYW5pZWxjYXJkb3NvLm5ldC9sb2FkLWF3ZXNvbWUvKQogKiBDb3B5cmlnaHQgMjAxNSBEYW5pZWwgQ2FyZG9zbyA8QERhbmllbENhcmRvc28+CiAqIExpY2Vuc2VkIHVuZGVyIE1JVAogKi8KLmxhLWJhbGwtZmFsbCwKLmxhLWJhbGwtZmFsbCA+IGRpdiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQoKLmxhLWJhbGwtZmFsbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAwOwogIGNvbG9yOiAjZmZmOyB9CgoubGEtYmFsbC1mYWxsLmxhLWRhcmsgewogIGNvbG9yOiAjMzMzOyB9CgoubGEtYmFsbC1mYWxsID4gZGl2IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZmxvYXQ6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yOwogIGJvcmRlcjogMCBzb2xpZCBjdXJyZW50Q29sb3I7IH0KCi5sYS1iYWxsLWZhbGwgewogIHdpZHRoOiA1NHB4OwogIGhlaWdodDogMThweDsgfQoKLmxhLWJhbGwtZmFsbCA+IGRpdiB7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAxMHB4OwogIG1hcmdpbjogNHB4OwogIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgb3BhY2l0eTogMDsKICAtd2Via2l0LWFuaW1hdGlvbjogYmFsbC1mYWxsIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogIC1tb3otYW5pbWF0aW9uOiBiYWxsLWZhbGwgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgLW8tYW5pbWF0aW9uOiBiYWxsLWZhbGwgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgYW5pbWF0aW9uOiBiYWxsLWZhbGwgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH0KCi5sYS1iYWxsLWZhbGwgPiBkaXY6bnRoLWNoaWxkKDEpIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTIwMG1zOwogIC1tb3otYW5pbWF0aW9uLWRlbGF5OiAtMjAwbXM7CiAgLW8tYW5pbWF0aW9uLWRlbGF5OiAtMjAwbXM7CiAgYW5pbWF0aW9uLWRlbGF5OiAtMjAwbXM7IH0KCi5sYS1iYWxsLWZhbGwgPiBkaXY6bnRoLWNoaWxkKDIpIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLTEwMG1zOwogIC1tb3otYW5pbWF0aW9uLWRlbGF5OiAtMTAwbXM7CiAgLW8tYW5pbWF0aW9uLWRlbGF5OiAtMTAwbXM7CiAgYW5pbWF0aW9uLWRlbGF5OiAtMTAwbXM7IH0KCi5sYS1iYWxsLWZhbGwgPiBkaXY6bnRoLWNoaWxkKDMpIHsKICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMG1zOwogIC1tb3otYW5pbWF0aW9uLWRlbGF5OiAwbXM7CiAgLW8tYW5pbWF0aW9uLWRlbGF5OiAwbXM7CiAgYW5pbWF0aW9uLWRlbGF5OiAwbXM7IH0KCi5sYS1iYWxsLWZhbGwubGEtc20gewogIHdpZHRoOiAyNnB4OwogIGhlaWdodDogOHB4OyB9CgoubGEtYmFsbC1mYWxsLmxhLXNtID4gZGl2IHsKICB3aWR0aDogNHB4OwogIGhlaWdodDogNHB4OwogIG1hcmdpbjogMnB4OyB9CgoubGEtYmFsbC1mYWxsLmxhLTJ4IHsKICB3aWR0aDogMTA4cHg7CiAgaGVpZ2h0OiAzNnB4OyB9CgoubGEtYmFsbC1mYWxsLmxhLTJ4ID4gZGl2IHsKICB3aWR0aDogMjBweDsKICBoZWlnaHQ6IDIwcHg7CiAgbWFyZ2luOiA4cHg7IH0KCi5sYS1iYWxsLWZhbGwubGEtM3ggewogIHdpZHRoOiAxNjJweDsKICBoZWlnaHQ6IDU0cHg7IH0KCi5sYS1iYWxsLWZhbGwubGEtM3ggPiBkaXYgewogIHdpZHRoOiAzMHB4OwogIGhlaWdodDogMzBweDsKICBtYXJnaW46IDEycHg7IH0KCi8qCiAqIEFuaW1hdGlvbgogKi8KQC13ZWJraXQta2V5ZnJhbWVzIGJhbGwtZmFsbCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7IH0KICAxMCUgewogICAgb3BhY2l0eTogLjU7IH0KICAyMCUgewogICAgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgODAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogIDkwJSB7CiAgICBvcGFjaXR5OiAuNTsgfQogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE0NSUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE0NSUpOyB9IH0KCkAtbW96LWtleWZyYW1lcyBiYWxsLWZhbGwgewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOyB9CiAgMTAlIHsKICAgIG9wYWNpdHk6IC41OyB9CiAgMjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogIDgwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICA5MCUgewogICAgb3BhY2l0eTogLjU7IH0KICAxMDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsgfSB9CgpALW8ta2V5ZnJhbWVzIGJhbGwtZmFsbCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOyB9CiAgMTAlIHsKICAgIG9wYWNpdHk6IC41OyB9CiAgMjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICA4MCUgewogICAgb3BhY2l0eTogMTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogIDkwJSB7CiAgICBvcGFjaXR5OiAuNTsgfQogIDEwMCUgewogICAgb3BhY2l0eTogMDsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsgfSB9CgpAa2V5ZnJhbWVzIGJhbGwtZmFsbCB7CiAgMCUgewogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOyB9CiAgMTAlIHsKICAgIG9wYWNpdHk6IC41OyB9CiAgMjAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgODAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgOTAlIHsKICAgIG9wYWNpdHk6IC41OyB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQ1JSk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsgfSB9Cg=="}},"time_used":196,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":196,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/waves/waves.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.341Z","timestamp":1785150870341,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/waves/waves.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-185a\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=F%2Bz2Gl3TSHv0C1dPUoqc%2BPWcUR0OrX48mwg7d0BTKeeqeIl0inXPlbdRGh%2F9uceEI5ZPWw5g%2FTrLiOLXo2OG2wGNTYqm7X5v6xhnVFzxUmAdl89U%2BLiMdopKdw%3D%3D\"}]}\r\ncf-ray: a21b388babd756a2-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"]}],"data":{"size":6234,"size_decoded":3244,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (5990)","md5":"2bff429e1f4236b4f210dc72140961ff","sha1":"782d212abe569400397f5e62bd5c060f105564f7","sha256":"202bc564b7fb82c9707e9bddc7343cc3ca19b746ebce816bf2fd9d5c179cb8b6","sha512":"1c687aa98be219d897855753769692fc2ea0dd59cc196f338d845255f5c9b23fd0273a1c9840d762a3981c65666e63748a6c5b1f5069bad87afc0faa9ec38403","ssdeep":"192:d4+VPfnSE5zz1r9R+JEU1UvgifucoLUjri0NiUMDHKgE:a+ZSE5zqJUvgifucoecT3E","tlshash":"97d1e6bb3205357758e326a6c2ffec42707901a2f4002ca4956eec95ae29c7d5673f8d","first_seen":"2023-03-07T12:05:50Z","last_seen":"2026-07-27T11:25:33.525752Z","times_seen":92,"resource_available":true,"data":"LyohCiAqIFdhdmVzIHYwLjcuNQogKiBodHRwOi8vZmlhbi5teS5pZC9XYXZlcwogKgogKiBDb3B5cmlnaHQgMjAxNC0yMDE2IEFsZmlhbmEgRS4gU2lidWVhIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9maWFucy9XYXZlcy9ibG9iL21hc3Rlci9MSUNFTlNFCiAqLwohZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gYi5hcHBseShhKX0pOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1iLmNhbGwoYSk6YS5XYXZlcz1iLmNhbGwoYSl9KCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsP2dsb2JhbDp0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoYSl7cmV0dXJuIG51bGwhPT1hJiZhPT09YS53aW5kb3d9ZnVuY3Rpb24gYihiKXtyZXR1cm4gYShiKT9iOjk9PT1iLm5vZGVUeXBlJiZiLmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGMoYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuImZ1bmN0aW9uIj09PWJ8fCJvYmplY3QiPT09YiYmISFhfWZ1bmN0aW9uIGQoYSl7cmV0dXJuIGMoYSkmJmEubm9kZVR5cGU+MH1mdW5jdGlvbiBlKGEpe3ZhciBiPW0uY2FsbChhKTtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PWI/bChhKTpjKGEpJiYvXlxbb2JqZWN0IChBcnJheXxIVE1MQ29sbGVjdGlvbnxOb2RlTGlzdHxPYmplY3QpXF0kLy50ZXN0KGIpJiZhLmhhc093blByb3BlcnR5KCJsZW5ndGgiKT9hOmQoYSk/W2FdOltdfWZ1bmN0aW9uIGYoYSl7dmFyIGMsZCxlPXt0b3A6MCxsZWZ0OjB9LGY9YSYmYS5vd25lckRvY3VtZW50O3JldHVybiBjPWYuZG9jdW1lbnRFbGVtZW50LCJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QmJihlPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGQ9YihmKSx7dG9wOmUudG9wK2QucGFnZVlPZmZzZXQtYy5jbGllbnRUb3AsbGVmdDplLmxlZnQrZC5wYWdlWE9mZnNldC1jLmNsaWVudExlZnR9fWZ1bmN0aW9uIGcoYSl7dmFyIGI9IiI7Zm9yKHZhciBjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGIrPWMrIjoiK2FbY10rIjsiKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjKXtpZihjKXtjLmNsYXNzTGlzdC5yZW1vdmUoIndhdmVzLXJpcHBsaW5nIik7dmFyIGQ9Yy5nZXRBdHRyaWJ1dGUoImRhdGEteCIpLGU9Yy5nZXRBdHRyaWJ1dGUoImRhdGEteSIpLGY9Yy5nZXRBdHRyaWJ1dGUoImRhdGEtc2NhbGUiKSxoPWMuZ2V0QXR0cmlidXRlKCJkYXRhLXRyYW5zbGF0ZSIpLGk9RGF0ZS5ub3coKS1OdW1iZXIoYy5nZXRBdHRyaWJ1dGUoImRhdGEtaG9sZCIpKSxqPTM1MC1pOzA+aiYmKGo9MCksIm1vdXNlbW92ZSI9PT1hLnR5cGUmJihqPTE1MCk7dmFyIGs9Im1vdXNlbW92ZSI9PT1hLnR5cGU/MjUwMDpvLmR1cmF0aW9uO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYT17dG9wOmUrInB4IixsZWZ0OmQrInB4IixvcGFjaXR5OiIwIiwiLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uIjprKyJtcyIsIi1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbiI6aysibXMiLCItby10cmFuc2l0aW9uLWR1cmF0aW9uIjprKyJtcyIsInRyYW5zaXRpb24tZHVyYXRpb24iOmsrIm1zIiwiLXdlYmtpdC10cmFuc2Zvcm0iOmYrIiAiK2gsIi1tb3otdHJhbnNmb3JtIjpmKyIgIitoLCItbXMtdHJhbnNmb3JtIjpmKyIgIitoLCItby10cmFuc2Zvcm0iOmYrIiAiK2gsdHJhbnNmb3JtOmYrIiAiK2h9O2Muc2V0QXR0cmlidXRlKCJzdHlsZSIsZyhhKSksc2V0VGltZW91dChmdW5jdGlvbigpe3RyeXtiLnJlbW92ZUNoaWxkKGMpfWNhdGNoKGEpe3JldHVybiExfX0sayl9LGopfX1mdW5jdGlvbiBpKGEpe2lmKHEuYWxsb3dFdmVudChhKT09PSExKXJldHVybiBudWxsO2Zvcih2YXIgYj1udWxsLGM9YS50YXJnZXR8fGEuc3JjRWxlbWVudDtudWxsIT09Yy5wYXJlbnRFbGVtZW50Oyl7aWYoYy5jbGFzc0xpc3QuY29udGFpbnMoIndhdmVzLWVmZmVjdCIpJiYhKGMgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSl7Yj1jO2JyZWFrfWM9Yy5wYXJlbnRFbGVtZW50fXJldHVybiBifWZ1bmN0aW9uIGooYSl7dmFyIGI9aShhKTtpZihudWxsIT09Yil7aWYoYi5kaXNhYmxlZHx8Yi5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil8fGIuY2xhc3NMaXN0LmNvbnRhaW5zKCJkaXNhYmxlZCIpKXJldHVybjtpZihxLnJlZ2lzdGVyRXZlbnQoYSksInRvdWNoc3RhcnQiPT09YS50eXBlJiZvLmRlbGF5KXt2YXIgYz0hMSxkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtkPW51bGwsby5zaG93KGEsYil9LG8uZGVsYXkpLGU9ZnVuY3Rpb24oZSl7ZCYmKGNsZWFyVGltZW91dChkKSxkPW51bGwsby5zaG93KGEsYikpLGN8fChjPSEwLG8uaGlkZShlLGIpKX0sZj1mdW5jdGlvbihhKXtkJiYoY2xlYXJUaW1lb3V0KGQpLGQ9bnVsbCksZShhKX07Yi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGYsITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGUsITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLGUsITEpfWVsc2Ugby5zaG93KGEsYiksbiYmKGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLG8uaGlkZSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsby5oaWRlLCExKSksYi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixvLmhpZGUsITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsby5oaWRlLCExKX19dmFyIGs9a3x8e30sbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsLmJpbmQoZG9jdW1lbnQpLG09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxuPSJvbnRvdWNoc3RhcnQiaW4gd2luZG93LG89e2R1cmF0aW9uOjc1MCxkZWxheToyMDAsc2hvdzpmdW5jdGlvbihhLGIsYyl7aWYoMj09PWEuYnV0dG9uKXJldHVybiExO2I9Ynx8dGhpczt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLmNsYXNzTmFtZT0id2F2ZXMtcmlwcGxlIHdhdmVzLXJpcHBsaW5nIixiLmFwcGVuZENoaWxkKGQpO3ZhciBlPWYoYiksaD0wLGk9MDsidG91Y2hlcyJpbiBhJiZhLnRvdWNoZXMubGVuZ3RoPyhoPWEudG91Y2hlc1swXS5wYWdlWS1lLnRvcCxpPWEudG91Y2hlc1swXS5wYWdlWC1lLmxlZnQpOihoPWEucGFnZVktZS50b3AsaT1hLnBhZ2VYLWUubGVmdCksaT1pPj0wP2k6MCxoPWg+PTA/aDowO3ZhciBqPSJzY2FsZSgiK2IuY2xpZW50V2lkdGgvMTAwKjMrIikiLGs9InRyYW5zbGF0ZSgwLDApIjtjJiYoaz0idHJhbnNsYXRlKCIrYy54KyJweCwgIitjLnkrInB4KSIpLGQuc2V0QXR0cmlidXRlKCJkYXRhLWhvbGQiLERhdGUubm93KCkpLGQuc2V0QXR0cmlidXRlKCJkYXRhLXgiLGkpLGQuc2V0QXR0cmlidXRlKCJkYXRhLXkiLGgpLGQuc2V0QXR0cmlidXRlKCJkYXRhLXNjYWxlIixqKSxkLnNldEF0dHJpYnV0ZSgiZGF0YS10cmFuc2xhdGUiLGspO3ZhciBsPXt0b3A6aCsicHgiLGxlZnQ6aSsicHgifTtkLmNsYXNzTGlzdC5hZGQoIndhdmVzLW5vdHJhbnNpdGlvbiIpLGQuc2V0QXR0cmlidXRlKCJzdHlsZSIsZyhsKSksZC5jbGFzc0xpc3QucmVtb3ZlKCJ3YXZlcy1ub3RyYW5zaXRpb24iKSxsWyItd2Via2l0LXRyYW5zZm9ybSJdPWorIiAiK2ssbFsiLW1vei10cmFuc2Zvcm0iXT1qKyIgIitrLGxbIi1tcy10cmFuc2Zvcm0iXT1qKyIgIitrLGxbIi1vLXRyYW5zZm9ybSJdPWorIiAiK2ssbC50cmFuc2Zvcm09aisiICIrayxsLm9wYWNpdHk9IjEiO3ZhciBtPSJtb3VzZW1vdmUiPT09YS50eXBlPzI1MDA6by5kdXJhdGlvbjtsWyItd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24iXT1tKyJtcyIsbFsiLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uIl09bSsibXMiLGxbIi1vLXRyYW5zaXRpb24tZHVyYXRpb24iXT1tKyJtcyIsbFsidHJhbnNpdGlvbi1kdXJhdGlvbiJdPW0rIm1zIixkLnNldEF0dHJpYnV0ZSgic3R5bGUiLGcobCkpfSxoaWRlOmZ1bmN0aW9uKGEsYil7Yj1ifHx0aGlzO2Zvcih2YXIgYz1iLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIndhdmVzLXJpcHBsaW5nIiksZD0wLGU9Yy5sZW5ndGg7ZT5kO2QrKyloKGEsYixjW2RdKX19LHA9e2lucHV0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtpZigiaSIhPT1iLnRhZ05hbWUudG9Mb3dlckNhc2UoKXx8IWIuY2xhc3NMaXN0LmNvbnRhaW5zKCJ3YXZlcy1lZmZlY3QiKSl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaSIpO2MuY2xhc3NOYW1lPWEuY2xhc3NOYW1lKyIgd2F2ZXMtaW5wdXQtd3JhcHBlciIsYS5jbGFzc05hbWU9IndhdmVzLWJ1dHRvbi1pbnB1dCIsYi5yZXBsYWNlQ2hpbGQoYyxhKSxjLmFwcGVuZENoaWxkKGEpO3ZhciBkPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCksZT1kLmNvbG9yLGY9ZC5iYWNrZ3JvdW5kQ29sb3I7Yy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiY29sb3I6IitlKyI7YmFja2dyb3VuZDoiK2YpLGEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTsiKX19LGltZzpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7aWYoImkiIT09Yi50YWdOYW1lLnRvTG93ZXJDYXNlKCl8fCFiLmNsYXNzTGlzdC5jb250YWlucygid2F2ZXMtZWZmZWN0Iikpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImkiKTtiLnJlcGxhY2VDaGlsZChjLGEpLGMuYXBwZW5kQ2hpbGQoYSl9fX0scT17dG91Y2hlczowLGFsbG93RXZlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9ITA7cmV0dXJuL14obW91c2Vkb3dufG1vdXNlbW92ZSkkLy50ZXN0KGEudHlwZSkmJnEudG91Y2hlcyYmKGI9ITEpLGJ9LHJlZ2lzdGVyRXZlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS50eXBlOyJ0b3VjaHN0YXJ0Ij09PWI/cS50b3VjaGVzKz0xOi9eKHRvdWNoZW5kfHRvdWNoY2FuY2VsKSQvLnRlc3QoYikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtxLnRvdWNoZXMmJihxLnRvdWNoZXMtPTEpfSw1MDApfX07cmV0dXJuIGsuaW5pdD1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5ib2R5O2E9YXx8e30sImR1cmF0aW9uImluIGEmJihvLmR1cmF0aW9uPWEuZHVyYXRpb24pLCJkZWxheSJpbiBhJiYoby5kZWxheT1hLmRlbGF5KSxuJiYoYi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixqLCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIixxLnJlZ2lzdGVyRXZlbnQsITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHEucmVnaXN0ZXJFdmVudCwhMSkpLGIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixqLCExKX0say5hdHRhY2g9ZnVuY3Rpb24oYSxiKXthPWUoYSksIltvYmplY3QgQXJyYXldIj09PW0uY2FsbChiKSYmKGI9Yi5qb2luKCIgIikpLGI9Yj8iICIrYjoiIjtmb3IodmFyIGMsZCxmPTAsZz1hLmxlbmd0aDtnPmY7ZisrKWM9YVtmXSxkPWMudGFnTmFtZS50b0xvd2VyQ2FzZSgpLC0xIT09WyJpbnB1dCIsImltZyJdLmluZGV4T2YoZCkmJihwW2RdKGMpLGM9Yy5wYXJlbnRFbGVtZW50KSwtMT09PWMuY2xhc3NOYW1lLmluZGV4T2YoIndhdmVzLWVmZmVjdCIpJiYoYy5jbGFzc05hbWUrPSIgd2F2ZXMtZWZmZWN0IitiKX0say5yaXBwbGU9ZnVuY3Rpb24oYSxiKXthPWUoYSk7dmFyIGM9YS5sZW5ndGg7aWYoYj1ifHx7fSxiLndhaXQ9Yi53YWl0fHwwLGIucG9zaXRpb249Yi5wb3NpdGlvbnx8bnVsbCxjKWZvcih2YXIgZCxnLGgsaT17fSxqPTAsaz17dHlwZToibW91c2Vkb3duIixidXR0b246MX0sbD1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe28uaGlkZShhLGIpfX07Yz5qO2orKylpZihkPWFbal0sZz1iLnBvc2l0aW9ufHx7eDpkLmNsaWVudFdpZHRoLzIseTpkLmNsaWVudEhlaWdodC8yfSxoPWYoZCksaS54PWgubGVmdCtnLngsaS55PWgudG9wK2cueSxrLnBhZ2VYPWkueCxrLnBhZ2VZPWkueSxvLnNob3coayxkKSxiLndhaXQ+PTAmJm51bGwhPT1iLndhaXQpe3ZhciBtPXt0eXBlOiJtb3VzZXVwIixidXR0b246MX07c2V0VGltZW91dChsKG0sZCksYi53YWl0KX19LGsuY2FsbT1mdW5jdGlvbihhKXthPWUoYSk7Zm9yKHZhciBiPXt0eXBlOiJtb3VzZXVwIixidXR0b246MX0sYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylvLmhpZGUoYixhW2NdKX0say5kaXNwbGF5RWZmZWN0PWZ1bmN0aW9uKGEpe2suaW5pdChhKX0sa30pOwovLyMgc291cmNlTWFwcGluZ1VSTD13YXZlcy5taW4uanMubWFw"}},"time_used":194,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":194,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/fonts/font-awesome/css/font-awesome.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.579Z","timestamp":1785150870579,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/fonts/font-awesome/css/font-awesome.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/assets/styles/style.css\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-71b2\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=PbBaAEb16oItDovMUMrBbYVGk3Piasg5AVjhMeIx%2Bs4o4vRrw0nNLP23Tj%2FLpujM9dRSRoDbIcMDNodpg36LYvB%2BjXmbUoyi7K8I0SVw%2Brxdd6BJTfVgrXfjDQ%3D%3D\"}]}\r\ncf-ray: a21b388d2bf756a2-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"]}],"data":{"size":29106,"size_decoded":7509,"mime_type":"text/css","magic":"ASCII text, with very long lines (28943)","md5":"45ae87c8b0b29f9d2b9b9fbe78038aef","sha1":"422705a91de50e9e03097524d822c80eea27c51d","sha256":"7cf0e986b499fef16cfc482d7c0b71260acf9e21dda25d67dc18bc1c4cf2b063","sha512":"bd269c5263142636e747890c9d7dd434d3ec16507855c7b941f828d8e92849dd7bf1b8fef73cfd163be2f75a48109a5583c95f9902996772d14b197af3f000c7","ssdeep":"384:vu5yWeTUKW+KlkJ5de2UYDyVfwYUas8l8yQ/8dwwdG:4lr+Klk3Yi+fwYUf8l8yQ/eC","tlshash":"06d250e8e54c01d66731c48bff81b36862baf73dd5814d99f01f690c29d22a522c5fba","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.53505Z","times_seen":35,"resource_available":false,"data":"LyohCiAqICBGb250IEF3ZXNvbWUgNC42LjMgYnkgQGRhdmVnYW5keSAtIGh0dHA6Ly9mb250YXdlc29tZS5pbyAtIEBmb250YXdlc29tZQogKiAgTGljZW5zZSAtIGh0dHA6Ly9mb250YXdlc29tZS5pby9saWNlbnNlIChGb250OiBTSUwgT0ZMIDEuMSwgQ1NTOiBNSVQgTGljZW5zZSkKICovQGZvbnQtZmFjZXtmb250LWZhbWlseTonRm9udEF3ZXNvbWUnO3NyYzp1cmwoJy4uL2ZvbnRzL2ZvbnRhd2Vzb21lLXdlYmZvbnQuZW90P3Y9NC42LjMnKTtzcmM6dXJsKCcuLi9mb250cy9mb250YXdlc29tZS13ZWJmb250LmVvdD8jaWVmaXgmdj00LjYuMycpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSx1cmwoJy4uL2ZvbnRzL2ZvbnRhd2Vzb21lLXdlYmZvbnQud29mZjI/dj00LjYuMycpIGZvcm1hdCgnd29mZjInKSx1cmwoJy4uL2ZvbnRzL2ZvbnRhd2Vzb21lLXdlYmZvbnQud29mZj92PTQuNi4zJykgZm9ybWF0KCd3b2ZmJyksdXJsKCcuLi9mb250cy9mb250YXdlc29tZS13ZWJmb250LnR0Zj92PTQuNi4zJykgZm9ybWF0KCd0cnVldHlwZScpLHVybCgnLi4vZm9udHMvZm9udGF3ZXNvbWUtd2ViZm9udC5zdmc/dj00LjYuMyNmb250YXdlc29tZXJlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbH0uZmF7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWw7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE7IGZvbnQtZmFtaWx5OiBGb250QXdlc29tZSFpbXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQ7dGV4dC1yZW5kZXJpbmc6YXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTt9LmZhLWxne2ZvbnQtc2l6ZToxLjMzMzMzMzMzZW07bGluZS1oZWlnaHQ6Ljc1ZW07dmVydGljYWwtYWxpZ246LTE1JX0uZmEtMnh7Zm9udC1zaXplOjJlbX0uZmEtM3h7Zm9udC1zaXplOjNlbX0uZmEtNHh7Zm9udC1zaXplOjRlbX0uZmEtNXh7Zm9udC1zaXplOjVlbX0uZmEtZnd7d2lkdGg6MS4yODU3MTQyOWVtO3RleHQtYWxpZ246Y2VudGVyfS5mYS11bHtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tbGVmdDoyLjE0Mjg1NzE0ZW07bGlzdC1zdHlsZS10eXBlOm5vbmV9LmZhLXVsPmxpe3Bvc2l0aW9uOnJlbGF0aXZlfS5mYS1saXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0yLjE0Mjg1NzE0ZW07d2lkdGg6Mi4xNDI4NTcxNGVtO3RvcDouMTQyODU3MTRlbTt0ZXh0LWFsaWduOmNlbnRlcn0uZmEtbGkuZmEtbGd7bGVmdDotMS44NTcxNDI4NmVtfS5mYS1ib3JkZXJ7cGFkZGluZzouMmVtIC4yNWVtIC4xNWVtO2JvcmRlcjpzb2xpZCAuMDhlbSAjZWVlO2JvcmRlci1yYWRpdXM6LjFlbX0uZmEtcHVsbC1sZWZ0e2Zsb2F0OmxlZnR9LmZhLXB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHR9LmZhLmZhLXB1bGwtbGVmdHttYXJnaW4tcmlnaHQ6LjNlbX0uZmEuZmEtcHVsbC1yaWdodHttYXJnaW4tbGVmdDouM2VtfS5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0fS5wdWxsLWxlZnR7ZmxvYXQ6bGVmdH0uZmEucHVsbC1sZWZ0e21hcmdpbi1yaWdodDouM2VtfS5mYS5wdWxsLXJpZ2h0e21hcmdpbi1sZWZ0Oi4zZW19LmZhLXNwaW57LXdlYmtpdC1hbmltYXRpb246ZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7YW5pbWF0aW9uOmZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyfS5mYS1wdWxzZXstd2Via2l0LWFuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpO2FuaW1hdGlvbjpmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpfUAtd2Via2l0LWtleWZyYW1lcyBmYS1zcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM1OWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNTlkZWcpfX1Aa2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzU5ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM1OWRlZyl9fS5mYS1yb3RhdGUtOTB7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSkiOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5mYS1yb3RhdGUtMTgwey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIpIjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTstbXMtdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uZmEtcm90YXRlLTI3MHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0zKSI7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDI3MGRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9LmZhLWZsaXAtaG9yaXpvbnRhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0wLCBtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLCAxKTstbXMtdHJhbnNmb3JtOnNjYWxlKC0xLCAxKTt0cmFuc2Zvcm06c2NhbGUoLTEsIDEpfS5mYS1mbGlwLXZlcnRpY2Fsey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSwgLTEpOy1tcy10cmFuc2Zvcm06c2NhbGUoMSwgLTEpO3RyYW5zZm9ybTpzY2FsZSgxLCAtMSl9OnJvb3QgLmZhLXJvdGF0ZS05MCw6cm9vdCAuZmEtcm90YXRlLTE4MCw6cm9vdCAuZmEtcm90YXRlLTI3MCw6cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLDpyb290IC5mYS1mbGlwLXZlcnRpY2Fse2ZpbHRlcjpub25lfS5mYS1zdGFja3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyZW07aGVpZ2h0OjJlbTtsaW5lLWhlaWdodDoyZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5mYS1zdGFjay0xeCwuZmEtc3RhY2stMnh7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXJ9LmZhLXN0YWNrLTF4e2xpbmUtaGVpZ2h0OmluaGVyaXR9LmZhLXN0YWNrLTJ4e2ZvbnQtc2l6ZToyZW19LmZhLWludmVyc2V7Y29sb3I6I2ZmZn0uZmEtZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDAwIn0uZmEtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMDAxIn0uZmEtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjAwMiJ9LmZhLWVudmVsb3BlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDAzIn0uZmEtaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDA0In0uZmEtc3RhcjpiZWZvcmV7Y29udGVudDoiXGYwMDUifS5mYS1zdGFyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDA2In0uZmEtdXNlcjpiZWZvcmV7Y29udGVudDoiXGYwMDcifS5mYS1maWxtOmJlZm9yZXtjb250ZW50OiJcZjAwOCJ9LmZhLXRoLWxhcmdlOmJlZm9yZXtjb250ZW50OiJcZjAwOSJ9LmZhLXRoOmJlZm9yZXtjb250ZW50OiJcZjAwYSJ9LmZhLXRoLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDBiIn0uZmEtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDBjIn0uZmEtcmVtb3ZlOmJlZm9yZSwuZmEtY2xvc2U6YmVmb3JlLC5mYS10aW1lczpiZWZvcmV7Y29udGVudDoiXGYwMGQifS5mYS1zZWFyY2gtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwMGUifS5mYS1zZWFyY2gtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDEwIn0uZmEtcG93ZXItb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAxMSJ9LmZhLXNpZ25hbDpiZWZvcmV7Y29udGVudDoiXGYwMTIifS5mYS1nZWFyOmJlZm9yZSwuZmEtY29nOmJlZm9yZXtjb250ZW50OiJcZjAxMyJ9LmZhLXRyYXNoLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDE0In0uZmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGYwMTUifS5mYS1maWxlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDE2In0uZmEtY2xvY2stbzpiZWZvcmV7Y29udGVudDoiXGYwMTcifS5mYS1yb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOCJ9LmZhLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOSJ9LmZhLWFycm93LWNpcmNsZS1vLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDFhIn0uZmEtYXJyb3ctY2lyY2xlLW8tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDFiIn0uZmEtaW5ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMDFjIn0uZmEtcGxheS1jaXJjbGUtbzpiZWZvcmV7Y29udGVudDoiXGYwMWQifS5mYS1yb3RhdGUtcmlnaHQ6YmVmb3JlLC5mYS1yZXBlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDFlIn0uZmEtcmVmcmVzaDpiZWZvcmV7Y29udGVudDoiXGYwMjEifS5mYS1saXN0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYwMjIifS5mYS1sb2NrOmJlZm9yZXtjb250ZW50OiJcZjAyMyJ9LmZhLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDI0In0uZmEtaGVhZHBob25lczpiZWZvcmV7Y29udGVudDoiXGYwMjUifS5mYS12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAyNiJ9LmZhLXZvbHVtZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjAyNyJ9LmZhLXZvbHVtZS11cDpiZWZvcmV7Y29udGVudDoiXGYwMjgifS5mYS1xcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDI5In0uZmEtYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMmEifS5mYS10YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDJiIn0uZmEtdGFnczpiZWZvcmV7Y29udGVudDoiXGYwMmMifS5mYS1ib29rOmJlZm9yZXtjb250ZW50OiJcZjAyZCJ9LmZhLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjAyZSJ9LmZhLXByaW50OmJlZm9yZXtjb250ZW50OiJcZjAyZiJ9LmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1mb250OmJlZm9yZXtjb250ZW50OiJcZjAzMSJ9LmZhLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDMyIn0uZmEtaXRhbGljOmJlZm9yZXtjb250ZW50OiJcZjAzMyJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwMzYifS5mYS1hbGlnbi1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDM3In0uZmEtYWxpZ24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM4In0uZmEtYWxpZ24tanVzdGlmeTpiZWZvcmV7Y29udGVudDoiXGYwMzkifS5mYS1saXN0OmJlZm9yZXtjb250ZW50OiJcZjAzYSJ9LmZhLWRlZGVudDpiZWZvcmUsLmZhLW91dGRlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDNiIn0uZmEtaW5kZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYyJ9LmZhLXZpZGVvLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwM2QifS5mYS1waG90bzpiZWZvcmUsLmZhLWltYWdlOmJlZm9yZSwuZmEtcGljdHVyZS1vOmJlZm9yZXtjb250ZW50OiJcZjAzZSJ9LmZhLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXGYwNDAifS5mYS1tYXAtbWFya2VyOmJlZm9yZXtjb250ZW50OiJcZjA0MSJ9LmZhLWFkanVzdDpiZWZvcmV7Y29udGVudDoiXGYwNDIifS5mYS10aW50OmJlZm9yZXtjb250ZW50OiJcZjA0MyJ9LmZhLWVkaXQ6YmVmb3JlLC5mYS1wZW5jaWwtc3F1YXJlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDQ0In0uZmEtc2hhcmUtc3F1YXJlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDQ1In0uZmEtY2hlY2stc3F1YXJlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMDQ2In0uZmEtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZjA0NyJ9LmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ4In0uZmEtZmFzdC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNDkifS5mYS1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGEifS5mYS1wbGF5OmJlZm9yZXtjb250ZW50OiJcZjA0YiJ9LmZhLXBhdXNlOmJlZm9yZXtjb250ZW50OiJcZjA0YyJ9LmZhLXN0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMDRkIn0uZmEtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGUifS5mYS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUwIn0uZmEtc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA1MSJ9LmZhLWVqZWN0OmJlZm9yZXtjb250ZW50OiJcZjA1MiJ9LmZhLWNoZXZyb24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNTMifS5mYS1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA1NCJ9LmZhLXBsdXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NSJ9LmZhLW1pbnVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTYifS5mYS10aW1lcy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU3In0uZmEtY2hlY2stY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OCJ9LmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1pbmZvLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNWEifS5mYS1jcm9zc2hhaXJzOmJlZm9yZXtjb250ZW50OiJcZjA1YiJ9LmZhLXRpbWVzLWNpcmNsZS1vOmJlZm9yZXtjb250ZW50OiJcZjA1YyJ9LmZhLWNoZWNrLWNpcmNsZS1vOmJlZm9yZXtjb250ZW50OiJcZjA1ZCJ9LmZhLWJhbjpiZWZvcmV7Y29udGVudDoiXGYwNWUifS5mYS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA2MCJ9LmZhLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA2MSJ9LmZhLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZjA2MiJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtbWFpbC1mb3J3YXJkOmJlZm9yZSwuZmEtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDY0In0uZmEtZXhwYW5kOmJlZm9yZXtjb250ZW50OiJcZjA2NSJ9LmZhLWNvbXByZXNzOmJlZm9yZXtjb250ZW50OiJcZjA2NiJ9LmZhLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY3In0uZmEtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY4In0uZmEtYXN0ZXJpc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDY5In0uZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA2YSJ9LmZhLWdpZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDZiIn0uZmEtbGVhZjpiZWZvcmV7Y29udGVudDoiXGYwNmMifS5mYS1maXJlOmJlZm9yZXtjb250ZW50OiJcZjA2ZCJ9LmZhLWV5ZTpiZWZvcmV7Y29udGVudDoiXGYwNmUifS5mYS1leWUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDcwIn0uZmEtd2FybmluZzpiZWZvcmUsLmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjA3MSJ9LmZhLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjA3MiJ9LmZhLWNhbGVuZGFyOmJlZm9yZXtjb250ZW50OiJcZjA3MyJ9LmZhLXJhbmRvbTpiZWZvcmV7Y29udGVudDoiXGYwNzQifS5mYS1jb21tZW50OmJlZm9yZXtjb250ZW50OiJcZjA3NSJ9LmZhLW1hZ25ldDpiZWZvcmV7Y29udGVudDoiXGYwNzYifS5mYS1jaGV2cm9uLXVwOmJlZm9yZXtjb250ZW50OiJcZjA3NyJ9LmZhLWNoZXZyb24tZG93bjpiZWZvcmV7Y29udGVudDoiXGYwNzgifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLXNob3BwaW5nLWNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDdhIn0uZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWFycm93cy12OmJlZm9yZXtjb250ZW50OiJcZjA3ZCJ9LmZhLWFycm93cy1oOmJlZm9yZXtjb250ZW50OiJcZjA3ZSJ9LmZhLWJhci1jaGFydC1vOmJlZm9yZSwuZmEtYmFyLWNoYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA4MCJ9LmZhLXR3aXR0ZXItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MSJ9LmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODIifS5mYS1jYW1lcmEtcmV0cm86YmVmb3Jle2NvbnRlbnQ6IlxmMDgzIn0uZmEta2V5OmJlZm9yZXtjb250ZW50OiJcZjA4NCJ9LmZhLWdlYXJzOmJlZm9yZSwuZmEtY29nczpiZWZvcmV7Y29udGVudDoiXGYwODUifS5mYS1jb21tZW50czpiZWZvcmV7Y29udGVudDoiXGYwODYifS5mYS10aHVtYnMtby11cDpiZWZvcmV7Y29udGVudDoiXGYwODcifS5mYS10aHVtYnMtby1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA4OCJ9LmZhLXN0YXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYwODkifS5mYS1oZWFydC1vOmJlZm9yZXtjb250ZW50OiJcZjA4YSJ9LmZhLXNpZ24tb3V0OmJlZm9yZXtjb250ZW50OiJcZjA4YiJ9LmZhLWxpbmtlZGluLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS10aHVtYi10YWNrOmJlZm9yZXtjb250ZW50OiJcZjA4ZCJ9LmZhLWV4dGVybmFsLWxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMDhlIn0uZmEtc2lnbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwOTAifS5mYS10cm9waHk6YmVmb3Jle2NvbnRlbnQ6IlxmMDkxIn0uZmEtZ2l0aHViLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTIifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtbGVtb24tbzpiZWZvcmV7Y29udGVudDoiXGYwOTQifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1zcXVhcmUtbzpiZWZvcmV7Y29udGVudDoiXGYwOTYifS5mYS1ib29rbWFyay1vOmJlZm9yZXtjb250ZW50OiJcZjA5NyJ9LmZhLXBob25lLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTgifS5mYS10d2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjA5OSJ9LmZhLWZhY2Vib29rLWY6YmVmb3JlLC5mYS1mYWNlYm9vazpiZWZvcmV7Y29udGVudDoiXGYwOWEifS5mYS1naXRodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMDliIn0uZmEtdW5sb2NrOmJlZm9yZXtjb250ZW50OiJcZjA5YyJ9LmZhLWNyZWRpdC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjA5ZCJ9LmZhLWZlZWQ6YmVmb3JlLC5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtaGRkLW86YmVmb3Jle2NvbnRlbnQ6IlxmMGEwIn0uZmEtYnVsbGhvcm46YmVmb3Jle2NvbnRlbnQ6IlxmMGExIn0uZmEtYmVsbDpiZWZvcmV7Y29udGVudDoiXGYwZjMifS5mYS1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGYwYTMifS5mYS1oYW5kLW8tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE0In0uZmEtaGFuZC1vLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1vLXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtby1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhNyJ9LmZhLWFycm93LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBhOCJ9LmZhLWFycm93LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTkifS5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGFhIn0uZmEtYXJyb3ctY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGFiIn0uZmEtZ2xvYmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGFjIn0uZmEtd3JlbmNoOmJlZm9yZXtjb250ZW50OiJcZjBhZCJ9LmZhLXRhc2tzOmJlZm9yZXtjb250ZW50OiJcZjBhZSJ9LmZhLWZpbHRlcjpiZWZvcmV7Y29udGVudDoiXGYwYjAifS5mYS1icmllZmNhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGIxIn0uZmEtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYwYjIifS5mYS1ncm91cDpiZWZvcmUsLmZhLXVzZXJzOmJlZm9yZXtjb250ZW50OiJcZjBjMCJ9LmZhLWNoYWluOmJlZm9yZSwuZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1mbGFzazpiZWZvcmV7Y29udGVudDoiXGYwYzMifS5mYS1jdXQ6YmVmb3JlLC5mYS1zY2lzc29yczpiZWZvcmV7Y29udGVudDoiXGYwYzQifS5mYS1jb3B5OmJlZm9yZSwuZmEtZmlsZXMtbzpiZWZvcmV7Y29udGVudDoiXGYwYzUifS5mYS1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGM2In0uZmEtc2F2ZTpiZWZvcmUsLmZhLWZsb3BweS1vOmJlZm9yZXtjb250ZW50OiJcZjBjNyJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1uYXZpY29uOmJlZm9yZSwuZmEtcmVvcmRlcjpiZWZvcmUsLmZhLWJhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM5In0uZmEtbGlzdC11bDpiZWZvcmV7Y29udGVudDoiXGYwY2EifS5mYS1saXN0LW9sOmJlZm9yZXtjb250ZW50OiJcZjBjYiJ9LmZhLXN0cmlrZXRocm91Z2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGNjIn0uZmEtdW5kZXJsaW5lOmJlZm9yZXtjb250ZW50OiJcZjBjZCJ9LmZhLXRhYmxlOmJlZm9yZXtjb250ZW50OiJcZjBjZSJ9LmZhLW1hZ2ljOmJlZm9yZXtjb250ZW50OiJcZjBkMCJ9LmZhLXRydWNrOmJlZm9yZXtjb250ZW50OiJcZjBkMSJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkMyJ9LmZhLWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDQifS5mYS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwZDUifS5mYS1tb25leTpiZWZvcmV7Y29udGVudDoiXGYwZDYifS5mYS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkNyJ9LmZhLWNhcmV0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkOCJ9LmZhLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ5In0uZmEtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRhIn0uZmEtY29sdW1uczpiZWZvcmV7Y29udGVudDoiXGYwZGIifS5mYS11bnNvcnRlZDpiZWZvcmUsLmZhLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRjIn0uZmEtc29ydC1kb3duOmJlZm9yZSwuZmEtc29ydC1kZXNjOmJlZm9yZXtjb250ZW50OiJcZjBkZCJ9LmZhLXNvcnQtdXA6YmVmb3JlLC5mYS1zb3J0LWFzYzpiZWZvcmV7Y29udGVudDoiXGYwZGUifS5mYS1lbnZlbG9wZTpiZWZvcmV7Y29udGVudDoiXGYwZTAifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwZTEifS5mYS1yb3RhdGUtbGVmdDpiZWZvcmUsLmZhLXVuZG86YmVmb3Jle2NvbnRlbnQ6IlxmMGUyIn0uZmEtbGVnYWw6YmVmb3JlLC5mYS1nYXZlbDpiZWZvcmV7Y29udGVudDoiXGYwZTMifS5mYS1kYXNoYm9hcmQ6YmVmb3JlLC5mYS10YWNob21ldGVyOmJlZm9yZXtjb250ZW50OiJcZjBlNCJ9LmZhLWNvbW1lbnQtbzpiZWZvcmV7Y29udGVudDoiXGYwZTUifS5mYS1jb21tZW50cy1vOmJlZm9yZXtjb250ZW50OiJcZjBlNiJ9LmZhLWZsYXNoOmJlZm9yZSwuZmEtYm9sdDpiZWZvcmV7Y29udGVudDoiXGYwZTcifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXVtYnJlbGxhOmJlZm9yZXtjb250ZW50OiJcZjBlOSJ9LmZhLXBhc3RlOmJlZm9yZSwuZmEtY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjBlYSJ9LmZhLWxpZ2h0YnVsYi1vOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjBlYyJ9LmZhLWNsb3VkLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZCJ9LmZhLWNsb3VkLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYwZWUifS5mYS11c2VyLW1kOmJlZm9yZXtjb250ZW50OiJcZjBmMCJ9LmZhLXN0ZXRob3Njb3BlOmJlZm9yZXtjb250ZW50OiJcZjBmMSJ9LmZhLXN1aXRjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBmMiJ9LmZhLWJlbGwtbzpiZWZvcmV7Y29udGVudDoiXGYwYTIifS5mYS1jb2ZmZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMGY0In0uZmEtY3V0bGVyeTpiZWZvcmV7Y29udGVudDoiXGYwZjUifS5mYS1maWxlLXRleHQtbzpiZWZvcmV7Y29udGVudDoiXGYwZjYifS5mYS1idWlsZGluZy1vOmJlZm9yZXtjb250ZW50OiJcZjBmNyJ9LmZhLWhvc3BpdGFsLW86YmVmb3Jle2NvbnRlbnQ6IlxmMGY4In0uZmEtYW1idWxhbmNlOmJlZm9yZXtjb250ZW50OiJcZjBmOSJ9LmZhLW1lZGtpdDpiZWZvcmV7Y29udGVudDoiXGYwZmEifS5mYS1maWdodGVyLWpldDpiZWZvcmV7Y29udGVudDoiXGYwZmIifS5mYS1iZWVyOmJlZm9yZXtjb250ZW50OiJcZjBmYyJ9LmZhLWgtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBmZCJ9LmZhLXBsdXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBmZSJ9LmZhLWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwMCJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0uZmEtYW5nbGUtZG91YmxlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTAzIn0uZmEtYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDQifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1hbmdsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDYifS5mYS1hbmdsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwNyJ9LmZhLWRlc2t0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA4In0uZmEtbGFwdG9wOmJlZm9yZXtjb250ZW50OiJcZjEwOSJ9LmZhLXRhYmxldDpiZWZvcmV7Y29udGVudDoiXGYxMGEifS5mYS1tb2JpbGUtcGhvbmU6YmVmb3JlLC5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtY2lyY2xlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTBjIn0uZmEtcXVvdGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMGQifS5mYS1xdW90ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGUifS5mYS1zcGlubmVyOmJlZm9yZXtjb250ZW50OiJcZjExMCJ9LmZhLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxMTEifS5mYS1tYWlsLXJlcGx5OmJlZm9yZSwuZmEtcmVwbHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTEyIn0uZmEtZ2l0aHViLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxMTMifS5mYS1mb2xkZXItbzpiZWZvcmV7Y29udGVudDoiXGYxMTQifS5mYS1mb2xkZXItb3Blbi1vOmJlZm9yZXtjb250ZW50OiJcZjExNSJ9LmZhLXNtaWxlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTE4In0uZmEtZnJvd24tbzpiZWZvcmV7Y29udGVudDoiXGYxMTkifS5mYS1tZWgtbzpiZWZvcmV7Y29udGVudDoiXGYxMWEifS5mYS1nYW1lcGFkOmJlZm9yZXtjb250ZW50OiJcZjExYiJ9LmZhLWtleWJvYXJkLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTFjIn0uZmEtZmxhZy1vOmJlZm9yZXtjb250ZW50OiJcZjExZCJ9LmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZXtjb250ZW50OiJcZjExZSJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTIxIn0uZmEtbWFpbC1yZXBseS1hbGw6YmVmb3JlLC5mYS1yZXBseS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0uZmEtc3Rhci1oYWxmLWVtcHR5OmJlZm9yZSwuZmEtc3Rhci1oYWxmLWZ1bGw6YmVmb3JlLC5mYS1zdGFyLWhhbGYtbzpiZWZvcmV7Y29udGVudDoiXGYxMjMifS5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmV7Y29udGVudDoiXGYxMjQifS5mYS1jcm9wOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9LmZhLWNvZGUtZm9yazpiZWZvcmV7Y29udGVudDoiXGYxMjYifS5mYS11bmxpbms6YmVmb3JlLC5mYS1jaGFpbi1icm9rZW46YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0uZmEtcXVlc3Rpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTI4In0uZmEtaW5mbzpiZWZvcmV7Y29udGVudDoiXGYxMjkifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMmEifS5mYS1zdXBlcnNjcmlwdDpiZWZvcmV7Y29udGVudDoiXGYxMmIifS5mYS1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJjIn0uZmEtZXJhc2VyOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9LmZhLXB1enpsZS1waWVjZTpiZWZvcmV7Y29udGVudDoiXGYxMmUifS5mYS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjEzMCJ9LmZhLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTMxIn0uZmEtc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZjEzMiJ9LmZhLWNhbGVuZGFyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTMzIn0uZmEtZmlyZS1leHRpbmd1aXNoZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTM0In0uZmEtcm9ja2V0OmJlZm9yZXtjb250ZW50OiJcZjEzNSJ9LmZhLW1heGNkbjpiZWZvcmV7Y29udGVudDoiXGYxMzYifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEzNyJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9LmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTNhIn0uZmEtaHRtbDU6YmVmb3Jle2NvbnRlbnQ6IlxmMTNiIn0uZmEtY3NzMzpiZWZvcmV7Y29udGVudDoiXGYxM2MifS5mYS1hbmNob3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTNkIn0uZmEtdW5sb2NrLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxM2UifS5mYS1idWxsc2V5ZTpiZWZvcmV7Y29udGVudDoiXGYxNDAifS5mYS1lbGxpcHNpcy1oOmJlZm9yZXtjb250ZW50OiJcZjE0MSJ9LmZhLWVsbGlwc2lzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMTQyIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDMifS5mYS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxNDQifS5mYS10aWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ1In0uZmEtbWludXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLW1pbnVzLXNxdWFyZS1vOmJlZm9yZXtjb250ZW50OiJcZjE0NyJ9LmZhLWxldmVsLXVwOmJlZm9yZXtjb250ZW50OiJcZjE0OCJ9LmZhLWxldmVsLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0uZmEtY2hlY2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0YSJ9LmZhLXBlbmNpbC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRiIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRjIn0uZmEtc2hhcmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0ZCJ9LmZhLWNvbXBhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTRlIn0uZmEtdG9nZ2xlLWRvd246YmVmb3JlLC5mYS1jYXJldC1zcXVhcmUtby1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLXRvZ2dsZS11cDpiZWZvcmUsLmZhLWNhcmV0LXNxdWFyZS1vLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1MSJ9LmZhLXRvZ2dsZS1yaWdodDpiZWZvcmUsLmZhLWNhcmV0LXNxdWFyZS1vLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE1MiJ9LmZhLWV1cm86YmVmb3JlLC5mYS1ldXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTUzIn0uZmEtZ2JwOmJlZm9yZXtjb250ZW50OiJcZjE1NCJ9LmZhLWRvbGxhcjpiZWZvcmUsLmZhLXVzZDpiZWZvcmV7Y29udGVudDoiXGYxNTUifS5mYS1ydXBlZTpiZWZvcmUsLmZhLWlucjpiZWZvcmV7Y29udGVudDoiXGYxNTYifS5mYS1jbnk6YmVmb3JlLC5mYS1ybWI6YmVmb3JlLC5mYS15ZW46YmVmb3JlLC5mYS1qcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTU3In0uZmEtcnVibGU6YmVmb3JlLC5mYS1yb3VibGU6YmVmb3JlLC5mYS1ydWI6YmVmb3Jle2NvbnRlbnQ6IlxmMTU4In0uZmEtd29uOmJlZm9yZSwuZmEta3J3OmJlZm9yZXtjb250ZW50OiJcZjE1OSJ9LmZhLWJpdGNvaW46YmVmb3JlLC5mYS1idGM6YmVmb3Jle2NvbnRlbnQ6IlxmMTVhIn0uZmEtZmlsZTpiZWZvcmV7Y29udGVudDoiXGYxNWIifS5mYS1maWxlLXRleHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTVjIn0uZmEtc29ydC1hbHBoYS1hc2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0uZmEtc29ydC1hbHBoYS1kZXNjOmJlZm9yZXtjb250ZW50OiJcZjE1ZSJ9LmZhLXNvcnQtYW1vdW50LWFzYzpiZWZvcmV7Y29udGVudDoiXGYxNjAifS5mYS1zb3J0LWFtb3VudC1kZXNjOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLXNvcnQtbnVtZXJpYy1hc2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTYyIn0uZmEtc29ydC1udW1lcmljLWRlc2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTYzIn0uZmEtdGh1bWJzLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9LmZhLXRodW1icy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2NSJ9LmZhLXlvdXR1YmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE2NiJ9LmZhLXlvdXR1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTY3In0uZmEteGluZzpiZWZvcmV7Y29udGVudDoiXGYxNjgifS5mYS14aW5nLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNjkifS5mYS15b3V0dWJlLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMTZhIn0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1zdGFjay1vdmVyZmxvdzpiZWZvcmV7Y29udGVudDoiXGYxNmMifS5mYS1pbnN0YWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMTZkIn0uZmEtZmxpY2tyOmJlZm9yZXtjb250ZW50OiJcZjE2ZSJ9LmZhLWFkbjpiZWZvcmV7Y29udGVudDoiXGYxNzAifS5mYS1iaXRidWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTcxIn0uZmEtYml0YnVja2V0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNzIifS5mYS10dW1ibHI6YmVmb3Jle2NvbnRlbnQ6IlxmMTczIn0uZmEtdHVtYmxyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNzQifS5mYS1sb25nLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTc1In0uZmEtbG9uZy1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYxNzYifS5mYS1sb25nLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTc3In0uZmEtbG9uZy1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNzgifS5mYS1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGYxNzkifS5mYS13aW5kb3dzOmJlZm9yZXtjb250ZW50OiJcZjE3YSJ9LmZhLWFuZHJvaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTdiIn0uZmEtbGludXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0uZmEtZHJpYmJibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTdkIn0uZmEtc2t5cGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTdlIn0uZmEtZm91cnNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxODAifS5mYS10cmVsbG86YmVmb3Jle2NvbnRlbnQ6IlxmMTgxIn0uZmEtZmVtYWxlOmJlZm9yZXtjb250ZW50OiJcZjE4MiJ9LmZhLW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTgzIn0uZmEtZ2l0dGlwOmJlZm9yZSwuZmEtZ3JhdGlwYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMTg0In0uZmEtc3VuLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTg1In0uZmEtbW9vbi1vOmJlZm9yZXtjb250ZW50OiJcZjE4NiJ9LmZhLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTg3In0uZmEtYnVnOmJlZm9yZXtjb250ZW50OiJcZjE4OCJ9LmZhLXZrOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9LmZhLXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjE4YSJ9LmZhLXJlbnJlbjpiZWZvcmV7Y29udGVudDoiXGYxOGIifS5mYS1wYWdlbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMThjIn0uZmEtc3RhY2stZXhjaGFuZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMThkIn0uZmEtYXJyb3ctY2lyY2xlLW8tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMThlIn0uZmEtYXJyb3ctY2lyY2xlLW8tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxOTAifS5mYS10b2dnbGUtbGVmdDpiZWZvcmUsLmZhLWNhcmV0LXNxdWFyZS1vLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0uZmEtZG90LWNpcmNsZS1vOmJlZm9yZXtjb250ZW50OiJcZjE5MiJ9LmZhLXdoZWVsY2hhaXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTkzIn0uZmEtdmltZW8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5NCJ9LmZhLXR1cmtpc2gtbGlyYTpiZWZvcmUsLmZhLXRyeTpiZWZvcmV7Y29udGVudDoiXGYxOTUifS5mYS1wbHVzLXNxdWFyZS1vOmJlZm9yZXtjb250ZW50OiJcZjE5NiJ9LmZhLXNwYWNlLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk3In0uZmEtc2xhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTk4In0uZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5OSJ9LmZhLXdvcmRwcmVzczpiZWZvcmV7Y29udGVudDoiXGYxOWEifS5mYS1vcGVuaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTliIn0uZmEtaW5zdGl0dXRpb246YmVmb3JlLC5mYS1iYW5rOmJlZm9yZSwuZmEtdW5pdmVyc2l0eTpiZWZvcmV7Y29udGVudDoiXGYxOWMifS5mYS1tb3J0YXItYm9hcmQ6YmVmb3JlLC5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmV7Y29udGVudDoiXGYxOWQifS5mYS15YWhvbzpiZWZvcmV7Y29udGVudDoiXGYxOWUifS5mYS1nb29nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0uZmEtcmVkZGl0OmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9LmZhLXJlZGRpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEyIn0uZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMyJ9LmZhLXN0dW1ibGV1cG9uOmJlZm9yZXtjb250ZW50OiJcZjFhNCJ9LmZhLWRlbGljaW91czpiZWZvcmV7Y29udGVudDoiXGYxYTUifS5mYS1kaWdnOmJlZm9yZXtjb250ZW50OiJcZjFhNiJ9LmZhLXBpZWQtcGlwZXItcHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWE3In0uZmEtcGllZC1waXBlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWE4In0uZmEtZHJ1cGFsOmJlZm9yZXtjb250ZW50OiJcZjFhOSJ9LmZhLWpvb21sYTpiZWZvcmV7Y29udGVudDoiXGYxYWEifS5mYS1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYWIifS5mYS1mYXg6YmVmb3Jle2NvbnRlbnQ6IlxmMWFjIn0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtY2hpbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWFlIn0uZmEtcGF3OmJlZm9yZXtjb250ZW50OiJcZjFiMCJ9LmZhLXNwb29uOmJlZm9yZXtjb250ZW50OiJcZjFiMSJ9LmZhLWN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWIyIn0uZmEtY3ViZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWIzIn0uZmEtYmVoYW5jZTpiZWZvcmV7Y29udGVudDoiXGYxYjQifS5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjUifS5mYS1zdGVhbTpiZWZvcmV7Y29udGVudDoiXGYxYjYifS5mYS1zdGVhbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI3In0uZmEtcmVjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifS5mYS1hdXRvbW9iaWxlOmJlZm9yZSwuZmEtY2FyOmJlZm9yZXtjb250ZW50OiJcZjFiOSJ9LmZhLWNhYjpiZWZvcmUsLmZhLXRheGk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJhIn0uZmEtdHJlZTpiZWZvcmV7Y29udGVudDoiXGYxYmIifS5mYS1zcG90aWZ5OmJlZm9yZXtjb250ZW50OiJcZjFiYyJ9LmZhLWRldmlhbnRhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWJkIn0uZmEtc291bmRjbG91ZDpiZWZvcmV7Y29udGVudDoiXGYxYmUifS5mYS1kYXRhYmFzZTpiZWZvcmV7Y29udGVudDoiXGYxYzAifS5mYS1maWxlLXBkZi1vOmJlZm9yZXtjb250ZW50OiJcZjFjMSJ9LmZhLWZpbGUtd29yZC1vOmJlZm9yZXtjb250ZW50OiJcZjFjMiJ9LmZhLWZpbGUtZXhjZWwtbzpiZWZvcmV7Y29udGVudDoiXGYxYzMifS5mYS1maWxlLXBvd2VycG9pbnQtbzpiZWZvcmV7Y29udGVudDoiXGYxYzQifS5mYS1maWxlLXBob3RvLW86YmVmb3JlLC5mYS1maWxlLXBpY3R1cmUtbzpiZWZvcmUsLmZhLWZpbGUtaW1hZ2UtbzpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1maWxlLXppcC1vOmJlZm9yZSwuZmEtZmlsZS1hcmNoaXZlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM2In0uZmEtZmlsZS1zb3VuZC1vOmJlZm9yZSwuZmEtZmlsZS1hdWRpby1vOmJlZm9yZXtjb250ZW50OiJcZjFjNyJ9LmZhLWZpbGUtbW92aWUtbzpiZWZvcmUsLmZhLWZpbGUtdmlkZW8tbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLWNvZGUtbzpiZWZvcmV7Y29udGVudDoiXGYxYzkifS5mYS12aW5lOmJlZm9yZXtjb250ZW50OiJcZjFjYSJ9LmZhLWNvZGVwZW46YmVmb3Jle2NvbnRlbnQ6IlxmMWNiIn0uZmEtanNmaWRkbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNjIn0uZmEtbGlmZS1ib3V5OmJlZm9yZSwuZmEtbGlmZS1idW95OmJlZm9yZSwuZmEtbGlmZS1zYXZlcjpiZWZvcmUsLmZhLXN1cHBvcnQ6YmVmb3JlLC5mYS1saWZlLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWNkIn0uZmEtY2lyY2xlLW8tbm90Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWNlIn0uZmEtcmE6YmVmb3JlLC5mYS1yZXNpc3RhbmNlOmJlZm9yZSwuZmEtcmViZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWQwIn0uZmEtZ2U6YmVmb3JlLC5mYS1lbXBpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQxIn0uZmEtZ2l0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZDIifS5mYS1naXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWQzIn0uZmEteS1jb21iaW5hdG9yLXNxdWFyZTpiZWZvcmUsLmZhLXljLXNxdWFyZTpiZWZvcmUsLmZhLWhhY2tlci1uZXdzOmJlZm9yZXtjb250ZW50OiJcZjFkNCJ9LmZhLXRlbmNlbnQtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMWQ1In0uZmEtcXE6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ2In0uZmEtd2VjaGF0OmJlZm9yZSwuZmEtd2VpeGluOmJlZm9yZXtjb250ZW50OiJcZjFkNyJ9LmZhLXNlbmQ6YmVmb3JlLC5mYS1wYXBlci1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYxZDgifS5mYS1zZW5kLW86YmVmb3JlLC5mYS1wYXBlci1wbGFuZS1vOmJlZm9yZXtjb250ZW50OiJcZjFkOSJ9LmZhLWhpc3Rvcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWRhIn0uZmEtY2lyY2xlLXRoaW46YmVmb3Jle2NvbnRlbnQ6IlxmMWRiIn0uZmEtaGVhZGVyOmJlZm9yZXtjb250ZW50OiJcZjFkYyJ9LmZhLXBhcmFncmFwaDpiZWZvcmV7Y29udGVudDoiXGYxZGQifS5mYS1zbGlkZXJzOmJlZm9yZXtjb250ZW50OiJcZjFkZSJ9LmZhLXNoYXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxZTAifS5mYS1zaGFyZS1hbHQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFlMSJ9LmZhLWJvbWI6YmVmb3Jle2NvbnRlbnQ6IlxmMWUyIn0uZmEtc29jY2VyLWJhbGwtbzpiZWZvcmUsLmZhLWZ1dGJvbC1vOmJlZm9yZXtjb250ZW50OiJcZjFlMyJ9LmZhLXR0eTpiZWZvcmV7Y29udGVudDoiXGYxZTQifS5mYS1iaW5vY3VsYXJzOmJlZm9yZXtjb250ZW50OiJcZjFlNSJ9LmZhLXBsdWc6YmVmb3Jle2NvbnRlbnQ6IlxmMWU2In0uZmEtc2xpZGVzaGFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTcifS5mYS10d2l0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWU4In0uZmEteWVscDpiZWZvcmV7Y29udGVudDoiXGYxZTkifS5mYS1uZXdzcGFwZXItbzpiZWZvcmV7Y29udGVudDoiXGYxZWEifS5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLWNhbGN1bGF0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMWVjIn0uZmEtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9LmZhLWdvb2dsZS13YWxsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWVlIn0uZmEtY2MtdmlzYTpiZWZvcmV7Y29udGVudDoiXGYxZjAifS5mYS1jYy1tYXN0ZXJjYXJkOmJlZm9yZXtjb250ZW50OiJcZjFmMSJ9LmZhLWNjLWRpc2NvdmVyOmJlZm9yZXtjb250ZW50OiJcZjFmMiJ9LmZhLWNjLWFtZXg6YmVmb3Jle2NvbnRlbnQ6IlxmMWYzIn0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLWNjLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGYxZjUifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLWJlbGwtc2xhc2gtbzpiZWZvcmV7Y29udGVudDoiXGYxZjcifS5mYS10cmFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjgifS5mYS1jb3B5cmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWY5In0uZmEtYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWZhIn0uZmEtZXllZHJvcHBlcjpiZWZvcmV7Y29udGVudDoiXGYxZmIifS5mYS1wYWludC1icnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1iaXJ0aGRheS1jYWtlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9LmZhLWFyZWEtY2hhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWZlIn0uZmEtcGllLWNoYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIwMCJ9LmZhLWxpbmUtY2hhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjAxIn0uZmEtbGFzdGZtOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9LmZhLWxhc3RmbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0uZmEtdG9nZ2xlLW9mZjpiZWZvcmV7Y29udGVudDoiXGYyMDQifS5mYS10b2dnbGUtb246YmVmb3Jle2NvbnRlbnQ6IlxmMjA1In0uZmEtYmljeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMDYifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1hbmdlbGxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMjA5In0uZmEtY2M6YmVmb3Jle2NvbnRlbnQ6IlxmMjBhIn0uZmEtc2hla2VsOmJlZm9yZSwuZmEtc2hlcWVsOmJlZm9yZSwuZmEtaWxzOmJlZm9yZXtjb250ZW50OiJcZjIwYiJ9LmZhLW1lYW5wYXRoOmJlZm9yZXtjb250ZW50OiJcZjIwYyJ9LmZhLWJ1eXNlbGxhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMjBkIn0uZmEtY29ubmVjdGRldmVsb3A6YmVmb3Jle2NvbnRlbnQ6IlxmMjBlIn0uZmEtZGFzaGN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0uZmEtZm9ydW1iZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjExIn0uZmEtbGVhbnB1YjpiZWZvcmV7Y29udGVudDoiXGYyMTIifS5mYS1zZWxsc3k6YmVmb3Jle2NvbnRlbnQ6IlxmMjEzIn0uZmEtc2hpcnRzaW5idWxrOmJlZm9yZXtjb250ZW50OiJcZjIxNCJ9LmZhLXNpbXBseWJ1aWx0OmJlZm9yZXtjb250ZW50OiJcZjIxNSJ9LmZhLXNreWF0bGFzOmJlZm9yZXtjb250ZW50OiJcZjIxNiJ9LmZhLWNhcnQtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMTcifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtZGlhbW9uZDpiZWZvcmV7Y29udGVudDoiXGYyMTkifS5mYS1zaGlwOmJlZm9yZXtjb250ZW50OiJcZjIxYSJ9LmZhLXVzZXItc2VjcmV0OmJlZm9yZXtjb250ZW50OiJcZjIxYiJ9LmZhLW1vdG9yY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjFjIn0uZmEtc3RyZWV0LXZpZXc6YmVmb3Jle2NvbnRlbnQ6IlxmMjFkIn0uZmEtaGVhcnRiZWF0OmJlZm9yZXtjb250ZW50OiJcZjIxZSJ9LmZhLXZlbnVzOmJlZm9yZXtjb250ZW50OiJcZjIyMSJ9LmZhLW1hcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIyIn0uZmEtbWVyY3VyeTpiZWZvcmV7Y29udGVudDoiXGYyMjMifS5mYS1pbnRlcnNleDpiZWZvcmUsLmZhLXRyYW5zZ2VuZGVyOmJlZm9yZXtjb250ZW50OiJcZjIyNCJ9LmZhLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyMjUifS5mYS12ZW51cy1kb3VibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjI2In0uZmEtbWFycy1kb3VibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjI3In0uZmEtdmVudXMtbWFyczpiZWZvcmV7Y29udGVudDoiXGYyMjgifS5mYS1tYXJzLXN0cm9rZTpiZWZvcmV7Y29udGVudDoiXGYyMjkifS5mYS1tYXJzLXN0cm9rZS12OmJlZm9yZXtjb250ZW50OiJcZjIyYSJ9LmZhLW1hcnMtc3Ryb2tlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMjJiIn0uZmEtbmV1dGVyOmJlZm9yZXtjb250ZW50OiJcZjIyYyJ9LmZhLWdlbmRlcmxlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjJkIn0uZmEtZmFjZWJvb2stb2ZmaWNpYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMjMwIn0uZmEtcGludGVyZXN0LXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjMxIn0uZmEtd2hhdHNhcHA6YmVmb3Jle2NvbnRlbnQ6IlxmMjMyIn0uZmEtc2VydmVyOmJlZm9yZXtjb250ZW50OiJcZjIzMyJ9LmZhLXVzZXItcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMzQifS5mYS11c2VyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjIzNSJ9LmZhLWhvdGVsOmJlZm9yZSwuZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLXZpYWNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMjM3In0uZmEtdHJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmMjM4In0uZmEtc3Vid2F5OmJlZm9yZXtjb250ZW50OiJcZjIzOSJ9LmZhLW1lZGl1bTpiZWZvcmV7Y29udGVudDoiXGYyM2EifS5mYS15YzpiZWZvcmUsLmZhLXktY29tYmluYXRvcjpiZWZvcmV7Y29udGVudDoiXGYyM2IifS5mYS1vcHRpbi1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjIzYyJ9LmZhLW9wZW5jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIzZCJ9LmZhLWV4cGVkaXRlZHNzbDpiZWZvcmV7Y29udGVudDoiXGYyM2UifS5mYS1iYXR0ZXJ5LTQ6YmVmb3JlLC5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMjQwIn0uZmEtYmF0dGVyeS0zOmJlZm9yZSwuZmEtYmF0dGVyeS10aHJlZS1xdWFydGVyczpiZWZvcmV7Y29udGVudDoiXGYyNDEifS5mYS1iYXR0ZXJ5LTI6YmVmb3JlLC5mYS1iYXR0ZXJ5LWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjQyIn0uZmEtYmF0dGVyeS0xOmJlZm9yZSwuZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjI0MyJ9LmZhLWJhdHRlcnktMDpiZWZvcmUsLmZhLWJhdHRlcnktZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ0In0uZmEtbW91c2UtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDUifS5mYS1pLWN1cnNvcjpiZWZvcmV7Y29udGVudDoiXGYyNDYifS5mYS1vYmplY3QtZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ3In0uZmEtb2JqZWN0LXVuZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ4In0uZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtc3RpY2t5LW5vdGUtbzpiZWZvcmV7Y29udGVudDoiXGYyNGEifS5mYS1jYy1qY2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjRiIn0uZmEtY2MtZGluZXJzLWNsdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjRjIn0uZmEtY2xvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjRkIn0uZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmV7Y29udGVudDoiXGYyNGUifS5mYS1ob3VyZ2xhc3MtbzpiZWZvcmV7Y29udGVudDoiXGYyNTAifS5mYS1ob3VyZ2xhc3MtMTpiZWZvcmUsLmZhLWhvdXJnbGFzcy1zdGFydDpiZWZvcmV7Y29udGVudDoiXGYyNTEifS5mYS1ob3VyZ2xhc3MtMjpiZWZvcmUsLmZhLWhvdXJnbGFzcy1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjI1MiJ9LmZhLWhvdXJnbGFzcy0zOmJlZm9yZSwuZmEtaG91cmdsYXNzLWVuZDpiZWZvcmV7Y29udGVudDoiXGYyNTMifS5mYS1ob3VyZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjU0In0uZmEtaGFuZC1ncmFiLW86YmVmb3JlLC5mYS1oYW5kLXJvY2stbzpiZWZvcmV7Y29udGVudDoiXGYyNTUifS5mYS1oYW5kLXN0b3AtbzpiZWZvcmUsLmZhLWhhbmQtcGFwZXItbzpiZWZvcmV7Y29udGVudDoiXGYyNTYifS5mYS1oYW5kLXNjaXNzb3JzLW86YmVmb3Jle2NvbnRlbnQ6IlxmMjU3In0uZmEtaGFuZC1saXphcmQtbzpiZWZvcmV7Y29udGVudDoiXGYyNTgifS5mYS1oYW5kLXNwb2NrLW86YmVmb3Jle2NvbnRlbnQ6IlxmMjU5In0uZmEtaGFuZC1wb2ludGVyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMjVhIn0uZmEtaGFuZC1wZWFjZS1vOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLXRyYWRlbWFyazpiZWZvcmV7Y29udGVudDoiXGYyNWMifS5mYS1yZWdpc3RlcmVkOmJlZm9yZXtjb250ZW50OiJcZjI1ZCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjVlIn0uZmEtZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmMjYwIn0uZmEtZ2ctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI2MSJ9LmZhLXRyaXBhZHZpc29yOmJlZm9yZXtjb250ZW50OiJcZjI2MiJ9LmZhLW9kbm9rbGFzc25pa2k6YmVmb3Jle2NvbnRlbnQ6IlxmMjYzIn0uZmEtb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjY0In0uZmEtZ2V0LXBvY2tldDpiZWZvcmV7Y29udGVudDoiXGYyNjUifS5mYS13aWtpcGVkaWEtdzpiZWZvcmV7Y29udGVudDoiXGYyNjYifS5mYS1zYWZhcmk6YmVmb3Jle2NvbnRlbnQ6IlxmMjY3In0uZmEtY2hyb21lOmJlZm9yZXtjb250ZW50OiJcZjI2OCJ9LmZhLWZpcmVmb3g6YmVmb3Jle2NvbnRlbnQ6IlxmMjY5In0uZmEtb3BlcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMjZhIn0uZmEtaW50ZXJuZXQtZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjZiIn0uZmEtdHY6YmVmb3JlLC5mYS10ZWxldmlzaW9uOmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLWNvbnRhbzpiZWZvcmV7Y29udGVudDoiXGYyNmQifS5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1hbWF6b246YmVmb3Jle2NvbnRlbnQ6IlxmMjcwIn0uZmEtY2FsZW5kYXItcGx1cy1vOmJlZm9yZXtjb250ZW50OiJcZjI3MSJ9LmZhLWNhbGVuZGFyLW1pbnVzLW86YmVmb3Jle2NvbnRlbnQ6IlxmMjcyIn0uZmEtY2FsZW5kYXItdGltZXMtbzpiZWZvcmV7Y29udGVudDoiXGYyNzMifS5mYS1jYWxlbmRhci1jaGVjay1vOmJlZm9yZXtjb250ZW50OiJcZjI3NCJ9LmZhLWluZHVzdHJ5OmJlZm9yZXtjb250ZW50OiJcZjI3NSJ9LmZhLW1hcC1waW46YmVmb3Jle2NvbnRlbnQ6IlxmMjc2In0uZmEtbWFwLXNpZ25zOmJlZm9yZXtjb250ZW50OiJcZjI3NyJ9LmZhLW1hcC1vOmJlZm9yZXtjb250ZW50OiJcZjI3OCJ9LmZhLW1hcDpiZWZvcmV7Y29udGVudDoiXGYyNzkifS5mYS1jb21tZW50aW5nOmJlZm9yZXtjb250ZW50OiJcZjI3YSJ9LmZhLWNvbW1lbnRpbmctbzpiZWZvcmV7Y29udGVudDoiXGYyN2IifS5mYS1ob3V6ejpiZWZvcmV7Y29udGVudDoiXGYyN2MifS5mYS12aW1lbzpiZWZvcmV7Y29udGVudDoiXGYyN2QifS5mYS1ibGFjay10aWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjdlIn0uZmEtZm9udGljb25zOmJlZm9yZXtjb250ZW50OiJcZjI4MCJ9LmZhLXJlZGRpdC1hbGllbjpiZWZvcmV7Y29udGVudDoiXGYyODEifS5mYS1lZGdlOmJlZm9yZXtjb250ZW50OiJcZjI4MiJ9LmZhLWNyZWRpdC1jYXJkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyODMifS5mYS1jb2RpZXBpZTpiZWZvcmV7Y29udGVudDoiXGYyODQifS5mYS1tb2R4OmJlZm9yZXtjb250ZW50OiJcZjI4NSJ9LmZhLWZvcnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyODYifS5mYS11c2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjg3In0uZmEtcHJvZHVjdC1odW50OmJlZm9yZXtjb250ZW50OiJcZjI4OCJ9LmZhLW1peGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjI4OSJ9LmZhLXNjcmliZDpiZWZvcmV7Y29udGVudDoiXGYyOGEifS5mYS1wYXVzZS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjhiIn0uZmEtcGF1c2UtY2lyY2xlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMjhjIn0uZmEtc3RvcC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjhkIn0uZmEtc3RvcC1jaXJjbGUtbzpiZWZvcmV7Y29udGVudDoiXGYyOGUifS5mYS1zaG9wcGluZy1iYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkwIn0uZmEtc2hvcHBpbmctYmFza2V0OmJlZm9yZXtjb250ZW50OiJcZjI5MSJ9LmZhLWhhc2h0YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkyIn0uZmEtYmx1ZXRvb3RoOmJlZm9yZXtjb250ZW50OiJcZjI5MyJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLXBlcmNlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjk1In0uZmEtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZjI5NiJ9LmZhLXdwYmVnaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk3In0uZmEtd3Bmb3JtczpiZWZvcmV7Y29udGVudDoiXGYyOTgifS5mYS1lbnZpcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMjk5In0uZmEtdW5pdmVyc2FsLWFjY2VzczpiZWZvcmV7Y29udGVudDoiXGYyOWEifS5mYS13aGVlbGNoYWlyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyOWIifS5mYS1xdWVzdGlvbi1jaXJjbGUtbzpiZWZvcmV7Y29udGVudDoiXGYyOWMifS5mYS1ibGluZDpiZWZvcmV7Y29udGVudDoiXGYyOWQifS5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmV7Y29udGVudDoiXGYyOWUifS5mYS12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYyYTAifS5mYS1icmFpbGxlOmJlZm9yZXtjb250ZW50OiJcZjJhMSJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmV7Y29udGVudDoiXGYyYTIifS5mYS1hc2wtaW50ZXJwcmV0aW5nOmJlZm9yZSwuZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMmEzIn0uZmEtZGVhZm5lc3M6YmVmb3JlLC5mYS1oYXJkLW9mLWhlYXJpbmc6YmVmb3JlLC5mYS1kZWFmOmJlZm9yZXtjb250ZW50OiJcZjJhNCJ9LmZhLWdsaWRlOmJlZm9yZXtjb250ZW50OiJcZjJhNSJ9LmZhLWdsaWRlLWc6YmVmb3Jle2NvbnRlbnQ6IlxmMmE2In0uZmEtc2lnbmluZzpiZWZvcmUsLmZhLXNpZ24tbGFuZ3VhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmE3In0uZmEtbG93LXZpc2lvbjpiZWZvcmV7Y29udGVudDoiXGYyYTgifS5mYS12aWFkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMmE5In0uZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWEifS5mYS1zbmFwY2hhdDpiZWZvcmV7Y29udGVudDoiXGYyYWIifS5mYS1zbmFwY2hhdC1naG9zdDpiZWZvcmV7Y29udGVudDoiXGYyYWMifS5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmFkIn0uZmEtcGllZC1waXBlcjpiZWZvcmV7Y29udGVudDoiXGYyYWUifS5mYS1maXJzdC1vcmRlcjpiZWZvcmV7Y29udGVudDoiXGYyYjAifS5mYS15b2FzdDpiZWZvcmV7Y29udGVudDoiXGYyYjEifS5mYS10aGVtZWlzbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmIyIn0uZmEtZ29vZ2xlLXBsdXMtY2lyY2xlOmJlZm9yZSwuZmEtZ29vZ2xlLXBsdXMtb2ZmaWNpYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMmIzIn0uZmEtZmE6YmVmb3JlLC5mYS1mb250LWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI0In0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLCAwLCAwLCAwKTtib3JkZXI6MH0uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1c3twb3NpdGlvbjpzdGF0aWM7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxlO2NsaXA6YXV0b30K"}},"time_used":196,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":196,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/js/ethers-5.2.umd.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.329Z","timestamp":1785150870329,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /js/ethers-5.2.umd.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: script\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Mon, 25 Mar 2024 18:27:04 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"6601c1f8-b2f8e\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=h22D7BYmOaN4RrIuodUu1Lug1EASt32NwEKAMQys4bJDUCxGE9AmbVJd6%2FMuXP4icvaZqzuVbK%2FAyBUdhnRWJV%2F1NuRPKTZtdJLOw5VMzSeo693CBzPynLEb5w%3D%3D\"}]}\r\ncf-ray: a21b388b9bd056a2-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"]}],"data":{"size":733070,"size_decoded":204389,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"50ed955cf32ac8e4e1daa0fac8fcde98","sha1":"fc073f2b9715e44dc2346d7cbe0b491fb59da146","sha256":"c2bcdc085e0557a379a6056c629be748d22a3c1dbe539a48ae02de7d69c95eff","sha512":"62b27b6739ad99525dc02c2ee81f754e15062df363b137477f521d3dfdc9ec0650229543bda85c04b5a8282d5e6d9f5137aba99bd66178814a49feecee4fd961","ssdeep":"12288:YPEmxeUs6ky8Xb863bkmCEuls/LaottWsv1TY4:YPTWbsEss/LtttJz","tlshash":"4df44b85b3a5b0b583c628a4143f5006f63af46b502c40a4f759faf269f9d8c957bb3c","first_seen":"2023-03-07T12:07:13Z","last_seen":"2026-07-27T11:25:33.520054Z","times_seen":1164,"resource_available":true,"data":"KGZ1bmN0aW9uKGdsb2JhbCxmYWN0b3J5KXt0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCI/bW9kdWxlLmV4cG9ydHM9ZmFjdG9yeSgpOnR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShmYWN0b3J5KTooZ2xvYmFsPXR5cGVvZiBnbG9iYWxUaGlzIT09InVuZGVmaW5lZCI/Z2xvYmFsVGhpczpnbG9iYWx8fHNlbGYsZ2xvYmFsLmV0aGVycz1mYWN0b3J5KCkpfSkodGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgY29tbW9uanNHbG9iYWw9dHlwZW9mIGdsb2JhbFRoaXMhPT0idW5kZWZpbmVkIj9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIj93aW5kb3c6dHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiP2dsb2JhbDp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6e307ZnVuY3Rpb24gZ2V0RGVmYXVsdEV4cG9ydEZyb21DanMoeCl7cmV0dXJuIHgmJnguX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHgsImRlZmF1bHQiKT94WyJkZWZhdWx0Il06eH1mdW5jdGlvbiBjcmVhdGVDb21tb25qc01vZHVsZShmbixiYXNlZGlyLG1vZHVsZSl7cmV0dXJuIG1vZHVsZT17cGF0aDpiYXNlZGlyLGV4cG9ydHM6e30scmVxdWlyZTpmdW5jdGlvbihwYXRoLGJhc2Upe3JldHVybiBjb21tb25qc1JlcXVpcmUocGF0aCxiYXNlPT09dW5kZWZpbmVkfHxiYXNlPT09bnVsbD9tb2R1bGUucGF0aDpiYXNlKX19LGZuKG1vZHVsZSxtb2R1bGUuZXhwb3J0cyksbW9kdWxlLmV4cG9ydHN9ZnVuY3Rpb24gZ2V0RGVmYXVsdEV4cG9ydEZyb21OYW1lc3BhY2VJZlByZXNlbnQobil7cmV0dXJuIG4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJkZWZhdWx0Iik/blsiZGVmYXVsdCJdOm59ZnVuY3Rpb24gZ2V0RGVmYXVsdEV4cG9ydEZyb21OYW1lc3BhY2VJZk5vdE5hbWVkKG4pe3JldHVybiBuJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobiwiZGVmYXVsdCIpJiZPYmplY3Qua2V5cyhuKS5sZW5ndGg9PT0xP25bImRlZmF1bHQiXTpufWZ1bmN0aW9uIGdldEF1Z21lbnRlZE5hbWVzcGFjZShuKXtpZihuLl9fZXNNb2R1bGUpcmV0dXJuIG47dmFyIGE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO09iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24oayl7dmFyIGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGspO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGssZC5nZXQ/ZDp7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuW2tdfX0pfSk7cmV0dXJuIGF9ZnVuY3Rpb24gY29tbW9uanNSZXF1aXJlKCl7dGhyb3cgbmV3IEVycm9yKCJEeW5hbWljIHJlcXVpcmVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBAcm9sbHVwL3BsdWdpbi1jb21tb25qcyIpfXZhciBibj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUpeyhmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGFzc2VydCh2YWwsbXNnKXtpZighdmFsKXRocm93IG5ldyBFcnJvcihtc2d8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gaW5oZXJpdHMoY3RvcixzdXBlckN0b3Ipe2N0b3Iuc3VwZXJfPXN1cGVyQ3Rvcjt2YXIgVGVtcEN0b3I9ZnVuY3Rpb24oKXt9O1RlbXBDdG9yLnByb3RvdHlwZT1zdXBlckN0b3IucHJvdG90eXBlO2N0b3IucHJvdG90eXBlPW5ldyBUZW1wQ3RvcjtjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jdG9yfWZ1bmN0aW9uIEJOKG51bWJlcixiYXNlLGVuZGlhbil7aWYoQk4uaXNCTihudW1iZXIpKXtyZXR1cm4gbnVtYmVyfXRoaXMubmVnYXRpdmU9MDt0aGlzLndvcmRzPW51bGw7dGhpcy5sZW5ndGg9MDt0aGlzLnJlZD1udWxsO2lmKG51bWJlciE9PW51bGwpe2lmKGJhc2U9PT0ibGUifHxiYXNlPT09ImJlIil7ZW5kaWFuPWJhc2U7YmFzZT0xMH10aGlzLl9pbml0KG51bWJlcnx8MCxiYXNlfHwxMCxlbmRpYW58fCJiZSIpfX1pZih0eXBlb2YgbW9kdWxlPT09Im9iamVjdCIpe21vZHVsZS5leHBvcnRzPUJOfWVsc2V7ZXhwb3J0cy5CTj1CTn1CTi5CTj1CTjtCTi53b3JkU2l6ZT0yNjt2YXIgQnVmZmVyO3RyeXtpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cuQnVmZmVyIT09InVuZGVmaW5lZCIpe0J1ZmZlcj13aW5kb3cuQnVmZmVyfWVsc2V7QnVmZmVyPW51bGwuQnVmZmVyfX1jYXRjaChlKXt9Qk4uaXNCTj1mdW5jdGlvbiBpc0JOKG51bSl7aWYobnVtIGluc3RhbmNlb2YgQk4pe3JldHVybiB0cnVlfXJldHVybiBudW0hPT1udWxsJiZ0eXBlb2YgbnVtPT09Im9iamVjdCImJm51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUJOLndvcmRTaXplJiZBcnJheS5pc0FycmF5KG51bS53b3Jkcyl9O0JOLm1heD1mdW5jdGlvbiBtYXgobGVmdCxyaWdodCl7aWYobGVmdC5jbXAocmlnaHQpPjApcmV0dXJuIGxlZnQ7cmV0dXJuIHJpZ2h0fTtCTi5taW49ZnVuY3Rpb24gbWluKGxlZnQscmlnaHQpe2lmKGxlZnQuY21wKHJpZ2h0KTwwKXJldHVybiBsZWZ0O3JldHVybiByaWdodH07Qk4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uIGluaXQobnVtYmVyLGJhc2UsZW5kaWFuKXtpZih0eXBlb2YgbnVtYmVyPT09Im51bWJlciIpe3JldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlcixiYXNlLGVuZGlhbil9aWYodHlwZW9mIG51bWJlcj09PSJvYmplY3QiKXtyZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlcixiYXNlLGVuZGlhbil9aWYoYmFzZT09PSJoZXgiKXtiYXNlPTE2fWFzc2VydChiYXNlPT09KGJhc2V8MCkmJmJhc2U+PTImJmJhc2U8PTM2KTtudW1iZXI9bnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpO3ZhciBzdGFydD0wO2lmKG51bWJlclswXT09PSItIil7c3RhcnQrKzt0aGlzLm5lZ2F0aXZlPTF9aWYoc3RhcnQ8bnVtYmVyLmxlbmd0aCl7aWYoYmFzZT09PTE2KXt0aGlzLl9wYXJzZUhleChudW1iZXIsc3RhcnQsZW5kaWFuKX1lbHNle3RoaXMuX3BhcnNlQmFzZShudW1iZXIsYmFzZSxzdGFydCk7aWYoZW5kaWFuPT09ImxlIil7dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGJhc2UsZW5kaWFuKX19fX07Qk4ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uIF9pbml0TnVtYmVyKG51bWJlcixiYXNlLGVuZGlhbil7aWYobnVtYmVyPDApe3RoaXMubmVnYXRpdmU9MTtudW1iZXI9LW51bWJlcn1pZihudW1iZXI8NjcxMDg4NjQpe3RoaXMud29yZHM9W251bWJlciY2NzEwODg2M107dGhpcy5sZW5ndGg9MX1lbHNlIGlmKG51bWJlcjw0NTAzNTk5NjI3MzcwNDk2KXt0aGlzLndvcmRzPVtudW1iZXImNjcxMDg4NjMsbnVtYmVyLzY3MTA4ODY0JjY3MTA4ODYzXTt0aGlzLmxlbmd0aD0yfWVsc2V7YXNzZXJ0KG51bWJlcjw5MDA3MTk5MjU0NzQwOTkyKTt0aGlzLndvcmRzPVtudW1iZXImNjcxMDg4NjMsbnVtYmVyLzY3MTA4ODY0JjY3MTA4ODYzLDFdO3RoaXMubGVuZ3RoPTN9aWYoZW5kaWFuIT09ImxlIilyZXR1cm47dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGJhc2UsZW5kaWFuKX07Qk4ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24gX2luaXRBcnJheShudW1iZXIsYmFzZSxlbmRpYW4pe2Fzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aD09PSJudW1iZXIiKTtpZihudW1iZXIubGVuZ3RoPD0wKXt0aGlzLndvcmRzPVswXTt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfXRoaXMubGVuZ3RoPU1hdGguY2VpbChudW1iZXIubGVuZ3RoLzMpO3RoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT0wfXZhciBqLHc7dmFyIG9mZj0wO2lmKGVuZGlhbj09PSJiZSIpe2ZvcihpPW51bWJlci5sZW5ndGgtMSxqPTA7aT49MDtpLT0zKXt3PW51bWJlcltpXXxudW1iZXJbaS0xXTw8OHxudW1iZXJbaS0yXTw8MTY7dGhpcy53b3Jkc1tqXXw9dzw8b2ZmJjY3MTA4ODYzO3RoaXMud29yZHNbaisxXT13Pj4+MjYtb2ZmJjY3MTA4ODYzO29mZis9MjQ7aWYob2ZmPj0yNil7b2ZmLT0yNjtqKyt9fX1lbHNlIGlmKGVuZGlhbj09PSJsZSIpe2ZvcihpPTAsaj0wO2k8bnVtYmVyLmxlbmd0aDtpKz0zKXt3PW51bWJlcltpXXxudW1iZXJbaSsxXTw8OHxudW1iZXJbaSsyXTw8MTY7dGhpcy53b3Jkc1tqXXw9dzw8b2ZmJjY3MTA4ODYzO3RoaXMud29yZHNbaisxXT13Pj4+MjYtb2ZmJjY3MTA4ODYzO29mZis9MjQ7aWYob2ZmPj0yNil7b2ZmLT0yNjtqKyt9fX1yZXR1cm4gdGhpcy5zdHJpcCgpfTtmdW5jdGlvbiBwYXJzZUhleDRCaXRzKHN0cmluZyxpbmRleCl7dmFyIGM9c3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO2lmKGM+PTY1JiZjPD03MCl7cmV0dXJuIGMtNTV9ZWxzZSBpZihjPj05NyYmYzw9MTAyKXtyZXR1cm4gYy04N31lbHNle3JldHVybiBjLTQ4JjE1fX1mdW5jdGlvbiBwYXJzZUhleEJ5dGUoc3RyaW5nLGxvd2VyQm91bmQsaW5kZXgpe3ZhciByPXBhcnNlSGV4NEJpdHMoc3RyaW5nLGluZGV4KTtpZihpbmRleC0xPj1sb3dlckJvdW5kKXtyfD1wYXJzZUhleDRCaXRzKHN0cmluZyxpbmRleC0xKTw8NH1yZXR1cm4gcn1CTi5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uIF9wYXJzZUhleChudW1iZXIsc3RhcnQsZW5kaWFuKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKG51bWJlci5sZW5ndGgtc3RhcnQpLzYpO3RoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT0wfXZhciBvZmY9MDt2YXIgaj0wO3ZhciB3O2lmKGVuZGlhbj09PSJiZSIpe2ZvcihpPW51bWJlci5sZW5ndGgtMTtpPj1zdGFydDtpLT0yKXt3PXBhcnNlSGV4Qnl0ZShudW1iZXIsc3RhcnQsaSk8PG9mZjt0aGlzLndvcmRzW2pdfD13JjY3MTA4ODYzO2lmKG9mZj49MTgpe29mZi09MTg7ais9MTt0aGlzLndvcmRzW2pdfD13Pj4+MjZ9ZWxzZXtvZmYrPTh9fX1lbHNle3ZhciBwYXJzZUxlbmd0aD1udW1iZXIubGVuZ3RoLXN0YXJ0O2ZvcihpPXBhcnNlTGVuZ3RoJTI9PT0wP3N0YXJ0KzE6c3RhcnQ7aTxudW1iZXIubGVuZ3RoO2krPTIpe3c9cGFyc2VIZXhCeXRlKG51bWJlcixzdGFydCxpKTw8b2ZmO3RoaXMud29yZHNbal18PXcmNjcxMDg4NjM7aWYob2ZmPj0xOCl7b2ZmLT0xODtqKz0xO3RoaXMud29yZHNbal18PXc+Pj4yNn1lbHNle29mZis9OH19fXRoaXMuc3RyaXAoKX07ZnVuY3Rpb24gcGFyc2VCYXNlKHN0cixzdGFydCxlbmQsbXVsKXt2YXIgcj0wO3ZhciBsZW49TWF0aC5taW4oc3RyLmxlbmd0aCxlbmQpO2Zvcih2YXIgaT1zdGFydDtpPGxlbjtpKyspe3ZhciBjPXN0ci5jaGFyQ29kZUF0KGkpLTQ4O3IqPW11bDtpZihjPj00OSl7cis9Yy00OSsxMH1lbHNlIGlmKGM+PTE3KXtyKz1jLTE3KzEwfWVsc2V7cis9Y319cmV0dXJuIHJ9Qk4ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24gX3BhcnNlQmFzZShudW1iZXIsYmFzZSxzdGFydCl7dGhpcy53b3Jkcz1bMF07dGhpcy5sZW5ndGg9MTtmb3IodmFyIGxpbWJMZW49MCxsaW1iUG93PTE7bGltYlBvdzw9NjcxMDg4NjM7bGltYlBvdyo9YmFzZSl7bGltYkxlbisrfWxpbWJMZW4tLTtsaW1iUG93PWxpbWJQb3cvYmFzZXwwO3ZhciB0b3RhbD1udW1iZXIubGVuZ3RoLXN0YXJ0O3ZhciBtb2Q9dG90YWwlbGltYkxlbjt2YXIgZW5kPU1hdGgubWluKHRvdGFsLHRvdGFsLW1vZCkrc3RhcnQ7dmFyIHdvcmQ9MDtmb3IodmFyIGk9c3RhcnQ7aTxlbmQ7aSs9bGltYkxlbil7d29yZD1wYXJzZUJhc2UobnVtYmVyLGksaStsaW1iTGVuLGJhc2UpO3RoaXMuaW11bG4obGltYlBvdyk7aWYodGhpcy53b3Jkc1swXSt3b3JkPDY3MTA4ODY0KXt0aGlzLndvcmRzWzBdKz13b3JkfWVsc2V7dGhpcy5faWFkZG4od29yZCl9fWlmKG1vZCE9PTApe3ZhciBwb3c9MTt3b3JkPXBhcnNlQmFzZShudW1iZXIsaSxudW1iZXIubGVuZ3RoLGJhc2UpO2ZvcihpPTA7aTxtb2Q7aSsrKXtwb3cqPWJhc2V9dGhpcy5pbXVsbihwb3cpO2lmKHRoaXMud29yZHNbMF0rd29yZDw2NzEwODg2NCl7dGhpcy53b3Jkc1swXSs9d29yZH1lbHNle3RoaXMuX2lhZGRuKHdvcmQpfX10aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uIGNvcHkoZGVzdCl7ZGVzdC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXtkZXN0LndvcmRzW2ldPXRoaXMud29yZHNbaV19ZGVzdC5sZW5ndGg9dGhpcy5sZW5ndGg7ZGVzdC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlO2Rlc3QucmVkPXRoaXMucmVkfTtCTi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24gY2xvbmUoKXt2YXIgcj1uZXcgQk4obnVsbCk7dGhpcy5jb3B5KHIpO3JldHVybiByfTtCTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbiBfZXhwYW5kKHNpemUpe3doaWxlKHRoaXMubGVuZ3RoPHNpemUpe3RoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MH1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uIHN0cmlwKCl7d2hpbGUodGhpcy5sZW5ndGg+MSYmdGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXT09PTApe3RoaXMubGVuZ3RoLS19cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9O0JOLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24gX25vcm1TaWduKCl7aWYodGhpcy5sZW5ndGg9PT0xJiZ0aGlzLndvcmRzWzBdPT09MCl7dGhpcy5uZWdhdGl2ZT0wfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbiBpbnNwZWN0KCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciB6ZXJvcz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXTt2YXIgZ3JvdXBTaXplcz1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XTt2YXIgZ3JvdXBCYXNlcz1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtCTi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24gdG9TdHJpbmcoYmFzZSxwYWRkaW5nKXtiYXNlPWJhc2V8fDEwO3BhZGRpbmc9cGFkZGluZ3wwfHwxO3ZhciBvdXQ7aWYoYmFzZT09PTE2fHxiYXNlPT09ImhleCIpe291dD0iIjt2YXIgb2ZmPTA7dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciB3PXRoaXMud29yZHNbaV07dmFyIHdvcmQ9KCh3PDxvZmZ8Y2FycnkpJjE2Nzc3MjE1KS50b1N0cmluZygxNik7Y2Fycnk9dz4+PjI0LW9mZiYxNjc3NzIxNTtpZihjYXJyeSE9PTB8fGkhPT10aGlzLmxlbmd0aC0xKXtvdXQ9emVyb3NbNi13b3JkLmxlbmd0aF0rd29yZCtvdXR9ZWxzZXtvdXQ9d29yZCtvdXR9b2ZmKz0yO2lmKG9mZj49MjYpe29mZi09MjY7aS0tfX1pZihjYXJyeSE9PTApe291dD1jYXJyeS50b1N0cmluZygxNikrb3V0fXdoaWxlKG91dC5sZW5ndGglcGFkZGluZyE9PTApe291dD0iMCIrb3V0fWlmKHRoaXMubmVnYXRpdmUhPT0wKXtvdXQ9Ii0iK291dH1yZXR1cm4gb3V0fWlmKGJhc2U9PT0oYmFzZXwwKSYmYmFzZT49MiYmYmFzZTw9MzYpe3ZhciBncm91cFNpemU9Z3JvdXBTaXplc1tiYXNlXTt2YXIgZ3JvdXBCYXNlPWdyb3VwQmFzZXNbYmFzZV07b3V0PSIiO3ZhciBjPXRoaXMuY2xvbmUoKTtjLm5lZ2F0aXZlPTA7d2hpbGUoIWMuaXNaZXJvKCkpe3ZhciByPWMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO2M9Yy5pZGl2bihncm91cEJhc2UpO2lmKCFjLmlzWmVybygpKXtvdXQ9emVyb3NbZ3JvdXBTaXplLXIubGVuZ3RoXStyK291dH1lbHNle291dD1yK291dH19aWYodGhpcy5pc1plcm8oKSl7b3V0PSIwIitvdXR9d2hpbGUob3V0Lmxlbmd0aCVwYWRkaW5nIT09MCl7b3V0PSIwIitvdXR9aWYodGhpcy5uZWdhdGl2ZSE9PTApe291dD0iLSIrb3V0fXJldHVybiBvdXR9YXNzZXJ0KGZhbHNlLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9O0JOLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbiB0b051bWJlcigpe3ZhciByZXQ9dGhpcy53b3Jkc1swXTtpZih0aGlzLmxlbmd0aD09PTIpe3JldCs9dGhpcy53b3Jkc1sxXSo2NzEwODg2NH1lbHNlIGlmKHRoaXMubGVuZ3RoPT09MyYmdGhpcy53b3Jkc1syXT09PTEpe3JldCs9NDUwMzU5OTYyNzM3MDQ5Nit0aGlzLndvcmRzWzFdKjY3MTA4ODY0fWVsc2UgaWYodGhpcy5sZW5ndGg+Mil7YXNzZXJ0KGZhbHNlLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKX1yZXR1cm4gdGhpcy5uZWdhdGl2ZSE9PTA/LXJldDpyZXR9O0JOLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24gdG9KU09OKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfTtCTi5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24gdG9CdWZmZXIoZW5kaWFuLGxlbmd0aCl7YXNzZXJ0KHR5cGVvZiBCdWZmZXIhPT0idW5kZWZpbmVkIik7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLGVuZGlhbixsZW5ndGgpfTtCTi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbiB0b0FycmF5KGVuZGlhbixsZW5ndGgpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGVuZGlhbixsZW5ndGgpfTtCTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24gdG9BcnJheUxpa2UoQXJyYXlUeXBlLGVuZGlhbixsZW5ndGgpe3ZhciBieXRlTGVuZ3RoPXRoaXMuYnl0ZUxlbmd0aCgpO3ZhciByZXFMZW5ndGg9bGVuZ3RofHxNYXRoLm1heCgxLGJ5dGVMZW5ndGgpO2Fzc2VydChieXRlTGVuZ3RoPD1yZXFMZW5ndGgsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKTthc3NlcnQocmVxTGVuZ3RoPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpO3RoaXMuc3RyaXAoKTt2YXIgbGl0dGxlRW5kaWFuPWVuZGlhbj09PSJsZSI7dmFyIHJlcz1uZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7dmFyIGIsaTt2YXIgcT10aGlzLmNsb25lKCk7aWYoIWxpdHRsZUVuZGlhbil7Zm9yKGk9MDtpPHJlcUxlbmd0aC1ieXRlTGVuZ3RoO2krKyl7cmVzW2ldPTB9Zm9yKGk9MDshcS5pc1plcm8oKTtpKyspe2I9cS5hbmRsbigyNTUpO3EuaXVzaHJuKDgpO3Jlc1tyZXFMZW5ndGgtaS0xXT1ifX1lbHNle2ZvcihpPTA7IXEuaXNaZXJvKCk7aSsrKXtiPXEuYW5kbG4oMjU1KTtxLml1c2hybig4KTtyZXNbaV09Yn1mb3IoO2k8cmVxTGVuZ3RoO2krKyl7cmVzW2ldPTB9fXJldHVybiByZXN9O2lmKE1hdGguY2x6MzIpe0JOLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uIF9jb3VudEJpdHModyl7cmV0dXJuIDMyLU1hdGguY2x6MzIodyl9fWVsc2V7Qk4ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24gX2NvdW50Qml0cyh3KXt2YXIgdD13O3ZhciByPTA7aWYodD49NDA5Nil7cis9MTM7dD4+Pj0xM31pZih0Pj02NCl7cis9Nzt0Pj4+PTd9aWYodD49OCl7cis9NDt0Pj4+PTR9aWYodD49Mil7cis9Mjt0Pj4+PTJ9cmV0dXJuIHIrdH19Qk4ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbiBfemVyb0JpdHModyl7aWYodz09PTApcmV0dXJuIDI2O3ZhciB0PXc7dmFyIHI9MDtpZigodCY4MTkxKT09PTApe3IrPTEzO3Q+Pj49MTN9aWYoKHQmMTI3KT09PTApe3IrPTc7dD4+Pj03fWlmKCh0JjE1KT09PTApe3IrPTQ7dD4+Pj00fWlmKCh0JjMpPT09MCl7cis9Mjt0Pj4+PTJ9aWYoKHQmMSk9PT0wKXtyKyt9cmV0dXJuIHJ9O0JOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24gYml0TGVuZ3RoKCl7dmFyIHc9dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTt2YXIgaGk9dGhpcy5fY291bnRCaXRzKHcpO3JldHVybih0aGlzLmxlbmd0aC0xKSoyNitoaX07ZnVuY3Rpb24gdG9CaXRBcnJheShudW0pe3ZhciB3PW5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO2Zvcih2YXIgYml0PTA7Yml0PHcubGVuZ3RoO2JpdCsrKXt2YXIgb2ZmPWJpdC8yNnwwO3ZhciB3Yml0PWJpdCUyNjt3W2JpdF09KG51bS53b3Jkc1tvZmZdJjE8PHdiaXQpPj4+d2JpdH1yZXR1cm4gd31CTi5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24gemVyb0JpdHMoKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO3ZhciByPTA7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBiPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO3IrPWI7aWYoYiE9PTI2KWJyZWFrfXJldHVybiByfTtCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbiBieXRlTGVuZ3RoKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfTtCTi5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uIHRvVHdvcyh3aWR0aCl7aWYodGhpcy5uZWdhdGl2ZSE9PTApe3JldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKX1yZXR1cm4gdGhpcy5jbG9uZSgpfTtCTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24gZnJvbVR3b3Mod2lkdGgpe2lmKHRoaXMudGVzdG4od2lkdGgtMSkpe3JldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKX1yZXR1cm4gdGhpcy5jbG9uZSgpfTtCTi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24gaXNOZWcoKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZSE9PTB9O0JOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24gbmVnKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9O0JOLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uIGluZWcoKXtpZighdGhpcy5pc1plcm8oKSl7dGhpcy5uZWdhdGl2ZV49MX1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24gaXVvcihudW0pe3doaWxlKHRoaXMubGVuZ3RoPG51bS5sZW5ndGgpe3RoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MH1mb3IodmFyIGk9MDtpPG51bS5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPXRoaXMud29yZHNbaV18bnVtLndvcmRzW2ldfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24gaW9yKG51bSl7YXNzZXJ0KCh0aGlzLm5lZ2F0aXZlfG51bS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdW9yKG51bSl9O0JOLnByb3RvdHlwZS5vcj1mdW5jdGlvbiBvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpfTtCTi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uIHVvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7cmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyl9O0JOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbiBpdWFuZChudW0pe3ZhciBiO2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpe2I9bnVtfWVsc2V7Yj10aGlzfWZvcih2YXIgaT0wO2k8Yi5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPXRoaXMud29yZHNbaV0mbnVtLndvcmRzW2ldfXRoaXMubGVuZ3RoPWIubGVuZ3RoO3JldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uIGlhbmQobnVtKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8bnVtLm5lZ2F0aXZlKT09PTApO3JldHVybiB0aGlzLml1YW5kKG51bSl9O0JOLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24gYW5kKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKX07Qk4ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24gdWFuZChudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO3JldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKX07Qk4ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uIGl1eG9yKG51bSl7dmFyIGE7dmFyIGI7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aCl7YT10aGlzO2I9bnVtfWVsc2V7YT1udW07Yj10aGlzfWZvcih2YXIgaT0wO2k8Yi5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPWEud29yZHNbaV1eYi53b3Jkc1tpXX1pZih0aGlzIT09YSl7Zm9yKDtpPGEubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT1hLndvcmRzW2ldfX10aGlzLmxlbmd0aD1hLmxlbmd0aDtyZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbiBpeG9yKG51bSl7YXNzZXJ0KCh0aGlzLm5lZ2F0aXZlfG51bS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdXhvcihudW0pfTtCTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uIHhvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7cmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyl9O0JOLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uIHV4b3IobnVtKXtpZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyl9O0JOLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbiBpbm90bih3aWR0aCl7YXNzZXJ0KHR5cGVvZiB3aWR0aD09PSJudW1iZXIiJiZ3aWR0aD49MCk7dmFyIGJ5dGVzTmVlZGVkPU1hdGguY2VpbCh3aWR0aC8yNil8MDt2YXIgYml0c0xlZnQ9d2lkdGglMjY7dGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtpZihiaXRzTGVmdD4wKXtieXRlc05lZWRlZC0tfWZvcih2YXIgaT0wO2k8Ynl0ZXNOZWVkZWQ7aSsrKXt0aGlzLndvcmRzW2ldPX50aGlzLndvcmRzW2ldJjY3MTA4ODYzfWlmKGJpdHNMZWZ0PjApe3RoaXMud29yZHNbaV09fnRoaXMud29yZHNbaV0mNjcxMDg4NjM+PjI2LWJpdHNMZWZ0fXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uIG5vdG4od2lkdGgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpfTtCTi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbiBzZXRuKGJpdCx2YWwpe2Fzc2VydCh0eXBlb2YgYml0PT09Im51bWJlciImJmJpdD49MCk7dmFyIG9mZj1iaXQvMjZ8MDt2YXIgd2JpdD1iaXQlMjY7dGhpcy5fZXhwYW5kKG9mZisxKTtpZih2YWwpe3RoaXMud29yZHNbb2ZmXT10aGlzLndvcmRzW29mZl18MTw8d2JpdH1lbHNle3RoaXMud29yZHNbb2ZmXT10aGlzLndvcmRzW29mZl0mfigxPDx3Yml0KX1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbiBpYWRkKG51bSl7dmFyIHI7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJm51bS5uZWdhdGl2ZT09PTApe3RoaXMubmVnYXRpdmU9MDtyPXRoaXMuaXN1YihudW0pO3RoaXMubmVnYXRpdmVePTE7cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9ZWxzZSBpZih0aGlzLm5lZ2F0aXZlPT09MCYmbnVtLm5lZ2F0aXZlIT09MCl7bnVtLm5lZ2F0aXZlPTA7cj10aGlzLmlzdWIobnVtKTtudW0ubmVnYXRpdmU9MTtyZXR1cm4gci5fbm9ybVNpZ24oKX12YXIgYSxiO2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpe2E9dGhpcztiPW51bX1lbHNle2E9bnVtO2I9dGhpc312YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPGIubGVuZ3RoO2krKyl7cj0oYS53b3Jkc1tpXXwwKSsoYi53b3Jkc1tpXXwwKStjYXJyeTt0aGlzLndvcmRzW2ldPXImNjcxMDg4NjM7Y2Fycnk9cj4+PjI2fWZvcig7Y2FycnkhPT0wJiZpPGEubGVuZ3RoO2krKyl7cj0oYS53b3Jkc1tpXXwwKStjYXJyeTt0aGlzLndvcmRzW2ldPXImNjcxMDg4NjM7Y2Fycnk9cj4+PjI2fXRoaXMubGVuZ3RoPWEubGVuZ3RoO2lmKGNhcnJ5IT09MCl7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Y2Fycnk7dGhpcy5sZW5ndGgrK31lbHNlIGlmKGEhPT10aGlzKXtmb3IoO2k8YS5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPWEud29yZHNbaV19fXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIGFkZChudW0pe3ZhciByZXM7aWYobnVtLm5lZ2F0aXZlIT09MCYmdGhpcy5uZWdhdGl2ZT09PTApe251bS5uZWdhdGl2ZT0wO3Jlcz10aGlzLnN1YihudW0pO251bS5uZWdhdGl2ZV49MTtyZXR1cm4gcmVzfWVsc2UgaWYobnVtLm5lZ2F0aXZlPT09MCYmdGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDtyZXM9bnVtLnN1Yih0aGlzKTt0aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHJlc31pZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO3JldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpfTtCTi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbiBpc3ViKG51bSl7aWYobnVtLm5lZ2F0aXZlIT09MCl7bnVtLm5lZ2F0aXZlPTA7dmFyIHI9dGhpcy5pYWRkKG51bSk7bnVtLm5lZ2F0aXZlPTE7cmV0dXJuIHIuX25vcm1TaWduKCl9ZWxzZSBpZih0aGlzLm5lZ2F0aXZlIT09MCl7dGhpcy5uZWdhdGl2ZT0wO3RoaXMuaWFkZChudW0pO3RoaXMubmVnYXRpdmU9MTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX12YXIgY21wPXRoaXMuY21wKG51bSk7aWYoY21wPT09MCl7dGhpcy5uZWdhdGl2ZT0wO3RoaXMubGVuZ3RoPTE7dGhpcy53b3Jkc1swXT0wO3JldHVybiB0aGlzfXZhciBhLGI7aWYoY21wPjApe2E9dGhpcztiPW51bX1lbHNle2E9bnVtO2I9dGhpc312YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPGIubGVuZ3RoO2krKyl7cj0oYS53b3Jkc1tpXXwwKS0oYi53b3Jkc1tpXXwwKStjYXJyeTtjYXJyeT1yPj4yNjt0aGlzLndvcmRzW2ldPXImNjcxMDg4NjN9Zm9yKDtjYXJyeSE9PTAmJmk8YS5sZW5ndGg7aSsrKXtyPShhLndvcmRzW2ldfDApK2NhcnJ5O2NhcnJ5PXI+PjI2O3RoaXMud29yZHNbaV09ciY2NzEwODg2M31pZihjYXJyeT09PTAmJmk8YS5sZW5ndGgmJmEhPT10aGlzKXtmb3IoO2k8YS5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPWEud29yZHNbaV19fXRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGkpO2lmKGEhPT10aGlzKXt0aGlzLm5lZ2F0aXZlPTF9cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbiBzdWIobnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKX07ZnVuY3Rpb24gc21hbGxNdWxUbyhzZWxmLG51bSxvdXQpe291dC5uZWdhdGl2ZT1udW0ubmVnYXRpdmVec2VsZi5uZWdhdGl2ZTt2YXIgbGVuPXNlbGYubGVuZ3RoK251bS5sZW5ndGh8MDtvdXQubGVuZ3RoPWxlbjtsZW49bGVuLTF8MDt2YXIgYT1zZWxmLndvcmRzWzBdfDA7dmFyIGI9bnVtLndvcmRzWzBdfDA7dmFyIHI9YSpiO3ZhciBsbz1yJjY3MTA4ODYzO3ZhciBjYXJyeT1yLzY3MTA4ODY0fDA7b3V0LndvcmRzWzBdPWxvO2Zvcih2YXIgaz0xO2s8bGVuO2srKyl7dmFyIG5jYXJyeT1jYXJyeT4+PjI2O3ZhciByd29yZD1jYXJyeSY2NzEwODg2Mzt2YXIgbWF4Sj1NYXRoLm1pbihrLG51bS5sZW5ndGgtMSk7Zm9yKHZhciBqPU1hdGgubWF4KDAsay1zZWxmLmxlbmd0aCsxKTtqPD1tYXhKO2orKyl7dmFyIGk9ay1qfDA7YT1zZWxmLndvcmRzW2ldfDA7Yj1udW0ud29yZHNbal18MDtyPWEqYityd29yZDtuY2FycnkrPXIvNjcxMDg4NjR8MDtyd29yZD1yJjY3MTA4ODYzfW91dC53b3Jkc1trXT1yd29yZHwwO2NhcnJ5PW5jYXJyeXwwfWlmKGNhcnJ5IT09MCl7b3V0LndvcmRzW2tdPWNhcnJ5fDB9ZWxzZXtvdXQubGVuZ3RoLS19cmV0dXJuIG91dC5zdHJpcCgpfXZhciBjb21iMTBNdWxUbz1mdW5jdGlvbiBjb21iMTBNdWxUbyhzZWxmLG51bSxvdXQpe3ZhciBhPXNlbGYud29yZHM7dmFyIGI9bnVtLndvcmRzO3ZhciBvPW91dC53b3Jkczt2YXIgYz0wO3ZhciBsbzt2YXIgbWlkO3ZhciBoaTt2YXIgYTA9YVswXXwwO3ZhciBhbDA9YTAmODE5MTt2YXIgYWgwPWEwPj4+MTM7dmFyIGExPWFbMV18MDt2YXIgYWwxPWExJjgxOTE7dmFyIGFoMT1hMT4+PjEzO3ZhciBhMj1hWzJdfDA7dmFyIGFsMj1hMiY4MTkxO3ZhciBhaDI9YTI+Pj4xMzt2YXIgYTM9YVszXXwwO3ZhciBhbDM9YTMmODE5MTt2YXIgYWgzPWEzPj4+MTM7dmFyIGE0PWFbNF18MDt2YXIgYWw0PWE0JjgxOTE7dmFyIGFoND1hND4+PjEzO3ZhciBhNT1hWzVdfDA7dmFyIGFsNT1hNSY4MTkxO3ZhciBhaDU9YTU+Pj4xMzt2YXIgYTY9YVs2XXwwO3ZhciBhbDY9YTYmODE5MTt2YXIgYWg2PWE2Pj4+MTM7dmFyIGE3PWFbN118MDt2YXIgYWw3PWE3JjgxOTE7dmFyIGFoNz1hNz4+PjEzO3ZhciBhOD1hWzhdfDA7dmFyIGFsOD1hOCY4MTkxO3ZhciBhaDg9YTg+Pj4xMzt2YXIgYTk9YVs5XXwwO3ZhciBhbDk9YTkmODE5MTt2YXIgYWg5PWE5Pj4+MTM7dmFyIGIwPWJbMF18MDt2YXIgYmwwPWIwJjgxOTE7dmFyIGJoMD1iMD4+PjEzO3ZhciBiMT1iWzFdfDA7dmFyIGJsMT1iMSY4MTkxO3ZhciBiaDE9YjE+Pj4xMzt2YXIgYjI9YlsyXXwwO3ZhciBibDI9YjImODE5MTt2YXIgYmgyPWIyPj4+MTM7dmFyIGIzPWJbM118MDt2YXIgYmwzPWIzJjgxOTE7dmFyIGJoMz1iMz4+PjEzO3ZhciBiND1iWzRdfDA7dmFyIGJsND1iNCY4MTkxO3ZhciBiaDQ9YjQ+Pj4xMzt2YXIgYjU9Yls1XXwwO3ZhciBibDU9YjUmODE5MTt2YXIgYmg1PWI1Pj4+MTM7dmFyIGI2PWJbNl18MDt2YXIgYmw2PWI2JjgxOTE7dmFyIGJoNj1iNj4+PjEzO3ZhciBiNz1iWzddfDA7dmFyIGJsNz1iNyY4MTkxO3ZhciBiaDc9Yjc+Pj4xMzt2YXIgYjg9Yls4XXwwO3ZhciBibDg9YjgmODE5MTt2YXIgYmg4PWI4Pj4+MTM7dmFyIGI5PWJbOV18MDt2YXIgYmw5PWI5JjgxOTE7dmFyIGJoOT1iOT4+PjEzO291dC5uZWdhdGl2ZT1zZWxmLm5lZ2F0aXZlXm51bS5uZWdhdGl2ZTtvdXQubGVuZ3RoPTE5O2xvPU1hdGguaW11bChhbDAsYmwwKTttaWQ9TWF0aC5pbXVsKGFsMCxiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDApfDA7aGk9TWF0aC5pbXVsKGFoMCxiaDApO3ZhciB3MD0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzA+Pj4yNil8MDt3MCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsMSxibDApO21pZD1NYXRoLmltdWwoYWwxLGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsMCl8MDtoaT1NYXRoLmltdWwoYWgxLGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMCxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDAsYmgxKXwwO3ZhciB3MT0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzE+Pj4yNil8MDt3MSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsMixibDApO21pZD1NYXRoLmltdWwoYWwyLGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMCl8MDtoaT1NYXRoLmltdWwoYWgyLGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMSxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDEsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDAsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMCxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgwLGJoMil8MDt2YXIgdzI9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcyPj4+MjYpfDA7dzImPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDMsYmwwKTttaWQ9TWF0aC5pbXVsKGFsMyxiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDApfDA7aGk9TWF0aC5pbXVsKGFoMyxiaDApO2xvPWxvK01hdGguaW11bChhbDIsYmwxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMSl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoMSl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDAsYmgzKXwwO3ZhciB3Mz0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzM+Pj4yNil8MDt3MyY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNCxibDApO21pZD1NYXRoLmltdWwoYWw0LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg0LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMyxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDMsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDIsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg0KXwwO3ZhciB3ND0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzQ+Pj4yNil8MDt3NCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNSxibDApO21pZD1NYXRoLmltdWwoYWw1LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg1LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNCxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw0LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDQsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDQsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDMsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMyxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgzLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgzLGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWwyLGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDIsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMixibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMixiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMSxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDEsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDAsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMCxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgwLGJoNSl8MDt2YXIgdzU9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHc1Pj4+MjYpfDA7dzUmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDYsYmwwKTttaWQ9TWF0aC5pbXVsKGFsNixiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDApfDA7aGk9TWF0aC5pbXVsKGFoNixiaDApO2xvPWxvK01hdGguaW11bChhbDUsYmwxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMSl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoMSl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDMsYmgzKXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg2KXwwO3ZhciB3Nj0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzY+Pj4yNil8MDt3NiY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNyxibDApO21pZD1NYXRoLmltdWwoYWw3LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg3LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNixibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDYsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDUsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDYpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg3KXwwO3ZhciB3Nz0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzc+Pj4yNil8MDt3NyY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOCxibDApO21pZD1NYXRoLmltdWwoYWw4LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg4LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNyxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw3LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDcsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDcsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDYsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNixiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg2LGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWg2LGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWw1LGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDUsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNSxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNSxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsNCxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw0LGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDQsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDQsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDMsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMyxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgzLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgzLGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWwyLGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDIsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMixibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMixiaDYpfDA7bG89bG8rTWF0aC5pbXVsKGFsMSxibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDEsYmg3KXwwO2xvPWxvK01hdGguaW11bChhbDAsYmw4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMCxiaDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsOCl8MDtoaT1oaStNYXRoLmltdWwoYWgwLGJoOCl8MDt2YXIgdzg9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHc4Pj4+MjYpfDA7dzgmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmwwKTttaWQ9TWF0aC5pbXVsKGFsOSxiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDApfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDApO2xvPWxvK01hdGguaW11bChhbDgsYmwxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsMSl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoMSl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDYsYmgzKXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg5KXwwO3ZhciB3OT0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzk+Pj4yNil8MDt3OSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDEpO21pZD1NYXRoLmltdWwoYWw5LGJoMSk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsMSl8MDtoaT1NYXRoLmltdWwoYWg5LGJoMSk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDgsYmgyKXwwO2xvPWxvK01hdGguaW11bChhbDcsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDIsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDEsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoOSl8MDt2YXIgdzEwPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTA+Pj4yNil8MDt3MTAmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmwyKTttaWQ9TWF0aC5pbXVsKGFsOSxiaDIpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDIpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDIpO2xvPWxvK01hdGguaW11bChhbDgsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoOSl8MDt2YXIgdzExPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTE+Pj4yNil8MDt3MTEmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmwzKTttaWQ9TWF0aC5pbXVsKGFsOSxiaDMpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDMpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDMpO2xvPWxvK01hdGguaW11bChhbDgsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg5KXwwO3ZhciB3MTI9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxMj4+PjI2KXwwO3cxMiY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDQpO21pZD1NYXRoLmltdWwoYWw5LGJoNCk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsNCl8MDtoaT1NYXRoLmltdWwoYWg5LGJoNCk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoOSl8MDt2YXIgdzEzPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTM+Pj4yNil8MDt3MTMmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw1KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDUpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDUpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDUpO2xvPWxvK01hdGguaW11bChhbDgsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoOSl8MDt2YXIgdzE0PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTQ+Pj4yNil8MDt3MTQmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw2KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDYpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDYpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDYpO2xvPWxvK01hdGguaW11bChhbDgsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg5KXwwO3ZhciB3MTU9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxNT4+PjI2KXwwO3cxNSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDcpO21pZD1NYXRoLmltdWwoYWw5LGJoNyk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsNyl8MDtoaT1NYXRoLmltdWwoYWg5LGJoNyk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoOSl8MDt2YXIgdzE2PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTY+Pj4yNil8MDt3MTYmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw4KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDgpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDgpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDgpO2xvPWxvK01hdGguaW11bChhbDgsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoOSl8MDt2YXIgdzE3PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTc+Pj4yNil8MDt3MTcmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw5KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDkpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDkpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDkpO3ZhciB3MTg9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxOD4+PjI2KXwwO3cxOCY9NjcxMDg4NjM7b1swXT13MDtvWzFdPXcxO29bMl09dzI7b1szXT13MztvWzRdPXc0O29bNV09dzU7b1s2XT13NjtvWzddPXc3O29bOF09dzg7b1s5XT13OTtvWzEwXT13MTA7b1sxMV09dzExO29bMTJdPXcxMjtvWzEzXT13MTM7b1sxNF09dzE0O29bMTVdPXcxNTtvWzE2XT13MTY7b1sxN109dzE3O29bMThdPXcxODtpZihjIT09MCl7b1sxOV09YztvdXQubGVuZ3RoKyt9cmV0dXJuIG91dH07aWYoIU1hdGguaW11bCl7Y29tYjEwTXVsVG89c21hbGxNdWxUb31mdW5jdGlvbiBiaWdNdWxUbyhzZWxmLG51bSxvdXQpe291dC5uZWdhdGl2ZT1udW0ubmVnYXRpdmVec2VsZi5uZWdhdGl2ZTtvdXQubGVuZ3RoPXNlbGYubGVuZ3RoK251bS5sZW5ndGg7dmFyIGNhcnJ5PTA7dmFyIGhuY2Fycnk9MDtmb3IodmFyIGs9MDtrPG91dC5sZW5ndGgtMTtrKyspe3ZhciBuY2Fycnk9aG5jYXJyeTtobmNhcnJ5PTA7dmFyIHJ3b3JkPWNhcnJ5JjY3MTA4ODYzO3ZhciBtYXhKPU1hdGgubWluKGssbnVtLmxlbmd0aC0xKTtmb3IodmFyIGo9TWF0aC5tYXgoMCxrLXNlbGYubGVuZ3RoKzEpO2o8PW1heEo7aisrKXt2YXIgaT1rLWo7dmFyIGE9c2VsZi53b3Jkc1tpXXwwO3ZhciBiPW51bS53b3Jkc1tqXXwwO3ZhciByPWEqYjt2YXIgbG89ciY2NzEwODg2MztuY2Fycnk9bmNhcnJ5KyhyLzY3MTA4ODY0fDApfDA7bG89bG8rcndvcmR8MDtyd29yZD1sbyY2NzEwODg2MztuY2Fycnk9bmNhcnJ5Kyhsbz4+PjI2KXwwO2huY2FycnkrPW5jYXJyeT4+PjI2O25jYXJyeSY9NjcxMDg4NjN9b3V0LndvcmRzW2tdPXJ3b3JkO2NhcnJ5PW5jYXJyeTtuY2Fycnk9aG5jYXJyeX1pZihjYXJyeSE9PTApe291dC53b3Jkc1trXT1jYXJyeX1lbHNle291dC5sZW5ndGgtLX1yZXR1cm4gb3V0LnN0cmlwKCl9ZnVuY3Rpb24ganVtYm9NdWxUbyhzZWxmLG51bSxvdXQpe3ZhciBmZnRtPW5ldyBGRlRNO3JldHVybiBmZnRtLm11bHAoc2VsZixudW0sb3V0KX1CTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24gbXVsVG8obnVtLG91dCl7dmFyIHJlczt2YXIgbGVuPXRoaXMubGVuZ3RoK251bS5sZW5ndGg7aWYodGhpcy5sZW5ndGg9PT0xMCYmbnVtLmxlbmd0aD09PTEwKXtyZXM9Y29tYjEwTXVsVG8odGhpcyxudW0sb3V0KX1lbHNlIGlmKGxlbjw2Myl7cmVzPXNtYWxsTXVsVG8odGhpcyxudW0sb3V0KX1lbHNlIGlmKGxlbjwxMDI0KXtyZXM9YmlnTXVsVG8odGhpcyxudW0sb3V0KX1lbHNle3Jlcz1qdW1ib011bFRvKHRoaXMsbnVtLG91dCl9cmV0dXJuIHJlc307ZnVuY3Rpb24gRkZUTSh4LHkpe3RoaXMueD14O3RoaXMueT15fUZGVE0ucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24gbWFrZVJCVChOKXt2YXIgdD1uZXcgQXJyYXkoTik7dmFyIGw9Qk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTiktMTtmb3IodmFyIGk9MDtpPE47aSsrKXt0W2ldPXRoaXMucmV2QmluKGksbCxOKX1yZXR1cm4gdH07RkZUTS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uIHJldkJpbih4LGwsTil7aWYoeD09PTB8fHg9PT1OLTEpcmV0dXJuIHg7dmFyIHJiPTA7Zm9yKHZhciBpPTA7aTxsO2krKyl7cmJ8PSh4JjEpPDxsLWktMTt4Pj49MX1yZXR1cm4gcmJ9O0ZGVE0ucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24gcGVybXV0ZShyYnQscndzLGl3cyxydHdzLGl0d3MsTil7Zm9yKHZhciBpPTA7aTxOO2krKyl7cnR3c1tpXT1yd3NbcmJ0W2ldXTtpdHdzW2ldPWl3c1tyYnRbaV1dfX07RkZUTS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uIHRyYW5zZm9ybShyd3MsaXdzLHJ0d3MsaXR3cyxOLHJidCl7dGhpcy5wZXJtdXRlKHJidCxyd3MsaXdzLHJ0d3MsaXR3cyxOKTtmb3IodmFyIHM9MTtzPE47czw8PTEpe3ZhciBsPXM8PDE7dmFyIHJ0d2RmPU1hdGguY29zKDIqTWF0aC5QSS9sKTt2YXIgaXR3ZGY9TWF0aC5zaW4oMipNYXRoLlBJL2wpO2Zvcih2YXIgcD0wO3A8TjtwKz1sKXt2YXIgcnR3ZGZfPXJ0d2RmO3ZhciBpdHdkZl89aXR3ZGY7Zm9yKHZhciBqPTA7ajxzO2orKyl7dmFyIHJlPXJ0d3NbcCtqXTt2YXIgaWU9aXR3c1twK2pdO3ZhciBybz1ydHdzW3AraitzXTt2YXIgaW89aXR3c1twK2orc107dmFyIHJ4PXJ0d2RmXypyby1pdHdkZl8qaW87aW89cnR3ZGZfKmlvK2l0d2RmXypybztybz1yeDtydHdzW3Aral09cmUrcm87aXR3c1twK2pdPWllK2lvO3J0d3NbcCtqK3NdPXJlLXJvO2l0d3NbcCtqK3NdPWllLWlvO2lmKGohPT1sKXtyeD1ydHdkZipydHdkZl8taXR3ZGYqaXR3ZGZfO2l0d2RmXz1ydHdkZippdHdkZl8raXR3ZGYqcnR3ZGZfO3J0d2RmXz1yeH19fX19O0ZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uIGd1ZXNzTGVuMTNiKG4sbSl7dmFyIE49TWF0aC5tYXgobSxuKXwxO3ZhciBvZGQ9TiYxO3ZhciBpPTA7Zm9yKE49Ti8yfDA7TjtOPU4+Pj4xKXtpKyt9cmV0dXJuIDE8PGkrMStvZGR9O0ZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbiBjb25qdWdhdGUocndzLGl3cyxOKXtpZihOPD0xKXJldHVybjtmb3IodmFyIGk9MDtpPE4vMjtpKyspe3ZhciB0PXJ3c1tpXTtyd3NbaV09cndzW04taS0xXTtyd3NbTi1pLTFdPXQ7dD1pd3NbaV07aXdzW2ldPS1pd3NbTi1pLTFdO2l3c1tOLWktMV09LXR9fTtGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24gbm9ybWFsaXplMTNiKHdzLE4pe3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8Ti8yO2krKyl7dmFyIHc9TWF0aC5yb3VuZCh3c1syKmkrMV0vTikqODE5MitNYXRoLnJvdW5kKHdzWzIqaV0vTikrY2Fycnk7d3NbaV09dyY2NzEwODg2MztpZih3PDY3MTA4ODY0KXtjYXJyeT0wfWVsc2V7Y2Fycnk9dy82NzEwODg2NHwwfX1yZXR1cm4gd3N9O0ZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24gY29udmVydDEzYih3cyxsZW4scndzLE4pe3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8bGVuO2krKyl7Y2Fycnk9Y2FycnkrKHdzW2ldfDApO3J3c1syKmldPWNhcnJ5JjgxOTE7Y2Fycnk9Y2Fycnk+Pj4xMztyd3NbMippKzFdPWNhcnJ5JjgxOTE7Y2Fycnk9Y2Fycnk+Pj4xM31mb3IoaT0yKmxlbjtpPE47KytpKXtyd3NbaV09MH1hc3NlcnQoY2Fycnk9PT0wKTthc3NlcnQoKGNhcnJ5Jn44MTkxKT09PTApfTtGRlRNLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uIHN0dWIoTil7dmFyIHBoPW5ldyBBcnJheShOKTtmb3IodmFyIGk9MDtpPE47aSsrKXtwaFtpXT0wfXJldHVybiBwaH07RkZUTS5wcm90b3R5cGUubXVscD1mdW5jdGlvbiBtdWxwKHgseSxvdXQpe3ZhciBOPTIqdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCx5Lmxlbmd0aCk7dmFyIHJidD10aGlzLm1ha2VSQlQoTik7dmFyIF89dGhpcy5zdHViKE4pO3ZhciByd3M9bmV3IEFycmF5KE4pO3ZhciByd3N0PW5ldyBBcnJheShOKTt2YXIgaXdzdD1uZXcgQXJyYXkoTik7dmFyIG5yd3M9bmV3IEFycmF5KE4pO3ZhciBucndzdD1uZXcgQXJyYXkoTik7dmFyIG5pd3N0PW5ldyBBcnJheShOKTt2YXIgcm13cz1vdXQud29yZHM7cm13cy5sZW5ndGg9Tjt0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxyd3MsTik7dGhpcy5jb252ZXJ0MTNiKHkud29yZHMseS5sZW5ndGgsbnJ3cyxOKTt0aGlzLnRyYW5zZm9ybShyd3MsXyxyd3N0LGl3c3QsTixyYnQpO3RoaXMudHJhbnNmb3JtKG5yd3MsXyxucndzdCxuaXdzdCxOLHJidCk7Zm9yKHZhciBpPTA7aTxOO2krKyl7dmFyIHJ4PXJ3c3RbaV0qbnJ3c3RbaV0taXdzdFtpXSpuaXdzdFtpXTtpd3N0W2ldPXJ3c3RbaV0qbml3c3RbaV0raXdzdFtpXSpucndzdFtpXTtyd3N0W2ldPXJ4fXRoaXMuY29uanVnYXRlKHJ3c3QsaXdzdCxOKTt0aGlzLnRyYW5zZm9ybShyd3N0LGl3c3Qscm13cyxfLE4scmJ0KTt0aGlzLmNvbmp1Z2F0ZShybXdzLF8sTik7dGhpcy5ub3JtYWxpemUxM2Iocm13cyxOKTtvdXQubmVnYXRpdmU9eC5uZWdhdGl2ZV55Lm5lZ2F0aXZlO291dC5sZW5ndGg9eC5sZW5ndGgreS5sZW5ndGg7cmV0dXJuIG91dC5zdHJpcCgpfTtCTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChudW0pe3ZhciBvdXQ9bmV3IEJOKG51bGwpO291dC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrbnVtLmxlbmd0aCk7cmV0dXJuIHRoaXMubXVsVG8obnVtLG91dCl9O0JOLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uIG11bGYobnVtKXt2YXIgb3V0PW5ldyBCTihudWxsKTtvdXQud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK251bS5sZW5ndGgpO3JldHVybiBqdW1ib011bFRvKHRoaXMsbnVtLG91dCl9O0JOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uIGltdWwobnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSx0aGlzKX07Qk4ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uIGltdWxuKG51bSl7YXNzZXJ0KHR5cGVvZiBudW09PT0ibnVtYmVyIik7YXNzZXJ0KG51bTw2NzEwODg2NCk7dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciB3PSh0aGlzLndvcmRzW2ldfDApKm51bTt2YXIgbG89KHcmNjcxMDg4NjMpKyhjYXJyeSY2NzEwODg2Myk7Y2Fycnk+Pj0yNjtjYXJyeSs9dy82NzEwODg2NHwwO2NhcnJ5Kz1sbz4+PjI2O3RoaXMud29yZHNbaV09bG8mNjcxMDg4NjN9aWYoY2FycnkhPT0wKXt0aGlzLndvcmRzW2ldPWNhcnJ5O3RoaXMubGVuZ3RoKyt9cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uIG11bG4obnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSl9O0JOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24gc3FyKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfTtCTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbiBpc3FyKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfTtCTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uIHBvdyhudW0pe3ZhciB3PXRvQml0QXJyYXkobnVtKTtpZih3Lmxlbmd0aD09PTApcmV0dXJuIG5ldyBCTigxKTt2YXIgcmVzPXRoaXM7Zm9yKHZhciBpPTA7aTx3Lmxlbmd0aDtpKysscmVzPXJlcy5zcXIoKSl7aWYod1tpXSE9PTApYnJlYWt9aWYoKytpPHcubGVuZ3RoKXtmb3IodmFyIHE9cmVzLnNxcigpO2k8dy5sZW5ndGg7aSsrLHE9cS5zcXIoKSl7aWYod1tpXT09PTApY29udGludWU7cmVzPXJlcy5tdWwocSl9fXJldHVybiByZXN9O0JOLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24gaXVzaGxuKGJpdHMpe2Fzc2VydCh0eXBlb2YgYml0cz09PSJudW1iZXIiJiZiaXRzPj0wKTt2YXIgcj1iaXRzJTI2O3ZhciBzPShiaXRzLXIpLzI2O3ZhciBjYXJyeU1hc2s9NjcxMDg4NjM+Pj4yNi1yPDwyNi1yO3ZhciBpO2lmKHIhPT0wKXt2YXIgY2Fycnk9MDtmb3IoaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt2YXIgbmV3Q2Fycnk9dGhpcy53b3Jkc1tpXSZjYXJyeU1hc2s7dmFyIGM9KHRoaXMud29yZHNbaV18MCktbmV3Q2Fycnk8PHI7dGhpcy53b3Jkc1tpXT1jfGNhcnJ5O2NhcnJ5PW5ld0NhcnJ5Pj4+MjYtcn1pZihjYXJyeSl7dGhpcy53b3Jkc1tpXT1jYXJyeTt0aGlzLmxlbmd0aCsrfX1pZihzIT09MCl7Zm9yKGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7dGhpcy53b3Jkc1tpK3NdPXRoaXMud29yZHNbaV19Zm9yKGk9MDtpPHM7aSsrKXt0aGlzLndvcmRzW2ldPTB9dGhpcy5sZW5ndGgrPXN9cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uIGlzaGxuKGJpdHMpe2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCk7cmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpfTtCTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uIGl1c2hybihiaXRzLGhpbnQsZXh0ZW5kZWQpe2Fzc2VydCh0eXBlb2YgYml0cz09PSJudW1iZXIiJiZiaXRzPj0wKTt2YXIgaDtpZihoaW50KXtoPShoaW50LWhpbnQlMjYpLzI2fWVsc2V7aD0wfXZhciByPWJpdHMlMjY7dmFyIHM9TWF0aC5taW4oKGJpdHMtcikvMjYsdGhpcy5sZW5ndGgpO3ZhciBtYXNrPTY3MTA4ODYzXjY3MTA4ODYzPj4+cjw8cjt2YXIgbWFza2VkV29yZHM9ZXh0ZW5kZWQ7aC09cztoPU1hdGgubWF4KDAsaCk7aWYobWFza2VkV29yZHMpe2Zvcih2YXIgaT0wO2k8cztpKyspe21hc2tlZFdvcmRzLndvcmRzW2ldPXRoaXMud29yZHNbaV19bWFza2VkV29yZHMubGVuZ3RoPXN9aWYocz09PTApe31lbHNlIGlmKHRoaXMubGVuZ3RoPnMpe3RoaXMubGVuZ3RoLT1zO2ZvcihpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dGhpcy53b3Jkc1tpK3NdfX1lbHNle3RoaXMud29yZHNbMF09MDt0aGlzLmxlbmd0aD0xfXZhciBjYXJyeT0wO2ZvcihpPXRoaXMubGVuZ3RoLTE7aT49MCYmKGNhcnJ5IT09MHx8aT49aCk7aS0tKXt2YXIgd29yZD10aGlzLndvcmRzW2ldfDA7dGhpcy53b3Jkc1tpXT1jYXJyeTw8MjYtcnx3b3JkPj4+cjtjYXJyeT13b3JkJm1hc2t9aWYobWFza2VkV29yZHMmJmNhcnJ5IT09MCl7bWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdPWNhcnJ5fWlmKHRoaXMubGVuZ3RoPT09MCl7dGhpcy53b3Jkc1swXT0wO3RoaXMubGVuZ3RoPTF9cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uIGlzaHJuKGJpdHMsaGludCxleHRlbmRlZCl7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wKTtyZXR1cm4gdGhpcy5pdXNocm4oYml0cyxoaW50LGV4dGVuZGVkKX07Qk4ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24gc2hsbihiaXRzKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpfTtCTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24gdXNobG4oYml0cyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyl9O0JOLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uIHNocm4oYml0cyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKX07Qk4ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uIHVzaHJuKGJpdHMpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpfTtCTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24gdGVzdG4oYml0KXthc3NlcnQodHlwZW9mIGJpdD09PSJudW1iZXIiJiZiaXQ+PTApO3ZhciByPWJpdCUyNjt2YXIgcz0oYml0LXIpLzI2O3ZhciBxPTE8PHI7aWYodGhpcy5sZW5ndGg8PXMpcmV0dXJuIGZhbHNlO3ZhciB3PXRoaXMud29yZHNbc107cmV0dXJuISEodyZxKX07Qk4ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbiBpbWFza24oYml0cyl7YXNzZXJ0KHR5cGVvZiBiaXRzPT09Im51bWJlciImJmJpdHM+PTApO3ZhciByPWJpdHMlMjY7dmFyIHM9KGJpdHMtcikvMjY7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKTtpZih0aGlzLmxlbmd0aDw9cyl7cmV0dXJuIHRoaXN9aWYociE9PTApe3MrK310aGlzLmxlbmd0aD1NYXRoLm1pbihzLHRoaXMubGVuZ3RoKTtpZihyIT09MCl7dmFyIG1hc2s9NjcxMDg4NjNeNjcxMDg4NjM+Pj5yPDxyO3RoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPW1hc2t9cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uIG1hc2tuKGJpdHMpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpfTtCTi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24gaWFkZG4obnVtKXthc3NlcnQodHlwZW9mIG51bT09PSJudW1iZXIiKTthc3NlcnQobnVtPDY3MTA4ODY0KTtpZihudW08MClyZXR1cm4gdGhpcy5pc3VibigtbnVtKTtpZih0aGlzLm5lZ2F0aXZlIT09MCl7aWYodGhpcy5sZW5ndGg9PT0xJiYodGhpcy53b3Jkc1swXXwwKTxudW0pe3RoaXMud29yZHNbMF09bnVtLSh0aGlzLndvcmRzWzBdfDApO3RoaXMubmVnYXRpdmU9MDtyZXR1cm4gdGhpc310aGlzLm5lZ2F0aXZlPTA7dGhpcy5pc3VibihudW0pO3RoaXMubmVnYXRpdmU9MTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5faWFkZG4obnVtKX07Qk4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbiBfaWFkZG4obnVtKXt0aGlzLndvcmRzWzBdKz1udW07Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tpXT49NjcxMDg4NjQ7aSsrKXt0aGlzLndvcmRzW2ldLT02NzEwODg2NDtpZihpPT09dGhpcy5sZW5ndGgtMSl7dGhpcy53b3Jkc1tpKzFdPTF9ZWxzZXt0aGlzLndvcmRzW2krMV0rK319dGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsaSsxKTtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uIGlzdWJuKG51bSl7YXNzZXJ0KHR5cGVvZiBudW09PT0ibnVtYmVyIik7YXNzZXJ0KG51bTw2NzEwODg2NCk7aWYobnVtPDApcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmlhZGRuKG51bSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzfXRoaXMud29yZHNbMF0tPW51bTtpZih0aGlzLmxlbmd0aD09PTEmJnRoaXMud29yZHNbMF08MCl7dGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXTt0aGlzLm5lZ2F0aXZlPTF9ZWxzZXtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2ldPDA7aSsrKXt0aGlzLndvcmRzW2ldKz02NzEwODg2NDt0aGlzLndvcmRzW2krMV0tPTF9fXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uIGFkZG4obnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSl9O0JOLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uIHN1Ym4obnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSl9O0JOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uIGlhYnMoKXt0aGlzLm5lZ2F0aXZlPTA7cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24gYWJzKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9O0JOLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24gX2lzaGxuc3VibXVsKG51bSxtdWwsc2hpZnQpe3ZhciBsZW49bnVtLmxlbmd0aCtzaGlmdDt2YXIgaTt0aGlzLl9leHBhbmQobGVuKTt2YXIgdzt2YXIgY2Fycnk9MDtmb3IoaT0wO2k8bnVtLmxlbmd0aDtpKyspe3c9KHRoaXMud29yZHNbaStzaGlmdF18MCkrY2Fycnk7dmFyIHJpZ2h0PShudW0ud29yZHNbaV18MCkqbXVsO3ctPXJpZ2h0JjY3MTA4ODYzO2NhcnJ5PSh3Pj4yNiktKHJpZ2h0LzY3MTA4ODY0fDApO3RoaXMud29yZHNbaStzaGlmdF09dyY2NzEwODg2M31mb3IoO2k8dGhpcy5sZW5ndGgtc2hpZnQ7aSsrKXt3PSh0aGlzLndvcmRzW2krc2hpZnRdfDApK2NhcnJ5O2NhcnJ5PXc+PjI2O3RoaXMud29yZHNbaStzaGlmdF09dyY2NzEwODg2M31pZihjYXJyeT09PTApcmV0dXJuIHRoaXMuc3RyaXAoKTthc3NlcnQoY2Fycnk9PT0tMSk7Y2Fycnk9MDtmb3IoaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt3PS0odGhpcy53b3Jkc1tpXXwwKStjYXJyeTtjYXJyeT13Pj4yNjt0aGlzLndvcmRzW2ldPXcmNjcxMDg4NjN9dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbiBfd29yZERpdihudW0sbW9kZSl7dmFyIHNoaWZ0PXRoaXMubGVuZ3RoLW51bS5sZW5ndGg7dmFyIGE9dGhpcy5jbG9uZSgpO3ZhciBiPW51bTt2YXIgYmhpPWIud29yZHNbYi5sZW5ndGgtMV18MDt2YXIgYmhpQml0cz10aGlzLl9jb3VudEJpdHMoYmhpKTtzaGlmdD0yNi1iaGlCaXRzO2lmKHNoaWZ0IT09MCl7Yj1iLnVzaGxuKHNoaWZ0KTthLml1c2hsbihzaGlmdCk7YmhpPWIud29yZHNbYi5sZW5ndGgtMV18MH12YXIgbT1hLmxlbmd0aC1iLmxlbmd0aDt2YXIgcTtpZihtb2RlIT09Im1vZCIpe3E9bmV3IEJOKG51bGwpO3EubGVuZ3RoPW0rMTtxLndvcmRzPW5ldyBBcnJheShxLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTxxLmxlbmd0aDtpKyspe3Eud29yZHNbaV09MH19dmFyIGRpZmY9YS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLDEsbSk7aWYoZGlmZi5uZWdhdGl2ZT09PTApe2E9ZGlmZjtpZihxKXtxLndvcmRzW21dPTF9fWZvcih2YXIgaj1tLTE7aj49MDtqLS0pe3ZhciBxaj0oYS53b3Jkc1tiLmxlbmd0aCtqXXwwKSo2NzEwODg2NCsoYS53b3Jkc1tiLmxlbmd0aCtqLTFdfDApO3FqPU1hdGgubWluKHFqL2JoaXwwLDY3MTA4ODYzKTthLl9pc2hsbnN1Ym11bChiLHFqLGopO3doaWxlKGEubmVnYXRpdmUhPT0wKXtxai0tO2EubmVnYXRpdmU9MDthLl9pc2hsbnN1Ym11bChiLDEsaik7aWYoIWEuaXNaZXJvKCkpe2EubmVnYXRpdmVePTF9fWlmKHEpe3Eud29yZHNbal09cWp9fWlmKHEpe3Euc3RyaXAoKX1hLnN0cmlwKCk7aWYobW9kZSE9PSJkaXYiJiZzaGlmdCE9PTApe2EuaXVzaHJuKHNoaWZ0KX1yZXR1cm57ZGl2OnF8fG51bGwsbW9kOmF9fTtCTi5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uIGRpdm1vZChudW0sbW9kZSxwb3NpdGl2ZSl7YXNzZXJ0KCFudW0uaXNaZXJvKCkpO2lmKHRoaXMuaXNaZXJvKCkpe3JldHVybntkaXY6bmV3IEJOKDApLG1vZDpuZXcgQk4oMCl9fXZhciBkaXYsbW9kLHJlcztpZih0aGlzLm5lZ2F0aXZlIT09MCYmbnVtLm5lZ2F0aXZlPT09MCl7cmVzPXRoaXMubmVnKCkuZGl2bW9kKG51bSxtb2RlKTtpZihtb2RlIT09Im1vZCIpe2Rpdj1yZXMuZGl2Lm5lZygpfWlmKG1vZGUhPT0iZGl2Iil7bW9kPXJlcy5tb2QubmVnKCk7aWYocG9zaXRpdmUmJm1vZC5uZWdhdGl2ZSE9PTApe21vZC5pYWRkKG51bSl9fXJldHVybntkaXY6ZGl2LG1vZDptb2R9fWlmKHRoaXMubmVnYXRpdmU9PT0wJiZudW0ubmVnYXRpdmUhPT0wKXtyZXM9dGhpcy5kaXZtb2QobnVtLm5lZygpLG1vZGUpO2lmKG1vZGUhPT0ibW9kIil7ZGl2PXJlcy5kaXYubmVnKCl9cmV0dXJue2RpdjpkaXYsbW9kOnJlcy5tb2R9fWlmKCh0aGlzLm5lZ2F0aXZlJm51bS5uZWdhdGl2ZSkhPT0wKXtyZXM9dGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLG1vZGUpO2lmKG1vZGUhPT0iZGl2Iil7bW9kPXJlcy5tb2QubmVnKCk7aWYocG9zaXRpdmUmJm1vZC5uZWdhdGl2ZSE9PTApe21vZC5pc3ViKG51bSl9fXJldHVybntkaXY6cmVzLmRpdixtb2Q6bW9kfX1pZihudW0ubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChudW0pPDApe3JldHVybntkaXY6bmV3IEJOKDApLG1vZDp0aGlzfX1pZihudW0ubGVuZ3RoPT09MSl7aWYobW9kZT09PSJkaXYiKXtyZXR1cm57ZGl2OnRoaXMuZGl2bihudW0ud29yZHNbMF0pLG1vZDpudWxsfX1pZihtb2RlPT09Im1vZCIpe3JldHVybntkaXY6bnVsbCxtb2Q6bmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKX19cmV0dXJue2Rpdjp0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxtb2Q6bmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKX19cmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLG1vZGUpfTtCTi5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uIGRpdihudW0pe3JldHVybiB0aGlzLmRpdm1vZChudW0sImRpdiIsZmFsc2UpLmRpdn07Qk4ucHJvdG90eXBlLm1vZD1mdW5jdGlvbiBtb2QobnVtKXtyZXR1cm4gdGhpcy5kaXZtb2QobnVtLCJtb2QiLGZhbHNlKS5tb2R9O0JOLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uIHVtb2QobnVtKXtyZXR1cm4gdGhpcy5kaXZtb2QobnVtLCJtb2QiLHRydWUpLm1vZH07Qk4ucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uIGRpdlJvdW5kKG51bSl7dmFyIGRtPXRoaXMuZGl2bW9kKG51bSk7aWYoZG0ubW9kLmlzWmVybygpKXJldHVybiBkbS5kaXY7dmFyIG1vZD1kbS5kaXYubmVnYXRpdmUhPT0wP2RtLm1vZC5pc3ViKG51bSk6ZG0ubW9kO3ZhciBoYWxmPW51bS51c2hybigxKTt2YXIgcjI9bnVtLmFuZGxuKDEpO3ZhciBjbXA9bW9kLmNtcChoYWxmKTtpZihjbXA8MHx8cjI9PT0xJiZjbXA9PT0wKXJldHVybiBkbS5kaXY7cmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSE9PTA/ZG0uZGl2LmlzdWJuKDEpOmRtLmRpdi5pYWRkbigxKX07Qk4ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24gbW9kbihudW0pe2Fzc2VydChudW08PTY3MTA4ODYzKTt2YXIgcD0oMTw8MjYpJW51bTt2YXIgYWNjPTA7Zm9yKHZhciBpPXRoaXMubGVuZ3RoLTE7aT49MDtpLS0pe2FjYz0ocCphY2MrKHRoaXMud29yZHNbaV18MCkpJW51bX1yZXR1cm4gYWNjfTtCTi5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24gaWRpdm4obnVtKXthc3NlcnQobnVtPD02NzEwODg2Myk7dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPXRoaXMubGVuZ3RoLTE7aT49MDtpLS0pe3ZhciB3PSh0aGlzLndvcmRzW2ldfDApK2NhcnJ5KjY3MTA4ODY0O3RoaXMud29yZHNbaV09dy9udW18MDtjYXJyeT13JW51bX1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbiBkaXZuKG51bSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pfTtCTi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbiBlZ2NkKHApe2Fzc2VydChwLm5lZ2F0aXZlPT09MCk7YXNzZXJ0KCFwLmlzWmVybygpKTt2YXIgeD10aGlzO3ZhciB5PXAuY2xvbmUoKTtpZih4Lm5lZ2F0aXZlIT09MCl7eD14LnVtb2QocCl9ZWxzZXt4PXguY2xvbmUoKX12YXIgQT1uZXcgQk4oMSk7dmFyIEI9bmV3IEJOKDApO3ZhciBDPW5ldyBCTigwKTt2YXIgRD1uZXcgQk4oMSk7dmFyIGc9MDt3aGlsZSh4LmlzRXZlbigpJiZ5LmlzRXZlbigpKXt4Lml1c2hybigxKTt5Lml1c2hybigxKTsrK2d9dmFyIHlwPXkuY2xvbmUoKTt2YXIgeHA9eC5jbG9uZSgpO3doaWxlKCF4LmlzWmVybygpKXtmb3IodmFyIGk9MCxpbT0xOyh4LndvcmRzWzBdJmltKT09PTAmJmk8MjY7KytpLGltPDw9MSk7aWYoaT4wKXt4Lml1c2hybihpKTt3aGlsZShpLS0gPjApe2lmKEEuaXNPZGQoKXx8Qi5pc09kZCgpKXtBLmlhZGQoeXApO0IuaXN1Yih4cCl9QS5pdXNocm4oMSk7Qi5pdXNocm4oMSl9fWZvcih2YXIgaj0wLGptPTE7KHkud29yZHNbMF0mam0pPT09MCYmajwyNjsrK2osam08PD0xKTtpZihqPjApe3kuaXVzaHJuKGopO3doaWxlKGotLSA+MCl7aWYoQy5pc09kZCgpfHxELmlzT2RkKCkpe0MuaWFkZCh5cCk7RC5pc3ViKHhwKX1DLml1c2hybigxKTtELml1c2hybigxKX19aWYoeC5jbXAoeSk+PTApe3guaXN1Yih5KTtBLmlzdWIoQyk7Qi5pc3ViKEQpfWVsc2V7eS5pc3ViKHgpO0MuaXN1YihBKTtELmlzdWIoQil9fXJldHVybnthOkMsYjpELGdjZDp5Lml1c2hsbihnKX19O0JOLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24gX2ludm1wKHApe2Fzc2VydChwLm5lZ2F0aXZlPT09MCk7YXNzZXJ0KCFwLmlzWmVybygpKTt2YXIgYT10aGlzO3ZhciBiPXAuY2xvbmUoKTtpZihhLm5lZ2F0aXZlIT09MCl7YT1hLnVtb2QocCl9ZWxzZXthPWEuY2xvbmUoKX12YXIgeDE9bmV3IEJOKDEpO3ZhciB4Mj1uZXcgQk4oMCk7dmFyIGRlbHRhPWIuY2xvbmUoKTt3aGlsZShhLmNtcG4oMSk+MCYmYi5jbXBuKDEpPjApe2Zvcih2YXIgaT0wLGltPTE7KGEud29yZHNbMF0maW0pPT09MCYmaTwyNjsrK2ksaW08PD0xKTtpZihpPjApe2EuaXVzaHJuKGkpO3doaWxlKGktLSA+MCl7aWYoeDEuaXNPZGQoKSl7eDEuaWFkZChkZWx0YSl9eDEuaXVzaHJuKDEpfX1mb3IodmFyIGo9MCxqbT0xOyhiLndvcmRzWzBdJmptKT09PTAmJmo8MjY7KytqLGptPDw9MSk7aWYoaj4wKXtiLml1c2hybihqKTt3aGlsZShqLS0gPjApe2lmKHgyLmlzT2RkKCkpe3gyLmlhZGQoZGVsdGEpfXgyLml1c2hybigxKX19aWYoYS5jbXAoYik+PTApe2EuaXN1YihiKTt4MS5pc3ViKHgyKX1lbHNle2IuaXN1YihhKTt4Mi5pc3ViKHgxKX19dmFyIHJlcztpZihhLmNtcG4oMSk9PT0wKXtyZXM9eDF9ZWxzZXtyZXM9eDJ9aWYocmVzLmNtcG4oMCk8MCl7cmVzLmlhZGQocCl9cmV0dXJuIHJlc307Qk4ucHJvdG90eXBlLmdjZD1mdW5jdGlvbiBnY2QobnVtKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBudW0uYWJzKCk7aWYobnVtLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBhPXRoaXMuY2xvbmUoKTt2YXIgYj1udW0uY2xvbmUoKTthLm5lZ2F0aXZlPTA7Yi5uZWdhdGl2ZT0wO2Zvcih2YXIgc2hpZnQ9MDthLmlzRXZlbigpJiZiLmlzRXZlbigpO3NoaWZ0Kyspe2EuaXVzaHJuKDEpO2IuaXVzaHJuKDEpfWRve3doaWxlKGEuaXNFdmVuKCkpe2EuaXVzaHJuKDEpfXdoaWxlKGIuaXNFdmVuKCkpe2IuaXVzaHJuKDEpfXZhciByPWEuY21wKGIpO2lmKHI8MCl7dmFyIHQ9YTthPWI7Yj10fWVsc2UgaWYocj09PTB8fGIuY21wbigxKT09PTApe2JyZWFrfWEuaXN1YihiKX13aGlsZSh0cnVlKTtyZXR1cm4gYi5pdXNobG4oc2hpZnQpfTtCTi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbiBpbnZtKG51bSl7cmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pfTtCTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uIGlzRXZlbigpe3JldHVybih0aGlzLndvcmRzWzBdJjEpPT09MH07Qk4ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uIGlzT2RkKCl7cmV0dXJuKHRoaXMud29yZHNbMF0mMSk9PT0xfTtCTi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24gYW5kbG4obnVtKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZudW19O0JOLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbiBiaW5jbihiaXQpe2Fzc2VydCh0eXBlb2YgYml0PT09Im51bWJlciIpO3ZhciByPWJpdCUyNjt2YXIgcz0oYml0LXIpLzI2O3ZhciBxPTE8PHI7aWYodGhpcy5sZW5ndGg8PXMpe3RoaXMuX2V4cGFuZChzKzEpO3RoaXMud29yZHNbc118PXE7cmV0dXJuIHRoaXN9dmFyIGNhcnJ5PXE7Zm9yKHZhciBpPXM7Y2FycnkhPT0wJiZpPHRoaXMubGVuZ3RoO2krKyl7dmFyIHc9dGhpcy53b3Jkc1tpXXwwO3crPWNhcnJ5O2NhcnJ5PXc+Pj4yNjt3Jj02NzEwODg2Mzt0aGlzLndvcmRzW2ldPXd9aWYoY2FycnkhPT0wKXt0aGlzLndvcmRzW2ldPWNhcnJ5O3RoaXMubGVuZ3RoKyt9cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24gaXNaZXJvKCl7cmV0dXJuIHRoaXMubGVuZ3RoPT09MSYmdGhpcy53b3Jkc1swXT09PTB9O0JOLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uIGNtcG4obnVtKXt2YXIgbmVnYXRpdmU9bnVtPDA7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJiFuZWdhdGl2ZSlyZXR1cm4tMTtpZih0aGlzLm5lZ2F0aXZlPT09MCYmbmVnYXRpdmUpcmV0dXJuIDE7dGhpcy5zdHJpcCgpO3ZhciByZXM7aWYodGhpcy5sZW5ndGg+MSl7cmVzPTF9ZWxzZXtpZihuZWdhdGl2ZSl7bnVtPS1udW19YXNzZXJ0KG51bTw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHc9dGhpcy53b3Jkc1swXXwwO3Jlcz13PT09bnVtPzA6dzxudW0/LTE6MX1pZih0aGlzLm5lZ2F0aXZlIT09MClyZXR1cm4tcmVzfDA7cmV0dXJuIHJlc307Qk4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbiBjbXAobnVtKXtpZih0aGlzLm5lZ2F0aXZlIT09MCYmbnVtLm5lZ2F0aXZlPT09MClyZXR1cm4tMTtpZih0aGlzLm5lZ2F0aXZlPT09MCYmbnVtLm5lZ2F0aXZlIT09MClyZXR1cm4gMTt2YXIgcmVzPXRoaXMudWNtcChudW0pO2lmKHRoaXMubmVnYXRpdmUhPT0wKXJldHVybi1yZXN8MDtyZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbiB1Y21wKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxudW0ubGVuZ3RoKXJldHVybi0xO3ZhciByZXM9MDtmb3IodmFyIGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGE9dGhpcy53b3Jkc1tpXXwwO3ZhciBiPW51bS53b3Jkc1tpXXwwO2lmKGE9PT1iKWNvbnRpbnVlO2lmKGE8Yil7cmVzPS0xfWVsc2UgaWYoYT5iKXtyZXM9MX1icmVha31yZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uIGd0bihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKT09PTF9O0JOLnByb3RvdHlwZS5ndD1mdW5jdGlvbiBndChudW0pe3JldHVybiB0aGlzLmNtcChudW0pPT09MX07Qk4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24gZ3RlbihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKT49MH07Qk4ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbiBndGUobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKT49MH07Qk4ucHJvdG90eXBlLmx0bj1mdW5jdGlvbiBsdG4obnVtKXtyZXR1cm4gdGhpcy5jbXBuKG51bSk9PT0tMX07Qk4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uIGx0KG51bSl7cmV0dXJuIHRoaXMuY21wKG51bSk9PT0tMX07Qk4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24gbHRlbihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKTw9MH07Qk4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbiBsdGUobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKTw9MH07Qk4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbiBlcW4obnVtKXtyZXR1cm4gdGhpcy5jbXBuKG51bSk9PT0wfTtCTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKT09PTB9O0JOLnJlZD1mdW5jdGlvbiByZWQobnVtKXtyZXR1cm4gbmV3IFJlZChudW0pfTtCTi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24gdG9SZWQoY3R4KXthc3NlcnQoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Iik7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpO3JldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpfTtCTi5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbiBmcm9tUmVkKCl7YXNzZXJ0KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfTtCTi5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uIF9mb3JjZVJlZChjdHgpe3RoaXMucmVkPWN0eDtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uIGZvcmNlUmVkKGN0eCl7YXNzZXJ0KCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpO3JldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpfTtCTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uIHJlZEFkZChudW0pe2Fzc2VydCh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3JldHVybiB0aGlzLnJlZC5hZGQodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbiByZWRJQWRkKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3JldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbiByZWRTdWIobnVtKXthc3NlcnQodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTtyZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24gcmVkSVN1YihudW0pe2Fzc2VydCh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTtyZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLG51bSl9O0JOLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24gcmVkU2hsKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7cmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLG51bSl9O0JOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24gcmVkTXVsKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxudW0pO3JldHVybiB0aGlzLnJlZC5tdWwodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbiByZWRJTXVsKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxudW0pO3JldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbiByZWRTcXIoKXthc3NlcnQodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbiByZWRJU3FyKCl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbiByZWRTcXJ0KCl7YXNzZXJ0KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpfTtCTi5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbiByZWRJbnZtKCl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uIHJlZE5lZygpe2Fzc2VydCh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5uZWcodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24gcmVkUG93KG51bSl7YXNzZXJ0KHRoaXMucmVkJiYhbnVtLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsbnVtKX07dmFyIHByaW1lcz17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIE1QcmltZShuYW1lLHApe3RoaXMubmFtZT1uYW1lO3RoaXMucD1uZXcgQk4ocCwxNik7dGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKTt0aGlzLms9bmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTt0aGlzLnRtcD10aGlzLl90bXAoKX1NUHJpbWUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24gX3RtcCgpe3ZhciB0bXA9bmV3IEJOKG51bGwpO3RtcC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpO3JldHVybiB0bXB9O01QcmltZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbiBpcmVkdWNlKG51bSl7dmFyIHI9bnVtO3ZhciBybGVuO2Rve3RoaXMuc3BsaXQocix0aGlzLnRtcCk7cj10aGlzLmltdWxLKHIpO3I9ci5pYWRkKHRoaXMudG1wKTtybGVuPXIuYml0TGVuZ3RoKCl9d2hpbGUocmxlbj50aGlzLm4pO3ZhciBjbXA9cmxlbjx0aGlzLm4/LTE6ci51Y21wKHRoaXMucCk7aWYoY21wPT09MCl7ci53b3Jkc1swXT0wO3IubGVuZ3RoPTF9ZWxzZSBpZihjbXA+MCl7ci5pc3ViKHRoaXMucCl9ZWxzZXtpZihyLnN0cmlwIT09dW5kZWZpbmVkKXtyLnN0cmlwKCl9ZWxzZXtyLl9zdHJpcCgpfX1yZXR1cm4gcn07TVByaW1lLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbiBzcGxpdChpbnB1dCxvdXQpe2lucHV0Lml1c2hybih0aGlzLm4sMCxvdXQpfTtNUHJpbWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uIGltdWxLKG51bSl7cmV0dXJuIG51bS5pbXVsKHRoaXMuayl9O2Z1bmN0aW9uIEsyNTYoKXtNUHJpbWUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1pbmhlcml0cyhLMjU2LE1QcmltZSk7SzI1Ni5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24gc3BsaXQoaW5wdXQsb3V0cHV0KXt2YXIgbWFzaz00MTk0MzAzO3ZhciBvdXRMZW49TWF0aC5taW4oaW5wdXQubGVuZ3RoLDkpO2Zvcih2YXIgaT0wO2k8b3V0TGVuO2krKyl7b3V0cHV0LndvcmRzW2ldPWlucHV0LndvcmRzW2ldfW91dHB1dC5sZW5ndGg9b3V0TGVuO2lmKGlucHV0Lmxlbmd0aDw9OSl7aW5wdXQud29yZHNbMF09MDtpbnB1dC5sZW5ndGg9MTtyZXR1cm59dmFyIHByZXY9aW5wdXQud29yZHNbOV07b3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK109cHJldiZtYXNrO2ZvcihpPTEwO2k8aW5wdXQubGVuZ3RoO2krKyl7dmFyIG5leHQ9aW5wdXQud29yZHNbaV18MDtpbnB1dC53b3Jkc1tpLTEwXT0obmV4dCZtYXNrKTw8NHxwcmV2Pj4+MjI7cHJldj1uZXh0fXByZXY+Pj49MjI7aW5wdXQud29yZHNbaS0xMF09cHJldjtpZihwcmV2PT09MCYmaW5wdXQubGVuZ3RoPjEwKXtpbnB1dC5sZW5ndGgtPTEwfWVsc2V7aW5wdXQubGVuZ3RoLT05fX07SzI1Ni5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsobnVtKXtudW0ud29yZHNbbnVtLmxlbmd0aF09MDtudW0ud29yZHNbbnVtLmxlbmd0aCsxXT0wO251bS5sZW5ndGgrPTI7dmFyIGxvPTA7Zm9yKHZhciBpPTA7aTxudW0ubGVuZ3RoO2krKyl7dmFyIHc9bnVtLndvcmRzW2ldfDA7bG8rPXcqOTc3O251bS53b3Jkc1tpXT1sbyY2NzEwODg2Mztsbz13KjY0Kyhsby82NzEwODg2NHwwKX1pZihudW0ud29yZHNbbnVtLmxlbmd0aC0xXT09PTApe251bS5sZW5ndGgtLTtpZihudW0ud29yZHNbbnVtLmxlbmd0aC0xXT09PTApe251bS5sZW5ndGgtLX19cmV0dXJuIG51bX07ZnVuY3Rpb24gUDIyNCgpe01QcmltZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWluaGVyaXRzKFAyMjQsTVByaW1lKTtmdW5jdGlvbiBQMTkyKCl7TVByaW1lLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9aW5oZXJpdHMoUDE5MixNUHJpbWUpO2Z1bmN0aW9uIFAyNTUxOSgpe01QcmltZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWluaGVyaXRzKFAyNTUxOSxNUHJpbWUpO1AyNTUxOS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsobnVtKXt2YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPG51bS5sZW5ndGg7aSsrKXt2YXIgaGk9KG51bS53b3Jkc1tpXXwwKSoxOStjYXJyeTt2YXIgbG89aGkmNjcxMDg4NjM7aGk+Pj49MjY7bnVtLndvcmRzW2ldPWxvO2NhcnJ5PWhpfWlmKGNhcnJ5IT09MCl7bnVtLndvcmRzW251bS5sZW5ndGgrK109Y2Fycnl9cmV0dXJuIG51bX07Qk4uX3ByaW1lPWZ1bmN0aW9uIHByaW1lKG5hbWUpe2lmKHByaW1lc1tuYW1lXSlyZXR1cm4gcHJpbWVzW25hbWVdO3ZhciBwcmltZTtpZihuYW1lPT09ImsyNTYiKXtwcmltZT1uZXcgSzI1Nn1lbHNlIGlmKG5hbWU9PT0icDIyNCIpe3ByaW1lPW5ldyBQMjI0fWVsc2UgaWYobmFtZT09PSJwMTkyIil7cHJpbWU9bmV3IFAxOTJ9ZWxzZSBpZihuYW1lPT09InAyNTUxOSIpe3ByaW1lPW5ldyBQMjU1MTl9ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIituYW1lKX1wcmltZXNbbmFtZV09cHJpbWU7cmV0dXJuIHByaW1lfTtmdW5jdGlvbiBSZWQobSl7aWYodHlwZW9mIG09PT0ic3RyaW5nIil7dmFyIHByaW1lPUJOLl9wcmltZShtKTt0aGlzLm09cHJpbWUucDt0aGlzLnByaW1lPXByaW1lfWVsc2V7YXNzZXJ0KG0uZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKTt0aGlzLm09bTt0aGlzLnByaW1lPW51bGx9fVJlZC5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24gX3ZlcmlmeTEoYSl7YXNzZXJ0KGEubmVnYXRpdmU9PT0wLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpO2Fzc2VydChhLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfTtSZWQucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uIF92ZXJpZnkyKGEsYil7YXNzZXJ0KChhLm5lZ2F0aXZlfGIubmVnYXRpdmUpPT09MCwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKTthc3NlcnQoYS5yZWQmJmEucmVkPT09Yi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX07UmVkLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uIGltb2QoYSl7aWYodGhpcy5wcmltZSlyZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtyZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLm5lZz1mdW5jdGlvbiBuZWcoYSl7aWYoYS5pc1plcm8oKSl7cmV0dXJuIGEuY2xvbmUoKX1yZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIGFkZChhLGIpe3RoaXMuX3ZlcmlmeTIoYSxiKTt2YXIgcmVzPWEuYWRkKGIpO2lmKHJlcy5jbXAodGhpcy5tKT49MCl7cmVzLmlzdWIodGhpcy5tKX1yZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKX07UmVkLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uIGlhZGQoYSxiKXt0aGlzLl92ZXJpZnkyKGEsYik7dmFyIHJlcz1hLmlhZGQoYik7aWYocmVzLmNtcCh0aGlzLm0pPj0wKXtyZXMuaXN1Yih0aGlzLm0pfXJldHVybiByZXN9O1JlZC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uIHN1YihhLGIpe3RoaXMuX3ZlcmlmeTIoYSxiKTt2YXIgcmVzPWEuc3ViKGIpO2lmKHJlcy5jbXBuKDApPDApe3Jlcy5pYWRkKHRoaXMubSl9cmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbiBpc3ViKGEsYil7dGhpcy5fdmVyaWZ5MihhLGIpO3ZhciByZXM9YS5pc3ViKGIpO2lmKHJlcy5jbXBuKDApPDApe3Jlcy5pYWRkKHRoaXMubSl9cmV0dXJuIHJlc307UmVkLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24gc2hsKGEsbnVtKXt0aGlzLl92ZXJpZnkxKGEpO3JldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKX07UmVkLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uIGltdWwoYSxiKXt0aGlzLl92ZXJpZnkyKGEsYik7cmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpfTtSZWQucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoYSxiKXt0aGlzLl92ZXJpZnkyKGEsYik7cmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSl9O1JlZC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbiBpc3FyKGEpe3JldHVybiB0aGlzLmltdWwoYSxhLmNsb25lKCkpfTtSZWQucHJvdG90eXBlLnNxcj1mdW5jdGlvbiBzcXIoYSl7cmV0dXJuIHRoaXMubXVsKGEsYSl9O1JlZC5wcm90b3R5cGUuc3FydD1mdW5jdGlvbiBzcXJ0KGEpe2lmKGEuaXNaZXJvKCkpcmV0dXJuIGEuY2xvbmUoKTt2YXIgbW9kMz10aGlzLm0uYW5kbG4oMyk7YXNzZXJ0KG1vZDMlMj09PTEpO2lmKG1vZDM9PT0zKXt2YXIgcG93PXRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGEscG93KX12YXIgcT10aGlzLm0uc3VibigxKTt2YXIgcz0wO3doaWxlKCFxLmlzWmVybygpJiZxLmFuZGxuKDEpPT09MCl7cysrO3EuaXVzaHJuKDEpfWFzc2VydCghcS5pc1plcm8oKSk7dmFyIG9uZT1uZXcgQk4oMSkudG9SZWQodGhpcyk7dmFyIG5PbmU9b25lLnJlZE5lZygpO3ZhciBscG93PXRoaXMubS5zdWJuKDEpLml1c2hybigxKTt2YXIgej10aGlzLm0uYml0TGVuZ3RoKCk7ej1uZXcgQk4oMip6KnopLnRvUmVkKHRoaXMpO3doaWxlKHRoaXMucG93KHosbHBvdykuY21wKG5PbmUpIT09MCl7ei5yZWRJQWRkKG5PbmUpfXZhciBjPXRoaXMucG93KHoscSk7dmFyIHI9dGhpcy5wb3coYSxxLmFkZG4oMSkuaXVzaHJuKDEpKTt2YXIgdD10aGlzLnBvdyhhLHEpO3ZhciBtPXM7d2hpbGUodC5jbXAob25lKSE9PTApe3ZhciB0bXA9dDtmb3IodmFyIGk9MDt0bXAuY21wKG9uZSkhPT0wO2krKyl7dG1wPXRtcC5yZWRTcXIoKX1hc3NlcnQoaTxtKTt2YXIgYj10aGlzLnBvdyhjLG5ldyBCTigxKS5pdXNobG4obS1pLTEpKTtyPXIucmVkTXVsKGIpO2M9Yi5yZWRTcXIoKTt0PXQucmVkTXVsKGMpO209aX1yZXR1cm4gcn07UmVkLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uIGludm0oYSl7dmFyIGludj1hLl9pbnZtcCh0aGlzLm0pO2lmKGludi5uZWdhdGl2ZSE9PTApe2ludi5uZWdhdGl2ZT0wO3JldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKX1lbHNle3JldHVybiB0aGlzLmltb2QoaW52KX19O1JlZC5wcm90b3R5cGUucG93PWZ1bmN0aW9uIHBvdyhhLG51bSl7aWYobnVtLmlzWmVybygpKXJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7aWYobnVtLmNtcG4oMSk9PT0wKXJldHVybiBhLmNsb25lKCk7dmFyIHdpbmRvd1NpemU9NDt2YXIgd25kPW5ldyBBcnJheSgxPDx3aW5kb3dTaXplKTt3bmRbMF09bmV3IEJOKDEpLnRvUmVkKHRoaXMpO3duZFsxXT1hO2Zvcih2YXIgaT0yO2k8d25kLmxlbmd0aDtpKyspe3duZFtpXT10aGlzLm11bCh3bmRbaS0xXSxhKX12YXIgcmVzPXduZFswXTt2YXIgY3VycmVudD0wO3ZhciBjdXJyZW50TGVuPTA7dmFyIHN0YXJ0PW51bS5iaXRMZW5ndGgoKSUyNjtpZihzdGFydD09PTApe3N0YXJ0PTI2fWZvcihpPW51bS5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIHdvcmQ9bnVtLndvcmRzW2ldO2Zvcih2YXIgaj1zdGFydC0xO2o+PTA7ai0tKXt2YXIgYml0PXdvcmQ+PmomMTtpZihyZXMhPT13bmRbMF0pe3Jlcz10aGlzLnNxcihyZXMpfWlmKGJpdD09PTAmJmN1cnJlbnQ9PT0wKXtjdXJyZW50TGVuPTA7Y29udGludWV9Y3VycmVudDw8PTE7Y3VycmVudHw9Yml0O2N1cnJlbnRMZW4rKztpZihjdXJyZW50TGVuIT09d2luZG93U2l6ZSYmKGkhPT0wfHxqIT09MCkpY29udGludWU7cmVzPXRoaXMubXVsKHJlcyx3bmRbY3VycmVudF0pO2N1cnJlbnRMZW49MDtjdXJyZW50PTB9c3RhcnQ9MjZ9cmV0dXJuIHJlc307UmVkLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24gY29udmVydFRvKG51bSl7dmFyIHI9bnVtLnVtb2QodGhpcy5tKTtyZXR1cm4gcj09PW51bT9yLmNsb25lKCk6cn07UmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbiBjb252ZXJ0RnJvbShudW0pe3ZhciByZXM9bnVtLmNsb25lKCk7cmVzLnJlZD1udWxsO3JldHVybiByZXN9O0JOLm1vbnQ9ZnVuY3Rpb24gbW9udChudW0pe3JldHVybiBuZXcgTW9udChudW0pfTtmdW5jdGlvbiBNb250KG0pe1JlZC5jYWxsKHRoaXMsbSk7dGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCk7aWYodGhpcy5zaGlmdCUyNiE9PTApe3RoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjZ9dGhpcy5yPW5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7dGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKTt0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pO3RoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7dGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMucik7dGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1pbmhlcml0cyhNb250LFJlZCk7TW9udC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uIGNvbnZlcnRUbyhudW0pe3JldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKX07TW9udC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24gY29udmVydEZyb20obnVtKXt2YXIgcj10aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtyLnJlZD1udWxsO3JldHVybiByfTtNb250LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uIGltdWwoYSxiKXtpZihhLmlzWmVybygpfHxiLmlzWmVybygpKXthLndvcmRzWzBdPTA7YS5sZW5ndGg9MTtyZXR1cm4gYX12YXIgdD1hLmltdWwoYik7dmFyIGM9dC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7dmFyIHU9dC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTt2YXIgcmVzPXU7aWYodS5jbXAodGhpcy5tKT49MCl7cmVzPXUuaXN1Yih0aGlzLm0pfWVsc2UgaWYodS5jbXBuKDApPDApe3Jlcz11LmlhZGQodGhpcy5tKX1yZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKX07TW9udC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChhLGIpe2lmKGEuaXNaZXJvKCl8fGIuaXNaZXJvKCkpcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHQ9YS5tdWwoYik7dmFyIGM9dC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7dmFyIHU9dC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTt2YXIgcmVzPXU7aWYodS5jbXAodGhpcy5tKT49MCl7cmVzPXUuaXN1Yih0aGlzLm0pfWVsc2UgaWYodS5jbXBuKDApPDApe3Jlcz11LmlhZGQodGhpcy5tKX1yZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKX07TW9udC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbiBpbnZtKGEpe3ZhciByZXM9dGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtyZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKX19KSgib2JqZWN0Ij09PSJ1bmRlZmluZWQifHxtb2R1bGUsY29tbW9uanNHbG9iYWwpfSk7dmFyIF92ZXJzaW9uPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImxvZ2dlci81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbik7dmFyIGxpYj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuTG9nZ2VyPWV4cG9ydHMuRXJyb3JDb2RlPWV4cG9ydHMuTG9nTGV2ZWw9dm9pZCAwO3ZhciBfcGVybWFuZW50Q2Vuc29yRXJyb3JzPWZhbHNlO3ZhciBfY2Vuc29yRXJyb3JzPWZhbHNlO3ZhciBMb2dMZXZlbHM9e2RlYnVnOjEsZGVmYXVsdDoyLGluZm86Mix3YXJuaW5nOjMsZXJyb3I6NCxvZmY6NX07dmFyIF9sb2dMZXZlbD1Mb2dMZXZlbHNbImRlZmF1bHQiXTt2YXIgX2dsb2JhbExvZ2dlcj1udWxsO2Z1bmN0aW9uIF9jaGVja05vcm1hbGl6ZSgpe3RyeXt2YXIgbWlzc2luZ18xPVtdO1siTkZEIiwiTkZDIiwiTkZLRCIsIk5GS0MiXS5mb3JFYWNoKGZ1bmN0aW9uKGZvcm0pe3RyeXtpZigidGVzdCIubm9ybWFsaXplKGZvcm0pIT09InRlc3QiKXt0aHJvdyBuZXcgRXJyb3IoImJhZCBub3JtYWxpemUiKX19Y2F0Y2goZXJyb3Ipe21pc3NpbmdfMS5wdXNoKGZvcm0pfX0pO2lmKG1pc3NpbmdfMS5sZW5ndGgpe3Rocm93IG5ldyBFcnJvcigibWlzc2luZyAiK21pc3NpbmdfMS5qb2luKCIsICIpKX1pZihTdHJpbmcuZnJvbUNoYXJDb2RlKDIzMykubm9ybWFsaXplKCJORkQiKSE9PVN0cmluZy5mcm9tQ2hhckNvZGUoMTAxLDc2OSkpe3Rocm93IG5ldyBFcnJvcigiYnJva2VuIGltcGxlbWVudGF0aW9uIil9fWNhdGNoKGVycm9yKXtyZXR1cm4gZXJyb3IubWVzc2FnZX1yZXR1cm4gbnVsbH12YXIgX25vcm1hbGl6ZUVycm9yPV9jaGVja05vcm1hbGl6ZSgpO3ZhciBMb2dMZXZlbDsoZnVuY3Rpb24oTG9nTGV2ZWwpe0xvZ0xldmVsWyJERUJVRyJdPSJERUJVRyI7TG9nTGV2ZWxbIklORk8iXT0iSU5GTyI7TG9nTGV2ZWxbIldBUk5JTkciXT0iV0FSTklORyI7TG9nTGV2ZWxbIkVSUk9SIl09IkVSUk9SIjtMb2dMZXZlbFsiT0ZGIl09Ik9GRiJ9KShMb2dMZXZlbD1leHBvcnRzLkxvZ0xldmVsfHwoZXhwb3J0cy5Mb2dMZXZlbD17fSkpO3ZhciBFcnJvckNvZGU7KGZ1bmN0aW9uKEVycm9yQ29kZSl7RXJyb3JDb2RlWyJVTktOT1dOX0VSUk9SIl09IlVOS05PV05fRVJST1IiO0Vycm9yQ29kZVsiTk9UX0lNUExFTUVOVEVEIl09Ik5PVF9JTVBMRU1FTlRFRCI7RXJyb3JDb2RlWyJVTlNVUFBPUlRFRF9PUEVSQVRJT04iXT0iVU5TVVBQT1JURURfT1BFUkFUSU9OIjtFcnJvckNvZGVbIk5FVFdPUktfRVJST1IiXT0iTkVUV09SS19FUlJPUiI7RXJyb3JDb2RlWyJTRVJWRVJfRVJST1IiXT0iU0VSVkVSX0VSUk9SIjtFcnJvckNvZGVbIlRJTUVPVVQiXT0iVElNRU9VVCI7RXJyb3JDb2RlWyJCVUZGRVJfT1ZFUlJVTiJdPSJCVUZGRVJfT1ZFUlJVTiI7RXJyb3JDb2RlWyJOVU1FUklDX0ZBVUxUIl09Ik5VTUVSSUNfRkFVTFQiO0Vycm9yQ29kZVsiTUlTU0lOR19ORVciXT0iTUlTU0lOR19ORVciO0Vycm9yQ29kZVsiSU5WQUxJRF9BUkdVTUVOVCJdPSJJTlZBTElEX0FSR1VNRU5UIjtFcnJvckNvZGVbIk1JU1NJTkdfQVJHVU1FTlQiXT0iTUlTU0lOR19BUkdVTUVOVCI7RXJyb3JDb2RlWyJVTkVYUEVDVEVEX0FSR1VNRU5UIl09IlVORVhQRUNURURfQVJHVU1FTlQiO0Vycm9yQ29kZVsiQ0FMTF9FWENFUFRJT04iXT0iQ0FMTF9FWENFUFRJT04iO0Vycm9yQ29kZVsiSU5TVUZGSUNJRU5UX0ZVTkRTIl09IklOU1VGRklDSUVOVF9GVU5EUyI7RXJyb3JDb2RlWyJOT05DRV9FWFBJUkVEIl09Ik5PTkNFX0VYUElSRUQiO0Vycm9yQ29kZVsiUkVQTEFDRU1FTlRfVU5ERVJQUklDRUQiXT0iUkVQTEFDRU1FTlRfVU5ERVJQUklDRUQiO0Vycm9yQ29kZVsiVU5QUkVESUNUQUJMRV9HQVNfTElNSVQiXT0iVU5QUkVESUNUQUJMRV9HQVNfTElNSVQiO0Vycm9yQ29kZVsiVFJBTlNBQ1RJT05fUkVQTEFDRUQiXT0iVFJBTlNBQ1RJT05fUkVQTEFDRUQifSkoRXJyb3JDb2RlPWV4cG9ydHMuRXJyb3JDb2RlfHwoZXhwb3J0cy5FcnJvckNvZGU9e30pKTt2YXIgTG9nZ2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gTG9nZ2VyKHZlcnNpb24pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ2ZXJzaW9uIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnZlcnNpb24sd3JpdGFibGU6ZmFsc2V9KX1Mb2dnZXIucHJvdG90eXBlLl9sb2c9ZnVuY3Rpb24obG9nTGV2ZWwsYXJncyl7dmFyIGxldmVsPWxvZ0xldmVsLnRvTG93ZXJDYXNlKCk7aWYoTG9nTGV2ZWxzW2xldmVsXT09bnVsbCl7dGhpcy50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbG9nIGxldmVsIG5hbWUiLCJsb2dMZXZlbCIsbG9nTGV2ZWwpfWlmKF9sb2dMZXZlbD5Mb2dMZXZlbHNbbGV2ZWxdKXtyZXR1cm59Y29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxhcmdzKX07TG9nZ2VyLnByb3RvdHlwZS5kZWJ1Zz1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19dGhpcy5fbG9nKExvZ2dlci5sZXZlbHMuREVCVUcsYXJncyl9O0xvZ2dlci5wcm90b3R5cGUuaW5mbz1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19dGhpcy5fbG9nKExvZ2dlci5sZXZlbHMuSU5GTyxhcmdzKX07TG9nZ2VyLnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0wO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaV09YXJndW1lbnRzW19pXX10aGlzLl9sb2coTG9nZ2VyLmxldmVscy5XQVJOSU5HLGFyZ3MpfTtMb2dnZXIucHJvdG90eXBlLm1ha2VFcnJvcj1mdW5jdGlvbihtZXNzYWdlLGNvZGUscGFyYW1zKXtpZihfY2Vuc29yRXJyb3JzKXtyZXR1cm4gdGhpcy5tYWtlRXJyb3IoImNlbnNvcmVkIGVycm9yIixjb2RlLHt9KX1pZighY29kZSl7Y29kZT1Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1J9aWYoIXBhcmFtcyl7cGFyYW1zPXt9fXZhciBtZXNzYWdlRGV0YWlscz1bXTtPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goZnVuY3Rpb24oa2V5KXt0cnl7bWVzc2FnZURldGFpbHMucHVzaChrZXkrIj0iK0pTT04uc3RyaW5naWZ5KHBhcmFtc1trZXldKSl9Y2F0Y2goZXJyb3Ipe21lc3NhZ2VEZXRhaWxzLnB1c2goa2V5KyI9IitKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XS50b1N0cmluZygpKSl9fSk7bWVzc2FnZURldGFpbHMucHVzaCgiY29kZT0iK2NvZGUpO21lc3NhZ2VEZXRhaWxzLnB1c2goInZlcnNpb249Iit0aGlzLnZlcnNpb24pO3ZhciByZWFzb249bWVzc2FnZTtpZihtZXNzYWdlRGV0YWlscy5sZW5ndGgpe21lc3NhZ2UrPSIgKCIrbWVzc2FnZURldGFpbHMuam9pbigiLCAiKSsiKSJ9dmFyIGVycm9yPW5ldyBFcnJvcihtZXNzYWdlKTtlcnJvci5yZWFzb249cmVhc29uO2Vycm9yLmNvZGU9Y29kZTtPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtlcnJvcltrZXldPXBhcmFtc1trZXldfSk7cmV0dXJuIGVycm9yfTtMb2dnZXIucHJvdG90eXBlLnRocm93RXJyb3I9ZnVuY3Rpb24obWVzc2FnZSxjb2RlLHBhcmFtcyl7dGhyb3cgdGhpcy5tYWtlRXJyb3IobWVzc2FnZSxjb2RlLHBhcmFtcyl9O0xvZ2dlci5wcm90b3R5cGUudGhyb3dBcmd1bWVudEVycm9yPWZ1bmN0aW9uKG1lc3NhZ2UsbmFtZSx2YWx1ZSl7cmV0dXJuIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlLExvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7YXJndW1lbnQ6bmFtZSx2YWx1ZTp2YWx1ZX0pfTtMb2dnZXIucHJvdG90eXBlLmFzc2VydD1mdW5jdGlvbihjb25kaXRpb24sbWVzc2FnZSxjb2RlLHBhcmFtcyl7aWYoISFjb25kaXRpb24pe3JldHVybn10aGlzLnRocm93RXJyb3IobWVzc2FnZSxjb2RlLHBhcmFtcyl9O0xvZ2dlci5wcm90b3R5cGUuYXNzZXJ0QXJndW1lbnQ9ZnVuY3Rpb24oY29uZGl0aW9uLG1lc3NhZ2UsbmFtZSx2YWx1ZSl7aWYoISFjb25kaXRpb24pe3JldHVybn10aGlzLnRocm93QXJndW1lbnRFcnJvcihtZXNzYWdlLG5hbWUsdmFsdWUpfTtMb2dnZXIucHJvdG90eXBlLmNoZWNrTm9ybWFsaXplPWZ1bmN0aW9uKG1lc3NhZ2Upe2lmKG1lc3NhZ2U9PW51bGwpe21lc3NhZ2U9InBsYXRmb3JtIG1pc3NpbmcgU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUifWlmKF9ub3JtYWxpemVFcnJvcil7dGhpcy50aHJvd0Vycm9yKCJwbGF0Zm9ybSBtaXNzaW5nIFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplIixMb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSIsZm9ybTpfbm9ybWFsaXplRXJyb3J9KX19O0xvZ2dlci5wcm90b3R5cGUuY2hlY2tTYWZlVWludDUzPWZ1bmN0aW9uKHZhbHVlLG1lc3NhZ2Upe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiKXtyZXR1cm59aWYobWVzc2FnZT09bnVsbCl7bWVzc2FnZT0idmFsdWUgbm90IHNhZmUifWlmKHZhbHVlPDB8fHZhbHVlPj05MDA3MTk5MjU0NzQwOTkxKXt0aGlzLnRocm93RXJyb3IobWVzc2FnZSxMb2dnZXIuZXJyb3JzLk5VTUVSSUNfRkFVTFQse29wZXJhdGlvbjoiY2hlY2tTYWZlSW50ZWdlciIsZmF1bHQ6Im91dC1vZi1zYWZlLXJhbmdlIix2YWx1ZTp2YWx1ZX0pfWlmKHZhbHVlJTEpe3RoaXMudGhyb3dFcnJvcihtZXNzYWdlLExvZ2dlci5lcnJvcnMuTlVNRVJJQ19GQVVMVCx7b3BlcmF0aW9uOiJjaGVja1NhZmVJbnRlZ2VyIixmYXVsdDoibm9uLWludGVnZXIiLHZhbHVlOnZhbHVlfSl9fTtMb2dnZXIucHJvdG90eXBlLmNoZWNrQXJndW1lbnRDb3VudD1mdW5jdGlvbihjb3VudCxleHBlY3RlZENvdW50LG1lc3NhZ2Upe2lmKG1lc3NhZ2Upe21lc3NhZ2U9IjogIittZXNzYWdlfWVsc2V7bWVzc2FnZT0iIn1pZihjb3VudDxleHBlY3RlZENvdW50KXt0aGlzLnRocm93RXJyb3IoIm1pc3NpbmcgYXJndW1lbnQiK21lc3NhZ2UsTG9nZ2VyLmVycm9ycy5NSVNTSU5HX0FSR1VNRU5ULHtjb3VudDpjb3VudCxleHBlY3RlZENvdW50OmV4cGVjdGVkQ291bnR9KX1pZihjb3VudD5leHBlY3RlZENvdW50KXt0aGlzLnRocm93RXJyb3IoInRvbyBtYW55IGFyZ3VtZW50cyIrbWVzc2FnZSxMb2dnZXIuZXJyb3JzLlVORVhQRUNURURfQVJHVU1FTlQse2NvdW50OmNvdW50LGV4cGVjdGVkQ291bnQ6ZXhwZWN0ZWRDb3VudH0pfX07TG9nZ2VyLnByb3RvdHlwZS5jaGVja05ldz1mdW5jdGlvbih0YXJnZXQsa2luZCl7aWYodGFyZ2V0PT09T2JqZWN0fHx0YXJnZXQ9PW51bGwpe3RoaXMudGhyb3dFcnJvcigibWlzc2luZyBuZXciLExvZ2dlci5lcnJvcnMuTUlTU0lOR19ORVcse25hbWU6a2luZC5uYW1lfSl9fTtMb2dnZXIucHJvdG90eXBlLmNoZWNrQWJzdHJhY3Q9ZnVuY3Rpb24odGFyZ2V0LGtpbmQpe2lmKHRhcmdldD09PWtpbmQpe3RoaXMudGhyb3dFcnJvcigiY2Fubm90IGluc3RhbnRpYXRlIGFic3RyYWN0IGNsYXNzICIrSlNPTi5zdHJpbmdpZnkoa2luZC5uYW1lKSsiIGRpcmVjdGx5OyB1c2UgYSBzdWItY2xhc3MiLExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtuYW1lOnRhcmdldC5uYW1lLG9wZXJhdGlvbjoibmV3In0pfWVsc2UgaWYodGFyZ2V0PT09T2JqZWN0fHx0YXJnZXQ9PW51bGwpe3RoaXMudGhyb3dFcnJvcigibWlzc2luZyBuZXciLExvZ2dlci5lcnJvcnMuTUlTU0lOR19ORVcse25hbWU6a2luZC5uYW1lfSl9fTtMb2dnZXIuZ2xvYmFsTG9nZ2VyPWZ1bmN0aW9uKCl7aWYoIV9nbG9iYWxMb2dnZXIpe19nbG9iYWxMb2dnZXI9bmV3IExvZ2dlcihfdmVyc2lvbi52ZXJzaW9uKX1yZXR1cm4gX2dsb2JhbExvZ2dlcn07TG9nZ2VyLnNldENlbnNvcnNoaXA9ZnVuY3Rpb24oY2Vuc29yc2hpcCxwZXJtYW5lbnQpe2lmKCFjZW5zb3JzaGlwJiZwZXJtYW5lbnQpe3RoaXMuZ2xvYmFsTG9nZ2VyKCkudGhyb3dFcnJvcigiY2Fubm90IHBlcm1hbmVudGx5IGRpc2FibGUgY2Vuc29yc2hpcCIsTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2V0Q2Vuc29yc2hpcCJ9KX1pZihfcGVybWFuZW50Q2Vuc29yRXJyb3JzKXtpZighY2Vuc29yc2hpcCl7cmV0dXJufXRoaXMuZ2xvYmFsTG9nZ2VyKCkudGhyb3dFcnJvcigiZXJyb3IgY2Vuc29yc2hpcCBwZXJtYW5lbnQiLExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InNldENlbnNvcnNoaXAifSl9X2NlbnNvckVycm9ycz0hIWNlbnNvcnNoaXA7X3Blcm1hbmVudENlbnNvckVycm9ycz0hIXBlcm1hbmVudH07TG9nZ2VyLnNldExvZ0xldmVsPWZ1bmN0aW9uKGxvZ0xldmVsKXt2YXIgbGV2ZWw9TG9nTGV2ZWxzW2xvZ0xldmVsLnRvTG93ZXJDYXNlKCldO2lmKGxldmVsPT1udWxsKXtMb2dnZXIuZ2xvYmFsTG9nZ2VyKCkud2FybigiaW52YWxpZCBsb2cgbGV2ZWwgLSAiK2xvZ0xldmVsKTtyZXR1cm59X2xvZ0xldmVsPWxldmVsfTtMb2dnZXIuZnJvbT1mdW5jdGlvbih2ZXJzaW9uKXtyZXR1cm4gbmV3IExvZ2dlcih2ZXJzaW9uKX07TG9nZ2VyLmVycm9ycz1FcnJvckNvZGU7TG9nZ2VyLmxldmVscz1Mb2dMZXZlbDtyZXR1cm4gTG9nZ2VyfSgpO2V4cG9ydHMuTG9nZ2VyPUxvZ2dlcn0pO3ZhciBpbmRleD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIpO3ZhciBfdmVyc2lvbiQyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImJ5dGVzLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiQzPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJDIpO3ZhciBsaWIkMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuam9pblNpZ25hdHVyZT1leHBvcnRzLnNwbGl0U2lnbmF0dXJlPWV4cG9ydHMuaGV4WmVyb1BhZD1leHBvcnRzLmhleFN0cmlwWmVyb3M9ZXhwb3J0cy5oZXhWYWx1ZT1leHBvcnRzLmhleENvbmNhdD1leHBvcnRzLmhleERhdGFTbGljZT1leHBvcnRzLmhleERhdGFMZW5ndGg9ZXhwb3J0cy5oZXhsaWZ5PWV4cG9ydHMuaXNIZXhTdHJpbmc9ZXhwb3J0cy56ZXJvUGFkPWV4cG9ydHMuc3RyaXBaZXJvcz1leHBvcnRzLmNvbmNhdD1leHBvcnRzLmFycmF5aWZ5PWV4cG9ydHMuaXNCeXRlcz1leHBvcnRzLmlzQnl0ZXNMaWtlPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDIudmVyc2lvbik7ZnVuY3Rpb24gaXNIZXhhYmxlKHZhbHVlKXtyZXR1cm4hIXZhbHVlLnRvSGV4U3RyaW5nfWZ1bmN0aW9uIGFkZFNsaWNlKGFycmF5KXtpZihhcnJheS5zbGljZSl7cmV0dXJuIGFycmF5fWFycmF5LnNsaWNlPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFycmF5LGFyZ3MpKSl9O3JldHVybiBhcnJheX1mdW5jdGlvbiBpc0J5dGVzTGlrZSh2YWx1ZSl7cmV0dXJuIGlzSGV4U3RyaW5nKHZhbHVlKSYmISh2YWx1ZS5sZW5ndGglMil8fGlzQnl0ZXModmFsdWUpfWV4cG9ydHMuaXNCeXRlc0xpa2U9aXNCeXRlc0xpa2U7ZnVuY3Rpb24gaXNCeXRlcyh2YWx1ZSl7aWYodmFsdWU9PW51bGwpe3JldHVybiBmYWxzZX1pZih2YWx1ZS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpe3JldHVybiB0cnVlfWlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gZmFsc2V9aWYodmFsdWUubGVuZ3RoPT1udWxsKXtyZXR1cm4gZmFsc2V9Zm9yKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKXt2YXIgdj12YWx1ZVtpXTtpZih0eXBlb2YgdiE9PSJudW1iZXIifHx2PDB8fHY+PTI1Nnx8diUxKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfWV4cG9ydHMuaXNCeXRlcz1pc0J5dGVzO2Z1bmN0aW9uIGFycmF5aWZ5KHZhbHVlLG9wdGlvbnMpe2lmKCFvcHRpb25zKXtvcHRpb25zPXt9fWlmKHR5cGVvZiB2YWx1ZT09PSJudW1iZXIiKXtsb2dnZXIuY2hlY2tTYWZlVWludDUzKHZhbHVlLCJpbnZhbGlkIGFycmF5aWZ5IHZhbHVlIik7dmFyIHJlc3VsdD1bXTt3aGlsZSh2YWx1ZSl7cmVzdWx0LnVuc2hpZnQodmFsdWUmMjU1KTt2YWx1ZT1wYXJzZUludChTdHJpbmcodmFsdWUvMjU2KSl9aWYocmVzdWx0Lmxlbmd0aD09PTApe3Jlc3VsdC5wdXNoKDApfXJldHVybiBhZGRTbGljZShuZXcgVWludDhBcnJheShyZXN1bHQpKX1pZihvcHRpb25zLmFsbG93TWlzc2luZ1ByZWZpeCYmdHlwZW9mIHZhbHVlPT09InN0cmluZyImJnZhbHVlLnN1YnN0cmluZygwLDIpIT09IjB4Iil7dmFsdWU9IjB4Iit2YWx1ZX1pZihpc0hleGFibGUodmFsdWUpKXt2YWx1ZT12YWx1ZS50b0hleFN0cmluZygpfWlmKGlzSGV4U3RyaW5nKHZhbHVlKSl7dmFyIGhleD12YWx1ZS5zdWJzdHJpbmcoMik7aWYoaGV4Lmxlbmd0aCUyKXtpZihvcHRpb25zLmhleFBhZD09PSJsZWZ0Iil7aGV4PSIweDAiK2hleC5zdWJzdHJpbmcoMil9ZWxzZSBpZihvcHRpb25zLmhleFBhZD09PSJyaWdodCIpe2hleCs9IjAifWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaGV4IGRhdGEgaXMgb2RkLWxlbmd0aCIsInZhbHVlIix2YWx1ZSl9fXZhciByZXN1bHQ9W107Zm9yKHZhciBpPTA7aTxoZXgubGVuZ3RoO2krPTIpe3Jlc3VsdC5wdXNoKHBhcnNlSW50KGhleC5zdWJzdHJpbmcoaSxpKzIpLDE2KSl9cmV0dXJuIGFkZFNsaWNlKG5ldyBVaW50OEFycmF5KHJlc3VsdCkpfWlmKGlzQnl0ZXModmFsdWUpKXtyZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkodmFsdWUpKX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBhcnJheWlmeSB2YWx1ZSIsInZhbHVlIix2YWx1ZSl9ZXhwb3J0cy5hcnJheWlmeT1hcnJheWlmeTtmdW5jdGlvbiBjb25jYXQoaXRlbXMpe3ZhciBvYmplY3RzPWl0ZW1zLm1hcChmdW5jdGlvbihpdGVtKXtyZXR1cm4gYXJyYXlpZnkoaXRlbSl9KTt2YXIgbGVuZ3RoPW9iamVjdHMucmVkdWNlKGZ1bmN0aW9uKGFjY3VtLGl0ZW0pe3JldHVybiBhY2N1bStpdGVtLmxlbmd0aH0sMCk7dmFyIHJlc3VsdD1uZXcgVWludDhBcnJheShsZW5ndGgpO29iamVjdHMucmVkdWNlKGZ1bmN0aW9uKG9mZnNldCxvYmplY3Qpe3Jlc3VsdC5zZXQob2JqZWN0LG9mZnNldCk7cmV0dXJuIG9mZnNldCtvYmplY3QubGVuZ3RofSwwKTtyZXR1cm4gYWRkU2xpY2UocmVzdWx0KX1leHBvcnRzLmNvbmNhdD1jb25jYXQ7ZnVuY3Rpb24gc3RyaXBaZXJvcyh2YWx1ZSl7dmFyIHJlc3VsdD1hcnJheWlmeSh2YWx1ZSk7aWYocmVzdWx0Lmxlbmd0aD09PTApe3JldHVybiByZXN1bHR9dmFyIHN0YXJ0PTA7d2hpbGUoc3RhcnQ8cmVzdWx0Lmxlbmd0aCYmcmVzdWx0W3N0YXJ0XT09PTApe3N0YXJ0Kyt9aWYoc3RhcnQpe3Jlc3VsdD1yZXN1bHQuc2xpY2Uoc3RhcnQpfXJldHVybiByZXN1bHR9ZXhwb3J0cy5zdHJpcFplcm9zPXN0cmlwWmVyb3M7ZnVuY3Rpb24gemVyb1BhZCh2YWx1ZSxsZW5ndGgpe3ZhbHVlPWFycmF5aWZ5KHZhbHVlKTtpZih2YWx1ZS5sZW5ndGg+bGVuZ3RoKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ2YWx1ZSBvdXQgb2YgcmFuZ2UiLCJ2YWx1ZSIsYXJndW1lbnRzWzBdKX12YXIgcmVzdWx0PW5ldyBVaW50OEFycmF5KGxlbmd0aCk7cmVzdWx0LnNldCh2YWx1ZSxsZW5ndGgtdmFsdWUubGVuZ3RoKTtyZXR1cm4gYWRkU2xpY2UocmVzdWx0KX1leHBvcnRzLnplcm9QYWQ9emVyb1BhZDtmdW5jdGlvbiBpc0hleFN0cmluZyh2YWx1ZSxsZW5ndGgpe2lmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmcifHwhdmFsdWUubWF0Y2goL14weFswLTlBLUZhLWZdKiQvKSl7cmV0dXJuIGZhbHNlfWlmKGxlbmd0aCYmdmFsdWUubGVuZ3RoIT09MisyKmxlbmd0aCl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfWV4cG9ydHMuaXNIZXhTdHJpbmc9aXNIZXhTdHJpbmc7dmFyIEhleENoYXJhY3RlcnM9IjAxMjM0NTY3ODlhYmNkZWYiO2Z1bmN0aW9uIGhleGxpZnkodmFsdWUsb3B0aW9ucyl7aWYoIW9wdGlvbnMpe29wdGlvbnM9e319aWYodHlwZW9mIHZhbHVlPT09Im51bWJlciIpe2xvZ2dlci5jaGVja1NhZmVVaW50NTModmFsdWUsImludmFsaWQgaGV4bGlmeSB2YWx1ZSIpO3ZhciBoZXg9IiI7d2hpbGUodmFsdWUpe2hleD1IZXhDaGFyYWN0ZXJzW3ZhbHVlJjE1XStoZXg7dmFsdWU9TWF0aC5mbG9vcih2YWx1ZS8xNil9aWYoaGV4Lmxlbmd0aCl7aWYoaGV4Lmxlbmd0aCUyKXtoZXg9IjAiK2hleH1yZXR1cm4iMHgiK2hleH1yZXR1cm4iMHgwMCJ9aWYodHlwZW9mIHZhbHVlPT09ImJpZ2ludCIpe3ZhbHVlPXZhbHVlLnRvU3RyaW5nKDE2KTtpZih2YWx1ZS5sZW5ndGglMil7cmV0dXJuIjB4MCIrdmFsdWV9cmV0dXJuIjB4Iit2YWx1ZX1pZihvcHRpb25zLmFsbG93TWlzc2luZ1ByZWZpeCYmdHlwZW9mIHZhbHVlPT09InN0cmluZyImJnZhbHVlLnN1YnN0cmluZygwLDIpIT09IjB4Iil7dmFsdWU9IjB4Iit2YWx1ZX1pZihpc0hleGFibGUodmFsdWUpKXtyZXR1cm4gdmFsdWUudG9IZXhTdHJpbmcoKX1pZihpc0hleFN0cmluZyh2YWx1ZSkpe2lmKHZhbHVlLmxlbmd0aCUyKXtpZihvcHRpb25zLmhleFBhZD09PSJsZWZ0Iil7dmFsdWU9IjB4MCIrdmFsdWUuc3Vic3RyaW5nKDIpfWVsc2UgaWYob3B0aW9ucy5oZXhQYWQ9PT0icmlnaHQiKXt2YWx1ZSs9IjAifWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaGV4IGRhdGEgaXMgb2RkLWxlbmd0aCIsInZhbHVlIix2YWx1ZSl9fXJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpfWlmKGlzQnl0ZXModmFsdWUpKXt2YXIgcmVzdWx0PSIweCI7Zm9yKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKXt2YXIgdj12YWx1ZVtpXTtyZXN1bHQrPUhleENoYXJhY3RlcnNbKHYmMjQwKT4+NF0rSGV4Q2hhcmFjdGVyc1t2JjE1XX1yZXR1cm4gcmVzdWx0fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGhleGxpZnkgdmFsdWUiLCJ2YWx1ZSIsdmFsdWUpfWV4cG9ydHMuaGV4bGlmeT1oZXhsaWZ5O2Z1bmN0aW9uIGhleERhdGFMZW5ndGgoZGF0YSl7aWYodHlwZW9mIGRhdGEhPT0ic3RyaW5nIil7ZGF0YT1oZXhsaWZ5KGRhdGEpfWVsc2UgaWYoIWlzSGV4U3RyaW5nKGRhdGEpfHxkYXRhLmxlbmd0aCUyKXtyZXR1cm4gbnVsbH1yZXR1cm4oZGF0YS5sZW5ndGgtMikvMn1leHBvcnRzLmhleERhdGFMZW5ndGg9aGV4RGF0YUxlbmd0aDtmdW5jdGlvbiBoZXhEYXRhU2xpY2UoZGF0YSxvZmZzZXQsZW5kT2Zmc2V0KXtpZih0eXBlb2YgZGF0YSE9PSJzdHJpbmciKXtkYXRhPWhleGxpZnkoZGF0YSl9ZWxzZSBpZighaXNIZXhTdHJpbmcoZGF0YSl8fGRhdGEubGVuZ3RoJTIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgaGV4RGF0YSIsInZhbHVlIixkYXRhKX1vZmZzZXQ9MisyKm9mZnNldDtpZihlbmRPZmZzZXQhPW51bGwpe3JldHVybiIweCIrZGF0YS5zdWJzdHJpbmcob2Zmc2V0LDIrMiplbmRPZmZzZXQpfXJldHVybiIweCIrZGF0YS5zdWJzdHJpbmcob2Zmc2V0KX1leHBvcnRzLmhleERhdGFTbGljZT1oZXhEYXRhU2xpY2U7ZnVuY3Rpb24gaGV4Q29uY2F0KGl0ZW1zKXt2YXIgcmVzdWx0PSIweCI7aXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKXtyZXN1bHQrPWhleGxpZnkoaXRlbSkuc3Vic3RyaW5nKDIpfSk7cmV0dXJuIHJlc3VsdH1leHBvcnRzLmhleENvbmNhdD1oZXhDb25jYXQ7ZnVuY3Rpb24gaGV4VmFsdWUodmFsdWUpe3ZhciB0cmltbWVkPWhleFN0cmlwWmVyb3MoaGV4bGlmeSh2YWx1ZSx7aGV4UGFkOiJsZWZ0In0pKTtpZih0cmltbWVkPT09IjB4Iil7cmV0dXJuIjB4MCJ9cmV0dXJuIHRyaW1tZWR9ZXhwb3J0cy5oZXhWYWx1ZT1oZXhWYWx1ZTtmdW5jdGlvbiBoZXhTdHJpcFplcm9zKHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ic3RyaW5nIil7dmFsdWU9aGV4bGlmeSh2YWx1ZSl9aWYoIWlzSGV4U3RyaW5nKHZhbHVlKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBoZXggc3RyaW5nIiwidmFsdWUiLHZhbHVlKX12YWx1ZT12YWx1ZS5zdWJzdHJpbmcoMik7dmFyIG9mZnNldD0wO3doaWxlKG9mZnNldDx2YWx1ZS5sZW5ndGgmJnZhbHVlW29mZnNldF09PT0iMCIpe29mZnNldCsrfXJldHVybiIweCIrdmFsdWUuc3Vic3RyaW5nKG9mZnNldCl9ZXhwb3J0cy5oZXhTdHJpcFplcm9zPWhleFN0cmlwWmVyb3M7ZnVuY3Rpb24gaGV4WmVyb1BhZCh2YWx1ZSxsZW5ndGgpe2lmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmciKXt2YWx1ZT1oZXhsaWZ5KHZhbHVlKX1lbHNlIGlmKCFpc0hleFN0cmluZyh2YWx1ZSkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgaGV4IHN0cmluZyIsInZhbHVlIix2YWx1ZSl9aWYodmFsdWUubGVuZ3RoPjIqbGVuZ3RoKzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInZhbHVlIG91dCBvZiByYW5nZSIsInZhbHVlIixhcmd1bWVudHNbMV0pfXdoaWxlKHZhbHVlLmxlbmd0aDwyKmxlbmd0aCsyKXt2YWx1ZT0iMHgwIit2YWx1ZS5zdWJzdHJpbmcoMil9cmV0dXJuIHZhbHVlfWV4cG9ydHMuaGV4WmVyb1BhZD1oZXhaZXJvUGFkO2Z1bmN0aW9uIHNwbGl0U2lnbmF0dXJlKHNpZ25hdHVyZSl7dmFyIHJlc3VsdD17cjoiMHgiLHM6IjB4IixfdnM6IjB4IixyZWNvdmVyeVBhcmFtOjAsdjowfTtpZihpc0J5dGVzTGlrZShzaWduYXR1cmUpKXt2YXIgYnl0ZXM9YXJyYXlpZnkoc2lnbmF0dXJlKTtpZihieXRlcy5sZW5ndGghPT02NSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBzaWduYXR1cmUgc3RyaW5nOyBtdXN0IGJlIDY1IGJ5dGVzIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfXJlc3VsdC5yPWhleGxpZnkoYnl0ZXMuc2xpY2UoMCwzMikpO3Jlc3VsdC5zPWhleGxpZnkoYnl0ZXMuc2xpY2UoMzIsNjQpKTtyZXN1bHQudj1ieXRlc1s2NF07aWYocmVzdWx0LnY8Mjcpe2lmKHJlc3VsdC52PT09MHx8cmVzdWx0LnY9PT0xKXtyZXN1bHQudis9Mjd9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJzaWduYXR1cmUgaW52YWxpZCB2IGJ5dGUiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9fXJlc3VsdC5yZWNvdmVyeVBhcmFtPTEtcmVzdWx0LnYlMjtpZihyZXN1bHQucmVjb3ZlcnlQYXJhbSl7Ynl0ZXNbMzJdfD0xMjh9cmVzdWx0Ll92cz1oZXhsaWZ5KGJ5dGVzLnNsaWNlKDMyLDY0KSl9ZWxzZXtyZXN1bHQucj1zaWduYXR1cmUucjtyZXN1bHQucz1zaWduYXR1cmUucztyZXN1bHQudj1zaWduYXR1cmUudjtyZXN1bHQucmVjb3ZlcnlQYXJhbT1zaWduYXR1cmUucmVjb3ZlcnlQYXJhbTtyZXN1bHQuX3ZzPXNpZ25hdHVyZS5fdnM7aWYocmVzdWx0Ll92cyE9bnVsbCl7dmFyIHZzXzE9emVyb1BhZChhcnJheWlmeShyZXN1bHQuX3ZzKSwzMik7cmVzdWx0Ll92cz1oZXhsaWZ5KHZzXzEpO3ZhciByZWNvdmVyeVBhcmFtPXZzXzFbMF0+PTEyOD8xOjA7aWYocmVzdWx0LnJlY292ZXJ5UGFyYW09PW51bGwpe3Jlc3VsdC5yZWNvdmVyeVBhcmFtPXJlY292ZXJ5UGFyYW19ZWxzZSBpZihyZXN1bHQucmVjb3ZlcnlQYXJhbSE9PXJlY292ZXJ5UGFyYW0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSByZWNvdmVyeVBhcmFtIG1pc21hdGNoIF92cyIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX12c18xWzBdJj0xMjc7dmFyIHM9aGV4bGlmeSh2c18xKTtpZihyZXN1bHQucz09bnVsbCl7cmVzdWx0LnM9c31lbHNlIGlmKHJlc3VsdC5zIT09cyl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIHYgbWlzbWF0Y2ggX3ZzIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfX1pZihyZXN1bHQucmVjb3ZlcnlQYXJhbT09bnVsbCl7aWYocmVzdWx0LnY9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSBtaXNzaW5nIHYgYW5kIHJlY292ZXJ5UGFyYW0iLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9ZWxzZSBpZihyZXN1bHQudj09PTB8fHJlc3VsdC52PT09MSl7cmVzdWx0LnJlY292ZXJ5UGFyYW09cmVzdWx0LnZ9ZWxzZXtyZXN1bHQucmVjb3ZlcnlQYXJhbT0xLXJlc3VsdC52JTJ9fWVsc2V7aWYocmVzdWx0LnY9PW51bGwpe3Jlc3VsdC52PTI3K3Jlc3VsdC5yZWNvdmVyeVBhcmFtfWVsc2UgaWYocmVzdWx0LnJlY292ZXJ5UGFyYW0hPT0xLXJlc3VsdC52JTIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSByZWNvdmVyeVBhcmFtIG1pc21hdGNoIHYiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9fWlmKHJlc3VsdC5yPT1udWxsfHwhaXNIZXhTdHJpbmcocmVzdWx0LnIpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJzaWduYXR1cmUgbWlzc2luZyBvciBpbnZhbGlkIHIiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9ZWxzZXtyZXN1bHQucj1oZXhaZXJvUGFkKHJlc3VsdC5yLDMyKX1pZihyZXN1bHQucz09bnVsbHx8IWlzSGV4U3RyaW5nKHJlc3VsdC5zKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIG1pc3Npbmcgb3IgaW52YWxpZCBzIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfWVsc2V7cmVzdWx0LnM9aGV4WmVyb1BhZChyZXN1bHQucywzMil9dmFyIHZzPWFycmF5aWZ5KHJlc3VsdC5zKTtpZih2c1swXT49MTI4KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJzaWduYXR1cmUgcyBvdXQgb2YgcmFuZ2UiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9aWYocmVzdWx0LnJlY292ZXJ5UGFyYW0pe3ZzWzBdfD0xMjh9dmFyIF92cz1oZXhsaWZ5KHZzKTtpZihyZXN1bHQuX3ZzKXtpZighaXNIZXhTdHJpbmcocmVzdWx0Ll92cykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSBpbnZhbGlkIF92cyIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX1yZXN1bHQuX3ZzPWhleFplcm9QYWQocmVzdWx0Ll92cywzMil9aWYocmVzdWx0Ll92cz09bnVsbCl7cmVzdWx0Ll92cz1fdnN9ZWxzZSBpZihyZXN1bHQuX3ZzIT09X3ZzKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJzaWduYXR1cmUgX3ZzIG1pc21hdGNoIHYgYW5kIHMiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9fXJldHVybiByZXN1bHR9ZXhwb3J0cy5zcGxpdFNpZ25hdHVyZT1zcGxpdFNpZ25hdHVyZTtmdW5jdGlvbiBqb2luU2lnbmF0dXJlKHNpZ25hdHVyZSl7c2lnbmF0dXJlPXNwbGl0U2lnbmF0dXJlKHNpZ25hdHVyZSk7cmV0dXJuIGhleGxpZnkoY29uY2F0KFtzaWduYXR1cmUucixzaWduYXR1cmUucyxzaWduYXR1cmUucmVjb3ZlcnlQYXJhbT8iMHgxYyI6IjB4MWIiXSkpfWV4cG9ydHMuam9pblNpZ25hdHVyZT1qb2luU2lnbmF0dXJlfSk7dmFyIGluZGV4JDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDEpO3ZhciBfdmVyc2lvbiQ0PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImJpZ251bWJlci81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kNT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiQ0KTt2YXIgYmlnbnVtYmVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9faW1wb3J0RGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihtb2Qpe3JldHVybiBtb2QmJm1vZC5fX2VzTW9kdWxlP21vZDp7ZGVmYXVsdDptb2R9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLl9iYXNlMTZUbzM2PWV4cG9ydHMuX2Jhc2UzNlRvMTY9ZXhwb3J0cy5CaWdOdW1iZXI9ZXhwb3J0cy5pc0JpZ051bWJlcmlzaD12b2lkIDA7dmFyIGJuX2pzXzE9X19pbXBvcnREZWZhdWx0KGJuKTt2YXIgQk49Ym5fanNfMS5kZWZhdWx0LkJOO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kNC52ZXJzaW9uKTt2YXIgX2NvbnN0cnVjdG9yR3VhcmQ9e307dmFyIE1BWF9TQUZFPTkwMDcxOTkyNTQ3NDA5OTE7ZnVuY3Rpb24gaXNCaWdOdW1iZXJpc2godmFsdWUpe3JldHVybiB2YWx1ZSE9bnVsbCYmKEJpZ051bWJlci5pc0JpZ051bWJlcih2YWx1ZSl8fHR5cGVvZiB2YWx1ZT09PSJudW1iZXIiJiZ2YWx1ZSUxPT09MHx8dHlwZW9mIHZhbHVlPT09InN0cmluZyImJiEhdmFsdWUubWF0Y2goL14tP1swLTldKyQvKXx8bGliJDEuaXNIZXhTdHJpbmcodmFsdWUpfHx0eXBlb2YgdmFsdWU9PT0iYmlnaW50Inx8bGliJDEuaXNCeXRlcyh2YWx1ZSkpfWV4cG9ydHMuaXNCaWdOdW1iZXJpc2g9aXNCaWdOdW1iZXJpc2g7dmFyIF93YXJuZWRUb1N0cmluZ1JhZGl4PWZhbHNlO3ZhciBCaWdOdW1iZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBCaWdOdW1iZXIoY29uc3RydWN0b3JHdWFyZCxoZXgpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7bG9nZ2VyLmNoZWNrTmV3KF9uZXdUYXJnZXQsQmlnTnVtYmVyKTtpZihjb25zdHJ1Y3Rvckd1YXJkIT09X2NvbnN0cnVjdG9yR3VhcmQpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgY2FsbCBjb25zdHJ1Y3RvciBkaXJlY3RseTsgdXNlIEJpZ051bWJlci5mcm9tIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV3IChCaWdOdW1iZXIpIn0pfXRoaXMuX2hleD1oZXg7dGhpcy5faXNCaWdOdW1iZXI9dHJ1ZTtPYmplY3QuZnJlZXplKHRoaXMpfUJpZ051bWJlci5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLmZyb21Ud29zKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS50b1R3b3ModmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtpZih0aGlzLl9oZXhbMF09PT0iLSIpe3JldHVybiBCaWdOdW1iZXIuZnJvbSh0aGlzLl9oZXguc3Vic3RyaW5nKDEpKX1yZXR1cm4gdGhpc307QmlnTnVtYmVyLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLmFkZCh0b0JOKG90aGVyKSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihvdGhlcil7cmV0dXJuIHRvQmlnTnVtYmVyKHRvQk4odGhpcykuc3ViKHRvQk4ob3RoZXIpKSl9O0JpZ051bWJlci5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKG90aGVyKXt2YXIgbz1CaWdOdW1iZXIuZnJvbShvdGhlcik7aWYoby5pc1plcm8oKSl7dGhyb3dGYXVsdCgiZGl2aXNpb24gYnkgemVybyIsImRpdiIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLmRpdih0b0JOKG90aGVyKSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLm11bD1mdW5jdGlvbihvdGhlcil7cmV0dXJuIHRvQmlnTnVtYmVyKHRvQk4odGhpcykubXVsKHRvQk4ob3RoZXIpKSl9O0JpZ051bWJlci5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKG90aGVyKXt2YXIgdmFsdWU9dG9CTihvdGhlcik7aWYodmFsdWUuaXNOZWcoKSl7dGhyb3dGYXVsdCgiY2Fubm90IG1vZHVsbyBuZWdhdGl2ZSB2YWx1ZXMiLCJtb2QiKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS51bW9kKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUucG93PWZ1bmN0aW9uKG90aGVyKXt2YXIgdmFsdWU9dG9CTihvdGhlcik7aWYodmFsdWUuaXNOZWcoKSl7dGhyb3dGYXVsdCgiY2Fubm90IHJhaXNlIHRvIG5lZ2F0aXZlIHZhbHVlcyIsInBvdyIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLnBvdyh2YWx1ZSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLmFuZD1mdW5jdGlvbihvdGhlcil7dmFyIHZhbHVlPXRvQk4ob3RoZXIpO2lmKHRoaXMuaXNOZWdhdGl2ZSgpfHx2YWx1ZS5pc05lZygpKXt0aHJvd0ZhdWx0KCJjYW5ub3QgJ2FuZCcgbmVnYXRpdmUgdmFsdWVzIiwiYW5kIil9cmV0dXJuIHRvQmlnTnVtYmVyKHRvQk4odGhpcykuYW5kKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUub3I9ZnVuY3Rpb24ob3RoZXIpe3ZhciB2YWx1ZT10b0JOKG90aGVyKTtpZih0aGlzLmlzTmVnYXRpdmUoKXx8dmFsdWUuaXNOZWcoKSl7dGhyb3dGYXVsdCgiY2Fubm90ICdvcicgbmVnYXRpdmUgdmFsdWVzIiwib3IiKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5vcih2YWx1ZSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLnhvcj1mdW5jdGlvbihvdGhlcil7dmFyIHZhbHVlPXRvQk4ob3RoZXIpO2lmKHRoaXMuaXNOZWdhdGl2ZSgpfHx2YWx1ZS5pc05lZygpKXt0aHJvd0ZhdWx0KCJjYW5ub3QgJ3hvcicgbmVnYXRpdmUgdmFsdWVzIiwieG9yIil9cmV0dXJuIHRvQmlnTnVtYmVyKHRvQk4odGhpcykueG9yKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUubWFzaz1mdW5jdGlvbih2YWx1ZSl7aWYodGhpcy5pc05lZ2F0aXZlKCl8fHZhbHVlPDApe3Rocm93RmF1bHQoImNhbm5vdCBtYXNrIG5lZ2F0aXZlIHZhbHVlcyIsIm1hc2siKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5tYXNrbih2YWx1ZSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLnNobD1mdW5jdGlvbih2YWx1ZSl7aWYodGhpcy5pc05lZ2F0aXZlKCl8fHZhbHVlPDApe3Rocm93RmF1bHQoImNhbm5vdCBzaGlmdCBuZWdhdGl2ZSB2YWx1ZXMiLCJzaGwiKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5zaGxuKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUuc2hyPWZ1bmN0aW9uKHZhbHVlKXtpZih0aGlzLmlzTmVnYXRpdmUoKXx8dmFsdWU8MCl7dGhyb3dGYXVsdCgiY2Fubm90IHNoaWZ0IG5lZ2F0aXZlIHZhbHVlcyIsInNociIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLnNocm4odmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5lcT1mdW5jdGlvbihvdGhlcil7cmV0dXJuIHRvQk4odGhpcykuZXEodG9CTihvdGhlcikpfTtCaWdOdW1iZXIucHJvdG90eXBlLmx0PWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5sdCh0b0JOKG90aGVyKSl9O0JpZ051bWJlci5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5sdGUodG9CTihvdGhlcikpfTtCaWdOdW1iZXIucHJvdG90eXBlLmd0PWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5ndCh0b0JOKG90aGVyKSl9O0JpZ051bWJlci5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5ndGUodG9CTihvdGhlcikpfTtCaWdOdW1iZXIucHJvdG90eXBlLmlzTmVnYXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGV4WzBdPT09Ii0ifTtCaWdOdW1iZXIucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiB0b0JOKHRoaXMpLmlzWmVybygpfTtCaWdOdW1iZXIucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0b0JOKHRoaXMpLnRvTnVtYmVyKCl9Y2F0Y2goZXJyb3Ipe3Rocm93RmF1bHQoIm92ZXJmbG93IiwidG9OdW1iZXIiLHRoaXMudG9TdHJpbmcoKSl9cmV0dXJuIG51bGx9O0JpZ051bWJlci5wcm90b3R5cGUudG9CaWdJbnQ9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEJpZ0ludCh0aGlzLnRvU3RyaW5nKCkpfWNhdGNoKGUpe31yZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoInRoaXMgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBCaWdJbnQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7dmFsdWU6dGhpcy50b1N0cmluZygpfSl9O0JpZ051bWJlci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoPjApe2lmKGFyZ3VtZW50c1swXT09PTEwKXtpZighX3dhcm5lZFRvU3RyaW5nUmFkaXgpe193YXJuZWRUb1N0cmluZ1JhZGl4PXRydWU7bG9nZ2VyLndhcm4oIkJpZ051bWJlci50b1N0cmluZyBkb2VzIG5vdCBhY2NlcHQgYW55IHBhcmFtZXRlcnM7IGJhc2UtMTAgaXMgYXNzdW1lZCIpfX1lbHNlIGlmKGFyZ3VtZW50c1swXT09PTE2KXtsb2dnZXIudGhyb3dFcnJvcigiQmlnTnVtYmVyLnRvU3RyaW5nIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1ldGVyczsgdXNlIGJpZ051bWJlci50b0hleFN0cmluZygpIixsaWIuTG9nZ2VyLmVycm9ycy5VTkVYUEVDVEVEX0FSR1VNRU5ULHt9KX1lbHNle2xvZ2dlci50aHJvd0Vycm9yKCJCaWdOdW1iZXIudG9TdHJpbmcgZG9lcyBub3QgYWNjZXB0IHBhcmFtZXRlcnMiLGxpYi5Mb2dnZXIuZXJyb3JzLlVORVhQRUNURURfQVJHVU1FTlQse30pfX1yZXR1cm4gdG9CTih0aGlzKS50b1N0cmluZygxMCl9O0JpZ051bWJlci5wcm90b3R5cGUudG9IZXhTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGV4fTtCaWdOdW1iZXIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihrZXkpe3JldHVybnt0eXBlOiJCaWdOdW1iZXIiLGhleDp0aGlzLnRvSGV4U3RyaW5nKCl9fTtCaWdOdW1iZXIuZnJvbT1mdW5jdGlvbih2YWx1ZSl7aWYodmFsdWUgaW5zdGFuY2VvZiBCaWdOdW1iZXIpe3JldHVybiB2YWx1ZX1pZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7aWYodmFsdWUubWF0Y2goL14tPzB4WzAtOWEtZl0rJC9pKSl7cmV0dXJuIG5ldyBCaWdOdW1iZXIoX2NvbnN0cnVjdG9yR3VhcmQsdG9IZXgodmFsdWUpKX1pZih2YWx1ZS5tYXRjaCgvXi0/WzAtOV0rJC8pKXtyZXR1cm4gbmV3IEJpZ051bWJlcihfY29uc3RydWN0b3JHdWFyZCx0b0hleChuZXcgQk4odmFsdWUpKSl9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgQmlnTnVtYmVyIHN0cmluZyIsInZhbHVlIix2YWx1ZSl9aWYodHlwZW9mIHZhbHVlPT09Im51bWJlciIpe2lmKHZhbHVlJTEpe3Rocm93RmF1bHQoInVuZGVyZmxvdyIsIkJpZ051bWJlci5mcm9tIix2YWx1ZSl9aWYodmFsdWU+PU1BWF9TQUZFfHx2YWx1ZTw9LU1BWF9TQUZFKXt0aHJvd0ZhdWx0KCJvdmVyZmxvdyIsIkJpZ051bWJlci5mcm9tIix2YWx1ZSl9cmV0dXJuIEJpZ051bWJlci5mcm9tKFN0cmluZyh2YWx1ZSkpfXZhciBhbnlWYWx1ZT12YWx1ZTtpZih0eXBlb2YgYW55VmFsdWU9PT0iYmlnaW50Iil7cmV0dXJuIEJpZ051bWJlci5mcm9tKGFueVZhbHVlLnRvU3RyaW5nKCkpfWlmKGxpYiQxLmlzQnl0ZXMoYW55VmFsdWUpKXtyZXR1cm4gQmlnTnVtYmVyLmZyb20obGliJDEuaGV4bGlmeShhbnlWYWx1ZSkpfWlmKGFueVZhbHVlKXtpZihhbnlWYWx1ZS50b0hleFN0cmluZyl7dmFyIGhleD1hbnlWYWx1ZS50b0hleFN0cmluZygpO2lmKHR5cGVvZiBoZXg9PT0ic3RyaW5nIil7cmV0dXJuIEJpZ051bWJlci5mcm9tKGhleCl9fWVsc2V7dmFyIGhleD1hbnlWYWx1ZS5faGV4O2lmKGhleD09bnVsbCYmYW55VmFsdWUudHlwZT09PSJCaWdOdW1iZXIiKXtoZXg9YW55VmFsdWUuaGV4fWlmKHR5cGVvZiBoZXg9PT0ic3RyaW5nIil7aWYobGliJDEuaXNIZXhTdHJpbmcoaGV4KXx8aGV4WzBdPT09Ii0iJiZsaWIkMS5pc0hleFN0cmluZyhoZXguc3Vic3RyaW5nKDEpKSl7cmV0dXJuIEJpZ051bWJlci5mcm9tKGhleCl9fX19cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgQmlnTnVtYmVyIHZhbHVlIiwidmFsdWUiLHZhbHVlKX07QmlnTnVtYmVyLmlzQmlnTnVtYmVyPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSYmdmFsdWUuX2lzQmlnTnVtYmVyKX07cmV0dXJuIEJpZ051bWJlcn0oKTtleHBvcnRzLkJpZ051bWJlcj1CaWdOdW1iZXI7ZnVuY3Rpb24gdG9IZXgodmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmciKXtyZXR1cm4gdG9IZXgodmFsdWUudG9TdHJpbmcoMTYpKX1pZih2YWx1ZVswXT09PSItIil7dmFsdWU9dmFsdWUuc3Vic3RyaW5nKDEpO2lmKHZhbHVlWzBdPT09Ii0iKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGhleCIsInZhbHVlIix2YWx1ZSl9dmFsdWU9dG9IZXgodmFsdWUpO2lmKHZhbHVlPT09IjB4MDAiKXtyZXR1cm4gdmFsdWV9cmV0dXJuIi0iK3ZhbHVlfWlmKHZhbHVlLnN1YnN0cmluZygwLDIpIT09IjB4Iil7dmFsdWU9IjB4Iit2YWx1ZX1pZih2YWx1ZT09PSIweCIpe3JldHVybiIweDAwIn1pZih2YWx1ZS5sZW5ndGglMil7dmFsdWU9IjB4MCIrdmFsdWUuc3Vic3RyaW5nKDIpfXdoaWxlKHZhbHVlLmxlbmd0aD40JiZ2YWx1ZS5zdWJzdHJpbmcoMCw0KT09PSIweDAwIil7dmFsdWU9IjB4Iit2YWx1ZS5zdWJzdHJpbmcoNCl9cmV0dXJuIHZhbHVlfWZ1bmN0aW9uIHRvQmlnTnVtYmVyKHZhbHVlKXtyZXR1cm4gQmlnTnVtYmVyLmZyb20odG9IZXgodmFsdWUpKX1mdW5jdGlvbiB0b0JOKHZhbHVlKXt2YXIgaGV4PUJpZ051bWJlci5mcm9tKHZhbHVlKS50b0hleFN0cmluZygpO2lmKGhleFswXT09PSItIil7cmV0dXJuIG5ldyBCTigiLSIraGV4LnN1YnN0cmluZygzKSwxNil9cmV0dXJuIG5ldyBCTihoZXguc3Vic3RyaW5nKDIpLDE2KX1mdW5jdGlvbiB0aHJvd0ZhdWx0KGZhdWx0LG9wZXJhdGlvbix2YWx1ZSl7dmFyIHBhcmFtcz17ZmF1bHQ6ZmF1bHQsb3BlcmF0aW9uOm9wZXJhdGlvbn07aWYodmFsdWUhPW51bGwpe3BhcmFtcy52YWx1ZT12YWx1ZX1yZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoZmF1bHQsbGliLkxvZ2dlci5lcnJvcnMuTlVNRVJJQ19GQVVMVCxwYXJhbXMpfWZ1bmN0aW9uIF9iYXNlMzZUbzE2KHZhbHVlKXtyZXR1cm4gbmV3IEJOKHZhbHVlLDM2KS50b1N0cmluZygxNil9ZXhwb3J0cy5fYmFzZTM2VG8xNj1fYmFzZTM2VG8xNjtmdW5jdGlvbiBfYmFzZTE2VG8zNih2YWx1ZSl7cmV0dXJuIG5ldyBCTih2YWx1ZSwxNikudG9TdHJpbmcoMzYpfWV4cG9ydHMuX2Jhc2UxNlRvMzY9X2Jhc2UxNlRvMzZ9KTt2YXIgYmlnbnVtYmVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYmlnbnVtYmVyKTt2YXIgZml4ZWRudW1iZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkZpeGVkTnVtYmVyPWV4cG9ydHMuRml4ZWRGb3JtYXQ9ZXhwb3J0cy5wYXJzZUZpeGVkPWV4cG9ydHMuZm9ybWF0Rml4ZWQ9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kNC52ZXJzaW9uKTt2YXIgX2NvbnN0cnVjdG9yR3VhcmQ9e307dmFyIFplcm89YmlnbnVtYmVyLkJpZ051bWJlci5mcm9tKDApO3ZhciBOZWdhdGl2ZU9uZT1iaWdudW1iZXIuQmlnTnVtYmVyLmZyb20oLTEpO2Z1bmN0aW9uIHRocm93RmF1bHQobWVzc2FnZSxmYXVsdCxvcGVyYXRpb24sdmFsdWUpe3ZhciBwYXJhbXM9e2ZhdWx0OmZhdWx0LG9wZXJhdGlvbjpvcGVyYXRpb259O2lmKHZhbHVlIT09dW5kZWZpbmVkKXtwYXJhbXMudmFsdWU9dmFsdWV9cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKG1lc3NhZ2UsbGliLkxvZ2dlci5lcnJvcnMuTlVNRVJJQ19GQVVMVCxwYXJhbXMpfXZhciB6ZXJvcz0iMCI7d2hpbGUoemVyb3MubGVuZ3RoPDI1Nil7emVyb3MrPXplcm9zfWZ1bmN0aW9uIGdldE11bHRpcGxpZXIoZGVjaW1hbHMpe2lmKHR5cGVvZiBkZWNpbWFscyE9PSJudW1iZXIiKXt0cnl7ZGVjaW1hbHM9YmlnbnVtYmVyLkJpZ051bWJlci5mcm9tKGRlY2ltYWxzKS50b051bWJlcigpfWNhdGNoKGUpe319aWYodHlwZW9mIGRlY2ltYWxzPT09Im51bWJlciImJmRlY2ltYWxzPj0wJiZkZWNpbWFsczw9MjU2JiYhKGRlY2ltYWxzJTEpKXtyZXR1cm4iMSIremVyb3Muc3Vic3RyaW5nKDAsZGVjaW1hbHMpfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGRlY2ltYWwgc2l6ZSIsImRlY2ltYWxzIixkZWNpbWFscyl9ZnVuY3Rpb24gZm9ybWF0Rml4ZWQodmFsdWUsZGVjaW1hbHMpe2lmKGRlY2ltYWxzPT1udWxsKXtkZWNpbWFscz0wfXZhciBtdWx0aXBsaWVyPWdldE11bHRpcGxpZXIoZGVjaW1hbHMpO3ZhbHVlPWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbSh2YWx1ZSk7dmFyIG5lZ2F0aXZlPXZhbHVlLmx0KFplcm8pO2lmKG5lZ2F0aXZlKXt2YWx1ZT12YWx1ZS5tdWwoTmVnYXRpdmVPbmUpfXZhciBmcmFjdGlvbj12YWx1ZS5tb2QobXVsdGlwbGllcikudG9TdHJpbmcoKTt3aGlsZShmcmFjdGlvbi5sZW5ndGg8bXVsdGlwbGllci5sZW5ndGgtMSl7ZnJhY3Rpb249IjAiK2ZyYWN0aW9ufWZyYWN0aW9uPWZyYWN0aW9uLm1hdGNoKC9eKFswLTldKlsxLTldfDApKDAqKS8pWzFdO3ZhciB3aG9sZT12YWx1ZS5kaXYobXVsdGlwbGllcikudG9TdHJpbmcoKTtpZihtdWx0aXBsaWVyLmxlbmd0aD09PTEpe3ZhbHVlPXdob2xlfWVsc2V7dmFsdWU9d2hvbGUrIi4iK2ZyYWN0aW9ufWlmKG5lZ2F0aXZlKXt2YWx1ZT0iLSIrdmFsdWV9cmV0dXJuIHZhbHVlfWV4cG9ydHMuZm9ybWF0Rml4ZWQ9Zm9ybWF0Rml4ZWQ7ZnVuY3Rpb24gcGFyc2VGaXhlZCh2YWx1ZSxkZWNpbWFscyl7aWYoZGVjaW1hbHM9PW51bGwpe2RlY2ltYWxzPTB9dmFyIG11bHRpcGxpZXI9Z2V0TXVsdGlwbGllcihkZWNpbWFscyk7aWYodHlwZW9mIHZhbHVlIT09InN0cmluZyJ8fCF2YWx1ZS5tYXRjaCgvXi0/WzAtOS4sXSskLykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZGVjaW1hbCB2YWx1ZSIsInZhbHVlIix2YWx1ZSl9dmFyIG5lZ2F0aXZlPXZhbHVlLnN1YnN0cmluZygwLDEpPT09Ii0iO2lmKG5lZ2F0aXZlKXt2YWx1ZT12YWx1ZS5zdWJzdHJpbmcoMSl9aWYodmFsdWU9PT0iLiIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgdmFsdWUiLCJ2YWx1ZSIsdmFsdWUpfXZhciBjb21wcz12YWx1ZS5zcGxpdCgiLiIpO2lmKGNvbXBzLmxlbmd0aD4yKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ0b28gbWFueSBkZWNpbWFsIHBvaW50cyIsInZhbHVlIix2YWx1ZSl9dmFyIHdob2xlPWNvbXBzWzBdLGZyYWN0aW9uPWNvbXBzWzFdO2lmKCF3aG9sZSl7d2hvbGU9IjAifWlmKCFmcmFjdGlvbil7ZnJhY3Rpb249IjAifXt2YXIgc2lnRnJhY3Rpb249ZnJhY3Rpb24ucmVwbGFjZSgvXihbMC05XSo/KSgwKikkLyxmdW5jdGlvbihhbGwsc2lnLHplcm9zKXtyZXR1cm4gc2lnfSk7aWYoc2lnRnJhY3Rpb24ubGVuZ3RoPm11bHRpcGxpZXIubGVuZ3RoLTEpe3Rocm93RmF1bHQoImZyYWN0aW9uYWwgY29tcG9uZW50IGV4Y2VlZHMgZGVjaW1hbHMiLCJ1bmRlcmZsb3ciLCJwYXJzZUZpeGVkIil9fXdoaWxlKGZyYWN0aW9uLmxlbmd0aDxtdWx0aXBsaWVyLmxlbmd0aC0xKXtmcmFjdGlvbis9IjAifXZhciB3aG9sZVZhbHVlPWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbSh3aG9sZSk7dmFyIGZyYWN0aW9uVmFsdWU9YmlnbnVtYmVyLkJpZ051bWJlci5mcm9tKGZyYWN0aW9uKTt2YXIgd2VpPXdob2xlVmFsdWUubXVsKG11bHRpcGxpZXIpLmFkZChmcmFjdGlvblZhbHVlKTtpZihuZWdhdGl2ZSl7d2VpPXdlaS5tdWwoTmVnYXRpdmVPbmUpfXJldHVybiB3ZWl9ZXhwb3J0cy5wYXJzZUZpeGVkPXBhcnNlRml4ZWQ7dmFyIEZpeGVkRm9ybWF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRml4ZWRGb3JtYXQoY29uc3RydWN0b3JHdWFyZCxzaWduZWQsd2lkdGgsZGVjaW1hbHMpe2lmKGNvbnN0cnVjdG9yR3VhcmQhPT1fY29uc3RydWN0b3JHdWFyZCl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCB1c2UgRml4ZWRGb3JtYXQgY29uc3RydWN0b3I7IHVzZSBGaXhlZEZvcm1hdC5mcm9tIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV3IEZpeGVkRm9ybWF0In0pfXRoaXMuc2lnbmVkPXNpZ25lZDt0aGlzLndpZHRoPXdpZHRoO3RoaXMuZGVjaW1hbHM9ZGVjaW1hbHM7dGhpcy5uYW1lPShzaWduZWQ/IiI6InUiKSsiZml4ZWQiK1N0cmluZyh3aWR0aCkrIngiK1N0cmluZyhkZWNpbWFscyk7dGhpcy5fbXVsdGlwbGllcj1nZXRNdWx0aXBsaWVyKGRlY2ltYWxzKTtPYmplY3QuZnJlZXplKHRoaXMpfUZpeGVkRm9ybWF0LmZyb209ZnVuY3Rpb24odmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgRml4ZWRGb3JtYXQpe3JldHVybiB2YWx1ZX1pZih0eXBlb2YgdmFsdWU9PT0ibnVtYmVyIil7dmFsdWU9ImZpeGVkMTI4eCIrdmFsdWV9dmFyIHNpZ25lZD10cnVlO3ZhciB3aWR0aD0xMjg7dmFyIGRlY2ltYWxzPTE4O2lmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtpZih2YWx1ZT09PSJmaXhlZCIpe31lbHNlIGlmKHZhbHVlPT09InVmaXhlZCIpe3NpZ25lZD1mYWxzZX1lbHNle3ZhciBtYXRjaD12YWx1ZS5tYXRjaCgvXih1PylmaXhlZChbMC05XSspeChbMC05XSspJC8pO2lmKCFtYXRjaCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmaXhlZCBmb3JtYXQiLCJmb3JtYXQiLHZhbHVlKX1zaWduZWQ9bWF0Y2hbMV0hPT0idSI7d2lkdGg9cGFyc2VJbnQobWF0Y2hbMl0pO2RlY2ltYWxzPXBhcnNlSW50KG1hdGNoWzNdKX19ZWxzZSBpZih2YWx1ZSl7dmFyIGNoZWNrPWZ1bmN0aW9uKGtleSx0eXBlLGRlZmF1bHRWYWx1ZSl7aWYodmFsdWVba2V5XT09bnVsbCl7cmV0dXJuIGRlZmF1bHRWYWx1ZX1pZih0eXBlb2YgdmFsdWVba2V5XSE9PXR5cGUpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZml4ZWQgZm9ybWF0ICgiK2tleSsiIG5vdCAiK3R5cGUrIikiLCJmb3JtYXQuIitrZXksdmFsdWVba2V5XSl9cmV0dXJuIHZhbHVlW2tleV19O3NpZ25lZD1jaGVjaygic2lnbmVkIiwiYm9vbGVhbiIsc2lnbmVkKTt3aWR0aD1jaGVjaygid2lkdGgiLCJudW1iZXIiLHdpZHRoKTtkZWNpbWFscz1jaGVjaygiZGVjaW1hbHMiLCJudW1iZXIiLGRlY2ltYWxzKX1pZih3aWR0aCU4KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZpeGVkIGZvcm1hdCB3aWR0aCAobm90IGJ5dGUgYWxpZ25lZCkiLCJmb3JtYXQud2lkdGgiLHdpZHRoKX1pZihkZWNpbWFscz44MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmaXhlZCBmb3JtYXQgKGRlY2ltYWxzIHRvbyBsYXJnZSkiLCJmb3JtYXQuZGVjaW1hbHMiLGRlY2ltYWxzKX1yZXR1cm4gbmV3IEZpeGVkRm9ybWF0KF9jb25zdHJ1Y3Rvckd1YXJkLHNpZ25lZCx3aWR0aCxkZWNpbWFscyl9O3JldHVybiBGaXhlZEZvcm1hdH0oKTtleHBvcnRzLkZpeGVkRm9ybWF0PUZpeGVkRm9ybWF0O3ZhciBGaXhlZE51bWJlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIEZpeGVkTnVtYmVyKGNvbnN0cnVjdG9yR3VhcmQsaGV4LHZhbHVlLGZvcm1hdCl7dmFyIF9uZXdUYXJnZXQ9dGhpcy5jb25zdHJ1Y3Rvcjtsb2dnZXIuY2hlY2tOZXcoX25ld1RhcmdldCxGaXhlZE51bWJlcik7aWYoY29uc3RydWN0b3JHdWFyZCE9PV9jb25zdHJ1Y3Rvckd1YXJkKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IHVzZSBGaXhlZE51bWJlciBjb25zdHJ1Y3RvcjsgdXNlIEZpeGVkTnVtYmVyLmZyb20iLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJuZXcgRml4ZWRGb3JtYXQifSl9dGhpcy5mb3JtYXQ9Zm9ybWF0O3RoaXMuX2hleD1oZXg7dGhpcy5fdmFsdWU9dmFsdWU7dGhpcy5faXNGaXhlZE51bWJlcj10cnVlO09iamVjdC5mcmVlemUodGhpcyl9Rml4ZWROdW1iZXIucHJvdG90eXBlLl9jaGVja0Zvcm1hdD1mdW5jdGlvbihvdGhlcil7aWYodGhpcy5mb3JtYXQubmFtZSE9PW90aGVyLmZvcm1hdC5uYW1lKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbmNvbXBhdGlibGUgZm9ybWF0OyB1c2UgZml4ZWROdW1iZXIudG9Gb3JtYXQiLCJvdGhlciIsb3RoZXIpfX07Rml4ZWROdW1iZXIucHJvdG90eXBlLmFkZFVuc2FmZT1mdW5jdGlvbihvdGhlcil7dGhpcy5fY2hlY2tGb3JtYXQob3RoZXIpO3ZhciBhPXBhcnNlRml4ZWQodGhpcy5fdmFsdWUsdGhpcy5mb3JtYXQuZGVjaW1hbHMpO3ZhciBiPXBhcnNlRml4ZWQob3RoZXIuX3ZhbHVlLG90aGVyLmZvcm1hdC5kZWNpbWFscyk7cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21WYWx1ZShhLmFkZChiKSx0aGlzLmZvcm1hdC5kZWNpbWFscyx0aGlzLmZvcm1hdCl9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS5zdWJVbnNhZmU9ZnVuY3Rpb24ob3RoZXIpe3RoaXMuX2NoZWNrRm9ybWF0KG90aGVyKTt2YXIgYT1wYXJzZUZpeGVkKHRoaXMuX3ZhbHVlLHRoaXMuZm9ybWF0LmRlY2ltYWxzKTt2YXIgYj1wYXJzZUZpeGVkKG90aGVyLl92YWx1ZSxvdGhlci5mb3JtYXQuZGVjaW1hbHMpO3JldHVybiBGaXhlZE51bWJlci5mcm9tVmFsdWUoYS5zdWIoYiksdGhpcy5mb3JtYXQuZGVjaW1hbHMsdGhpcy5mb3JtYXQpfTtGaXhlZE51bWJlci5wcm90b3R5cGUubXVsVW5zYWZlPWZ1bmN0aW9uKG90aGVyKXt0aGlzLl9jaGVja0Zvcm1hdChvdGhlcik7dmFyIGE9cGFyc2VGaXhlZCh0aGlzLl92YWx1ZSx0aGlzLmZvcm1hdC5kZWNpbWFscyk7dmFyIGI9cGFyc2VGaXhlZChvdGhlci5fdmFsdWUsb3RoZXIuZm9ybWF0LmRlY2ltYWxzKTtyZXR1cm4gRml4ZWROdW1iZXIuZnJvbVZhbHVlKGEubXVsKGIpLmRpdih0aGlzLmZvcm1hdC5fbXVsdGlwbGllciksdGhpcy5mb3JtYXQuZGVjaW1hbHMsdGhpcy5mb3JtYXQpfTtGaXhlZE51bWJlci5wcm90b3R5cGUuZGl2VW5zYWZlPWZ1bmN0aW9uKG90aGVyKXt0aGlzLl9jaGVja0Zvcm1hdChvdGhlcik7dmFyIGE9cGFyc2VGaXhlZCh0aGlzLl92YWx1ZSx0aGlzLmZvcm1hdC5kZWNpbWFscyk7dmFyIGI9cGFyc2VGaXhlZChvdGhlci5fdmFsdWUsb3RoZXIuZm9ybWF0LmRlY2ltYWxzKTtyZXR1cm4gRml4ZWROdW1iZXIuZnJvbVZhbHVlKGEubXVsKHRoaXMuZm9ybWF0Ll9tdWx0aXBsaWVyKS5kaXYoYiksdGhpcy5mb3JtYXQuZGVjaW1hbHMsdGhpcy5mb3JtYXQpfTtGaXhlZE51bWJlci5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt2YXIgY29tcHM9dGhpcy50b1N0cmluZygpLnNwbGl0KCIuIik7aWYoY29tcHMubGVuZ3RoPT09MSl7Y29tcHMucHVzaCgiMCIpfXZhciByZXN1bHQ9Rml4ZWROdW1iZXIuZnJvbShjb21wc1swXSx0aGlzLmZvcm1hdCk7dmFyIGhhc0ZyYWN0aW9uPSFjb21wc1sxXS5tYXRjaCgvXigwKikkLyk7aWYodGhpcy5pc05lZ2F0aXZlKCkmJmhhc0ZyYWN0aW9uKXtyZXN1bHQ9cmVzdWx0LnN1YlVuc2FmZShPTkUpfXJldHVybiByZXN1bHR9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS5jZWlsaW5nPWZ1bmN0aW9uKCl7dmFyIGNvbXBzPXRoaXMudG9TdHJpbmcoKS5zcGxpdCgiLiIpO2lmKGNvbXBzLmxlbmd0aD09PTEpe2NvbXBzLnB1c2goIjAiKX12YXIgcmVzdWx0PUZpeGVkTnVtYmVyLmZyb20oY29tcHNbMF0sdGhpcy5mb3JtYXQpO3ZhciBoYXNGcmFjdGlvbj0hY29tcHNbMV0ubWF0Y2goL14oMCopJC8pO2lmKCF0aGlzLmlzTmVnYXRpdmUoKSYmaGFzRnJhY3Rpb24pe3Jlc3VsdD1yZXN1bHQuYWRkVW5zYWZlKE9ORSl9cmV0dXJuIHJlc3VsdH07Rml4ZWROdW1iZXIucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKGRlY2ltYWxzKXtpZihkZWNpbWFscz09bnVsbCl7ZGVjaW1hbHM9MH12YXIgY29tcHM9dGhpcy50b1N0cmluZygpLnNwbGl0KCIuIik7aWYoY29tcHMubGVuZ3RoPT09MSl7Y29tcHMucHVzaCgiMCIpfWlmKGRlY2ltYWxzPDB8fGRlY2ltYWxzPjgwfHxkZWNpbWFscyUxKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGRlY2ltYWwgY291bnQiLCJkZWNpbWFscyIsZGVjaW1hbHMpfWlmKGNvbXBzWzFdLmxlbmd0aDw9ZGVjaW1hbHMpe3JldHVybiB0aGlzfXZhciBmYWN0b3I9Rml4ZWROdW1iZXIuZnJvbSgiMSIremVyb3Muc3Vic3RyaW5nKDAsZGVjaW1hbHMpKTtyZXR1cm4gdGhpcy5tdWxVbnNhZmUoZmFjdG9yKS5hZGRVbnNhZmUoQlVNUCkuZmxvb3IoKS5kaXZVbnNhZmUoZmFjdG9yKX07Rml4ZWROdW1iZXIucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZT09PSIwLjAifHx0aGlzLl92YWx1ZT09PSIwIn07Rml4ZWROdW1iZXIucHJvdG90eXBlLmlzTmVnYXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWVbMF09PT0iLSJ9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX07Rml4ZWROdW1iZXIucHJvdG90eXBlLnRvSGV4U3RyaW5nPWZ1bmN0aW9uKHdpZHRoKXtpZih3aWR0aD09bnVsbCl7cmV0dXJuIHRoaXMuX2hleH1pZih3aWR0aCU4KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGJ5dGUgd2lkdGgiLCJ3aWR0aCIsd2lkdGgpfXZhciBoZXg9YmlnbnVtYmVyLkJpZ051bWJlci5mcm9tKHRoaXMuX2hleCkuZnJvbVR3b3ModGhpcy5mb3JtYXQud2lkdGgpLnRvVHdvcyh3aWR0aCkudG9IZXhTdHJpbmcoKTtyZXR1cm4gbGliJDEuaGV4WmVyb1BhZChoZXgsd2lkdGgvOCl9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS50b1Vuc2FmZUZsb2F0PWZ1bmN0aW9uKCl7cmV0dXJuIHBhcnNlRmxvYXQodGhpcy50b1N0cmluZygpKX07Rml4ZWROdW1iZXIucHJvdG90eXBlLnRvRm9ybWF0PWZ1bmN0aW9uKGZvcm1hdCl7cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21TdHJpbmcodGhpcy5fdmFsdWUsZm9ybWF0KX07Rml4ZWROdW1iZXIuZnJvbVZhbHVlPWZ1bmN0aW9uKHZhbHVlLGRlY2ltYWxzLGZvcm1hdCl7aWYoZm9ybWF0PT1udWxsJiZkZWNpbWFscyE9bnVsbCYmIWJpZ251bWJlci5pc0JpZ051bWJlcmlzaChkZWNpbWFscykpe2Zvcm1hdD1kZWNpbWFscztkZWNpbWFscz1udWxsfWlmKGRlY2ltYWxzPT1udWxsKXtkZWNpbWFscz0wfWlmKGZvcm1hdD09bnVsbCl7Zm9ybWF0PSJmaXhlZCJ9cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21TdHJpbmcoZm9ybWF0Rml4ZWQodmFsdWUsZGVjaW1hbHMpLEZpeGVkRm9ybWF0LmZyb20oZm9ybWF0KSl9O0ZpeGVkTnVtYmVyLmZyb21TdHJpbmc9ZnVuY3Rpb24odmFsdWUsZm9ybWF0KXtpZihmb3JtYXQ9PW51bGwpe2Zvcm1hdD0iZml4ZWQifXZhciBmaXhlZEZvcm1hdD1GaXhlZEZvcm1hdC5mcm9tKGZvcm1hdCk7dmFyIG51bWVyaWM9cGFyc2VGaXhlZCh2YWx1ZSxmaXhlZEZvcm1hdC5kZWNpbWFscyk7aWYoIWZpeGVkRm9ybWF0LnNpZ25lZCYmbnVtZXJpYy5sdChaZXJvKSl7dGhyb3dGYXVsdCgidW5zaWduZWQgdmFsdWUgY2Fubm90IGJlIG5lZ2F0aXZlIiwib3ZlcmZsb3ciLCJ2YWx1ZSIsdmFsdWUpfXZhciBoZXg9bnVsbDtpZihmaXhlZEZvcm1hdC5zaWduZWQpe2hleD1udW1lcmljLnRvVHdvcyhmaXhlZEZvcm1hdC53aWR0aCkudG9IZXhTdHJpbmcoKX1lbHNle2hleD1udW1lcmljLnRvSGV4U3RyaW5nKCk7aGV4PWxpYiQxLmhleFplcm9QYWQoaGV4LGZpeGVkRm9ybWF0LndpZHRoLzgpfXZhciBkZWNpbWFsPWZvcm1hdEZpeGVkKG51bWVyaWMsZml4ZWRGb3JtYXQuZGVjaW1hbHMpO3JldHVybiBuZXcgRml4ZWROdW1iZXIoX2NvbnN0cnVjdG9yR3VhcmQsaGV4LGRlY2ltYWwsZml4ZWRGb3JtYXQpfTtGaXhlZE51bWJlci5mcm9tQnl0ZXM9ZnVuY3Rpb24odmFsdWUsZm9ybWF0KXtpZihmb3JtYXQ9PW51bGwpe2Zvcm1hdD0iZml4ZWQifXZhciBmaXhlZEZvcm1hdD1GaXhlZEZvcm1hdC5mcm9tKGZvcm1hdCk7aWYobGliJDEuYXJyYXlpZnkodmFsdWUpLmxlbmd0aD5maXhlZEZvcm1hdC53aWR0aC84KXt0aHJvdyBuZXcgRXJyb3IoIm92ZXJmbG93Iil9dmFyIG51bWVyaWM9YmlnbnVtYmVyLkJpZ051bWJlci5mcm9tKHZhbHVlKTtpZihmaXhlZEZvcm1hdC5zaWduZWQpe251bWVyaWM9bnVtZXJpYy5mcm9tVHdvcyhmaXhlZEZvcm1hdC53aWR0aCl9dmFyIGhleD1udW1lcmljLnRvVHdvcygoZml4ZWRGb3JtYXQuc2lnbmVkPzA6MSkrZml4ZWRGb3JtYXQud2lkdGgpLnRvSGV4U3RyaW5nKCk7dmFyIGRlY2ltYWw9Zm9ybWF0Rml4ZWQobnVtZXJpYyxmaXhlZEZvcm1hdC5kZWNpbWFscyk7cmV0dXJuIG5ldyBGaXhlZE51bWJlcihfY29uc3RydWN0b3JHdWFyZCxoZXgsZGVjaW1hbCxmaXhlZEZvcm1hdCl9O0ZpeGVkTnVtYmVyLmZyb209ZnVuY3Rpb24odmFsdWUsZm9ybWF0KXtpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21TdHJpbmcodmFsdWUsZm9ybWF0KX1pZihsaWIkMS5pc0J5dGVzKHZhbHVlKSl7cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21CeXRlcyh2YWx1ZSxmb3JtYXQpfXRyeXtyZXR1cm4gRml4ZWROdW1iZXIuZnJvbVZhbHVlKHZhbHVlLDAsZm9ybWF0KX1jYXRjaChlcnJvcil7aWYoZXJyb3IuY29kZSE9PWxpYi5Mb2dnZXIuZXJyb3JzLklOVkFMSURfQVJHVU1FTlQpe3Rocm93IGVycm9yfX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBGaXhlZE51bWJlciB2YWx1ZSIsInZhbHVlIix2YWx1ZSl9O0ZpeGVkTnVtYmVyLmlzRml4ZWROdW1iZXI9ZnVuY3Rpb24odmFsdWUpe3JldHVybiEhKHZhbHVlJiZ2YWx1ZS5faXNGaXhlZE51bWJlcil9O3JldHVybiBGaXhlZE51bWJlcn0oKTtleHBvcnRzLkZpeGVkTnVtYmVyPUZpeGVkTnVtYmVyO3ZhciBPTkU9Rml4ZWROdW1iZXIuZnJvbSgxKTt2YXIgQlVNUD1GaXhlZE51bWJlci5mcm9tKCIwLjUiKX0pO3ZhciBmaXhlZG51bWJlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGZpeGVkbnVtYmVyKTt2YXIgbGliJDI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLl9iYXNlMzZUbzE2PWV4cG9ydHMuX2Jhc2UxNlRvMzY9ZXhwb3J0cy5wYXJzZUZpeGVkPWV4cG9ydHMuRml4ZWROdW1iZXI9ZXhwb3J0cy5GaXhlZEZvcm1hdD1leHBvcnRzLmZvcm1hdEZpeGVkPWV4cG9ydHMuQmlnTnVtYmVyPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQmlnTnVtYmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXIuQmlnTnVtYmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJmb3JtYXRGaXhlZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZml4ZWRudW1iZXIuZm9ybWF0Rml4ZWR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkZpeGVkRm9ybWF0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmaXhlZG51bWJlci5GaXhlZEZvcm1hdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRml4ZWROdW1iZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZpeGVkbnVtYmVyLkZpeGVkTnVtYmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwYXJzZUZpeGVkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmaXhlZG51bWJlci5wYXJzZUZpeGVkfX0pO3ZhciBiaWdudW1iZXJfMj1iaWdudW1iZXI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9iYXNlMTZUbzM2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJfMi5fYmFzZTE2VG8zNn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX2Jhc2UzNlRvMTYiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlcl8yLl9iYXNlMzZUbzE2fX0pfSk7dmFyIGluZGV4JDI9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDIpO3ZhciBfdmVyc2lvbiQ2PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249InByb3BlcnRpZXMvNS4yLjAifSk7dmFyIF92ZXJzaW9uJDc9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kNik7dmFyIGxpYiQzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkRlc2NyaXB0aW9uPWV4cG9ydHMuZGVlcENvcHk9ZXhwb3J0cy5zaGFsbG93Q29weT1leHBvcnRzLmNoZWNrUHJvcGVydGllcz1leHBvcnRzLnJlc29sdmVQcm9wZXJ0aWVzPWV4cG9ydHMuZ2V0U3RhdGljPWV4cG9ydHMuZGVmaW5lUmVhZE9ubHk9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kNi52ZXJzaW9uKTtmdW5jdGlvbiBkZWZpbmVSZWFkT25seShvYmplY3QsbmFtZSx2YWx1ZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCxuYW1lLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dmFsdWUsd3JpdGFibGU6ZmFsc2V9KX1leHBvcnRzLmRlZmluZVJlYWRPbmx5PWRlZmluZVJlYWRPbmx5O2Z1bmN0aW9uIGdldFN0YXRpYyhjdG9yLGtleSl7Zm9yKHZhciBpPTA7aTwzMjtpKyspe2lmKGN0b3Jba2V5XSl7cmV0dXJuIGN0b3Jba2V5XX1pZighY3Rvci5wcm90b3R5cGV8fHR5cGVvZiBjdG9yLnByb3RvdHlwZSE9PSJvYmplY3QiKXticmVha31jdG9yPU9iamVjdC5nZXRQcm90b3R5cGVPZihjdG9yLnByb3RvdHlwZSkuY29uc3RydWN0b3J9cmV0dXJuIG51bGx9ZXhwb3J0cy5nZXRTdGF0aWM9Z2V0U3RhdGljO2Z1bmN0aW9uIHJlc29sdmVQcm9wZXJ0aWVzKG9iamVjdCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcHJvbWlzZXMscmVzdWx0cztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cHJvbWlzZXM9T2JqZWN0LmtleXMob2JqZWN0KS5tYXAoZnVuY3Rpb24oa2V5KXt2YXIgdmFsdWU9b2JqZWN0W2tleV07cmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih2KXtyZXR1cm57a2V5OmtleSx2YWx1ZTp2fX0pfSk7cmV0dXJuWzQsUHJvbWlzZS5hbGwocHJvbWlzZXMpXTtjYXNlIDE6cmVzdWx0cz1fYS5zZW50KCk7cmV0dXJuWzIscmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0scmVzdWx0KXthY2N1bVtyZXN1bHQua2V5XT1yZXN1bHQudmFsdWU7cmV0dXJuIGFjY3VtfSx7fSldfX0pfSl9ZXhwb3J0cy5yZXNvbHZlUHJvcGVydGllcz1yZXNvbHZlUHJvcGVydGllcztmdW5jdGlvbiBjaGVja1Byb3BlcnRpZXMob2JqZWN0LHByb3BlcnRpZXMpe2lmKCFvYmplY3R8fHR5cGVvZiBvYmplY3QhPT0ib2JqZWN0Iil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBvYmplY3QiLCJvYmplY3QiLG9iamVjdCl9T2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYoIXByb3BlcnRpZXNba2V5XSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBvYmplY3Qga2V5IC0gIitrZXksInRyYW5zYWN0aW9uOiIra2V5LG9iamVjdCl9fSl9ZXhwb3J0cy5jaGVja1Byb3BlcnRpZXM9Y2hlY2tQcm9wZXJ0aWVzO2Z1bmN0aW9uIHNoYWxsb3dDb3B5KG9iamVjdCl7dmFyIHJlc3VsdD17fTtmb3IodmFyIGtleSBpbiBvYmplY3Qpe3Jlc3VsdFtrZXldPW9iamVjdFtrZXldfXJldHVybiByZXN1bHR9ZXhwb3J0cy5zaGFsbG93Q29weT1zaGFsbG93Q29weTt2YXIgb3BhcXVlPXtiaWdpbnQ6dHJ1ZSxib29sZWFuOnRydWUsZnVuY3Rpb246dHJ1ZSxudW1iZXI6dHJ1ZSxzdHJpbmc6dHJ1ZX07ZnVuY3Rpb24gX2lzRnJvemVuKG9iamVjdCl7aWYob2JqZWN0PT09dW5kZWZpbmVkfHxvYmplY3Q9PT1udWxsfHxvcGFxdWVbdHlwZW9mIG9iamVjdF0pe3JldHVybiB0cnVlfWlmKEFycmF5LmlzQXJyYXkob2JqZWN0KXx8dHlwZW9mIG9iamVjdD09PSJvYmplY3QiKXtpZighT2JqZWN0LmlzRnJvemVuKG9iamVjdCkpe3JldHVybiBmYWxzZX12YXIga2V5cz1PYmplY3Qua2V5cyhvYmplY3QpO2Zvcih2YXIgaT0wO2k8a2V5cy5sZW5ndGg7aSsrKXtpZighX2lzRnJvemVuKG9iamVjdFtrZXlzW2ldXSkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIkNhbm5vdCBkZWVwQ29weSAiK3R5cGVvZiBvYmplY3QsIm9iamVjdCIsb2JqZWN0KX1mdW5jdGlvbiBfZGVlcENvcHkob2JqZWN0KXtpZihfaXNGcm96ZW4ob2JqZWN0KSl7cmV0dXJuIG9iamVjdH1pZihBcnJheS5pc0FycmF5KG9iamVjdCkpe3JldHVybiBPYmplY3QuZnJlZXplKG9iamVjdC5tYXAoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGRlZXBDb3B5KGl0ZW0pfSkpfWlmKHR5cGVvZiBvYmplY3Q9PT0ib2JqZWN0Iil7dmFyIHJlc3VsdD17fTtmb3IodmFyIGtleSBpbiBvYmplY3Qpe3ZhciB2YWx1ZT1vYmplY3Rba2V5XTtpZih2YWx1ZT09PXVuZGVmaW5lZCl7Y29udGludWV9ZGVmaW5lUmVhZE9ubHkocmVzdWx0LGtleSxkZWVwQ29weSh2YWx1ZSkpfXJldHVybiByZXN1bHR9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIkNhbm5vdCBkZWVwQ29weSAiK3R5cGVvZiBvYmplY3QsIm9iamVjdCIsb2JqZWN0KX1mdW5jdGlvbiBkZWVwQ29weShvYmplY3Qpe3JldHVybiBfZGVlcENvcHkob2JqZWN0KX1leHBvcnRzLmRlZXBDb3B5PWRlZXBDb3B5O3ZhciBEZXNjcmlwdGlvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIERlc2NyaXB0aW9uKGluZm8pe2Zvcih2YXIga2V5IGluIGluZm8pe3RoaXNba2V5XT1kZWVwQ29weShpbmZvW2tleV0pfX1yZXR1cm4gRGVzY3JpcHRpb259KCk7ZXhwb3J0cy5EZXNjcmlwdGlvbj1EZXNjcmlwdGlvbn0pO3ZhciBpbmRleCQzPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiQzKTt2YXIgX3ZlcnNpb24kOD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJhYmkvNS4yLjAifSk7dmFyIF92ZXJzaW9uJDk9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kOCk7dmFyIGZyYWdtZW50cz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkVycm9yRnJhZ21lbnQ9ZXhwb3J0cy5GdW5jdGlvbkZyYWdtZW50PWV4cG9ydHMuQ29uc3RydWN0b3JGcmFnbWVudD1leHBvcnRzLkV2ZW50RnJhZ21lbnQ9ZXhwb3J0cy5GcmFnbWVudD1leHBvcnRzLlBhcmFtVHlwZT1leHBvcnRzLkZvcm1hdFR5cGVzPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDgudmVyc2lvbik7dmFyIF9jb25zdHJ1Y3Rvckd1YXJkPXt9O3ZhciBNb2RpZmllcnNCeXRlcz17Y2FsbGRhdGE6dHJ1ZSxtZW1vcnk6dHJ1ZSxzdG9yYWdlOnRydWV9O3ZhciBNb2RpZmllcnNOZXN0PXtjYWxsZGF0YTp0cnVlLG1lbW9yeTp0cnVlfTtmdW5jdGlvbiBjaGVja01vZGlmaWVyKHR5cGUsbmFtZSl7aWYodHlwZT09PSJieXRlcyJ8fHR5cGU9PT0ic3RyaW5nIil7aWYoTW9kaWZpZXJzQnl0ZXNbbmFtZV0pe3JldHVybiB0cnVlfX1lbHNlIGlmKHR5cGU9PT0iYWRkcmVzcyIpe2lmKG5hbWU9PT0icGF5YWJsZSIpe3JldHVybiB0cnVlfX1lbHNlIGlmKHR5cGUuaW5kZXhPZigiWyIpPj0wfHx0eXBlPT09InR1cGxlIil7aWYoTW9kaWZpZXJzTmVzdFtuYW1lXSl7cmV0dXJuIHRydWV9fWlmKE1vZGlmaWVyc0J5dGVzW25hbWVdfHxuYW1lPT09InBheWFibGUiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG1vZGlmaWVyIiwibmFtZSIsbmFtZSl9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIHBhcnNlUGFyYW1UeXBlKHBhcmFtLGFsbG93SW5kZXhlZCl7dmFyIG9yaWdpbmFsUGFyYW09cGFyYW07ZnVuY3Rpb24gdGhyb3dFcnJvcihpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBhdCBwb3NpdGlvbiAiK2ksInBhcmFtIixwYXJhbSl9cGFyYW09cGFyYW0ucmVwbGFjZSgvXHMvZywiICIpO2Z1bmN0aW9uIG5ld05vZGUocGFyZW50KXt2YXIgbm9kZT17dHlwZToiIixuYW1lOiIiLHBhcmVudDpwYXJlbnQsc3RhdGU6e2FsbG93VHlwZTp0cnVlfX07aWYoYWxsb3dJbmRleGVkKXtub2RlLmluZGV4ZWQ9ZmFsc2V9cmV0dXJuIG5vZGV9dmFyIHBhcmVudD17dHlwZToiIixuYW1lOiIiLHN0YXRlOnthbGxvd1R5cGU6dHJ1ZX19O3ZhciBub2RlPXBhcmVudDtmb3IodmFyIGk9MDtpPHBhcmFtLmxlbmd0aDtpKyspe3ZhciBjPXBhcmFtW2ldO3N3aXRjaChjKXtjYXNlIigiOmlmKG5vZGUuc3RhdGUuYWxsb3dUeXBlJiZub2RlLnR5cGU9PT0iIil7bm9kZS50eXBlPSJ0dXBsZSJ9ZWxzZSBpZighbm9kZS5zdGF0ZS5hbGxvd1BhcmFtcyl7dGhyb3dFcnJvcihpKX1ub2RlLnN0YXRlLmFsbG93VHlwZT1mYWxzZTtub2RlLnR5cGU9dmVyaWZ5VHlwZShub2RlLnR5cGUpO25vZGUuY29tcG9uZW50cz1bbmV3Tm9kZShub2RlKV07bm9kZT1ub2RlLmNvbXBvbmVudHNbMF07YnJlYWs7Y2FzZSIpIjpkZWxldGUgbm9kZS5zdGF0ZTtpZihub2RlLm5hbWU9PT0iaW5kZXhlZCIpe2lmKCFhbGxvd0luZGV4ZWQpe3Rocm93RXJyb3IoaSl9bm9kZS5pbmRleGVkPXRydWU7bm9kZS5uYW1lPSIifWlmKGNoZWNrTW9kaWZpZXIobm9kZS50eXBlLG5vZGUubmFtZSkpe25vZGUubmFtZT0iIn1ub2RlLnR5cGU9dmVyaWZ5VHlwZShub2RlLnR5cGUpO3ZhciBjaGlsZD1ub2RlO25vZGU9bm9kZS5wYXJlbnQ7aWYoIW5vZGUpe3Rocm93RXJyb3IoaSl9ZGVsZXRlIGNoaWxkLnBhcmVudDtub2RlLnN0YXRlLmFsbG93UGFyYW1zPWZhbHNlO25vZGUuc3RhdGUuYWxsb3dOYW1lPXRydWU7bm9kZS5zdGF0ZS5hbGxvd0FycmF5PXRydWU7YnJlYWs7Y2FzZSIsIjpkZWxldGUgbm9kZS5zdGF0ZTtpZihub2RlLm5hbWU9PT0iaW5kZXhlZCIpe2lmKCFhbGxvd0luZGV4ZWQpe3Rocm93RXJyb3IoaSl9bm9kZS5pbmRleGVkPXRydWU7bm9kZS5uYW1lPSIifWlmKGNoZWNrTW9kaWZpZXIobm9kZS50eXBlLG5vZGUubmFtZSkpe25vZGUubmFtZT0iIn1ub2RlLnR5cGU9dmVyaWZ5VHlwZShub2RlLnR5cGUpO3ZhciBzaWJsaW5nPW5ld05vZGUobm9kZS5wYXJlbnQpO25vZGUucGFyZW50LmNvbXBvbmVudHMucHVzaChzaWJsaW5nKTtkZWxldGUgbm9kZS5wYXJlbnQ7bm9kZT1zaWJsaW5nO2JyZWFrO2Nhc2UiICI6aWYobm9kZS5zdGF0ZS5hbGxvd1R5cGUpe2lmKG5vZGUudHlwZSE9PSIiKXtub2RlLnR5cGU9dmVyaWZ5VHlwZShub2RlLnR5cGUpO2RlbGV0ZSBub2RlLnN0YXRlLmFsbG93VHlwZTtub2RlLnN0YXRlLmFsbG93TmFtZT10cnVlO25vZGUuc3RhdGUuYWxsb3dQYXJhbXM9dHJ1ZX19aWYobm9kZS5zdGF0ZS5hbGxvd05hbWUpe2lmKG5vZGUubmFtZSE9PSIiKXtpZihub2RlLm5hbWU9PT0iaW5kZXhlZCIpe2lmKCFhbGxvd0luZGV4ZWQpe3Rocm93RXJyb3IoaSl9aWYobm9kZS5pbmRleGVkKXt0aHJvd0Vycm9yKGkpfW5vZGUuaW5kZXhlZD10cnVlO25vZGUubmFtZT0iIn1lbHNlIGlmKGNoZWNrTW9kaWZpZXIobm9kZS50eXBlLG5vZGUubmFtZSkpe25vZGUubmFtZT0iIn1lbHNle25vZGUuc3RhdGUuYWxsb3dOYW1lPWZhbHNlfX19YnJlYWs7Y2FzZSJbIjppZighbm9kZS5zdGF0ZS5hbGxvd0FycmF5KXt0aHJvd0Vycm9yKGkpfW5vZGUudHlwZSs9Yztub2RlLnN0YXRlLmFsbG93QXJyYXk9ZmFsc2U7bm9kZS5zdGF0ZS5hbGxvd05hbWU9ZmFsc2U7bm9kZS5zdGF0ZS5yZWFkQXJyYXk9dHJ1ZTticmVhaztjYXNlIl0iOmlmKCFub2RlLnN0YXRlLnJlYWRBcnJheSl7dGhyb3dFcnJvcihpKX1ub2RlLnR5cGUrPWM7bm9kZS5zdGF0ZS5yZWFkQXJyYXk9ZmFsc2U7bm9kZS5zdGF0ZS5hbGxvd0FycmF5PXRydWU7bm9kZS5zdGF0ZS5hbGxvd05hbWU9dHJ1ZTticmVhaztkZWZhdWx0OmlmKG5vZGUuc3RhdGUuYWxsb3dUeXBlKXtub2RlLnR5cGUrPWM7bm9kZS5zdGF0ZS5hbGxvd1BhcmFtcz10cnVlO25vZGUuc3RhdGUuYWxsb3dBcnJheT10cnVlfWVsc2UgaWYobm9kZS5zdGF0ZS5hbGxvd05hbWUpe25vZGUubmFtZSs9YztkZWxldGUgbm9kZS5zdGF0ZS5hbGxvd0FycmF5fWVsc2UgaWYobm9kZS5zdGF0ZS5yZWFkQXJyYXkpe25vZGUudHlwZSs9Y31lbHNle3Rocm93RXJyb3IoaSl9fX1pZihub2RlLnBhcmVudCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5leHBlY3RlZCBlb2YiLCJwYXJhbSIscGFyYW0pfWRlbGV0ZSBwYXJlbnQuc3RhdGU7aWYobm9kZS5uYW1lPT09ImluZGV4ZWQiKXtpZighYWxsb3dJbmRleGVkKXt0aHJvd0Vycm9yKG9yaWdpbmFsUGFyYW0ubGVuZ3RoLTcpfWlmKG5vZGUuaW5kZXhlZCl7dGhyb3dFcnJvcihvcmlnaW5hbFBhcmFtLmxlbmd0aC03KX1ub2RlLmluZGV4ZWQ9dHJ1ZTtub2RlLm5hbWU9IiJ9ZWxzZSBpZihjaGVja01vZGlmaWVyKG5vZGUudHlwZSxub2RlLm5hbWUpKXtub2RlLm5hbWU9IiJ9cGFyZW50LnR5cGU9dmVyaWZ5VHlwZShwYXJlbnQudHlwZSk7cmV0dXJuIHBhcmVudH1mdW5jdGlvbiBwb3B1bGF0ZShvYmplY3QscGFyYW1zKXtmb3IodmFyIGtleSBpbiBwYXJhbXMpe2xpYiQzLmRlZmluZVJlYWRPbmx5KG9iamVjdCxrZXkscGFyYW1zW2tleV0pfX1leHBvcnRzLkZvcm1hdFR5cGVzPU9iamVjdC5mcmVlemUoe3NpZ2hhc2g6InNpZ2hhc2giLG1pbmltYWw6Im1pbmltYWwiLGZ1bGw6ImZ1bGwiLGpzb246Impzb24ifSk7dmFyIHBhcmFtVHlwZUFycmF5PW5ldyBSZWdFeHAoL14oLiopXFsoWzAtOV0qKVxdJC8pO3ZhciBQYXJhbVR5cGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBQYXJhbVR5cGUoY29uc3RydWN0b3JHdWFyZCxwYXJhbXMpe2lmKGNvbnN0cnVjdG9yR3VhcmQhPT1fY29uc3RydWN0b3JHdWFyZCl7bG9nZ2VyLnRocm93RXJyb3IoInVzZSBmcm9tU3RyaW5nIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV3IFBhcmFtVHlwZSgpIn0pfXBvcHVsYXRlKHRoaXMscGFyYW1zKTt2YXIgbWF0Y2g9dGhpcy50eXBlLm1hdGNoKHBhcmFtVHlwZUFycmF5KTtpZihtYXRjaCl7cG9wdWxhdGUodGhpcyx7YXJyYXlMZW5ndGg6cGFyc2VJbnQobWF0Y2hbMl18fCItMSIpLGFycmF5Q2hpbGRyZW46UGFyYW1UeXBlLmZyb21PYmplY3Qoe3R5cGU6bWF0Y2hbMV0sY29tcG9uZW50czp0aGlzLmNvbXBvbmVudHN9KSxiYXNlVHlwZToiYXJyYXkifSl9ZWxzZXtwb3B1bGF0ZSh0aGlzLHthcnJheUxlbmd0aDpudWxsLGFycmF5Q2hpbGRyZW46bnVsbCxiYXNlVHlwZTp0aGlzLmNvbXBvbmVudHMhPW51bGw/InR1cGxlIjp0aGlzLnR5cGV9KX10aGlzLl9pc1BhcmFtVHlwZT10cnVlO09iamVjdC5mcmVlemUodGhpcyl9UGFyYW1UeXBlLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oZm9ybWF0KXtpZighZm9ybWF0KXtmb3JtYXQ9ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNofWlmKCFleHBvcnRzLkZvcm1hdFR5cGVzW2Zvcm1hdF0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZm9ybWF0IHR5cGUiLCJmb3JtYXQiLGZvcm1hdCl9aWYoZm9ybWF0PT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5qc29uKXt2YXIgcmVzdWx0XzE9e3R5cGU6dGhpcy5iYXNlVHlwZT09PSJ0dXBsZSI/InR1cGxlIjp0aGlzLnR5cGUsbmFtZTp0aGlzLm5hbWV8fHVuZGVmaW5lZH07aWYodHlwZW9mIHRoaXMuaW5kZXhlZD09PSJib29sZWFuIil7cmVzdWx0XzEuaW5kZXhlZD10aGlzLmluZGV4ZWR9aWYodGhpcy5jb21wb25lbnRzKXtyZXN1bHRfMS5jb21wb25lbnRzPXRoaXMuY29tcG9uZW50cy5tYXAoZnVuY3Rpb24oY29tcCl7cmV0dXJuIEpTT04ucGFyc2UoY29tcC5mb3JtYXQoZm9ybWF0KSl9KX1yZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0XzEpfXZhciByZXN1bHQ9IiI7aWYodGhpcy5iYXNlVHlwZT09PSJhcnJheSIpe3Jlc3VsdCs9dGhpcy5hcnJheUNoaWxkcmVuLmZvcm1hdChmb3JtYXQpO3Jlc3VsdCs9IlsiKyh0aGlzLmFycmF5TGVuZ3RoPDA/IiI6U3RyaW5nKHRoaXMuYXJyYXlMZW5ndGgpKSsiXSJ9ZWxzZXtpZih0aGlzLmJhc2VUeXBlPT09InR1cGxlIil7aWYoZm9ybWF0IT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNoKXtyZXN1bHQrPXRoaXMudHlwZX1yZXN1bHQrPSIoIit0aGlzLmNvbXBvbmVudHMubWFwKGZ1bmN0aW9uKGNvbXApe3JldHVybiBjb21wLmZvcm1hdChmb3JtYXQpfSkuam9pbihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmZ1bGw/IiwgIjoiLCIpKyIpIn1lbHNle3Jlc3VsdCs9dGhpcy50eXBlfX1pZihmb3JtYXQhPT1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2gpe2lmKHRoaXMuaW5kZXhlZD09PXRydWUpe3Jlc3VsdCs9IiBpbmRleGVkIn1pZihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmZ1bGwmJnRoaXMubmFtZSl7cmVzdWx0Kz0iICIrdGhpcy5uYW1lfX1yZXR1cm4gcmVzdWx0fTtQYXJhbVR5cGUuZnJvbT1mdW5jdGlvbih2YWx1ZSxhbGxvd0luZGV4ZWQpe2lmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gUGFyYW1UeXBlLmZyb21TdHJpbmcodmFsdWUsYWxsb3dJbmRleGVkKX1yZXR1cm4gUGFyYW1UeXBlLmZyb21PYmplY3QodmFsdWUpfTtQYXJhbVR5cGUuZnJvbU9iamVjdD1mdW5jdGlvbih2YWx1ZSl7aWYoUGFyYW1UeXBlLmlzUGFyYW1UeXBlKHZhbHVlKSl7cmV0dXJuIHZhbHVlfXJldHVybiBuZXcgUGFyYW1UeXBlKF9jb25zdHJ1Y3Rvckd1YXJkLHtuYW1lOnZhbHVlLm5hbWV8fG51bGwsdHlwZTp2ZXJpZnlUeXBlKHZhbHVlLnR5cGUpLGluZGV4ZWQ6dmFsdWUuaW5kZXhlZD09bnVsbD9udWxsOiEhdmFsdWUuaW5kZXhlZCxjb21wb25lbnRzOnZhbHVlLmNvbXBvbmVudHM/dmFsdWUuY29tcG9uZW50cy5tYXAoUGFyYW1UeXBlLmZyb21PYmplY3QpOm51bGx9KX07UGFyYW1UeXBlLmZyb21TdHJpbmc9ZnVuY3Rpb24odmFsdWUsYWxsb3dJbmRleGVkKXtmdW5jdGlvbiBQYXJhbVR5cGlmeShub2RlKXtyZXR1cm4gUGFyYW1UeXBlLmZyb21PYmplY3Qoe25hbWU6bm9kZS5uYW1lLHR5cGU6bm9kZS50eXBlLGluZGV4ZWQ6bm9kZS5pbmRleGVkLGNvbXBvbmVudHM6bm9kZS5jb21wb25lbnRzfSl9cmV0dXJuIFBhcmFtVHlwaWZ5KHBhcnNlUGFyYW1UeXBlKHZhbHVlLCEhYWxsb3dJbmRleGVkKSl9O1BhcmFtVHlwZS5pc1BhcmFtVHlwZT1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUhPW51bGwmJnZhbHVlLl9pc1BhcmFtVHlwZSl9O3JldHVybiBQYXJhbVR5cGV9KCk7ZXhwb3J0cy5QYXJhbVR5cGU9UGFyYW1UeXBlO2Z1bmN0aW9uIHBhcnNlUGFyYW1zKHZhbHVlLGFsbG93SW5kZXgpe3JldHVybiBzcGxpdE5lc3RpbmcodmFsdWUpLm1hcChmdW5jdGlvbihwYXJhbSl7cmV0dXJuIFBhcmFtVHlwZS5mcm9tU3RyaW5nKHBhcmFtLGFsbG93SW5kZXgpfSl9dmFyIEZyYWdtZW50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRnJhZ21lbnQoY29uc3RydWN0b3JHdWFyZCxwYXJhbXMpe2lmKGNvbnN0cnVjdG9yR3VhcmQhPT1fY29uc3RydWN0b3JHdWFyZCl7bG9nZ2VyLnRocm93RXJyb3IoInVzZSBhIHN0YXRpYyBmcm9tIG1ldGhvZCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im5ldyBGcmFnbWVudCgpIn0pfXBvcHVsYXRlKHRoaXMscGFyYW1zKTt0aGlzLl9pc0ZyYWdtZW50PXRydWU7T2JqZWN0LmZyZWV6ZSh0aGlzKX1GcmFnbWVudC5mcm9tPWZ1bmN0aW9uKHZhbHVlKXtpZihGcmFnbWVudC5pc0ZyYWdtZW50KHZhbHVlKSl7cmV0dXJuIHZhbHVlfWlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZSl9cmV0dXJuIEZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpfTtGcmFnbWVudC5mcm9tT2JqZWN0PWZ1bmN0aW9uKHZhbHVlKXtpZihGcmFnbWVudC5pc0ZyYWdtZW50KHZhbHVlKSl7cmV0dXJuIHZhbHVlfXN3aXRjaCh2YWx1ZS50eXBlKXtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gRnVuY3Rpb25GcmFnbWVudC5mcm9tT2JqZWN0KHZhbHVlKTtjYXNlImV2ZW50IjpyZXR1cm4gRXZlbnRGcmFnbWVudC5mcm9tT2JqZWN0KHZhbHVlKTtjYXNlImNvbnN0cnVjdG9yIjpyZXR1cm4gQ29uc3RydWN0b3JGcmFnbWVudC5mcm9tT2JqZWN0KHZhbHVlKTtjYXNlImVycm9yIjpyZXR1cm4gRXJyb3JGcmFnbWVudC5mcm9tT2JqZWN0KHZhbHVlKTtjYXNlImZhbGxiYWNrIjpjYXNlInJlY2VpdmUiOnJldHVybiBudWxsfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZyYWdtZW50IG9iamVjdCIsInZhbHVlIix2YWx1ZSl9O0ZyYWdtZW50LmZyb21TdHJpbmc9ZnVuY3Rpb24odmFsdWUpe3ZhbHVlPXZhbHVlLnJlcGxhY2UoL1xzL2csIiAiKTt2YWx1ZT12YWx1ZS5yZXBsYWNlKC9cKC9nLCIgKCIpLnJlcGxhY2UoL1wpL2csIikgIikucmVwbGFjZSgvXHMrL2csIiAiKTt2YWx1ZT12YWx1ZS50cmltKCk7aWYodmFsdWUuc3BsaXQoIiAiKVswXT09PSJldmVudCIpe3JldHVybiBFdmVudEZyYWdtZW50LmZyb21TdHJpbmcodmFsdWUuc3Vic3RyaW5nKDUpLnRyaW0oKSl9ZWxzZSBpZih2YWx1ZS5zcGxpdCgiICIpWzBdPT09ImZ1bmN0aW9uIil7cmV0dXJuIEZ1bmN0aW9uRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZS5zdWJzdHJpbmcoOCkudHJpbSgpKX1lbHNlIGlmKHZhbHVlLnNwbGl0KCIoIilbMF0udHJpbSgpPT09ImNvbnN0cnVjdG9yIil7cmV0dXJuIENvbnN0cnVjdG9yRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZS50cmltKCkpfWVsc2UgaWYodmFsdWUuc3BsaXQoIiAiKVswXT09PSJlcnJvciIpe3JldHVybiBFcnJvckZyYWdtZW50LmZyb21TdHJpbmcodmFsdWUuc3Vic3RyaW5nKDUpLnRyaW0oKSl9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuc3VwcG9ydGVkIGZyYWdtZW50IiwidmFsdWUiLHZhbHVlKX07RnJhZ21lbnQuaXNGcmFnbWVudD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0ZyYWdtZW50KX07cmV0dXJuIEZyYWdtZW50fSgpO2V4cG9ydHMuRnJhZ21lbnQ9RnJhZ21lbnQ7dmFyIEV2ZW50RnJhZ21lbnQ9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoRXZlbnRGcmFnbWVudCxfc3VwZXIpO2Z1bmN0aW9uIEV2ZW50RnJhZ21lbnQoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31FdmVudEZyYWdtZW50LnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oZm9ybWF0KXtpZighZm9ybWF0KXtmb3JtYXQ9ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNofWlmKCFleHBvcnRzLkZvcm1hdFR5cGVzW2Zvcm1hdF0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZm9ybWF0IHR5cGUiLCJmb3JtYXQiLGZvcm1hdCl9aWYoZm9ybWF0PT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5qc29uKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3R5cGU6ImV2ZW50Iixhbm9ueW1vdXM6dGhpcy5hbm9ueW1vdXMsbmFtZTp0aGlzLm5hbWUsaW5wdXRzOnRoaXMuaW5wdXRzLm1hcChmdW5jdGlvbihpbnB1dCl7cmV0dXJuIEpTT04ucGFyc2UoaW5wdXQuZm9ybWF0KGZvcm1hdCkpfSl9KX12YXIgcmVzdWx0PSIiO2lmKGZvcm1hdCE9PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaCl7cmVzdWx0Kz0iZXZlbnQgIn1yZXN1bHQrPXRoaXMubmFtZSsiKCIrdGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gaW5wdXQuZm9ybWF0KGZvcm1hdCl9KS5qb2luKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuZnVsbD8iLCAiOiIsIikrIikgIjtpZihmb3JtYXQhPT1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2gpe2lmKHRoaXMuYW5vbnltb3VzKXtyZXN1bHQrPSJhbm9ueW1vdXMgIn19cmV0dXJuIHJlc3VsdC50cmltKCl9O0V2ZW50RnJhZ21lbnQuZnJvbT1mdW5jdGlvbih2YWx1ZSl7aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3JldHVybiBFdmVudEZyYWdtZW50LmZyb21TdHJpbmcodmFsdWUpfXJldHVybiBFdmVudEZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpfTtFdmVudEZyYWdtZW50LmZyb21PYmplY3Q9ZnVuY3Rpb24odmFsdWUpe2lmKEV2ZW50RnJhZ21lbnQuaXNFdmVudEZyYWdtZW50KHZhbHVlKSl7cmV0dXJuIHZhbHVlfWlmKHZhbHVlLnR5cGUhPT0iZXZlbnQiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGV2ZW50IG9iamVjdCIsInZhbHVlIix2YWx1ZSl9dmFyIHBhcmFtcz17bmFtZTp2ZXJpZnlJZGVudGlmaWVyKHZhbHVlLm5hbWUpLGFub255bW91czp2YWx1ZS5hbm9ueW1vdXMsaW5wdXRzOnZhbHVlLmlucHV0cz92YWx1ZS5pbnB1dHMubWFwKFBhcmFtVHlwZS5mcm9tT2JqZWN0KTpbXSx0eXBlOiJldmVudCJ9O3JldHVybiBuZXcgRXZlbnRGcmFnbWVudChfY29uc3RydWN0b3JHdWFyZCxwYXJhbXMpfTtFdmVudEZyYWdtZW50LmZyb21TdHJpbmc9ZnVuY3Rpb24odmFsdWUpe3ZhciBtYXRjaD12YWx1ZS5tYXRjaChyZWdleFBhcmVuKTtpZighbWF0Y2gpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZXZlbnQgc3RyaW5nIiwidmFsdWUiLHZhbHVlKX12YXIgYW5vbnltb3VzPWZhbHNlO21hdGNoWzNdLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihtb2RpZmllcil7c3dpdGNoKG1vZGlmaWVyLnRyaW0oKSl7Y2FzZSJhbm9ueW1vdXMiOmFub255bW91cz10cnVlO2JyZWFrO2Nhc2UiIjpicmVhaztkZWZhdWx0OmxvZ2dlci53YXJuKCJ1bmtub3duIG1vZGlmaWVyOiAiK21vZGlmaWVyKX19KTtyZXR1cm4gRXZlbnRGcmFnbWVudC5mcm9tT2JqZWN0KHtuYW1lOm1hdGNoWzFdLnRyaW0oKSxhbm9ueW1vdXM6YW5vbnltb3VzLGlucHV0czpwYXJzZVBhcmFtcyhtYXRjaFsyXSx0cnVlKSx0eXBlOiJldmVudCJ9KX07RXZlbnRGcmFnbWVudC5pc0V2ZW50RnJhZ21lbnQ9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZSYmdmFsdWUuX2lzRnJhZ21lbnQmJnZhbHVlLnR5cGU9PT0iZXZlbnQifTtyZXR1cm4gRXZlbnRGcmFnbWVudH0oRnJhZ21lbnQpO2V4cG9ydHMuRXZlbnRGcmFnbWVudD1FdmVudEZyYWdtZW50O2Z1bmN0aW9uIHBhcnNlR2FzKHZhbHVlLHBhcmFtcyl7cGFyYW1zLmdhcz1udWxsO3ZhciBjb21wcz12YWx1ZS5zcGxpdCgiQCIpO2lmKGNvbXBzLmxlbmd0aCE9PTEpe2lmKGNvbXBzLmxlbmd0aD4yKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGh1bWFuLXJlYWRhYmxlIEFCSSBzaWduYXR1cmUiLCJ2YWx1ZSIsdmFsdWUpfWlmKCFjb21wc1sxXS5tYXRjaCgvXlswLTldKyQvKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBodW1hbi1yZWFkYWJsZSBBQkkgc2lnbmF0dXJlIGdhcyIsInZhbHVlIix2YWx1ZSl9cGFyYW1zLmdhcz1saWIkMi5CaWdOdW1iZXIuZnJvbShjb21wc1sxXSk7cmV0dXJuIGNvbXBzWzBdfXJldHVybiB2YWx1ZX1mdW5jdGlvbiBwYXJzZU1vZGlmaWVycyh2YWx1ZSxwYXJhbXMpe3BhcmFtcy5jb25zdGFudD1mYWxzZTtwYXJhbXMucGF5YWJsZT1mYWxzZTtwYXJhbXMuc3RhdGVNdXRhYmlsaXR5PSJub25wYXlhYmxlIjt2YWx1ZS5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24obW9kaWZpZXIpe3N3aXRjaChtb2RpZmllci50cmltKCkpe2Nhc2UiY29uc3RhbnQiOnBhcmFtcy5jb25zdGFudD10cnVlO2JyZWFrO2Nhc2UicGF5YWJsZSI6cGFyYW1zLnBheWFibGU9dHJ1ZTtwYXJhbXMuc3RhdGVNdXRhYmlsaXR5PSJwYXlhYmxlIjticmVhaztjYXNlIm5vbnBheWFibGUiOnBhcmFtcy5wYXlhYmxlPWZhbHNlO3BhcmFtcy5zdGF0ZU11dGFiaWxpdHk9Im5vbnBheWFibGUiO2JyZWFrO2Nhc2UicHVyZSI6cGFyYW1zLmNvbnN0YW50PXRydWU7cGFyYW1zLnN0YXRlTXV0YWJpbGl0eT0icHVyZSI7YnJlYWs7Y2FzZSJ2aWV3IjpwYXJhbXMuY29uc3RhbnQ9dHJ1ZTtwYXJhbXMuc3RhdGVNdXRhYmlsaXR5PSJ2aWV3IjticmVhaztjYXNlImV4dGVybmFsIjpjYXNlInB1YmxpYyI6Y2FzZSIiOmJyZWFrO2RlZmF1bHQ6Y29uc29sZS5sb2coInVua25vd24gbW9kaWZpZXI6ICIrbW9kaWZpZXIpfX0pfWZ1bmN0aW9uIHZlcmlmeVN0YXRlKHZhbHVlKXt2YXIgcmVzdWx0PXtjb25zdGFudDpmYWxzZSxwYXlhYmxlOnRydWUsc3RhdGVNdXRhYmlsaXR5OiJwYXlhYmxlIn07aWYodmFsdWUuc3RhdGVNdXRhYmlsaXR5IT1udWxsKXtyZXN1bHQuc3RhdGVNdXRhYmlsaXR5PXZhbHVlLnN0YXRlTXV0YWJpbGl0eTtyZXN1bHQuY29uc3RhbnQ9cmVzdWx0LnN0YXRlTXV0YWJpbGl0eT09PSJ2aWV3Inx8cmVzdWx0LnN0YXRlTXV0YWJpbGl0eT09PSJwdXJlIjtpZih2YWx1ZS5jb25zdGFudCE9bnVsbCl7aWYoISF2YWx1ZS5jb25zdGFudCE9PXJlc3VsdC5jb25zdGFudCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiY2Fubm90IGhhdmUgY29uc3RhbnQgZnVuY3Rpb24gd2l0aCBtdXRhYmlsaXR5ICIrcmVzdWx0LnN0YXRlTXV0YWJpbGl0eSwidmFsdWUiLHZhbHVlKX19cmVzdWx0LnBheWFibGU9cmVzdWx0LnN0YXRlTXV0YWJpbGl0eT09PSJwYXlhYmxlIjtpZih2YWx1ZS5wYXlhYmxlIT1udWxsKXtpZighIXZhbHVlLnBheWFibGUhPT1yZXN1bHQucGF5YWJsZSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiY2Fubm90IGhhdmUgcGF5YWJsZSBmdW5jdGlvbiB3aXRoIG11dGFiaWxpdHkgIityZXN1bHQuc3RhdGVNdXRhYmlsaXR5LCJ2YWx1ZSIsdmFsdWUpfX19ZWxzZSBpZih2YWx1ZS5wYXlhYmxlIT1udWxsKXtyZXN1bHQucGF5YWJsZT0hIXZhbHVlLnBheWFibGU7aWYodmFsdWUuY29uc3RhbnQ9PW51bGwmJiFyZXN1bHQucGF5YWJsZSYmdmFsdWUudHlwZSE9PSJjb25zdHJ1Y3RvciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuYWJsZSB0byBkZXRlcm1pbmUgc3RhdGVNdXRhYmlsaXR5IiwidmFsdWUiLHZhbHVlKX1yZXN1bHQuY29uc3RhbnQ9ISF2YWx1ZS5jb25zdGFudDtpZihyZXN1bHQuY29uc3RhbnQpe3Jlc3VsdC5zdGF0ZU11dGFiaWxpdHk9InZpZXcifWVsc2V7cmVzdWx0LnN0YXRlTXV0YWJpbGl0eT1yZXN1bHQucGF5YWJsZT8icGF5YWJsZSI6Im5vbnBheWFibGUifWlmKHJlc3VsdC5wYXlhYmxlJiZyZXN1bHQuY29uc3RhbnQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImNhbm5vdCBoYXZlIGNvbnN0YW50IHBheWFibGUgZnVuY3Rpb24iLCJ2YWx1ZSIsdmFsdWUpfX1lbHNlIGlmKHZhbHVlLmNvbnN0YW50IT1udWxsKXtyZXN1bHQuY29uc3RhbnQ9ISF2YWx1ZS5jb25zdGFudDtyZXN1bHQucGF5YWJsZT0hcmVzdWx0LmNvbnN0YW50O3Jlc3VsdC5zdGF0ZU11dGFiaWxpdHk9cmVzdWx0LmNvbnN0YW50PyJ2aWV3IjoicGF5YWJsZSJ9ZWxzZSBpZih2YWx1ZS50eXBlIT09ImNvbnN0cnVjdG9yIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5hYmxlIHRvIGRldGVybWluZSBzdGF0ZU11dGFiaWxpdHkiLCJ2YWx1ZSIsdmFsdWUpfXJldHVybiByZXN1bHR9dmFyIENvbnN0cnVjdG9yRnJhZ21lbnQ9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoQ29uc3RydWN0b3JGcmFnbWVudCxfc3VwZXIpO2Z1bmN0aW9uIENvbnN0cnVjdG9yRnJhZ21lbnQoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31Db25zdHJ1Y3RvckZyYWdtZW50LnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oZm9ybWF0KXtpZighZm9ybWF0KXtmb3JtYXQ9ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNofWlmKCFleHBvcnRzLkZvcm1hdFR5cGVzW2Zvcm1hdF0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZm9ybWF0IHR5cGUiLCJmb3JtYXQiLGZvcm1hdCl9aWYoZm9ybWF0PT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5qc29uKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3R5cGU6ImNvbnN0cnVjdG9yIixzdGF0ZU11dGFiaWxpdHk6dGhpcy5zdGF0ZU11dGFiaWxpdHkhPT0ibm9ucGF5YWJsZSI/dGhpcy5zdGF0ZU11dGFiaWxpdHk6dW5kZWZpbmVkLHBheWFibGU6dGhpcy5wYXlhYmxlLGdhczp0aGlzLmdhcz90aGlzLmdhcy50b051bWJlcigpOnVuZGVmaW5lZCxpbnB1dHM6dGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gSlNPTi5wYXJzZShpbnB1dC5mb3JtYXQoZm9ybWF0KSl9KX0pfWlmKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaCl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBmb3JtYXQgYSBjb25zdHJ1Y3RvciBmb3Igc2lnaGFzaCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImZvcm1hdChzaWdoYXNoKSJ9KX12YXIgcmVzdWx0PSJjb25zdHJ1Y3RvcigiK3RoaXMuaW5wdXRzLm1hcChmdW5jdGlvbihpbnB1dCl7cmV0dXJuIGlucHV0LmZvcm1hdChmb3JtYXQpfSkuam9pbihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmZ1bGw/IiwgIjoiLCIpKyIpICI7aWYodGhpcy5zdGF0ZU11dGFiaWxpdHkmJnRoaXMuc3RhdGVNdXRhYmlsaXR5IT09Im5vbnBheWFibGUiKXtyZXN1bHQrPXRoaXMuc3RhdGVNdXRhYmlsaXR5KyIgIn1yZXR1cm4gcmVzdWx0LnRyaW0oKX07Q29uc3RydWN0b3JGcmFnbWVudC5mcm9tPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIENvbnN0cnVjdG9yRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZSl9cmV0dXJuIENvbnN0cnVjdG9yRnJhZ21lbnQuZnJvbU9iamVjdCh2YWx1ZSl9O0NvbnN0cnVjdG9yRnJhZ21lbnQuZnJvbU9iamVjdD1mdW5jdGlvbih2YWx1ZSl7aWYoQ29uc3RydWN0b3JGcmFnbWVudC5pc0NvbnN0cnVjdG9yRnJhZ21lbnQodmFsdWUpKXtyZXR1cm4gdmFsdWV9aWYodmFsdWUudHlwZSE9PSJjb25zdHJ1Y3RvciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgY29uc3RydWN0b3Igb2JqZWN0IiwidmFsdWUiLHZhbHVlKX12YXIgc3RhdGU9dmVyaWZ5U3RhdGUodmFsdWUpO2lmKHN0YXRlLmNvbnN0YW50KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY29uc3RhbnQiLCJ2YWx1ZSIsdmFsdWUpfXZhciBwYXJhbXM9e25hbWU6bnVsbCx0eXBlOnZhbHVlLnR5cGUsaW5wdXRzOnZhbHVlLmlucHV0cz92YWx1ZS5pbnB1dHMubWFwKFBhcmFtVHlwZS5mcm9tT2JqZWN0KTpbXSxwYXlhYmxlOnN0YXRlLnBheWFibGUsc3RhdGVNdXRhYmlsaXR5OnN0YXRlLnN0YXRlTXV0YWJpbGl0eSxnYXM6dmFsdWUuZ2FzP2xpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlLmdhcyk6bnVsbH07cmV0dXJuIG5ldyBDb25zdHJ1Y3RvckZyYWdtZW50KF9jb25zdHJ1Y3Rvckd1YXJkLHBhcmFtcyl9O0NvbnN0cnVjdG9yRnJhZ21lbnQuZnJvbVN0cmluZz1mdW5jdGlvbih2YWx1ZSl7dmFyIHBhcmFtcz17dHlwZToiY29uc3RydWN0b3IifTt2YWx1ZT1wYXJzZUdhcyh2YWx1ZSxwYXJhbXMpO3ZhciBwYXJlbnM9dmFsdWUubWF0Y2gocmVnZXhQYXJlbik7aWYoIXBhcmVuc3x8cGFyZW5zWzFdLnRyaW0oKSE9PSJjb25zdHJ1Y3RvciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgY29uc3RydWN0b3Igc3RyaW5nIiwidmFsdWUiLHZhbHVlKX1wYXJhbXMuaW5wdXRzPXBhcnNlUGFyYW1zKHBhcmVuc1syXS50cmltKCksZmFsc2UpO3BhcnNlTW9kaWZpZXJzKHBhcmVuc1szXS50cmltKCkscGFyYW1zKTtyZXR1cm4gQ29uc3RydWN0b3JGcmFnbWVudC5mcm9tT2JqZWN0KHBhcmFtcyl9O0NvbnN0cnVjdG9yRnJhZ21lbnQuaXNDb25zdHJ1Y3RvckZyYWdtZW50PWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWUmJnZhbHVlLl9pc0ZyYWdtZW50JiZ2YWx1ZS50eXBlPT09ImNvbnN0cnVjdG9yIn07cmV0dXJuIENvbnN0cnVjdG9yRnJhZ21lbnR9KEZyYWdtZW50KTtleHBvcnRzLkNvbnN0cnVjdG9yRnJhZ21lbnQ9Q29uc3RydWN0b3JGcmFnbWVudDt2YXIgRnVuY3Rpb25GcmFnbWVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhGdW5jdGlvbkZyYWdtZW50LF9zdXBlcik7ZnVuY3Rpb24gRnVuY3Rpb25GcmFnbWVudCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUZ1bmN0aW9uRnJhZ21lbnQucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihmb3JtYXQpe2lmKCFmb3JtYXQpe2Zvcm1hdD1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2h9aWYoIWV4cG9ydHMuRm9ybWF0VHlwZXNbZm9ybWF0XSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmb3JtYXQgdHlwZSIsImZvcm1hdCIsZm9ybWF0KX1pZihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmpzb24pe3JldHVybiBKU09OLnN0cmluZ2lmeSh7dHlwZToiZnVuY3Rpb24iLG5hbWU6dGhpcy5uYW1lLGNvbnN0YW50OnRoaXMuY29uc3RhbnQsc3RhdGVNdXRhYmlsaXR5OnRoaXMuc3RhdGVNdXRhYmlsaXR5IT09Im5vbnBheWFibGUiP3RoaXMuc3RhdGVNdXRhYmlsaXR5OnVuZGVmaW5lZCxwYXlhYmxlOnRoaXMucGF5YWJsZSxnYXM6dGhpcy5nYXM/dGhpcy5nYXMudG9OdW1iZXIoKTp1bmRlZmluZWQsaW5wdXRzOnRoaXMuaW5wdXRzLm1hcChmdW5jdGlvbihpbnB1dCl7cmV0dXJuIEpTT04ucGFyc2UoaW5wdXQuZm9ybWF0KGZvcm1hdCkpfSksb3V0cHV0czp0aGlzLm91dHB1dHMubWFwKGZ1bmN0aW9uKG91dHB1dCl7cmV0dXJuIEpTT04ucGFyc2Uob3V0cHV0LmZvcm1hdChmb3JtYXQpKX0pfSl9dmFyIHJlc3VsdD0iIjtpZihmb3JtYXQhPT1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2gpe3Jlc3VsdCs9ImZ1bmN0aW9uICJ9cmVzdWx0Kz10aGlzLm5hbWUrIigiK3RoaXMuaW5wdXRzLm1hcChmdW5jdGlvbihpbnB1dCl7cmV0dXJuIGlucHV0LmZvcm1hdChmb3JtYXQpfSkuam9pbihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmZ1bGw/IiwgIjoiLCIpKyIpICI7aWYoZm9ybWF0IT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNoKXtpZih0aGlzLnN0YXRlTXV0YWJpbGl0eSl7aWYodGhpcy5zdGF0ZU11dGFiaWxpdHkhPT0ibm9ucGF5YWJsZSIpe3Jlc3VsdCs9dGhpcy5zdGF0ZU11dGFiaWxpdHkrIiAifX1lbHNlIGlmKHRoaXMuY29uc3RhbnQpe3Jlc3VsdCs9InZpZXcgIn1pZih0aGlzLm91dHB1dHMmJnRoaXMub3V0cHV0cy5sZW5ndGgpe3Jlc3VsdCs9InJldHVybnMgKCIrdGhpcy5vdXRwdXRzLm1hcChmdW5jdGlvbihvdXRwdXQpe3JldHVybiBvdXRwdXQuZm9ybWF0KGZvcm1hdCl9KS5qb2luKCIsICIpKyIpICJ9aWYodGhpcy5nYXMhPW51bGwpe3Jlc3VsdCs9IkAiK3RoaXMuZ2FzLnRvU3RyaW5nKCkrIiAifX1yZXR1cm4gcmVzdWx0LnRyaW0oKX07RnVuY3Rpb25GcmFnbWVudC5mcm9tPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIEZ1bmN0aW9uRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZSl9cmV0dXJuIEZ1bmN0aW9uRnJhZ21lbnQuZnJvbU9iamVjdCh2YWx1ZSl9O0Z1bmN0aW9uRnJhZ21lbnQuZnJvbU9iamVjdD1mdW5jdGlvbih2YWx1ZSl7aWYoRnVuY3Rpb25GcmFnbWVudC5pc0Z1bmN0aW9uRnJhZ21lbnQodmFsdWUpKXtyZXR1cm4gdmFsdWV9aWYodmFsdWUudHlwZSE9PSJmdW5jdGlvbiIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZnVuY3Rpb24gb2JqZWN0IiwidmFsdWUiLHZhbHVlKX12YXIgc3RhdGU9dmVyaWZ5U3RhdGUodmFsdWUpO3ZhciBwYXJhbXM9e3R5cGU6dmFsdWUudHlwZSxuYW1lOnZlcmlmeUlkZW50aWZpZXIodmFsdWUubmFtZSksY29uc3RhbnQ6c3RhdGUuY29uc3RhbnQsaW5wdXRzOnZhbHVlLmlucHV0cz92YWx1ZS5pbnB1dHMubWFwKFBhcmFtVHlwZS5mcm9tT2JqZWN0KTpbXSxvdXRwdXRzOnZhbHVlLm91dHB1dHM/dmFsdWUub3V0cHV0cy5tYXAoUGFyYW1UeXBlLmZyb21PYmplY3QpOltdLHBheWFibGU6c3RhdGUucGF5YWJsZSxzdGF0ZU11dGFiaWxpdHk6c3RhdGUuc3RhdGVNdXRhYmlsaXR5LGdhczp2YWx1ZS5nYXM/bGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUuZ2FzKTpudWxsfTtyZXR1cm4gbmV3IEZ1bmN0aW9uRnJhZ21lbnQoX2NvbnN0cnVjdG9yR3VhcmQscGFyYW1zKX07RnVuY3Rpb25GcmFnbWVudC5mcm9tU3RyaW5nPWZ1bmN0aW9uKHZhbHVlKXt2YXIgcGFyYW1zPXt0eXBlOiJmdW5jdGlvbiJ9O3ZhbHVlPXBhcnNlR2FzKHZhbHVlLHBhcmFtcyk7dmFyIGNvbXBzPXZhbHVlLnNwbGl0KCIgcmV0dXJucyAiKTtpZihjb21wcy5sZW5ndGg+Mil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmdW5jdGlvbiBzdHJpbmciLCJ2YWx1ZSIsdmFsdWUpfXZhciBwYXJlbnM9Y29tcHNbMF0ubWF0Y2gocmVnZXhQYXJlbik7aWYoIXBhcmVucyl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmdW5jdGlvbiBzaWduYXR1cmUiLCJ2YWx1ZSIsdmFsdWUpfXBhcmFtcy5uYW1lPXBhcmVuc1sxXS50cmltKCk7aWYocGFyYW1zLm5hbWUpe3ZlcmlmeUlkZW50aWZpZXIocGFyYW1zLm5hbWUpfXBhcmFtcy5pbnB1dHM9cGFyc2VQYXJhbXMocGFyZW5zWzJdLGZhbHNlKTtwYXJzZU1vZGlmaWVycyhwYXJlbnNbM10udHJpbSgpLHBhcmFtcyk7aWYoY29tcHMubGVuZ3RoPjEpe3ZhciByZXR1cm5zPWNvbXBzWzFdLm1hdGNoKHJlZ2V4UGFyZW4pO2lmKHJldHVybnNbMV0udHJpbSgpIT0iInx8cmV0dXJuc1szXS50cmltKCkhPSIiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bmV4cGVjdGVkIHRva2VucyIsInZhbHVlIix2YWx1ZSl9cGFyYW1zLm91dHB1dHM9cGFyc2VQYXJhbXMocmV0dXJuc1syXSxmYWxzZSl9ZWxzZXtwYXJhbXMub3V0cHV0cz1bXX1yZXR1cm4gRnVuY3Rpb25GcmFnbWVudC5mcm9tT2JqZWN0KHBhcmFtcyl9O0Z1bmN0aW9uRnJhZ21lbnQuaXNGdW5jdGlvbkZyYWdtZW50PWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWUmJnZhbHVlLl9pc0ZyYWdtZW50JiZ2YWx1ZS50eXBlPT09ImZ1bmN0aW9uIn07cmV0dXJuIEZ1bmN0aW9uRnJhZ21lbnR9KENvbnN0cnVjdG9yRnJhZ21lbnQpO2V4cG9ydHMuRnVuY3Rpb25GcmFnbWVudD1GdW5jdGlvbkZyYWdtZW50O2Z1bmN0aW9uIGNoZWNrRm9yYmlkZGVuKGZyYWdtZW50KXt2YXIgc2lnPWZyYWdtZW50LmZvcm1hdCgpO2lmKHNpZz09PSJFcnJvcihzdHJpbmcpInx8c2lnPT09IlBhbmljKHVpbnQyNTYpIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiY2Fubm90IHNwZWNpZnkgdXNlciBkZWZpbmVkICIrc2lnKyIgZXJyb3IiLCJmcmFnbWVudCIsZnJhZ21lbnQpfXJldHVybiBmcmFnbWVudH12YXIgRXJyb3JGcmFnbWVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhFcnJvckZyYWdtZW50LF9zdXBlcik7ZnVuY3Rpb24gRXJyb3JGcmFnbWVudCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUVycm9yRnJhZ21lbnQucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihmb3JtYXQpe2lmKCFmb3JtYXQpe2Zvcm1hdD1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2h9aWYoIWV4cG9ydHMuRm9ybWF0VHlwZXNbZm9ybWF0XSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmb3JtYXQgdHlwZSIsImZvcm1hdCIsZm9ybWF0KX1pZihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmpzb24pe3JldHVybiBKU09OLnN0cmluZ2lmeSh7dHlwZToiZXJyb3IiLG5hbWU6dGhpcy5uYW1lLGlucHV0czp0aGlzLmlucHV0cy5tYXAoZnVuY3Rpb24oaW5wdXQpe3JldHVybiBKU09OLnBhcnNlKGlucHV0LmZvcm1hdChmb3JtYXQpKX0pfSl9dmFyIHJlc3VsdD0iIjtpZihmb3JtYXQhPT1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2gpe3Jlc3VsdCs9ImVycm9yICJ9cmVzdWx0Kz10aGlzLm5hbWUrIigiK3RoaXMuaW5wdXRzLm1hcChmdW5jdGlvbihpbnB1dCl7cmV0dXJuIGlucHV0LmZvcm1hdChmb3JtYXQpfSkuam9pbihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmZ1bGw/IiwgIjoiLCIpKyIpICI7cmV0dXJuIHJlc3VsdC50cmltKCl9O0Vycm9yRnJhZ21lbnQuZnJvbT1mdW5jdGlvbih2YWx1ZSl7aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3JldHVybiBFcnJvckZyYWdtZW50LmZyb21TdHJpbmcodmFsdWUpfXJldHVybiBFcnJvckZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpfTtFcnJvckZyYWdtZW50LmZyb21PYmplY3Q9ZnVuY3Rpb24odmFsdWUpe2lmKEVycm9yRnJhZ21lbnQuaXNFcnJvckZyYWdtZW50KHZhbHVlKSl7cmV0dXJuIHZhbHVlfWlmKHZhbHVlLnR5cGUhPT0iZXJyb3IiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGVycm9yIG9iamVjdCIsInZhbHVlIix2YWx1ZSl9dmFyIHBhcmFtcz17dHlwZTp2YWx1ZS50eXBlLG5hbWU6dmVyaWZ5SWRlbnRpZmllcih2YWx1ZS5uYW1lKSxpbnB1dHM6dmFsdWUuaW5wdXRzP3ZhbHVlLmlucHV0cy5tYXAoUGFyYW1UeXBlLmZyb21PYmplY3QpOltdfTtyZXR1cm4gY2hlY2tGb3JiaWRkZW4obmV3IEVycm9yRnJhZ21lbnQoX2NvbnN0cnVjdG9yR3VhcmQscGFyYW1zKSl9O0Vycm9yRnJhZ21lbnQuZnJvbVN0cmluZz1mdW5jdGlvbih2YWx1ZSl7dmFyIHBhcmFtcz17dHlwZToiZXJyb3IifTt2YXIgcGFyZW5zPXZhbHVlLm1hdGNoKHJlZ2V4UGFyZW4pO2lmKCFwYXJlbnMpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZXJyb3Igc2lnbmF0dXJlIiwidmFsdWUiLHZhbHVlKX1wYXJhbXMubmFtZT1wYXJlbnNbMV0udHJpbSgpO2lmKHBhcmFtcy5uYW1lKXt2ZXJpZnlJZGVudGlmaWVyKHBhcmFtcy5uYW1lKX1wYXJhbXMuaW5wdXRzPXBhcnNlUGFyYW1zKHBhcmVuc1syXSxmYWxzZSk7cmV0dXJuIGNoZWNrRm9yYmlkZGVuKEVycm9yRnJhZ21lbnQuZnJvbU9iamVjdChwYXJhbXMpKX07RXJyb3JGcmFnbWVudC5pc0Vycm9yRnJhZ21lbnQ9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZSYmdmFsdWUuX2lzRnJhZ21lbnQmJnZhbHVlLnR5cGU9PT0iZXJyb3IifTtyZXR1cm4gRXJyb3JGcmFnbWVudH0oRnJhZ21lbnQpO2V4cG9ydHMuRXJyb3JGcmFnbWVudD1FcnJvckZyYWdtZW50O2Z1bmN0aW9uIHZlcmlmeVR5cGUodHlwZSl7aWYodHlwZS5tYXRjaCgvXnVpbnQoJHxbXjEtOV0pLykpe3R5cGU9InVpbnQyNTYiK3R5cGUuc3Vic3RyaW5nKDQpfWVsc2UgaWYodHlwZS5tYXRjaCgvXmludCgkfFteMS05XSkvKSl7dHlwZT0iaW50MjU2Iit0eXBlLnN1YnN0cmluZygzKX1yZXR1cm4gdHlwZX12YXIgcmVnZXhJZGVudGlmaWVyPW5ldyBSZWdFeHAoIl5bQS1aYS16X11bQS1aYS16MC05X10qJCIpO2Z1bmN0aW9uIHZlcmlmeUlkZW50aWZpZXIodmFsdWUpe2lmKCF2YWx1ZXx8IXZhbHVlLm1hdGNoKHJlZ2V4SWRlbnRpZmllcikpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoJ2ludmFsaWQgaWRlbnRpZmllciAiJyt2YWx1ZSsnIicsInZhbHVlIix2YWx1ZSl9cmV0dXJuIHZhbHVlfXZhciByZWdleFBhcmVuPW5ldyBSZWdFeHAoIl4oW14pKF0qKVxcKCguKilcXCkoW14pKF0qKSQiKTtmdW5jdGlvbiBzcGxpdE5lc3RpbmcodmFsdWUpe3ZhbHVlPXZhbHVlLnRyaW0oKTt2YXIgcmVzdWx0PVtdO3ZhciBhY2N1bT0iIjt2YXIgZGVwdGg9MDtmb3IodmFyIG9mZnNldD0wO29mZnNldDx2YWx1ZS5sZW5ndGg7b2Zmc2V0Kyspe3ZhciBjPXZhbHVlW29mZnNldF07aWYoYz09PSIsIiYmZGVwdGg9PT0wKXtyZXN1bHQucHVzaChhY2N1bSk7YWNjdW09IiJ9ZWxzZXthY2N1bSs9YztpZihjPT09IigiKXtkZXB0aCsrfWVsc2UgaWYoYz09PSIpIil7ZGVwdGgtLTtpZihkZXB0aD09PS0xKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIiwidmFsdWUiLHZhbHVlKX19fX1pZihhY2N1bSl7cmVzdWx0LnB1c2goYWNjdW0pfXJldHVybiByZXN1bHR9fSk7dmFyIGZyYWdtZW50cyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGZyYWdtZW50cyk7dmFyIGFic3RyYWN0Q29kZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlJlYWRlcj1leHBvcnRzLldyaXRlcj1leHBvcnRzLkNvZGVyPWV4cG9ydHMuY2hlY2tSZXN1bHRFcnJvcnM9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kOC52ZXJzaW9uKTtmdW5jdGlvbiBjaGVja1Jlc3VsdEVycm9ycyhyZXN1bHQpe3ZhciBlcnJvcnM9W107dmFyIGNoZWNrRXJyb3JzPWZ1bmN0aW9uKHBhdGgsb2JqZWN0KXtpZighQXJyYXkuaXNBcnJheShvYmplY3QpKXtyZXR1cm59Zm9yKHZhciBrZXkgaW4gb2JqZWN0KXt2YXIgY2hpbGRQYXRoPXBhdGguc2xpY2UoKTtjaGlsZFBhdGgucHVzaChrZXkpO3RyeXtjaGVja0Vycm9ycyhjaGlsZFBhdGgsb2JqZWN0W2tleV0pfWNhdGNoKGVycm9yKXtlcnJvcnMucHVzaCh7cGF0aDpjaGlsZFBhdGgsZXJyb3I6ZXJyb3J9KX19fTtjaGVja0Vycm9ycyhbXSxyZXN1bHQpO3JldHVybiBlcnJvcnN9ZXhwb3J0cy5jaGVja1Jlc3VsdEVycm9ycz1jaGVja1Jlc3VsdEVycm9yczt2YXIgQ29kZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBDb2RlcihuYW1lLHR5cGUsbG9jYWxOYW1lLGR5bmFtaWMpe3RoaXMubmFtZT1uYW1lO3RoaXMudHlwZT10eXBlO3RoaXMubG9jYWxOYW1lPWxvY2FsTmFtZTt0aGlzLmR5bmFtaWM9ZHluYW1pY31Db2Rlci5wcm90b3R5cGUuX3Rocm93RXJyb3I9ZnVuY3Rpb24obWVzc2FnZSx2YWx1ZSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcihtZXNzYWdlLHRoaXMubG9jYWxOYW1lLHZhbHVlKX07cmV0dXJuIENvZGVyfSgpO2V4cG9ydHMuQ29kZXI9Q29kZXI7dmFyIFdyaXRlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIFdyaXRlcih3b3JkU2l6ZSl7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywid29yZFNpemUiLHdvcmRTaXplfHwzMik7dGhpcy5fZGF0YT1bXTt0aGlzLl9kYXRhTGVuZ3RoPTA7dGhpcy5fcGFkZGluZz1uZXcgVWludDhBcnJheSh3b3JkU2l6ZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRlci5wcm90b3R5cGUsImRhdGEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4Q29uY2F0KHRoaXMuX2RhdGEpfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRlci5wcm90b3R5cGUsImxlbmd0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhTGVuZ3RofSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7V3JpdGVyLnByb3RvdHlwZS5fd3JpdGVEYXRhPWZ1bmN0aW9uKGRhdGEpe3RoaXMuX2RhdGEucHVzaChkYXRhKTt0aGlzLl9kYXRhTGVuZ3RoKz1kYXRhLmxlbmd0aDtyZXR1cm4gZGF0YS5sZW5ndGh9O1dyaXRlci5wcm90b3R5cGUuYXBwZW5kV3JpdGVyPWZ1bmN0aW9uKHdyaXRlcil7cmV0dXJuIHRoaXMuX3dyaXRlRGF0YShsaWIkMS5jb25jYXQod3JpdGVyLl9kYXRhKSl9O1dyaXRlci5wcm90b3R5cGUud3JpdGVCeXRlcz1mdW5jdGlvbih2YWx1ZSl7dmFyIGJ5dGVzPWxpYiQxLmFycmF5aWZ5KHZhbHVlKTt2YXIgcGFkZGluZ09mZnNldD1ieXRlcy5sZW5ndGgldGhpcy53b3JkU2l6ZTtpZihwYWRkaW5nT2Zmc2V0KXtieXRlcz1saWIkMS5jb25jYXQoW2J5dGVzLHRoaXMuX3BhZGRpbmcuc2xpY2UocGFkZGluZ09mZnNldCldKX1yZXR1cm4gdGhpcy5fd3JpdGVEYXRhKGJ5dGVzKX07V3JpdGVyLnByb3RvdHlwZS5fZ2V0VmFsdWU9ZnVuY3Rpb24odmFsdWUpe3ZhciBieXRlcz1saWIkMS5hcnJheWlmeShsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkpO2lmKGJ5dGVzLmxlbmd0aD50aGlzLndvcmRTaXplKXtsb2dnZXIudGhyb3dFcnJvcigidmFsdWUgb3V0LW9mLWJvdW5kcyIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se2xlbmd0aDp0aGlzLndvcmRTaXplLG9mZnNldDpieXRlcy5sZW5ndGh9KX1pZihieXRlcy5sZW5ndGgldGhpcy53b3JkU2l6ZSl7Ynl0ZXM9bGliJDEuY29uY2F0KFt0aGlzLl9wYWRkaW5nLnNsaWNlKGJ5dGVzLmxlbmd0aCV0aGlzLndvcmRTaXplKSxieXRlc10pfXJldHVybiBieXRlc307V3JpdGVyLnByb3RvdHlwZS53cml0ZVZhbHVlPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdGhpcy5fd3JpdGVEYXRhKHRoaXMuX2dldFZhbHVlKHZhbHVlKSl9O1dyaXRlci5wcm90b3R5cGUud3JpdGVVcGRhdGFibGVWYWx1ZT1mdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO3ZhciBvZmZzZXQ9dGhpcy5fZGF0YS5sZW5ndGg7dGhpcy5fZGF0YS5wdXNoKHRoaXMuX3BhZGRpbmcpO3RoaXMuX2RhdGFMZW5ndGgrPXRoaXMud29yZFNpemU7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtfdGhpcy5fZGF0YVtvZmZzZXRdPV90aGlzLl9nZXRWYWx1ZSh2YWx1ZSl9fTtyZXR1cm4gV3JpdGVyfSgpO2V4cG9ydHMuV3JpdGVyPVdyaXRlcjt2YXIgUmVhZGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gUmVhZGVyKGRhdGEsd29yZFNpemUsY29lcmNlRnVuYyxhbGxvd0xvb3NlKXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJfZGF0YSIsbGliJDEuYXJyYXlpZnkoZGF0YSkpO2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsIndvcmRTaXplIix3b3JkU2l6ZXx8MzIpO2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsIl9jb2VyY2VGdW5jIixjb2VyY2VGdW5jKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJhbGxvd0xvb3NlIixhbGxvd0xvb3NlKTt0aGlzLl9vZmZzZXQ9MH1PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGVyLnByb3RvdHlwZSwiZGF0YSIse2dldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5oZXhsaWZ5KHRoaXMuX2RhdGEpfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRlci5wcm90b3R5cGUsImNvbnN1bWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29mZnNldH0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO1JlYWRlci5jb2VyY2U9ZnVuY3Rpb24obmFtZSx2YWx1ZSl7dmFyIG1hdGNoPW5hbWUubWF0Y2goIl51P2ludChbMC05XSspJCIpO2lmKG1hdGNoJiZwYXJzZUludChtYXRjaFsxXSk8PTQ4KXt2YWx1ZT12YWx1ZS50b051bWJlcigpfXJldHVybiB2YWx1ZX07UmVhZGVyLnByb3RvdHlwZS5jb2VyY2U9ZnVuY3Rpb24obmFtZSx2YWx1ZSl7aWYodGhpcy5fY29lcmNlRnVuYyl7cmV0dXJuIHRoaXMuX2NvZXJjZUZ1bmMobmFtZSx2YWx1ZSl9cmV0dXJuIFJlYWRlci5jb2VyY2UobmFtZSx2YWx1ZSl9O1JlYWRlci5wcm90b3R5cGUuX3BlZWtCeXRlcz1mdW5jdGlvbihvZmZzZXQsbGVuZ3RoLGxvb3NlKXt2YXIgYWxpZ25lZExlbmd0aD1NYXRoLmNlaWwobGVuZ3RoL3RoaXMud29yZFNpemUpKnRoaXMud29yZFNpemU7aWYodGhpcy5fb2Zmc2V0K2FsaWduZWRMZW5ndGg+dGhpcy5fZGF0YS5sZW5ndGgpe2lmKHRoaXMuYWxsb3dMb29zZSYmbG9vc2UmJnRoaXMuX29mZnNldCtsZW5ndGg8PXRoaXMuX2RhdGEubGVuZ3RoKXthbGlnbmVkTGVuZ3RoPWxlbmd0aH1lbHNle2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIG91dC1vZi1ib3VuZHMiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHtsZW5ndGg6dGhpcy5fZGF0YS5sZW5ndGgsb2Zmc2V0OnRoaXMuX29mZnNldCthbGlnbmVkTGVuZ3RofSl9fXJldHVybiB0aGlzLl9kYXRhLnNsaWNlKHRoaXMuX29mZnNldCx0aGlzLl9vZmZzZXQrYWxpZ25lZExlbmd0aCl9O1JlYWRlci5wcm90b3R5cGUuc3ViUmVhZGVyPWZ1bmN0aW9uKG9mZnNldCl7cmV0dXJuIG5ldyBSZWFkZXIodGhpcy5fZGF0YS5zbGljZSh0aGlzLl9vZmZzZXQrb2Zmc2V0KSx0aGlzLndvcmRTaXplLHRoaXMuX2NvZXJjZUZ1bmMsdGhpcy5hbGxvd0xvb3NlKX07UmVhZGVyLnByb3RvdHlwZS5yZWFkQnl0ZXM9ZnVuY3Rpb24obGVuZ3RoLGxvb3NlKXt2YXIgYnl0ZXM9dGhpcy5fcGVla0J5dGVzKDAsbGVuZ3RoLCEhbG9vc2UpO3RoaXMuX29mZnNldCs9Ynl0ZXMubGVuZ3RoO3JldHVybiBieXRlcy5zbGljZSgwLGxlbmd0aCl9O1JlYWRlci5wcm90b3R5cGUucmVhZFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQyLkJpZ051bWJlci5mcm9tKHRoaXMucmVhZEJ5dGVzKHRoaXMud29yZFNpemUpKX07cmV0dXJuIFJlYWRlcn0oKTtleHBvcnRzLlJlYWRlcj1SZWFkZXJ9KTt2YXIgYWJzdHJhY3RDb2RlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFic3RyYWN0Q29kZXIpO3ZhciBzaGEzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSl7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciByb290PXR5cGVvZiB3aW5kb3c9PT0ib2JqZWN0Ij93aW5kb3c6e307dmFyIE5PREVfSlM9IXJvb3QuSlNfU0hBM19OT19OT0RFX0pTJiZ0eXBlb2YgcHJvY2Vzcz09PSJvYmplY3QiJiZwcm9jZXNzLnZlcnNpb25zJiZwcm9jZXNzLnZlcnNpb25zLm5vZGU7aWYoTk9ERV9KUyl7cm9vdD1jb21tb25qc0dsb2JhbH12YXIgQ09NTU9OX0pTPSFyb290LkpTX1NIQTNfTk9fQ09NTU9OX0pTJiYib2JqZWN0Ij09PSJvYmplY3QiJiZtb2R1bGUuZXhwb3J0czt2YXIgSEVYX0NIQVJTPSIwMTIzNDU2Nzg5YWJjZGVmIi5zcGxpdCgiIik7dmFyIFNIQUtFX1BBRERJTkc9WzMxLDc5MzYsMjAzMTYxNiw1MjAwOTM2OTZdO3ZhciBLRUNDQUtfUEFERElORz1bMSwyNTYsNjU1MzYsMTY3NzcyMTZdO3ZhciBQQURESU5HPVs2LDE1MzYsMzkzMjE2LDEwMDY2MzI5Nl07dmFyIFNISUZUPVswLDgsMTYsMjRdO3ZhciBSQz1bMSwwLDMyODk4LDAsMzI5MDYsMjE0NzQ4MzY0OCwyMTQ3NTE2NDE2LDIxNDc0ODM2NDgsMzI5MDcsMCwyMTQ3NDgzNjQ5LDAsMjE0NzUxNjU0NSwyMTQ3NDgzNjQ4LDMyNzc3LDIxNDc0ODM2NDgsMTM4LDAsMTM2LDAsMjE0NzUxNjQyNSwwLDIxNDc0ODM2NTgsMCwyMTQ3NTE2NTU1LDAsMTM5LDIxNDc0ODM2NDgsMzI5MDUsMjE0NzQ4MzY0OCwzMjc3MSwyMTQ3NDgzNjQ4LDMyNzcwLDIxNDc0ODM2NDgsMTI4LDIxNDc0ODM2NDgsMzI3NzgsMCwyMTQ3NDgzNjU4LDIxNDc0ODM2NDgsMjE0NzUxNjU0NSwyMTQ3NDgzNjQ4LDMyODk2LDIxNDc0ODM2NDgsMjE0NzQ4MzY0OSwwLDIxNDc1MTY0MjQsMjE0NzQ4MzY0OF07dmFyIEJJVFM9WzIyNCwyNTYsMzg0LDUxMl07dmFyIFNIQUtFX0JJVFM9WzEyOCwyNTZdO3ZhciBPVVRQVVRfVFlQRVM9WyJoZXgiLCJidWZmZXIiLCJhcnJheUJ1ZmZlciIsImFycmF5Il07dmFyIGNyZWF0ZU91dHB1dE1ldGhvZD1mdW5jdGlvbihiaXRzLHBhZGRpbmcsb3V0cHV0VHlwZSl7cmV0dXJuIGZ1bmN0aW9uKG1lc3NhZ2Upe3JldHVybiBuZXcgS2VjY2FrKGJpdHMscGFkZGluZyxiaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKX19O3ZhciBjcmVhdGVTaGFrZU91dHB1dE1ldGhvZD1mdW5jdGlvbihiaXRzLHBhZGRpbmcsb3V0cHV0VHlwZSl7cmV0dXJuIGZ1bmN0aW9uKG1lc3NhZ2Usb3V0cHV0Qml0cyl7cmV0dXJuIG5ldyBLZWNjYWsoYml0cyxwYWRkaW5nLG91dHB1dEJpdHMpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpfX07dmFyIGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihiaXRzLHBhZGRpbmcpe3ZhciBtZXRob2Q9Y3JlYXRlT3V0cHV0TWV0aG9kKGJpdHMscGFkZGluZywiaGV4Iik7bWV0aG9kLmNyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgS2VjY2FrKGJpdHMscGFkZGluZyxiaXRzKX07bWV0aG9kLnVwZGF0ZT1mdW5jdGlvbihtZXNzYWdlKXtyZXR1cm4gbWV0aG9kLmNyZWF0ZSgpLnVwZGF0ZShtZXNzYWdlKX07Zm9yKHZhciBpPTA7aTxPVVRQVVRfVFlQRVMubGVuZ3RoOysraSl7dmFyIHR5cGU9T1VUUFVUX1RZUEVTW2ldO21ldGhvZFt0eXBlXT1jcmVhdGVPdXRwdXRNZXRob2QoYml0cyxwYWRkaW5nLHR5cGUpfXJldHVybiBtZXRob2R9O3ZhciBjcmVhdGVTaGFrZU1ldGhvZD1mdW5jdGlvbihiaXRzLHBhZGRpbmcpe3ZhciBtZXRob2Q9Y3JlYXRlU2hha2VPdXRwdXRNZXRob2QoYml0cyxwYWRkaW5nLCJoZXgiKTttZXRob2QuY3JlYXRlPWZ1bmN0aW9uKG91dHB1dEJpdHMpe3JldHVybiBuZXcgS2VjY2FrKGJpdHMscGFkZGluZyxvdXRwdXRCaXRzKX07bWV0aG9kLnVwZGF0ZT1mdW5jdGlvbihtZXNzYWdlLG91dHB1dEJpdHMpe3JldHVybiBtZXRob2QuY3JlYXRlKG91dHB1dEJpdHMpLnVwZGF0ZShtZXNzYWdlKX07Zm9yKHZhciBpPTA7aTxPVVRQVVRfVFlQRVMubGVuZ3RoOysraSl7dmFyIHR5cGU9T1VUUFVUX1RZUEVTW2ldO21ldGhvZFt0eXBlXT1jcmVhdGVTaGFrZU91dHB1dE1ldGhvZChiaXRzLHBhZGRpbmcsdHlwZSl9cmV0dXJuIG1ldGhvZH07dmFyIGFsZ29yaXRobXM9W3tuYW1lOiJrZWNjYWsiLHBhZGRpbmc6S0VDQ0FLX1BBRERJTkcsYml0czpCSVRTLGNyZWF0ZU1ldGhvZDpjcmVhdGVNZXRob2R9LHtuYW1lOiJzaGEzIixwYWRkaW5nOlBBRERJTkcsYml0czpCSVRTLGNyZWF0ZU1ldGhvZDpjcmVhdGVNZXRob2R9LHtuYW1lOiJzaGFrZSIscGFkZGluZzpTSEFLRV9QQURESU5HLGJpdHM6U0hBS0VfQklUUyxjcmVhdGVNZXRob2Q6Y3JlYXRlU2hha2VNZXRob2R9XTt2YXIgbWV0aG9kcz17fSxtZXRob2ROYW1lcz1bXTtmb3IodmFyIGk9MDtpPGFsZ29yaXRobXMubGVuZ3RoOysraSl7dmFyIGFsZ29yaXRobT1hbGdvcml0aG1zW2ldO3ZhciBiaXRzPWFsZ29yaXRobS5iaXRzO2Zvcih2YXIgaj0wO2o8Yml0cy5sZW5ndGg7KytqKXt2YXIgbWV0aG9kTmFtZT1hbGdvcml0aG0ubmFtZSsiXyIrYml0c1tqXTttZXRob2ROYW1lcy5wdXNoKG1ldGhvZE5hbWUpO21ldGhvZHNbbWV0aG9kTmFtZV09YWxnb3JpdGhtLmNyZWF0ZU1ldGhvZChiaXRzW2pdLGFsZ29yaXRobS5wYWRkaW5nKX19ZnVuY3Rpb24gS2VjY2FrKGJpdHMscGFkZGluZyxvdXRwdXRCaXRzKXt0aGlzLmJsb2Nrcz1bXTt0aGlzLnM9W107dGhpcy5wYWRkaW5nPXBhZGRpbmc7dGhpcy5vdXRwdXRCaXRzPW91dHB1dEJpdHM7dGhpcy5yZXNldD10cnVlO3RoaXMuYmxvY2s9MDt0aGlzLnN0YXJ0PTA7dGhpcy5ibG9ja0NvdW50PTE2MDAtKGJpdHM8PDEpPj41O3RoaXMuYnl0ZUNvdW50PXRoaXMuYmxvY2tDb3VudDw8Mjt0aGlzLm91dHB1dEJsb2Nrcz1vdXRwdXRCaXRzPj41O3RoaXMuZXh0cmFCeXRlcz0ob3V0cHV0Qml0cyYzMSk+PjM7Zm9yKHZhciBpPTA7aTw1MDsrK2kpe3RoaXMuc1tpXT0wfX1LZWNjYWsucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihtZXNzYWdlKXt2YXIgbm90U3RyaW5nPXR5cGVvZiBtZXNzYWdlIT09InN0cmluZyI7aWYobm90U3RyaW5nJiZtZXNzYWdlLmNvbnN0cnVjdG9yPT09QXJyYXlCdWZmZXIpe21lc3NhZ2U9bmV3IFVpbnQ4QXJyYXkobWVzc2FnZSl9dmFyIGxlbmd0aD1tZXNzYWdlLmxlbmd0aCxibG9ja3M9dGhpcy5ibG9ja3MsYnl0ZUNvdW50PXRoaXMuYnl0ZUNvdW50LGJsb2NrQ291bnQ9dGhpcy5ibG9ja0NvdW50LGluZGV4PTAscz10aGlzLnMsaSxjb2RlO3doaWxlKGluZGV4PGxlbmd0aCl7aWYodGhpcy5yZXNldCl7dGhpcy5yZXNldD1mYWxzZTtibG9ja3NbMF09dGhpcy5ibG9jaztmb3IoaT0xO2k8YmxvY2tDb3VudCsxOysraSl7YmxvY2tzW2ldPTB9fWlmKG5vdFN0cmluZyl7Zm9yKGk9dGhpcy5zdGFydDtpbmRleDxsZW5ndGgmJmk8Ynl0ZUNvdW50OysraW5kZXgpe2Jsb2Nrc1tpPj4yXXw9bWVzc2FnZVtpbmRleF08PFNISUZUW2krKyYzXX19ZWxzZXtmb3IoaT10aGlzLnN0YXJ0O2luZGV4PGxlbmd0aCYmaTxieXRlQ291bnQ7KytpbmRleCl7Y29kZT1tZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO2lmKGNvZGU8MTI4KXtibG9ja3NbaT4+Ml18PWNvZGU8PFNISUZUW2krKyYzXX1lbHNlIGlmKGNvZGU8MjA0OCl7YmxvY2tzW2k+PjJdfD0oMTkyfGNvZGU+PjYpPDxTSElGVFtpKysmM107YmxvY2tzW2k+PjJdfD0oMTI4fGNvZGUmNjMpPDxTSElGVFtpKysmM119ZWxzZSBpZihjb2RlPDU1Mjk2fHxjb2RlPj01NzM0NCl7YmxvY2tzW2k+PjJdfD0oMjI0fGNvZGU+PjEyKTw8U0hJRlRbaSsrJjNdO2Jsb2Nrc1tpPj4yXXw9KDEyOHxjb2RlPj42JjYzKTw8U0hJRlRbaSsrJjNdO2Jsb2Nrc1tpPj4yXXw9KDEyOHxjb2RlJjYzKTw8U0hJRlRbaSsrJjNdfWVsc2V7Y29kZT02NTUzNisoKGNvZGUmMTAyMyk8PDEwfG1lc3NhZ2UuY2hhckNvZGVBdCgrK2luZGV4KSYxMDIzKTtibG9ja3NbaT4+Ml18PSgyNDB8Y29kZT4+MTgpPDxTSElGVFtpKysmM107YmxvY2tzW2k+PjJdfD0oMTI4fGNvZGU+PjEyJjYzKTw8U0hJRlRbaSsrJjNdO2Jsb2Nrc1tpPj4yXXw9KDEyOHxjb2RlPj42JjYzKTw8U0hJRlRbaSsrJjNdO2Jsb2Nrc1tpPj4yXXw9KDEyOHxjb2RlJjYzKTw8U0hJRlRbaSsrJjNdfX19dGhpcy5sYXN0Qnl0ZUluZGV4PWk7aWYoaT49Ynl0ZUNvdW50KXt0aGlzLnN0YXJ0PWktYnl0ZUNvdW50O3RoaXMuYmxvY2s9YmxvY2tzW2Jsb2NrQ291bnRdO2ZvcihpPTA7aTxibG9ja0NvdW50OysraSl7c1tpXV49YmxvY2tzW2ldfWYocyk7dGhpcy5yZXNldD10cnVlfWVsc2V7dGhpcy5zdGFydD1pfX1yZXR1cm4gdGhpc307S2VjY2FrLnByb3RvdHlwZS5maW5hbGl6ZT1mdW5jdGlvbigpe3ZhciBibG9ja3M9dGhpcy5ibG9ja3MsaT10aGlzLmxhc3RCeXRlSW5kZXgsYmxvY2tDb3VudD10aGlzLmJsb2NrQ291bnQscz10aGlzLnM7YmxvY2tzW2k+PjJdfD10aGlzLnBhZGRpbmdbaSYzXTtpZih0aGlzLmxhc3RCeXRlSW5kZXg9PT10aGlzLmJ5dGVDb3VudCl7YmxvY2tzWzBdPWJsb2Nrc1tibG9ja0NvdW50XTtmb3IoaT0xO2k8YmxvY2tDb3VudCsxOysraSl7YmxvY2tzW2ldPTB9fWJsb2Nrc1tibG9ja0NvdW50LTFdfD0yMTQ3NDgzNjQ4O2ZvcihpPTA7aTxibG9ja0NvdW50OysraSl7c1tpXV49YmxvY2tzW2ldfWYocyl9O0tlY2Nhay5wcm90b3R5cGUudG9TdHJpbmc9S2VjY2FrLnByb3RvdHlwZS5oZXg9ZnVuY3Rpb24oKXt0aGlzLmZpbmFsaXplKCk7dmFyIGJsb2NrQ291bnQ9dGhpcy5ibG9ja0NvdW50LHM9dGhpcy5zLG91dHB1dEJsb2Nrcz10aGlzLm91dHB1dEJsb2NrcyxleHRyYUJ5dGVzPXRoaXMuZXh0cmFCeXRlcyxpPTAsaj0wO3ZhciBoZXg9IiIsYmxvY2s7d2hpbGUoajxvdXRwdXRCbG9ja3Mpe2ZvcihpPTA7aTxibG9ja0NvdW50JiZqPG91dHB1dEJsb2NrczsrK2ksKytqKXtibG9jaz1zW2ldO2hleCs9SEVYX0NIQVJTW2Jsb2NrPj40JjE1XStIRVhfQ0hBUlNbYmxvY2smMTVdK0hFWF9DSEFSU1tibG9jaz4+MTImMTVdK0hFWF9DSEFSU1tibG9jaz4+OCYxNV0rSEVYX0NIQVJTW2Jsb2NrPj4yMCYxNV0rSEVYX0NIQVJTW2Jsb2NrPj4xNiYxNV0rSEVYX0NIQVJTW2Jsb2NrPj4yOCYxNV0rSEVYX0NIQVJTW2Jsb2NrPj4yNCYxNV19aWYoaiVibG9ja0NvdW50PT09MCl7ZihzKTtpPTB9fWlmKGV4dHJhQnl0ZXMpe2Jsb2NrPXNbaV07aWYoZXh0cmFCeXRlcz4wKXtoZXgrPUhFWF9DSEFSU1tibG9jaz4+NCYxNV0rSEVYX0NIQVJTW2Jsb2NrJjE1XX1pZihleHRyYUJ5dGVzPjEpe2hleCs9SEVYX0NIQVJTW2Jsb2NrPj4xMiYxNV0rSEVYX0NIQVJTW2Jsb2NrPj44JjE1XX1pZihleHRyYUJ5dGVzPjIpe2hleCs9SEVYX0NIQVJTW2Jsb2NrPj4yMCYxNV0rSEVYX0NIQVJTW2Jsb2NrPj4xNiYxNV19fXJldHVybiBoZXh9O0tlY2Nhay5wcm90b3R5cGUuYXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXt0aGlzLmZpbmFsaXplKCk7dmFyIGJsb2NrQ291bnQ9dGhpcy5ibG9ja0NvdW50LHM9dGhpcy5zLG91dHB1dEJsb2Nrcz10aGlzLm91dHB1dEJsb2NrcyxleHRyYUJ5dGVzPXRoaXMuZXh0cmFCeXRlcyxpPTAsaj0wO3ZhciBieXRlcz10aGlzLm91dHB1dEJpdHM+PjM7dmFyIGJ1ZmZlcjtpZihleHRyYUJ5dGVzKXtidWZmZXI9bmV3IEFycmF5QnVmZmVyKG91dHB1dEJsb2NrcysxPDwyKX1lbHNle2J1ZmZlcj1uZXcgQXJyYXlCdWZmZXIoYnl0ZXMpfXZhciBhcnJheT1uZXcgVWludDMyQXJyYXkoYnVmZmVyKTt3aGlsZShqPG91dHB1dEJsb2Nrcyl7Zm9yKGk9MDtpPGJsb2NrQ291bnQmJmo8b3V0cHV0QmxvY2tzOysraSwrK2ope2FycmF5W2pdPXNbaV19aWYoaiVibG9ja0NvdW50PT09MCl7ZihzKX19aWYoZXh0cmFCeXRlcyl7YXJyYXlbaV09c1tpXTtidWZmZXI9YnVmZmVyLnNsaWNlKDAsYnl0ZXMpfXJldHVybiBidWZmZXJ9O0tlY2Nhay5wcm90b3R5cGUuYnVmZmVyPUtlY2Nhay5wcm90b3R5cGUuYXJyYXlCdWZmZXI7S2VjY2FrLnByb3RvdHlwZS5kaWdlc3Q9S2VjY2FrLnByb3RvdHlwZS5hcnJheT1mdW5jdGlvbigpe3RoaXMuZmluYWxpemUoKTt2YXIgYmxvY2tDb3VudD10aGlzLmJsb2NrQ291bnQscz10aGlzLnMsb3V0cHV0QmxvY2tzPXRoaXMub3V0cHV0QmxvY2tzLGV4dHJhQnl0ZXM9dGhpcy5leHRyYUJ5dGVzLGk9MCxqPTA7dmFyIGFycmF5PVtdLG9mZnNldCxibG9jazt3aGlsZShqPG91dHB1dEJsb2Nrcyl7Zm9yKGk9MDtpPGJsb2NrQ291bnQmJmo8b3V0cHV0QmxvY2tzOysraSwrK2ope29mZnNldD1qPDwyO2Jsb2NrPXNbaV07YXJyYXlbb2Zmc2V0XT1ibG9jayYyNTU7YXJyYXlbb2Zmc2V0KzFdPWJsb2NrPj44JjI1NTthcnJheVtvZmZzZXQrMl09YmxvY2s+PjE2JjI1NTthcnJheVtvZmZzZXQrM109YmxvY2s+PjI0JjI1NX1pZihqJWJsb2NrQ291bnQ9PT0wKXtmKHMpfX1pZihleHRyYUJ5dGVzKXtvZmZzZXQ9ajw8MjtibG9jaz1zW2ldO2lmKGV4dHJhQnl0ZXM+MCl7YXJyYXlbb2Zmc2V0XT1ibG9jayYyNTV9aWYoZXh0cmFCeXRlcz4xKXthcnJheVtvZmZzZXQrMV09YmxvY2s+PjgmMjU1fWlmKGV4dHJhQnl0ZXM+Mil7YXJyYXlbb2Zmc2V0KzJdPWJsb2NrPj4xNiYyNTV9fXJldHVybiBhcnJheX07dmFyIGY9ZnVuY3Rpb24ocyl7dmFyIGgsbCxuLGMwLGMxLGMyLGMzLGM0LGM1LGM2LGM3LGM4LGM5LGIwLGIxLGIyLGIzLGI0LGI1LGI2LGI3LGI4LGI5LGIxMCxiMTEsYjEyLGIxMyxiMTQsYjE1LGIxNixiMTcsYjE4LGIxOSxiMjAsYjIxLGIyMixiMjMsYjI0LGIyNSxiMjYsYjI3LGIyOCxiMjksYjMwLGIzMSxiMzIsYjMzLGIzNCxiMzUsYjM2LGIzNyxiMzgsYjM5LGI0MCxiNDEsYjQyLGI0MyxiNDQsYjQ1LGI0NixiNDcsYjQ4LGI0OTtmb3Iobj0wO248NDg7bis9Mil7YzA9c1swXV5zWzEwXV5zWzIwXV5zWzMwXV5zWzQwXTtjMT1zWzFdXnNbMTFdXnNbMjFdXnNbMzFdXnNbNDFdO2MyPXNbMl1ec1sxMl1ec1syMl1ec1szMl1ec1s0Ml07YzM9c1szXV5zWzEzXV5zWzIzXV5zWzMzXV5zWzQzXTtjND1zWzRdXnNbMTRdXnNbMjRdXnNbMzRdXnNbNDRdO2M1PXNbNV1ec1sxNV1ec1syNV1ec1szNV1ec1s0NV07YzY9c1s2XV5zWzE2XV5zWzI2XV5zWzM2XV5zWzQ2XTtjNz1zWzddXnNbMTddXnNbMjddXnNbMzddXnNbNDddO2M4PXNbOF1ec1sxOF1ec1syOF1ec1szOF1ec1s0OF07Yzk9c1s5XV5zWzE5XV5zWzI5XV5zWzM5XV5zWzQ5XTtoPWM4XihjMjw8MXxjMz4+PjMxKTtsPWM5XihjMzw8MXxjMj4+PjMxKTtzWzBdXj1oO3NbMV1ePWw7c1sxMF1ePWg7c1sxMV1ePWw7c1syMF1ePWg7c1syMV1ePWw7c1szMF1ePWg7c1szMV1ePWw7c1s0MF1ePWg7c1s0MV1ePWw7aD1jMF4oYzQ8PDF8YzU+Pj4zMSk7bD1jMV4oYzU8PDF8YzQ+Pj4zMSk7c1syXV49aDtzWzNdXj1sO3NbMTJdXj1oO3NbMTNdXj1sO3NbMjJdXj1oO3NbMjNdXj1sO3NbMzJdXj1oO3NbMzNdXj1sO3NbNDJdXj1oO3NbNDNdXj1sO2g9YzJeKGM2PDwxfGM3Pj4+MzEpO2w9YzNeKGM3PDwxfGM2Pj4+MzEpO3NbNF1ePWg7c1s1XV49bDtzWzE0XV49aDtzWzE1XV49bDtzWzI0XV49aDtzWzI1XV49bDtzWzM0XV49aDtzWzM1XV49bDtzWzQ0XV49aDtzWzQ1XV49bDtoPWM0XihjODw8MXxjOT4+PjMxKTtsPWM1XihjOTw8MXxjOD4+PjMxKTtzWzZdXj1oO3NbN11ePWw7c1sxNl1ePWg7c1sxN11ePWw7c1syNl1ePWg7c1syN11ePWw7c1szNl1ePWg7c1szN11ePWw7c1s0Nl1ePWg7c1s0N11ePWw7aD1jNl4oYzA8PDF8YzE+Pj4zMSk7bD1jN14oYzE8PDF8YzA+Pj4zMSk7c1s4XV49aDtzWzldXj1sO3NbMThdXj1oO3NbMTldXj1sO3NbMjhdXj1oO3NbMjldXj1sO3NbMzhdXj1oO3NbMzldXj1sO3NbNDhdXj1oO3NbNDldXj1sO2IwPXNbMF07YjE9c1sxXTtiMzI9c1sxMV08PDR8c1sxMF0+Pj4yODtiMzM9c1sxMF08PDR8c1sxMV0+Pj4yODtiMTQ9c1syMF08PDN8c1syMV0+Pj4yOTtiMTU9c1syMV08PDN8c1syMF0+Pj4yOTtiNDY9c1szMV08PDl8c1szMF0+Pj4yMztiNDc9c1szMF08PDl8c1szMV0+Pj4yMztiMjg9c1s0MF08PDE4fHNbNDFdPj4+MTQ7YjI5PXNbNDFdPDwxOHxzWzQwXT4+PjE0O2IyMD1zWzJdPDwxfHNbM10+Pj4zMTtiMjE9c1szXTw8MXxzWzJdPj4+MzE7YjI9c1sxM108PDEyfHNbMTJdPj4+MjA7YjM9c1sxMl08PDEyfHNbMTNdPj4+MjA7YjM0PXNbMjJdPDwxMHxzWzIzXT4+PjIyO2IzNT1zWzIzXTw8MTB8c1syMl0+Pj4yMjtiMTY9c1szM108PDEzfHNbMzJdPj4+MTk7YjE3PXNbMzJdPDwxM3xzWzMzXT4+PjE5O2I0OD1zWzQyXTw8MnxzWzQzXT4+PjMwO2I0OT1zWzQzXTw8MnxzWzQyXT4+PjMwO2I0MD1zWzVdPDwzMHxzWzRdPj4+MjtiNDE9c1s0XTw8MzB8c1s1XT4+PjI7YjIyPXNbMTRdPDw2fHNbMTVdPj4+MjY7YjIzPXNbMTVdPDw2fHNbMTRdPj4+MjY7YjQ9c1syNV08PDExfHNbMjRdPj4+MjE7YjU9c1syNF08PDExfHNbMjVdPj4+MjE7YjM2PXNbMzRdPDwxNXxzWzM1XT4+PjE3O2IzNz1zWzM1XTw8MTV8c1szNF0+Pj4xNztiMTg9c1s0NV08PDI5fHNbNDRdPj4+MztiMTk9c1s0NF08PDI5fHNbNDVdPj4+MztiMTA9c1s2XTw8Mjh8c1s3XT4+PjQ7YjExPXNbN108PDI4fHNbNl0+Pj40O2I0Mj1zWzE3XTw8MjN8c1sxNl0+Pj45O2I0Mz1zWzE2XTw8MjN8c1sxN10+Pj45O2IyND1zWzI2XTw8MjV8c1syN10+Pj43O2IyNT1zWzI3XTw8MjV8c1syNl0+Pj43O2I2PXNbMzZdPDwyMXxzWzM3XT4+PjExO2I3PXNbMzddPDwyMXxzWzM2XT4+PjExO2IzOD1zWzQ3XTw8MjR8c1s0Nl0+Pj44O2IzOT1zWzQ2XTw8MjR8c1s0N10+Pj44O2IzMD1zWzhdPDwyN3xzWzldPj4+NTtiMzE9c1s5XTw8Mjd8c1s4XT4+PjU7YjEyPXNbMThdPDwyMHxzWzE5XT4+PjEyO2IxMz1zWzE5XTw8MjB8c1sxOF0+Pj4xMjtiNDQ9c1syOV08PDd8c1syOF0+Pj4yNTtiNDU9c1syOF08PDd8c1syOV0+Pj4yNTtiMjY9c1szOF08PDh8c1szOV0+Pj4yNDtiMjc9c1szOV08PDh8c1szOF0+Pj4yNDtiOD1zWzQ4XTw8MTR8c1s0OV0+Pj4xODtiOT1zWzQ5XTw8MTR8c1s0OF0+Pj4xODtzWzBdPWIwXn5iMiZiNDtzWzFdPWIxXn5iMyZiNTtzWzEwXT1iMTBefmIxMiZiMTQ7c1sxMV09YjExXn5iMTMmYjE1O3NbMjBdPWIyMF5+YjIyJmIyNDtzWzIxXT1iMjFefmIyMyZiMjU7c1szMF09YjMwXn5iMzImYjM0O3NbMzFdPWIzMV5+YjMzJmIzNTtzWzQwXT1iNDBefmI0MiZiNDQ7c1s0MV09YjQxXn5iNDMmYjQ1O3NbMl09YjJefmI0JmI2O3NbM109YjNefmI1JmI3O3NbMTJdPWIxMl5+YjE0JmIxNjtzWzEzXT1iMTNefmIxNSZiMTc7c1syMl09YjIyXn5iMjQmYjI2O3NbMjNdPWIyM15+YjI1JmIyNztzWzMyXT1iMzJefmIzNCZiMzY7c1szM109YjMzXn5iMzUmYjM3O3NbNDJdPWI0Ml5+YjQ0JmI0NjtzWzQzXT1iNDNefmI0NSZiNDc7c1s0XT1iNF5+YjYmYjg7c1s1XT1iNV5+YjcmYjk7c1sxNF09YjE0Xn5iMTYmYjE4O3NbMTVdPWIxNV5+YjE3JmIxOTtzWzI0XT1iMjRefmIyNiZiMjg7c1syNV09YjI1Xn5iMjcmYjI5O3NbMzRdPWIzNF5+YjM2JmIzODtzWzM1XT1iMzVefmIzNyZiMzk7c1s0NF09YjQ0Xn5iNDYmYjQ4O3NbNDVdPWI0NV5+YjQ3JmI0OTtzWzZdPWI2Xn5iOCZiMDtzWzddPWI3Xn5iOSZiMTtzWzE2XT1iMTZefmIxOCZiMTA7c1sxN109YjE3Xn5iMTkmYjExO3NbMjZdPWIyNl5+YjI4JmIyMDtzWzI3XT1iMjdefmIyOSZiMjE7c1szNl09YjM2Xn5iMzgmYjMwO3NbMzddPWIzN15+YjM5JmIzMTtzWzQ2XT1iNDZefmI0OCZiNDA7c1s0N109YjQ3Xn5iNDkmYjQxO3NbOF09YjhefmIwJmIyO3NbOV09YjlefmIxJmIzO3NbMThdPWIxOF5+YjEwJmIxMjtzWzE5XT1iMTlefmIxMSZiMTM7c1syOF09YjI4Xn5iMjAmYjIyO3NbMjldPWIyOV5+YjIxJmIyMztzWzM4XT1iMzhefmIzMCZiMzI7c1szOV09YjM5Xn5iMzEmYjMzO3NbNDhdPWI0OF5+YjQwJmI0MjtzWzQ5XT1iNDlefmI0MSZiNDM7c1swXV49UkNbbl07c1sxXV49UkNbbisxXX19O2lmKENPTU1PTl9KUyl7bW9kdWxlLmV4cG9ydHM9bWV0aG9kc31lbHNle2Zvcih2YXIgaT0wO2k8bWV0aG9kTmFtZXMubGVuZ3RoOysraSl7cm9vdFttZXRob2ROYW1lc1tpXV09bWV0aG9kc1ttZXRob2ROYW1lc1tpXV19fX0pKCl9KTt2YXIgbGliJDQ9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19pbXBvcnREZWZhdWx0PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKG1vZCl7cmV0dXJuIG1vZCYmbW9kLl9fZXNNb2R1bGU/bW9kOntkZWZhdWx0Om1vZH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMua2VjY2FrMjU2PXZvaWQgMDt2YXIganNfc2hhM18xPV9faW1wb3J0RGVmYXVsdChzaGEzKTtmdW5jdGlvbiBrZWNjYWsyNTYoZGF0YSl7cmV0dXJuIjB4Iitqc19zaGEzXzEuZGVmYXVsdC5rZWNjYWtfMjU2KGxpYiQxLmFycmF5aWZ5KGRhdGEpKX1leHBvcnRzLmtlY2NhazI1Nj1rZWNjYWsyNTZ9KTt2YXIgaW5kZXgkND1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkNCk7dmFyIF92ZXJzaW9uJGE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0icmxwLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiRiPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJGEpO3ZhciBsaWIkNT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZGVjb2RlPWV4cG9ydHMuZW5jb2RlPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJGEudmVyc2lvbik7ZnVuY3Rpb24gYXJyYXlpZnlJbnRlZ2VyKHZhbHVlKXt2YXIgcmVzdWx0PVtdO3doaWxlKHZhbHVlKXtyZXN1bHQudW5zaGlmdCh2YWx1ZSYyNTUpO3ZhbHVlPj49OH1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHVuYXJyYXlpZnlJbnRlZ2VyKGRhdGEsb2Zmc2V0LGxlbmd0aCl7dmFyIHJlc3VsdD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7cmVzdWx0PXJlc3VsdCoyNTYrZGF0YVtvZmZzZXQraV19cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBfZW5jb2RlKG9iamVjdCl7aWYoQXJyYXkuaXNBcnJheShvYmplY3QpKXt2YXIgcGF5bG9hZF8xPVtdO29iamVjdC5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKXtwYXlsb2FkXzE9cGF5bG9hZF8xLmNvbmNhdChfZW5jb2RlKGNoaWxkKSl9KTtpZihwYXlsb2FkXzEubGVuZ3RoPD01NSl7cGF5bG9hZF8xLnVuc2hpZnQoMTkyK3BheWxvYWRfMS5sZW5ndGgpO3JldHVybiBwYXlsb2FkXzF9dmFyIGxlbmd0aF8xPWFycmF5aWZ5SW50ZWdlcihwYXlsb2FkXzEubGVuZ3RoKTtsZW5ndGhfMS51bnNoaWZ0KDI0NytsZW5ndGhfMS5sZW5ndGgpO3JldHVybiBsZW5ndGhfMS5jb25jYXQocGF5bG9hZF8xKX1pZighbGliJDEuaXNCeXRlc0xpa2Uob2JqZWN0KSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiUkxQIG9iamVjdCBtdXN0IGJlIEJ5dGVzTGlrZSIsIm9iamVjdCIsb2JqZWN0KX12YXIgZGF0YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChsaWIkMS5hcnJheWlmeShvYmplY3QpKTtpZihkYXRhLmxlbmd0aD09PTEmJmRhdGFbMF08PTEyNyl7cmV0dXJuIGRhdGF9ZWxzZSBpZihkYXRhLmxlbmd0aDw9NTUpe2RhdGEudW5zaGlmdCgxMjgrZGF0YS5sZW5ndGgpO3JldHVybiBkYXRhfXZhciBsZW5ndGg9YXJyYXlpZnlJbnRlZ2VyKGRhdGEubGVuZ3RoKTtsZW5ndGgudW5zaGlmdCgxODMrbGVuZ3RoLmxlbmd0aCk7cmV0dXJuIGxlbmd0aC5jb25jYXQoZGF0YSl9ZnVuY3Rpb24gZW5jb2RlKG9iamVjdCl7cmV0dXJuIGxpYiQxLmhleGxpZnkoX2VuY29kZShvYmplY3QpKX1leHBvcnRzLmVuY29kZT1lbmNvZGU7ZnVuY3Rpb24gX2RlY29kZUNoaWxkcmVuKGRhdGEsb2Zmc2V0LGNoaWxkT2Zmc2V0LGxlbmd0aCl7dmFyIHJlc3VsdD1bXTt3aGlsZShjaGlsZE9mZnNldDxvZmZzZXQrMStsZW5ndGgpe3ZhciBkZWNvZGVkPV9kZWNvZGUoZGF0YSxjaGlsZE9mZnNldCk7cmVzdWx0LnB1c2goZGVjb2RlZC5yZXN1bHQpO2NoaWxkT2Zmc2V0Kz1kZWNvZGVkLmNvbnN1bWVkO2lmKGNoaWxkT2Zmc2V0Pm9mZnNldCsxK2xlbmd0aCl7bG9nZ2VyLnRocm93RXJyb3IoImNoaWxkIGRhdGEgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9fXJldHVybntjb25zdW1lZDoxK2xlbmd0aCxyZXN1bHQ6cmVzdWx0fX1mdW5jdGlvbiBfZGVjb2RlKGRhdGEsb2Zmc2V0KXtpZihkYXRhLmxlbmd0aD09PTApe2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIHRvbyBzaG9ydCIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se30pfWlmKGRhdGFbb2Zmc2V0XT49MjQ4KXt2YXIgbGVuZ3RoTGVuZ3RoPWRhdGFbb2Zmc2V0XS0yNDc7aWYob2Zmc2V0KzErbGVuZ3RoTGVuZ3RoPmRhdGEubGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigiZGF0YSBzaG9ydCBzZWdtZW50IHRvbyBzaG9ydCIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se30pfXZhciBsZW5ndGhfMj11bmFycmF5aWZ5SW50ZWdlcihkYXRhLG9mZnNldCsxLGxlbmd0aExlbmd0aCk7aWYob2Zmc2V0KzErbGVuZ3RoTGVuZ3RoK2xlbmd0aF8yPmRhdGEubGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigiZGF0YSBsb25nIHNlZ21lbnQgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9cmV0dXJuIF9kZWNvZGVDaGlsZHJlbihkYXRhLG9mZnNldCxvZmZzZXQrMStsZW5ndGhMZW5ndGgsbGVuZ3RoTGVuZ3RoK2xlbmd0aF8yKX1lbHNlIGlmKGRhdGFbb2Zmc2V0XT49MTkyKXt2YXIgbGVuZ3RoXzM9ZGF0YVtvZmZzZXRdLTE5MjtpZihvZmZzZXQrMStsZW5ndGhfMz5kYXRhLmxlbmd0aCl7bG9nZ2VyLnRocm93RXJyb3IoImRhdGEgYXJyYXkgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9cmV0dXJuIF9kZWNvZGVDaGlsZHJlbihkYXRhLG9mZnNldCxvZmZzZXQrMSxsZW5ndGhfMyl9ZWxzZSBpZihkYXRhW29mZnNldF0+PTE4NCl7dmFyIGxlbmd0aExlbmd0aD1kYXRhW29mZnNldF0tMTgzO2lmKG9mZnNldCsxK2xlbmd0aExlbmd0aD5kYXRhLmxlbmd0aCl7bG9nZ2VyLnRocm93RXJyb3IoImRhdGEgYXJyYXkgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9dmFyIGxlbmd0aF80PXVuYXJyYXlpZnlJbnRlZ2VyKGRhdGEsb2Zmc2V0KzEsbGVuZ3RoTGVuZ3RoKTtpZihvZmZzZXQrMStsZW5ndGhMZW5ndGgrbGVuZ3RoXzQ+ZGF0YS5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIGFycmF5IHRvbyBzaG9ydCIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se30pfXZhciByZXN1bHQ9bGliJDEuaGV4bGlmeShkYXRhLnNsaWNlKG9mZnNldCsxK2xlbmd0aExlbmd0aCxvZmZzZXQrMStsZW5ndGhMZW5ndGgrbGVuZ3RoXzQpKTtyZXR1cm57Y29uc3VtZWQ6MStsZW5ndGhMZW5ndGgrbGVuZ3RoXzQscmVzdWx0OnJlc3VsdH19ZWxzZSBpZihkYXRhW29mZnNldF0+PTEyOCl7dmFyIGxlbmd0aF81PWRhdGFbb2Zmc2V0XS0xMjg7aWYob2Zmc2V0KzErbGVuZ3RoXzU+ZGF0YS5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIHRvbyBzaG9ydCIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se30pfXZhciByZXN1bHQ9bGliJDEuaGV4bGlmeShkYXRhLnNsaWNlKG9mZnNldCsxLG9mZnNldCsxK2xlbmd0aF81KSk7cmV0dXJue2NvbnN1bWVkOjErbGVuZ3RoXzUscmVzdWx0OnJlc3VsdH19cmV0dXJue2NvbnN1bWVkOjEscmVzdWx0OmxpYiQxLmhleGxpZnkoZGF0YVtvZmZzZXRdKX19ZnVuY3Rpb24gZGVjb2RlKGRhdGEpe3ZhciBieXRlcz1saWIkMS5hcnJheWlmeShkYXRhKTt2YXIgZGVjb2RlZD1fZGVjb2RlKGJ5dGVzLDApO2lmKGRlY29kZWQuY29uc3VtZWQhPT1ieXRlcy5sZW5ndGgpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgcmxwIGRhdGEiLCJkYXRhIixkYXRhKX1yZXR1cm4gZGVjb2RlZC5yZXN1bHR9ZXhwb3J0cy5kZWNvZGU9ZGVjb2RlfSk7dmFyIGluZGV4JDU9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDUpO3ZhciBfdmVyc2lvbiRjPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImFkZHJlc3MvNS4yLjAifSk7dmFyIF92ZXJzaW9uJGQ9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kYyk7dmFyIGxpYiQ2PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5nZXRDcmVhdGUyQWRkcmVzcz1leHBvcnRzLmdldENvbnRyYWN0QWRkcmVzcz1leHBvcnRzLmdldEljYXBBZGRyZXNzPWV4cG9ydHMuaXNBZGRyZXNzPWV4cG9ydHMuZ2V0QWRkcmVzcz12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRjLnZlcnNpb24pO2Z1bmN0aW9uIGdldENoZWNrc3VtQWRkcmVzcyhhZGRyZXNzKXtpZighbGliJDEuaXNIZXhTdHJpbmcoYWRkcmVzcywyMCkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYWRkcmVzcyIsImFkZHJlc3MiLGFkZHJlc3MpfWFkZHJlc3M9YWRkcmVzcy50b0xvd2VyQ2FzZSgpO3ZhciBjaGFycz1hZGRyZXNzLnN1YnN0cmluZygyKS5zcGxpdCgiIik7dmFyIGV4cGFuZGVkPW5ldyBVaW50OEFycmF5KDQwKTtmb3IodmFyIGk9MDtpPDQwO2krKyl7ZXhwYW5kZWRbaV09Y2hhcnNbaV0uY2hhckNvZGVBdCgwKX12YXIgaGFzaGVkPWxpYiQxLmFycmF5aWZ5KGxpYiQ0LmtlY2NhazI1NihleHBhbmRlZCkpO2Zvcih2YXIgaT0wO2k8NDA7aSs9Mil7aWYoaGFzaGVkW2k+PjFdPj40Pj04KXtjaGFyc1tpXT1jaGFyc1tpXS50b1VwcGVyQ2FzZSgpfWlmKChoYXNoZWRbaT4+MV0mMTUpPj04KXtjaGFyc1tpKzFdPWNoYXJzW2krMV0udG9VcHBlckNhc2UoKX19cmV0dXJuIjB4IitjaGFycy5qb2luKCIiKX12YXIgTUFYX1NBRkVfSU5URUdFUj05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIGxvZzEwKHgpe2lmKE1hdGgubG9nMTApe3JldHVybiBNYXRoLmxvZzEwKHgpfXJldHVybiBNYXRoLmxvZyh4KS9NYXRoLkxOMTB9dmFyIGliYW5Mb29rdXA9e307Zm9yKHZhciBpPTA7aTwxMDtpKyspe2liYW5Mb29rdXBbU3RyaW5nKGkpXT1TdHJpbmcoaSl9Zm9yKHZhciBpPTA7aTwyNjtpKyspe2liYW5Mb29rdXBbU3RyaW5nLmZyb21DaGFyQ29kZSg2NStpKV09U3RyaW5nKDEwK2kpfXZhciBzYWZlRGlnaXRzPU1hdGguZmxvb3IobG9nMTAoTUFYX1NBRkVfSU5URUdFUikpO2Z1bmN0aW9uIGliYW5DaGVja3N1bShhZGRyZXNzKXthZGRyZXNzPWFkZHJlc3MudG9VcHBlckNhc2UoKTthZGRyZXNzPWFkZHJlc3Muc3Vic3RyaW5nKDQpK2FkZHJlc3Muc3Vic3RyaW5nKDAsMikrIjAwIjt2YXIgZXhwYW5kZWQ9YWRkcmVzcy5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBpYmFuTG9va3VwW2NdfSkuam9pbigiIik7d2hpbGUoZXhwYW5kZWQubGVuZ3RoPj1zYWZlRGlnaXRzKXt2YXIgYmxvY2s9ZXhwYW5kZWQuc3Vic3RyaW5nKDAsc2FmZURpZ2l0cyk7ZXhwYW5kZWQ9cGFyc2VJbnQoYmxvY2ssMTApJTk3K2V4cGFuZGVkLnN1YnN0cmluZyhibG9jay5sZW5ndGgpfXZhciBjaGVja3N1bT1TdHJpbmcoOTgtcGFyc2VJbnQoZXhwYW5kZWQsMTApJTk3KTt3aGlsZShjaGVja3N1bS5sZW5ndGg8Mil7Y2hlY2tzdW09IjAiK2NoZWNrc3VtfXJldHVybiBjaGVja3N1bX1mdW5jdGlvbiBnZXRBZGRyZXNzKGFkZHJlc3Mpe3ZhciByZXN1bHQ9bnVsbDtpZih0eXBlb2YgYWRkcmVzcyE9PSJzdHJpbmciKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFkZHJlc3MiLCJhZGRyZXNzIixhZGRyZXNzKX1pZihhZGRyZXNzLm1hdGNoKC9eKDB4KT9bMC05YS1mQS1GXXs0MH0kLykpe2lmKGFkZHJlc3Muc3Vic3RyaW5nKDAsMikhPT0iMHgiKXthZGRyZXNzPSIweCIrYWRkcmVzc31yZXN1bHQ9Z2V0Q2hlY2tzdW1BZGRyZXNzKGFkZHJlc3MpO2lmKGFkZHJlc3MubWF0Y2goLyhbQS1GXS4qW2EtZl0pfChbYS1mXS4qW0EtRl0pLykmJnJlc3VsdCE9PWFkZHJlc3Mpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImJhZCBhZGRyZXNzIGNoZWNrc3VtIiwiYWRkcmVzcyIsYWRkcmVzcyl9fWVsc2UgaWYoYWRkcmVzcy5tYXRjaCgvXlhFWzAtOV17Mn1bMC05QS1aYS16XXszMCwzMX0kLykpe2lmKGFkZHJlc3Muc3Vic3RyaW5nKDIsNCkhPT1pYmFuQ2hlY2tzdW0oYWRkcmVzcykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImJhZCBpY2FwIGNoZWNrc3VtIiwiYWRkcmVzcyIsYWRkcmVzcyl9cmVzdWx0PWxpYiQyLl9iYXNlMzZUbzE2KGFkZHJlc3Muc3Vic3RyaW5nKDQpKTt3aGlsZShyZXN1bHQubGVuZ3RoPDQwKXtyZXN1bHQ9IjAiK3Jlc3VsdH1yZXN1bHQ9Z2V0Q2hlY2tzdW1BZGRyZXNzKCIweCIrcmVzdWx0KX1lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYWRkcmVzcyIsImFkZHJlc3MiLGFkZHJlc3MpfXJldHVybiByZXN1bHR9ZXhwb3J0cy5nZXRBZGRyZXNzPWdldEFkZHJlc3M7ZnVuY3Rpb24gaXNBZGRyZXNzKGFkZHJlc3Mpe3RyeXtnZXRBZGRyZXNzKGFkZHJlc3MpO3JldHVybiB0cnVlfWNhdGNoKGVycm9yKXt9cmV0dXJuIGZhbHNlfWV4cG9ydHMuaXNBZGRyZXNzPWlzQWRkcmVzcztmdW5jdGlvbiBnZXRJY2FwQWRkcmVzcyhhZGRyZXNzKXt2YXIgYmFzZTM2PWxpYiQyLl9iYXNlMTZUbzM2KGdldEFkZHJlc3MoYWRkcmVzcykuc3Vic3RyaW5nKDIpKS50b1VwcGVyQ2FzZSgpO3doaWxlKGJhc2UzNi5sZW5ndGg8MzApe2Jhc2UzNj0iMCIrYmFzZTM2fXJldHVybiJYRSIraWJhbkNoZWNrc3VtKCJYRTAwIitiYXNlMzYpK2Jhc2UzNn1leHBvcnRzLmdldEljYXBBZGRyZXNzPWdldEljYXBBZGRyZXNzO2Z1bmN0aW9uIGdldENvbnRyYWN0QWRkcmVzcyh0cmFuc2FjdGlvbil7dmFyIGZyb209bnVsbDt0cnl7ZnJvbT1nZXRBZGRyZXNzKHRyYW5zYWN0aW9uLmZyb20pfWNhdGNoKGVycm9yKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJtaXNzaW5nIGZyb20gYWRkcmVzcyIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9dmFyIG5vbmNlPWxpYiQxLnN0cmlwWmVyb3MobGliJDEuYXJyYXlpZnkobGliJDIuQmlnTnVtYmVyLmZyb20odHJhbnNhY3Rpb24ubm9uY2UpLnRvSGV4U3RyaW5nKCkpKTtyZXR1cm4gZ2V0QWRkcmVzcyhsaWIkMS5oZXhEYXRhU2xpY2UobGliJDQua2VjY2FrMjU2KGxpYiQ1LmVuY29kZShbZnJvbSxub25jZV0pKSwxMikpfWV4cG9ydHMuZ2V0Q29udHJhY3RBZGRyZXNzPWdldENvbnRyYWN0QWRkcmVzcztmdW5jdGlvbiBnZXRDcmVhdGUyQWRkcmVzcyhmcm9tLHNhbHQsaW5pdENvZGVIYXNoKXtpZihsaWIkMS5oZXhEYXRhTGVuZ3RoKHNhbHQpIT09MzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNhbHQgbXVzdCBiZSAzMiBieXRlcyIsInNhbHQiLHNhbHQpfWlmKGxpYiQxLmhleERhdGFMZW5ndGgoaW5pdENvZGVIYXNoKSE9PTMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbml0Q29kZUhhc2ggbXVzdCBiZSAzMiBieXRlcyIsImluaXRDb2RlSGFzaCIsaW5pdENvZGVIYXNoKX1yZXR1cm4gZ2V0QWRkcmVzcyhsaWIkMS5oZXhEYXRhU2xpY2UobGliJDQua2VjY2FrMjU2KGxpYiQxLmNvbmNhdChbIjB4ZmYiLGdldEFkZHJlc3MoZnJvbSksc2FsdCxpbml0Q29kZUhhc2hdKSksMTIpKX1leHBvcnRzLmdldENyZWF0ZTJBZGRyZXNzPWdldENyZWF0ZTJBZGRyZXNzfSk7dmFyIGluZGV4JDY9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDYpO3ZhciBhZGRyZXNzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQWRkcmVzc0NvZGVyPXZvaWQgMDt2YXIgQWRkcmVzc0NvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEFkZHJlc3NDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEFkZHJlc3NDb2Rlcihsb2NhbE5hbWUpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJhZGRyZXNzIiwiYWRkcmVzcyIsbG9jYWxOYW1lLGZhbHNlKXx8dGhpc31BZGRyZXNzQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifTtBZGRyZXNzQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3RyeXtsaWIkNi5nZXRBZGRyZXNzKHZhbHVlKX1jYXRjaChlcnJvcil7dGhpcy5fdGhyb3dFcnJvcihlcnJvci5tZXNzYWdlLHZhbHVlKX1yZXR1cm4gd3JpdGVyLndyaXRlVmFsdWUodmFsdWUpfTtBZGRyZXNzQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiBsaWIkNi5nZXRBZGRyZXNzKGxpYiQxLmhleFplcm9QYWQocmVhZGVyLnJlYWRWYWx1ZSgpLnRvSGV4U3RyaW5nKCksMjApKX07cmV0dXJuIEFkZHJlc3NDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5BZGRyZXNzQ29kZXI9QWRkcmVzc0NvZGVyfSk7dmFyIGFkZHJlc3MkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhhZGRyZXNzKTt2YXIgYW5vbnltb3VzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQW5vbnltb3VzQ29kZXI9dm9pZCAwO3ZhciBBbm9ueW1vdXNDb2Rlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhBbm9ueW1vdXNDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEFub255bW91c0NvZGVyKGNvZGVyKXt2YXIgX3RoaXM9X3N1cGVyLmNhbGwodGhpcyxjb2Rlci5uYW1lLGNvZGVyLnR5cGUsdW5kZWZpbmVkLGNvZGVyLmR5bmFtaWMpfHx0aGlzO190aGlzLmNvZGVyPWNvZGVyO3JldHVybiBfdGhpc31Bbm9ueW1vdXNDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29kZXIuZGVmYXVsdFZhbHVlKCl9O0Fub255bW91c0NvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24od3JpdGVyLHZhbHVlKXtyZXR1cm4gdGhpcy5jb2Rlci5lbmNvZGUod3JpdGVyLHZhbHVlKX07QW5vbnltb3VzQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiB0aGlzLmNvZGVyLmRlY29kZShyZWFkZXIpfTtyZXR1cm4gQW5vbnltb3VzQ29kZXJ9KGFic3RyYWN0Q29kZXIuQ29kZXIpO2V4cG9ydHMuQW5vbnltb3VzQ29kZXI9QW5vbnltb3VzQ29kZXJ9KTt2YXIgYW5vbnltb3VzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYW5vbnltb3VzKTt2YXIgYXJyYXk9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5BcnJheUNvZGVyPWV4cG9ydHMudW5wYWNrPWV4cG9ydHMucGFjaz12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiQ4LnZlcnNpb24pO2Z1bmN0aW9uIHBhY2sod3JpdGVyLGNvZGVycyx2YWx1ZXMpe3ZhciBhcnJheVZhbHVlcz1udWxsO2lmKEFycmF5LmlzQXJyYXkodmFsdWVzKSl7YXJyYXlWYWx1ZXM9dmFsdWVzfWVsc2UgaWYodmFsdWVzJiZ0eXBlb2YgdmFsdWVzPT09Im9iamVjdCIpe3ZhciB1bmlxdWVfMT17fTthcnJheVZhbHVlcz1jb2RlcnMubWFwKGZ1bmN0aW9uKGNvZGVyKXt2YXIgbmFtZT1jb2Rlci5sb2NhbE5hbWU7aWYoIW5hbWUpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgZW5jb2RlIG9iamVjdCBmb3Igc2lnbmF0dXJlIHdpdGggbWlzc2luZyBuYW1lcyIsbGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7YXJndW1lbnQ6InZhbHVlcyIsY29kZXI6Y29kZXIsdmFsdWU6dmFsdWVzfSl9aWYodW5pcXVlXzFbbmFtZV0pe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgZW5jb2RlIG9iamVjdCBmb3Igc2lnbmF0dXJlIHdpdGggZHVwbGljYXRlIG5hbWVzIixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoidmFsdWVzIixjb2Rlcjpjb2Rlcix2YWx1ZTp2YWx1ZXN9KX11bmlxdWVfMVtuYW1lXT10cnVlO3JldHVybiB2YWx1ZXNbbmFtZV19KX1lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHVwbGUgdmFsdWUiLCJ0dXBsZSIsdmFsdWVzKX1pZihjb2RlcnMubGVuZ3RoIT09YXJyYXlWYWx1ZXMubGVuZ3RoKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ0eXBlcy92YWx1ZSBsZW5ndGggbWlzbWF0Y2giLCJ0dXBsZSIsdmFsdWVzKX12YXIgc3RhdGljV3JpdGVyPW5ldyBhYnN0cmFjdENvZGVyLldyaXRlcih3cml0ZXIud29yZFNpemUpO3ZhciBkeW5hbWljV3JpdGVyPW5ldyBhYnN0cmFjdENvZGVyLldyaXRlcih3cml0ZXIud29yZFNpemUpO3ZhciB1cGRhdGVGdW5jcz1bXTtjb2RlcnMuZm9yRWFjaChmdW5jdGlvbihjb2RlcixpbmRleCl7dmFyIHZhbHVlPWFycmF5VmFsdWVzW2luZGV4XTtpZihjb2Rlci5keW5hbWljKXt2YXIgZHluYW1pY09mZnNldF8xPWR5bmFtaWNXcml0ZXIubGVuZ3RoO2NvZGVyLmVuY29kZShkeW5hbWljV3JpdGVyLHZhbHVlKTt2YXIgdXBkYXRlRnVuY18xPXN0YXRpY1dyaXRlci53cml0ZVVwZGF0YWJsZVZhbHVlKCk7dXBkYXRlRnVuY3MucHVzaChmdW5jdGlvbihiYXNlT2Zmc2V0KXt1cGRhdGVGdW5jXzEoYmFzZU9mZnNldCtkeW5hbWljT2Zmc2V0XzEpfSl9ZWxzZXtjb2Rlci5lbmNvZGUoc3RhdGljV3JpdGVyLHZhbHVlKX19KTt1cGRhdGVGdW5jcy5mb3JFYWNoKGZ1bmN0aW9uKGZ1bmMpe2Z1bmMoc3RhdGljV3JpdGVyLmxlbmd0aCl9KTt2YXIgbGVuZ3RoPXdyaXRlci5hcHBlbmRXcml0ZXIoc3RhdGljV3JpdGVyKTtsZW5ndGgrPXdyaXRlci5hcHBlbmRXcml0ZXIoZHluYW1pY1dyaXRlcik7cmV0dXJuIGxlbmd0aH1leHBvcnRzLnBhY2s9cGFjaztmdW5jdGlvbiB1bnBhY2socmVhZGVyLGNvZGVycyl7dmFyIHZhbHVlcz1bXTt2YXIgYmFzZVJlYWRlcj1yZWFkZXIuc3ViUmVhZGVyKDApO2NvZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGNvZGVyKXt2YXIgdmFsdWU9bnVsbDtpZihjb2Rlci5keW5hbWljKXt2YXIgb2Zmc2V0PXJlYWRlci5yZWFkVmFsdWUoKTt2YXIgb2Zmc2V0UmVhZGVyPWJhc2VSZWFkZXIuc3ViUmVhZGVyKG9mZnNldC50b051bWJlcigpKTt0cnl7dmFsdWU9Y29kZXIuZGVjb2RlKG9mZnNldFJlYWRlcil9Y2F0Y2goZXJyb3Ipe2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTil7dGhyb3cgZXJyb3J9dmFsdWU9ZXJyb3I7dmFsdWUuYmFzZVR5cGU9Y29kZXIubmFtZTt2YWx1ZS5uYW1lPWNvZGVyLmxvY2FsTmFtZTt2YWx1ZS50eXBlPWNvZGVyLnR5cGV9fWVsc2V7dHJ5e3ZhbHVlPWNvZGVyLmRlY29kZShyZWFkZXIpfWNhdGNoKGVycm9yKXtpZihlcnJvci5jb2RlPT09bGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4pe3Rocm93IGVycm9yfXZhbHVlPWVycm9yO3ZhbHVlLmJhc2VUeXBlPWNvZGVyLm5hbWU7dmFsdWUubmFtZT1jb2Rlci5sb2NhbE5hbWU7dmFsdWUudHlwZT1jb2Rlci50eXBlfX1pZih2YWx1ZSE9dW5kZWZpbmVkKXt2YWx1ZXMucHVzaCh2YWx1ZSl9fSk7dmFyIHVuaXF1ZU5hbWVzPWNvZGVycy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sY29kZXIpe3ZhciBuYW1lPWNvZGVyLmxvY2FsTmFtZTtpZihuYW1lKXtpZighYWNjdW1bbmFtZV0pe2FjY3VtW25hbWVdPTB9YWNjdW1bbmFtZV0rK31yZXR1cm4gYWNjdW19LHt9KTtjb2RlcnMuZm9yRWFjaChmdW5jdGlvbihjb2RlcixpbmRleCl7dmFyIG5hbWU9Y29kZXIubG9jYWxOYW1lO2lmKCFuYW1lfHx1bmlxdWVOYW1lc1tuYW1lXSE9PTEpe3JldHVybn1pZihuYW1lPT09Imxlbmd0aCIpe25hbWU9Il9sZW5ndGgifWlmKHZhbHVlc1tuYW1lXSE9bnVsbCl7cmV0dXJufXZhciB2YWx1ZT12YWx1ZXNbaW5kZXhdO2lmKHZhbHVlIGluc3RhbmNlb2YgRXJyb3Ipe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWx1ZXMsbmFtZSx7Z2V0OmZ1bmN0aW9uKCl7dGhyb3cgdmFsdWV9fSl9ZWxzZXt2YWx1ZXNbbmFtZV09dmFsdWV9fSk7dmFyIF9sb29wXzE9ZnVuY3Rpb24oaSl7dmFyIHZhbHVlPXZhbHVlc1tpXTtpZih2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWVzLGkse2dldDpmdW5jdGlvbigpe3Rocm93IHZhbHVlfX0pfX07Zm9yKHZhciBpPTA7aTx2YWx1ZXMubGVuZ3RoO2krKyl7X2xvb3BfMShpKX1yZXR1cm4gT2JqZWN0LmZyZWV6ZSh2YWx1ZXMpfWV4cG9ydHMudW5wYWNrPXVucGFjazt2YXIgQXJyYXlDb2Rlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhBcnJheUNvZGVyLF9zdXBlcik7ZnVuY3Rpb24gQXJyYXlDb2Rlcihjb2RlcixsZW5ndGgsbG9jYWxOYW1lKXt2YXIgX3RoaXM9dGhpczt2YXIgdHlwZT1jb2Rlci50eXBlKyJbIisobGVuZ3RoPj0wP2xlbmd0aDoiIikrIl0iO3ZhciBkeW5hbWljPWxlbmd0aD09PS0xfHxjb2Rlci5keW5hbWljO190aGlzPV9zdXBlci5jYWxsKHRoaXMsImFycmF5Iix0eXBlLGxvY2FsTmFtZSxkeW5hbWljKXx8dGhpcztfdGhpcy5jb2Rlcj1jb2RlcjtfdGhpcy5sZW5ndGg9bGVuZ3RoO3JldHVybiBfdGhpc31BcnJheUNvZGVyLnByb3RvdHlwZS5kZWZhdWx0VmFsdWU9ZnVuY3Rpb24oKXt2YXIgZGVmYXVsdENoaWxkPXRoaXMuY29kZXIuZGVmYXVsdFZhbHVlKCk7dmFyIHJlc3VsdD1bXTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7cmVzdWx0LnB1c2goZGVmYXVsdENoaWxkKX1yZXR1cm4gcmVzdWx0fTtBcnJheUNvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24od3JpdGVyLHZhbHVlKXtpZighQXJyYXkuaXNBcnJheSh2YWx1ZSkpe3RoaXMuX3Rocm93RXJyb3IoImV4cGVjdGVkIGFycmF5IHZhbHVlIix2YWx1ZSl9dmFyIGNvdW50PXRoaXMubGVuZ3RoO2lmKGNvdW50PT09LTEpe2NvdW50PXZhbHVlLmxlbmd0aDt3cml0ZXIud3JpdGVWYWx1ZSh2YWx1ZS5sZW5ndGgpfWxvZ2dlci5jaGVja0FyZ3VtZW50Q291bnQodmFsdWUubGVuZ3RoLGNvdW50LCJjb2RlciBhcnJheSIrKHRoaXMubG9jYWxOYW1lPyIgIit0aGlzLmxvY2FsTmFtZToiIikpO3ZhciBjb2RlcnM9W107Zm9yKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKXtjb2RlcnMucHVzaCh0aGlzLmNvZGVyKX1yZXR1cm4gcGFjayh3cml0ZXIsY29kZXJzLHZhbHVlKX07QXJyYXlDb2Rlci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHJlYWRlcil7dmFyIGNvdW50PXRoaXMubGVuZ3RoO2lmKGNvdW50PT09LTEpe2NvdW50PXJlYWRlci5yZWFkVmFsdWUoKS50b051bWJlcigpO2lmKGNvdW50KjMyPnJlYWRlci5fZGF0YS5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJpbnN1ZmZpY2llbnQgZGF0YSBsZW5ndGgiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHtsZW5ndGg6cmVhZGVyLl9kYXRhLmxlbmd0aCxjb3VudDpjb3VudH0pfX12YXIgY29kZXJzPVtdO2Zvcih2YXIgaT0wO2k8Y291bnQ7aSsrKXtjb2RlcnMucHVzaChuZXcgYW5vbnltb3VzLkFub255bW91c0NvZGVyKHRoaXMuY29kZXIpKX1yZXR1cm4gcmVhZGVyLmNvZXJjZSh0aGlzLm5hbWUsdW5wYWNrKHJlYWRlcixjb2RlcnMpKX07cmV0dXJuIEFycmF5Q29kZXJ9KGFic3RyYWN0Q29kZXIuQ29kZXIpO2V4cG9ydHMuQXJyYXlDb2Rlcj1BcnJheUNvZGVyfSk7dmFyIGFycmF5JDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYXJyYXkpO3ZhciBib29sZWFuXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5Cb29sZWFuQ29kZXI9dm9pZCAwO3ZhciBCb29sZWFuQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoQm9vbGVhbkNvZGVyLF9zdXBlcik7ZnVuY3Rpb24gQm9vbGVhbkNvZGVyKGxvY2FsTmFtZSl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImJvb2wiLCJib29sIixsb2NhbE5hbWUsZmFsc2UpfHx0aGlzfUJvb2xlYW5Db2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfTtCb29sZWFuQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3JldHVybiB3cml0ZXIud3JpdGVWYWx1ZSh2YWx1ZT8xOjApfTtCb29sZWFuQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiByZWFkZXIuY29lcmNlKHRoaXMudHlwZSwhcmVhZGVyLnJlYWRWYWx1ZSgpLmlzWmVybygpKX07cmV0dXJuIEJvb2xlYW5Db2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5Cb29sZWFuQ29kZXI9Qm9vbGVhbkNvZGVyfSk7dmFyIGJvb2xlYW49Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYm9vbGVhbl8xKTt2YXIgYnl0ZXM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5CeXRlc0NvZGVyPWV4cG9ydHMuRHluYW1pY0J5dGVzQ29kZXI9dm9pZCAwO3ZhciBEeW5hbWljQnl0ZXNDb2Rlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhEeW5hbWljQnl0ZXNDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIER5bmFtaWNCeXRlc0NvZGVyKHR5cGUsbG9jYWxOYW1lKXtyZXR1cm4gX3N1cGVyLmNhbGwodGhpcyx0eXBlLHR5cGUsbG9jYWxOYW1lLHRydWUpfHx0aGlzfUR5bmFtaWNCeXRlc0NvZGVyLnByb3RvdHlwZS5kZWZhdWx0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4iMHgifTtEeW5hbWljQnl0ZXNDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7dmFsdWU9bGliJDEuYXJyYXlpZnkodmFsdWUpO3ZhciBsZW5ndGg9d3JpdGVyLndyaXRlVmFsdWUodmFsdWUubGVuZ3RoKTtsZW5ndGgrPXdyaXRlci53cml0ZUJ5dGVzKHZhbHVlKTtyZXR1cm4gbGVuZ3RofTtEeW5hbWljQnl0ZXNDb2Rlci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHJlYWRlcil7cmV0dXJuIHJlYWRlci5yZWFkQnl0ZXMocmVhZGVyLnJlYWRWYWx1ZSgpLnRvTnVtYmVyKCksdHJ1ZSl9O3JldHVybiBEeW5hbWljQnl0ZXNDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5EeW5hbWljQnl0ZXNDb2Rlcj1EeW5hbWljQnl0ZXNDb2Rlcjt2YXIgQnl0ZXNDb2Rlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhCeXRlc0NvZGVyLF9zdXBlcik7ZnVuY3Rpb24gQnl0ZXNDb2Rlcihsb2NhbE5hbWUpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJieXRlcyIsbG9jYWxOYW1lKXx8dGhpc31CeXRlc0NvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24ocmVhZGVyKXtyZXR1cm4gcmVhZGVyLmNvZXJjZSh0aGlzLm5hbWUsbGliJDEuaGV4bGlmeShfc3VwZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMscmVhZGVyKSkpfTtyZXR1cm4gQnl0ZXNDb2Rlcn0oRHluYW1pY0J5dGVzQ29kZXIpO2V4cG9ydHMuQnl0ZXNDb2Rlcj1CeXRlc0NvZGVyfSk7dmFyIGJ5dGVzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnl0ZXMpO3ZhciBmaXhlZEJ5dGVzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRml4ZWRCeXRlc0NvZGVyPXZvaWQgMDt2YXIgRml4ZWRCeXRlc0NvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZpeGVkQnl0ZXNDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEZpeGVkQnl0ZXNDb2RlcihzaXplLGxvY2FsTmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIG5hbWU9ImJ5dGVzIitTdHJpbmcoc2l6ZSk7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxuYW1lLG5hbWUsbG9jYWxOYW1lLGZhbHNlKXx8dGhpcztfdGhpcy5zaXplPXNpemU7cmV0dXJuIF90aGlzfUZpeGVkQnl0ZXNDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIuc3Vic3RyaW5nKDAsMit0aGlzLnNpemUqMil9O0ZpeGVkQnl0ZXNDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7dmFyIGRhdGE9bGliJDEuYXJyYXlpZnkodmFsdWUpO2lmKGRhdGEubGVuZ3RoIT09dGhpcy5zaXplKXt0aGlzLl90aHJvd0Vycm9yKCJpbmNvcnJlY3QgZGF0YSBsZW5ndGgiLHZhbHVlKX1yZXR1cm4gd3JpdGVyLndyaXRlQnl0ZXMoZGF0YSl9O0ZpeGVkQnl0ZXNDb2Rlci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHJlYWRlcil7cmV0dXJuIHJlYWRlci5jb2VyY2UodGhpcy5uYW1lLGxpYiQxLmhleGxpZnkocmVhZGVyLnJlYWRCeXRlcyh0aGlzLnNpemUpKSl9O3JldHVybiBGaXhlZEJ5dGVzQ29kZXJ9KGFic3RyYWN0Q29kZXIuQ29kZXIpO2V4cG9ydHMuRml4ZWRCeXRlc0NvZGVyPUZpeGVkQnl0ZXNDb2Rlcn0pO3ZhciBmaXhlZEJ5dGVzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZml4ZWRCeXRlcyk7dmFyIF9udWxsPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuTnVsbENvZGVyPXZvaWQgMDt2YXIgTnVsbENvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKE51bGxDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIE51bGxDb2Rlcihsb2NhbE5hbWUpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJudWxsIiwiIixsb2NhbE5hbWUsZmFsc2UpfHx0aGlzfU51bGxDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O051bGxDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7aWYodmFsdWUhPW51bGwpe3RoaXMuX3Rocm93RXJyb3IoIm5vdCBudWxsIix2YWx1ZSl9cmV0dXJuIHdyaXRlci53cml0ZUJ5dGVzKFtdKX07TnVsbENvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24ocmVhZGVyKXtyZWFkZXIucmVhZEJ5dGVzKDApO3JldHVybiByZWFkZXIuY29lcmNlKHRoaXMubmFtZSxudWxsKX07cmV0dXJuIE51bGxDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5OdWxsQ29kZXI9TnVsbENvZGVyfSk7dmFyIF9udWxsJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX251bGwpO3ZhciBhZGRyZXNzZXM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkFkZHJlc3NaZXJvPXZvaWQgMDtleHBvcnRzLkFkZHJlc3NaZXJvPSIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifSk7dmFyIGFkZHJlc3NlcyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFkZHJlc3Nlcyk7dmFyIGJpZ251bWJlcnM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLk1heFVpbnQyNTY9ZXhwb3J0cy5XZWlQZXJFdGhlcj1leHBvcnRzLlR3bz1leHBvcnRzLk9uZT1leHBvcnRzLlplcm89ZXhwb3J0cy5OZWdhdGl2ZU9uZT12b2lkIDA7dmFyIE5lZ2F0aXZlT25lPWxpYiQyLkJpZ051bWJlci5mcm9tKC0xKTtleHBvcnRzLk5lZ2F0aXZlT25lPU5lZ2F0aXZlT25lO3ZhciBaZXJvPWxpYiQyLkJpZ051bWJlci5mcm9tKDApO2V4cG9ydHMuWmVybz1aZXJvO3ZhciBPbmU9bGliJDIuQmlnTnVtYmVyLmZyb20oMSk7ZXhwb3J0cy5PbmU9T25lO3ZhciBUd289bGliJDIuQmlnTnVtYmVyLmZyb20oMik7ZXhwb3J0cy5Ud289VHdvO3ZhciBXZWlQZXJFdGhlcj1saWIkMi5CaWdOdW1iZXIuZnJvbSgiMTAwMDAwMDAwMDAwMDAwMDAwMCIpO2V4cG9ydHMuV2VpUGVyRXRoZXI9V2VpUGVyRXRoZXI7dmFyIE1heFVpbnQyNTY9bGliJDIuQmlnTnVtYmVyLmZyb20oIjB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZiIpO2V4cG9ydHMuTWF4VWludDI1Nj1NYXhVaW50MjU2fSk7dmFyIGJpZ251bWJlcnMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhiaWdudW1iZXJzKTt2YXIgaGFzaGVzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5IYXNoWmVybz12b2lkIDA7ZXhwb3J0cy5IYXNoWmVybz0iMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIn0pO3ZhciBoYXNoZXMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhoYXNoZXMpO3ZhciBzdHJpbmdzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5FdGhlclN5bWJvbD12b2lkIDA7ZXhwb3J0cy5FdGhlclN5bWJvbD0izp4ifSk7dmFyIHN0cmluZ3MkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhzdHJpbmdzKTt2YXIgbGliJDc9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkV0aGVyU3ltYm9sPWV4cG9ydHMuSGFzaFplcm89ZXhwb3J0cy5NYXhVaW50MjU2PWV4cG9ydHMuV2VpUGVyRXRoZXI9ZXhwb3J0cy5Ud289ZXhwb3J0cy5PbmU9ZXhwb3J0cy5aZXJvPWV4cG9ydHMuTmVnYXRpdmVPbmU9ZXhwb3J0cy5BZGRyZXNzWmVybz12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkFkZHJlc3NaZXJvIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBhZGRyZXNzZXMuQWRkcmVzc1plcm99fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIk5lZ2F0aXZlT25lIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLk5lZ2F0aXZlT25lfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJaZXJvIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLlplcm99fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIk9uZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYmlnbnVtYmVycy5PbmV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlR3byIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYmlnbnVtYmVycy5Ud299fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIldlaVBlckV0aGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLldlaVBlckV0aGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJNYXhVaW50MjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLk1heFVpbnQyNTZ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkhhc2haZXJvIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBoYXNoZXMuSGFzaFplcm99fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkV0aGVyU3ltYm9sIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzdHJpbmdzLkV0aGVyU3ltYm9sfX0pfSk7dmFyIGluZGV4JDc9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDcpO3ZhciBudW1iZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5OdW1iZXJDb2Rlcj12b2lkIDA7dmFyIE51bWJlckNvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKE51bWJlckNvZGVyLF9zdXBlcik7ZnVuY3Rpb24gTnVtYmVyQ29kZXIoc2l6ZSxzaWduZWQsbG9jYWxOYW1lKXt2YXIgX3RoaXM9dGhpczt2YXIgbmFtZT0oc2lnbmVkPyJpbnQiOiJ1aW50Iikrc2l6ZSo4O190aGlzPV9zdXBlci5jYWxsKHRoaXMsbmFtZSxuYW1lLGxvY2FsTmFtZSxmYWxzZSl8fHRoaXM7X3RoaXMuc2l6ZT1zaXplO190aGlzLnNpZ25lZD1zaWduZWQ7cmV0dXJuIF90aGlzfU51bWJlckNvZGVyLnByb3RvdHlwZS5kZWZhdWx0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gMH07TnVtYmVyQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3ZhciB2PWxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKTt2YXIgbWF4VWludFZhbHVlPWxpYiQ3Lk1heFVpbnQyNTYubWFzayh3cml0ZXIud29yZFNpemUqOCk7aWYodGhpcy5zaWduZWQpe3ZhciBib3VuZHM9bWF4VWludFZhbHVlLm1hc2sodGhpcy5zaXplKjgtMSk7aWYodi5ndChib3VuZHMpfHx2Lmx0KGJvdW5kcy5hZGQobGliJDcuT25lKS5tdWwobGliJDcuTmVnYXRpdmVPbmUpKSl7dGhpcy5fdGhyb3dFcnJvcigidmFsdWUgb3V0LW9mLWJvdW5kcyIsdmFsdWUpfX1lbHNlIGlmKHYubHQobGliJDcuWmVybyl8fHYuZ3QobWF4VWludFZhbHVlLm1hc2sodGhpcy5zaXplKjgpKSl7dGhpcy5fdGhyb3dFcnJvcigidmFsdWUgb3V0LW9mLWJvdW5kcyIsdmFsdWUpfXY9di50b1R3b3ModGhpcy5zaXplKjgpLm1hc2sodGhpcy5zaXplKjgpO2lmKHRoaXMuc2lnbmVkKXt2PXYuZnJvbVR3b3ModGhpcy5zaXplKjgpLnRvVHdvcyg4KndyaXRlci53b3JkU2l6ZSl9cmV0dXJuIHdyaXRlci53cml0ZVZhbHVlKHYpfTtOdW1iZXJDb2Rlci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHJlYWRlcil7dmFyIHZhbHVlPXJlYWRlci5yZWFkVmFsdWUoKS5tYXNrKHRoaXMuc2l6ZSo4KTtpZih0aGlzLnNpZ25lZCl7dmFsdWU9dmFsdWUuZnJvbVR3b3ModGhpcy5zaXplKjgpfXJldHVybiByZWFkZXIuY29lcmNlKHRoaXMubmFtZSx2YWx1ZSl9O3JldHVybiBOdW1iZXJDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5OdW1iZXJDb2Rlcj1OdW1iZXJDb2Rlcn0pO3ZhciBudW1iZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhudW1iZXIpO3ZhciBfdmVyc2lvbiRlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249InN0cmluZ3MvNS4yLjAifSk7dmFyIF92ZXJzaW9uJGY9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kZSk7dmFyIHV0Zjg9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnRvVXRmOENvZGVQb2ludHM9ZXhwb3J0cy50b1V0ZjhTdHJpbmc9ZXhwb3J0cy5fdG9VdGY4U3RyaW5nPWV4cG9ydHMuX3RvRXNjYXBlZFV0ZjhTdHJpbmc9ZXhwb3J0cy50b1V0ZjhCeXRlcz1leHBvcnRzLlV0ZjhFcnJvckZ1bmNzPWV4cG9ydHMuVXRmOEVycm9yUmVhc29uPWV4cG9ydHMuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJGUudmVyc2lvbik7dmFyIFVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybTsoZnVuY3Rpb24oVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtKXtVbmljb2RlTm9ybWFsaXphdGlvbkZvcm1bImN1cnJlbnQiXT0iIjtVbmljb2RlTm9ybWFsaXphdGlvbkZvcm1bIk5GQyJdPSJORkMiO1VuaWNvZGVOb3JtYWxpemF0aW9uRm9ybVsiTkZEIl09Ik5GRCI7VW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtWyJORktDIl09Ik5GS0MiO1VuaWNvZGVOb3JtYWxpemF0aW9uRm9ybVsiTkZLRCJdPSJORktEIn0pKFVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybT1leHBvcnRzLlVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybXx8KGV4cG9ydHMuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtPXt9KSk7dmFyIFV0ZjhFcnJvclJlYXNvbjsoZnVuY3Rpb24oVXRmOEVycm9yUmVhc29uKXtVdGY4RXJyb3JSZWFzb25bIlVORVhQRUNURURfQ09OVElOVUUiXT0idW5leHBlY3RlZCBjb250aW51YXRpb24gYnl0ZSI7VXRmOEVycm9yUmVhc29uWyJCQURfUFJFRklYIl09ImJhZCBjb2RlcG9pbnQgcHJlZml4IjtVdGY4RXJyb3JSZWFzb25bIk9WRVJSVU4iXT0ic3RyaW5nIG92ZXJydW4iO1V0ZjhFcnJvclJlYXNvblsiTUlTU0lOR19DT05USU5VRSJdPSJtaXNzaW5nIGNvbnRpbnVhdGlvbiBieXRlIjtVdGY4RXJyb3JSZWFzb25bIk9VVF9PRl9SQU5HRSJdPSJvdXQgb2YgVVRGLTggcmFuZ2UiO1V0ZjhFcnJvclJlYXNvblsiVVRGMTZfU1VSUk9HQVRFIl09IlVURi0xNiBzdXJyb2dhdGUiO1V0ZjhFcnJvclJlYXNvblsiT1ZFUkxPTkciXT0ib3ZlcmxvbmcgcmVwcmVzZW50YXRpb24ifSkoVXRmOEVycm9yUmVhc29uPWV4cG9ydHMuVXRmOEVycm9yUmVhc29ufHwoZXhwb3J0cy5VdGY4RXJyb3JSZWFzb249e30pKTtmdW5jdGlvbiBlcnJvckZ1bmMocmVhc29uLG9mZnNldCxieXRlcyxvdXRwdXQsYmFkQ29kZXBvaW50KXtyZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBjb2RlcG9pbnQgYXQgb2Zmc2V0ICIrb2Zmc2V0KyI7ICIrcmVhc29uLCJieXRlcyIsYnl0ZXMpfWZ1bmN0aW9uIGlnbm9yZUZ1bmMocmVhc29uLG9mZnNldCxieXRlcyxvdXRwdXQsYmFkQ29kZXBvaW50KXtpZihyZWFzb249PT1VdGY4RXJyb3JSZWFzb24uQkFEX1BSRUZJWHx8cmVhc29uPT09VXRmOEVycm9yUmVhc29uLlVORVhQRUNURURfQ09OVElOVUUpe3ZhciBpPTA7Zm9yKHZhciBvPW9mZnNldCsxO288Ynl0ZXMubGVuZ3RoO28rKyl7aWYoYnl0ZXNbb10+PjYhPT0yKXticmVha31pKyt9cmV0dXJuIGl9aWYocmVhc29uPT09VXRmOEVycm9yUmVhc29uLk9WRVJSVU4pe3JldHVybiBieXRlcy5sZW5ndGgtb2Zmc2V0LTF9cmV0dXJuIDB9ZnVuY3Rpb24gcmVwbGFjZUZ1bmMocmVhc29uLG9mZnNldCxieXRlcyxvdXRwdXQsYmFkQ29kZXBvaW50KXtpZihyZWFzb249PT1VdGY4RXJyb3JSZWFzb24uT1ZFUkxPTkcpe291dHB1dC5wdXNoKGJhZENvZGVwb2ludCk7cmV0dXJuIDB9b3V0cHV0LnB1c2goNjU1MzMpO3JldHVybiBpZ25vcmVGdW5jKHJlYXNvbixvZmZzZXQsYnl0ZXMsb3V0cHV0LGJhZENvZGVwb2ludCl9ZXhwb3J0cy5VdGY4RXJyb3JGdW5jcz1PYmplY3QuZnJlZXplKHtlcnJvcjplcnJvckZ1bmMsaWdub3JlOmlnbm9yZUZ1bmMscmVwbGFjZTpyZXBsYWNlRnVuY30pO2Z1bmN0aW9uIGdldFV0ZjhDb2RlUG9pbnRzKGJ5dGVzLG9uRXJyb3Ipe2lmKG9uRXJyb3I9PW51bGwpe29uRXJyb3I9ZXhwb3J0cy5VdGY4RXJyb3JGdW5jcy5lcnJvcn1ieXRlcz1saWIkMS5hcnJheWlmeShieXRlcyk7dmFyIHJlc3VsdD1bXTt2YXIgaT0wO3doaWxlKGk8Ynl0ZXMubGVuZ3RoKXt2YXIgYz1ieXRlc1tpKytdO2lmKGM+Pjc9PT0wKXtyZXN1bHQucHVzaChjKTtjb250aW51ZX12YXIgZXh0cmFMZW5ndGg9bnVsbDt2YXIgb3ZlcmxvbmdNYXNrPW51bGw7aWYoKGMmMjI0KT09PTE5Mil7ZXh0cmFMZW5ndGg9MTtvdmVybG9uZ01hc2s9MTI3fWVsc2UgaWYoKGMmMjQwKT09PTIyNCl7ZXh0cmFMZW5ndGg9MjtvdmVybG9uZ01hc2s9MjA0N31lbHNlIGlmKChjJjI0OCk9PT0yNDApe2V4dHJhTGVuZ3RoPTM7b3ZlcmxvbmdNYXNrPTY1NTM1fWVsc2V7aWYoKGMmMTkyKT09PTEyOCl7aSs9b25FcnJvcihVdGY4RXJyb3JSZWFzb24uVU5FWFBFQ1RFRF9DT05USU5VRSxpLTEsYnl0ZXMscmVzdWx0KX1lbHNle2krPW9uRXJyb3IoVXRmOEVycm9yUmVhc29uLkJBRF9QUkVGSVgsaS0xLGJ5dGVzLHJlc3VsdCl9Y29udGludWV9aWYoaS0xK2V4dHJhTGVuZ3RoPj1ieXRlcy5sZW5ndGgpe2krPW9uRXJyb3IoVXRmOEVycm9yUmVhc29uLk9WRVJSVU4saS0xLGJ5dGVzLHJlc3VsdCk7Y29udGludWV9dmFyIHJlcz1jJigxPDw4LWV4dHJhTGVuZ3RoLTEpLTE7Zm9yKHZhciBqPTA7ajxleHRyYUxlbmd0aDtqKyspe3ZhciBuZXh0Q2hhcj1ieXRlc1tpXTtpZigobmV4dENoYXImMTkyKSE9MTI4KXtpKz1vbkVycm9yKFV0ZjhFcnJvclJlYXNvbi5NSVNTSU5HX0NPTlRJTlVFLGksYnl0ZXMscmVzdWx0KTtyZXM9bnVsbDticmVha31yZXM9cmVzPDw2fG5leHRDaGFyJjYzO2krK31pZihyZXM9PT1udWxsKXtjb250aW51ZX1pZihyZXM+MTExNDExMSl7aSs9b25FcnJvcihVdGY4RXJyb3JSZWFzb24uT1VUX09GX1JBTkdFLGktMS1leHRyYUxlbmd0aCxieXRlcyxyZXN1bHQscmVzKTtjb250aW51ZX1pZihyZXM+PTU1Mjk2JiZyZXM8PTU3MzQzKXtpKz1vbkVycm9yKFV0ZjhFcnJvclJlYXNvbi5VVEYxNl9TVVJST0dBVEUsaS0xLWV4dHJhTGVuZ3RoLGJ5dGVzLHJlc3VsdCxyZXMpO2NvbnRpbnVlfWlmKHJlczw9b3ZlcmxvbmdNYXNrKXtpKz1vbkVycm9yKFV0ZjhFcnJvclJlYXNvbi5PVkVSTE9ORyxpLTEtZXh0cmFMZW5ndGgsYnl0ZXMscmVzdWx0LHJlcyk7Y29udGludWV9cmVzdWx0LnB1c2gocmVzKX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHRvVXRmOEJ5dGVzKHN0cixmb3JtKXtpZihmb3JtPT09dm9pZCAwKXtmb3JtPVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5jdXJyZW50fWlmKGZvcm0hPVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5jdXJyZW50KXtsb2dnZXIuY2hlY2tOb3JtYWxpemUoKTtzdHI9c3RyLm5vcm1hbGl6ZShmb3JtKX12YXIgcmVzdWx0PVtdO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDtpKyspe3ZhciBjPXN0ci5jaGFyQ29kZUF0KGkpO2lmKGM8MTI4KXtyZXN1bHQucHVzaChjKX1lbHNlIGlmKGM8MjA0OCl7cmVzdWx0LnB1c2goYz4+NnwxOTIpO3Jlc3VsdC5wdXNoKGMmNjN8MTI4KX1lbHNlIGlmKChjJjY0NTEyKT09NTUyOTYpe2krKzt2YXIgYzI9c3RyLmNoYXJDb2RlQXQoaSk7aWYoaT49c3RyLmxlbmd0aHx8KGMyJjY0NTEyKSE9PTU2MzIwKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdXRmLTggc3RyaW5nIil9dmFyIHBhaXI9NjU1MzYrKChjJjEwMjMpPDwxMCkrKGMyJjEwMjMpO3Jlc3VsdC5wdXNoKHBhaXI+PjE4fDI0MCk7cmVzdWx0LnB1c2gocGFpcj4+MTImNjN8MTI4KTtyZXN1bHQucHVzaChwYWlyPj42JjYzfDEyOCk7cmVzdWx0LnB1c2gocGFpciY2M3wxMjgpfWVsc2V7cmVzdWx0LnB1c2goYz4+MTJ8MjI0KTtyZXN1bHQucHVzaChjPj42JjYzfDEyOCk7cmVzdWx0LnB1c2goYyY2M3wxMjgpfX1yZXR1cm4gbGliJDEuYXJyYXlpZnkocmVzdWx0KX1leHBvcnRzLnRvVXRmOEJ5dGVzPXRvVXRmOEJ5dGVzO2Z1bmN0aW9uIGVzY2FwZUNoYXIodmFsdWUpe3ZhciBoZXg9IjAwMDAiK3ZhbHVlLnRvU3RyaW5nKDE2KTtyZXR1cm4iXFx1IitoZXguc3Vic3RyaW5nKGhleC5sZW5ndGgtNCl9ZnVuY3Rpb24gX3RvRXNjYXBlZFV0ZjhTdHJpbmcoYnl0ZXMsb25FcnJvcil7cmV0dXJuJyInK2dldFV0ZjhDb2RlUG9pbnRzKGJ5dGVzLG9uRXJyb3IpLm1hcChmdW5jdGlvbihjb2RlUG9pbnQpe2lmKGNvZGVQb2ludDwyNTYpe3N3aXRjaChjb2RlUG9pbnQpe2Nhc2UgODpyZXR1cm4iXFxiIjtjYXNlIDk6cmV0dXJuIlxcdCI7Y2FzZSAxMDpyZXR1cm4iXFxuIjtjYXNlIDEzOnJldHVybiJcXHIiO2Nhc2UgMzQ6cmV0dXJuJ1xcIic7Y2FzZSA5MjpyZXR1cm4iXFxcXCJ9aWYoY29kZVBvaW50Pj0zMiYmY29kZVBvaW50PDEyNyl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50KX19aWYoY29kZVBvaW50PD02NTUzNSl7cmV0dXJuIGVzY2FwZUNoYXIoY29kZVBvaW50KX1jb2RlUG9pbnQtPTY1NTM2O3JldHVybiBlc2NhcGVDaGFyKChjb2RlUG9pbnQ+PjEwJjEwMjMpKzU1Mjk2KStlc2NhcGVDaGFyKChjb2RlUG9pbnQmMTAyMykrNTYzMjApfSkuam9pbigiIikrJyInfWV4cG9ydHMuX3RvRXNjYXBlZFV0ZjhTdHJpbmc9X3RvRXNjYXBlZFV0ZjhTdHJpbmc7ZnVuY3Rpb24gX3RvVXRmOFN0cmluZyhjb2RlUG9pbnRzKXtyZXR1cm4gY29kZVBvaW50cy5tYXAoZnVuY3Rpb24oY29kZVBvaW50KXtpZihjb2RlUG9pbnQ8PTY1NTM1KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlUG9pbnQpfWNvZGVQb2ludC09NjU1MzY7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoKGNvZGVQb2ludD4+MTAmMTAyMykrNTUyOTYsKGNvZGVQb2ludCYxMDIzKSs1NjMyMCl9KS5qb2luKCIiKX1leHBvcnRzLl90b1V0ZjhTdHJpbmc9X3RvVXRmOFN0cmluZztmdW5jdGlvbiB0b1V0ZjhTdHJpbmcoYnl0ZXMsb25FcnJvcil7cmV0dXJuIF90b1V0ZjhTdHJpbmcoZ2V0VXRmOENvZGVQb2ludHMoYnl0ZXMsb25FcnJvcikpfWV4cG9ydHMudG9VdGY4U3RyaW5nPXRvVXRmOFN0cmluZztmdW5jdGlvbiB0b1V0ZjhDb2RlUG9pbnRzKHN0cixmb3JtKXtpZihmb3JtPT09dm9pZCAwKXtmb3JtPVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5jdXJyZW50fXJldHVybiBnZXRVdGY4Q29kZVBvaW50cyh0b1V0ZjhCeXRlcyhzdHIsZm9ybSkpfWV4cG9ydHMudG9VdGY4Q29kZVBvaW50cz10b1V0ZjhDb2RlUG9pbnRzfSk7dmFyIHV0ZjgkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh1dGY4KTt2YXIgYnl0ZXMzMj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPWV4cG9ydHMuZm9ybWF0Qnl0ZXMzMlN0cmluZz12b2lkIDA7ZnVuY3Rpb24gZm9ybWF0Qnl0ZXMzMlN0cmluZyh0ZXh0KXt2YXIgYnl0ZXM9dXRmOC50b1V0ZjhCeXRlcyh0ZXh0KTtpZihieXRlcy5sZW5ndGg+MzEpe3Rocm93IG5ldyBFcnJvcigiYnl0ZXMzMiBzdHJpbmcgbXVzdCBiZSBsZXNzIHRoYW4gMzIgYnl0ZXMiKX1yZXR1cm4gbGliJDEuaGV4bGlmeShsaWIkMS5jb25jYXQoW2J5dGVzLGxpYiQ3Lkhhc2haZXJvXSkuc2xpY2UoMCwzMikpfWV4cG9ydHMuZm9ybWF0Qnl0ZXMzMlN0cmluZz1mb3JtYXRCeXRlczMyU3RyaW5nO2Z1bmN0aW9uIHBhcnNlQnl0ZXMzMlN0cmluZyhieXRlcyl7dmFyIGRhdGE9bGliJDEuYXJyYXlpZnkoYnl0ZXMpO2lmKGRhdGEubGVuZ3RoIT09MzIpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBieXRlczMyIC0gbm90IDMyIGJ5dGVzIGxvbmciKX1pZihkYXRhWzMxXSE9PTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBieXRlczMyIHN0cmluZyAtIG5vIG51bGwgdGVybWluYXRvciIpfXZhciBsZW5ndGg9MzE7d2hpbGUoZGF0YVtsZW5ndGgtMV09PT0wKXtsZW5ndGgtLX1yZXR1cm4gdXRmOC50b1V0ZjhTdHJpbmcoZGF0YS5zbGljZSgwLGxlbmd0aCkpfWV4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPXBhcnNlQnl0ZXMzMlN0cmluZ30pO3ZhciBieXRlczMyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnl0ZXMzMik7dmFyIGlkbmE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLm5hbWVwcmVwPWV4cG9ydHMuX25hbWVwcmVwVGFibGVDPWV4cG9ydHMuX25hbWVwcmVwVGFibGVCMj1leHBvcnRzLl9uYW1lcHJlcFRhYmxlQTE9dm9pZCAwO2Z1bmN0aW9uIGJ5dGVzMihkYXRhKXtpZihkYXRhLmxlbmd0aCU0IT09MCl7dGhyb3cgbmV3IEVycm9yKCJiYWQgZGF0YSIpfXZhciByZXN1bHQ9W107Zm9yKHZhciBpPTA7aTxkYXRhLmxlbmd0aDtpKz00KXtyZXN1bHQucHVzaChwYXJzZUludChkYXRhLnN1YnN0cmluZyhpLGkrNCksMTYpKX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNyZWF0ZVRhYmxlKGRhdGEsZnVuYyl7aWYoIWZ1bmMpe2Z1bmM9ZnVuY3Rpb24odmFsdWUpe3JldHVybltwYXJzZUludCh2YWx1ZSwxNildfX12YXIgbG89MDt2YXIgcmVzdWx0PXt9O2RhdGEuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHBhaXIpe3ZhciBjb21wcz1wYWlyLnNwbGl0KCI6Iik7bG8rPXBhcnNlSW50KGNvbXBzWzBdLDE2KTtyZXN1bHRbbG9dPWZ1bmMoY29tcHNbMV0pfSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBjcmVhdGVSYW5nZVRhYmxlKGRhdGEpe3ZhciBoaT0wO3JldHVybiBkYXRhLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHYpe3ZhciBjb21wcz12LnNwbGl0KCItIik7aWYoY29tcHMubGVuZ3RoPT09MSl7Y29tcHNbMV09IjAifWVsc2UgaWYoY29tcHNbMV09PT0iIil7Y29tcHNbMV09IjEifXZhciBsbz1oaStwYXJzZUludChjb21wc1swXSwxNik7aGk9cGFyc2VJbnQoY29tcHNbMV0sMTYpO3JldHVybntsOmxvLGg6aGl9fSl9ZnVuY3Rpb24gbWF0Y2hNYXAodmFsdWUscmFuZ2VzKXt2YXIgbG89MDtmb3IodmFyIGk9MDtpPHJhbmdlcy5sZW5ndGg7aSsrKXt2YXIgcmFuZ2U9cmFuZ2VzW2ldO2xvKz1yYW5nZS5sO2lmKHZhbHVlPj1sbyYmdmFsdWU8PWxvK3JhbmdlLmgmJih2YWx1ZS1sbyklKHJhbmdlLmR8fDEpPT09MCl7aWYocmFuZ2UuZSYmcmFuZ2UuZS5pbmRleE9mKHZhbHVlLWxvKSE9PS0xKXtjb250aW51ZX1yZXR1cm4gcmFuZ2V9fXJldHVybiBudWxsfXZhciBUYWJsZV9BXzFfcmFuZ2VzPWNyZWF0ZVJhbmdlVGFibGUoIjIyMSwxMy0xYiw1Zi0sNDAtMTAsNTEtZiwxMS0zLDMtMywyLTIsMi00LDgsMiwxNSwyZCwyOC04LDg4LDQ4LDI3LSwzLTUsMTEtMjAsMjctLDgsMjgsMy01LDEyLDE4LGItYSwxYy00LDYtMTYsMi1kLDItMiwyLDFiLTQsMTctOSw4Zi0sMTAsZiwxZi0yLDFjLTM0LDMzLTE0ZSw0LDM2LSwxMy0sNi0yLDFhLWYsNCw5LSwzLSwxNyw4LDItMiw1LSwyLDgtLDMtLDQtOCwyLTMsMyw2LSwxNi02LDItLDctMywzLSwxNyw4LDMsMywzLSwyLDYtMywzLSw0LWEsNSwyLTYsMTAtYiw0LDgsMiw0LDE3LDgsMyw2LSxiLDQsNC0sMi1lLDItNCxiLTEwLDQsOS0sMy0sMTcsOCwzLSw1LSw5LTIsMy0sNC03LDMtMywzLDQtMyxjLTEwLDMsNy0yLDQsNS0yLDMsMiwzLTIsMy0yLDQtMiw5LDQtMyw2LTIsNCw1LTgsMi1lLGQtZCw0LDksNCwxOCxiLDYtMyw4LDQsNS02LDMtOCwzLTMsYi0xMSwzLDksNCwxOCxiLDYtMyw4LDQsNS02LDMtNiwyLDMtMyxiLTExLDMsOSw0LDE4LDExLTMsNy0sNCw1LTgsMi03LDMtMyxiLTExLDMsMTMtMiwxOSxhLDItLDgtMiwyLTMsNywyLDktMTEsNC1iLDNiLTMsMWUtMjQsMywyLSwzLDItLDItNSw1LDgsNCwyLDItLDMsZSw0LSw2LDIsNy0sYi0sMy0yMSw0OSwyMy01LDFjLTMsOSwyNSwxMC0sMi0yZiwyMyw2LDMsOC0yLDUtNSwxYi00NSwyNy05LDJhLSwyLTMsNWItNCw0NS00LDUzLTUsOCw0MCwyLDUtLDgsMiw1LSwyOCwyLDUtLDIwLDIsNS0sOCwyLDUtLDgsOCwxOCwyMCwyLDUtLDgsMjgsMTQtNSwxZC0yMiw1Ni1iLDI3Ny04LDFlLTIsNTItZSxlLDgtYSwxOC04LDE1LWIsZSw0LDMtYiw1ZS0yLGItMTUsMTAsYi01LDU5LTcsMmItNTU1LDlkLTMsNWItNSwxNy0sNy0sMjctLDctLDksMiwyLDIsMjAtLDM2LDEwLGYtLDcsMTQtLDQsYSw1NC0zLDItNiw2LTUsOS0sMWMtMTAsMTMtMWQsMWMtMTQsM2MtLDEwLTYsMzItYiwyNDAtMzAsMjgtMTgsYy0xNCxhMCwxMTUtLDMsNjYtLGItNzYsNSw1LSwxZCwyNCwyLDUtMiwyLDgtLDM1LTIsMTksZi0xMCwxZC0zLDMxMS0zN2YsMWIsNWEtYixkNy0xOSxkLTMsNDEsNTctLDY4LTQsMjktMyw1ZiwyOS0zNywyZS0yLDI1LWMsMmMtMiw0ZS0zLDMwLDc4LTMsNjQtLDIwLDE5YjctNDksNTFhNy01OSw0OGUtMiwzOC03MzgsMmJhNS01YiwyMjJmLSwzYy05NCw4LWIsNi00LDFiLDYsMiwzLDMsNmQtMjAsMTZlLWYsNDEtLDM3LTcsMmUtMiwxMS1mLDUtYiwxOC0sYiwxNCw1LTMsNiw4OC0sMixiZi0yLDctLDctLDctLDQtMiw4LDgtOSw4LTJmZiwyMCw1LWIsMWMtYjQsMjctLDI3LWNiYjEsZjctOSwyOC0yLGI1LTIyMSw1Niw0OCwzLSwyLSwzLSw1LGQsMiw1LDMsNDIsNS0sOSw4LDFkLDUsNiwyLTIsOCwxNTMtMywxMjMtMywzMy0yN2ZkLGE2ZGEtNTEyOCwyMWYtNWRmLDMtZmZmZCwzLWZmZmQsMy1mZmZkLDMtZmZmZCwzLWZmZmQsMy1mZmZkLDMtZmZmZCwzLWZmZmQsMy1mZmZkLDMtZmZmZCwzLWZmZmQsMywyLTFkLDYxLWZmN2QiKTt2YXIgVGFibGVfQl8xX2ZsYWdzPSJhZCwzNGYsMTgwNiwxODBiLDE4MGMsMTgwZCwyMDBiLDIwMGMsMjAwZCwyMDYwLGZlZmYiLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBwYXJzZUludCh2LDE2KX0pO3ZhciBUYWJsZV9CXzJfcmFuZ2VzPVt7aDoyNSxzOjMyLGw6NjV9LHtoOjMwLHM6MzIsZTpbMjNdLGw6MTI3fSx7aDo1NCxzOjEsZTpbNDhdLGw6NjQsZDoyfSx7aDoxNCxzOjEsbDo1NyxkOjJ9LHtoOjQ0LHM6MSxsOjE3LGQ6Mn0se2g6MTAsczoxLGU6WzIsNiw4XSxsOjYxLGQ6Mn0se2g6MTYsczoxLGw6NjgsZDoyfSx7aDo4NCxzOjEsZTpbMTgsMjQsNjZdLGw6MTksZDoyfSx7aDoyNixzOjMyLGU6WzE3XSxsOjQzNX0se2g6MjIsczoxLGw6NzEsZDoyfSx7aDoxNSxzOjgwLGw6NDB9LHtoOjMxLHM6MzIsbDoxNn0se2g6MzIsczoxLGw6ODAsZDoyfSx7aDo1MixzOjEsbDo0MixkOjJ9LHtoOjEyLHM6MSxsOjU1LGQ6Mn0se2g6NDAsczoxLGU6WzM4XSxsOjE1LGQ6Mn0se2g6MTQsczoxLGw6NDgsZDoyfSx7aDozNyxzOjQ4LGw6NDl9LHtoOjE0OCxzOjEsbDo2MzUxLGQ6Mn0se2g6ODgsczoxLGw6MTYwLGQ6Mn0se2g6MTUsczoxNixsOjcwNH0se2g6MjUsczoyNixsOjg1NH0se2g6MjUsczozMixsOjU1OTE1fSx7aDozNyxzOjQwLGw6MTI0N30se2g6MjUsczotMTE5NzExLGw6NTMyNDh9LHtoOjI1LHM6LTExOTc2MyxsOjUyfSx7aDoyNSxzOi0xMTk4MTUsbDo1Mn0se2g6MjUsczotMTE5ODY3LGU6WzEsNCw1LDcsOCwxMSwxMiwxN10sbDo1Mn0se2g6MjUsczotMTE5OTE5LGw6NTJ9LHtoOjI0LHM6LTExOTk3MSxlOlsyLDcsOCwxN10sbDo1Mn0se2g6MjQsczotMTIwMDIzLGU6WzIsNywxMywxNSwxNiwxN10sbDo1Mn0se2g6MjUsczotMTIwMDc1LGw6NTJ9LHtoOjI1LHM6LTEyMDEyNyxsOjUyfSx7aDoyNSxzOi0xMjAxNzksbDo1Mn0se2g6MjUsczotMTIwMjMxLGw6NTJ9LHtoOjI1LHM6LTEyMDI4MyxsOjUyfSx7aDoyNSxzOi0xMjAzMzUsbDo1Mn0se2g6MjQsczotMTE5NTQzLGU6WzE3XSxsOjU2fSx7aDoyNCxzOi0xMTk2MDEsZTpbMTddLGw6NTh9LHtoOjI0LHM6LTExOTY1OSxlOlsxN10sbDo1OH0se2g6MjQsczotMTE5NzE3LGU6WzE3XSxsOjU4fSx7aDoyNCxzOi0xMTk3NzUsZTpbMTddLGw6NTh9XTt2YXIgVGFibGVfQl8yX2x1dF9hYnM9Y3JlYXRlVGFibGUoImI1OjNiYyxjMzpmZiw3OjczLDI6MjUzLDU6MjU0LDM6MjU2LDE6MjU3LDU6MjU5LDE6MjViLDM6MjYwLDE6MjYzLDI6MjY5LDE6MjY4LDU6MjZmLDE6MjcyLDI6Mjc1LDc6MjgwLDM6MjgzLDU6Mjg4LDM6MjhhLDE6MjhiLDU6MjkyLDNmOjE5NSwxOjFiZiwyOToxOWUsMTI1OjNiOSw4YjozYjIsMTozYjgsMTozYzUsMzozYzYsMTozYzAsMWE6M2JhLDE6M2MxLDE6M2MzLDI6M2I4LDE6M2I1LDFiYzk6M2I5LDFjOjFmNzYsMToxZjc3LGY6MWY3YSwxOjFmN2IsZDoxZjc4LDE6MWY3OSwxOjFmN2MsMToxZjdkLDEwNzo2Myw1OjI1Yiw0OjY4LDE6NjgsMTo2OCwzOjY5LDE6NjksMTo2YywzOjZlLDQ6NzAsMTo3MSwxOjcyLDE6NzIsMTo3Miw3OjdhLDI6M2M5LDI6N2EsMjo2YiwxOmU1LDE6NjIsMTo2MywzOjY1LDE6NjYsMjo2ZCxiOjNiMywxOjNjMCw2OjY0LDFiNTc0OjNiOCwxYTozYzMsMjA6M2I4LDFhOjNjMywyMDozYjgsMWE6M2MzLDIwOjNiOCwxYTozYzMsMjA6M2I4LDFhOjNjMyIpO3ZhciBUYWJsZV9CXzJfbHV0X3JlbD1jcmVhdGVUYWJsZSgiMTc5OjEsMjoxLDI6MSw1OjEsMjoxLGE6NGYsYToxLDg6MSwyOjEsMjoxLDM6MSw1OjEsMzoxLDQ6MSwyOjEsMzoxLDQ6MSw4OjIsMToxLDI6MiwxOjEsMjoyLDI3OjIsMTk1OjI2LDI6MjUsMToyNSwxOjI1LDI6NDAsMjozZiwxOjNmLDMzOjEsMTE6LTYsMTotOSwxYWM3Oi0zYSw2ZDotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDk6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LGI6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCw5Oi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsOTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsYzotOCwyOi04LDI6LTgsMjotOCw5Oi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsNDk6LTgsMTotOCwxOi00YSwxOi00YSxkOi01NiwxOi01NiwxOi01NiwxOi01NixkOi04LDE6LTgsZjotOCwxOi04LDM6LTciKTt2YXIgVGFibGVfQl8yX2NvbXBsZXg9Y3JlYXRlVGFibGUoImRmOjAwNzMwMDczLDUxOjAwNjkwMzA3LDE5OjAyQkMwMDZFLGE3OjAwNkEwMzBDLDE4YTowMDIwMDNCOSwxNjowM0I5MDMwODAzMDEsMjA6MDNDNTAzMDgwMzAxLDFkNzowNTY1MDU4MiwxOTBmOjAwNjgwMzMxLDE6MDA3NDAzMDgsMTowMDc3MDMwQSwxOjAwNzkwMzBBLDE6MDA2MTAyQkUsYjY6MDNDNTAzMTMsMjowM0M1MDMxMzAzMDAsMjowM0M1MDMxMzAzMDEsMjowM0M1MDMxMzAzNDIsMmE6MUYwMDAzQjksMToxRjAxMDNCOSwxOjFGMDIwM0I5LDE6MUYwMzAzQjksMToxRjA0MDNCOSwxOjFGMDUwM0I5LDE6MUYwNjAzQjksMToxRjA3MDNCOSwxOjFGMDAwM0I5LDE6MUYwMTAzQjksMToxRjAyMDNCOSwxOjFGMDMwM0I5LDE6MUYwNDAzQjksMToxRjA1MDNCOSwxOjFGMDYwM0I5LDE6MUYwNzAzQjksMToxRjIwMDNCOSwxOjFGMjEwM0I5LDE6MUYyMjAzQjksMToxRjIzMDNCOSwxOjFGMjQwM0I5LDE6MUYyNTAzQjksMToxRjI2MDNCOSwxOjFGMjcwM0I5LDE6MUYyMDAzQjksMToxRjIxMDNCOSwxOjFGMjIwM0I5LDE6MUYyMzAzQjksMToxRjI0MDNCOSwxOjFGMjUwM0I5LDE6MUYyNjAzQjksMToxRjI3MDNCOSwxOjFGNjAwM0I5LDE6MUY2MTAzQjksMToxRjYyMDNCOSwxOjFGNjMwM0I5LDE6MUY2NDAzQjksMToxRjY1MDNCOSwxOjFGNjYwM0I5LDE6MUY2NzAzQjksMToxRjYwMDNCOSwxOjFGNjEwM0I5LDE6MUY2MjAzQjksMToxRjYzMDNCOSwxOjFGNjQwM0I5LDE6MUY2NTAzQjksMToxRjY2MDNCOSwxOjFGNjcwM0I5LDM6MUY3MDAzQjksMTowM0IxMDNCOSwxOjAzQUMwM0I5LDI6MDNCMTAzNDIsMTowM0IxMDM0MjAzQjksNTowM0IxMDNCOSw2OjFGNzQwM0I5LDE6MDNCNzAzQjksMTowM0FFMDNCOSwyOjAzQjcwMzQyLDE6MDNCNzAzNDIwM0I5LDU6MDNCNzAzQjksNjowM0I5MDMwODAzMDAsMTowM0I5MDMwODAzMDEsMzowM0I5MDM0MiwxOjAzQjkwMzA4MDM0MixiOjAzQzUwMzA4MDMwMCwxOjAzQzUwMzA4MDMwMSwxOjAzQzEwMzEzLDI6MDNDNTAzNDIsMTowM0M1MDMwODAzNDIsYjoxRjdDMDNCOSwxOjAzQzkwM0I5LDE6MDNDRTAzQjksMjowM0M5MDM0MiwxOjAzQzkwMzQyMDNCOSw1OjAzQzkwM0I5LGFjOjAwNzIwMDczLDViOjAwQjAwMDYzLDY6MDBCMDAwNjYsZDowMDZFMDA2RixhOjAwNzMwMDZELDE6MDA3NDAwNjUwMDZDLDE6MDA3NDAwNkQsMTI0ZjowMDY4MDA3MDAwNjEsMjowMDYxMDA3NSwyOjAwNkYwMDc2LGI6MDA3MDAwNjEsMTowMDZFMDA2MSwxOjAzQkMwMDYxLDE6MDA2RDAwNjEsMTowMDZCMDA2MSwxOjAwNkIwMDYyLDE6MDA2RDAwNjIsMTowMDY3MDA2MiwzOjAwNzAwMDY2LDE6MDA2RTAwNjYsMTowM0JDMDA2Niw0OjAwNjgwMDdBLDE6MDA2QjAwNjgwMDdBLDE6MDA2RDAwNjgwMDdBLDE6MDA2NzAwNjgwMDdBLDE6MDA3NDAwNjgwMDdBLDE1OjAwNzAwMDYxLDE6MDA2QjAwNzAwMDYxLDE6MDA2RDAwNzAwMDYxLDE6MDA2NzAwNzAwMDYxLDg6MDA3MDAwNzYsMTowMDZFMDA3NiwxOjAzQkMwMDc2LDE6MDA2RDAwNzYsMTowMDZCMDA3NiwxOjAwNkQwMDc2LDE6MDA3MDAwNzcsMTowMDZFMDA3NywxOjAzQkMwMDc3LDE6MDA2RDAwNzcsMTowMDZCMDA3NywxOjAwNkQwMDc3LDE6MDA2QjAzQzksMTowMDZEMDNDOSwyOjAwNjIwMDcxLDM6MDA2MzIyMTUwMDZCMDA2NywxOjAwNjMwMDZGMDAyRSwxOjAwNjQwMDYyLDE6MDA2NzAwNzksMjowMDY4MDA3MCwyOjAwNkIwMDZCLDE6MDA2QjAwNkQsOTowMDcwMDA2OCwyOjAwNzAwMDcwMDA2RCwxOjAwNzAwMDcyLDI6MDA3MzAwNzYsMTowMDc3MDA2MixjNzIzOjAwNjYwMDY2LDE6MDA2NjAwNjksMTowMDY2MDA2QywxOjAwNjYwMDY2MDA2OSwxOjAwNjYwMDY2MDA2QywxOjAwNzMwMDc0LDE6MDA3MzAwNzQsZDowNTc0MDU3NiwxOjA1NzQwNTY1LDE6MDU3NDA1NkIsMTowNTdFMDU3NiwxOjA1NzQwNTZEIixieXRlczIpO3ZhciBUYWJsZV9DX3Jhbmdlcz1jcmVhdGVSYW5nZVRhYmxlKCI4MC0yMCwyYTAtLDM5YywzMixmNzEsMThlLDdmMi1mLDE5LTcsMzAtNCw3LTUsZjgxLWIsNSxhODAwLTIwZmYsNGQxLTFmLDExMCxmYS02LGQxNzQtNywyZTg0LSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSwyLDFmLTVmLGZmN2YtMjAwMDEiKTtmdW5jdGlvbiBmbGF0dGVuKHZhbHVlcyl7cmV0dXJuIHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sdmFsdWUpe3ZhbHVlLmZvckVhY2goZnVuY3Rpb24odmFsdWUpe2FjY3VtLnB1c2godmFsdWUpfSk7cmV0dXJuIGFjY3VtfSxbXSl9ZnVuY3Rpb24gX25hbWVwcmVwVGFibGVBMShjb2RlcG9pbnQpe3JldHVybiEhbWF0Y2hNYXAoY29kZXBvaW50LFRhYmxlX0FfMV9yYW5nZXMpfWV4cG9ydHMuX25hbWVwcmVwVGFibGVBMT1fbmFtZXByZXBUYWJsZUExO2Z1bmN0aW9uIF9uYW1lcHJlcFRhYmxlQjIoY29kZXBvaW50KXt2YXIgcmFuZ2U9bWF0Y2hNYXAoY29kZXBvaW50LFRhYmxlX0JfMl9yYW5nZXMpO2lmKHJhbmdlKXtyZXR1cm5bY29kZXBvaW50K3JhbmdlLnNdfXZhciBjb2Rlcz1UYWJsZV9CXzJfbHV0X2Fic1tjb2RlcG9pbnRdO2lmKGNvZGVzKXtyZXR1cm4gY29kZXN9dmFyIHNoaWZ0PVRhYmxlX0JfMl9sdXRfcmVsW2NvZGVwb2ludF07aWYoc2hpZnQpe3JldHVybltjb2RlcG9pbnQrc2hpZnRbMF1dfXZhciBjb21wbGV4PVRhYmxlX0JfMl9jb21wbGV4W2NvZGVwb2ludF07aWYoY29tcGxleCl7cmV0dXJuIGNvbXBsZXh9cmV0dXJuIG51bGx9ZXhwb3J0cy5fbmFtZXByZXBUYWJsZUIyPV9uYW1lcHJlcFRhYmxlQjI7ZnVuY3Rpb24gX25hbWVwcmVwVGFibGVDKGNvZGVwb2ludCl7cmV0dXJuISFtYXRjaE1hcChjb2RlcG9pbnQsVGFibGVfQ19yYW5nZXMpfWV4cG9ydHMuX25hbWVwcmVwVGFibGVDPV9uYW1lcHJlcFRhYmxlQztmdW5jdGlvbiBuYW1lcHJlcCh2YWx1ZSl7aWYodmFsdWUubWF0Y2goL15bYS16MC05LV0qJC9pKSYmdmFsdWUubGVuZ3RoPD01OSl7cmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCl9dmFyIGNvZGVzPXV0ZjgudG9VdGY4Q29kZVBvaW50cyh2YWx1ZSk7Y29kZXM9ZmxhdHRlbihjb2Rlcy5tYXAoZnVuY3Rpb24oY29kZSl7aWYoVGFibGVfQl8xX2ZsYWdzLmluZGV4T2YoY29kZSk+PTApe3JldHVybltdfWlmKGNvZGU+PTY1MDI0JiZjb2RlPD02NTAzOSl7cmV0dXJuW119dmFyIGNvZGVzVGFibGVCMj1fbmFtZXByZXBUYWJsZUIyKGNvZGUpO2lmKGNvZGVzVGFibGVCMil7cmV0dXJuIGNvZGVzVGFibGVCMn1yZXR1cm5bY29kZV19KSk7Y29kZXM9dXRmOC50b1V0ZjhDb2RlUG9pbnRzKHV0ZjguX3RvVXRmOFN0cmluZyhjb2RlcyksdXRmOC5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm0uTkZLQyk7Y29kZXMuZm9yRWFjaChmdW5jdGlvbihjb2RlKXtpZihfbmFtZXByZXBUYWJsZUMoY29kZSkpe3Rocm93IG5ldyBFcnJvcigiU1RSSU5HUFJFUF9DT05UQUlOU19QUk9ISUJJVEVEIil9fSk7Y29kZXMuZm9yRWFjaChmdW5jdGlvbihjb2RlKXtpZihfbmFtZXByZXBUYWJsZUExKGNvZGUpKXt0aHJvdyBuZXcgRXJyb3IoIlNUUklOR1BSRVBfQ09OVEFJTlNfVU5BU1NJR05FRCIpfX0pO3ZhciBuYW1lPXV0ZjguX3RvVXRmOFN0cmluZyhjb2Rlcyk7aWYobmFtZS5zdWJzdHJpbmcoMCwxKT09PSItInx8bmFtZS5zdWJzdHJpbmcoMiw0KT09PSItLSJ8fG5hbWUuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLTEpPT09Ii0iKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgaHlwaGVuIil9aWYobmFtZS5sZW5ndGg+NjMpe3Rocm93IG5ldyBFcnJvcigidG9vIGxvbmciKX1yZXR1cm4gbmFtZX1leHBvcnRzLm5hbWVwcmVwPW5hbWVwcmVwfSk7dmFyIGlkbmEkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhpZG5hKTt2YXIgbGliJDg9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLm5hbWVwcmVwPWV4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPWV4cG9ydHMuZm9ybWF0Qnl0ZXMzMlN0cmluZz1leHBvcnRzLlVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybT1leHBvcnRzLlV0ZjhFcnJvclJlYXNvbj1leHBvcnRzLlV0ZjhFcnJvckZ1bmNzPWV4cG9ydHMudG9VdGY4U3RyaW5nPWV4cG9ydHMudG9VdGY4Q29kZVBvaW50cz1leHBvcnRzLnRvVXRmOEJ5dGVzPWV4cG9ydHMuX3RvRXNjYXBlZFV0ZjhTdHJpbmc9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJmb3JtYXRCeXRlczMyU3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBieXRlczMyLmZvcm1hdEJ5dGVzMzJTdHJpbmd9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInBhcnNlQnl0ZXMzMlN0cmluZyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYnl0ZXMzMi5wYXJzZUJ5dGVzMzJTdHJpbmd9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIm5hbWVwcmVwIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpZG5hLm5hbWVwcmVwfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfdG9Fc2NhcGVkVXRmOFN0cmluZyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXRmOC5fdG9Fc2NhcGVkVXRmOFN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidG9VdGY4Qnl0ZXMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV0ZjgudG9VdGY4Qnl0ZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInRvVXRmOENvZGVQb2ludHMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV0ZjgudG9VdGY4Q29kZVBvaW50c319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidG9VdGY4U3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB1dGY4LnRvVXRmOFN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB1dGY4LlVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVXRmOEVycm9yRnVuY3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV0ZjguVXRmOEVycm9yRnVuY3N9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlV0ZjhFcnJvclJlYXNvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXRmOC5VdGY4RXJyb3JSZWFzb259fSl9KTt2YXIgaW5kZXgkOD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkOCk7dmFyIHN0cmluZz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlN0cmluZ0NvZGVyPXZvaWQgMDt2YXIgU3RyaW5nQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoU3RyaW5nQ29kZXIsX3N1cGVyKTtmdW5jdGlvbiBTdHJpbmdDb2Rlcihsb2NhbE5hbWUpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJzdHJpbmciLGxvY2FsTmFtZSl8fHRoaXN9U3RyaW5nQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiIifTtTdHJpbmdDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7cmV0dXJuIF9zdXBlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcyx3cml0ZXIsbGliJDgudG9VdGY4Qnl0ZXModmFsdWUpKX07U3RyaW5nQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiBsaWIkOC50b1V0ZjhTdHJpbmcoX3N1cGVyLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLHJlYWRlcikpfTtyZXR1cm4gU3RyaW5nQ29kZXJ9KGJ5dGVzLkR5bmFtaWNCeXRlc0NvZGVyKTtleHBvcnRzLlN0cmluZ0NvZGVyPVN0cmluZ0NvZGVyfSk7dmFyIHN0cmluZyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHN0cmluZyk7dmFyIHR1cGxlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuVHVwbGVDb2Rlcj12b2lkIDA7dmFyIFR1cGxlQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVHVwbGVDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIFR1cGxlQ29kZXIoY29kZXJzLGxvY2FsTmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIGR5bmFtaWM9ZmFsc2U7dmFyIHR5cGVzPVtdO2NvZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGNvZGVyKXtpZihjb2Rlci5keW5hbWljKXtkeW5hbWljPXRydWV9dHlwZXMucHVzaChjb2Rlci50eXBlKX0pO3ZhciB0eXBlPSJ0dXBsZSgiK3R5cGVzLmpvaW4oIiwiKSsiKSI7X3RoaXM9X3N1cGVyLmNhbGwodGhpcywidHVwbGUiLHR5cGUsbG9jYWxOYW1lLGR5bmFtaWMpfHx0aGlzO190aGlzLmNvZGVycz1jb2RlcnM7cmV0dXJuIF90aGlzfVR1cGxlQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3ZhciB2YWx1ZXM9W107dGhpcy5jb2RlcnMuZm9yRWFjaChmdW5jdGlvbihjb2Rlcil7dmFsdWVzLnB1c2goY29kZXIuZGVmYXVsdFZhbHVlKCkpfSk7dmFyIHVuaXF1ZU5hbWVzPXRoaXMuY29kZXJzLnJlZHVjZShmdW5jdGlvbihhY2N1bSxjb2Rlcil7dmFyIG5hbWU9Y29kZXIubG9jYWxOYW1lO2lmKG5hbWUpe2lmKCFhY2N1bVtuYW1lXSl7YWNjdW1bbmFtZV09MH1hY2N1bVtuYW1lXSsrfXJldHVybiBhY2N1bX0se30pO3RoaXMuY29kZXJzLmZvckVhY2goZnVuY3Rpb24oY29kZXIsaW5kZXgpe3ZhciBuYW1lPWNvZGVyLmxvY2FsTmFtZTtpZighbmFtZXx8dW5pcXVlTmFtZXNbbmFtZV0hPT0xKXtyZXR1cm59aWYobmFtZT09PSJsZW5ndGgiKXtuYW1lPSJfbGVuZ3RoIn1pZih2YWx1ZXNbbmFtZV0hPW51bGwpe3JldHVybn12YWx1ZXNbbmFtZV09dmFsdWVzW2luZGV4XX0pO3JldHVybiBPYmplY3QuZnJlZXplKHZhbHVlcyl9O1R1cGxlQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3JldHVybiBhcnJheS5wYWNrKHdyaXRlcix0aGlzLmNvZGVycyx2YWx1ZSl9O1R1cGxlQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiByZWFkZXIuY29lcmNlKHRoaXMubmFtZSxhcnJheS51bnBhY2socmVhZGVyLHRoaXMuY29kZXJzKSl9O3JldHVybiBUdXBsZUNvZGVyfShhYnN0cmFjdENvZGVyLkNvZGVyKTtleHBvcnRzLlR1cGxlQ29kZXI9VHVwbGVDb2Rlcn0pO3ZhciB0dXBsZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHR1cGxlKTt2YXIgYWJpQ29kZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmRlZmF1bHRBYmlDb2Rlcj1leHBvcnRzLkFiaUNvZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDgudmVyc2lvbik7dmFyIHBhcmFtVHlwZUJ5dGVzPW5ldyBSZWdFeHAoL15ieXRlcyhbMC05XSopJC8pO3ZhciBwYXJhbVR5cGVOdW1iZXI9bmV3IFJlZ0V4cCgvXih1P2ludCkoWzAtOV0qKSQvKTt2YXIgQWJpQ29kZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBYmlDb2Rlcihjb2VyY2VGdW5jKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LEFiaUNvZGVyKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJjb2VyY2VGdW5jIixjb2VyY2VGdW5jfHxudWxsKX1BYmlDb2Rlci5wcm90b3R5cGUuX2dldENvZGVyPWZ1bmN0aW9uKHBhcmFtKXt2YXIgX3RoaXM9dGhpcztzd2l0Y2gocGFyYW0uYmFzZVR5cGUpe2Nhc2UiYWRkcmVzcyI6cmV0dXJuIG5ldyBhZGRyZXNzLkFkZHJlc3NDb2RlcihwYXJhbS5uYW1lKTtjYXNlImJvb2wiOnJldHVybiBuZXcgYm9vbGVhbl8xLkJvb2xlYW5Db2RlcihwYXJhbS5uYW1lKTtjYXNlInN0cmluZyI6cmV0dXJuIG5ldyBzdHJpbmcuU3RyaW5nQ29kZXIocGFyYW0ubmFtZSk7Y2FzZSJieXRlcyI6cmV0dXJuIG5ldyBieXRlcy5CeXRlc0NvZGVyKHBhcmFtLm5hbWUpO2Nhc2UiYXJyYXkiOnJldHVybiBuZXcgYXJyYXkuQXJyYXlDb2Rlcih0aGlzLl9nZXRDb2RlcihwYXJhbS5hcnJheUNoaWxkcmVuKSxwYXJhbS5hcnJheUxlbmd0aCxwYXJhbS5uYW1lKTtjYXNlInR1cGxlIjpyZXR1cm4gbmV3IHR1cGxlLlR1cGxlQ29kZXIoKHBhcmFtLmNvbXBvbmVudHN8fFtdKS5tYXAoZnVuY3Rpb24oY29tcG9uZW50KXtyZXR1cm4gX3RoaXMuX2dldENvZGVyKGNvbXBvbmVudCl9KSxwYXJhbS5uYW1lKTtjYXNlIiI6cmV0dXJuIG5ldyBfbnVsbC5OdWxsQ29kZXIocGFyYW0ubmFtZSl9dmFyIG1hdGNoPXBhcmFtLnR5cGUubWF0Y2gocGFyYW1UeXBlTnVtYmVyKTtpZihtYXRjaCl7dmFyIHNpemU9cGFyc2VJbnQobWF0Y2hbMl18fCIyNTYiKTtpZihzaXplPT09MHx8c2l6ZT4yNTZ8fHNpemUlOCE9PTApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgIittYXRjaFsxXSsiIGJpdCBsZW5ndGgiLCJwYXJhbSIscGFyYW0pfXJldHVybiBuZXcgbnVtYmVyLk51bWJlckNvZGVyKHNpemUvOCxtYXRjaFsxXT09PSJpbnQiLHBhcmFtLm5hbWUpfW1hdGNoPXBhcmFtLnR5cGUubWF0Y2gocGFyYW1UeXBlQnl0ZXMpO2lmKG1hdGNoKXt2YXIgc2l6ZT1wYXJzZUludChtYXRjaFsxXSk7aWYoc2l6ZT09PTB8fHNpemU+MzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYnl0ZXMgbGVuZ3RoIiwicGFyYW0iLHBhcmFtKX1yZXR1cm4gbmV3IGZpeGVkQnl0ZXMuRml4ZWRCeXRlc0NvZGVyKHNpemUscGFyYW0ubmFtZSl9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHlwZSIsInR5cGUiLHBhcmFtLnR5cGUpfTtBYmlDb2Rlci5wcm90b3R5cGUuX2dldFdvcmRTaXplPWZ1bmN0aW9uKCl7cmV0dXJuIDMyfTtBYmlDb2Rlci5wcm90b3R5cGUuX2dldFJlYWRlcj1mdW5jdGlvbihkYXRhLGFsbG93TG9vc2Upe3JldHVybiBuZXcgYWJzdHJhY3RDb2Rlci5SZWFkZXIoZGF0YSx0aGlzLl9nZXRXb3JkU2l6ZSgpLHRoaXMuY29lcmNlRnVuYyxhbGxvd0xvb3NlKX07QWJpQ29kZXIucHJvdG90eXBlLl9nZXRXcml0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGFic3RyYWN0Q29kZXIuV3JpdGVyKHRoaXMuX2dldFdvcmRTaXplKCkpfTtBYmlDb2Rlci5wcm90b3R5cGUuZ2V0RGVmYXVsdFZhbHVlPWZ1bmN0aW9uKHR5cGVzKXt2YXIgX3RoaXM9dGhpczt2YXIgY29kZXJzPXR5cGVzLm1hcChmdW5jdGlvbih0eXBlKXtyZXR1cm4gX3RoaXMuX2dldENvZGVyKGZyYWdtZW50cy5QYXJhbVR5cGUuZnJvbSh0eXBlKSl9KTt2YXIgY29kZXI9bmV3IHR1cGxlLlR1cGxlQ29kZXIoY29kZXJzLCJfIik7cmV0dXJuIGNvZGVyLmRlZmF1bHRWYWx1ZSgpfTtBYmlDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHR5cGVzLHZhbHVlcyl7dmFyIF90aGlzPXRoaXM7aWYodHlwZXMubGVuZ3RoIT09dmFsdWVzLmxlbmd0aCl7bG9nZ2VyLnRocm93RXJyb3IoInR5cGVzL3ZhbHVlcyBsZW5ndGggbWlzbWF0Y2giLGxpYi5Mb2dnZXIuZXJyb3JzLklOVkFMSURfQVJHVU1FTlQse2NvdW50Ont0eXBlczp0eXBlcy5sZW5ndGgsdmFsdWVzOnZhbHVlcy5sZW5ndGh9LHZhbHVlOnt0eXBlczp0eXBlcyx2YWx1ZXM6dmFsdWVzfX0pfXZhciBjb2RlcnM9dHlwZXMubWFwKGZ1bmN0aW9uKHR5cGUpe3JldHVybiBfdGhpcy5fZ2V0Q29kZXIoZnJhZ21lbnRzLlBhcmFtVHlwZS5mcm9tKHR5cGUpKX0pO3ZhciBjb2Rlcj1uZXcgdHVwbGUuVHVwbGVDb2Rlcihjb2RlcnMsIl8iKTt2YXIgd3JpdGVyPXRoaXMuX2dldFdyaXRlcigpO2NvZGVyLmVuY29kZSh3cml0ZXIsdmFsdWVzKTtyZXR1cm4gd3JpdGVyLmRhdGF9O0FiaUNvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24odHlwZXMsZGF0YSxsb29zZSl7dmFyIF90aGlzPXRoaXM7dmFyIGNvZGVycz10eXBlcy5tYXAoZnVuY3Rpb24odHlwZSl7cmV0dXJuIF90aGlzLl9nZXRDb2RlcihmcmFnbWVudHMuUGFyYW1UeXBlLmZyb20odHlwZSkpfSk7dmFyIGNvZGVyPW5ldyB0dXBsZS5UdXBsZUNvZGVyKGNvZGVycywiXyIpO3JldHVybiBjb2Rlci5kZWNvZGUodGhpcy5fZ2V0UmVhZGVyKGxpYiQxLmFycmF5aWZ5KGRhdGEpLGxvb3NlKSl9O3JldHVybiBBYmlDb2Rlcn0oKTtleHBvcnRzLkFiaUNvZGVyPUFiaUNvZGVyO2V4cG9ydHMuZGVmYXVsdEFiaUNvZGVyPW5ldyBBYmlDb2Rlcn0pO3ZhciBhYmlDb2RlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFiaUNvZGVyKTt2YXIgaWRfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuaWQ9dm9pZCAwO2Z1bmN0aW9uIGlkKHRleHQpe3JldHVybiBsaWIkNC5rZWNjYWsyNTYobGliJDgudG9VdGY4Qnl0ZXModGV4dCkpfWV4cG9ydHMuaWQ9aWR9KTt2YXIgaWQ9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoaWRfMSk7dmFyIF92ZXJzaW9uJGc9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0iaGFzaC81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kaD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRnKTt2YXIgbmFtZWhhc2hfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMubmFtZWhhc2g9ZXhwb3J0cy5pc1ZhbGlkTmFtZT12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRnLnZlcnNpb24pO3ZhciBaZXJvcz1uZXcgVWludDhBcnJheSgzMik7WmVyb3MuZmlsbCgwKTt2YXIgUGFydGl0aW9uPW5ldyBSZWdFeHAoIl4oKC4qKVxcLik/KFteLl0rKSQiKTtmdW5jdGlvbiBpc1ZhbGlkTmFtZShuYW1lKXt0cnl7dmFyIGNvbXBzPW5hbWUuc3BsaXQoIi4iKTtmb3IodmFyIGk9MDtpPGNvbXBzLmxlbmd0aDtpKyspe2lmKGxpYiQ4Lm5hbWVwcmVwKGNvbXBzW2ldKS5sZW5ndGg9PT0wKXt0aHJvdyBuZXcgRXJyb3IoImVtcHR5Iil9fXJldHVybiB0cnVlfWNhdGNoKGVycm9yKXt9cmV0dXJuIGZhbHNlfWV4cG9ydHMuaXNWYWxpZE5hbWU9aXNWYWxpZE5hbWU7ZnVuY3Rpb24gbmFtZWhhc2gobmFtZSl7aWYodHlwZW9mIG5hbWUhPT0ic3RyaW5nIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBhZGRyZXNzIC0gIitTdHJpbmcobmFtZSksIm5hbWUiLG5hbWUpfXZhciByZXN1bHQ9WmVyb3M7d2hpbGUobmFtZS5sZW5ndGgpe3ZhciBwYXJ0aXRpb249bmFtZS5tYXRjaChQYXJ0aXRpb24pO3ZhciBsYWJlbD1saWIkOC50b1V0ZjhCeXRlcyhsaWIkOC5uYW1lcHJlcChwYXJ0aXRpb25bM10pKTtyZXN1bHQ9bGliJDQua2VjY2FrMjU2KGxpYiQxLmNvbmNhdChbcmVzdWx0LGxpYiQ0LmtlY2NhazI1NihsYWJlbCldKSk7bmFtZT1wYXJ0aXRpb25bMl18fCIifXJldHVybiBsaWIkMS5oZXhsaWZ5KHJlc3VsdCl9ZXhwb3J0cy5uYW1laGFzaD1uYW1laGFzaH0pO3ZhciBuYW1laGFzaD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhuYW1laGFzaF8xKTt2YXIgbWVzc2FnZT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuaGFzaE1lc3NhZ2U9ZXhwb3J0cy5tZXNzYWdlUHJlZml4PXZvaWQgMDtleHBvcnRzLm1lc3NhZ2VQcmVmaXg9IhlFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTpcbiI7ZnVuY3Rpb24gaGFzaE1lc3NhZ2UobWVzc2FnZSl7aWYodHlwZW9mIG1lc3NhZ2U9PT0ic3RyaW5nIil7bWVzc2FnZT1saWIkOC50b1V0ZjhCeXRlcyhtZXNzYWdlKX1yZXR1cm4gbGliJDQua2VjY2FrMjU2KGxpYiQxLmNvbmNhdChbbGliJDgudG9VdGY4Qnl0ZXMoZXhwb3J0cy5tZXNzYWdlUHJlZml4KSxsaWIkOC50b1V0ZjhCeXRlcyhTdHJpbmcobWVzc2FnZS5sZW5ndGgpKSxtZXNzYWdlXSkpfWV4cG9ydHMuaGFzaE1lc3NhZ2U9aGFzaE1lc3NhZ2V9KTt2YXIgbWVzc2FnZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKG1lc3NhZ2UpO3ZhciB0eXBlZERhdGE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuVHlwZWREYXRhRW5jb2Rlcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRnLnZlcnNpb24pO3ZhciBwYWRkaW5nPW5ldyBVaW50OEFycmF5KDMyKTtwYWRkaW5nLmZpbGwoMCk7dmFyIE5lZ2F0aXZlT25lPWxpYiQyLkJpZ051bWJlci5mcm9tKC0xKTt2YXIgWmVybz1saWIkMi5CaWdOdW1iZXIuZnJvbSgwKTt2YXIgT25lPWxpYiQyLkJpZ051bWJlci5mcm9tKDEpO3ZhciBNYXhVaW50MjU2PWxpYiQyLkJpZ051bWJlci5mcm9tKCIweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKTtmdW5jdGlvbiBoZXhQYWRSaWdodCh2YWx1ZSl7dmFyIGJ5dGVzPWxpYiQxLmFycmF5aWZ5KHZhbHVlKTt2YXIgcGFkT2Zmc2V0PWJ5dGVzLmxlbmd0aCUzMjtpZihwYWRPZmZzZXQpe3JldHVybiBsaWIkMS5oZXhDb25jYXQoW2J5dGVzLHBhZGRpbmcuc2xpY2UocGFkT2Zmc2V0KV0pfXJldHVybiBsaWIkMS5oZXhsaWZ5KGJ5dGVzKX12YXIgaGV4VHJ1ZT1saWIkMS5oZXhaZXJvUGFkKE9uZS50b0hleFN0cmluZygpLDMyKTt2YXIgaGV4RmFsc2U9bGliJDEuaGV4WmVyb1BhZChaZXJvLnRvSGV4U3RyaW5nKCksMzIpO3ZhciBkb21haW5GaWVsZFR5cGVzPXtuYW1lOiJzdHJpbmciLHZlcnNpb246InN0cmluZyIsY2hhaW5JZDoidWludDI1NiIsdmVyaWZ5aW5nQ29udHJhY3Q6ImFkZHJlc3MiLHNhbHQ6ImJ5dGVzMzIifTt2YXIgZG9tYWluRmllbGROYW1lcz1bIm5hbWUiLCJ2ZXJzaW9uIiwiY2hhaW5JZCIsInZlcmlmeWluZ0NvbnRyYWN0Iiwic2FsdCJdO2Z1bmN0aW9uIGNoZWNrU3RyaW5nKGtleSl7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ic3RyaW5nIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBkb21haW4gdmFsdWUgZm9yICIrSlNPTi5zdHJpbmdpZnkoa2V5KSwiZG9tYWluLiIra2V5LHZhbHVlKX1yZXR1cm4gdmFsdWV9fXZhciBkb21haW5DaGVja3M9e25hbWU6Y2hlY2tTdHJpbmcoIm5hbWUiKSx2ZXJzaW9uOmNoZWNrU3RyaW5nKCJ2ZXJzaW9uIiksY2hhaW5JZDpmdW5jdGlvbih2YWx1ZSl7dHJ5e3JldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkudG9TdHJpbmcoKX1jYXRjaChlcnJvcil7fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCdpbnZhbGlkIGRvbWFpbiB2YWx1ZSBmb3IgImNoYWluSWQiJywiZG9tYWluLmNoYWluSWQiLHZhbHVlKX0sdmVyaWZ5aW5nQ29udHJhY3Q6ZnVuY3Rpb24odmFsdWUpe3RyeXtyZXR1cm4gbGliJDYuZ2V0QWRkcmVzcyh2YWx1ZSkudG9Mb3dlckNhc2UoKX1jYXRjaChlcnJvcil7fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCdpbnZhbGlkIGRvbWFpbiB2YWx1ZSAidmVyaWZ5aW5nQ29udHJhY3QiJywiZG9tYWluLnZlcmlmeWluZ0NvbnRyYWN0Iix2YWx1ZSl9LHNhbHQ6ZnVuY3Rpb24odmFsdWUpe3RyeXt2YXIgYnl0ZXM9bGliJDEuYXJyYXlpZnkodmFsdWUpO2lmKGJ5dGVzLmxlbmd0aCE9PTMyKXt0aHJvdyBuZXcgRXJyb3IoImJhZCBsZW5ndGgiKX1yZXR1cm4gbGliJDEuaGV4bGlmeShieXRlcyl9Y2F0Y2goZXJyb3Ipe31yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcignaW52YWxpZCBkb21haW4gdmFsdWUgInNhbHQiJywiZG9tYWluLnNhbHQiLHZhbHVlKX19O2Z1bmN0aW9uIGdldEJhc2VFbmNvZGVyKHR5cGUpe3t2YXIgbWF0Y2g9dHlwZS5tYXRjaCgvXih1PylpbnQoXGQqKSQvKTtpZihtYXRjaCl7dmFyIHNpZ25lZD1tYXRjaFsxXT09PSIiO3ZhciB3aWR0aD1wYXJzZUludChtYXRjaFsyXXx8IjI1NiIpO2lmKHdpZHRoJTghPT0wfHx3aWR0aD4yNTZ8fG1hdGNoWzJdJiZtYXRjaFsyXSE9PVN0cmluZyh3aWR0aCkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbnVtZXJpYyB3aWR0aCIsInR5cGUiLHR5cGUpfXZhciBib3VuZHNVcHBlcl8xPU1heFVpbnQyNTYubWFzayhzaWduZWQ/d2lkdGgtMTp3aWR0aCk7dmFyIGJvdW5kc0xvd2VyXzE9c2lnbmVkP2JvdW5kc1VwcGVyXzEuYWRkKE9uZSkubXVsKE5lZ2F0aXZlT25lKTpaZXJvO3JldHVybiBmdW5jdGlvbih2YWx1ZSl7dmFyIHY9bGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUpO2lmKHYubHQoYm91bmRzTG93ZXJfMSl8fHYuZ3QoYm91bmRzVXBwZXJfMSkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInZhbHVlIG91dC1vZi1ib3VuZHMgZm9yICIrdHlwZSwidmFsdWUiLHZhbHVlKX1yZXR1cm4gbGliJDEuaGV4WmVyb1BhZCh2LnRvVHdvcygyNTYpLnRvSGV4U3RyaW5nKCksMzIpfX19e3ZhciBtYXRjaD10eXBlLm1hdGNoKC9eYnl0ZXMoXGQrKSQvKTtpZihtYXRjaCl7dmFyIHdpZHRoXzE9cGFyc2VJbnQobWF0Y2hbMV0pO2lmKHdpZHRoXzE9PT0wfHx3aWR0aF8xPjMyfHxtYXRjaFsxXSE9PVN0cmluZyh3aWR0aF8xKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBieXRlcyB3aWR0aCIsInR5cGUiLHR5cGUpfXJldHVybiBmdW5jdGlvbih2YWx1ZSl7dmFyIGJ5dGVzPWxpYiQxLmFycmF5aWZ5KHZhbHVlKTtpZihieXRlcy5sZW5ndGghPT13aWR0aF8xKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGxlbmd0aCBmb3IgIit0eXBlLCJ2YWx1ZSIsdmFsdWUpfXJldHVybiBoZXhQYWRSaWdodCh2YWx1ZSl9fX1zd2l0Y2godHlwZSl7Y2FzZSJhZGRyZXNzIjpyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3JldHVybiBsaWIkMS5oZXhaZXJvUGFkKGxpYiQ2LmdldEFkZHJlc3ModmFsdWUpLDMyKX07Y2FzZSJib29sIjpyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3JldHVybiF2YWx1ZT9oZXhGYWxzZTpoZXhUcnVlfTtjYXNlImJ5dGVzIjpyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3JldHVybiBsaWIkNC5rZWNjYWsyNTYodmFsdWUpfTtjYXNlInN0cmluZyI6cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gaWRfMS5pZCh2YWx1ZSl9fXJldHVybiBudWxsfWZ1bmN0aW9uIGVuY29kZVR5cGUobmFtZSxmaWVsZHMpe3JldHVybiBuYW1lKyIoIitmaWVsZHMubWFwKGZ1bmN0aW9uKF9hKXt2YXIgbmFtZT1fYS5uYW1lLHR5cGU9X2EudHlwZTtyZXR1cm4gdHlwZSsiICIrbmFtZX0pLmpvaW4oIiwiKSsiKSJ9dmFyIFR5cGVkRGF0YUVuY29kZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBUeXBlZERhdGFFbmNvZGVyKHR5cGVzKXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJ0eXBlcyIsT2JqZWN0LmZyZWV6ZShsaWIkMy5kZWVwQ29weSh0eXBlcykpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJfZW5jb2RlckNhY2hlIix7fSk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX3R5cGVzIix7fSk7dmFyIGxpbmtzPXt9O3ZhciBwYXJlbnRzPXt9O3ZhciBzdWJ0eXBlcz17fTtPYmplY3Qua2V5cyh0eXBlcykuZm9yRWFjaChmdW5jdGlvbih0eXBlKXtsaW5rc1t0eXBlXT17fTtwYXJlbnRzW3R5cGVdPVtdO3N1YnR5cGVzW3R5cGVdPXt9fSk7dmFyIF9sb29wXzE9ZnVuY3Rpb24obmFtZV8xKXt2YXIgdW5pcXVlTmFtZXM9e307dHlwZXNbbmFtZV8xXS5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKXtpZih1bmlxdWVOYW1lc1tmaWVsZC5uYW1lXSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiZHVwbGljYXRlIHZhcmlhYmxlIG5hbWUgIitKU09OLnN0cmluZ2lmeShmaWVsZC5uYW1lKSsiIGluICIrSlNPTi5zdHJpbmdpZnkobmFtZV8xKSwidHlwZXMiLHR5cGVzKX11bmlxdWVOYW1lc1tmaWVsZC5uYW1lXT10cnVlO3ZhciBiYXNlVHlwZT1maWVsZC50eXBlLm1hdGNoKC9eKFteXHg1Yl0qKShceDVifCQpLylbMV07aWYoYmFzZVR5cGU9PT1uYW1lXzEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImNpcmN1bGFyIHR5cGUgcmVmZXJlbmNlIHRvICIrSlNPTi5zdHJpbmdpZnkoYmFzZVR5cGUpLCJ0eXBlcyIsdHlwZXMpfXZhciBlbmNvZGVyPWdldEJhc2VFbmNvZGVyKGJhc2VUeXBlKTtpZihlbmNvZGVyKXtyZXR1cm59aWYoIXBhcmVudHNbYmFzZVR5cGVdKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bmtub3duIHR5cGUgIitKU09OLnN0cmluZ2lmeShiYXNlVHlwZSksInR5cGVzIix0eXBlcyl9cGFyZW50c1tiYXNlVHlwZV0ucHVzaChuYW1lXzEpO2xpbmtzW25hbWVfMV1bYmFzZVR5cGVdPXRydWV9KX07Zm9yKHZhciBuYW1lXzEgaW4gdHlwZXMpe19sb29wXzEobmFtZV8xKX12YXIgcHJpbWFyeVR5cGVzPU9iamVjdC5rZXlzKHBhcmVudHMpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gcGFyZW50c1tuXS5sZW5ndGg9PT0wfSk7aWYocHJpbWFyeVR5cGVzLmxlbmd0aD09PTApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgcHJpbWFyeSB0eXBlIiwidHlwZXMiLHR5cGVzKX1lbHNlIGlmKHByaW1hcnlUeXBlcy5sZW5ndGg+MSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYW1iaWd1b3VzIHByaW1hcnkgdHlwZXMgb3IgdW51c2VkIHR5cGVzOiAiK3ByaW1hcnlUeXBlcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfSkuam9pbigiLCAiKSwidHlwZXMiLHR5cGVzKX1saWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwcmltYXJ5VHlwZSIscHJpbWFyeVR5cGVzWzBdKTtmdW5jdGlvbiBjaGVja0NpcmN1bGFyKHR5cGUsZm91bmQpe2lmKGZvdW5kW3R5cGVdKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjaXJjdWxhciB0eXBlIHJlZmVyZW5jZSB0byAiK0pTT04uc3RyaW5naWZ5KHR5cGUpLCJ0eXBlcyIsdHlwZXMpfWZvdW5kW3R5cGVdPXRydWU7T2JqZWN0LmtleXMobGlua3NbdHlwZV0pLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpe2lmKCFwYXJlbnRzW2NoaWxkXSl7cmV0dXJufWNoZWNrQ2lyY3VsYXIoY2hpbGQsZm91bmQpO09iamVjdC5rZXlzKGZvdW5kKS5mb3JFYWNoKGZ1bmN0aW9uKHN1YnR5cGUpe3N1YnR5cGVzW3N1YnR5cGVdW2NoaWxkXT10cnVlfSl9KTtkZWxldGUgZm91bmRbdHlwZV19Y2hlY2tDaXJjdWxhcih0aGlzLnByaW1hcnlUeXBlLHt9KTtmb3IodmFyIG5hbWVfMiBpbiBzdWJ0eXBlcyl7dmFyIHN0PU9iamVjdC5rZXlzKHN1YnR5cGVzW25hbWVfMl0pO3N0LnNvcnQoKTt0aGlzLl90eXBlc1tuYW1lXzJdPWVuY29kZVR5cGUobmFtZV8yLHR5cGVzW25hbWVfMl0pK3N0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZW5jb2RlVHlwZSh0LHR5cGVzW3RdKX0pLmpvaW4oIiIpfX1UeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5nZXRFbmNvZGVyPWZ1bmN0aW9uKHR5cGUpe3ZhciBlbmNvZGVyPXRoaXMuX2VuY29kZXJDYWNoZVt0eXBlXTtpZighZW5jb2Rlcil7ZW5jb2Rlcj10aGlzLl9lbmNvZGVyQ2FjaGVbdHlwZV09dGhpcy5fZ2V0RW5jb2Rlcih0eXBlKX1yZXR1cm4gZW5jb2Rlcn07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuX2dldEVuY29kZXI9ZnVuY3Rpb24odHlwZSl7dmFyIF90aGlzPXRoaXM7e3ZhciBlbmNvZGVyPWdldEJhc2VFbmNvZGVyKHR5cGUpO2lmKGVuY29kZXIpe3JldHVybiBlbmNvZGVyfX12YXIgbWF0Y2g9dHlwZS5tYXRjaCgvXiguKikoXHg1YihcZCopXHg1ZCkkLyk7aWYobWF0Y2gpe3ZhciBzdWJ0eXBlXzE9bWF0Y2hbMV07dmFyIHN1YkVuY29kZXJfMT10aGlzLmdldEVuY29kZXIoc3VidHlwZV8xKTt2YXIgbGVuZ3RoXzE9cGFyc2VJbnQobWF0Y2hbM10pO3JldHVybiBmdW5jdGlvbih2YWx1ZSl7aWYobGVuZ3RoXzE+PTAmJnZhbHVlLmxlbmd0aCE9PWxlbmd0aF8xKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJhcnJheSBsZW5ndGggbWlzbWF0Y2g7IGV4cGVjdGVkIGxlbmd0aCAkeyBhcnJheUxlbmd0aCB9IiwidmFsdWUiLHZhbHVlKX12YXIgcmVzdWx0PXZhbHVlLm1hcChzdWJFbmNvZGVyXzEpO2lmKF90aGlzLl90eXBlc1tzdWJ0eXBlXzFdKXtyZXN1bHQ9cmVzdWx0Lm1hcChsaWIkNC5rZWNjYWsyNTYpfXJldHVybiBsaWIkNC5rZWNjYWsyNTYobGliJDEuaGV4Q29uY2F0KHJlc3VsdCkpfX12YXIgZmllbGRzPXRoaXMudHlwZXNbdHlwZV07aWYoZmllbGRzKXt2YXIgZW5jb2RlZFR5cGVfMT1pZF8xLmlkKHRoaXMuX3R5cGVzW3R5cGVdKTtyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3ZhciB2YWx1ZXM9ZmllbGRzLm1hcChmdW5jdGlvbihfYSl7dmFyIG5hbWU9X2EubmFtZSx0eXBlPV9hLnR5cGU7dmFyIHJlc3VsdD1fdGhpcy5nZXRFbmNvZGVyKHR5cGUpKHZhbHVlW25hbWVdKTtpZihfdGhpcy5fdHlwZXNbdHlwZV0pe3JldHVybiBsaWIkNC5rZWNjYWsyNTYocmVzdWx0KX1yZXR1cm4gcmVzdWx0fSk7dmFsdWVzLnVuc2hpZnQoZW5jb2RlZFR5cGVfMSk7cmV0dXJuIGxpYiQxLmhleENvbmNhdCh2YWx1ZXMpfX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5rbm93biB0eXBlOiAiK3R5cGUsInR5cGUiLHR5cGUpfTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGVUeXBlPWZ1bmN0aW9uKG5hbWUpe3ZhciByZXN1bHQ9dGhpcy5fdHlwZXNbbmFtZV07aWYoIXJlc3VsdCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5rbm93biB0eXBlOiAiK0pTT04uc3RyaW5naWZ5KG5hbWUpLCJuYW1lIixuYW1lKX1yZXR1cm4gcmVzdWx0fTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGVEYXRhPWZ1bmN0aW9uKHR5cGUsdmFsdWUpe3JldHVybiB0aGlzLmdldEVuY29kZXIodHlwZSkodmFsdWUpfTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5oYXNoU3RydWN0PWZ1bmN0aW9uKG5hbWUsdmFsdWUpe3JldHVybiBsaWIkNC5rZWNjYWsyNTYodGhpcy5lbmNvZGVEYXRhKG5hbWUsdmFsdWUpKX07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdGhpcy5lbmNvZGVEYXRhKHRoaXMucHJpbWFyeVR5cGUsdmFsdWUpfTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5oYXNoPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdGhpcy5oYXNoU3RydWN0KHRoaXMucHJpbWFyeVR5cGUsdmFsdWUpfTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5fdmlzaXQ9ZnVuY3Rpb24odHlwZSx2YWx1ZSxjYWxsYmFjayl7dmFyIF90aGlzPXRoaXM7e3ZhciBlbmNvZGVyPWdldEJhc2VFbmNvZGVyKHR5cGUpO2lmKGVuY29kZXIpe3JldHVybiBjYWxsYmFjayh0eXBlLHZhbHVlKX19dmFyIG1hdGNoPXR5cGUubWF0Y2goL14oLiopKFx4NWIoXGQqKVx4NWQpJC8pO2lmKG1hdGNoKXt2YXIgc3VidHlwZV8yPW1hdGNoWzFdO3ZhciBsZW5ndGhfMj1wYXJzZUludChtYXRjaFszXSk7aWYobGVuZ3RoXzI+PTAmJnZhbHVlLmxlbmd0aCE9PWxlbmd0aF8yKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJhcnJheSBsZW5ndGggbWlzbWF0Y2g7IGV4cGVjdGVkIGxlbmd0aCAkeyBhcnJheUxlbmd0aCB9IiwidmFsdWUiLHZhbHVlKX1yZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBfdGhpcy5fdmlzaXQoc3VidHlwZV8yLHYsY2FsbGJhY2spfSl9dmFyIGZpZWxkcz10aGlzLnR5cGVzW3R5cGVdO2lmKGZpZWxkcyl7cmV0dXJuIGZpZWxkcy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sX2Epe3ZhciBuYW1lPV9hLm5hbWUsdHlwZT1fYS50eXBlO2FjY3VtW25hbWVdPV90aGlzLl92aXNpdCh0eXBlLHZhbHVlW25hbWVdLGNhbGxiYWNrKTtyZXR1cm4gYWNjdW19LHt9KX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5rbm93biB0eXBlOiAiK3R5cGUsInR5cGUiLHR5cGUpfTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS52aXNpdD1mdW5jdGlvbih2YWx1ZSxjYWxsYmFjayl7cmV0dXJuIHRoaXMuX3Zpc2l0KHRoaXMucHJpbWFyeVR5cGUsdmFsdWUsY2FsbGJhY2spfTtUeXBlZERhdGFFbmNvZGVyLmZyb209ZnVuY3Rpb24odHlwZXMpe3JldHVybiBuZXcgVHlwZWREYXRhRW5jb2Rlcih0eXBlcyl9O1R5cGVkRGF0YUVuY29kZXIuZ2V0UHJpbWFyeVR5cGU9ZnVuY3Rpb24odHlwZXMpe3JldHVybiBUeXBlZERhdGFFbmNvZGVyLmZyb20odHlwZXMpLnByaW1hcnlUeXBlfTtUeXBlZERhdGFFbmNvZGVyLmhhc2hTdHJ1Y3Q9ZnVuY3Rpb24obmFtZSx0eXBlcyx2YWx1ZSl7cmV0dXJuIFR5cGVkRGF0YUVuY29kZXIuZnJvbSh0eXBlcykuaGFzaFN0cnVjdChuYW1lLHZhbHVlKX07VHlwZWREYXRhRW5jb2Rlci5oYXNoRG9tYWluPWZ1bmN0aW9uKGRvbWFpbil7dmFyIGRvbWFpbkZpZWxkcz1bXTtmb3IodmFyIG5hbWVfMyBpbiBkb21haW4pe3ZhciB0eXBlPWRvbWFpbkZpZWxkVHlwZXNbbmFtZV8zXTtpZighdHlwZSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB0eXBlZC1kYXRhIGRvbWFpbiBrZXk6ICIrSlNPTi5zdHJpbmdpZnkobmFtZV8zKSwiZG9tYWluIixkb21haW4pfWRvbWFpbkZpZWxkcy5wdXNoKHtuYW1lOm5hbWVfMyx0eXBlOnR5cGV9KX1kb21haW5GaWVsZHMuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBkb21haW5GaWVsZE5hbWVzLmluZGV4T2YoYS5uYW1lKS1kb21haW5GaWVsZE5hbWVzLmluZGV4T2YoYi5uYW1lKX0pO3JldHVybiBUeXBlZERhdGFFbmNvZGVyLmhhc2hTdHJ1Y3QoIkVJUDcxMkRvbWFpbiIse0VJUDcxMkRvbWFpbjpkb21haW5GaWVsZHN9LGRvbWFpbil9O1R5cGVkRGF0YUVuY29kZXIuZW5jb2RlPWZ1bmN0aW9uKGRvbWFpbix0eXBlcyx2YWx1ZSl7cmV0dXJuIGxpYiQxLmhleENvbmNhdChbIjB4MTkwMSIsVHlwZWREYXRhRW5jb2Rlci5oYXNoRG9tYWluKGRvbWFpbiksVHlwZWREYXRhRW5jb2Rlci5mcm9tKHR5cGVzKS5oYXNoKHZhbHVlKV0pfTtUeXBlZERhdGFFbmNvZGVyLmhhc2g9ZnVuY3Rpb24oZG9tYWluLHR5cGVzLHZhbHVlKXtyZXR1cm4gbGliJDQua2VjY2FrMjU2KFR5cGVkRGF0YUVuY29kZXIuZW5jb2RlKGRvbWFpbix0eXBlcyx2YWx1ZSkpfTtUeXBlZERhdGFFbmNvZGVyLnJlc29sdmVOYW1lcz1mdW5jdGlvbihkb21haW4sdHlwZXMsdmFsdWUscmVzb2x2ZU5hbWUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVuc0NhY2hlLGVuY29kZXIsX2EsX2IsX2ksbmFtZV80LF9jLF9kO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9lKXtzd2l0Y2goX2UubGFiZWwpe2Nhc2UgMDpkb21haW49bGliJDMuc2hhbGxvd0NvcHkoZG9tYWluKTtlbnNDYWNoZT17fTtpZihkb21haW4udmVyaWZ5aW5nQ29udHJhY3QmJiFsaWIkMS5pc0hleFN0cmluZyhkb21haW4udmVyaWZ5aW5nQ29udHJhY3QsMjApKXtlbnNDYWNoZVtkb21haW4udmVyaWZ5aW5nQ29udHJhY3RdPSIweCJ9ZW5jb2Rlcj1UeXBlZERhdGFFbmNvZGVyLmZyb20odHlwZXMpO2VuY29kZXIudmlzaXQodmFsdWUsZnVuY3Rpb24odHlwZSx2YWx1ZSl7aWYodHlwZT09PSJhZGRyZXNzIiYmIWxpYiQxLmlzSGV4U3RyaW5nKHZhbHVlLDIwKSl7ZW5zQ2FjaGVbdmFsdWVdPSIweCJ9cmV0dXJuIHZhbHVlfSk7X2E9W107Zm9yKF9iIGluIGVuc0NhY2hlKV9hLnB1c2goX2IpO19pPTA7X2UubGFiZWw9MTtjYXNlIDE6aWYoIShfaTxfYS5sZW5ndGgpKXJldHVyblszLDRdO25hbWVfND1fYVtfaV07X2M9ZW5zQ2FjaGU7X2Q9bmFtZV80O3JldHVybls0LHJlc29sdmVOYW1lKG5hbWVfNCldO2Nhc2UgMjpfY1tfZF09X2Uuc2VudCgpO19lLmxhYmVsPTM7Y2FzZSAzOl9pKys7cmV0dXJuWzMsMV07Y2FzZSA0OmlmKGRvbWFpbi52ZXJpZnlpbmdDb250cmFjdCYmZW5zQ2FjaGVbZG9tYWluLnZlcmlmeWluZ0NvbnRyYWN0XSl7ZG9tYWluLnZlcmlmeWluZ0NvbnRyYWN0PWVuc0NhY2hlW2RvbWFpbi52ZXJpZnlpbmdDb250cmFjdF19dmFsdWU9ZW5jb2Rlci52aXNpdCh2YWx1ZSxmdW5jdGlvbih0eXBlLHZhbHVlKXtpZih0eXBlPT09ImFkZHJlc3MiJiZlbnNDYWNoZVt2YWx1ZV0pe3JldHVybiBlbnNDYWNoZVt2YWx1ZV19cmV0dXJuIHZhbHVlfSk7cmV0dXJuWzIse2RvbWFpbjpkb21haW4sdmFsdWU6dmFsdWV9XX19KX0pfTtUeXBlZERhdGFFbmNvZGVyLmdldFBheWxvYWQ9ZnVuY3Rpb24oZG9tYWluLHR5cGVzLHZhbHVlKXtUeXBlZERhdGFFbmNvZGVyLmhhc2hEb21haW4oZG9tYWluKTt2YXIgZG9tYWluVmFsdWVzPXt9O3ZhciBkb21haW5UeXBlcz1bXTtkb21haW5GaWVsZE5hbWVzLmZvckVhY2goZnVuY3Rpb24obmFtZSl7dmFyIHZhbHVlPWRvbWFpbltuYW1lXTtpZih2YWx1ZT09bnVsbCl7cmV0dXJufWRvbWFpblZhbHVlc1tuYW1lXT1kb21haW5DaGVja3NbbmFtZV0odmFsdWUpO2RvbWFpblR5cGVzLnB1c2goe25hbWU6bmFtZSx0eXBlOmRvbWFpbkZpZWxkVHlwZXNbbmFtZV19KX0pO3ZhciBlbmNvZGVyPVR5cGVkRGF0YUVuY29kZXIuZnJvbSh0eXBlcyk7dmFyIHR5cGVzV2l0aERvbWFpbj1saWIkMy5zaGFsbG93Q29weSh0eXBlcyk7aWYodHlwZXNXaXRoRG9tYWluLkVJUDcxMkRvbWFpbil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidHlwZXMgbXVzdCBub3QgY29udGFpbiBFSVA3MTJEb21haW4gdHlwZSIsInR5cGVzLkVJUDcxMkRvbWFpbiIsdHlwZXMpfWVsc2V7dHlwZXNXaXRoRG9tYWluLkVJUDcxMkRvbWFpbj1kb21haW5UeXBlc31lbmNvZGVyLmVuY29kZSh2YWx1ZSk7cmV0dXJue3R5cGVzOnR5cGVzV2l0aERvbWFpbixkb21haW46ZG9tYWluVmFsdWVzLHByaW1hcnlUeXBlOmVuY29kZXIucHJpbWFyeVR5cGUsbWVzc2FnZTplbmNvZGVyLnZpc2l0KHZhbHVlLGZ1bmN0aW9uKHR5cGUsdmFsdWUpe2lmKHR5cGUubWF0Y2goL15ieXRlcyhcZCopLykpe3JldHVybiBsaWIkMS5oZXhsaWZ5KGxpYiQxLmFycmF5aWZ5KHZhbHVlKSl9aWYodHlwZS5tYXRjaCgvXnU/aW50Lykpe3JldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkudG9TdHJpbmcoKX1zd2l0Y2godHlwZSl7Y2FzZSJhZGRyZXNzIjpyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtjYXNlImJvb2wiOnJldHVybiEhdmFsdWU7Y2FzZSJzdHJpbmciOmlmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmciKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHN0cmluZyIsInZhbHVlIix2YWx1ZSl9cmV0dXJuIHZhbHVlfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCB0eXBlIiwidHlwZSIsdHlwZSl9KX19O3JldHVybiBUeXBlZERhdGFFbmNvZGVyfSgpO2V4cG9ydHMuVHlwZWREYXRhRW5jb2Rlcj1UeXBlZERhdGFFbmNvZGVyfSk7dmFyIHR5cGVkRGF0YSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHR5cGVkRGF0YSk7dmFyIGxpYiQ5PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5fVHlwZWREYXRhRW5jb2Rlcj1leHBvcnRzLmhhc2hNZXNzYWdlPWV4cG9ydHMubWVzc2FnZVByZWZpeD1leHBvcnRzLmlzVmFsaWROYW1lPWV4cG9ydHMubmFtZWhhc2g9ZXhwb3J0cy5pZD12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpZF8xLmlkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc1ZhbGlkTmFtZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmFtZWhhc2hfMS5pc1ZhbGlkTmFtZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibmFtZWhhc2giLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5hbWVoYXNoXzEubmFtZWhhc2h9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImhhc2hNZXNzYWdlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtZXNzYWdlLmhhc2hNZXNzYWdlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJtZXNzYWdlUHJlZml4Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtZXNzYWdlLm1lc3NhZ2VQcmVmaXh9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9UeXBlZERhdGFFbmNvZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0eXBlZERhdGEuVHlwZWREYXRhRW5jb2Rlcn19KX0pO3ZhciBpbmRleCQ5PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiQ5KTt2YXIgX2ludGVyZmFjZT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkludGVyZmFjZT1leHBvcnRzLkluZGV4ZWQ9ZXhwb3J0cy5UcmFuc2FjdGlvbkRlc2NyaXB0aW9uPWV4cG9ydHMuTG9nRGVzY3JpcHRpb249ZXhwb3J0cy5jaGVja1Jlc3VsdEVycm9ycz12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNoZWNrUmVzdWx0RXJyb3JzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBhYnN0cmFjdENvZGVyLmNoZWNrUmVzdWx0RXJyb3JzfX0pO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kOC52ZXJzaW9uKTt2YXIgTG9nRGVzY3JpcHRpb249ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTG9nRGVzY3JpcHRpb24sX3N1cGVyKTtmdW5jdGlvbiBMb2dEZXNjcmlwdGlvbigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBMb2dEZXNjcmlwdGlvbn0obGliJDMuRGVzY3JpcHRpb24pO2V4cG9ydHMuTG9nRGVzY3JpcHRpb249TG9nRGVzY3JpcHRpb247dmFyIFRyYW5zYWN0aW9uRGVzY3JpcHRpb249ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVHJhbnNhY3Rpb25EZXNjcmlwdGlvbixfc3VwZXIpO2Z1bmN0aW9uIFRyYW5zYWN0aW9uRGVzY3JpcHRpb24oKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gVHJhbnNhY3Rpb25EZXNjcmlwdGlvbn0obGliJDMuRGVzY3JpcHRpb24pO2V4cG9ydHMuVHJhbnNhY3Rpb25EZXNjcmlwdGlvbj1UcmFuc2FjdGlvbkRlc2NyaXB0aW9uO3ZhciBJbmRleGVkPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEluZGV4ZWQsX3N1cGVyKTtmdW5jdGlvbiBJbmRleGVkKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9SW5kZXhlZC5pc0luZGV4ZWQ9ZnVuY3Rpb24odmFsdWUpe3JldHVybiEhKHZhbHVlJiZ2YWx1ZS5faXNJbmRleGVkKX07cmV0dXJuIEluZGV4ZWR9KGxpYiQzLkRlc2NyaXB0aW9uKTtleHBvcnRzLkluZGV4ZWQ9SW5kZXhlZDt2YXIgQnVpbHRpbkVycm9ycz17IjB4MDhjMzc5YTAiOntzaWduYXR1cmU6IkVycm9yKHN0cmluZykiLG5hbWU6IkVycm9yIixpbnB1dHM6WyJzdHJpbmciXSxyZWFzb246dHJ1ZX0sIjB4NGU0ODdiNzEiOntzaWduYXR1cmU6IlBhbmljKHVpbnQyNTYpIixuYW1lOiJQYW5pYyIsaW5wdXRzOlsidWludDI1NiJdfX07ZnVuY3Rpb24gd3JhcEFjY2Vzc0Vycm9yKHByb3BlcnR5LGVycm9yKXt2YXIgd3JhcD1uZXcgRXJyb3IoImRlZmVycmVkIGVycm9yIGR1cmluZyBBQkkgZGVjb2RpbmcgdHJpZ2dlcmVkIGFjY2Vzc2luZyAiK3Byb3BlcnR5KTt3cmFwLmVycm9yPWVycm9yO3JldHVybiB3cmFwfXZhciBJbnRlcmZhY2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBJbnRlcmZhY2UoZnJhZ21lbnRzJDEpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPXRoaXM7bG9nZ2VyLmNoZWNrTmV3KF9uZXdUYXJnZXQsSW50ZXJmYWNlKTt2YXIgYWJpPVtdO2lmKHR5cGVvZiBmcmFnbWVudHMkMT09PSJzdHJpbmciKXthYmk9SlNPTi5wYXJzZShmcmFnbWVudHMkMSl9ZWxzZXthYmk9ZnJhZ21lbnRzJDF9bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiZnJhZ21lbnRzIixhYmkubWFwKGZ1bmN0aW9uKGZyYWdtZW50KXtyZXR1cm4gZnJhZ21lbnRzLkZyYWdtZW50LmZyb20oZnJhZ21lbnQpfSkuZmlsdGVyKGZ1bmN0aW9uKGZyYWdtZW50KXtyZXR1cm4gZnJhZ21lbnQhPW51bGx9KSk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX2FiaUNvZGVyIixsaWIkMy5nZXRTdGF0aWMoX25ld1RhcmdldCwiZ2V0QWJpQ29kZXIiKSgpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJmdW5jdGlvbnMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJlcnJvcnMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJldmVudHMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJzdHJ1Y3RzIix7fSk7dGhpcy5mcmFnbWVudHMuZm9yRWFjaChmdW5jdGlvbihmcmFnbWVudCl7dmFyIGJ1Y2tldD1udWxsO3N3aXRjaChmcmFnbWVudC50eXBlKXtjYXNlImNvbnN0cnVjdG9yIjppZihfdGhpcy5kZXBsb3kpe2xvZ2dlci53YXJuKCJkdXBsaWNhdGUgZGVmaW5pdGlvbiAtIGNvbnN0cnVjdG9yIik7cmV0dXJufWxpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJkZXBsb3kiLGZyYWdtZW50KTtyZXR1cm47Y2FzZSJmdW5jdGlvbiI6YnVja2V0PV90aGlzLmZ1bmN0aW9uczticmVhaztjYXNlImV2ZW50IjpidWNrZXQ9X3RoaXMuZXZlbnRzO2JyZWFrO2Nhc2UiZXJyb3IiOmJ1Y2tldD1fdGhpcy5lcnJvcnM7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmFyIHNpZ25hdHVyZT1mcmFnbWVudC5mb3JtYXQoKTtpZihidWNrZXRbc2lnbmF0dXJlXSl7bG9nZ2VyLndhcm4oImR1cGxpY2F0ZSBkZWZpbml0aW9uIC0gIitzaWduYXR1cmUpO3JldHVybn1idWNrZXRbc2lnbmF0dXJlXT1mcmFnbWVudH0pO2lmKCF0aGlzLmRlcGxveSl7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiZGVwbG95IixmcmFnbWVudHMuQ29uc3RydWN0b3JGcmFnbWVudC5mcm9tKHtwYXlhYmxlOmZhbHNlLHR5cGU6ImNvbnN0cnVjdG9yIn0pKX1saWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJfaXNJbnRlcmZhY2UiLHRydWUpfUludGVyZmFjZS5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGZvcm1hdCl7aWYoIWZvcm1hdCl7Zm9ybWF0PWZyYWdtZW50cy5Gb3JtYXRUeXBlcy5mdWxsfWlmKGZvcm1hdD09PWZyYWdtZW50cy5Gb3JtYXRUeXBlcy5zaWdoYXNoKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnRlcmZhY2UgZG9lcyBub3Qgc3VwcG9ydCBmb3JtYXR0aW5nIHNpZ2hhc2giLCJmb3JtYXQiLGZvcm1hdCl9dmFyIGFiaT10aGlzLmZyYWdtZW50cy5tYXAoZnVuY3Rpb24oZnJhZ21lbnQpe3JldHVybiBmcmFnbWVudC5mb3JtYXQoZm9ybWF0KX0pO2lmKGZvcm1hdD09PWZyYWdtZW50cy5Gb3JtYXRUeXBlcy5qc29uKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYWJpLm1hcChmdW5jdGlvbihqKXtyZXR1cm4gSlNPTi5wYXJzZShqKX0pKX1yZXR1cm4gYWJpfTtJbnRlcmZhY2UuZ2V0QWJpQ29kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gYWJpQ29kZXIuZGVmYXVsdEFiaUNvZGVyfTtJbnRlcmZhY2UuZ2V0QWRkcmVzcz1mdW5jdGlvbihhZGRyZXNzKXtyZXR1cm4gbGliJDYuZ2V0QWRkcmVzcyhhZGRyZXNzKX07SW50ZXJmYWNlLmdldFNpZ2hhc2g9ZnVuY3Rpb24oZnJhZ21lbnQpe3JldHVybiBsaWIkMS5oZXhEYXRhU2xpY2UobGliJDkuaWQoZnJhZ21lbnQuZm9ybWF0KCkpLDAsNCl9O0ludGVyZmFjZS5nZXRFdmVudFRvcGljPWZ1bmN0aW9uKGV2ZW50RnJhZ21lbnQpe3JldHVybiBsaWIkOS5pZChldmVudEZyYWdtZW50LmZvcm1hdCgpKX07SW50ZXJmYWNlLnByb3RvdHlwZS5nZXRGdW5jdGlvbj1mdW5jdGlvbihuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2gpe2lmKGxpYiQxLmlzSGV4U3RyaW5nKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCkpe2Zvcih2YXIgbmFtZV8xIGluIHRoaXMuZnVuY3Rpb25zKXtpZihuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2g9PT10aGlzLmdldFNpZ2hhc2gobmFtZV8xKSl7cmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVfMV19fWxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIiwic2lnaGFzaCIsbmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKX1pZihuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2guaW5kZXhPZigiKCIpPT09LTEpe3ZhciBuYW1lXzI9bmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoLnRyaW0oKTt2YXIgbWF0Y2hpbmc9T2JqZWN0LmtleXModGhpcy5mdW5jdGlvbnMpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5zcGxpdCgiKCIpWzBdPT09bmFtZV8yfSk7aWYobWF0Y2hpbmcubGVuZ3RoPT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZnVuY3Rpb24iLCJuYW1lIixuYW1lXzIpfWVsc2UgaWYobWF0Y2hpbmcubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm11bHRpcGxlIG1hdGNoaW5nIGZ1bmN0aW9ucyIsIm5hbWUiLG5hbWVfMil9cmV0dXJuIHRoaXMuZnVuY3Rpb25zW21hdGNoaW5nWzBdXX12YXIgcmVzdWx0PXRoaXMuZnVuY3Rpb25zW2ZyYWdtZW50cy5GdW5jdGlvbkZyYWdtZW50LmZyb21TdHJpbmcobmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKS5mb3JtYXQoKV07aWYoIXJlc3VsdCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZnVuY3Rpb24iLCJzaWduYXR1cmUiLG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCl9cmV0dXJuIHJlc3VsdH07SW50ZXJmYWNlLnByb3RvdHlwZS5nZXRFdmVudD1mdW5jdGlvbihuYW1lT3JTaWduYXR1cmVPclRvcGljKXtpZihsaWIkMS5pc0hleFN0cmluZyhuYW1lT3JTaWduYXR1cmVPclRvcGljKSl7dmFyIHRvcGljaGFzaD1uYW1lT3JTaWduYXR1cmVPclRvcGljLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBuYW1lXzMgaW4gdGhpcy5ldmVudHMpe2lmKHRvcGljaGFzaD09PXRoaXMuZ2V0RXZlbnRUb3BpYyhuYW1lXzMpKXtyZXR1cm4gdGhpcy5ldmVudHNbbmFtZV8zXX19bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZXZlbnQiLCJ0b3BpY2hhc2giLHRvcGljaGFzaCl9aWYobmFtZU9yU2lnbmF0dXJlT3JUb3BpYy5pbmRleE9mKCIoIik9PT0tMSl7dmFyIG5hbWVfND1uYW1lT3JTaWduYXR1cmVPclRvcGljLnRyaW0oKTt2YXIgbWF0Y2hpbmc9T2JqZWN0LmtleXModGhpcy5ldmVudHMpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5zcGxpdCgiKCIpWzBdPT09bmFtZV80fSk7aWYobWF0Y2hpbmcubGVuZ3RoPT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZXZlbnQiLCJuYW1lIixuYW1lXzQpfWVsc2UgaWYobWF0Y2hpbmcubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm11bHRpcGxlIG1hdGNoaW5nIGV2ZW50cyIsIm5hbWUiLG5hbWVfNCl9cmV0dXJuIHRoaXMuZXZlbnRzW21hdGNoaW5nWzBdXX12YXIgcmVzdWx0PXRoaXMuZXZlbnRzW2ZyYWdtZW50cy5FdmVudEZyYWdtZW50LmZyb21TdHJpbmcobmFtZU9yU2lnbmF0dXJlT3JUb3BpYykuZm9ybWF0KCldO2lmKCFyZXN1bHQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5vIG1hdGNoaW5nIGV2ZW50Iiwic2lnbmF0dXJlIixuYW1lT3JTaWduYXR1cmVPclRvcGljKX1yZXR1cm4gcmVzdWx0fTtJbnRlcmZhY2UucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCl7aWYobGliJDEuaXNIZXhTdHJpbmcobmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKSl7dmFyIGdldFNpZ2hhc2g9bGliJDMuZ2V0U3RhdGljKHRoaXMuY29uc3RydWN0b3IsImdldFNpZ2hhc2giKTtmb3IodmFyIG5hbWVfNSBpbiB0aGlzLmVycm9ycyl7dmFyIGVycm9yPXRoaXMuZXJyb3JzW25hbWVfNV07aWYobmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoPT09Z2V0U2lnaGFzaChlcnJvcikpe3JldHVybiB0aGlzLmVycm9yc1tuYW1lXzVdfX1sb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJubyBtYXRjaGluZyBlcnJvciIsInNpZ2hhc2giLG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCl9aWYobmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoLmluZGV4T2YoIigiKT09PS0xKXt2YXIgbmFtZV82PW5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaC50cmltKCk7dmFyIG1hdGNoaW5nPU9iamVjdC5rZXlzKHRoaXMuZXJyb3JzKS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGYuc3BsaXQoIigiKVswXT09PW5hbWVfNn0pO2lmKG1hdGNoaW5nLmxlbmd0aD09PTApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5vIG1hdGNoaW5nIGVycm9yIiwibmFtZSIsbmFtZV82KX1lbHNlIGlmKG1hdGNoaW5nLmxlbmd0aD4xKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJtdWx0aXBsZSBtYXRjaGluZyBlcnJvcnMiLCJuYW1lIixuYW1lXzYpfXJldHVybiB0aGlzLmVycm9yc1ttYXRjaGluZ1swXV19dmFyIHJlc3VsdD10aGlzLmVycm9yc1tmcmFnbWVudHMuRnVuY3Rpb25GcmFnbWVudC5mcm9tU3RyaW5nKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCkuZm9ybWF0KCldO2lmKCFyZXN1bHQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5vIG1hdGNoaW5nIGVycm9yIiwic2lnbmF0dXJlIixuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2gpfXJldHVybiByZXN1bHR9O0ludGVyZmFjZS5wcm90b3R5cGUuZ2V0U2lnaGFzaD1mdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50KXtpZih0eXBlb2YgZnVuY3Rpb25GcmFnbWVudD09PSJzdHJpbmciKXtmdW5jdGlvbkZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24oZnVuY3Rpb25GcmFnbWVudCl9cmV0dXJuIGxpYiQzLmdldFN0YXRpYyh0aGlzLmNvbnN0cnVjdG9yLCJnZXRTaWdoYXNoIikoZnVuY3Rpb25GcmFnbWVudCl9O0ludGVyZmFjZS5wcm90b3R5cGUuZ2V0RXZlbnRUb3BpYz1mdW5jdGlvbihldmVudEZyYWdtZW50KXtpZih0eXBlb2YgZXZlbnRGcmFnbWVudD09PSJzdHJpbmciKXtldmVudEZyYWdtZW50PXRoaXMuZ2V0RXZlbnQoZXZlbnRGcmFnbWVudCl9cmV0dXJuIGxpYiQzLmdldFN0YXRpYyh0aGlzLmNvbnN0cnVjdG9yLCJnZXRFdmVudFRvcGljIikoZXZlbnRGcmFnbWVudCl9O0ludGVyZmFjZS5wcm90b3R5cGUuX2RlY29kZVBhcmFtcz1mdW5jdGlvbihwYXJhbXMsZGF0YSl7cmV0dXJuIHRoaXMuX2FiaUNvZGVyLmRlY29kZShwYXJhbXMsZGF0YSl9O0ludGVyZmFjZS5wcm90b3R5cGUuX2VuY29kZVBhcmFtcz1mdW5jdGlvbihwYXJhbXMsdmFsdWVzKXtyZXR1cm4gdGhpcy5fYWJpQ29kZXIuZW5jb2RlKHBhcmFtcyx2YWx1ZXMpfTtJbnRlcmZhY2UucHJvdG90eXBlLmVuY29kZURlcGxveT1mdW5jdGlvbih2YWx1ZXMpe3JldHVybiB0aGlzLl9lbmNvZGVQYXJhbXModGhpcy5kZXBsb3kuaW5wdXRzLHZhbHVlc3x8W10pfTtJbnRlcmZhY2UucHJvdG90eXBlLmRlY29kZUZ1bmN0aW9uRGF0YT1mdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50LGRhdGEpe2lmKHR5cGVvZiBmdW5jdGlvbkZyYWdtZW50PT09InN0cmluZyIpe2Z1bmN0aW9uRnJhZ21lbnQ9dGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50KX12YXIgYnl0ZXM9bGliJDEuYXJyYXlpZnkoZGF0YSk7aWYobGliJDEuaGV4bGlmeShieXRlcy5zbGljZSgwLDQpKSE9PXRoaXMuZ2V0U2lnaGFzaChmdW5jdGlvbkZyYWdtZW50KSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiZGF0YSBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2ggZnVuY3Rpb24gIitmdW5jdGlvbkZyYWdtZW50Lm5hbWUrIi4iLCJkYXRhIixsaWIkMS5oZXhsaWZ5KGJ5dGVzKSl9cmV0dXJuIHRoaXMuX2RlY29kZVBhcmFtcyhmdW5jdGlvbkZyYWdtZW50LmlucHV0cyxieXRlcy5zbGljZSg0KSl9O0ludGVyZmFjZS5wcm90b3R5cGUuZW5jb2RlRnVuY3Rpb25EYXRhPWZ1bmN0aW9uKGZ1bmN0aW9uRnJhZ21lbnQsdmFsdWVzKXtpZih0eXBlb2YgZnVuY3Rpb25GcmFnbWVudD09PSJzdHJpbmciKXtmdW5jdGlvbkZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24oZnVuY3Rpb25GcmFnbWVudCl9cmV0dXJuIGxpYiQxLmhleGxpZnkobGliJDEuY29uY2F0KFt0aGlzLmdldFNpZ2hhc2goZnVuY3Rpb25GcmFnbWVudCksdGhpcy5fZW5jb2RlUGFyYW1zKGZ1bmN0aW9uRnJhZ21lbnQuaW5wdXRzLHZhbHVlc3x8W10pXSkpfTtJbnRlcmZhY2UucHJvdG90eXBlLmRlY29kZUZ1bmN0aW9uUmVzdWx0PWZ1bmN0aW9uKGZ1bmN0aW9uRnJhZ21lbnQsZGF0YSl7aWYodHlwZW9mIGZ1bmN0aW9uRnJhZ21lbnQ9PT0ic3RyaW5nIil7ZnVuY3Rpb25GcmFnbWVudD10aGlzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uRnJhZ21lbnQpfXZhciBieXRlcz1saWIkMS5hcnJheWlmeShkYXRhKTt2YXIgcmVhc29uPW51bGw7dmFyIGVycm9yQXJncz1udWxsO3ZhciBlcnJvck5hbWU9bnVsbDt2YXIgZXJyb3JTaWduYXR1cmU9bnVsbDtzd2l0Y2goYnl0ZXMubGVuZ3RoJXRoaXMuX2FiaUNvZGVyLl9nZXRXb3JkU2l6ZSgpKXtjYXNlIDA6dHJ5e3JldHVybiB0aGlzLl9hYmlDb2Rlci5kZWNvZGUoZnVuY3Rpb25GcmFnbWVudC5vdXRwdXRzLGJ5dGVzKX1jYXRjaChlcnJvcil7fWJyZWFrO2Nhc2UgNDp7dmFyIHNlbGVjdG9yPWxpYiQxLmhleGxpZnkoYnl0ZXMuc2xpY2UoMCw0KSk7dmFyIGJ1aWx0aW49QnVpbHRpbkVycm9yc1tzZWxlY3Rvcl07aWYoYnVpbHRpbil7ZXJyb3JBcmdzPXRoaXMuX2FiaUNvZGVyLmRlY29kZShidWlsdGluLmlucHV0cyxieXRlcy5zbGljZSg0KSk7ZXJyb3JOYW1lPWJ1aWx0aW4ubmFtZTtlcnJvclNpZ25hdHVyZT1idWlsdGluLnNpZ25hdHVyZTtpZihidWlsdGluLnJlYXNvbil7cmVhc29uPWVycm9yQXJnc1swXX19ZWxzZXt0cnl7dmFyIGVycm9yPXRoaXMuZ2V0RXJyb3Ioc2VsZWN0b3IpO2Vycm9yQXJncz10aGlzLl9hYmlDb2Rlci5kZWNvZGUoZXJyb3IuaW5wdXRzLGJ5dGVzLnNsaWNlKDQpKTtlcnJvck5hbWU9ZXJyb3IubmFtZTtlcnJvclNpZ25hdHVyZT1lcnJvci5mb3JtYXQoKX1jYXRjaChlcnJvcil7Y29uc29sZS5sb2coZXJyb3IpfX1icmVha319cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKCJjYWxsIHJldmVydCBleGNlcHRpb24iLGxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLHttZXRob2Q6ZnVuY3Rpb25GcmFnbWVudC5mb3JtYXQoKSxlcnJvckFyZ3M6ZXJyb3JBcmdzLGVycm9yTmFtZTplcnJvck5hbWUsZXJyb3JTaWduYXR1cmU6ZXJyb3JTaWduYXR1cmUscmVhc29uOnJlYXNvbn0pfTtJbnRlcmZhY2UucHJvdG90eXBlLmVuY29kZUZ1bmN0aW9uUmVzdWx0PWZ1bmN0aW9uKGZ1bmN0aW9uRnJhZ21lbnQsdmFsdWVzKXtpZih0eXBlb2YgZnVuY3Rpb25GcmFnbWVudD09PSJzdHJpbmciKXtmdW5jdGlvbkZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24oZnVuY3Rpb25GcmFnbWVudCl9cmV0dXJuIGxpYiQxLmhleGxpZnkodGhpcy5fYWJpQ29kZXIuZW5jb2RlKGZ1bmN0aW9uRnJhZ21lbnQub3V0cHV0cyx2YWx1ZXN8fFtdKSl9O0ludGVyZmFjZS5wcm90b3R5cGUuZW5jb2RlRmlsdGVyVG9waWNzPWZ1bmN0aW9uKGV2ZW50RnJhZ21lbnQsdmFsdWVzKXt2YXIgX3RoaXM9dGhpcztpZih0eXBlb2YgZXZlbnRGcmFnbWVudD09PSJzdHJpbmciKXtldmVudEZyYWdtZW50PXRoaXMuZ2V0RXZlbnQoZXZlbnRGcmFnbWVudCl9aWYodmFsdWVzLmxlbmd0aD5ldmVudEZyYWdtZW50LmlucHV0cy5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJ0b28gbWFueSBhcmd1bWVudHMgZm9yICIrZXZlbnRGcmFnbWVudC5mb3JtYXQoKSxsaWIuTG9nZ2VyLmVycm9ycy5VTkVYUEVDVEVEX0FSR1VNRU5ULHthcmd1bWVudDoidmFsdWVzIix2YWx1ZTp2YWx1ZXN9KX12YXIgdG9waWNzPVtdO2lmKCFldmVudEZyYWdtZW50LmFub255bW91cyl7dG9waWNzLnB1c2godGhpcy5nZXRFdmVudFRvcGljKGV2ZW50RnJhZ21lbnQpKX12YXIgZW5jb2RlVG9waWM9ZnVuY3Rpb24ocGFyYW0sdmFsdWUpe2lmKHBhcmFtLnR5cGU9PT0ic3RyaW5nIil7cmV0dXJuIGxpYiQ5LmlkKHZhbHVlKX1lbHNlIGlmKHBhcmFtLnR5cGU9PT0iYnl0ZXMiKXtyZXR1cm4gbGliJDQua2VjY2FrMjU2KGxpYiQxLmhleGxpZnkodmFsdWUpKX1pZihwYXJhbS50eXBlPT09ImFkZHJlc3MiKXtfdGhpcy5fYWJpQ29kZXIuZW5jb2RlKFsiYWRkcmVzcyJdLFt2YWx1ZV0pfXJldHVybiBsaWIkMS5oZXhaZXJvUGFkKGxpYiQxLmhleGxpZnkodmFsdWUpLDMyKX07dmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsaW5kZXgpe3ZhciBwYXJhbT1ldmVudEZyYWdtZW50LmlucHV0c1tpbmRleF07aWYoIXBhcmFtLmluZGV4ZWQpe2lmKHZhbHVlIT1udWxsKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjYW5ub3QgZmlsdGVyIG5vbi1pbmRleGVkIHBhcmFtZXRlcnM7IG11c3QgYmUgbnVsbCIsImNvbnRyYWN0LiIrcGFyYW0ubmFtZSx2YWx1ZSl9cmV0dXJufWlmKHZhbHVlPT1udWxsKXt0b3BpY3MucHVzaChudWxsKX1lbHNlIGlmKHBhcmFtLmJhc2VUeXBlPT09ImFycmF5Inx8cGFyYW0uYmFzZVR5cGU9PT0idHVwbGUiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJmaWx0ZXJpbmcgd2l0aCB0dXBsZXMgb3IgYXJyYXlzIG5vdCBzdXBwb3J0ZWQiLCJjb250cmFjdC4iK3BhcmFtLm5hbWUsdmFsdWUpfWVsc2UgaWYoQXJyYXkuaXNBcnJheSh2YWx1ZSkpe3RvcGljcy5wdXNoKHZhbHVlLm1hcChmdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGVuY29kZVRvcGljKHBhcmFtLHZhbHVlKX0pKX1lbHNle3RvcGljcy5wdXNoKGVuY29kZVRvcGljKHBhcmFtLHZhbHVlKSl9fSk7d2hpbGUodG9waWNzLmxlbmd0aCYmdG9waWNzW3RvcGljcy5sZW5ndGgtMV09PT1udWxsKXt0b3BpY3MucG9wKCl9cmV0dXJuIHRvcGljc307SW50ZXJmYWNlLnByb3RvdHlwZS5lbmNvZGVFdmVudExvZz1mdW5jdGlvbihldmVudEZyYWdtZW50LHZhbHVlcyl7dmFyIF90aGlzPXRoaXM7aWYodHlwZW9mIGV2ZW50RnJhZ21lbnQ9PT0ic3RyaW5nIil7ZXZlbnRGcmFnbWVudD10aGlzLmdldEV2ZW50KGV2ZW50RnJhZ21lbnQpfXZhciB0b3BpY3M9W107dmFyIGRhdGFUeXBlcz1bXTt2YXIgZGF0YVZhbHVlcz1bXTtpZighZXZlbnRGcmFnbWVudC5hbm9ueW1vdXMpe3RvcGljcy5wdXNoKHRoaXMuZ2V0RXZlbnRUb3BpYyhldmVudEZyYWdtZW50KSl9aWYodmFsdWVzLmxlbmd0aCE9PWV2ZW50RnJhZ21lbnQuaW5wdXRzLmxlbmd0aCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiZXZlbnQgYXJndW1lbnRzL3ZhbHVlcyBtaXNtYXRjaCIsInZhbHVlcyIsdmFsdWVzKX1ldmVudEZyYWdtZW50LmlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtLGluZGV4KXt2YXIgdmFsdWU9dmFsdWVzW2luZGV4XTtpZihwYXJhbS5pbmRleGVkKXtpZihwYXJhbS50eXBlPT09InN0cmluZyIpe3RvcGljcy5wdXNoKGxpYiQ5LmlkKHZhbHVlKSl9ZWxzZSBpZihwYXJhbS50eXBlPT09ImJ5dGVzIil7dG9waWNzLnB1c2gobGliJDQua2VjY2FrMjU2KHZhbHVlKSl9ZWxzZSBpZihwYXJhbS5iYXNlVHlwZT09PSJ0dXBsZSJ8fHBhcmFtLmJhc2VUeXBlPT09ImFycmF5Iil7dGhyb3cgbmV3IEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKX1lbHNle3RvcGljcy5wdXNoKF90aGlzLl9hYmlDb2Rlci5lbmNvZGUoW3BhcmFtLnR5cGVdLFt2YWx1ZV0pKX19ZWxzZXtkYXRhVHlwZXMucHVzaChwYXJhbSk7ZGF0YVZhbHVlcy5wdXNoKHZhbHVlKX19KTtyZXR1cm57ZGF0YTp0aGlzLl9hYmlDb2Rlci5lbmNvZGUoZGF0YVR5cGVzLGRhdGFWYWx1ZXMpLHRvcGljczp0b3BpY3N9fTtJbnRlcmZhY2UucHJvdG90eXBlLmRlY29kZUV2ZW50TG9nPWZ1bmN0aW9uKGV2ZW50RnJhZ21lbnQsZGF0YSx0b3BpY3Mpe2lmKHR5cGVvZiBldmVudEZyYWdtZW50PT09InN0cmluZyIpe2V2ZW50RnJhZ21lbnQ9dGhpcy5nZXRFdmVudChldmVudEZyYWdtZW50KX1pZih0b3BpY3MhPW51bGwmJiFldmVudEZyYWdtZW50LmFub255bW91cyl7dmFyIHRvcGljSGFzaD10aGlzLmdldEV2ZW50VG9waWMoZXZlbnRGcmFnbWVudCk7aWYoIWxpYiQxLmlzSGV4U3RyaW5nKHRvcGljc1swXSwzMil8fHRvcGljc1swXS50b0xvd2VyQ2FzZSgpIT09dG9waWNIYXNoKXtsb2dnZXIudGhyb3dFcnJvcigiZnJhZ21lbnQvdG9waWMgbWlzbWF0Y2giLGxpYi5Mb2dnZXIuZXJyb3JzLklOVkFMSURfQVJHVU1FTlQse2FyZ3VtZW50OiJ0b3BpY3NbMF0iLGV4cGVjdGVkOnRvcGljSGFzaCx2YWx1ZTp0b3BpY3NbMF19KX10b3BpY3M9dG9waWNzLnNsaWNlKDEpfXZhciBpbmRleGVkPVtdO3ZhciBub25JbmRleGVkPVtdO3ZhciBkeW5hbWljPVtdO2V2ZW50RnJhZ21lbnQuaW5wdXRzLmZvckVhY2goZnVuY3Rpb24ocGFyYW0saW5kZXgpe2lmKHBhcmFtLmluZGV4ZWQpe2lmKHBhcmFtLnR5cGU9PT0ic3RyaW5nInx8cGFyYW0udHlwZT09PSJieXRlcyJ8fHBhcmFtLmJhc2VUeXBlPT09InR1cGxlInx8cGFyYW0uYmFzZVR5cGU9PT0iYXJyYXkiKXtpbmRleGVkLnB1c2goZnJhZ21lbnRzLlBhcmFtVHlwZS5mcm9tT2JqZWN0KHt0eXBlOiJieXRlczMyIixuYW1lOnBhcmFtLm5hbWV9KSk7ZHluYW1pYy5wdXNoKHRydWUpfWVsc2V7aW5kZXhlZC5wdXNoKHBhcmFtKTtkeW5hbWljLnB1c2goZmFsc2UpfX1lbHNle25vbkluZGV4ZWQucHVzaChwYXJhbSk7ZHluYW1pYy5wdXNoKGZhbHNlKX19KTt2YXIgcmVzdWx0SW5kZXhlZD10b3BpY3MhPW51bGw/dGhpcy5fYWJpQ29kZXIuZGVjb2RlKGluZGV4ZWQsbGliJDEuY29uY2F0KHRvcGljcykpOm51bGw7dmFyIHJlc3VsdE5vbkluZGV4ZWQ9dGhpcy5fYWJpQ29kZXIuZGVjb2RlKG5vbkluZGV4ZWQsZGF0YSx0cnVlKTt2YXIgcmVzdWx0PVtdO3ZhciBub25JbmRleGVkSW5kZXg9MCxpbmRleGVkSW5kZXg9MDtldmVudEZyYWdtZW50LmlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtLGluZGV4KXtpZihwYXJhbS5pbmRleGVkKXtpZihyZXN1bHRJbmRleGVkPT1udWxsKXtyZXN1bHRbaW5kZXhdPW5ldyBJbmRleGVkKHtfaXNJbmRleGVkOnRydWUsaGFzaDpudWxsfSl9ZWxzZSBpZihkeW5hbWljW2luZGV4XSl7cmVzdWx0W2luZGV4XT1uZXcgSW5kZXhlZCh7X2lzSW5kZXhlZDp0cnVlLGhhc2g6cmVzdWx0SW5kZXhlZFtpbmRleGVkSW5kZXgrK119KX1lbHNle3RyeXtyZXN1bHRbaW5kZXhdPXJlc3VsdEluZGV4ZWRbaW5kZXhlZEluZGV4KytdfWNhdGNoKGVycm9yKXtyZXN1bHRbaW5kZXhdPWVycm9yfX19ZWxzZXt0cnl7cmVzdWx0W2luZGV4XT1yZXN1bHROb25JbmRleGVkW25vbkluZGV4ZWRJbmRleCsrXX1jYXRjaChlcnJvcil7cmVzdWx0W2luZGV4XT1lcnJvcn19aWYocGFyYW0ubmFtZSYmcmVzdWx0W3BhcmFtLm5hbWVdPT1udWxsKXt2YXIgdmFsdWVfMT1yZXN1bHRbaW5kZXhdO2lmKHZhbHVlXzEgaW5zdGFuY2VvZiBFcnJvcil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCxwYXJhbS5uYW1lLHtnZXQ6ZnVuY3Rpb24oKXt0aHJvdyB3cmFwQWNjZXNzRXJyb3IoInByb3BlcnR5ICIrSlNPTi5zdHJpbmdpZnkocGFyYW0ubmFtZSksdmFsdWVfMSl9fSl9ZWxzZXtyZXN1bHRbcGFyYW0ubmFtZV09dmFsdWVfMX19fSk7dmFyIF9sb29wXzE9ZnVuY3Rpb24oaSl7dmFyIHZhbHVlPXJlc3VsdFtpXTtpZih2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LGkse2dldDpmdW5jdGlvbigpe3Rocm93IHdyYXBBY2Nlc3NFcnJvcigiaW5kZXggIitpLHZhbHVlKX19KX19O2Zvcih2YXIgaT0wO2k8cmVzdWx0Lmxlbmd0aDtpKyspe19sb29wXzEoaSl9cmV0dXJuIE9iamVjdC5mcmVlemUocmVzdWx0KX07SW50ZXJmYWNlLnByb3RvdHlwZS5wYXJzZVRyYW5zYWN0aW9uPWZ1bmN0aW9uKHR4KXt2YXIgZnJhZ21lbnQ9dGhpcy5nZXRGdW5jdGlvbih0eC5kYXRhLnN1YnN0cmluZygwLDEwKS50b0xvd2VyQ2FzZSgpKTtpZighZnJhZ21lbnQpe3JldHVybiBudWxsfXJldHVybiBuZXcgVHJhbnNhY3Rpb25EZXNjcmlwdGlvbih7YXJnczp0aGlzLl9hYmlDb2Rlci5kZWNvZGUoZnJhZ21lbnQuaW5wdXRzLCIweCIrdHguZGF0YS5zdWJzdHJpbmcoMTApKSxmdW5jdGlvbkZyYWdtZW50OmZyYWdtZW50LG5hbWU6ZnJhZ21lbnQubmFtZSxzaWduYXR1cmU6ZnJhZ21lbnQuZm9ybWF0KCksc2lnaGFzaDp0aGlzLmdldFNpZ2hhc2goZnJhZ21lbnQpLHZhbHVlOmxpYiQyLkJpZ051bWJlci5mcm9tKHR4LnZhbHVlfHwiMCIpfSl9O0ludGVyZmFjZS5wcm90b3R5cGUucGFyc2VMb2c9ZnVuY3Rpb24obG9nKXt2YXIgZnJhZ21lbnQ9dGhpcy5nZXRFdmVudChsb2cudG9waWNzWzBdKTtpZighZnJhZ21lbnR8fGZyYWdtZW50LmFub255bW91cyl7cmV0dXJuIG51bGx9cmV0dXJuIG5ldyBMb2dEZXNjcmlwdGlvbih7ZXZlbnRGcmFnbWVudDpmcmFnbWVudCxuYW1lOmZyYWdtZW50Lm5hbWUsc2lnbmF0dXJlOmZyYWdtZW50LmZvcm1hdCgpLHRvcGljOnRoaXMuZ2V0RXZlbnRUb3BpYyhmcmFnbWVudCksYXJnczp0aGlzLmRlY29kZUV2ZW50TG9nKGZyYWdtZW50LGxvZy5kYXRhLGxvZy50b3BpY3MpfSl9O0ludGVyZmFjZS5pc0ludGVyZmFjZT1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0ludGVyZmFjZSl9O3JldHVybiBJbnRlcmZhY2V9KCk7ZXhwb3J0cy5JbnRlcmZhY2U9SW50ZXJmYWNlfSk7dmFyIF9pbnRlcmZhY2UkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfaW50ZXJmYWNlKTt2YXIgbGliJGE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlRyYW5zYWN0aW9uRGVzY3JpcHRpb249ZXhwb3J0cy5Mb2dEZXNjcmlwdGlvbj1leHBvcnRzLmNoZWNrUmVzdWx0RXJyb3JzPWV4cG9ydHMuSW5kZXhlZD1leHBvcnRzLkludGVyZmFjZT1leHBvcnRzLmRlZmF1bHRBYmlDb2Rlcj1leHBvcnRzLkFiaUNvZGVyPWV4cG9ydHMuRm9ybWF0VHlwZXM9ZXhwb3J0cy5QYXJhbVR5cGU9ZXhwb3J0cy5GdW5jdGlvbkZyYWdtZW50PWV4cG9ydHMuRnJhZ21lbnQ9ZXhwb3J0cy5FdmVudEZyYWdtZW50PWV4cG9ydHMuRXJyb3JGcmFnbWVudD1leHBvcnRzLkNvbnN0cnVjdG9yRnJhZ21lbnQ9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJDb25zdHJ1Y3RvckZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmcmFnbWVudHMuQ29uc3RydWN0b3JGcmFnbWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRXJyb3JGcmFnbWVudCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnJhZ21lbnRzLkVycm9yRnJhZ21lbnR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkV2ZW50RnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZyYWdtZW50cy5FdmVudEZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGb3JtYXRUeXBlcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnJhZ21lbnRzLkZvcm1hdFR5cGVzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGcmFnbWVudCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnJhZ21lbnRzLkZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGdW5jdGlvbkZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmcmFnbWVudHMuRnVuY3Rpb25GcmFnbWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiUGFyYW1UeXBlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmcmFnbWVudHMuUGFyYW1UeXBlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJBYmlDb2RlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYWJpQ29kZXIuQWJpQ29kZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRlZmF1bHRBYmlDb2RlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYWJpQ29kZXIuZGVmYXVsdEFiaUNvZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjaGVja1Jlc3VsdEVycm9ycyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX2ludGVyZmFjZS5jaGVja1Jlc3VsdEVycm9yc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSW5kZXhlZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX2ludGVyZmFjZS5JbmRleGVkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJJbnRlcmZhY2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9pbnRlcmZhY2UuSW50ZXJmYWNlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJMb2dEZXNjcmlwdGlvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX2ludGVyZmFjZS5Mb2dEZXNjcmlwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVHJhbnNhY3Rpb25EZXNjcmlwdGlvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX2ludGVyZmFjZS5UcmFuc2FjdGlvbkRlc2NyaXB0aW9ufX0pfSk7dmFyIGluZGV4JGE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGEpO3ZhciBfdmVyc2lvbiRpPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImFic3RyYWN0LXByb3ZpZGVyLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiRqPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJGkpO3ZhciBsaWIkYj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlByb3ZpZGVyPWV4cG9ydHMuVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudD1leHBvcnRzLlRyYW5zYWN0aW9uRm9ya0V2ZW50PWV4cG9ydHMuQmxvY2tGb3JrRXZlbnQ9ZXhwb3J0cy5Gb3JrRXZlbnQ9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kaS52ZXJzaW9uKTt2YXIgRm9ya0V2ZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZvcmtFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIEZvcmtFdmVudCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUZvcmtFdmVudC5pc0ZvcmtFdmVudD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0ZvcmtFdmVudCl9O3JldHVybiBGb3JrRXZlbnR9KGxpYiQzLkRlc2NyaXB0aW9uKTtleHBvcnRzLkZvcmtFdmVudD1Gb3JrRXZlbnQ7dmFyIEJsb2NrRm9ya0V2ZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEJsb2NrRm9ya0V2ZW50LF9zdXBlcik7ZnVuY3Rpb24gQmxvY2tGb3JrRXZlbnQoYmxvY2tIYXNoLGV4cGlyeSl7dmFyIF90aGlzPXRoaXM7aWYoIWxpYiQxLmlzSGV4U3RyaW5nKGJsb2NrSGFzaCwzMikpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYmxvY2tIYXNoIiwiYmxvY2tIYXNoIixibG9ja0hhc2gpfV90aGlzPV9zdXBlci5jYWxsKHRoaXMse19pc0ZvcmtFdmVudDp0cnVlLF9pc0Jsb2NrRm9ya0V2ZW50OnRydWUsZXhwaXJ5OmV4cGlyeXx8MCxibG9ja0hhc2g6YmxvY2tIYXNofSl8fHRoaXM7cmV0dXJuIF90aGlzfXJldHVybiBCbG9ja0ZvcmtFdmVudH0oRm9ya0V2ZW50KTtleHBvcnRzLkJsb2NrRm9ya0V2ZW50PUJsb2NrRm9ya0V2ZW50O3ZhciBUcmFuc2FjdGlvbkZvcmtFdmVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhUcmFuc2FjdGlvbkZvcmtFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIFRyYW5zYWN0aW9uRm9ya0V2ZW50KGhhc2gsZXhwaXJ5KXt2YXIgX3RoaXM9dGhpcztpZighbGliJDEuaXNIZXhTdHJpbmcoaGFzaCwzMikpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHJhbnNhY3Rpb24gaGFzaCIsImhhc2giLGhhc2gpfV90aGlzPV9zdXBlci5jYWxsKHRoaXMse19pc0ZvcmtFdmVudDp0cnVlLF9pc1RyYW5zYWN0aW9uRm9ya0V2ZW50OnRydWUsZXhwaXJ5OmV4cGlyeXx8MCxoYXNoOmhhc2h9KXx8dGhpcztyZXR1cm4gX3RoaXN9cmV0dXJuIFRyYW5zYWN0aW9uRm9ya0V2ZW50fShGb3JrRXZlbnQpO2V4cG9ydHMuVHJhbnNhY3Rpb25Gb3JrRXZlbnQ9VHJhbnNhY3Rpb25Gb3JrRXZlbnQ7dmFyIFRyYW5zYWN0aW9uT3JkZXJGb3JrRXZlbnQ9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIFRyYW5zYWN0aW9uT3JkZXJGb3JrRXZlbnQoYmVmb3JlSGFzaCxhZnRlckhhc2gsZXhwaXJ5KXt2YXIgX3RoaXM9dGhpcztpZighbGliJDEuaXNIZXhTdHJpbmcoYmVmb3JlSGFzaCwzMikpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHJhbnNhY3Rpb24gaGFzaCIsImJlZm9yZUhhc2giLGJlZm9yZUhhc2gpfWlmKCFsaWIkMS5pc0hleFN0cmluZyhhZnRlckhhc2gsMzIpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHRyYW5zYWN0aW9uIGhhc2giLCJhZnRlckhhc2giLGFmdGVySGFzaCl9X3RoaXM9X3N1cGVyLmNhbGwodGhpcyx7X2lzRm9ya0V2ZW50OnRydWUsX2lzVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudDp0cnVlLGV4cGlyeTpleHBpcnl8fDAsYmVmb3JlSGFzaDpiZWZvcmVIYXNoLGFmdGVySGFzaDphZnRlckhhc2h9KXx8dGhpcztyZXR1cm4gX3RoaXN9cmV0dXJuIFRyYW5zYWN0aW9uT3JkZXJGb3JrRXZlbnR9KEZvcmtFdmVudCk7ZXhwb3J0cy5UcmFuc2FjdGlvbk9yZGVyRm9ya0V2ZW50PVRyYW5zYWN0aW9uT3JkZXJGb3JrRXZlbnQ7dmFyIFByb3ZpZGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gUHJvdmlkZXIoKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO2xvZ2dlci5jaGVja0Fic3RyYWN0KF9uZXdUYXJnZXQsUHJvdmlkZXIpO2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsIl9pc1Byb3ZpZGVyIix0cnVlKX1Qcm92aWRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyKXtyZXR1cm4gdGhpcy5vbihldmVudE5hbWUsbGlzdGVuZXIpfTtQcm92aWRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyKXtyZXR1cm4gdGhpcy5vZmYoZXZlbnROYW1lLGxpc3RlbmVyKX07UHJvdmlkZXIuaXNQcm92aWRlcj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc1Byb3ZpZGVyKX07cmV0dXJuIFByb3ZpZGVyfSgpO2V4cG9ydHMuUHJvdmlkZXI9UHJvdmlkZXJ9KTt2YXIgaW5kZXgkYj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkYik7dmFyIF92ZXJzaW9uJGs9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0iYWJzdHJhY3Qtc2lnbmVyLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiRsPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJGspO3ZhciBsaWIkYz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuVm9pZFNpZ25lcj1leHBvcnRzLlNpZ25lcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRrLnZlcnNpb24pO3ZhciBhbGxvd2VkVHJhbnNhY3Rpb25LZXlzPVsiYWNjZXNzTGlzdCIsImNoYWluSWQiLCJkYXRhIiwiZnJvbSIsImdhc0xpbWl0IiwiZ2FzUHJpY2UiLCJub25jZSIsInRvIiwidHlwZSIsInZhbHVlIl07dmFyIGZvcndhcmRFcnJvcnM9W2xpYi5Mb2dnZXIuZXJyb3JzLklOU1VGRklDSUVOVF9GVU5EUyxsaWIuTG9nZ2VyLmVycm9ycy5OT05DRV9FWFBJUkVELGxpYi5Mb2dnZXIuZXJyb3JzLlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VEXTt2YXIgU2lnbmVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gU2lnbmVyKCl7dmFyIF9uZXdUYXJnZXQ9dGhpcy5jb25zdHJ1Y3Rvcjtsb2dnZXIuY2hlY2tBYnN0cmFjdChfbmV3VGFyZ2V0LFNpZ25lcik7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX2lzU2lnbmVyIix0cnVlKX1TaWduZXIucHJvdG90eXBlLmdldEJhbGFuY2U9ZnVuY3Rpb24oYmxvY2tUYWcpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoImdldEJhbGFuY2UiKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmdldEJhbGFuY2UodGhpcy5nZXRBZGRyZXNzKCksYmxvY2tUYWcpXTtjYXNlIDE6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtTaWduZXIucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uQ291bnQ9ZnVuY3Rpb24oYmxvY2tUYWcpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoImdldFRyYW5zYWN0aW9uQ291bnQiKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmdldFRyYW5zYWN0aW9uQ291bnQodGhpcy5nZXRBZGRyZXNzKCksYmxvY2tUYWcpXTtjYXNlIDE6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtTaWduZXIucHJvdG90eXBlLmVzdGltYXRlR2FzPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0eDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiZXN0aW1hdGVHYXMiKTtyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh0aGlzLmNoZWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKV07Y2FzZSAxOnR4PV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmVzdGltYXRlR2FzKHR4KV07Y2FzZSAyOnJldHVyblsyLF9hLnNlbnQoKV19fSl9KX07U2lnbmVyLnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHRyYW5zYWN0aW9uLGJsb2NrVGFnKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0eDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiY2FsbCIpO3JldHVybls0LGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKHRoaXMuY2hlY2tUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpXTtjYXNlIDE6dHg9X2Euc2VudCgpO3JldHVybls0LHRoaXMucHJvdmlkZXIuY2FsbCh0eCxibG9ja1RhZyldO2Nhc2UgMjpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9O1NpZ25lci5wcm90b3R5cGUuc2VuZFRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXt2YXIgX3RoaXM9dGhpczt0aGlzLl9jaGVja1Byb3ZpZGVyKCJzZW5kVHJhbnNhY3Rpb24iKTtyZXR1cm4gdGhpcy5wb3B1bGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKS50aGVuKGZ1bmN0aW9uKHR4KXtyZXR1cm4gX3RoaXMuc2lnblRyYW5zYWN0aW9uKHR4KS50aGVuKGZ1bmN0aW9uKHNpZ25lZFR4KXtyZXR1cm4gX3RoaXMucHJvdmlkZXIuc2VuZFRyYW5zYWN0aW9uKHNpZ25lZFR4KX0pfSl9O1NpZ25lci5wcm90b3R5cGUuZ2V0Q2hhaW5JZD1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5ldHdvcms7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoImdldENoYWluSWQiKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmdldE5ldHdvcmsoKV07Y2FzZSAxOm5ldHdvcms9X2Euc2VudCgpO3JldHVyblsyLG5ldHdvcmsuY2hhaW5JZF19fSl9KX07U2lnbmVyLnByb3RvdHlwZS5nZXRHYXNQcmljZT1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoImdldEdhc1ByaWNlIik7cmV0dXJuWzQsdGhpcy5wcm92aWRlci5nZXRHYXNQcmljZSgpXTtjYXNlIDE6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtTaWduZXIucHJvdG90eXBlLnJlc29sdmVOYW1lPWZ1bmN0aW9uKG5hbWUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoInJlc29sdmVOYW1lIik7cmV0dXJuWzQsdGhpcy5wcm92aWRlci5yZXNvbHZlTmFtZShuYW1lKV07Y2FzZSAxOnJldHVyblsyLF9hLnNlbnQoKV19fSl9KX07U2lnbmVyLnByb3RvdHlwZS5jaGVja1RyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtmb3IodmFyIGtleSBpbiB0cmFuc2FjdGlvbil7aWYoYWxsb3dlZFRyYW5zYWN0aW9uS2V5cy5pbmRleE9mKGtleSk9PT0tMSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB0cmFuc2FjdGlvbiBrZXk6ICIra2V5LCJ0cmFuc2FjdGlvbiIsdHJhbnNhY3Rpb24pfX12YXIgdHg9bGliJDMuc2hhbGxvd0NvcHkodHJhbnNhY3Rpb24pO2lmKHR4LmZyb209PW51bGwpe3R4LmZyb209dGhpcy5nZXRBZGRyZXNzKCl9ZWxzZXt0eC5mcm9tPVByb21pc2UuYWxsKFtQcm9taXNlLnJlc29sdmUodHguZnJvbSksdGhpcy5nZXRBZGRyZXNzKCldKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7aWYocmVzdWx0WzBdLnRvTG93ZXJDYXNlKCkhPT1yZXN1bHRbMV0udG9Mb3dlckNhc2UoKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiZnJvbSBhZGRyZXNzIG1pc21hdGNoIiwidHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uKX1yZXR1cm4gcmVzdWx0WzBdfSl9cmV0dXJuIHR4fTtTaWduZXIucHJvdG90eXBlLnBvcHVsYXRlVHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb24pe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHR4O3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh0aGlzLmNoZWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKV07Y2FzZSAxOnR4PV9hLnNlbnQoKTtpZih0eC50byE9bnVsbCl7dHgudG89UHJvbWlzZS5yZXNvbHZlKHR4LnRvKS50aGVuKGZ1bmN0aW9uKHRvKXtyZXR1cm4gX19hd2FpdGVyKF90aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYodG89PW51bGwpe3JldHVyblsyLG51bGxdfXJldHVybls0LHRoaXMucmVzb2x2ZU5hbWUodG8pXTtjYXNlIDE6YWRkcmVzcz1fYS5zZW50KCk7aWYoYWRkcmVzcz09bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigicHJvdmlkZWQgRU5TIG5hbWUgcmVzb2x2ZXMgdG8gbnVsbCIsInR4LnRvIix0byl9cmV0dXJuWzIsYWRkcmVzc119fSl9KX0pfWlmKHR4Lmdhc1ByaWNlPT1udWxsKXt0eC5nYXNQcmljZT10aGlzLmdldEdhc1ByaWNlKCl9aWYodHgubm9uY2U9PW51bGwpe3R4Lm5vbmNlPXRoaXMuZ2V0VHJhbnNhY3Rpb25Db3VudCgicGVuZGluZyIpfWlmKHR4Lmdhc0xpbWl0PT1udWxsKXt0eC5nYXNMaW1pdD10aGlzLmVzdGltYXRlR2FzKHR4KS5jYXRjaChmdW5jdGlvbihlcnJvcil7aWYoZm9yd2FyZEVycm9ycy5pbmRleE9mKGVycm9yLmNvZGUpPj0wKXt0aHJvdyBlcnJvcn1yZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBlc3RpbWF0ZSBnYXM7IHRyYW5zYWN0aW9uIG1heSBmYWlsIG9yIG1heSByZXF1aXJlIG1hbnVhbCBnYXMgbGltaXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOUFJFRElDVEFCTEVfR0FTX0xJTUlULHtlcnJvcjplcnJvcix0eDp0eH0pfSl9aWYodHguY2hhaW5JZD09bnVsbCl7dHguY2hhaW5JZD10aGlzLmdldENoYWluSWQoKX1lbHNle3R4LmNoYWluSWQ9UHJvbWlzZS5hbGwoW1Byb21pc2UucmVzb2x2ZSh0eC5jaGFpbklkKSx0aGlzLmdldENoYWluSWQoKV0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0cyl7aWYocmVzdWx0c1sxXSE9PTAmJnJlc3VsdHNbMF0hPT1yZXN1bHRzWzFdKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjaGFpbklkIGFkZHJlc3MgbWlzbWF0Y2giLCJ0cmFuc2FjdGlvbiIsdHJhbnNhY3Rpb24pfXJldHVybiByZXN1bHRzWzBdfSl9cmV0dXJuWzQsbGliJDMucmVzb2x2ZVByb3BlcnRpZXModHgpXTtjYXNlIDI6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtTaWduZXIucHJvdG90eXBlLl9jaGVja1Byb3ZpZGVyPWZ1bmN0aW9uKG9wZXJhdGlvbil7aWYoIXRoaXMucHJvdmlkZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJtaXNzaW5nIHByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjpvcGVyYXRpb258fCJfY2hlY2tQcm92aWRlciJ9KX19O1NpZ25lci5pc1NpZ25lcj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc1NpZ25lcil9O3JldHVybiBTaWduZXJ9KCk7ZXhwb3J0cy5TaWduZXI9U2lnbmVyO3ZhciBWb2lkU2lnbmVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFZvaWRTaWduZXIsX3N1cGVyKTtmdW5jdGlvbiBWb2lkU2lnbmVyKGFkZHJlc3MscHJvdmlkZXIpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPXRoaXM7bG9nZ2VyLmNoZWNrTmV3KF9uZXdUYXJnZXQsVm9pZFNpZ25lcik7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyl8fHRoaXM7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImFkZHJlc3MiLGFkZHJlc3MpO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJwcm92aWRlciIscHJvdmlkZXJ8fG51bGwpO3JldHVybiBfdGhpc31Wb2lkU2lnbmVyLnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmFkZHJlc3MpfTtWb2lkU2lnbmVyLnByb3RvdHlwZS5fZmFpbD1mdW5jdGlvbihtZXNzYWdlLG9wZXJhdGlvbil7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtsb2dnZXIudGhyb3dFcnJvcihtZXNzYWdlLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOm9wZXJhdGlvbn0pfSl9O1ZvaWRTaWduZXIucHJvdG90eXBlLnNpZ25NZXNzYWdlPWZ1bmN0aW9uKG1lc3NhZ2Upe3JldHVybiB0aGlzLl9mYWlsKCJWb2lkU2lnbmVyIGNhbm5vdCBzaWduIG1lc3NhZ2VzIiwic2lnbk1lc3NhZ2UiKX07Vm9pZFNpZ25lci5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gdGhpcy5fZmFpbCgiVm9pZFNpZ25lciBjYW5ub3Qgc2lnbiB0cmFuc2FjdGlvbnMiLCJzaWduVHJhbnNhY3Rpb24iKX07Vm9pZFNpZ25lci5wcm90b3R5cGUuX3NpZ25UeXBlZERhdGE9ZnVuY3Rpb24oZG9tYWluLHR5cGVzLHZhbHVlKXtyZXR1cm4gdGhpcy5fZmFpbCgiVm9pZFNpZ25lciBjYW5ub3Qgc2lnbiB0eXBlZCBkYXRhIiwic2lnblR5cGVkRGF0YSIpfTtWb2lkU2lnbmVyLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKHByb3ZpZGVyKXtyZXR1cm4gbmV3IFZvaWRTaWduZXIodGhpcy5hZGRyZXNzLHByb3ZpZGVyKX07cmV0dXJuIFZvaWRTaWduZXJ9KFNpZ25lcik7ZXhwb3J0cy5Wb2lkU2lnbmVyPVZvaWRTaWduZXJ9KTt2YXIgaW5kZXgkYz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkYyk7dmFyIG1pbmltYWxpc3RpY0Fzc2VydD1hc3NlcnQ7ZnVuY3Rpb24gYXNzZXJ0KHZhbCxtc2cpe2lmKCF2YWwpdGhyb3cgbmV3IEVycm9yKG1zZ3x8IkFzc2VydGlvbiBmYWlsZWQiKX1hc3NlcnQuZXF1YWw9ZnVuY3Rpb24gYXNzZXJ0RXF1YWwobCxyLG1zZyl7aWYobCE9cil0aHJvdyBuZXcgRXJyb3IobXNnfHwiQXNzZXJ0aW9uIGZhaWxlZDogIitsKyIgIT0gIityKX07dmFyIHV0aWxzXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgdXRpbHM9ZXhwb3J0cztmdW5jdGlvbiB0b0FycmF5KG1zZyxlbmMpe2lmKEFycmF5LmlzQXJyYXkobXNnKSlyZXR1cm4gbXNnLnNsaWNlKCk7aWYoIW1zZylyZXR1cm5bXTt2YXIgcmVzPVtdO2lmKHR5cGVvZiBtc2chPT0ic3RyaW5nIil7Zm9yKHZhciBpPTA7aTxtc2cubGVuZ3RoO2krKylyZXNbaV09bXNnW2ldfDA7cmV0dXJuIHJlc31pZihlbmM9PT0iaGV4Iil7bXNnPW1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLCIiKTtpZihtc2cubGVuZ3RoJTIhPT0wKW1zZz0iMCIrbXNnO2Zvcih2YXIgaT0wO2k8bXNnLmxlbmd0aDtpKz0yKXJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSttc2dbaSsxXSwxNikpfWVsc2V7Zm9yKHZhciBpPTA7aTxtc2cubGVuZ3RoO2krKyl7dmFyIGM9bXNnLmNoYXJDb2RlQXQoaSk7dmFyIGhpPWM+Pjg7dmFyIGxvPWMmMjU1O2lmKGhpKXJlcy5wdXNoKGhpLGxvKTtlbHNlIHJlcy5wdXNoKGxvKX19cmV0dXJuIHJlc311dGlscy50b0FycmF5PXRvQXJyYXk7ZnVuY3Rpb24gemVybzIod29yZCl7aWYod29yZC5sZW5ndGg9PT0xKXJldHVybiIwIit3b3JkO2Vsc2UgcmV0dXJuIHdvcmR9dXRpbHMuemVybzI9emVybzI7ZnVuY3Rpb24gdG9IZXgobXNnKXt2YXIgcmVzPSIiO2Zvcih2YXIgaT0wO2k8bXNnLmxlbmd0aDtpKyspcmVzKz16ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gcmVzfXV0aWxzLnRvSGV4PXRvSGV4O3V0aWxzLmVuY29kZT1mdW5jdGlvbiBlbmNvZGUoYXJyLGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHRvSGV4KGFycik7ZWxzZSByZXR1cm4gYXJyfX0pO3ZhciB1dGlsc18xJDE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgdXRpbHM9ZXhwb3J0czt1dGlscy5hc3NlcnQ9bWluaW1hbGlzdGljQXNzZXJ0O3V0aWxzLnRvQXJyYXk9dXRpbHNfMS50b0FycmF5O3V0aWxzLnplcm8yPXV0aWxzXzEuemVybzI7dXRpbHMudG9IZXg9dXRpbHNfMS50b0hleDt1dGlscy5lbmNvZGU9dXRpbHNfMS5lbmNvZGU7ZnVuY3Rpb24gZ2V0TkFGKG51bSx3LGJpdHMpe3ZhciBuYWY9bmV3IEFycmF5KE1hdGgubWF4KG51bS5iaXRMZW5ndGgoKSxiaXRzKSsxKTtuYWYuZmlsbCgwKTt2YXIgd3M9MTw8dysxO3ZhciBrPW51bS5jbG9uZSgpO2Zvcih2YXIgaT0wO2k8bmFmLmxlbmd0aDtpKyspe3ZhciB6O3ZhciBtb2Q9ay5hbmRsbih3cy0xKTtpZihrLmlzT2RkKCkpe2lmKG1vZD4od3M+PjEpLTEpej0od3M+PjEpLW1vZDtlbHNlIHo9bW9kO2suaXN1Ym4oeil9ZWxzZXt6PTB9bmFmW2ldPXo7ay5pdXNocm4oMSl9cmV0dXJuIG5hZn11dGlscy5nZXROQUY9Z2V0TkFGO2Z1bmN0aW9uIGdldEpTRihrMSxrMil7dmFyIGpzZj1bW10sW11dO2sxPWsxLmNsb25lKCk7azI9azIuY2xvbmUoKTt2YXIgZDE9MDt2YXIgZDI9MDt2YXIgbTg7d2hpbGUoazEuY21wbigtZDEpPjB8fGsyLmNtcG4oLWQyKT4wKXt2YXIgbTE0PWsxLmFuZGxuKDMpK2QxJjM7dmFyIG0yND1rMi5hbmRsbigzKStkMiYzO2lmKG0xND09PTMpbTE0PS0xO2lmKG0yND09PTMpbTI0PS0xO3ZhciB1MTtpZigobTE0JjEpPT09MCl7dTE9MH1lbHNle204PWsxLmFuZGxuKDcpK2QxJjc7aWYoKG04PT09M3x8bTg9PT01KSYmbTI0PT09Mil1MT0tbTE0O2Vsc2UgdTE9bTE0fWpzZlswXS5wdXNoKHUxKTt2YXIgdTI7aWYoKG0yNCYxKT09PTApe3UyPTB9ZWxzZXttOD1rMi5hbmRsbig3KStkMiY3O2lmKChtOD09PTN8fG04PT09NSkmJm0xND09PTIpdTI9LW0yNDtlbHNlIHUyPW0yNH1qc2ZbMV0ucHVzaCh1Mik7aWYoMipkMT09PXUxKzEpZDE9MS1kMTtpZigyKmQyPT09dTIrMSlkMj0xLWQyO2sxLml1c2hybigxKTtrMi5pdXNocm4oMSl9cmV0dXJuIGpzZn11dGlscy5nZXRKU0Y9Z2V0SlNGO2Z1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaixuYW1lLGNvbXB1dGVyKXt2YXIga2V5PSJfIituYW1lO29iai5wcm90b3R5cGVbbmFtZV09ZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkoKXtyZXR1cm4gdGhpc1trZXldIT09dW5kZWZpbmVkP3RoaXNba2V5XTp0aGlzW2tleV09Y29tcHV0ZXIuY2FsbCh0aGlzKX19dXRpbHMuY2FjaGVkUHJvcGVydHk9Y2FjaGVkUHJvcGVydHk7ZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcyl7cmV0dXJuIHR5cGVvZiBieXRlcz09PSJzdHJpbmciP3V0aWxzLnRvQXJyYXkoYnl0ZXMsImhleCIpOmJ5dGVzfXV0aWxzLnBhcnNlQnl0ZXM9cGFyc2VCeXRlcztmdW5jdGlvbiBpbnRGcm9tTEUoYnl0ZXMpe3JldHVybiBuZXcgYm4oYnl0ZXMsImhleCIsImxlIil9dXRpbHMuaW50RnJvbUxFPWludEZyb21MRX0pOyJ1c2Ugc3RyaWN0Ijt2YXIgZ2V0TkFGPXV0aWxzXzEkMS5nZXROQUY7dmFyIGdldEpTRj11dGlsc18xJDEuZ2V0SlNGO3ZhciBhc3NlcnQkMT11dGlsc18xJDEuYXNzZXJ0O2Z1bmN0aW9uIEJhc2VDdXJ2ZSh0eXBlLGNvbmYpe3RoaXMudHlwZT10eXBlO3RoaXMucD1uZXcgYm4oY29uZi5wLDE2KTt0aGlzLnJlZD1jb25mLnByaW1lP2JuLnJlZChjb25mLnByaW1lKTpibi5tb250KHRoaXMucCk7dGhpcy56ZXJvPW5ldyBibigwKS50b1JlZCh0aGlzLnJlZCk7dGhpcy5vbmU9bmV3IGJuKDEpLnRvUmVkKHRoaXMucmVkKTt0aGlzLnR3bz1uZXcgYm4oMikudG9SZWQodGhpcy5yZWQpO3RoaXMubj1jb25mLm4mJm5ldyBibihjb25mLm4sMTYpO3RoaXMuZz1jb25mLmcmJnRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsY29uZi5nUmVkKTt0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpO3RoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCk7dGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KTt0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpO3RoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIGFkanVzdENvdW50PXRoaXMubiYmdGhpcy5wLmRpdih0aGlzLm4pO2lmKCFhZGp1c3RDb3VudHx8YWRqdXN0Q291bnQuY21wbigxMDApPjApe3RoaXMucmVkTj1udWxsfWVsc2V7dGhpcy5fbWF4d2VsbFRyaWNrPXRydWU7dGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCl9fXZhciBiYXNlPUJhc2VDdXJ2ZTtCYXNlQ3VydmUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uIHBvaW50KCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX07QmFzZUN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbiB2YWxpZGF0ZSgpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9O0Jhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsPWZ1bmN0aW9uIF9maXhlZE5hZk11bChwLGspe2Fzc2VydCQxKHAucHJlY29tcHV0ZWQpO3ZhciBkb3VibGVzPXAuX2dldERvdWJsZXMoKTt2YXIgbmFmPWdldE5BRihrLDEsdGhpcy5fYml0TGVuZ3RoKTt2YXIgST0oMTw8ZG91Ymxlcy5zdGVwKzEpLShkb3VibGVzLnN0ZXAlMj09PTA/MjoxKTtJLz0zO3ZhciByZXByPVtdO3ZhciBqO3ZhciBuYWZXO2ZvcihqPTA7ajxuYWYubGVuZ3RoO2orPWRvdWJsZXMuc3RlcCl7bmFmVz0wO2Zvcih2YXIgbD1qK2RvdWJsZXMuc3RlcC0xO2w+PWo7bC0tKW5hZlc9KG5hZlc8PDEpK25hZltsXTtyZXByLnB1c2gobmFmVyl9dmFyIGE9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciBiPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKTtmb3IodmFyIGk9STtpPjA7aS0tKXtmb3Ioaj0wO2o8cmVwci5sZW5ndGg7aisrKXtuYWZXPXJlcHJbal07aWYobmFmVz09PWkpYj1iLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdKTtlbHNlIGlmKG5hZlc9PT0taSliPWIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpfWE9YS5hZGQoYil9cmV0dXJuIGEudG9QKCl9O0Jhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24gX3duYWZNdWwocCxrKXt2YXIgdz00O3ZhciBuYWZQb2ludHM9cC5fZ2V0TkFGUG9pbnRzKHcpO3c9bmFmUG9pbnRzLnduZDt2YXIgd25kPW5hZlBvaW50cy5wb2ludHM7dmFyIG5hZj1nZXROQUYoayx3LHRoaXMuX2JpdExlbmd0aCk7dmFyIGFjYz10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCk7Zm9yKHZhciBpPW5hZi5sZW5ndGgtMTtpPj0wO2ktLSl7Zm9yKHZhciBsPTA7aT49MCYmbmFmW2ldPT09MDtpLS0pbCsrO2lmKGk+PTApbCsrO2FjYz1hY2MuZGJscChsKTtpZihpPDApYnJlYWs7dmFyIHo9bmFmW2ldO2Fzc2VydCQxKHohPT0wKTtpZihwLnR5cGU9PT0iYWZmaW5lIil7aWYoej4wKWFjYz1hY2MubWl4ZWRBZGQod25kW3otMT4+MV0pO2Vsc2UgYWNjPWFjYy5taXhlZEFkZCh3bmRbLXotMT4+MV0ubmVnKCkpfWVsc2V7aWYoej4wKWFjYz1hY2MuYWRkKHduZFt6LTE+PjFdKTtlbHNlIGFjYz1hY2MuYWRkKHduZFstei0xPj4xXS5uZWcoKSl9fXJldHVybiBwLnR5cGU9PT0iYWZmaW5lIj9hY2MudG9QKCk6YWNjfTtCYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsQWRkPWZ1bmN0aW9uIF93bmFmTXVsQWRkKGRlZlcscG9pbnRzLGNvZWZmcyxsZW4samFjb2JpYW5SZXN1bHQpe3ZhciB3bmRXaWR0aD10aGlzLl93bmFmVDE7dmFyIHduZD10aGlzLl93bmFmVDI7dmFyIG5hZj10aGlzLl93bmFmVDM7dmFyIG1heD0wO3ZhciBpO3ZhciBqO3ZhciBwO2ZvcihpPTA7aTxsZW47aSsrKXtwPXBvaW50c1tpXTt2YXIgbmFmUG9pbnRzPXAuX2dldE5BRlBvaW50cyhkZWZXKTt3bmRXaWR0aFtpXT1uYWZQb2ludHMud25kO3duZFtpXT1uYWZQb2ludHMucG9pbnRzfWZvcihpPWxlbi0xO2k+PTE7aS09Mil7dmFyIGE9aS0xO3ZhciBiPWk7aWYod25kV2lkdGhbYV0hPT0xfHx3bmRXaWR0aFtiXSE9PTEpe25hZlthXT1nZXROQUYoY29lZmZzW2FdLHduZFdpZHRoW2FdLHRoaXMuX2JpdExlbmd0aCk7bmFmW2JdPWdldE5BRihjb2VmZnNbYl0sd25kV2lkdGhbYl0sdGhpcy5fYml0TGVuZ3RoKTttYXg9TWF0aC5tYXgobmFmW2FdLmxlbmd0aCxtYXgpO21heD1NYXRoLm1heChuYWZbYl0ubGVuZ3RoLG1heCk7Y29udGludWV9dmFyIGNvbWI9W3BvaW50c1thXSxudWxsLG51bGwscG9pbnRzW2JdXTtpZihwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkpPT09MCl7Y29tYlsxXT1wb2ludHNbYV0uYWRkKHBvaW50c1tiXSk7Y29tYlsyXT1wb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKX1lbHNlIGlmKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSk9PT0wKXtjb21iWzFdPXBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO2NvbWJbMl09cG9pbnRzW2FdLmFkZChwb2ludHNbYl0ubmVnKCkpfWVsc2V7Y29tYlsxXT1wb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtjb21iWzJdPXBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpfXZhciBpbmRleD1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXTt2YXIganNmPWdldEpTRihjb2VmZnNbYV0sY29lZmZzW2JdKTttYXg9TWF0aC5tYXgoanNmWzBdLmxlbmd0aCxtYXgpO25hZlthXT1uZXcgQXJyYXkobWF4KTtuYWZbYl09bmV3IEFycmF5KG1heCk7Zm9yKGo9MDtqPG1heDtqKyspe3ZhciBqYT1qc2ZbMF1bal18MDt2YXIgamI9anNmWzFdW2pdfDA7bmFmW2FdW2pdPWluZGV4WyhqYSsxKSozKyhqYisxKV07bmFmW2JdW2pdPTA7d25kW2FdPWNvbWJ9fXZhciBhY2M9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciB0bXA9dGhpcy5fd25hZlQ0O2ZvcihpPW1heDtpPj0wO2ktLSl7dmFyIGs9MDt3aGlsZShpPj0wKXt2YXIgemVybz10cnVlO2ZvcihqPTA7ajxsZW47aisrKXt0bXBbal09bmFmW2pdW2ldfDA7aWYodG1wW2pdIT09MCl6ZXJvPWZhbHNlfWlmKCF6ZXJvKWJyZWFrO2srKztpLS19aWYoaT49MClrKys7YWNjPWFjYy5kYmxwKGspO2lmKGk8MClicmVhaztmb3Ioaj0wO2o8bGVuO2orKyl7dmFyIHo9dG1wW2pdO3A7aWYoej09PTApY29udGludWU7ZWxzZSBpZih6PjApcD13bmRbal1bei0xPj4xXTtlbHNlIGlmKHo8MClwPXduZFtqXVstei0xPj4xXS5uZWcoKTtpZihwLnR5cGU9PT0iYWZmaW5lIilhY2M9YWNjLm1peGVkQWRkKHApO2Vsc2UgYWNjPWFjYy5hZGQocCl9fWZvcihpPTA7aTxsZW47aSsrKXduZFtpXT1udWxsO2lmKGphY29iaWFuUmVzdWx0KXJldHVybiBhY2M7ZWxzZSByZXR1cm4gYWNjLnRvUCgpfTtmdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsdHlwZSl7dGhpcy5jdXJ2ZT1jdXJ2ZTt0aGlzLnR5cGU9dHlwZTt0aGlzLnByZWNvbXB1dGVkPW51bGx9QmFzZUN1cnZlLkJhc2VQb2ludD1CYXNlUG9pbnQ7QmFzZVBvaW50LnByb3RvdHlwZS5lcT1mdW5jdGlvbiBlcSgpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9O0Jhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24gdmFsaWRhdGUoKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX07QmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcyxlbmMpe2J5dGVzPXV0aWxzXzEkMS50b0FycmF5KGJ5dGVzLGVuYyk7dmFyIGxlbj10aGlzLnAuYnl0ZUxlbmd0aCgpO2lmKChieXRlc1swXT09PTR8fGJ5dGVzWzBdPT09Nnx8Ynl0ZXNbMF09PT03KSYmYnl0ZXMubGVuZ3RoLTE9PT0yKmxlbil7aWYoYnl0ZXNbMF09PT02KWFzc2VydCQxKGJ5dGVzW2J5dGVzLmxlbmd0aC0xXSUyPT09MCk7ZWxzZSBpZihieXRlc1swXT09PTcpYXNzZXJ0JDEoYnl0ZXNbYnl0ZXMubGVuZ3RoLTFdJTI9PT0xKTt2YXIgcmVzPXRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwxK2xlbiksYnl0ZXMuc2xpY2UoMStsZW4sMSsyKmxlbikpO3JldHVybiByZXN9ZWxzZSBpZigoYnl0ZXNbMF09PT0yfHxieXRlc1swXT09PTMpJiZieXRlcy5sZW5ndGgtMT09PWxlbil7cmV0dXJuIHRoaXMucG9pbnRGcm9tWChieXRlcy5zbGljZSgxLDErbGVuKSxieXRlc1swXT09PTMpfXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwb2ludCBmb3JtYXQiKX07QmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uIGVuY29kZUNvbXByZXNzZWQoZW5jKXtyZXR1cm4gdGhpcy5lbmNvZGUoZW5jLHRydWUpfTtCYXNlUG9pbnQucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24gX2VuY29kZShjb21wYWN0KXt2YXIgbGVuPXRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7dmFyIHg9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLGxlbik7aWYoY29tcGFjdClyZXR1cm5bdGhpcy5nZXRZKCkuaXNFdmVuKCk/MjozXS5jb25jYXQoeCk7cmV0dXJuWzRdLmNvbmNhdCh4LHRoaXMuZ2V0WSgpLnRvQXJyYXkoImJlIixsZW4pKX07QmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24gZW5jb2RlKGVuYyxjb21wYWN0KXtyZXR1cm4gdXRpbHNfMSQxLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksZW5jKX07QmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uIHByZWNvbXB1dGUocG93ZXIpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIHByZWNvbXB1dGVkPXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtwcmVjb21wdXRlZC5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpO3ByZWNvbXB1dGVkLmRvdWJsZXM9dGhpcy5fZ2V0RG91Ymxlcyg0LHBvd2VyKTtwcmVjb21wdXRlZC5iZXRhPXRoaXMuX2dldEJldGEoKTt0aGlzLnByZWNvbXB1dGVkPXByZWNvbXB1dGVkO3JldHVybiB0aGlzfTtCYXNlUG9pbnQucHJvdG90eXBlLl9oYXNEb3VibGVzPWZ1bmN0aW9uIF9oYXNEb3VibGVzKGspe2lmKCF0aGlzLnByZWNvbXB1dGVkKXJldHVybiBmYWxzZTt2YXIgZG91Ymxlcz10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7aWYoIWRvdWJsZXMpcmV0dXJuIGZhbHNlO3JldHVybiBkb3VibGVzLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSsxKS9kb3VibGVzLnN0ZXApfTtCYXNlUG9pbnQucHJvdG90eXBlLl9nZXREb3VibGVzPWZ1bmN0aW9uIF9nZXREb3VibGVzKHN0ZXAscG93ZXIpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3ZhciBkb3VibGVzPVt0aGlzXTt2YXIgYWNjPXRoaXM7Zm9yKHZhciBpPTA7aTxwb3dlcjtpKz1zdGVwKXtmb3IodmFyIGo9MDtqPHN0ZXA7aisrKWFjYz1hY2MuZGJsKCk7ZG91Ymxlcy5wdXNoKGFjYyl9cmV0dXJue3N0ZXA6c3RlcCxwb2ludHM6ZG91Ymxlc319O0Jhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbiBfZ2V0TkFGUG9pbnRzKHduZCl7aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5uYWYpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO3ZhciByZXM9W3RoaXNdO3ZhciBtYXg9KDE8PHduZCktMTt2YXIgZGJsPW1heD09PTE/bnVsbDp0aGlzLmRibCgpO2Zvcih2YXIgaT0xO2k8bWF4O2krKylyZXNbaV09cmVzW2ktMV0uYWRkKGRibCk7cmV0dXJue3duZDp3bmQscG9pbnRzOnJlc319O0Jhc2VQb2ludC5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24gX2dldEJldGEoKXtyZXR1cm4gbnVsbH07QmFzZVBvaW50LnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uIGRibHAoayl7dmFyIHI9dGhpcztmb3IodmFyIGk9MDtpPGs7aSsrKXI9ci5kYmwoKTtyZXR1cm4gcn07dmFyIGluaGVyaXRzX2Jyb3dzZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlKXtpZih0eXBlb2YgT2JqZWN0LmNyZWF0ZT09PSJmdW5jdGlvbiIpe21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uIGluaGVyaXRzKGN0b3Isc3VwZXJDdG9yKXtpZihzdXBlckN0b3Ipe2N0b3Iuc3VwZXJfPXN1cGVyQ3RvcjtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpjdG9yLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX19KX19fWVsc2V7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24gaW5oZXJpdHMoY3RvcixzdXBlckN0b3Ipe2lmKHN1cGVyQ3Rvcil7Y3Rvci5zdXBlcl89c3VwZXJDdG9yO3ZhciBUZW1wQ3Rvcj1mdW5jdGlvbigpe307VGVtcEN0b3IucHJvdG90eXBlPXN1cGVyQ3Rvci5wcm90b3R5cGU7Y3Rvci5wcm90b3R5cGU9bmV3IFRlbXBDdG9yO2N0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWN0b3J9fX19KTsidXNlIHN0cmljdCI7dmFyIGFzc2VydCQyPXV0aWxzXzEkMS5hc3NlcnQ7ZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKXtiYXNlLmNhbGwodGhpcywic2hvcnQiLGNvbmYpO3RoaXMuYT1uZXcgYm4oY29uZi5hLDE2KS50b1JlZCh0aGlzLnJlZCk7dGhpcy5iPW5ldyBibihjb25mLmIsMTYpLnRvUmVkKHRoaXMucmVkKTt0aGlzLnRpbnY9dGhpcy50d28ucmVkSW52bSgpO3RoaXMuemVyb0E9dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApPT09MDt0aGlzLnRocmVlQT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpPT09MDt0aGlzLmVuZG89dGhpcy5fZ2V0RW5kb21vcnBoaXNtKGNvbmYpO3RoaXMuX2VuZG9XbmFmVDE9bmV3IEFycmF5KDQpO3RoaXMuX2VuZG9XbmFmVDI9bmV3IEFycmF5KDQpfWluaGVyaXRzX2Jyb3dzZXIoU2hvcnRDdXJ2ZSxiYXNlKTt2YXIgc2hvcnRfMT1TaG9ydEN1cnZlO1Nob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvbW9ycGhpc209ZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKXtpZighdGhpcy56ZXJvQXx8IXRoaXMuZ3x8IXRoaXMubnx8dGhpcy5wLm1vZG4oMykhPT0xKXJldHVybjt2YXIgYmV0YTt2YXIgbGFtYmRhO2lmKGNvbmYuYmV0YSl7YmV0YT1uZXcgYm4oY29uZi5iZXRhLDE2KS50b1JlZCh0aGlzLnJlZCl9ZWxzZXt2YXIgYmV0YXM9dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMucCk7YmV0YT1iZXRhc1swXS5jbXAoYmV0YXNbMV0pPDA/YmV0YXNbMF06YmV0YXNbMV07YmV0YT1iZXRhLnRvUmVkKHRoaXMucmVkKX1pZihjb25mLmxhbWJkYSl7bGFtYmRhPW5ldyBibihjb25mLmxhbWJkYSwxNil9ZWxzZXt2YXIgbGFtYmRhcz10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTtpZih0aGlzLmcubXVsKGxhbWJkYXNbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSk9PT0wKXtsYW1iZGE9bGFtYmRhc1swXX1lbHNle2xhbWJkYT1sYW1iZGFzWzFdO2Fzc2VydCQyKHRoaXMuZy5tdWwobGFtYmRhKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoYmV0YSkpPT09MCl9fXZhciBiYXNpcztpZihjb25mLmJhc2lzKXtiYXNpcz1jb25mLmJhc2lzLm1hcChmdW5jdGlvbih2ZWMpe3JldHVybnthOm5ldyBibih2ZWMuYSwxNiksYjpuZXcgYm4odmVjLmIsMTYpfX0pfWVsc2V7YmFzaXM9dGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSl9cmV0dXJue2JldGE6YmV0YSxsYW1iZGE6bGFtYmRhLGJhc2lzOmJhc2lzfX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cz1mdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSl7dmFyIHJlZD1udW09PT10aGlzLnA/dGhpcy5yZWQ6Ym4ubW9udChudW0pO3ZhciB0aW52PW5ldyBibigyKS50b1JlZChyZWQpLnJlZEludm0oKTt2YXIgbnRpbnY9dGludi5yZWROZWcoKTt2YXIgcz1uZXcgYm4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO3ZhciBsMT1udGludi5yZWRBZGQocykuZnJvbVJlZCgpO3ZhciBsMj1udGludi5yZWRTdWIocykuZnJvbVJlZCgpO3JldHVybltsMSxsMl19O1Nob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9ZnVuY3Rpb24gX2dldEVuZG9CYXNpcyhsYW1iZGEpe3ZhciBhcHJ4U3FydD10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpO3ZhciB1PWxhbWJkYTt2YXIgdj10aGlzLm4uY2xvbmUoKTt2YXIgeDE9bmV3IGJuKDEpO3ZhciB5MT1uZXcgYm4oMCk7dmFyIHgyPW5ldyBibigwKTt2YXIgeTI9bmV3IGJuKDEpO3ZhciBhMDt2YXIgYjA7dmFyIGExO3ZhciBiMTt2YXIgYTI7dmFyIGIyO3ZhciBwcmV2Ujt2YXIgaT0wO3ZhciByO3ZhciB4O3doaWxlKHUuY21wbigwKSE9PTApe3ZhciBxPXYuZGl2KHUpO3I9di5zdWIocS5tdWwodSkpO3g9eDIuc3ViKHEubXVsKHgxKSk7dmFyIHk9eTIuc3ViKHEubXVsKHkxKSk7aWYoIWExJiZyLmNtcChhcHJ4U3FydCk8MCl7YTA9cHJldlIubmVnKCk7YjA9eDE7YTE9ci5uZWcoKTtiMT14fWVsc2UgaWYoYTEmJisraT09PTIpe2JyZWFrfXByZXZSPXI7dj11O3U9cjt4Mj14MTt4MT14O3kyPXkxO3kxPXl9YTI9ci5uZWcoKTtiMj14O3ZhciBsZW4xPWExLnNxcigpLmFkZChiMS5zcXIoKSk7dmFyIGxlbjI9YTIuc3FyKCkuYWRkKGIyLnNxcigpKTtpZihsZW4yLmNtcChsZW4xKT49MCl7YTI9YTA7YjI9YjB9aWYoYTEubmVnYXRpdmUpe2ExPWExLm5lZygpO2IxPWIxLm5lZygpfWlmKGEyLm5lZ2F0aXZlKXthMj1hMi5uZWcoKTtiMj1iMi5uZWcoKX1yZXR1cm5be2E6YTEsYjpiMX0se2E6YTIsYjpiMn1dfTtTaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uIF9lbmRvU3BsaXQoayl7dmFyIGJhc2lzPXRoaXMuZW5kby5iYXNpczt2YXIgdjE9YmFzaXNbMF07dmFyIHYyPWJhc2lzWzFdO3ZhciBjMT12Mi5iLm11bChrKS5kaXZSb3VuZCh0aGlzLm4pO3ZhciBjMj12MS5iLm5lZygpLm11bChrKS5kaXZSb3VuZCh0aGlzLm4pO3ZhciBwMT1jMS5tdWwodjEuYSk7dmFyIHAyPWMyLm11bCh2Mi5hKTt2YXIgcTE9YzEubXVsKHYxLmIpO3ZhciBxMj1jMi5tdWwodjIuYik7dmFyIGsxPWsuc3ViKHAxKS5zdWIocDIpO3ZhciBrMj1xMS5hZGQocTIpLm5lZygpO3JldHVybntrMTprMSxrMjprMn19O1Nob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24gcG9pbnRGcm9tWCh4LG9kZCl7eD1uZXcgYm4oeCwxNik7aWYoIXgucmVkKXg9eC50b1JlZCh0aGlzLnJlZCk7dmFyIHkyPXgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoeC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpO3ZhciB5PXkyLnJlZFNxcnQoKTtpZih5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykhPT0wKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciBpc09kZD15LmZyb21SZWQoKS5pc09kZCgpO2lmKG9kZCYmIWlzT2RkfHwhb2RkJiZpc09kZCl5PXkucmVkTmVnKCk7cmV0dXJuIHRoaXMucG9pbnQoeCx5KX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpe2lmKHBvaW50LmluZilyZXR1cm4gdHJ1ZTt2YXIgeD1wb2ludC54O3ZhciB5PXBvaW50Lnk7dmFyIGF4PXRoaXMuYS5yZWRNdWwoeCk7dmFyIHJocz14LnJlZFNxcigpLnJlZE11bCh4KS5yZWRJQWRkKGF4KS5yZWRJQWRkKHRoaXMuYik7cmV0dXJuIHkucmVkU3FyKCkucmVkSVN1YihyaHMpLmNtcG4oMCk9PT0wfTtTaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQ9ZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cyxjb2VmZnMsamFjb2JpYW5SZXN1bHQpe3ZhciBucG9pbnRzPXRoaXMuX2VuZG9XbmFmVDE7dmFyIG5jb2VmZnM9dGhpcy5fZW5kb1duYWZUMjtmb3IodmFyIGk9MDtpPHBvaW50cy5sZW5ndGg7aSsrKXt2YXIgc3BsaXQ9dGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7dmFyIHA9cG9pbnRzW2ldO3ZhciBiZXRhPXAuX2dldEJldGEoKTtpZihzcGxpdC5rMS5uZWdhdGl2ZSl7c3BsaXQuazEuaW5lZygpO3A9cC5uZWcodHJ1ZSl9aWYoc3BsaXQuazIubmVnYXRpdmUpe3NwbGl0LmsyLmluZWcoKTtiZXRhPWJldGEubmVnKHRydWUpfW5wb2ludHNbaSoyXT1wO25wb2ludHNbaSoyKzFdPWJldGE7bmNvZWZmc1tpKjJdPXNwbGl0LmsxO25jb2VmZnNbaSoyKzFdPXNwbGl0LmsyfXZhciByZXM9dGhpcy5fd25hZk11bEFkZCgxLG5wb2ludHMsbmNvZWZmcyxpKjIsamFjb2JpYW5SZXN1bHQpO2Zvcih2YXIgaj0wO2o8aSoyO2orKyl7bnBvaW50c1tqXT1udWxsO25jb2VmZnNbal09bnVsbH1yZXR1cm4gcmVzfTtmdW5jdGlvbiBQb2ludChjdXJ2ZSx4LHksaXNSZWQpe2Jhc2UuQmFzZVBvaW50LmNhbGwodGhpcyxjdXJ2ZSwiYWZmaW5lIik7aWYoeD09PW51bGwmJnk9PT1udWxsKXt0aGlzLng9bnVsbDt0aGlzLnk9bnVsbDt0aGlzLmluZj10cnVlfWVsc2V7dGhpcy54PW5ldyBibih4LDE2KTt0aGlzLnk9bmV3IGJuKHksMTYpO2lmKGlzUmVkKXt0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO3RoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCl9aWYoIXRoaXMueC5yZWQpdGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7aWYoIXRoaXMueS5yZWQpdGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7dGhpcy5pbmY9ZmFsc2V9fWluaGVyaXRzX2Jyb3dzZXIoUG9pbnQsYmFzZS5CYXNlUG9pbnQpO1Nob3J0Q3VydmUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uIHBvaW50KHgseSxpc1JlZCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLHgseSxpc1JlZCl9O1Nob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmoscmVkKXtyZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcyxvYmoscmVkKX07UG9pbnQucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uIF9nZXRCZXRhKCl7aWYoIXRoaXMuY3VydmUuZW5kbylyZXR1cm47dmFyIHByZT10aGlzLnByZWNvbXB1dGVkO2lmKHByZSYmcHJlLmJldGEpcmV0dXJuIHByZS5iZXRhO3ZhciBiZXRhPXRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZihwcmUpe3ZhciBjdXJ2ZT10aGlzLmN1cnZlO3ZhciBlbmRvTXVsPWZ1bmN0aW9uKHApe3JldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSkscC55KX07cHJlLmJldGE9YmV0YTtiZXRhLnByZWNvbXB1dGVkPXtiZXRhOm51bGwsbmFmOnByZS5uYWYmJnt3bmQ6cHJlLm5hZi53bmQscG9pbnRzOnByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKX0sZG91YmxlczpwcmUuZG91YmxlcyYme3N0ZXA6cHJlLmRvdWJsZXMuc3RlcCxwb2ludHM6cHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKX19fXJldHVybiBiZXRhfTtQb2ludC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uIHRvSlNPTigpe2lmKCF0aGlzLnByZWNvbXB1dGVkKXJldHVyblt0aGlzLngsdGhpcy55XTtyZXR1cm5bdGhpcy54LHRoaXMueSx0aGlzLnByZWNvbXB1dGVkJiZ7ZG91Ymxlczp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMmJntzdGVwOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpfSxuYWY6dGhpcy5wcmVjb21wdXRlZC5uYWYmJnt3bmQ6dGhpcy5wcmVjb21wdXRlZC5uYWYud25kLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSl9fV19O1BvaW50LmZyb21KU09OPWZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLG9iaixyZWQpe2lmKHR5cGVvZiBvYmo9PT0ic3RyaW5nIilvYmo9SlNPTi5wYXJzZShvYmopO3ZhciByZXM9Y3VydmUucG9pbnQob2JqWzBdLG9ialsxXSxyZWQpO2lmKCFvYmpbMl0pcmV0dXJuIHJlcztmdW5jdGlvbiBvYmoycG9pbnQob2JqKXtyZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLG9ialsxXSxyZWQpfXZhciBwcmU9b2JqWzJdO3Jlcy5wcmVjb21wdXRlZD17YmV0YTpudWxsLGRvdWJsZXM6cHJlLmRvdWJsZXMmJntzdGVwOnByZS5kb3VibGVzLnN0ZXAscG9pbnRzOltyZXNdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpfSxuYWY6cHJlLm5hZiYme3duZDpwcmUubmFmLnduZCxwb2ludHM6W3Jlc10uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKX19O3JldHVybiByZXN9O1BvaW50LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4iPEVDIFBvaW50IEluZmluaXR5PiI7cmV0dXJuIjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifTtQb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbiBpc0luZmluaXR5KCl7cmV0dXJuIHRoaXMuaW5mfTtQb2ludC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIGFkZChwKXtpZih0aGlzLmluZilyZXR1cm4gcDtpZihwLmluZilyZXR1cm4gdGhpcztpZih0aGlzLmVxKHApKXJldHVybiB0aGlzLmRibCgpO2lmKHRoaXMubmVnKCkuZXEocCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTtpZih0aGlzLnguY21wKHAueCk9PT0wKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIGM9dGhpcy55LnJlZFN1YihwLnkpO2lmKGMuY21wbigwKSE9PTApYz1jLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTt2YXIgbng9Yy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO3ZhciBueT1jLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LG55KX07UG9pbnQucHJvdG90eXBlLmRibD1mdW5jdGlvbiBkYmwoKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgeXMxPXRoaXMueS5yZWRBZGQodGhpcy55KTtpZih5czEuY21wbigwKT09PTApcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgYT10aGlzLmN1cnZlLmE7dmFyIHgyPXRoaXMueC5yZWRTcXIoKTt2YXIgZHlpbnY9eXMxLnJlZEludm0oKTt2YXIgYz14Mi5yZWRBZGQoeDIpLnJlZElBZGQoeDIpLnJlZElBZGQoYSkucmVkTXVsKGR5aW52KTt2YXIgbng9Yy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueC5yZWRBZGQodGhpcy54KSk7dmFyIG55PWMucmVkTXVsKHRoaXMueC5yZWRTdWIobngpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsbnkpfTtQb2ludC5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbiBnZXRYKCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9O1BvaW50LnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uIGdldFkoKXtyZXR1cm4gdGhpcy55LmZyb21SZWQoKX07UG9pbnQucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoayl7az1uZXcgYm4oaywxNik7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7ZWxzZSBpZih0aGlzLl9oYXNEb3VibGVzKGspKXJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLGspO2Vsc2UgaWYodGhpcy5jdXJ2ZS5lbmRvKXJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW2tdKTtlbHNlIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsayl9O1BvaW50LnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24gbXVsQWRkKGsxLHAyLGsyKXt2YXIgcG9pbnRzPVt0aGlzLHAyXTt2YXIgY29lZmZzPVtrMSxrMl07aWYodGhpcy5jdXJ2ZS5lbmRvKXJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsY29lZmZzKTtlbHNlIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEscG9pbnRzLGNvZWZmcywyKX07UG9pbnQucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24gam11bEFkZChrMSxwMixrMil7dmFyIHBvaW50cz1bdGhpcyxwMl07dmFyIGNvZWZmcz1bazEsazJdO2lmKHRoaXMuY3VydmUuZW5kbylyZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLGNvZWZmcyx0cnVlKTtlbHNlIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEscG9pbnRzLGNvZWZmcywyLHRydWUpfTtQb2ludC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEocCl7cmV0dXJuIHRoaXM9PT1wfHx0aGlzLmluZj09PXAuaW5mJiYodGhpcy5pbmZ8fHRoaXMueC5jbXAocC54KT09PTAmJnRoaXMueS5jbXAocC55KT09PTApfTtQb2ludC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uIG5lZyhfcHJlY29tcHV0ZSl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIHJlcz10aGlzLmN1cnZlLnBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCkpO2lmKF9wcmVjb21wdXRlJiZ0aGlzLnByZWNvbXB1dGVkKXt2YXIgcHJlPXRoaXMucHJlY29tcHV0ZWQ7dmFyIG5lZ2F0ZT1mdW5jdGlvbihwKXtyZXR1cm4gcC5uZWcoKX07cmVzLnByZWNvbXB1dGVkPXtuYWY6cHJlLm5hZiYme3duZDpwcmUubmFmLnduZCxwb2ludHM6cHJlLm5hZi5wb2ludHMubWFwKG5lZ2F0ZSl9LGRvdWJsZXM6cHJlLmRvdWJsZXMmJntzdGVwOnByZS5kb3VibGVzLnN0ZXAscG9pbnRzOnByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKX19fXJldHVybiByZXN9O1BvaW50LnByb3RvdHlwZS50b0o9ZnVuY3Rpb24gdG9KKCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTt2YXIgcmVzPXRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUpO3JldHVybiByZXN9O2Z1bmN0aW9uIEpQb2ludChjdXJ2ZSx4LHkseil7YmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLGN1cnZlLCJqYWNvYmlhbiIpO2lmKHg9PT1udWxsJiZ5PT09bnVsbCYmej09PW51bGwpe3RoaXMueD10aGlzLmN1cnZlLm9uZTt0aGlzLnk9dGhpcy5jdXJ2ZS5vbmU7dGhpcy56PW5ldyBibigwKX1lbHNle3RoaXMueD1uZXcgYm4oeCwxNik7dGhpcy55PW5ldyBibih5LDE2KTt0aGlzLno9bmV3IGJuKHosMTYpfWlmKCF0aGlzLngucmVkKXRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO2lmKCF0aGlzLnkucmVkKXRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO2lmKCF0aGlzLnoucmVkKXRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO3RoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZX1pbmhlcml0c19icm93c2VyKEpQb2ludCxiYXNlLkJhc2VQb2ludCk7U2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uIGpwb2ludCh4LHkseil7cmV0dXJuIG5ldyBKUG9pbnQodGhpcyx4LHkseil9O0pQb2ludC5wcm90b3R5cGUudG9QPWZ1bmN0aW9uIHRvUCgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIHppbnY9dGhpcy56LnJlZEludm0oKTt2YXIgemludjI9emludi5yZWRTcXIoKTt2YXIgYXg9dGhpcy54LnJlZE11bCh6aW52Mik7dmFyIGF5PXRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCxheSl9O0pQb2ludC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uIG5lZygpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9O0pQb2ludC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIGFkZChwKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gcDtpZihwLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgcHoyPXAuei5yZWRTcXIoKTt2YXIgejI9dGhpcy56LnJlZFNxcigpO3ZhciB1MT10aGlzLngucmVkTXVsKHB6Mik7dmFyIHUyPXAueC5yZWRNdWwoejIpO3ZhciBzMT10aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7dmFyIHMyPXAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO3ZhciBoPXUxLnJlZFN1Yih1Mik7dmFyIHI9czEucmVkU3ViKHMyKTtpZihoLmNtcG4oMCk9PT0wKXtpZihyLmNtcG4oMCkhPT0wKXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk7ZWxzZSByZXR1cm4gdGhpcy5kYmwoKX12YXIgaDI9aC5yZWRTcXIoKTt2YXIgaDM9aDIucmVkTXVsKGgpO3ZhciB2PXUxLnJlZE11bChoMik7dmFyIG54PXIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO3ZhciBueT1yLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO3ZhciBuej10aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCxueSxueil9O0pQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQ9ZnVuY3Rpb24gbWl4ZWRBZGQocCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHAudG9KKCk7aWYocC5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIHoyPXRoaXMuei5yZWRTcXIoKTt2YXIgdTE9dGhpcy54O3ZhciB1Mj1wLngucmVkTXVsKHoyKTt2YXIgczE9dGhpcy55O3ZhciBzMj1wLnkucmVkTXVsKHoyKS5yZWRNdWwodGhpcy56KTt2YXIgaD11MS5yZWRTdWIodTIpO3ZhciByPXMxLnJlZFN1YihzMik7aWYoaC5jbXBuKDApPT09MCl7aWYoci5jbXBuKDApIT09MClyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpO2Vsc2UgcmV0dXJuIHRoaXMuZGJsKCl9dmFyIGgyPWgucmVkU3FyKCk7dmFyIGgzPWgyLnJlZE11bChoKTt2YXIgdj11MS5yZWRNdWwoaDIpO3ZhciBueD1yLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTt2YXIgbnk9ci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTt2YXIgbno9dGhpcy56LnJlZE11bChoKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsbnksbnopfTtKUG9pbnQucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24gZGJscChwb3cpe2lmKHBvdz09PTApcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIXBvdylyZXR1cm4gdGhpcy5kYmwoKTt2YXIgaTtpZih0aGlzLmN1cnZlLnplcm9BfHx0aGlzLmN1cnZlLnRocmVlQSl7dmFyIHI9dGhpcztmb3IoaT0wO2k8cG93O2krKylyPXIuZGJsKCk7cmV0dXJuIHJ9dmFyIGE9dGhpcy5jdXJ2ZS5hO3ZhciB0aW52PXRoaXMuY3VydmUudGludjt2YXIgang9dGhpcy54O3ZhciBqeT10aGlzLnk7dmFyIGp6PXRoaXMuejt2YXIgano0PWp6LnJlZFNxcigpLnJlZFNxcigpO3ZhciBqeWQ9ankucmVkQWRkKGp5KTtmb3IoaT0wO2k8cG93O2krKyl7dmFyIGp4Mj1qeC5yZWRTcXIoKTt2YXIganlkMj1qeWQucmVkU3FyKCk7dmFyIGp5ZDQ9anlkMi5yZWRTcXIoKTt2YXIgYz1qeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7dmFyIHQxPWp4LnJlZE11bChqeWQyKTt2YXIgbng9Yy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO3ZhciB0Mj10MS5yZWRJU3ViKG54KTt2YXIgZG55PWMucmVkTXVsKHQyKTtkbnk9ZG55LnJlZElBZGQoZG55KS5yZWRJU3ViKGp5ZDQpO3ZhciBuej1qeWQucmVkTXVsKGp6KTtpZihpKzE8cG93KWp6ND1qejQucmVkTXVsKGp5ZDQpO2p4PW54O2p6PW56O2p5ZD1kbnl9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGp4LGp5ZC5yZWRNdWwodGludiksanopfTtKUG9pbnQucHJvdG90eXBlLmRibD1mdW5jdGlvbiBkYmwoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZih0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLl96ZXJvRGJsKCk7ZWxzZSBpZih0aGlzLmN1cnZlLnRocmVlQSlyZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtlbHNlIHJldHVybiB0aGlzLl9kYmwoKX07SlBvaW50LnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbiBfemVyb0RibCgpe3ZhciBueDt2YXIgbnk7dmFyIG56O2lmKHRoaXMuek9uZSl7dmFyIHh4PXRoaXMueC5yZWRTcXIoKTt2YXIgeXk9dGhpcy55LnJlZFNxcigpO3ZhciB5eXl5PXl5LnJlZFNxcigpO3ZhciBzPXRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7cz1zLnJlZElBZGQocyk7dmFyIG09eHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTt2YXIgdD1tLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTt2YXIgeXl5eTg9eXl5eS5yZWRJQWRkKHl5eXkpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO254PXQ7bnk9bS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtuej10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgYT10aGlzLngucmVkU3FyKCk7dmFyIGI9dGhpcy55LnJlZFNxcigpO3ZhciBjPWIucmVkU3FyKCk7dmFyIGQ9dGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7ZD1kLnJlZElBZGQoZCk7dmFyIGU9YS5yZWRBZGQoYSkucmVkSUFkZChhKTt2YXIgZj1lLnJlZFNxcigpO3ZhciBjOD1jLnJlZElBZGQoYyk7Yzg9YzgucmVkSUFkZChjOCk7Yzg9YzgucmVkSUFkZChjOCk7bng9Zi5yZWRJU3ViKGQpLnJlZElTdWIoZCk7bnk9ZS5yZWRNdWwoZC5yZWRJU3ViKG54KSkucmVkSVN1YihjOCk7bno9dGhpcy55LnJlZE11bCh0aGlzLnopO256PW56LnJlZElBZGQobnopfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCxueSxueil9O0pQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uIF90aHJlZURibCgpe3ZhciBueDt2YXIgbnk7dmFyIG56O2lmKHRoaXMuek9uZSl7dmFyIHh4PXRoaXMueC5yZWRTcXIoKTt2YXIgeXk9dGhpcy55LnJlZFNxcigpO3ZhciB5eXl5PXl5LnJlZFNxcigpO3ZhciBzPXRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7cz1zLnJlZElBZGQocyk7dmFyIG09eHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KS5yZWRJQWRkKHRoaXMuY3VydmUuYSk7dmFyIHQ9bS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7bng9dDt2YXIgeXl5eTg9eXl5eS5yZWRJQWRkKHl5eXkpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO255PW0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7bno9dGhpcy55LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIGRlbHRhPXRoaXMuei5yZWRTcXIoKTt2YXIgZ2FtbWE9dGhpcy55LnJlZFNxcigpO3ZhciBiZXRhPXRoaXMueC5yZWRNdWwoZ2FtbWEpO3ZhciBhbHBoYT10aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO2FscGhhPWFscGhhLnJlZEFkZChhbHBoYSkucmVkSUFkZChhbHBoYSk7dmFyIGJldGE0PWJldGEucmVkSUFkZChiZXRhKTtiZXRhND1iZXRhNC5yZWRJQWRkKGJldGE0KTt2YXIgYmV0YTg9YmV0YTQucmVkQWRkKGJldGE0KTtueD1hbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtuej10aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihnYW1tYSkucmVkSVN1YihkZWx0YSk7dmFyIGdnYW1tYTg9Z2FtbWEucmVkU3FyKCk7Z2dhbW1hOD1nZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7Z2dhbW1hOD1nZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7Z2dhbW1hOD1nZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7bnk9YWxwaGEucmVkTXVsKGJldGE0LnJlZElTdWIobngpKS5yZWRJU3ViKGdnYW1tYTgpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCxueSxueil9O0pQb2ludC5wcm90b3R5cGUuX2RibD1mdW5jdGlvbiBfZGJsKCl7dmFyIGE9dGhpcy5jdXJ2ZS5hO3ZhciBqeD10aGlzLng7dmFyIGp5PXRoaXMueTt2YXIgano9dGhpcy56O3ZhciBqejQ9anoucmVkU3FyKCkucmVkU3FyKCk7dmFyIGp4Mj1qeC5yZWRTcXIoKTt2YXIgankyPWp5LnJlZFNxcigpO3ZhciBjPWp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTt2YXIganhkND1qeC5yZWRBZGQoangpO2p4ZDQ9anhkNC5yZWRJQWRkKGp4ZDQpO3ZhciB0MT1qeGQ0LnJlZE11bChqeTIpO3ZhciBueD1jLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7dmFyIHQyPXQxLnJlZElTdWIobngpO3ZhciBqeWQ4PWp5Mi5yZWRTcXIoKTtqeWQ4PWp5ZDgucmVkSUFkZChqeWQ4KTtqeWQ4PWp5ZDgucmVkSUFkZChqeWQ4KTtqeWQ4PWp5ZDgucmVkSUFkZChqeWQ4KTt2YXIgbnk9Yy5yZWRNdWwodDIpLnJlZElTdWIoanlkOCk7dmFyIG56PWp5LnJlZEFkZChqeSkucmVkTXVsKGp6KTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsbnksbnopfTtKUG9pbnQucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24gdHJwbCgpe2lmKCF0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgeHg9dGhpcy54LnJlZFNxcigpO3ZhciB5eT10aGlzLnkucmVkU3FyKCk7dmFyIHp6PXRoaXMuei5yZWRTcXIoKTt2YXIgeXl5eT15eS5yZWRTcXIoKTt2YXIgbT14eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO3ZhciBtbT1tLnJlZFNxcigpO3ZhciBlPXRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7ZT1lLnJlZElBZGQoZSk7ZT1lLnJlZEFkZChlKS5yZWRJQWRkKGUpO2U9ZS5yZWRJU3ViKG1tKTt2YXIgZWU9ZS5yZWRTcXIoKTt2YXIgdD15eXl5LnJlZElBZGQoeXl5eSk7dD10LnJlZElBZGQodCk7dD10LnJlZElBZGQodCk7dD10LnJlZElBZGQodCk7dmFyIHU9bS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7dmFyIHl5dTQ9eXkucmVkTXVsKHUpO3l5dTQ9eXl1NC5yZWRJQWRkKHl5dTQpO3l5dTQ9eXl1NC5yZWRJQWRkKHl5dTQpO3ZhciBueD10aGlzLngucmVkTXVsKGVlKS5yZWRJU3ViKHl5dTQpO254PW54LnJlZElBZGQobngpO254PW54LnJlZElBZGQobngpO3ZhciBueT10aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtueT1ueS5yZWRJQWRkKG55KTtueT1ueS5yZWRJQWRkKG55KTtueT1ueS5yZWRJQWRkKG55KTt2YXIgbno9dGhpcy56LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHp6KS5yZWRJU3ViKGVlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsbnksbnopfTtKUG9pbnQucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoayxrYmFzZSl7az1uZXcgYm4oayxrYmFzZSk7cmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxrKX07SlBvaW50LnByb3RvdHlwZS5lcT1mdW5jdGlvbiBlcShwKXtpZihwLnR5cGU9PT0iYWZmaW5lIilyZXR1cm4gdGhpcy5lcShwLnRvSigpKTtpZih0aGlzPT09cClyZXR1cm4gdHJ1ZTt2YXIgejI9dGhpcy56LnJlZFNxcigpO3ZhciBwejI9cC56LnJlZFNxcigpO2lmKHRoaXMueC5yZWRNdWwocHoyKS5yZWRJU3ViKHAueC5yZWRNdWwoejIpKS5jbXBuKDApIT09MClyZXR1cm4gZmFsc2U7dmFyIHozPXoyLnJlZE11bCh0aGlzLnopO3ZhciBwejM9cHoyLnJlZE11bChwLnopO3JldHVybiB0aGlzLnkucmVkTXVsKHB6MykucmVkSVN1YihwLnkucmVkTXVsKHozKSkuY21wbigwKT09PTB9O0pQb2ludC5wcm90b3R5cGUuZXFYVG9QPWZ1bmN0aW9uIGVxWFRvUCh4KXt2YXIgenM9dGhpcy56LnJlZFNxcigpO3ZhciByeD14LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoenMpO2lmKHRoaXMueC5jbXAocngpPT09MClyZXR1cm4gdHJ1ZTt2YXIgeGM9eC5jbG9uZSgpO3ZhciB0PXRoaXMuY3VydmUucmVkTi5yZWRNdWwoenMpO2Zvcig7Oyl7eGMuaWFkZCh0aGlzLmN1cnZlLm4pO2lmKHhjLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiBmYWxzZTtyeC5yZWRJQWRkKHQpO2lmKHRoaXMueC5jbXAocngpPT09MClyZXR1cm4gdHJ1ZX19O0pQb2ludC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbiBpbnNwZWN0KCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIjxFQyBKUG9pbnQgSW5maW5pdHk+IjtyZXR1cm4iPEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnoudG9TdHJpbmcoMTYsMikrIj4ifTtKUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24gaXNJbmZpbml0eSgpe3JldHVybiB0aGlzLnouY21wbigwKT09PTB9O3ZhciBjdXJ2ZV8xPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIGN1cnZlPWV4cG9ydHM7Y3VydmUuYmFzZT1iYXNlO2N1cnZlLnNob3J0PXNob3J0XzE7Y3VydmUubW9udD1udWxsO2N1cnZlLmVkd2FyZHM9bnVsbH0pOyJ1c2Ugc3RyaWN0Ijt2YXIgaW5oZXJpdHNfMT1pbmhlcml0c19icm93c2VyO2Z1bmN0aW9uIHRvQXJyYXkobXNnLGVuYyl7aWYoQXJyYXkuaXNBcnJheShtc2cpKXJldHVybiBtc2cuc2xpY2UoKTtpZighbXNnKXJldHVybltdO3ZhciByZXM9W107aWYodHlwZW9mIG1zZz09PSJzdHJpbmciKXtpZighZW5jKXtmb3IodmFyIGk9MDtpPG1zZy5sZW5ndGg7aSsrKXt2YXIgYz1tc2cuY2hhckNvZGVBdChpKTt2YXIgaGk9Yz4+ODt2YXIgbG89YyYyNTU7aWYoaGkpcmVzLnB1c2goaGksbG8pO2Vsc2UgcmVzLnB1c2gobG8pfX1lbHNlIGlmKGVuYz09PSJoZXgiKXttc2c9bXNnLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpO2lmKG1zZy5sZW5ndGglMiE9PTApbXNnPSIwIittc2c7Zm9yKGk9MDtpPG1zZy5sZW5ndGg7aSs9MilyZXMucHVzaChwYXJzZUludChtc2dbaV0rbXNnW2krMV0sMTYpKX19ZWxzZXtmb3IoaT0wO2k8bXNnLmxlbmd0aDtpKyspcmVzW2ldPW1zZ1tpXXwwfXJldHVybiByZXN9dmFyIHRvQXJyYXlfMT10b0FycmF5O2Z1bmN0aW9uIHRvSGV4KG1zZyl7dmFyIHJlcz0iIjtmb3IodmFyIGk9MDtpPG1zZy5sZW5ndGg7aSsrKXJlcys9emVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7cmV0dXJuIHJlc312YXIgdG9IZXhfMT10b0hleDtmdW5jdGlvbiBodG9ubCh3KXt2YXIgcmVzPXc+Pj4yNHx3Pj4+OCY2NTI4MHx3PDw4JjE2NzExNjgwfCh3JjI1NSk8PDI0O3JldHVybiByZXM+Pj4wfXZhciBodG9ubF8xPWh0b25sO2Z1bmN0aW9uIHRvSGV4MzIobXNnLGVuZGlhbil7dmFyIHJlcz0iIjtmb3IodmFyIGk9MDtpPG1zZy5sZW5ndGg7aSsrKXt2YXIgdz1tc2dbaV07aWYoZW5kaWFuPT09ImxpdHRsZSIpdz1odG9ubCh3KTtyZXMrPXplcm84KHcudG9TdHJpbmcoMTYpKX1yZXR1cm4gcmVzfXZhciB0b0hleDMyXzE9dG9IZXgzMjtmdW5jdGlvbiB6ZXJvMih3b3JkKXtpZih3b3JkLmxlbmd0aD09PTEpcmV0dXJuIjAiK3dvcmQ7ZWxzZSByZXR1cm4gd29yZH12YXIgemVybzJfMT16ZXJvMjtmdW5jdGlvbiB6ZXJvOCh3b3JkKXtpZih3b3JkLmxlbmd0aD09PTcpcmV0dXJuIjAiK3dvcmQ7ZWxzZSBpZih3b3JkLmxlbmd0aD09PTYpcmV0dXJuIjAwIit3b3JkO2Vsc2UgaWYod29yZC5sZW5ndGg9PT01KXJldHVybiIwMDAiK3dvcmQ7ZWxzZSBpZih3b3JkLmxlbmd0aD09PTQpcmV0dXJuIjAwMDAiK3dvcmQ7ZWxzZSBpZih3b3JkLmxlbmd0aD09PTMpcmV0dXJuIjAwMDAwIit3b3JkO2Vsc2UgaWYod29yZC5sZW5ndGg9PT0yKXJldHVybiIwMDAwMDAiK3dvcmQ7ZWxzZSBpZih3b3JkLmxlbmd0aD09PTEpcmV0dXJuIjAwMDAwMDAiK3dvcmQ7ZWxzZSByZXR1cm4gd29yZH12YXIgemVybzhfMT16ZXJvODtmdW5jdGlvbiBqb2luMzIobXNnLHN0YXJ0LGVuZCxlbmRpYW4pe3ZhciBsZW49ZW5kLXN0YXJ0O21pbmltYWxpc3RpY0Fzc2VydChsZW4lND09PTApO3ZhciByZXM9bmV3IEFycmF5KGxlbi80KTtmb3IodmFyIGk9MCxrPXN0YXJ0O2k8cmVzLmxlbmd0aDtpKyssays9NCl7dmFyIHc7aWYoZW5kaWFuPT09ImJpZyIpdz1tc2dba108PDI0fG1zZ1trKzFdPDwxNnxtc2dbaysyXTw8OHxtc2dbayszXTtlbHNlIHc9bXNnW2srM108PDI0fG1zZ1trKzJdPDwxNnxtc2dbaysxXTw8OHxtc2dba107cmVzW2ldPXc+Pj4wfXJldHVybiByZXN9dmFyIGpvaW4zMl8xPWpvaW4zMjtmdW5jdGlvbiBzcGxpdDMyKG1zZyxlbmRpYW4pe3ZhciByZXM9bmV3IEFycmF5KG1zZy5sZW5ndGgqNCk7Zm9yKHZhciBpPTAsaz0wO2k8bXNnLmxlbmd0aDtpKyssays9NCl7dmFyIG09bXNnW2ldO2lmKGVuZGlhbj09PSJiaWciKXtyZXNba109bT4+PjI0O3Jlc1trKzFdPW0+Pj4xNiYyNTU7cmVzW2srMl09bT4+PjgmMjU1O3Jlc1trKzNdPW0mMjU1fWVsc2V7cmVzW2srM109bT4+PjI0O3Jlc1trKzJdPW0+Pj4xNiYyNTU7cmVzW2srMV09bT4+PjgmMjU1O3Jlc1trXT1tJjI1NX19cmV0dXJuIHJlc312YXIgc3BsaXQzMl8xPXNwbGl0MzI7ZnVuY3Rpb24gcm90cjMyKHcsYil7cmV0dXJuIHc+Pj5ifHc8PDMyLWJ9dmFyIHJvdHIzMl8xPXJvdHIzMjtmdW5jdGlvbiByb3RsMzIodyxiKXtyZXR1cm4gdzw8Ynx3Pj4+MzItYn12YXIgcm90bDMyXzE9cm90bDMyO2Z1bmN0aW9uIHN1bTMyKGEsYil7cmV0dXJuIGErYj4+PjB9dmFyIHN1bTMyXzE9c3VtMzI7ZnVuY3Rpb24gc3VtMzJfMyhhLGIsYyl7cmV0dXJuIGErYitjPj4+MH12YXIgc3VtMzJfM18xPXN1bTMyXzM7ZnVuY3Rpb24gc3VtMzJfNChhLGIsYyxkKXtyZXR1cm4gYStiK2MrZD4+PjB9dmFyIHN1bTMyXzRfMT1zdW0zMl80O2Z1bmN0aW9uIHN1bTMyXzUoYSxiLGMsZCxlKXtyZXR1cm4gYStiK2MrZCtlPj4+MH12YXIgc3VtMzJfNV8xPXN1bTMyXzU7ZnVuY3Rpb24gc3VtNjQoYnVmLHBvcyxhaCxhbCl7dmFyIGJoPWJ1Zltwb3NdO3ZhciBibD1idWZbcG9zKzFdO3ZhciBsbz1hbCtibD4+PjA7dmFyIGhpPShsbzxhbD8xOjApK2FoK2JoO2J1Zltwb3NdPWhpPj4+MDtidWZbcG9zKzFdPWxvfXZhciBzdW02NF8xPXN1bTY0O2Z1bmN0aW9uIHN1bTY0X2hpKGFoLGFsLGJoLGJsKXt2YXIgbG89YWwrYmw+Pj4wO3ZhciBoaT0obG88YWw/MTowKSthaCtiaDtyZXR1cm4gaGk+Pj4wfXZhciBzdW02NF9oaV8xPXN1bTY0X2hpO2Z1bmN0aW9uIHN1bTY0X2xvKGFoLGFsLGJoLGJsKXt2YXIgbG89YWwrYmw7cmV0dXJuIGxvPj4+MH12YXIgc3VtNjRfbG9fMT1zdW02NF9sbztmdW5jdGlvbiBzdW02NF80X2hpKGFoLGFsLGJoLGJsLGNoLGNsLGRoLGRsKXt2YXIgY2Fycnk9MDt2YXIgbG89YWw7bG89bG8rYmw+Pj4wO2NhcnJ5Kz1sbzxhbD8xOjA7bG89bG8rY2w+Pj4wO2NhcnJ5Kz1sbzxjbD8xOjA7bG89bG8rZGw+Pj4wO2NhcnJ5Kz1sbzxkbD8xOjA7dmFyIGhpPWFoK2JoK2NoK2RoK2NhcnJ5O3JldHVybiBoaT4+PjB9dmFyIHN1bTY0XzRfaGlfMT1zdW02NF80X2hpO2Z1bmN0aW9uIHN1bTY0XzRfbG8oYWgsYWwsYmgsYmwsY2gsY2wsZGgsZGwpe3ZhciBsbz1hbCtibCtjbCtkbDtyZXR1cm4gbG8+Pj4wfXZhciBzdW02NF80X2xvXzE9c3VtNjRfNF9sbztmdW5jdGlvbiBzdW02NF81X2hpKGFoLGFsLGJoLGJsLGNoLGNsLGRoLGRsLGVoLGVsKXt2YXIgY2Fycnk9MDt2YXIgbG89YWw7bG89bG8rYmw+Pj4wO2NhcnJ5Kz1sbzxhbD8xOjA7bG89bG8rY2w+Pj4wO2NhcnJ5Kz1sbzxjbD8xOjA7bG89bG8rZGw+Pj4wO2NhcnJ5Kz1sbzxkbD8xOjA7bG89bG8rZWw+Pj4wO2NhcnJ5Kz1sbzxlbD8xOjA7dmFyIGhpPWFoK2JoK2NoK2RoK2VoK2NhcnJ5O3JldHVybiBoaT4+PjB9dmFyIHN1bTY0XzVfaGlfMT1zdW02NF81X2hpO2Z1bmN0aW9uIHN1bTY0XzVfbG8oYWgsYWwsYmgsYmwsY2gsY2wsZGgsZGwsZWgsZWwpe3ZhciBsbz1hbCtibCtjbCtkbCtlbDtyZXR1cm4gbG8+Pj4wfXZhciBzdW02NF81X2xvXzE9c3VtNjRfNV9sbztmdW5jdGlvbiByb3RyNjRfaGkoYWgsYWwsbnVtKXt2YXIgcj1hbDw8MzItbnVtfGFoPj4+bnVtO3JldHVybiByPj4+MH12YXIgcm90cjY0X2hpXzE9cm90cjY0X2hpO2Z1bmN0aW9uIHJvdHI2NF9sbyhhaCxhbCxudW0pe3ZhciByPWFoPDwzMi1udW18YWw+Pj5udW07cmV0dXJuIHI+Pj4wfXZhciByb3RyNjRfbG9fMT1yb3RyNjRfbG87ZnVuY3Rpb24gc2hyNjRfaGkoYWgsYWwsbnVtKXtyZXR1cm4gYWg+Pj5udW19dmFyIHNocjY0X2hpXzE9c2hyNjRfaGk7ZnVuY3Rpb24gc2hyNjRfbG8oYWgsYWwsbnVtKXt2YXIgcj1haDw8MzItbnVtfGFsPj4+bnVtO3JldHVybiByPj4+MH12YXIgc2hyNjRfbG9fMT1zaHI2NF9sbzt2YXIgdXRpbHM9e2luaGVyaXRzOmluaGVyaXRzXzEsdG9BcnJheTp0b0FycmF5XzEsdG9IZXg6dG9IZXhfMSxodG9ubDpodG9ubF8xLHRvSGV4MzI6dG9IZXgzMl8xLHplcm8yOnplcm8yXzEsemVybzg6emVybzhfMSxqb2luMzI6am9pbjMyXzEsc3BsaXQzMjpzcGxpdDMyXzEscm90cjMyOnJvdHIzMl8xLHJvdGwzMjpyb3RsMzJfMSxzdW0zMjpzdW0zMl8xLHN1bTMyXzM6c3VtMzJfM18xLHN1bTMyXzQ6c3VtMzJfNF8xLHN1bTMyXzU6c3VtMzJfNV8xLHN1bTY0OnN1bTY0XzEsc3VtNjRfaGk6c3VtNjRfaGlfMSxzdW02NF9sbzpzdW02NF9sb18xLHN1bTY0XzRfaGk6c3VtNjRfNF9oaV8xLHN1bTY0XzRfbG86c3VtNjRfNF9sb18xLHN1bTY0XzVfaGk6c3VtNjRfNV9oaV8xLHN1bTY0XzVfbG86c3VtNjRfNV9sb18xLHJvdHI2NF9oaTpyb3RyNjRfaGlfMSxyb3RyNjRfbG86cm90cjY0X2xvXzEsc2hyNjRfaGk6c2hyNjRfaGlfMSxzaHI2NF9sbzpzaHI2NF9sb18xfTsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQmxvY2tIYXNoKCl7dGhpcy5wZW5kaW5nPW51bGw7dGhpcy5wZW5kaW5nVG90YWw9MDt0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZTt0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplO3RoaXMuaG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoO3RoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoLzg7dGhpcy5lbmRpYW49ImJpZyI7dGhpcy5fZGVsdGE4PXRoaXMuYmxvY2tTaXplLzg7dGhpcy5fZGVsdGEzMj10aGlzLmJsb2NrU2l6ZS8zMn12YXIgQmxvY2tIYXNoXzE9QmxvY2tIYXNoO0Jsb2NrSGFzaC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShtc2csZW5jKXttc2c9dXRpbHMudG9BcnJheShtc2csZW5jKTtpZighdGhpcy5wZW5kaW5nKXRoaXMucGVuZGluZz1tc2c7ZWxzZSB0aGlzLnBlbmRpbmc9dGhpcy5wZW5kaW5nLmNvbmNhdChtc2cpO3RoaXMucGVuZGluZ1RvdGFsKz1tc2cubGVuZ3RoO2lmKHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7bXNnPXRoaXMucGVuZGluZzt2YXIgcj1tc2cubGVuZ3RoJXRoaXMuX2RlbHRhODt0aGlzLnBlbmRpbmc9bXNnLnNsaWNlKG1zZy5sZW5ndGgtcixtc2cubGVuZ3RoKTtpZih0aGlzLnBlbmRpbmcubGVuZ3RoPT09MCl0aGlzLnBlbmRpbmc9bnVsbDttc2c9dXRpbHMuam9pbjMyKG1zZywwLG1zZy5sZW5ndGgtcix0aGlzLmVuZGlhbik7Zm9yKHZhciBpPTA7aTxtc2cubGVuZ3RoO2krPXRoaXMuX2RlbHRhMzIpdGhpcy5fdXBkYXRlKG1zZyxpLGkrdGhpcy5fZGVsdGEzMil9cmV0dXJuIHRoaXN9O0Jsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlbmMpe3RoaXMudXBkYXRlKHRoaXMuX3BhZCgpKTttaW5pbWFsaXN0aWNBc3NlcnQodGhpcy5wZW5kaW5nPT09bnVsbCk7cmV0dXJuIHRoaXMuX2RpZ2VzdChlbmMpfTtCbG9ja0hhc2gucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24gcGFkKCl7dmFyIGxlbj10aGlzLnBlbmRpbmdUb3RhbDt2YXIgYnl0ZXM9dGhpcy5fZGVsdGE4O3ZhciBrPWJ5dGVzLShsZW4rdGhpcy5wYWRMZW5ndGgpJWJ5dGVzO3ZhciByZXM9bmV3IEFycmF5KGsrdGhpcy5wYWRMZW5ndGgpO3Jlc1swXT0xMjg7Zm9yKHZhciBpPTE7aTxrO2krKylyZXNbaV09MDtsZW48PD0zO2lmKHRoaXMuZW5kaWFuPT09ImJpZyIpe2Zvcih2YXIgdD04O3Q8dGhpcy5wYWRMZW5ndGg7dCsrKXJlc1tpKytdPTA7cmVzW2krK109MDtyZXNbaSsrXT0wO3Jlc1tpKytdPTA7cmVzW2krK109MDtyZXNbaSsrXT1sZW4+Pj4yNCYyNTU7cmVzW2krK109bGVuPj4+MTYmMjU1O3Jlc1tpKytdPWxlbj4+PjgmMjU1O3Jlc1tpKytdPWxlbiYyNTV9ZWxzZXtyZXNbaSsrXT1sZW4mMjU1O3Jlc1tpKytdPWxlbj4+PjgmMjU1O3Jlc1tpKytdPWxlbj4+PjE2JjI1NTtyZXNbaSsrXT1sZW4+Pj4yNCYyNTU7cmVzW2krK109MDtyZXNbaSsrXT0wO3Jlc1tpKytdPTA7cmVzW2krK109MDtmb3IodD04O3Q8dGhpcy5wYWRMZW5ndGg7dCsrKXJlc1tpKytdPTB9cmV0dXJuIHJlc307dmFyIGNvbW1vbj17QmxvY2tIYXNoOkJsb2NrSGFzaF8xfTsidXNlIHN0cmljdCI7dmFyIHJvdHIzMiQxPXV0aWxzLnJvdHIzMjtmdW5jdGlvbiBmdF8xKHMseCx5LHope2lmKHM9PT0wKXJldHVybiBjaDMyKHgseSx6KTtpZihzPT09MXx8cz09PTMpcmV0dXJuIHAzMih4LHkseik7aWYocz09PTIpcmV0dXJuIG1hajMyKHgseSx6KX12YXIgZnRfMV8xPWZ0XzE7ZnVuY3Rpb24gY2gzMih4LHkseil7cmV0dXJuIHgmeV5+eCZ6fXZhciBjaDMyXzE9Y2gzMjtmdW5jdGlvbiBtYWozMih4LHkseil7cmV0dXJuIHgmeV54JnpeeSZ6fXZhciBtYWozMl8xPW1hajMyO2Z1bmN0aW9uIHAzMih4LHkseil7cmV0dXJuIHheeV56fXZhciBwMzJfMT1wMzI7ZnVuY3Rpb24gczBfMjU2KHgpe3JldHVybiByb3RyMzIkMSh4LDIpXnJvdHIzMiQxKHgsMTMpXnJvdHIzMiQxKHgsMjIpfXZhciBzMF8yNTZfMT1zMF8yNTY7ZnVuY3Rpb24gczFfMjU2KHgpe3JldHVybiByb3RyMzIkMSh4LDYpXnJvdHIzMiQxKHgsMTEpXnJvdHIzMiQxKHgsMjUpfXZhciBzMV8yNTZfMT1zMV8yNTY7ZnVuY3Rpb24gZzBfMjU2KHgpe3JldHVybiByb3RyMzIkMSh4LDcpXnJvdHIzMiQxKHgsMTgpXng+Pj4zfXZhciBnMF8yNTZfMT1nMF8yNTY7ZnVuY3Rpb24gZzFfMjU2KHgpe3JldHVybiByb3RyMzIkMSh4LDE3KV5yb3RyMzIkMSh4LDE5KV54Pj4+MTB9dmFyIGcxXzI1Nl8xPWcxXzI1Njt2YXIgY29tbW9uJDE9e2Z0XzE6ZnRfMV8xLGNoMzI6Y2gzMl8xLG1hajMyOm1hajMyXzEscDMyOnAzMl8xLHMwXzI1NjpzMF8yNTZfMSxzMV8yNTY6czFfMjU2XzEsZzBfMjU2OmcwXzI1Nl8xLGcxXzI1NjpnMV8yNTZfMX07InVzZSBzdHJpY3QiO3ZhciByb3RsMzIkMT11dGlscy5yb3RsMzI7dmFyIHN1bTMyJDE9dXRpbHMuc3VtMzI7dmFyIHN1bTMyXzUkMT11dGlscy5zdW0zMl81O3ZhciBmdF8xJDE9Y29tbW9uJDEuZnRfMTt2YXIgQmxvY2tIYXNoJDE9Y29tbW9uLkJsb2NrSGFzaDt2YXIgc2hhMV9LPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwzMzk1NDY5NzgyXTtmdW5jdGlvbiBTSEExKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU0hBMSkpcmV0dXJuIG5ldyBTSEExO0Jsb2NrSGFzaCQxLmNhbGwodGhpcyk7dGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF07dGhpcy5XPW5ldyBBcnJheSg4MCl9dXRpbHMuaW5oZXJpdHMoU0hBMSxCbG9ja0hhc2gkMSk7dmFyIF8xPVNIQTE7U0hBMS5ibG9ja1NpemU9NTEyO1NIQTEub3V0U2l6ZT0xNjA7U0hBMS5obWFjU3RyZW5ndGg9ODA7U0hBMS5wYWRMZW5ndGg9NjQ7U0hBMS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbiBfdXBkYXRlKG1zZyxzdGFydCl7dmFyIFc9dGhpcy5XO2Zvcih2YXIgaT0wO2k8MTY7aSsrKVdbaV09bXNnW3N0YXJ0K2ldO2Zvcig7aTxXLmxlbmd0aDtpKyspV1tpXT1yb3RsMzIkMShXW2ktM11eV1tpLThdXldbaS0xNF1eV1tpLTE2XSwxKTt2YXIgYT10aGlzLmhbMF07dmFyIGI9dGhpcy5oWzFdO3ZhciBjPXRoaXMuaFsyXTt2YXIgZD10aGlzLmhbM107dmFyIGU9dGhpcy5oWzRdO2ZvcihpPTA7aTxXLmxlbmd0aDtpKyspe3ZhciBzPX5+KGkvMjApO3ZhciB0PXN1bTMyXzUkMShyb3RsMzIkMShhLDUpLGZ0XzEkMShzLGIsYyxkKSxlLFdbaV0sc2hhMV9LW3NdKTtlPWQ7ZD1jO2M9cm90bDMyJDEoYiwzMCk7Yj1hO2E9dH10aGlzLmhbMF09c3VtMzIkMSh0aGlzLmhbMF0sYSk7dGhpcy5oWzFdPXN1bTMyJDEodGhpcy5oWzFdLGIpO3RoaXMuaFsyXT1zdW0zMiQxKHRoaXMuaFsyXSxjKTt0aGlzLmhbM109c3VtMzIkMSh0aGlzLmhbM10sZCk7dGhpcy5oWzRdPXN1bTMyJDEodGhpcy5oWzRdLGUpfTtTSEExLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlbmMpe2lmKGVuYz09PSJoZXgiKXJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwiYmlnIik7ZWxzZSByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsImJpZyIpfTsidXNlIHN0cmljdCI7dmFyIHN1bTMyJDI9dXRpbHMuc3VtMzI7dmFyIHN1bTMyXzQkMT11dGlscy5zdW0zMl80O3ZhciBzdW0zMl81JDI9dXRpbHMuc3VtMzJfNTt2YXIgY2gzMiQxPWNvbW1vbiQxLmNoMzI7dmFyIG1hajMyJDE9Y29tbW9uJDEubWFqMzI7dmFyIHMwXzI1NiQxPWNvbW1vbiQxLnMwXzI1Njt2YXIgczFfMjU2JDE9Y29tbW9uJDEuczFfMjU2O3ZhciBnMF8yNTYkMT1jb21tb24kMS5nMF8yNTY7dmFyIGcxXzI1NiQxPWNvbW1vbiQxLmcxXzI1Njt2YXIgQmxvY2tIYXNoJDI9Y29tbW9uLkJsb2NrSGFzaDt2YXIgc2hhMjU2X0s9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07ZnVuY3Rpb24gU0hBMjU2KCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlyZXR1cm4gbmV3IFNIQTI1NjtCbG9ja0hhc2gkMi5jYWxsKHRoaXMpO3RoaXMuaD1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdO3RoaXMuaz1zaGEyNTZfSzt0aGlzLlc9bmV3IEFycmF5KDY0KX11dGlscy5pbmhlcml0cyhTSEEyNTYsQmxvY2tIYXNoJDIpO3ZhciBfMjU2PVNIQTI1NjtTSEEyNTYuYmxvY2tTaXplPTUxMjtTSEEyNTYub3V0U2l6ZT0yNTY7U0hBMjU2LmhtYWNTdHJlbmd0aD0xOTI7U0hBMjU2LnBhZExlbmd0aD02NDtTSEEyNTYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24gX3VwZGF0ZShtc2csc3RhcnQpe3ZhciBXPXRoaXMuVztmb3IodmFyIGk9MDtpPDE2O2krKylXW2ldPW1zZ1tzdGFydCtpXTtmb3IoO2k8Vy5sZW5ndGg7aSsrKVdbaV09c3VtMzJfNCQxKGcxXzI1NiQxKFdbaS0yXSksV1tpLTddLGcwXzI1NiQxKFdbaS0xNV0pLFdbaS0xNl0pO3ZhciBhPXRoaXMuaFswXTt2YXIgYj10aGlzLmhbMV07dmFyIGM9dGhpcy5oWzJdO3ZhciBkPXRoaXMuaFszXTt2YXIgZT10aGlzLmhbNF07dmFyIGY9dGhpcy5oWzVdO3ZhciBnPXRoaXMuaFs2XTt2YXIgaD10aGlzLmhbN107bWluaW1hbGlzdGljQXNzZXJ0KHRoaXMuay5sZW5ndGg9PT1XLmxlbmd0aCk7Zm9yKGk9MDtpPFcubGVuZ3RoO2krKyl7dmFyIFQxPXN1bTMyXzUkMihoLHMxXzI1NiQxKGUpLGNoMzIkMShlLGYsZyksdGhpcy5rW2ldLFdbaV0pO3ZhciBUMj1zdW0zMiQyKHMwXzI1NiQxKGEpLG1hajMyJDEoYSxiLGMpKTtoPWc7Zz1mO2Y9ZTtlPXN1bTMyJDIoZCxUMSk7ZD1jO2M9YjtiPWE7YT1zdW0zMiQyKFQxLFQyKX10aGlzLmhbMF09c3VtMzIkMih0aGlzLmhbMF0sYSk7dGhpcy5oWzFdPXN1bTMyJDIodGhpcy5oWzFdLGIpO3RoaXMuaFsyXT1zdW0zMiQyKHRoaXMuaFsyXSxjKTt0aGlzLmhbM109c3VtMzIkMih0aGlzLmhbM10sZCk7dGhpcy5oWzRdPXN1bTMyJDIodGhpcy5oWzRdLGUpO3RoaXMuaFs1XT1zdW0zMiQyKHRoaXMuaFs1XSxmKTt0aGlzLmhbNl09c3VtMzIkMih0aGlzLmhbNl0sZyk7dGhpcy5oWzddPXN1bTMyJDIodGhpcy5oWzddLGgpfTtTSEEyNTYucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCJiaWciKTtlbHNlIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwiYmlnIil9OyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBTSEEyMjQoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKXJldHVybiBuZXcgU0hBMjI0O18yNTYuY2FsbCh0aGlzKTt0aGlzLmg9WzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAyNSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdfXV0aWxzLmluaGVyaXRzKFNIQTIyNCxfMjU2KTt2YXIgXzIyND1TSEEyMjQ7U0hBMjI0LmJsb2NrU2l6ZT01MTI7U0hBMjI0Lm91dFNpemU9MjI0O1NIQTIyNC5obWFjU3RyZW5ndGg9MTkyO1NIQTIyNC5wYWRMZW5ndGg9NjQ7U0hBMjI0LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlbmMpe2lmKGVuYz09PSJoZXgiKXJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKTtlbHNlIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKX07InVzZSBzdHJpY3QiO3ZhciByb3RyNjRfaGkkMT11dGlscy5yb3RyNjRfaGk7dmFyIHJvdHI2NF9sbyQxPXV0aWxzLnJvdHI2NF9sbzt2YXIgc2hyNjRfaGkkMT11dGlscy5zaHI2NF9oaTt2YXIgc2hyNjRfbG8kMT11dGlscy5zaHI2NF9sbzt2YXIgc3VtNjQkMT11dGlscy5zdW02NDt2YXIgc3VtNjRfaGkkMT11dGlscy5zdW02NF9oaTt2YXIgc3VtNjRfbG8kMT11dGlscy5zdW02NF9sbzt2YXIgc3VtNjRfNF9oaSQxPXV0aWxzLnN1bTY0XzRfaGk7dmFyIHN1bTY0XzRfbG8kMT11dGlscy5zdW02NF80X2xvO3ZhciBzdW02NF81X2hpJDE9dXRpbHMuc3VtNjRfNV9oaTt2YXIgc3VtNjRfNV9sbyQxPXV0aWxzLnN1bTY0XzVfbG87dmFyIEJsb2NrSGFzaCQzPWNvbW1vbi5CbG9ja0hhc2g7dmFyIHNoYTUxMl9LPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07ZnVuY3Rpb24gU0hBNTEyKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU0hBNTEyKSlyZXR1cm4gbmV3IFNIQTUxMjtCbG9ja0hhc2gkMy5jYWxsKHRoaXMpO3RoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMxNDQxMzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0NywxNTQxNDU5MjI1LDMyNzAzMzIwOV07dGhpcy5rPXNoYTUxMl9LO3RoaXMuVz1uZXcgQXJyYXkoMTYwKX11dGlscy5pbmhlcml0cyhTSEE1MTIsQmxvY2tIYXNoJDMpO3ZhciBfNTEyPVNIQTUxMjtTSEE1MTIuYmxvY2tTaXplPTEwMjQ7U0hBNTEyLm91dFNpemU9NTEyO1NIQTUxMi5obWFjU3RyZW5ndGg9MTkyO1NIQTUxMi5wYWRMZW5ndGg9MTI4O1NIQTUxMi5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbiBfcHJlcGFyZUJsb2NrKG1zZyxzdGFydCl7dmFyIFc9dGhpcy5XO2Zvcih2YXIgaT0wO2k8MzI7aSsrKVdbaV09bXNnW3N0YXJ0K2ldO2Zvcig7aTxXLmxlbmd0aDtpKz0yKXt2YXIgYzBfaGk9ZzFfNTEyX2hpKFdbaS00XSxXW2ktM10pO3ZhciBjMF9sbz1nMV81MTJfbG8oV1tpLTRdLFdbaS0zXSk7dmFyIGMxX2hpPVdbaS0xNF07dmFyIGMxX2xvPVdbaS0xM107dmFyIGMyX2hpPWcwXzUxMl9oaShXW2ktMzBdLFdbaS0yOV0pO3ZhciBjMl9sbz1nMF81MTJfbG8oV1tpLTMwXSxXW2ktMjldKTt2YXIgYzNfaGk9V1tpLTMyXTt2YXIgYzNfbG89V1tpLTMxXTtXW2ldPXN1bTY0XzRfaGkkMShjMF9oaSxjMF9sbyxjMV9oaSxjMV9sbyxjMl9oaSxjMl9sbyxjM19oaSxjM19sbyk7V1tpKzFdPXN1bTY0XzRfbG8kMShjMF9oaSxjMF9sbyxjMV9oaSxjMV9sbyxjMl9oaSxjMl9sbyxjM19oaSxjM19sbyl9fTtTSEE1MTIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24gX3VwZGF0ZShtc2csc3RhcnQpe3RoaXMuX3ByZXBhcmVCbG9jayhtc2csc3RhcnQpO3ZhciBXPXRoaXMuVzt2YXIgYWg9dGhpcy5oWzBdO3ZhciBhbD10aGlzLmhbMV07dmFyIGJoPXRoaXMuaFsyXTt2YXIgYmw9dGhpcy5oWzNdO3ZhciBjaD10aGlzLmhbNF07dmFyIGNsPXRoaXMuaFs1XTt2YXIgZGg9dGhpcy5oWzZdO3ZhciBkbD10aGlzLmhbN107dmFyIGVoPXRoaXMuaFs4XTt2YXIgZWw9dGhpcy5oWzldO3ZhciBmaD10aGlzLmhbMTBdO3ZhciBmbD10aGlzLmhbMTFdO3ZhciBnaD10aGlzLmhbMTJdO3ZhciBnbD10aGlzLmhbMTNdO3ZhciBoaD10aGlzLmhbMTRdO3ZhciBobD10aGlzLmhbMTVdO21pbmltYWxpc3RpY0Fzc2VydCh0aGlzLmsubGVuZ3RoPT09Vy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8Vy5sZW5ndGg7aSs9Mil7dmFyIGMwX2hpPWhoO3ZhciBjMF9sbz1obDt2YXIgYzFfaGk9czFfNTEyX2hpKGVoLGVsKTt2YXIgYzFfbG89czFfNTEyX2xvKGVoLGVsKTt2YXIgYzJfaGk9Y2g2NF9oaShlaCxlbCxmaCxmbCxnaCxnbCk7dmFyIGMyX2xvPWNoNjRfbG8oZWgsZWwsZmgsZmwsZ2gsZ2wpO3ZhciBjM19oaT10aGlzLmtbaV07dmFyIGMzX2xvPXRoaXMua1tpKzFdO3ZhciBjNF9oaT1XW2ldO3ZhciBjNF9sbz1XW2krMV07dmFyIFQxX2hpPXN1bTY0XzVfaGkkMShjMF9oaSxjMF9sbyxjMV9oaSxjMV9sbyxjMl9oaSxjMl9sbyxjM19oaSxjM19sbyxjNF9oaSxjNF9sbyk7dmFyIFQxX2xvPXN1bTY0XzVfbG8kMShjMF9oaSxjMF9sbyxjMV9oaSxjMV9sbyxjMl9oaSxjMl9sbyxjM19oaSxjM19sbyxjNF9oaSxjNF9sbyk7YzBfaGk9czBfNTEyX2hpKGFoLGFsKTtjMF9sbz1zMF81MTJfbG8oYWgsYWwpO2MxX2hpPW1hajY0X2hpKGFoLGFsLGJoLGJsLGNoLGNsKTtjMV9sbz1tYWo2NF9sbyhhaCxhbCxiaCxibCxjaCxjbCk7dmFyIFQyX2hpPXN1bTY0X2hpJDEoYzBfaGksYzBfbG8sYzFfaGksYzFfbG8pO3ZhciBUMl9sbz1zdW02NF9sbyQxKGMwX2hpLGMwX2xvLGMxX2hpLGMxX2xvKTtoaD1naDtobD1nbDtnaD1maDtnbD1mbDtmaD1laDtmbD1lbDtlaD1zdW02NF9oaSQxKGRoLGRsLFQxX2hpLFQxX2xvKTtlbD1zdW02NF9sbyQxKGRsLGRsLFQxX2hpLFQxX2xvKTtkaD1jaDtkbD1jbDtjaD1iaDtjbD1ibDtiaD1haDtibD1hbDthaD1zdW02NF9oaSQxKFQxX2hpLFQxX2xvLFQyX2hpLFQyX2xvKTthbD1zdW02NF9sbyQxKFQxX2hpLFQxX2xvLFQyX2hpLFQyX2xvKX1zdW02NCQxKHRoaXMuaCwwLGFoLGFsKTtzdW02NCQxKHRoaXMuaCwyLGJoLGJsKTtzdW02NCQxKHRoaXMuaCw0LGNoLGNsKTtzdW02NCQxKHRoaXMuaCw2LGRoLGRsKTtzdW02NCQxKHRoaXMuaCw4LGVoLGVsKTtzdW02NCQxKHRoaXMuaCwxMCxmaCxmbCk7c3VtNjQkMSh0aGlzLmgsMTIsZ2gsZ2wpO3N1bTY0JDEodGhpcy5oLDE0LGhoLGhsKX07U0hBNTEyLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlbmMpe2lmKGVuYz09PSJoZXgiKXJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwiYmlnIik7ZWxzZSByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsImJpZyIpfTtmdW5jdGlvbiBjaDY0X2hpKHhoLHhsLHloLHlsLHpoKXt2YXIgcj14aCZ5aF5+eGgmemg7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gY2g2NF9sbyh4aCx4bCx5aCx5bCx6aCx6bCl7dmFyIHI9eGwmeWxefnhsJnpsO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfWZ1bmN0aW9uIG1hajY0X2hpKHhoLHhsLHloLHlsLHpoKXt2YXIgcj14aCZ5aF54aCZ6aF55aCZ6aDtpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBtYWo2NF9sbyh4aCx4bCx5aCx5bCx6aCx6bCl7dmFyIHI9eGwmeWxeeGwmemxeeWwmemw7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gczBfNTEyX2hpKHhoLHhsKXt2YXIgYzBfaGk9cm90cjY0X2hpJDEoeGgseGwsMjgpO3ZhciBjMV9oaT1yb3RyNjRfaGkkMSh4bCx4aCwyKTt2YXIgYzJfaGk9cm90cjY0X2hpJDEoeGwseGgsNyk7dmFyIHI9YzBfaGleYzFfaGleYzJfaGk7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gczBfNTEyX2xvKHhoLHhsKXt2YXIgYzBfbG89cm90cjY0X2xvJDEoeGgseGwsMjgpO3ZhciBjMV9sbz1yb3RyNjRfbG8kMSh4bCx4aCwyKTt2YXIgYzJfbG89cm90cjY0X2xvJDEoeGwseGgsNyk7dmFyIHI9YzBfbG9eYzFfbG9eYzJfbG87aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gczFfNTEyX2hpKHhoLHhsKXt2YXIgYzBfaGk9cm90cjY0X2hpJDEoeGgseGwsMTQpO3ZhciBjMV9oaT1yb3RyNjRfaGkkMSh4aCx4bCwxOCk7dmFyIGMyX2hpPXJvdHI2NF9oaSQxKHhsLHhoLDkpO3ZhciByPWMwX2hpXmMxX2hpXmMyX2hpO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfWZ1bmN0aW9uIHMxXzUxMl9sbyh4aCx4bCl7dmFyIGMwX2xvPXJvdHI2NF9sbyQxKHhoLHhsLDE0KTt2YXIgYzFfbG89cm90cjY0X2xvJDEoeGgseGwsMTgpO3ZhciBjMl9sbz1yb3RyNjRfbG8kMSh4bCx4aCw5KTt2YXIgcj1jMF9sb15jMV9sb15jMl9sbztpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBnMF81MTJfaGkoeGgseGwpe3ZhciBjMF9oaT1yb3RyNjRfaGkkMSh4aCx4bCwxKTt2YXIgYzFfaGk9cm90cjY0X2hpJDEoeGgseGwsOCk7dmFyIGMyX2hpPXNocjY0X2hpJDEoeGgseGwsNyk7dmFyIHI9YzBfaGleYzFfaGleYzJfaGk7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gZzBfNTEyX2xvKHhoLHhsKXt2YXIgYzBfbG89cm90cjY0X2xvJDEoeGgseGwsMSk7dmFyIGMxX2xvPXJvdHI2NF9sbyQxKHhoLHhsLDgpO3ZhciBjMl9sbz1zaHI2NF9sbyQxKHhoLHhsLDcpO3ZhciByPWMwX2xvXmMxX2xvXmMyX2xvO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfWZ1bmN0aW9uIGcxXzUxMl9oaSh4aCx4bCl7dmFyIGMwX2hpPXJvdHI2NF9oaSQxKHhoLHhsLDE5KTt2YXIgYzFfaGk9cm90cjY0X2hpJDEoeGwseGgsMjkpO3ZhciBjMl9oaT1zaHI2NF9oaSQxKHhoLHhsLDYpO3ZhciByPWMwX2hpXmMxX2hpXmMyX2hpO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfWZ1bmN0aW9uIGcxXzUxMl9sbyh4aCx4bCl7dmFyIGMwX2xvPXJvdHI2NF9sbyQxKHhoLHhsLDE5KTt2YXIgYzFfbG89cm90cjY0X2xvJDEoeGwseGgsMjkpO3ZhciBjMl9sbz1zaHI2NF9sbyQxKHhoLHhsLDYpO3ZhciByPWMwX2xvXmMxX2xvXmMyX2xvO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfSJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBTSEEzODQoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEEzODQpKXJldHVybiBuZXcgU0hBMzg0O181MTIuY2FsbCh0aGlzKTt0aGlzLmg9WzM0MTgwNzAzNjUsMzIzODM3MTAzMiwxNjU0MjcwMjUwLDkxNDE1MDY2MywyNDM4NTI5MzcwLDgxMjcwMjk5OSwzNTU0NjIzNjAsNDE0NDkxMjY5NywxNzMxNDA1NDE1LDQyOTA3NzU4NTcsMjM5NDE4MDIzMSwxNzUwNjAzMDI1LDM2NzUwMDg1MjUsMTY5NDA3NjgzOSwxMjAzMDYyODEzLDMyMDQwNzU0MjhdfXV0aWxzLmluaGVyaXRzKFNIQTM4NCxfNTEyKTt2YXIgXzM4ND1TSEEzODQ7U0hBMzg0LmJsb2NrU2l6ZT0xMDI0O1NIQTM4NC5vdXRTaXplPTM4NDtTSEEzODQuaG1hY1N0cmVuZ3RoPTE5MjtTSEEzODQucGFkTGVuZ3RoPTEyODtTSEEzODQucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKTtlbHNlIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDEyKSwiYmlnIil9OyJ1c2Ugc3RyaWN0Ijt2YXIgc2hhMT1fMTt2YXIgc2hhMjI0PV8yMjQ7dmFyIHNoYTI1Nj1fMjU2O3ZhciBzaGEzODQ9XzM4NDt2YXIgc2hhNTEyPV81MTI7dmFyIHNoYT17c2hhMTpzaGExLHNoYTIyNDpzaGEyMjQsc2hhMjU2OnNoYTI1NixzaGEzODQ6c2hhMzg0LHNoYTUxMjpzaGE1MTJ9OyJ1c2Ugc3RyaWN0Ijt2YXIgcm90bDMyJDI9dXRpbHMucm90bDMyO3ZhciBzdW0zMiQzPXV0aWxzLnN1bTMyO3ZhciBzdW0zMl8zJDE9dXRpbHMuc3VtMzJfMzt2YXIgc3VtMzJfNCQyPXV0aWxzLnN1bTMyXzQ7dmFyIEJsb2NrSGFzaCQ0PWNvbW1vbi5CbG9ja0hhc2g7ZnVuY3Rpb24gUklQRU1EMTYwKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgUklQRU1EMTYwKSlyZXR1cm4gbmV3IFJJUEVNRDE2MDtCbG9ja0hhc2gkNC5jYWxsKHRoaXMpO3RoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdO3RoaXMuZW5kaWFuPSJsaXR0bGUifXV0aWxzLmluaGVyaXRzKFJJUEVNRDE2MCxCbG9ja0hhc2gkNCk7dmFyIHJpcGVtZDE2MD1SSVBFTUQxNjA7UklQRU1EMTYwLmJsb2NrU2l6ZT01MTI7UklQRU1EMTYwLm91dFNpemU9MTYwO1JJUEVNRDE2MC5obWFjU3RyZW5ndGg9MTkyO1JJUEVNRDE2MC5wYWRMZW5ndGg9NjQ7UklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShtc2csc3RhcnQpe3ZhciBBPXRoaXMuaFswXTt2YXIgQj10aGlzLmhbMV07dmFyIEM9dGhpcy5oWzJdO3ZhciBEPXRoaXMuaFszXTt2YXIgRT10aGlzLmhbNF07dmFyIEFoPUE7dmFyIEJoPUI7dmFyIENoPUM7dmFyIERoPUQ7dmFyIEVoPUU7Zm9yKHZhciBqPTA7ajw4MDtqKyspe3ZhciBUPXN1bTMyJDMocm90bDMyJDIoc3VtMzJfNCQyKEEsZihqLEIsQyxEKSxtc2dbcltqXStzdGFydF0sSyhqKSksc1tqXSksRSk7QT1FO0U9RDtEPXJvdGwzMiQyKEMsMTApO0M9QjtCPVQ7VD1zdW0zMiQzKHJvdGwzMiQyKHN1bTMyXzQkMihBaCxmKDc5LWosQmgsQ2gsRGgpLG1zZ1tyaFtqXStzdGFydF0sS2goaikpLHNoW2pdKSxFaCk7QWg9RWg7RWg9RGg7RGg9cm90bDMyJDIoQ2gsMTApO0NoPUJoO0JoPVR9VD1zdW0zMl8zJDEodGhpcy5oWzFdLEMsRGgpO3RoaXMuaFsxXT1zdW0zMl8zJDEodGhpcy5oWzJdLEQsRWgpO3RoaXMuaFsyXT1zdW0zMl8zJDEodGhpcy5oWzNdLEUsQWgpO3RoaXMuaFszXT1zdW0zMl8zJDEodGhpcy5oWzRdLEEsQmgpO3RoaXMuaFs0XT1zdW0zMl8zJDEodGhpcy5oWzBdLEIsQ2gpO3RoaXMuaFswXT1UfTtSSVBFTUQxNjAucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCJsaXR0bGUiKTtlbHNlIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwibGl0dGxlIil9O2Z1bmN0aW9uIGYoaix4LHkseil7aWYoajw9MTUpcmV0dXJuIHheeV56O2Vsc2UgaWYoajw9MzEpcmV0dXJuIHgmeXx+eCZ6O2Vsc2UgaWYoajw9NDcpcmV0dXJuKHh8fnkpXno7ZWxzZSBpZihqPD02MylyZXR1cm4geCZ6fHkmfno7ZWxzZSByZXR1cm4geF4oeXx+eil9ZnVuY3Rpb24gSyhqKXtpZihqPD0xNSlyZXR1cm4gMDtlbHNlIGlmKGo8PTMxKXJldHVybiAxNTE4NTAwMjQ5O2Vsc2UgaWYoajw9NDcpcmV0dXJuIDE4NTk3NzUzOTM7ZWxzZSBpZihqPD02MylyZXR1cm4gMjQwMDk1OTcwODtlbHNlIHJldHVybiAyODQwODUzODM4fWZ1bmN0aW9uIEtoKGope2lmKGo8PTE1KXJldHVybiAxMzUyODI5OTI2O2Vsc2UgaWYoajw9MzEpcmV0dXJuIDE1NDg2MDM2ODQ7ZWxzZSBpZihqPD00NylyZXR1cm4gMTgzNjA3MjY5MTtlbHNlIGlmKGo8PTYzKXJldHVybiAyMDUzOTk0MjE3O2Vsc2UgcmV0dXJuIDB9dmFyIHI9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM107dmFyIHJoPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdO3ZhciBzPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XTt2YXIgc2g9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdO3ZhciByaXBlbWQ9e3JpcGVtZDE2MDpyaXBlbWQxNjB9OyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBIbWFjKGhhc2gsa2V5LGVuYyl7aWYoISh0aGlzIGluc3RhbmNlb2YgSG1hYykpcmV0dXJuIG5ldyBIbWFjKGhhc2gsa2V5LGVuYyk7dGhpcy5IYXNoPWhhc2g7dGhpcy5ibG9ja1NpemU9aGFzaC5ibG9ja1NpemUvODt0aGlzLm91dFNpemU9aGFzaC5vdXRTaXplLzg7dGhpcy5pbm5lcj1udWxsO3RoaXMub3V0ZXI9bnVsbDt0aGlzLl9pbml0KHV0aWxzLnRvQXJyYXkoa2V5LGVuYykpfXZhciBobWFjPUhtYWM7SG1hYy5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gaW5pdChrZXkpe2lmKGtleS5sZW5ndGg+dGhpcy5ibG9ja1NpemUpa2V5PShuZXcgdGhpcy5IYXNoKS51cGRhdGUoa2V5KS5kaWdlc3QoKTttaW5pbWFsaXN0aWNBc3NlcnQoa2V5Lmxlbmd0aDw9dGhpcy5ibG9ja1NpemUpO2Zvcih2YXIgaT1rZXkubGVuZ3RoO2k8dGhpcy5ibG9ja1NpemU7aSsrKWtleS5wdXNoKDApO2ZvcihpPTA7aTxrZXkubGVuZ3RoO2krKylrZXlbaV1ePTU0O3RoaXMuaW5uZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShrZXkpO2ZvcihpPTA7aTxrZXkubGVuZ3RoO2krKylrZXlbaV1ePTEwNjt0aGlzLm91dGVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoa2V5KX07SG1hYy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShtc2csZW5jKXt0aGlzLmlubmVyLnVwZGF0ZShtc2csZW5jKTtyZXR1cm4gdGhpc307SG1hYy5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlbmMpe3RoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpO3JldHVybiB0aGlzLm91dGVyLmRpZ2VzdChlbmMpfTt2YXIgaGFzaF8xPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXt2YXIgaGFzaD1leHBvcnRzO2hhc2gudXRpbHM9dXRpbHM7aGFzaC5jb21tb249Y29tbW9uO2hhc2guc2hhPXNoYTtoYXNoLnJpcGVtZD1yaXBlbWQ7aGFzaC5obWFjPWhtYWM7aGFzaC5zaGExPWhhc2guc2hhLnNoYTE7aGFzaC5zaGEyNTY9aGFzaC5zaGEuc2hhMjU2O2hhc2guc2hhMjI0PWhhc2guc2hhLnNoYTIyNDtoYXNoLnNoYTM4ND1oYXNoLnNoYS5zaGEzODQ7aGFzaC5zaGE1MTI9aGFzaC5zaGEuc2hhNTEyO2hhc2gucmlwZW1kMTYwPWhhc2gucmlwZW1kLnJpcGVtZDE2MH0pO3ZhciBjdXJ2ZXNfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBjdXJ2ZXM9ZXhwb3J0czt2YXIgYXNzZXJ0PXV0aWxzXzEkMS5hc3NlcnQ7ZnVuY3Rpb24gUHJlc2V0Q3VydmUob3B0aW9ucyl7aWYob3B0aW9ucy50eXBlPT09InNob3J0Iil0aGlzLmN1cnZlPW5ldyBjdXJ2ZV8xLnNob3J0KG9wdGlvbnMpO2Vsc2UgaWYob3B0aW9ucy50eXBlPT09ImVkd2FyZHMiKXRoaXMuY3VydmU9bmV3IGN1cnZlXzEuZWR3YXJkcyhvcHRpb25zKTtlbHNlIHRoaXMuY3VydmU9bmV3IGN1cnZlXzEubW9udChvcHRpb25zKTt0aGlzLmc9dGhpcy5jdXJ2ZS5nO3RoaXMubj10aGlzLmN1cnZlLm47dGhpcy5oYXNoPW9wdGlvbnMuaGFzaDthc3NlcnQodGhpcy5nLnZhbGlkYXRlKCksIkludmFsaWQgY3VydmUiKTthc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwiSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8iKX1jdXJ2ZXMuUHJlc2V0Q3VydmU9UHJlc2V0Q3VydmU7ZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSxvcHRpb25zKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLG5hbWUse2NvbmZpZ3VyYWJsZTp0cnVlLGVudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXt2YXIgY3VydmU9bmV3IFByZXNldEN1cnZlKG9wdGlvbnMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsbmFtZSx7Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTp0cnVlLHZhbHVlOmN1cnZlfSk7cmV0dXJuIGN1cnZlfX0pfWRlZmluZUN1cnZlKCJwMTkyIix7dHlwZToic2hvcnQiLHByaW1lOiJwMTkyIixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjY0MjEwNTE5IGU1OWM4MGU3IDBmYTdlOWFiIDcyMjQzMDQ5IGZlYjhkZWVjIGMxNDZiOWIxIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMSIsaGFzaDpoYXNoXzEuc2hhMjU2LGdSZWQ6ZmFsc2UsZzpbIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyIiwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTEiXX0pO2RlZmluZUN1cnZlKCJwMjI0Iix7dHlwZToic2hvcnQiLHByaW1lOiJwMjI0IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUiLGI6ImI0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0IixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCIsaGFzaDpoYXNoXzEuc2hhMjU2LGdSZWQ6ZmFsc2UsZzpbImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxIiwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQiXX0pO2RlZmluZUN1cnZlKCJwMjU2Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YiIsbjoiZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEiLGhhc2g6aGFzaF8xLnNoYTI1NixnUmVkOmZhbHNlLGc6WyI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NiIsIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1Il19KTtkZWZpbmVDdXJ2ZSgicDM4NCIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICIrImZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAiKyJmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYyIsYjoiYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgIisiNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWYiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICIrImY0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczIixoYXNoOmhhc2hfMS5zaGEzODQsZ1JlZDpmYWxzZSxnOlsiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggIisiNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjciLCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAiKyIwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZiJdfSk7ZGVmaW5lQ3VydmUoInA1MjEiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAiKyJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAiKyJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgIisiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgIisiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViICIrIjk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICIrIjNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwIixuOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAiKyJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAiKyJmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOSIsaGFzaDpoYXNoXzEuc2hhNTEyLGdSZWQ6ZmFsc2UsZzpbIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICIrIjA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3ICIrImEyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2IiwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgIisiNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgIisiM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAiXX0pO2RlZmluZUN1cnZlKCJjdXJ2ZTI1NTE5Iix7dHlwZToibW9udCIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiNzZkMDYiLGI6IjEiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6aGFzaF8xLnNoYTI1NixnUmVkOmZhbHNlLGc6WyI5Il19KTtkZWZpbmVDdXJ2ZSgiZWQyNTUxOSIse3R5cGU6ImVkd2FyZHMiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiLGE6Ii0xIixjOiIxIixkOiI1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOmhhc2hfMS5zaGEyNTYsZ1JlZDpmYWxzZSxnOlsiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYSIsIjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgiXX0pO3ZhciBwcmU7dHJ5e3ByZT1udWxsLmNyYXNoKCl9Y2F0Y2goZSl7cHJlPXVuZGVmaW5lZH1kZWZpbmVDdXJ2ZSgic2VjcDI1NmsxIix7dHlwZToic2hvcnQiLHByaW1lOiJrMjU2IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIsYToiMCIsYjoiNyIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEiLGg6IjEiLGhhc2g6aGFzaF8xLnNoYTI1NixiZXRhOiI3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlIixsYW1iZGE6IjUzNjNhZDRjYzA1YzMwZTBhNTI2MWMwMjg4MTI2NDVhMTIyZTIyZWEyMDgxNjY3OGRmMDI5NjdjMWIyM2JkNzIiLGJhc2lzOlt7YToiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUiLGI6Ii1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMyJ9LHthOiIxMTRjYTUwZjdhOGUyZjNmNjU3YzExMDhkOWQ0NGNmZDgiLGI6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1In1dLGdSZWQ6ZmFsc2UsZzpbIjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgiLCI0ODNhZGE3NzI2YTNjNDY1NWRhNGZiZmMwZTExMDhhOGZkMTdiNDQ4YTY4NTU0MTk5YzQ3ZDA4ZmZiMTBkNGI4IixwcmVdfSl9KTsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSG1hY0RSQkcob3B0aW9ucyl7aWYoISh0aGlzIGluc3RhbmNlb2YgSG1hY0RSQkcpKXJldHVybiBuZXcgSG1hY0RSQkcob3B0aW9ucyk7dGhpcy5oYXNoPW9wdGlvbnMuaGFzaDt0aGlzLnByZWRSZXNpc3Q9ISFvcHRpb25zLnByZWRSZXNpc3Q7dGhpcy5vdXRMZW49dGhpcy5oYXNoLm91dFNpemU7dGhpcy5taW5FbnRyb3B5PW9wdGlvbnMubWluRW50cm9weXx8dGhpcy5oYXNoLmhtYWNTdHJlbmd0aDt0aGlzLl9yZXNlZWQ9bnVsbDt0aGlzLnJlc2VlZEludGVydmFsPW51bGw7dGhpcy5LPW51bGw7dGhpcy5WPW51bGw7dmFyIGVudHJvcHk9dXRpbHNfMS50b0FycmF5KG9wdGlvbnMuZW50cm9weSxvcHRpb25zLmVudHJvcHlFbmN8fCJoZXgiKTt2YXIgbm9uY2U9dXRpbHNfMS50b0FycmF5KG9wdGlvbnMubm9uY2Usb3B0aW9ucy5ub25jZUVuY3x8ImhleCIpO3ZhciBwZXJzPXV0aWxzXzEudG9BcnJheShvcHRpb25zLnBlcnMsb3B0aW9ucy5wZXJzRW5jfHwiaGV4Iik7bWluaW1hbGlzdGljQXNzZXJ0KGVudHJvcHkubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMubWluRW50cm9weSsiIGJpdHMiKTt0aGlzLl9pbml0KGVudHJvcHksbm9uY2UscGVycyl9dmFyIGhtYWNEcmJnPUhtYWNEUkJHO0htYWNEUkJHLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbiBpbml0KGVudHJvcHksbm9uY2UscGVycyl7dmFyIHNlZWQ9ZW50cm9weS5jb25jYXQobm9uY2UpLmNvbmNhdChwZXJzKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpO3RoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBpPTA7aTx0aGlzLlYubGVuZ3RoO2krKyl7dGhpcy5LW2ldPTA7dGhpcy5WW2ldPTF9dGhpcy5fdXBkYXRlKHNlZWQpO3RoaXMuX3Jlc2VlZD0xO3RoaXMucmVzZWVkSW50ZXJ2YWw9MjgxNDc0OTc2NzEwNjU2fTtIbWFjRFJCRy5wcm90b3R5cGUuX2htYWM9ZnVuY3Rpb24gaG1hYygpe3JldHVybiBuZXcgaGFzaF8xLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9O0htYWNEUkJHLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShzZWVkKXt2YXIga21hYz10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFswXSk7aWYoc2VlZClrbWFjPWttYWMudXBkYXRlKHNlZWQpO3RoaXMuSz1rbWFjLmRpZ2VzdCgpO3RoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7aWYoIXNlZWQpcmV0dXJuO3RoaXMuSz10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFsxXSkudXBkYXRlKHNlZWQpLmRpZ2VzdCgpO3RoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCl9O0htYWNEUkJHLnByb3RvdHlwZS5yZXNlZWQ9ZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksZW50cm9weUVuYyxhZGQsYWRkRW5jKXtpZih0eXBlb2YgZW50cm9weUVuYyE9PSJzdHJpbmciKXthZGRFbmM9YWRkO2FkZD1lbnRyb3B5RW5jO2VudHJvcHlFbmM9bnVsbH1lbnRyb3B5PXV0aWxzXzEudG9BcnJheShlbnRyb3B5LGVudHJvcHlFbmMpO2FkZD11dGlsc18xLnRvQXJyYXkoYWRkLGFkZEVuYyk7bWluaW1hbGlzdGljQXNzZXJ0KGVudHJvcHkubGVuZ3RoPj10aGlzLm1pbkVudHJvcHkvOCwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAiK3RoaXMubWluRW50cm9weSsiIGJpdHMiKTt0aGlzLl91cGRhdGUoZW50cm9weS5jb25jYXQoYWRkfHxbXSkpO3RoaXMuX3Jlc2VlZD0xfTtIbWFjRFJCRy5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24gZ2VuZXJhdGUobGVuLGVuYyxhZGQsYWRkRW5jKXtpZih0aGlzLl9yZXNlZWQ+dGhpcy5yZXNlZWRJbnRlcnZhbCl0aHJvdyBuZXcgRXJyb3IoIlJlc2VlZCBpcyByZXF1aXJlZCIpO2lmKHR5cGVvZiBlbmMhPT0ic3RyaW5nIil7YWRkRW5jPWFkZDthZGQ9ZW5jO2VuYz1udWxsfWlmKGFkZCl7YWRkPXV0aWxzXzEudG9BcnJheShhZGQsYWRkRW5jfHwiaGV4Iik7dGhpcy5fdXBkYXRlKGFkZCl9dmFyIHRlbXA9W107d2hpbGUodGVtcC5sZW5ndGg8bGVuKXt0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO3RlbXA9dGVtcC5jb25jYXQodGhpcy5WKX12YXIgcmVzPXRlbXAuc2xpY2UoMCxsZW4pO3RoaXMuX3VwZGF0ZShhZGQpO3RoaXMuX3Jlc2VlZCsrO3JldHVybiB1dGlsc18xLmVuY29kZShyZXMsZW5jKX07InVzZSBzdHJpY3QiO3ZhciBhc3NlcnQkMz11dGlsc18xJDEuYXNzZXJ0O2Z1bmN0aW9uIEtleVBhaXIoZWMsb3B0aW9ucyl7dGhpcy5lYz1lYzt0aGlzLnByaXY9bnVsbDt0aGlzLnB1Yj1udWxsO2lmKG9wdGlvbnMucHJpdil0aGlzLl9pbXBvcnRQcml2YXRlKG9wdGlvbnMucHJpdixvcHRpb25zLnByaXZFbmMpO2lmKG9wdGlvbnMucHViKXRoaXMuX2ltcG9ydFB1YmxpYyhvcHRpb25zLnB1YixvcHRpb25zLnB1YkVuYyl9dmFyIGtleT1LZXlQYWlyO0tleVBhaXIuZnJvbVB1YmxpYz1mdW5jdGlvbiBmcm9tUHVibGljKGVjLHB1YixlbmMpe2lmKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpcmV0dXJuIHB1YjtyZXR1cm4gbmV3IEtleVBhaXIoZWMse3B1YjpwdWIscHViRW5jOmVuY30pfTtLZXlQYWlyLmZyb21Qcml2YXRlPWZ1bmN0aW9uIGZyb21Qcml2YXRlKGVjLHByaXYsZW5jKXtpZihwcml2IGluc3RhbmNlb2YgS2V5UGFpcilyZXR1cm4gcHJpdjtyZXR1cm4gbmV3IEtleVBhaXIoZWMse3ByaXY6cHJpdixwcml2RW5jOmVuY30pfTtLZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbiB2YWxpZGF0ZSgpe3ZhciBwdWI9dGhpcy5nZXRQdWJsaWMoKTtpZihwdWIuaXNJbmZpbml0eSgpKXJldHVybntyZXN1bHQ6ZmFsc2UscmVhc29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTtpZighcHViLnZhbGlkYXRlKCkpcmV0dXJue3Jlc3VsdDpmYWxzZSxyZWFzb246IlB1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQifTtpZighcHViLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKSlyZXR1cm57cmVzdWx0OmZhbHNlLHJlYXNvbjoiUHVibGljIGtleSAqIE4gIT0gTyJ9O3JldHVybntyZXN1bHQ6dHJ1ZSxyZWFzb246bnVsbH19O0tleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbiBnZXRQdWJsaWMoY29tcGFjdCxlbmMpe2lmKHR5cGVvZiBjb21wYWN0PT09InN0cmluZyIpe2VuYz1jb21wYWN0O2NvbXBhY3Q9bnVsbH1pZighdGhpcy5wdWIpdGhpcy5wdWI9dGhpcy5lYy5nLm11bCh0aGlzLnByaXYpO2lmKCFlbmMpcmV0dXJuIHRoaXMucHViO3JldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLGNvbXBhY3QpfTtLZXlQYWlyLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uIGdldFByaXZhdGUoZW5jKXtpZihlbmM9PT0iaGV4IilyZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpO2Vsc2UgcmV0dXJuIHRoaXMucHJpdn07S2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24gX2ltcG9ydFByaXZhdGUoa2V5LGVuYyl7dGhpcy5wcml2PW5ldyBibihrZXksZW5jfHwxNik7dGhpcy5wcml2PXRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubil9O0tleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQdWJsaWM9ZnVuY3Rpb24gX2ltcG9ydFB1YmxpYyhrZXksZW5jKXtpZihrZXkueHx8a2V5Lnkpe2lmKHRoaXMuZWMuY3VydmUudHlwZT09PSJtb250Iil7YXNzZXJ0JDMoa2V5LngsIk5lZWQgeCBjb29yZGluYXRlIil9ZWxzZSBpZih0aGlzLmVjLmN1cnZlLnR5cGU9PT0ic2hvcnQifHx0aGlzLmVjLmN1cnZlLnR5cGU9PT0iZWR3YXJkcyIpe2Fzc2VydCQzKGtleS54JiZrZXkueSwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRpbmF0ZSIpfXRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQoa2V5Lngsa2V5LnkpO3JldHVybn10aGlzLnB1Yj10aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KGtleSxlbmMpfTtLZXlQYWlyLnByb3RvdHlwZS5kZXJpdmU9ZnVuY3Rpb24gZGVyaXZlKHB1Yil7aWYoIXB1Yi52YWxpZGF0ZSgpKXthc3NlcnQkMyhwdWIudmFsaWRhdGUoKSwicHVibGljIHBvaW50IG5vdCB2YWxpZGF0ZWQiKX1yZXR1cm4gcHViLm11bCh0aGlzLnByaXYpLmdldFgoKX07S2V5UGFpci5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbiBzaWduKG1zZyxlbmMsb3B0aW9ucyl7cmV0dXJuIHRoaXMuZWMuc2lnbihtc2csdGhpcyxlbmMsb3B0aW9ucyl9O0tleVBhaXIucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbiB2ZXJpZnkobXNnLHNpZ25hdHVyZSl7cmV0dXJuIHRoaXMuZWMudmVyaWZ5KG1zZyxzaWduYXR1cmUsdGhpcyl9O0tleVBhaXIucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24gaW5zcGVjdCgpe3JldHVybiI8S2V5IHByaXY6ICIrKHRoaXMucHJpdiYmdGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpKSsiIHB1YjogIisodGhpcy5wdWImJnRoaXMucHViLmluc3BlY3QoKSkrIiA+In07InVzZSBzdHJpY3QiO3ZhciBhc3NlcnQkND11dGlsc18xJDEuYXNzZXJ0O2Z1bmN0aW9uIFNpZ25hdHVyZShvcHRpb25zLGVuYyl7aWYob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlyZXR1cm4gb3B0aW9ucztpZih0aGlzLl9pbXBvcnRERVIob3B0aW9ucyxlbmMpKXJldHVybjthc3NlcnQkNChvcHRpb25zLnImJm9wdGlvbnMucywiU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzIik7dGhpcy5yPW5ldyBibihvcHRpb25zLnIsMTYpO3RoaXMucz1uZXcgYm4ob3B0aW9ucy5zLDE2KTtpZihvcHRpb25zLnJlY292ZXJ5UGFyYW09PT11bmRlZmluZWQpdGhpcy5yZWNvdmVyeVBhcmFtPW51bGw7ZWxzZSB0aGlzLnJlY292ZXJ5UGFyYW09b3B0aW9ucy5yZWNvdmVyeVBhcmFtfXZhciBzaWduYXR1cmU9U2lnbmF0dXJlO2Z1bmN0aW9uIFBvc2l0aW9uKCl7dGhpcy5wbGFjZT0wfWZ1bmN0aW9uIGdldExlbmd0aChidWYscCl7dmFyIGluaXRpYWw9YnVmW3AucGxhY2UrK107aWYoIShpbml0aWFsJjEyOCkpe3JldHVybiBpbml0aWFsfXZhciBvY3RldExlbj1pbml0aWFsJjE1O2lmKG9jdGV0TGVuPT09MHx8b2N0ZXRMZW4+NCl7cmV0dXJuIGZhbHNlfXZhciB2YWw9MDtmb3IodmFyIGk9MCxvZmY9cC5wbGFjZTtpPG9jdGV0TGVuO2krKyxvZmYrKyl7dmFsPDw9ODt2YWx8PWJ1ZltvZmZdO3ZhbD4+Pj0wfWlmKHZhbDw9MTI3KXtyZXR1cm4gZmFsc2V9cC5wbGFjZT1vZmY7cmV0dXJuIHZhbH1mdW5jdGlvbiBybVBhZGRpbmcoYnVmKXt2YXIgaT0wO3ZhciBsZW49YnVmLmxlbmd0aC0xO3doaWxlKCFidWZbaV0mJiEoYnVmW2krMV0mMTI4KSYmaTxsZW4pe2krK31pZihpPT09MCl7cmV0dXJuIGJ1Zn1yZXR1cm4gYnVmLnNsaWNlKGkpfVNpZ25hdHVyZS5wcm90b3R5cGUuX2ltcG9ydERFUj1mdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsZW5jKXtkYXRhPXV0aWxzXzEkMS50b0FycmF5KGRhdGEsZW5jKTt2YXIgcD1uZXcgUG9zaXRpb247aWYoZGF0YVtwLnBsYWNlKytdIT09NDgpe3JldHVybiBmYWxzZX12YXIgbGVuPWdldExlbmd0aChkYXRhLHApO2lmKGxlbj09PWZhbHNlKXtyZXR1cm4gZmFsc2V9aWYobGVuK3AucGxhY2UhPT1kYXRhLmxlbmd0aCl7cmV0dXJuIGZhbHNlfWlmKGRhdGFbcC5wbGFjZSsrXSE9PTIpe3JldHVybiBmYWxzZX12YXIgcmxlbj1nZXRMZW5ndGgoZGF0YSxwKTtpZihybGVuPT09ZmFsc2Upe3JldHVybiBmYWxzZX12YXIgcj1kYXRhLnNsaWNlKHAucGxhY2UscmxlbitwLnBsYWNlKTtwLnBsYWNlKz1ybGVuO2lmKGRhdGFbcC5wbGFjZSsrXSE9PTIpe3JldHVybiBmYWxzZX12YXIgc2xlbj1nZXRMZW5ndGgoZGF0YSxwKTtpZihzbGVuPT09ZmFsc2Upe3JldHVybiBmYWxzZX1pZihkYXRhLmxlbmd0aCE9PXNsZW4rcC5wbGFjZSl7cmV0dXJuIGZhbHNlfXZhciBzPWRhdGEuc2xpY2UocC5wbGFjZSxzbGVuK3AucGxhY2UpO2lmKHJbMF09PT0wKXtpZihyWzFdJjEyOCl7cj1yLnNsaWNlKDEpfWVsc2V7cmV0dXJuIGZhbHNlfX1pZihzWzBdPT09MCl7aWYoc1sxXSYxMjgpe3M9cy5zbGljZSgxKX1lbHNle3JldHVybiBmYWxzZX19dGhpcy5yPW5ldyBibihyKTt0aGlzLnM9bmV3IGJuKHMpO3RoaXMucmVjb3ZlcnlQYXJhbT1udWxsO3JldHVybiB0cnVlfTtmdW5jdGlvbiBjb25zdHJ1Y3RMZW5ndGgoYXJyLGxlbil7aWYobGVuPDEyOCl7YXJyLnB1c2gobGVuKTtyZXR1cm59dmFyIG9jdGV0cz0xKyhNYXRoLmxvZyhsZW4pL01hdGguTE4yPj4+Myk7YXJyLnB1c2gob2N0ZXRzfDEyOCk7d2hpbGUoLS1vY3RldHMpe2Fyci5wdXNoKGxlbj4+PihvY3RldHM8PDMpJjI1NSl9YXJyLnB1c2gobGVuKX1TaWduYXR1cmUucHJvdG90eXBlLnRvREVSPWZ1bmN0aW9uIHRvREVSKGVuYyl7dmFyIHI9dGhpcy5yLnRvQXJyYXkoKTt2YXIgcz10aGlzLnMudG9BcnJheSgpO2lmKHJbMF0mMTI4KXI9WzBdLmNvbmNhdChyKTtpZihzWzBdJjEyOClzPVswXS5jb25jYXQocyk7cj1ybVBhZGRpbmcocik7cz1ybVBhZGRpbmcocyk7d2hpbGUoIXNbMF0mJiEoc1sxXSYxMjgpKXtzPXMuc2xpY2UoMSl9dmFyIGFycj1bMl07Y29uc3RydWN0TGVuZ3RoKGFycixyLmxlbmd0aCk7YXJyPWFyci5jb25jYXQocik7YXJyLnB1c2goMik7Y29uc3RydWN0TGVuZ3RoKGFycixzLmxlbmd0aCk7dmFyIGJhY2tIYWxmPWFyci5jb25jYXQocyk7dmFyIHJlcz1bNDhdO2NvbnN0cnVjdExlbmd0aChyZXMsYmFja0hhbGYubGVuZ3RoKTtyZXM9cmVzLmNvbmNhdChiYWNrSGFsZik7cmV0dXJuIHV0aWxzXzEkMS5lbmNvZGUocmVzLGVuYyl9OyJ1c2Ugc3RyaWN0Ijt2YXIgcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQiKX07dmFyIGFzc2VydCQ1PXV0aWxzXzEkMS5hc3NlcnQ7ZnVuY3Rpb24gRUMob3B0aW9ucyl7aWYoISh0aGlzIGluc3RhbmNlb2YgRUMpKXJldHVybiBuZXcgRUMob3B0aW9ucyk7aWYodHlwZW9mIG9wdGlvbnM9PT0ic3RyaW5nIil7YXNzZXJ0JDUoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnZlc18xLG9wdGlvbnMpLCJVbmtub3duIGN1cnZlICIrb3B0aW9ucyk7b3B0aW9ucz1jdXJ2ZXNfMVtvcHRpb25zXX1pZihvcHRpb25zIGluc3RhbmNlb2YgY3VydmVzXzEuUHJlc2V0Q3VydmUpb3B0aW9ucz17Y3VydmU6b3B0aW9uc307dGhpcy5jdXJ2ZT1vcHRpb25zLmN1cnZlLmN1cnZlO3RoaXMubj10aGlzLmN1cnZlLm47dGhpcy5uaD10aGlzLm4udXNocm4oMSk7dGhpcy5nPXRoaXMuY3VydmUuZzt0aGlzLmc9b3B0aW9ucy5jdXJ2ZS5nO3RoaXMuZy5wcmVjb21wdXRlKG9wdGlvbnMuY3VydmUubi5iaXRMZW5ndGgoKSsxKTt0aGlzLmhhc2g9b3B0aW9ucy5oYXNofHxvcHRpb25zLmN1cnZlLmhhc2h9dmFyIGVjPUVDO0VDLnByb3RvdHlwZS5rZXlQYWlyPWZ1bmN0aW9uIGtleVBhaXIob3B0aW9ucyl7cmV0dXJuIG5ldyBrZXkodGhpcyxvcHRpb25zKX07RUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlPWZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsZW5jKXtyZXR1cm4ga2V5LmZyb21Qcml2YXRlKHRoaXMscHJpdixlbmMpfTtFQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YixlbmMpe3JldHVybiBrZXkuZnJvbVB1YmxpYyh0aGlzLHB1YixlbmMpfTtFQy5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpe2lmKCFvcHRpb25zKW9wdGlvbnM9e307dmFyIGRyYmc9bmV3IGhtYWNEcmJnKHtoYXNoOnRoaXMuaGFzaCxwZXJzOm9wdGlvbnMucGVycyxwZXJzRW5jOm9wdGlvbnMucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6b3B0aW9ucy5lbnRyb3B5fHxyYW5kKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6b3B0aW9ucy5lbnRyb3B5JiZvcHRpb25zLmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0aGlzLm4udG9BcnJheSgpfSk7dmFyIGJ5dGVzPXRoaXMubi5ieXRlTGVuZ3RoKCk7dmFyIG5zMj10aGlzLm4uc3ViKG5ldyBibigyKSk7Zm9yKDs7KXt2YXIgcHJpdj1uZXcgYm4oZHJiZy5nZW5lcmF0ZShieXRlcykpO2lmKHByaXYuY21wKG5zMik+MCljb250aW51ZTtwcml2LmlhZGRuKDEpO3JldHVybiB0aGlzLmtleUZyb21Qcml2YXRlKHByaXYpfX07RUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbiBfdHJ1bmNhdGVUb04obXNnLHRydW5jT25seSl7dmFyIGRlbHRhPW1zZy5ieXRlTGVuZ3RoKCkqOC10aGlzLm4uYml0TGVuZ3RoKCk7aWYoZGVsdGE+MCltc2c9bXNnLnVzaHJuKGRlbHRhKTtpZighdHJ1bmNPbmx5JiZtc2cuY21wKHRoaXMubik+PTApcmV0dXJuIG1zZy5zdWIodGhpcy5uKTtlbHNlIHJldHVybiBtc2d9O0VDLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uIHNpZ24obXNnLGtleSxlbmMsb3B0aW9ucyl7aWYodHlwZW9mIGVuYz09PSJvYmplY3QiKXtvcHRpb25zPWVuYztlbmM9bnVsbH1pZighb3B0aW9ucylvcHRpb25zPXt9O2tleT10aGlzLmtleUZyb21Qcml2YXRlKGtleSxlbmMpO21zZz10aGlzLl90cnVuY2F0ZVRvTihuZXcgYm4obXNnLDE2KSk7dmFyIGJ5dGVzPXRoaXMubi5ieXRlTGVuZ3RoKCk7dmFyIGJrZXk9a2V5LmdldFByaXZhdGUoKS50b0FycmF5KCJiZSIsYnl0ZXMpO3ZhciBub25jZT1tc2cudG9BcnJheSgiYmUiLGJ5dGVzKTt2YXIgZHJiZz1uZXcgaG1hY0RyYmcoe2hhc2g6dGhpcy5oYXNoLGVudHJvcHk6YmtleSxub25jZTpub25jZSxwZXJzOm9wdGlvbnMucGVycyxwZXJzRW5jOm9wdGlvbnMucGVyc0VuY3x8InV0ZjgifSk7dmFyIG5zMT10aGlzLm4uc3ViKG5ldyBibigxKSk7Zm9yKHZhciBpdGVyPTA7O2l0ZXIrKyl7dmFyIGs9b3B0aW9ucy5rP29wdGlvbnMuayhpdGVyKTpuZXcgYm4oZHJiZy5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7az10aGlzLl90cnVuY2F0ZVRvTihrLHRydWUpO2lmKGsuY21wbigxKTw9MHx8ay5jbXAobnMxKT49MCljb250aW51ZTt2YXIga3A9dGhpcy5nLm11bChrKTtpZihrcC5pc0luZmluaXR5KCkpY29udGludWU7dmFyIGtwWD1rcC5nZXRYKCk7dmFyIHI9a3BYLnVtb2QodGhpcy5uKTtpZihyLmNtcG4oMCk9PT0wKWNvbnRpbnVlO3ZhciBzPWsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO3M9cy51bW9kKHRoaXMubik7aWYocy5jbXBuKDApPT09MCljb250aW51ZTt2YXIgcmVjb3ZlcnlQYXJhbT0oa3AuZ2V0WSgpLmlzT2RkKCk/MTowKXwoa3BYLmNtcChyKSE9PTA/MjowKTtpZihvcHRpb25zLmNhbm9uaWNhbCYmcy5jbXAodGhpcy5uaCk+MCl7cz10aGlzLm4uc3ViKHMpO3JlY292ZXJ5UGFyYW1ePTF9cmV0dXJuIG5ldyBzaWduYXR1cmUoe3I6cixzOnMscmVjb3ZlcnlQYXJhbTpyZWNvdmVyeVBhcmFtfSl9fTtFQy5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uIHZlcmlmeShtc2csc2lnbmF0dXJlJDEsa2V5LGVuYyl7bXNnPXRoaXMuX3RydW5jYXRlVG9OKG5ldyBibihtc2csMTYpKTtrZXk9dGhpcy5rZXlGcm9tUHVibGljKGtleSxlbmMpO3NpZ25hdHVyZSQxPW5ldyBzaWduYXR1cmUoc2lnbmF0dXJlJDEsImhleCIpO3ZhciByPXNpZ25hdHVyZSQxLnI7dmFyIHM9c2lnbmF0dXJlJDEucztpZihyLmNtcG4oMSk8MHx8ci5jbXAodGhpcy5uKT49MClyZXR1cm4gZmFsc2U7aWYocy5jbXBuKDEpPDB8fHMuY21wKHRoaXMubik+PTApcmV0dXJuIGZhbHNlO3ZhciBzaW52PXMuaW52bSh0aGlzLm4pO3ZhciB1MT1zaW52Lm11bChtc2cpLnVtb2QodGhpcy5uKTt2YXIgdTI9c2ludi5tdWwocikudW1vZCh0aGlzLm4pO3ZhciBwO2lmKCF0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2spe3A9dGhpcy5nLm11bEFkZCh1MSxrZXkuZ2V0UHVibGljKCksdTIpO2lmKHAuaXNJbmZpbml0eSgpKXJldHVybiBmYWxzZTtyZXR1cm4gcC5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChyKT09PTB9cD10aGlzLmcuam11bEFkZCh1MSxrZXkuZ2V0UHVibGljKCksdTIpO2lmKHAuaXNJbmZpbml0eSgpKXJldHVybiBmYWxzZTtyZXR1cm4gcC5lcVhUb1Aocil9O0VDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5PWZ1bmN0aW9uKG1zZyxzaWduYXR1cmUkMSxqLGVuYyl7YXNzZXJ0JDUoKDMmaik9PT1qLCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIik7c2lnbmF0dXJlJDE9bmV3IHNpZ25hdHVyZShzaWduYXR1cmUkMSxlbmMpO3ZhciBuPXRoaXMubjt2YXIgZT1uZXcgYm4obXNnKTt2YXIgcj1zaWduYXR1cmUkMS5yO3ZhciBzPXNpZ25hdHVyZSQxLnM7dmFyIGlzWU9kZD1qJjE7dmFyIGlzU2Vjb25kS2V5PWo+PjE7aWYoci5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJmlzU2Vjb25kS2V5KXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlIik7aWYoaXNTZWNvbmRLZXkpcj10aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSxpc1lPZGQpO2Vsc2Ugcj10aGlzLmN1cnZlLnBvaW50RnJvbVgocixpc1lPZGQpO3ZhciBySW52PXNpZ25hdHVyZSQxLnIuaW52bShuKTt2YXIgczE9bi5zdWIoZSkubXVsKHJJbnYpLnVtb2Qobik7dmFyIHMyPXMubXVsKHJJbnYpLnVtb2Qobik7cmV0dXJuIHRoaXMuZy5tdWxBZGQoczEscixzMil9O0VDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtPWZ1bmN0aW9uKGUsc2lnbmF0dXJlJDEsUSxlbmMpe3NpZ25hdHVyZSQxPW5ldyBzaWduYXR1cmUoc2lnbmF0dXJlJDEsZW5jKTtpZihzaWduYXR1cmUkMS5yZWNvdmVyeVBhcmFtIT09bnVsbClyZXR1cm4gc2lnbmF0dXJlJDEucmVjb3ZlcnlQYXJhbTtmb3IodmFyIGk9MDtpPDQ7aSsrKXt2YXIgUXByaW1lO3RyeXtRcHJpbWU9dGhpcy5yZWNvdmVyUHViS2V5KGUsc2lnbmF0dXJlJDEsaSl9Y2F0Y2goZSl7Y29udGludWV9aWYoUXByaW1lLmVxKFEpKXJldHVybiBpfXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yIil9O3ZhciBlbGxpcHRpY18xPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIGVsbGlwdGljPWV4cG9ydHM7ZWxsaXB0aWMudmVyc2lvbj17dmVyc2lvbjoiNi41LjQifS52ZXJzaW9uO2VsbGlwdGljLnV0aWxzPXV0aWxzXzEkMTtlbGxpcHRpYy5yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCIpfTtlbGxpcHRpYy5jdXJ2ZT1jdXJ2ZV8xO2VsbGlwdGljLmN1cnZlcz1jdXJ2ZXNfMTtlbGxpcHRpYy5lYz1lYztlbGxpcHRpYy5lZGRzYT1udWxsfSk7dmFyIGVsbGlwdGljPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9faW1wb3J0RGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihtb2Qpe3JldHVybiBtb2QmJm1vZC5fX2VzTW9kdWxlP21vZDp7ZGVmYXVsdDptb2R9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkVDPXZvaWQgMDt2YXIgZWxsaXB0aWNfMSQxPV9faW1wb3J0RGVmYXVsdChlbGxpcHRpY18xKTt2YXIgRUM9ZWxsaXB0aWNfMSQxLmRlZmF1bHQuZWM7ZXhwb3J0cy5FQz1FQ30pO3ZhciBlbGxpcHRpYyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGVsbGlwdGljKTt2YXIgX3ZlcnNpb24kbT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJzaWduaW5nLWtleS81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kbj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRtKTt2YXIgbGliJGQ9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmNvbXB1dGVQdWJsaWNLZXk9ZXhwb3J0cy5yZWNvdmVyUHVibGljS2V5PWV4cG9ydHMuU2lnbmluZ0tleT12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRtLnZlcnNpb24pO3ZhciBfY3VydmU9bnVsbDtmdW5jdGlvbiBnZXRDdXJ2ZSgpe2lmKCFfY3VydmUpe19jdXJ2ZT1uZXcgZWxsaXB0aWMuRUMoInNlY3AyNTZrMSIpfXJldHVybiBfY3VydmV9dmFyIFNpZ25pbmdLZXk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBTaWduaW5nS2V5KHByaXZhdGVLZXkpe2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsImN1cnZlIiwic2VjcDI1NmsxIik7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywicHJpdmF0ZUtleSIsbGliJDEuaGV4bGlmeShwcml2YXRlS2V5KSk7dmFyIGtleVBhaXI9Z2V0Q3VydmUoKS5rZXlGcm9tUHJpdmF0ZShsaWIkMS5hcnJheWlmeSh0aGlzLnByaXZhdGVLZXkpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwdWJsaWNLZXkiLCIweCIra2V5UGFpci5nZXRQdWJsaWMoZmFsc2UsImhleCIpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJjb21wcmVzc2VkUHVibGljS2V5IiwiMHgiK2tleVBhaXIuZ2V0UHVibGljKHRydWUsImhleCIpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJfaXNTaWduaW5nS2V5Iix0cnVlKX1TaWduaW5nS2V5LnByb3RvdHlwZS5fYWRkUG9pbnQ9ZnVuY3Rpb24ob3RoZXIpe3ZhciBwMD1nZXRDdXJ2ZSgpLmtleUZyb21QdWJsaWMobGliJDEuYXJyYXlpZnkodGhpcy5wdWJsaWNLZXkpKTt2YXIgcDE9Z2V0Q3VydmUoKS5rZXlGcm9tUHVibGljKGxpYiQxLmFycmF5aWZ5KG90aGVyKSk7cmV0dXJuIjB4IitwMC5wdWIuYWRkKHAxLnB1YikuZW5jb2RlQ29tcHJlc3NlZCgiaGV4Iil9O1NpZ25pbmdLZXkucHJvdG90eXBlLnNpZ25EaWdlc3Q9ZnVuY3Rpb24oZGlnZXN0KXt2YXIga2V5UGFpcj1nZXRDdXJ2ZSgpLmtleUZyb21Qcml2YXRlKGxpYiQxLmFycmF5aWZ5KHRoaXMucHJpdmF0ZUtleSkpO3ZhciBkaWdlc3RCeXRlcz1saWIkMS5hcnJheWlmeShkaWdlc3QpO2lmKGRpZ2VzdEJ5dGVzLmxlbmd0aCE9PTMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJiYWQgZGlnZXN0IGxlbmd0aCIsImRpZ2VzdCIsZGlnZXN0KX12YXIgc2lnbmF0dXJlPWtleVBhaXIuc2lnbihkaWdlc3RCeXRlcyx7Y2Fub25pY2FsOnRydWV9KTtyZXR1cm4gbGliJDEuc3BsaXRTaWduYXR1cmUoe3JlY292ZXJ5UGFyYW06c2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0scjpsaWIkMS5oZXhaZXJvUGFkKCIweCIrc2lnbmF0dXJlLnIudG9TdHJpbmcoMTYpLDMyKSxzOmxpYiQxLmhleFplcm9QYWQoIjB4IitzaWduYXR1cmUucy50b1N0cmluZygxNiksMzIpfSl9O1NpZ25pbmdLZXkucHJvdG90eXBlLmNvbXB1dGVTaGFyZWRTZWNyZXQ9ZnVuY3Rpb24ob3RoZXJLZXkpe3ZhciBrZXlQYWlyPWdldEN1cnZlKCkua2V5RnJvbVByaXZhdGUobGliJDEuYXJyYXlpZnkodGhpcy5wcml2YXRlS2V5KSk7dmFyIG90aGVyS2V5UGFpcj1nZXRDdXJ2ZSgpLmtleUZyb21QdWJsaWMobGliJDEuYXJyYXlpZnkoY29tcHV0ZVB1YmxpY0tleShvdGhlcktleSkpKTtyZXR1cm4gbGliJDEuaGV4WmVyb1BhZCgiMHgiK2tleVBhaXIuZGVyaXZlKG90aGVyS2V5UGFpci5nZXRQdWJsaWMoKSkudG9TdHJpbmcoMTYpLDMyKX07U2lnbmluZ0tleS5pc1NpZ25pbmdLZXk9ZnVuY3Rpb24odmFsdWUpe3JldHVybiEhKHZhbHVlJiZ2YWx1ZS5faXNTaWduaW5nS2V5KX07cmV0dXJuIFNpZ25pbmdLZXl9KCk7ZXhwb3J0cy5TaWduaW5nS2V5PVNpZ25pbmdLZXk7ZnVuY3Rpb24gcmVjb3ZlclB1YmxpY0tleShkaWdlc3Qsc2lnbmF0dXJlKXt2YXIgc2lnPWxpYiQxLnNwbGl0U2lnbmF0dXJlKHNpZ25hdHVyZSk7dmFyIHJzPXtyOmxpYiQxLmFycmF5aWZ5KHNpZy5yKSxzOmxpYiQxLmFycmF5aWZ5KHNpZy5zKX07cmV0dXJuIjB4IitnZXRDdXJ2ZSgpLnJlY292ZXJQdWJLZXkobGliJDEuYXJyYXlpZnkoZGlnZXN0KSxycyxzaWcucmVjb3ZlcnlQYXJhbSkuZW5jb2RlKCJoZXgiLGZhbHNlKX1leHBvcnRzLnJlY292ZXJQdWJsaWNLZXk9cmVjb3ZlclB1YmxpY0tleTtmdW5jdGlvbiBjb21wdXRlUHVibGljS2V5KGtleSxjb21wcmVzc2VkKXt2YXIgYnl0ZXM9bGliJDEuYXJyYXlpZnkoa2V5KTtpZihieXRlcy5sZW5ndGg9PT0zMil7dmFyIHNpZ25pbmdLZXk9bmV3IFNpZ25pbmdLZXkoYnl0ZXMpO2lmKGNvbXByZXNzZWQpe3JldHVybiIweCIrZ2V0Q3VydmUoKS5rZXlGcm9tUHJpdmF0ZShieXRlcykuZ2V0UHVibGljKHRydWUsImhleCIpfXJldHVybiBzaWduaW5nS2V5LnB1YmxpY0tleX1lbHNlIGlmKGJ5dGVzLmxlbmd0aD09PTMzKXtpZihjb21wcmVzc2VkKXtyZXR1cm4gbGliJDEuaGV4bGlmeShieXRlcyl9cmV0dXJuIjB4IitnZXRDdXJ2ZSgpLmtleUZyb21QdWJsaWMoYnl0ZXMpLmdldFB1YmxpYyhmYWxzZSwiaGV4Iil9ZWxzZSBpZihieXRlcy5sZW5ndGg9PT02NSl7aWYoIWNvbXByZXNzZWQpe3JldHVybiBsaWIkMS5oZXhsaWZ5KGJ5dGVzKX1yZXR1cm4iMHgiK2dldEN1cnZlKCkua2V5RnJvbVB1YmxpYyhieXRlcykuZ2V0UHVibGljKHRydWUsImhleCIpfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHB1YmxpYyBvciBwcml2YXRlIGtleSIsImtleSIsIltSRURBQ1RFRF0iKX1leHBvcnRzLmNvbXB1dGVQdWJsaWNLZXk9Y29tcHV0ZVB1YmxpY0tleX0pO3ZhciBpbmRleCRkPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRkKTt2YXIgX3ZlcnNpb24kbz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJ0cmFuc2FjdGlvbnMvNS4yLjAifSk7dmFyIF92ZXJzaW9uJHA9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kbyk7dmFyIGxpYiRlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fY3JlYXRlQmluZGluZz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihvLG0sayxrMil7aWYoazI9PT11bmRlZmluZWQpazI9aztPYmplY3QuZGVmaW5lUHJvcGVydHkobyxrMix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtW2tdfX0pfTpmdW5jdGlvbihvLG0sayxrMil7aWYoazI9PT11bmRlZmluZWQpazI9aztvW2syXT1tW2tdfSk7dmFyIF9fc2V0TW9kdWxlRGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihvLHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnZ9KX06ZnVuY3Rpb24obyx2KXtvWyJkZWZhdWx0Il09dn0pO3ZhciBfX2ltcG9ydFN0YXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24obW9kKXtpZihtb2QmJm1vZC5fX2VzTW9kdWxlKXJldHVybiBtb2Q7dmFyIHJlc3VsdD17fTtpZihtb2QhPW51bGwpZm9yKHZhciBrIGluIG1vZClpZihrIT09ImRlZmF1bHQiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLGspKV9fY3JlYXRlQmluZGluZyhyZXN1bHQsbW9kLGspO19fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsbW9kKTtyZXR1cm4gcmVzdWx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnBhcnNlPWV4cG9ydHMuc2VyaWFsaXplPWV4cG9ydHMuYWNjZXNzTGlzdGlmeT1leHBvcnRzLnJlY292ZXJBZGRyZXNzPWV4cG9ydHMuY29tcHV0ZUFkZHJlc3M9dm9pZCAwO3ZhciBSTFA9X19pbXBvcnRTdGFyKGxpYiQ1KTt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJG8udmVyc2lvbik7ZnVuY3Rpb24gaGFuZGxlQWRkcmVzcyh2YWx1ZSl7aWYodmFsdWU9PT0iMHgiKXtyZXR1cm4gbnVsbH1yZXR1cm4gbGliJDYuZ2V0QWRkcmVzcyh2YWx1ZSl9ZnVuY3Rpb24gaGFuZGxlTnVtYmVyKHZhbHVlKXtpZih2YWx1ZT09PSIweCIpe3JldHVybiBsaWIkNy5aZXJvfXJldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSl9dmFyIHRyYW5zYWN0aW9uRmllbGRzPVt7bmFtZToibm9uY2UiLG1heExlbmd0aDozMixudW1lcmljOnRydWV9LHtuYW1lOiJnYXNQcmljZSIsbWF4TGVuZ3RoOjMyLG51bWVyaWM6dHJ1ZX0se25hbWU6Imdhc0xpbWl0IixtYXhMZW5ndGg6MzIsbnVtZXJpYzp0cnVlfSx7bmFtZToidG8iLGxlbmd0aDoyMH0se25hbWU6InZhbHVlIixtYXhMZW5ndGg6MzIsbnVtZXJpYzp0cnVlfSx7bmFtZToiZGF0YSJ9XTt2YXIgYWxsb3dlZFRyYW5zYWN0aW9uS2V5cz17Y2hhaW5JZDp0cnVlLGRhdGE6dHJ1ZSxnYXNMaW1pdDp0cnVlLGdhc1ByaWNlOnRydWUsbm9uY2U6dHJ1ZSx0bzp0cnVlLHZhbHVlOnRydWV9O2Z1bmN0aW9uIGNvbXB1dGVBZGRyZXNzKGtleSl7dmFyIHB1YmxpY0tleT1saWIkZC5jb21wdXRlUHVibGljS2V5KGtleSk7cmV0dXJuIGxpYiQ2LmdldEFkZHJlc3MobGliJDEuaGV4RGF0YVNsaWNlKGxpYiQ0LmtlY2NhazI1NihsaWIkMS5oZXhEYXRhU2xpY2UocHVibGljS2V5LDEpKSwxMikpfWV4cG9ydHMuY29tcHV0ZUFkZHJlc3M9Y29tcHV0ZUFkZHJlc3M7ZnVuY3Rpb24gcmVjb3ZlckFkZHJlc3MoZGlnZXN0LHNpZ25hdHVyZSl7cmV0dXJuIGNvbXB1dGVBZGRyZXNzKGxpYiRkLnJlY292ZXJQdWJsaWNLZXkobGliJDEuYXJyYXlpZnkoZGlnZXN0KSxzaWduYXR1cmUpKX1leHBvcnRzLnJlY292ZXJBZGRyZXNzPXJlY292ZXJBZGRyZXNzO2Z1bmN0aW9uIGZvcm1hdE51bWJlcih2YWx1ZSxuYW1lKXt2YXIgcmVzdWx0PWxpYiQxLnN0cmlwWmVyb3MobGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUpLnRvSGV4U3RyaW5nKCkpO2lmKHJlc3VsdC5sZW5ndGg+MzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbGVuZ3RoIGZvciAiK25hbWUsInRyYW5zYWN0aW9uOiIrbmFtZSx2YWx1ZSl9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBhY2Nlc3NTZXRpZnkoYWRkcixzdG9yYWdlS2V5cyl7cmV0dXJue2FkZHJlc3M6bGliJDYuZ2V0QWRkcmVzcyhhZGRyKSxzdG9yYWdlS2V5czooc3RvcmFnZUtleXN8fFtdKS5tYXAoZnVuY3Rpb24oc3RvcmFnZUtleSxpbmRleCl7aWYobGliJDEuaGV4RGF0YUxlbmd0aChzdG9yYWdlS2V5KSE9PTMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFjY2VzcyBsaXN0IHN0b3JhZ2VLZXkiLCJhY2Nlc3NMaXN0WyIrYWRkcisiOiIraW5kZXgrIl0iLHN0b3JhZ2VLZXkpfXJldHVybiBzdG9yYWdlS2V5LnRvTG93ZXJDYXNlKCl9KX19ZnVuY3Rpb24gYWNjZXNzTGlzdGlmeSh2YWx1ZSl7aWYoQXJyYXkuaXNBcnJheSh2YWx1ZSkpe3JldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24oc2V0LGluZGV4KXtpZihBcnJheS5pc0FycmF5KHNldCkpe2lmKHNldC5sZW5ndGg+Mil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYWNjZXNzIGxpc3QgZXhwZWN0ZWQgdG8gYmUgWyBhZGRyZXNzLCBzdG9yYWdlS2V5c1tdIF0iLCJ2YWx1ZVsiK2luZGV4KyJdIixzZXQpfXJldHVybiBhY2Nlc3NTZXRpZnkoc2V0WzBdLHNldFsxXSl9cmV0dXJuIGFjY2Vzc1NldGlmeShzZXQuYWRkcmVzcyxzZXQuc3RvcmFnZUtleXMpfSl9dmFyIHJlc3VsdD1PYmplY3Qua2V5cyh2YWx1ZSkubWFwKGZ1bmN0aW9uKGFkZHIpe3ZhciBzdG9yYWdlS2V5cz12YWx1ZVthZGRyXS5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sc3RvcmFnZUtleSl7YWNjdW1bc3RvcmFnZUtleV09dHJ1ZTtyZXR1cm4gYWNjdW19LHt9KTtyZXR1cm4gYWNjZXNzU2V0aWZ5KGFkZHIsT2JqZWN0LmtleXMoc3RvcmFnZUtleXMpLnNvcnQoKSl9KTtyZXN1bHQuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLmFkZHJlc3MubG9jYWxlQ29tcGFyZShiLmFkZHJlc3MpfSk7cmV0dXJuIHJlc3VsdH1leHBvcnRzLmFjY2Vzc0xpc3RpZnk9YWNjZXNzTGlzdGlmeTtmdW5jdGlvbiBmb3JtYXRBY2Nlc3NMaXN0KHZhbHVlKXtyZXR1cm4gYWNjZXNzTGlzdGlmeSh2YWx1ZSkubWFwKGZ1bmN0aW9uKHNldCl7cmV0dXJuW3NldC5hZGRyZXNzLHNldC5zdG9yYWdlS2V5c119KX1mdW5jdGlvbiBfc2VyaWFsaXplRWlwMjkzMCh0cmFuc2FjdGlvbixzaWduYXR1cmUpe3ZhciBmaWVsZHM9W2Zvcm1hdE51bWJlcih0cmFuc2FjdGlvbi5jaGFpbklkfHwwLCJjaGFpbklkIiksZm9ybWF0TnVtYmVyKHRyYW5zYWN0aW9uLm5vbmNlfHwwLCJub25jZSIpLGZvcm1hdE51bWJlcih0cmFuc2FjdGlvbi5nYXNQcmljZXx8MCwiZ2FzUHJpY2UiKSxmb3JtYXROdW1iZXIodHJhbnNhY3Rpb24uZ2FzTGltaXR8fDAsImdhc0xpbWl0IiksdHJhbnNhY3Rpb24udG8hPW51bGw/bGliJDYuZ2V0QWRkcmVzcyh0cmFuc2FjdGlvbi50byk6IjB4Iixmb3JtYXROdW1iZXIodHJhbnNhY3Rpb24udmFsdWV8fDAsInZhbHVlIiksdHJhbnNhY3Rpb24uZGF0YXx8IjB4Iixmb3JtYXRBY2Nlc3NMaXN0KHRyYW5zYWN0aW9uLmFjY2Vzc0xpc3R8fFtdKV07aWYoc2lnbmF0dXJlKXt2YXIgc2lnPWxpYiQxLnNwbGl0U2lnbmF0dXJlKHNpZ25hdHVyZSk7ZmllbGRzLnB1c2goZm9ybWF0TnVtYmVyKHNpZy5yZWNvdmVyeVBhcmFtLCJyZWNvdmVyeVBhcmFtIikpO2ZpZWxkcy5wdXNoKGxpYiQxLnN0cmlwWmVyb3Moc2lnLnIpKTtmaWVsZHMucHVzaChsaWIkMS5zdHJpcFplcm9zKHNpZy5zKSl9cmV0dXJuIGxpYiQxLmhleENvbmNhdChbIjB4MDEiLFJMUC5lbmNvZGUoZmllbGRzKV0pfWZ1bmN0aW9uIF9zZXJpYWxpemUodHJhbnNhY3Rpb24sc2lnbmF0dXJlKXtsaWIkMy5jaGVja1Byb3BlcnRpZXModHJhbnNhY3Rpb24sYWxsb3dlZFRyYW5zYWN0aW9uS2V5cyk7dmFyIHJhdz1bXTt0cmFuc2FjdGlvbkZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkSW5mbyl7dmFyIHZhbHVlPXRyYW5zYWN0aW9uW2ZpZWxkSW5mby5uYW1lXXx8W107dmFyIG9wdGlvbnM9e307aWYoZmllbGRJbmZvLm51bWVyaWMpe29wdGlvbnMuaGV4UGFkPSJsZWZ0In12YWx1ZT1saWIkMS5hcnJheWlmeShsaWIkMS5oZXhsaWZ5KHZhbHVlLG9wdGlvbnMpKTtpZihmaWVsZEluZm8ubGVuZ3RoJiZ2YWx1ZS5sZW5ndGghPT1maWVsZEluZm8ubGVuZ3RoJiZ2YWx1ZS5sZW5ndGg+MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBsZW5ndGggZm9yICIrZmllbGRJbmZvLm5hbWUsInRyYW5zYWN0aW9uOiIrZmllbGRJbmZvLm5hbWUsdmFsdWUpfWlmKGZpZWxkSW5mby5tYXhMZW5ndGgpe3ZhbHVlPWxpYiQxLnN0cmlwWmVyb3ModmFsdWUpO2lmKHZhbHVlLmxlbmd0aD5maWVsZEluZm8ubWF4TGVuZ3RoKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGxlbmd0aCBmb3IgIitmaWVsZEluZm8ubmFtZSwidHJhbnNhY3Rpb246IitmaWVsZEluZm8ubmFtZSx2YWx1ZSl9fXJhdy5wdXNoKGxpYiQxLmhleGxpZnkodmFsdWUpKX0pO3ZhciBjaGFpbklkPTA7aWYodHJhbnNhY3Rpb24uY2hhaW5JZCE9bnVsbCl7Y2hhaW5JZD10cmFuc2FjdGlvbi5jaGFpbklkO2lmKHR5cGVvZiBjaGFpbklkIT09Im51bWJlciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHJhbnNhY3Rpb24uY2hhaW5JZCIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9fWVsc2UgaWYoc2lnbmF0dXJlJiYhbGliJDEuaXNCeXRlc0xpa2Uoc2lnbmF0dXJlKSYmc2lnbmF0dXJlLnY+Mjgpe2NoYWluSWQ9TWF0aC5mbG9vcigoc2lnbmF0dXJlLnYtMzUpLzIpfWlmKGNoYWluSWQhPT0wKXtyYXcucHVzaChsaWIkMS5oZXhsaWZ5KGNoYWluSWQpKTtyYXcucHVzaCgiMHgiKTtyYXcucHVzaCgiMHgiKX1pZighc2lnbmF0dXJlKXtyZXR1cm4gUkxQLmVuY29kZShyYXcpfXZhciBzaWc9bGliJDEuc3BsaXRTaWduYXR1cmUoc2lnbmF0dXJlKTt2YXIgdj0yNytzaWcucmVjb3ZlcnlQYXJhbTtpZihjaGFpbklkIT09MCl7cmF3LnBvcCgpO3Jhdy5wb3AoKTtyYXcucG9wKCk7dis9Y2hhaW5JZCoyKzg7aWYoc2lnLnY+MjgmJnNpZy52IT09dil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidHJhbnNhY3Rpb24uY2hhaW5JZC9zaWduYXR1cmUudiBtaXNtYXRjaCIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX19ZWxzZSBpZihzaWcudiE9PXYpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInRyYW5zYWN0aW9uLmNoYWluSWQvc2lnbmF0dXJlLnYgbWlzbWF0Y2giLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9cmF3LnB1c2gobGliJDEuaGV4bGlmeSh2KSk7cmF3LnB1c2gobGliJDEuc3RyaXBaZXJvcyhsaWIkMS5hcnJheWlmeShzaWcucikpKTtyYXcucHVzaChsaWIkMS5zdHJpcFplcm9zKGxpYiQxLmFycmF5aWZ5KHNpZy5zKSkpO3JldHVybiBSTFAuZW5jb2RlKHJhdyl9ZnVuY3Rpb24gc2VyaWFsaXplKHRyYW5zYWN0aW9uLHNpZ25hdHVyZSl7aWYodHJhbnNhY3Rpb24udHlwZT09bnVsbCl7aWYodHJhbnNhY3Rpb24uYWNjZXNzTGlzdCE9bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW50eXBlZCB0cmFuc2FjdGlvbnMgZG8gbm90IHN1cHBvcnQgYWNjZXNzTGlzdDsgaW5jbHVkZSB0eXBlOiAxIiwidHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uKX1yZXR1cm4gX3NlcmlhbGl6ZSh0cmFuc2FjdGlvbixzaWduYXR1cmUpfXN3aXRjaCh0cmFuc2FjdGlvbi50eXBlKXtjYXNlIDE6cmV0dXJuIF9zZXJpYWxpemVFaXAyOTMwKHRyYW5zYWN0aW9uLHNpZ25hdHVyZSk7ZGVmYXVsdDpicmVha31yZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGU6ICIrdHJhbnNhY3Rpb24udHlwZSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2VyaWFsaXplVHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uVHlwZTp0cmFuc2FjdGlvbi50eXBlfSl9ZXhwb3J0cy5zZXJpYWxpemU9c2VyaWFsaXplO2Z1bmN0aW9uIF9wYXJzZUVpcDI5MzAocGF5bG9hZCl7dmFyIHRyYW5zYWN0aW9uPVJMUC5kZWNvZGUocGF5bG9hZC5zbGljZSgxKSk7aWYodHJhbnNhY3Rpb24ubGVuZ3RoIT09OCYmdHJhbnNhY3Rpb24ubGVuZ3RoIT09MTEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgY29tcG9uZW50IGNvdW50IGZvciB0cmFuc2FjdGlvbiB0eXBlOiAxIiwicGF5bG9hZCIsbGliJDEuaGV4bGlmeShwYXlsb2FkKSl9dmFyIHR4PXt0eXBlOjEsY2hhaW5JZDpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMF0pLnRvTnVtYmVyKCksbm9uY2U6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzFdKS50b051bWJlcigpLGdhc1ByaWNlOmhhbmRsZU51bWJlcih0cmFuc2FjdGlvblsyXSksZ2FzTGltaXQ6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzNdKSx0bzpoYW5kbGVBZGRyZXNzKHRyYW5zYWN0aW9uWzRdKSx2YWx1ZTpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bNV0pLGRhdGE6dHJhbnNhY3Rpb25bNl0sYWNjZXNzTGlzdDphY2Nlc3NMaXN0aWZ5KHRyYW5zYWN0aW9uWzddKX07aWYodHJhbnNhY3Rpb24ubGVuZ3RoPT09OCl7cmV0dXJuIHR4fXRyeXt2YXIgcmVjaWQ9aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzhdKS50b051bWJlcigpO2lmKHJlY2lkIT09MCYmcmVjaWQhPT0xKXt0aHJvdyBuZXcgRXJyb3IoImJhZCByZWNpZCIpfXR4LnY9cmVjaWR9Y2F0Y2goZXJyb3Ipe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdiBmb3IgdHJhbnNhY3Rpb24gdHlwZTogMSIsInYiLHRyYW5zYWN0aW9uWzhdKX10eC5yPWxpYiQxLmhleFplcm9QYWQodHJhbnNhY3Rpb25bOV0sMzIpO3R4LnM9bGliJDEuaGV4WmVyb1BhZCh0cmFuc2FjdGlvblsxMF0sMzIpO3RyeXt2YXIgZGlnZXN0PWxpYiQ0LmtlY2NhazI1Nihfc2VyaWFsaXplRWlwMjkzMCh0eCkpO3R4LmZyb209cmVjb3ZlckFkZHJlc3MoZGlnZXN0LHtyOnR4LnIsczp0eC5zLHJlY292ZXJ5UGFyYW06dHgudn0pfWNhdGNoKGVycm9yKXtjb25zb2xlLmxvZyhlcnJvcil9dHguaGFzaD1saWIkNC5rZWNjYWsyNTYocGF5bG9hZCk7cmV0dXJuIHR4fWZ1bmN0aW9uIF9wYXJzZShyYXdUcmFuc2FjdGlvbil7dmFyIHRyYW5zYWN0aW9uPVJMUC5kZWNvZGUocmF3VHJhbnNhY3Rpb24pO2lmKHRyYW5zYWN0aW9uLmxlbmd0aCE9PTkmJnRyYW5zYWN0aW9uLmxlbmd0aCE9PTYpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgcmF3IHRyYW5zYWN0aW9uIiwicmF3VHJhbnNhY3Rpb24iLHJhd1RyYW5zYWN0aW9uKX12YXIgdHg9e25vbmNlOmhhbmRsZU51bWJlcih0cmFuc2FjdGlvblswXSkudG9OdW1iZXIoKSxnYXNQcmljZTpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMV0pLGdhc0xpbWl0OmhhbmRsZU51bWJlcih0cmFuc2FjdGlvblsyXSksdG86aGFuZGxlQWRkcmVzcyh0cmFuc2FjdGlvblszXSksdmFsdWU6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzRdKSxkYXRhOnRyYW5zYWN0aW9uWzVdLGNoYWluSWQ6MH07aWYodHJhbnNhY3Rpb24ubGVuZ3RoPT09Nil7cmV0dXJuIHR4fXRyeXt0eC52PWxpYiQyLkJpZ051bWJlci5mcm9tKHRyYW5zYWN0aW9uWzZdKS50b051bWJlcigpfWNhdGNoKGVycm9yKXtjb25zb2xlLmxvZyhlcnJvcik7cmV0dXJuIHR4fXR4LnI9bGliJDEuaGV4WmVyb1BhZCh0cmFuc2FjdGlvbls3XSwzMik7dHgucz1saWIkMS5oZXhaZXJvUGFkKHRyYW5zYWN0aW9uWzhdLDMyKTtpZihsaWIkMi5CaWdOdW1iZXIuZnJvbSh0eC5yKS5pc1plcm8oKSYmbGliJDIuQmlnTnVtYmVyLmZyb20odHgucykuaXNaZXJvKCkpe3R4LmNoYWluSWQ9dHgudjt0eC52PTB9ZWxzZXt0eC5jaGFpbklkPU1hdGguZmxvb3IoKHR4LnYtMzUpLzIpO2lmKHR4LmNoYWluSWQ8MCl7dHguY2hhaW5JZD0wfXZhciByZWNvdmVyeVBhcmFtPXR4LnYtMjc7dmFyIHJhdz10cmFuc2FjdGlvbi5zbGljZSgwLDYpO2lmKHR4LmNoYWluSWQhPT0wKXtyYXcucHVzaChsaWIkMS5oZXhsaWZ5KHR4LmNoYWluSWQpKTtyYXcucHVzaCgiMHgiKTtyYXcucHVzaCgiMHgiKTtyZWNvdmVyeVBhcmFtLT10eC5jaGFpbklkKjIrOH12YXIgZGlnZXN0PWxpYiQ0LmtlY2NhazI1NihSTFAuZW5jb2RlKHJhdykpO3RyeXt0eC5mcm9tPXJlY292ZXJBZGRyZXNzKGRpZ2VzdCx7cjpsaWIkMS5oZXhsaWZ5KHR4LnIpLHM6bGliJDEuaGV4bGlmeSh0eC5zKSxyZWNvdmVyeVBhcmFtOnJlY292ZXJ5UGFyYW19KX1jYXRjaChlcnJvcil7Y29uc29sZS5sb2coZXJyb3IpfXR4Lmhhc2g9bGliJDQua2VjY2FrMjU2KHJhd1RyYW5zYWN0aW9uKX10eC50eXBlPW51bGw7cmV0dXJuIHR4fWZ1bmN0aW9uIHBhcnNlKHJhd1RyYW5zYWN0aW9uKXt2YXIgcGF5bG9hZD1saWIkMS5hcnJheWlmeShyYXdUcmFuc2FjdGlvbik7aWYocGF5bG9hZFswXT4xMjcpe3JldHVybiBfcGFyc2UocGF5bG9hZCl9c3dpdGNoKHBheWxvYWRbMF0pe2Nhc2UgMTpyZXR1cm4gX3BhcnNlRWlwMjkzMChwYXlsb2FkKTtkZWZhdWx0OmJyZWFrfXJldHVybiBsb2dnZXIudGhyb3dFcnJvcigidW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZTogIitwYXlsb2FkWzBdLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJwYXJzZVRyYW5zYWN0aW9uIix0cmFuc2FjdGlvblR5cGU6cGF5bG9hZFswXX0pfWV4cG9ydHMucGFyc2U9cGFyc2V9KTt2YXIgaW5kZXgkZT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkZSk7dmFyIF92ZXJzaW9uJHE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0iY29udHJhY3RzLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiRyPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJHEpO3ZhciBsaWIkZj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O3ZhciBfX3NwcmVhZEFycmF5PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbih0byxmcm9tKXtmb3IodmFyIGk9MCxpbD1mcm9tLmxlbmd0aCxqPXRvLmxlbmd0aDtpPGlsO2krKyxqKyspdG9bal09ZnJvbVtpXTtyZXR1cm4gdG99O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQ29udHJhY3RGYWN0b3J5PWV4cG9ydHMuQ29udHJhY3Q9ZXhwb3J0cy5CYXNlQ29udHJhY3Q9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kcS52ZXJzaW9uKTt2YXIgYWxsb3dlZFRyYW5zYWN0aW9uS2V5cz17Y2hhaW5JZDp0cnVlLGRhdGE6dHJ1ZSxmcm9tOnRydWUsZ2FzTGltaXQ6dHJ1ZSxnYXNQcmljZTp0cnVlLG5vbmNlOnRydWUsdG86dHJ1ZSx2YWx1ZTp0cnVlLHR5cGU6dHJ1ZSxhY2Nlc3NMaXN0OnRydWV9O2Z1bmN0aW9uIHJlc29sdmVOYW1lKHJlc29sdmVyLG5hbWVPclByb21pc2Upe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5hbWUsYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsbmFtZU9yUHJvbWlzZV07Y2FzZSAxOm5hbWU9X2Euc2VudCgpO3RyeXtyZXR1cm5bMixsaWIkNi5nZXRBZGRyZXNzKG5hbWUpXX1jYXRjaChlcnJvcil7fWlmKCFyZXNvbHZlcil7bG9nZ2VyLnRocm93RXJyb3IoImEgcHJvdmlkZXIgb3Igc2lnbmVyIGlzIG5lZWRlZCB0byByZXNvbHZlIEVOUyBuYW1lcyIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InJlc29sdmVOYW1lIn0pfXJldHVybls0LHJlc29sdmVyLnJlc29sdmVOYW1lKG5hbWUpXTtjYXNlIDI6YWRkcmVzcz1fYS5zZW50KCk7aWYoYWRkcmVzcz09bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigicmVzb2x2ZXIgb3IgYWRkciBpcyBub3QgY29uZmlndXJlZCBmb3IgRU5TIG5hbWUiLCJuYW1lIixuYW1lKX1yZXR1cm5bMixhZGRyZXNzXX19KX0pfWZ1bmN0aW9uIHJlc29sdmVBZGRyZXNzZXMocmVzb2x2ZXIsdmFsdWUscGFyYW1UeXBlKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZighQXJyYXkuaXNBcnJheShwYXJhbVR5cGUpKXJldHVyblszLDJdO3JldHVybls0LFByb21pc2UuYWxsKHBhcmFtVHlwZS5tYXAoZnVuY3Rpb24ocGFyYW1UeXBlLGluZGV4KXtyZXR1cm4gcmVzb2x2ZUFkZHJlc3NlcyhyZXNvbHZlcixBcnJheS5pc0FycmF5KHZhbHVlKT92YWx1ZVtpbmRleF06dmFsdWVbcGFyYW1UeXBlLm5hbWVdLHBhcmFtVHlwZSl9KSldO2Nhc2UgMTpyZXR1cm5bMixfYS5zZW50KCldO2Nhc2UgMjppZighKHBhcmFtVHlwZS50eXBlPT09ImFkZHJlc3MiKSlyZXR1cm5bMyw0XTtyZXR1cm5bNCxyZXNvbHZlTmFtZShyZXNvbHZlcix2YWx1ZSldO2Nhc2UgMzpyZXR1cm5bMixfYS5zZW50KCldO2Nhc2UgNDppZighKHBhcmFtVHlwZS50eXBlPT09InR1cGxlIikpcmV0dXJuWzMsNl07cmV0dXJuWzQscmVzb2x2ZUFkZHJlc3NlcyhyZXNvbHZlcix2YWx1ZSxwYXJhbVR5cGUuY29tcG9uZW50cyldO2Nhc2UgNTpyZXR1cm5bMixfYS5zZW50KCldO2Nhc2UgNjppZighKHBhcmFtVHlwZS5iYXNlVHlwZT09PSJhcnJheSIpKXJldHVyblszLDhdO2lmKCFBcnJheS5pc0FycmF5KHZhbHVlKSl7cmV0dXJuWzIsUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJpbnZhbGlkIHZhbHVlIGZvciBhcnJheSIpKV19cmV0dXJuWzQsUHJvbWlzZS5hbGwodmFsdWUubWFwKGZ1bmN0aW9uKHYpe3JldHVybiByZXNvbHZlQWRkcmVzc2VzKHJlc29sdmVyLHYscGFyYW1UeXBlLmFycmF5Q2hpbGRyZW4pfSkpXTtjYXNlIDc6cmV0dXJuWzIsX2Euc2VudCgpXTtjYXNlIDg6cmV0dXJuWzIsdmFsdWVdfX0pfSl9ZnVuY3Rpb24gcG9wdWxhdGVUcmFuc2FjdGlvbihjb250cmFjdCxmcmFnbWVudCxhcmdzKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBvdmVycmlkZXMscmVzb2x2ZWQsZGF0YSx0eCxybyxpbnRyaW5zaWMsYnl0ZXMsaSxyb1ZhbHVlLGxlZnRvdmVyczt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6b3ZlcnJpZGVzPXt9O2lmKGFyZ3MubGVuZ3RoPT09ZnJhZ21lbnQuaW5wdXRzLmxlbmd0aCsxJiZ0eXBlb2YgYXJnc1thcmdzLmxlbmd0aC0xXT09PSJvYmplY3QiKXtvdmVycmlkZXM9bGliJDMuc2hhbGxvd0NvcHkoYXJncy5wb3AoKSl9bG9nZ2VyLmNoZWNrQXJndW1lbnRDb3VudChhcmdzLmxlbmd0aCxmcmFnbWVudC5pbnB1dHMubGVuZ3RoLCJwYXNzZWQgdG8gY29udHJhY3QiKTtpZihjb250cmFjdC5zaWduZXIpe2lmKG92ZXJyaWRlcy5mcm9tKXtvdmVycmlkZXMuZnJvbT1saWIkMy5yZXNvbHZlUHJvcGVydGllcyh7b3ZlcnJpZGU6cmVzb2x2ZU5hbWUoY29udHJhY3Quc2lnbmVyLG92ZXJyaWRlcy5mcm9tKSxzaWduZXI6Y29udHJhY3Quc2lnbmVyLmdldEFkZHJlc3MoKX0pLnRoZW4oZnVuY3Rpb24oY2hlY2spe3JldHVybiBfX2F3YWl0ZXIoX3RoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtpZihsaWIkNi5nZXRBZGRyZXNzKGNoZWNrLnNpZ25lcikhPT1jaGVjay5vdmVycmlkZSl7bG9nZ2VyLnRocm93RXJyb3IoIkNvbnRyYWN0IHdpdGggYSBTaWduZXIgY2Fubm90IG92ZXJyaWRlIGZyb20iLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJvdmVycmlkZXMuZnJvbSJ9KX1yZXR1cm5bMixjaGVjay5vdmVycmlkZV19KX0pfSl9ZWxzZXtvdmVycmlkZXMuZnJvbT1jb250cmFjdC5zaWduZXIuZ2V0QWRkcmVzcygpfX1lbHNlIGlmKG92ZXJyaWRlcy5mcm9tKXtvdmVycmlkZXMuZnJvbT1yZXNvbHZlTmFtZShjb250cmFjdC5wcm92aWRlcixvdmVycmlkZXMuZnJvbSl9cmV0dXJuWzQsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMoe2FyZ3M6cmVzb2x2ZUFkZHJlc3Nlcyhjb250cmFjdC5zaWduZXJ8fGNvbnRyYWN0LnByb3ZpZGVyLGFyZ3MsZnJhZ21lbnQuaW5wdXRzKSxhZGRyZXNzOmNvbnRyYWN0LnJlc29sdmVkQWRkcmVzcyxvdmVycmlkZXM6bGliJDMucmVzb2x2ZVByb3BlcnRpZXMob3ZlcnJpZGVzKXx8e319KV07Y2FzZSAxOnJlc29sdmVkPV9hLnNlbnQoKTtkYXRhPWNvbnRyYWN0LmludGVyZmFjZS5lbmNvZGVGdW5jdGlvbkRhdGEoZnJhZ21lbnQscmVzb2x2ZWQuYXJncyk7dHg9e2RhdGE6ZGF0YSx0bzpyZXNvbHZlZC5hZGRyZXNzfTtybz1yZXNvbHZlZC5vdmVycmlkZXM7aWYocm8ubm9uY2UhPW51bGwpe3R4Lm5vbmNlPWxpYiQyLkJpZ051bWJlci5mcm9tKHJvLm5vbmNlKS50b051bWJlcigpfWlmKHJvLmdhc0xpbWl0IT1udWxsKXt0eC5nYXNMaW1pdD1saWIkMi5CaWdOdW1iZXIuZnJvbShyby5nYXNMaW1pdCl9aWYocm8uZ2FzUHJpY2UhPW51bGwpe3R4Lmdhc1ByaWNlPWxpYiQyLkJpZ051bWJlci5mcm9tKHJvLmdhc1ByaWNlKX1pZihyby5mcm9tIT1udWxsKXt0eC5mcm9tPXJvLmZyb219aWYocm8udHlwZSE9bnVsbCl7dHgudHlwZT1yby50eXBlfWlmKHJvLmFjY2Vzc0xpc3QhPW51bGwpe3R4LmFjY2Vzc0xpc3Q9bGliJGUuYWNjZXNzTGlzdGlmeShyby5hY2Nlc3NMaXN0KX1pZih0eC5nYXNMaW1pdD09bnVsbCYmZnJhZ21lbnQuZ2FzIT1udWxsKXtpbnRyaW5zaWM9MjFlMztieXRlcz1saWIkMS5hcnJheWlmeShkYXRhKTtmb3IoaT0wO2k8Ynl0ZXMubGVuZ3RoO2krKyl7aW50cmluc2ljKz00O2lmKGJ5dGVzW2ldKXtpbnRyaW5zaWMrPTY0fX10eC5nYXNMaW1pdD1saWIkMi5CaWdOdW1iZXIuZnJvbShmcmFnbWVudC5nYXMpLmFkZChpbnRyaW5zaWMpfWlmKHJvLnZhbHVlKXtyb1ZhbHVlPWxpYiQyLkJpZ051bWJlci5mcm9tKHJvLnZhbHVlKTtpZighcm9WYWx1ZS5pc1plcm8oKSYmIWZyYWdtZW50LnBheWFibGUpe2xvZ2dlci50aHJvd0Vycm9yKCJub24tcGF5YWJsZSBtZXRob2QgY2Fubm90IG92ZXJyaWRlIHZhbHVlIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoib3ZlcnJpZGVzLnZhbHVlIix2YWx1ZTpvdmVycmlkZXMudmFsdWV9KX10eC52YWx1ZT1yb1ZhbHVlfWRlbGV0ZSBvdmVycmlkZXMubm9uY2U7ZGVsZXRlIG92ZXJyaWRlcy5nYXNMaW1pdDtkZWxldGUgb3ZlcnJpZGVzLmdhc1ByaWNlO2RlbGV0ZSBvdmVycmlkZXMuZnJvbTtkZWxldGUgb3ZlcnJpZGVzLnZhbHVlO2RlbGV0ZSBvdmVycmlkZXMudHlwZTtkZWxldGUgb3ZlcnJpZGVzLmFjY2Vzc0xpc3Q7bGVmdG92ZXJzPU9iamVjdC5rZXlzKG92ZXJyaWRlcykuZmlsdGVyKGZ1bmN0aW9uKGtleSl7cmV0dXJuIG92ZXJyaWRlc1trZXldIT1udWxsfSk7aWYobGVmdG92ZXJzLmxlbmd0aCl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBvdmVycmlkZSAiK2xlZnRvdmVycy5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGwpfSkuam9pbigiLCIpLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJvdmVycmlkZXMiLG92ZXJyaWRlczpsZWZ0b3ZlcnN9KX1yZXR1cm5bMix0eF19fSl9KX1mdW5jdGlvbiBidWlsZFBvcHVsYXRlKGNvbnRyYWN0LGZyYWdtZW50KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYXJncz1bXTtmb3IodmFyIF9pPTA7X2k8YXJndW1lbnRzLmxlbmd0aDtfaSsrKXthcmdzW19pXT1hcmd1bWVudHNbX2ldfXJldHVybiBwb3B1bGF0ZVRyYW5zYWN0aW9uKGNvbnRyYWN0LGZyYWdtZW50LGFyZ3MpfX1mdW5jdGlvbiBidWlsZEVzdGltYXRlKGNvbnRyYWN0LGZyYWdtZW50KXt2YXIgc2lnbmVyT3JQcm92aWRlcj1jb250cmFjdC5zaWduZXJ8fGNvbnRyYWN0LnByb3ZpZGVyO3JldHVybiBmdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdHg7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKCFzaWduZXJPclByb3ZpZGVyKXtsb2dnZXIudGhyb3dFcnJvcigiZXN0aW1hdGUgcmVxdWlyZSBhIHByb3ZpZGVyIG9yIHNpZ25lciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImVzdGltYXRlR2FzIn0pfXJldHVybls0LHBvcHVsYXRlVHJhbnNhY3Rpb24oY29udHJhY3QsZnJhZ21lbnQsYXJncyldO2Nhc2UgMTp0eD1fYS5zZW50KCk7cmV0dXJuWzQsc2lnbmVyT3JQcm92aWRlci5lc3RpbWF0ZUdhcyh0eCldO2Nhc2UgMjpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9fWZ1bmN0aW9uIGJ1aWxkQ2FsbChjb250cmFjdCxmcmFnbWVudCxjb2xsYXBzZVNpbXBsZSl7dmFyIHNpZ25lck9yUHJvdmlkZXI9Y29udHJhY3Quc2lnbmVyfHxjb250cmFjdC5wcm92aWRlcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYXJncz1bXTtmb3IodmFyIF9pPTA7X2k8YXJndW1lbnRzLmxlbmd0aDtfaSsrKXthcmdzW19pXT1hcmd1bWVudHNbX2ldfXJldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrVGFnLG92ZXJyaWRlcyx0eCxyZXN1bHQsdmFsdWU7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmJsb2NrVGFnPXVuZGVmaW5lZDtpZighKGFyZ3MubGVuZ3RoPT09ZnJhZ21lbnQuaW5wdXRzLmxlbmd0aCsxJiZ0eXBlb2YgYXJnc1thcmdzLmxlbmd0aC0xXT09PSJvYmplY3QiKSlyZXR1cm5bMywzXTtvdmVycmlkZXM9bGliJDMuc2hhbGxvd0NvcHkoYXJncy5wb3AoKSk7aWYoIShvdmVycmlkZXMuYmxvY2tUYWchPW51bGwpKXJldHVyblszLDJdO3JldHVybls0LG92ZXJyaWRlcy5ibG9ja1RhZ107Y2FzZSAxOmJsb2NrVGFnPV9hLnNlbnQoKTtfYS5sYWJlbD0yO2Nhc2UgMjpkZWxldGUgb3ZlcnJpZGVzLmJsb2NrVGFnO2FyZ3MucHVzaChvdmVycmlkZXMpO19hLmxhYmVsPTM7Y2FzZSAzOmlmKCEoY29udHJhY3QuZGVwbG95VHJhbnNhY3Rpb24hPW51bGwpKXJldHVyblszLDVdO3JldHVybls0LGNvbnRyYWN0Ll9kZXBsb3llZChibG9ja1RhZyldO2Nhc2UgNDpfYS5zZW50KCk7X2EubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzQscG9wdWxhdGVUcmFuc2FjdGlvbihjb250cmFjdCxmcmFnbWVudCxhcmdzKV07Y2FzZSA2OnR4PV9hLnNlbnQoKTtyZXR1cm5bNCxzaWduZXJPclByb3ZpZGVyLmNhbGwodHgsYmxvY2tUYWcpXTtjYXNlIDc6cmVzdWx0PV9hLnNlbnQoKTt0cnl7dmFsdWU9Y29udHJhY3QuaW50ZXJmYWNlLmRlY29kZUZ1bmN0aW9uUmVzdWx0KGZyYWdtZW50LHJlc3VsdCk7aWYoY29sbGFwc2VTaW1wbGUmJmZyYWdtZW50Lm91dHB1dHMubGVuZ3RoPT09MSl7dmFsdWU9dmFsdWVbMF19cmV0dXJuWzIsdmFsdWVdfWNhdGNoKGVycm9yKXtpZihlcnJvci5jb2RlPT09bGliLkxvZ2dlci5lcnJvcnMuQ0FMTF9FWENFUFRJT04pe2Vycm9yLmFkZHJlc3M9Y29udHJhY3QuYWRkcmVzcztlcnJvci5hcmdzPWFyZ3M7ZXJyb3IudHJhbnNhY3Rpb249dHh9dGhyb3cgZXJyb3J9cmV0dXJuWzJdfX0pfSl9fWZ1bmN0aW9uIGJ1aWxkU2VuZChjb250cmFjdCxmcmFnbWVudCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0wO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaV09YXJndW1lbnRzW19pXX1yZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0eFJlcXVlc3QsdHgsd2FpdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoIWNvbnRyYWN0LnNpZ25lcil7bG9nZ2VyLnRocm93RXJyb3IoInNlbmRpbmcgYSB0cmFuc2FjdGlvbiByZXF1aXJlcyBhIHNpZ25lciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InNlbmRUcmFuc2FjdGlvbiJ9KX1pZighKGNvbnRyYWN0LmRlcGxveVRyYW5zYWN0aW9uIT1udWxsKSlyZXR1cm5bMywyXTtyZXR1cm5bNCxjb250cmFjdC5fZGVwbG95ZWQoKV07Y2FzZSAxOl9hLnNlbnQoKTtfYS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCxwb3B1bGF0ZVRyYW5zYWN0aW9uKGNvbnRyYWN0LGZyYWdtZW50LGFyZ3MpXTtjYXNlIDM6dHhSZXF1ZXN0PV9hLnNlbnQoKTtyZXR1cm5bNCxjb250cmFjdC5zaWduZXIuc2VuZFRyYW5zYWN0aW9uKHR4UmVxdWVzdCldO2Nhc2UgNDp0eD1fYS5zZW50KCk7d2FpdD10eC53YWl0LmJpbmQodHgpO3R4LndhaXQ9ZnVuY3Rpb24oY29uZmlybWF0aW9ucyl7cmV0dXJuIHdhaXQoY29uZmlybWF0aW9ucykudGhlbihmdW5jdGlvbihyZWNlaXB0KXtyZWNlaXB0LmV2ZW50cz1yZWNlaXB0LmxvZ3MubWFwKGZ1bmN0aW9uKGxvZyl7dmFyIGV2ZW50PWxpYiQzLmRlZXBDb3B5KGxvZyk7dmFyIHBhcnNlZD1udWxsO3RyeXtwYXJzZWQ9Y29udHJhY3QuaW50ZXJmYWNlLnBhcnNlTG9nKGxvZyl9Y2F0Y2goZSl7fWlmKHBhcnNlZCl7ZXZlbnQuYXJncz1wYXJzZWQuYXJncztldmVudC5kZWNvZGU9ZnVuY3Rpb24oZGF0YSx0b3BpY3Mpe3JldHVybiBjb250cmFjdC5pbnRlcmZhY2UuZGVjb2RlRXZlbnRMb2cocGFyc2VkLmV2ZW50RnJhZ21lbnQsZGF0YSx0b3BpY3MpfTtldmVudC5ldmVudD1wYXJzZWQubmFtZTtldmVudC5ldmVudFNpZ25hdHVyZT1wYXJzZWQuc2lnbmF0dXJlfWV2ZW50LnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRyYWN0LnByb3ZpZGVyfTtldmVudC5nZXRCbG9jaz1mdW5jdGlvbigpe3JldHVybiBjb250cmFjdC5wcm92aWRlci5nZXRCbG9jayhyZWNlaXB0LmJsb2NrSGFzaCl9O2V2ZW50LmdldFRyYW5zYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRyYWN0LnByb3ZpZGVyLmdldFRyYW5zYWN0aW9uKHJlY2VpcHQudHJhbnNhY3Rpb25IYXNoKX07ZXZlbnQuZ2V0VHJhbnNhY3Rpb25SZWNlaXB0PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWNlaXB0KX07cmV0dXJuIGV2ZW50fSk7cmV0dXJuIHJlY2VpcHR9KX07cmV0dXJuWzIsdHhdfX0pfSl9fWZ1bmN0aW9uIGJ1aWxkRGVmYXVsdChjb250cmFjdCxmcmFnbWVudCxjb2xsYXBzZVNpbXBsZSl7aWYoZnJhZ21lbnQuY29uc3RhbnQpe3JldHVybiBidWlsZENhbGwoY29udHJhY3QsZnJhZ21lbnQsY29sbGFwc2VTaW1wbGUpfXJldHVybiBidWlsZFNlbmQoY29udHJhY3QsZnJhZ21lbnQpfWZ1bmN0aW9uIGdldEV2ZW50VGFnKGZpbHRlcil7aWYoZmlsdGVyLmFkZHJlc3MmJihmaWx0ZXIudG9waWNzPT1udWxsfHxmaWx0ZXIudG9waWNzLmxlbmd0aD09PTApKXtyZXR1cm4iKiJ9cmV0dXJuKGZpbHRlci5hZGRyZXNzfHwiKiIpKyJAIisoZmlsdGVyLnRvcGljcz9maWx0ZXIudG9waWNzLm1hcChmdW5jdGlvbih0b3BpYyl7aWYoQXJyYXkuaXNBcnJheSh0b3BpYykpe3JldHVybiB0b3BpYy5qb2luKCJ8Iil9cmV0dXJuIHRvcGljfSkuam9pbigiOiIpOiIiKX12YXIgUnVubmluZ0V2ZW50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gUnVubmluZ0V2ZW50KHRhZyxmaWx0ZXIpe2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsInRhZyIsdGFnKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJmaWx0ZXIiLGZpbHRlcik7dGhpcy5fbGlzdGVuZXJzPVtdfVJ1bm5pbmdFdmVudC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24obGlzdGVuZXIsb25jZSl7dGhpcy5fbGlzdGVuZXJzLnB1c2goe2xpc3RlbmVyOmxpc3RlbmVyLG9uY2U6b25jZX0pfTtSdW5uaW5nRXZlbnQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGxpc3RlbmVyKXt2YXIgZG9uZT1mYWxzZTt0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbihpdGVtKXtpZihkb25lfHxpdGVtLmxpc3RlbmVyIT09bGlzdGVuZXIpe3JldHVybiB0cnVlfWRvbmU9dHJ1ZTtyZXR1cm4gZmFsc2V9KX07UnVubmluZ0V2ZW50LnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5lcnM9W119O1J1bm5pbmdFdmVudC5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIGkubGlzdGVuZXJ9KX07UnVubmluZ0V2ZW50LnByb3RvdHlwZS5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5sZW5ndGh9O1J1bm5pbmdFdmVudC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKGFyZ3Mpe3ZhciBfdGhpcz10aGlzO3ZhciBsaXN0ZW5lckNvdW50PXRoaXMubGlzdGVuZXJDb3VudCgpO3RoaXMuX2xpc3RlbmVycz10aGlzLl9saXN0ZW5lcnMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pe3ZhciBhcmdzQ29weT1hcmdzLnNsaWNlKCk7c2V0VGltZW91dChmdW5jdGlvbigpe2l0ZW0ubGlzdGVuZXIuYXBwbHkoX3RoaXMsYXJnc0NvcHkpfSwwKTtyZXR1cm4haXRlbS5vbmNlfSk7cmV0dXJuIGxpc3RlbmVyQ291bnR9O1J1bm5pbmdFdmVudC5wcm90b3R5cGUucHJlcGFyZUV2ZW50PWZ1bmN0aW9uKGV2ZW50KXt9O1J1bm5pbmdFdmVudC5wcm90b3R5cGUuZ2V0RW1pdD1mdW5jdGlvbihldmVudCl7cmV0dXJuW2V2ZW50XX07cmV0dXJuIFJ1bm5pbmdFdmVudH0oKTt2YXIgRXJyb3JSdW5uaW5nRXZlbnQ9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoRXJyb3JSdW5uaW5nRXZlbnQsX3N1cGVyKTtmdW5jdGlvbiBFcnJvclJ1bm5pbmdFdmVudCgpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJlcnJvciIsbnVsbCl8fHRoaXN9cmV0dXJuIEVycm9yUnVubmluZ0V2ZW50fShSdW5uaW5nRXZlbnQpO3ZhciBGcmFnbWVudFJ1bm5pbmdFdmVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhGcmFnbWVudFJ1bm5pbmdFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIEZyYWdtZW50UnVubmluZ0V2ZW50KGFkZHJlc3MsY29udHJhY3RJbnRlcmZhY2UsZnJhZ21lbnQsdG9waWNzKXt2YXIgX3RoaXM9dGhpczt2YXIgZmlsdGVyPXthZGRyZXNzOmFkZHJlc3N9O3ZhciB0b3BpYz1jb250cmFjdEludGVyZmFjZS5nZXRFdmVudFRvcGljKGZyYWdtZW50KTtpZih0b3BpY3Mpe2lmKHRvcGljIT09dG9waWNzWzBdKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ0b3BpYyBtaXNtYXRjaCIsInRvcGljcyIsdG9waWNzKX1maWx0ZXIudG9waWNzPXRvcGljcy5zbGljZSgpfWVsc2V7ZmlsdGVyLnRvcGljcz1bdG9waWNdfV90aGlzPV9zdXBlci5jYWxsKHRoaXMsZ2V0RXZlbnRUYWcoZmlsdGVyKSxmaWx0ZXIpfHx0aGlzO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJhZGRyZXNzIixhZGRyZXNzKTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiaW50ZXJmYWNlIixjb250cmFjdEludGVyZmFjZSk7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImZyYWdtZW50IixmcmFnbWVudCk7cmV0dXJuIF90aGlzfUZyYWdtZW50UnVubmluZ0V2ZW50LnByb3RvdHlwZS5wcmVwYXJlRXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe3ZhciBfdGhpcz10aGlzO19zdXBlci5wcm90b3R5cGUucHJlcGFyZUV2ZW50LmNhbGwodGhpcyxldmVudCk7ZXZlbnQuZXZlbnQ9dGhpcy5mcmFnbWVudC5uYW1lO2V2ZW50LmV2ZW50U2lnbmF0dXJlPXRoaXMuZnJhZ21lbnQuZm9ybWF0KCk7ZXZlbnQuZGVjb2RlPWZ1bmN0aW9uKGRhdGEsdG9waWNzKXtyZXR1cm4gX3RoaXMuaW50ZXJmYWNlLmRlY29kZUV2ZW50TG9nKF90aGlzLmZyYWdtZW50LGRhdGEsdG9waWNzKX07dHJ5e2V2ZW50LmFyZ3M9dGhpcy5pbnRlcmZhY2UuZGVjb2RlRXZlbnRMb2codGhpcy5mcmFnbWVudCxldmVudC5kYXRhLGV2ZW50LnRvcGljcyl9Y2F0Y2goZXJyb3Ipe2V2ZW50LmFyZ3M9bnVsbDtldmVudC5kZWNvZGVFcnJvcj1lcnJvcn19O0ZyYWdtZW50UnVubmluZ0V2ZW50LnByb3RvdHlwZS5nZXRFbWl0PWZ1bmN0aW9uKGV2ZW50KXt2YXIgZXJyb3JzPWxpYiRhLmNoZWNrUmVzdWx0RXJyb3JzKGV2ZW50LmFyZ3MpO2lmKGVycm9ycy5sZW5ndGgpe3Rocm93IGVycm9yc1swXS5lcnJvcn12YXIgYXJncz0oZXZlbnQuYXJnc3x8W10pLnNsaWNlKCk7YXJncy5wdXNoKGV2ZW50KTtyZXR1cm4gYXJnc307cmV0dXJuIEZyYWdtZW50UnVubmluZ0V2ZW50fShSdW5uaW5nRXZlbnQpO3ZhciBXaWxkY2FyZFJ1bm5pbmdFdmVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhXaWxkY2FyZFJ1bm5pbmdFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIFdpbGRjYXJkUnVubmluZ0V2ZW50KGFkZHJlc3MsY29udHJhY3RJbnRlcmZhY2Upe3ZhciBfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLCIqIix7YWRkcmVzczphZGRyZXNzfSl8fHRoaXM7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImFkZHJlc3MiLGFkZHJlc3MpO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJpbnRlcmZhY2UiLGNvbnRyYWN0SW50ZXJmYWNlKTtyZXR1cm4gX3RoaXN9V2lsZGNhcmRSdW5uaW5nRXZlbnQucHJvdG90eXBlLnByZXBhcmVFdmVudD1mdW5jdGlvbihldmVudCl7dmFyIF90aGlzPXRoaXM7X3N1cGVyLnByb3RvdHlwZS5wcmVwYXJlRXZlbnQuY2FsbCh0aGlzLGV2ZW50KTt0cnl7dmFyIHBhcnNlZF8xPXRoaXMuaW50ZXJmYWNlLnBhcnNlTG9nKGV2ZW50KTtldmVudC5ldmVudD1wYXJzZWRfMS5uYW1lO2V2ZW50LmV2ZW50U2lnbmF0dXJlPXBhcnNlZF8xLnNpZ25hdHVyZTtldmVudC5kZWNvZGU9ZnVuY3Rpb24oZGF0YSx0b3BpY3Mpe3JldHVybiBfdGhpcy5pbnRlcmZhY2UuZGVjb2RlRXZlbnRMb2cocGFyc2VkXzEuZXZlbnRGcmFnbWVudCxkYXRhLHRvcGljcyl9O2V2ZW50LmFyZ3M9cGFyc2VkXzEuYXJnc31jYXRjaChlcnJvcil7fX07cmV0dXJuIFdpbGRjYXJkUnVubmluZ0V2ZW50fShSdW5uaW5nRXZlbnQpO3ZhciBCYXNlQ29udHJhY3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBCYXNlQ29udHJhY3QoYWRkcmVzc09yTmFtZSxjb250cmFjdEludGVyZmFjZSxzaWduZXJPclByb3ZpZGVyKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LENvbnRyYWN0KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJpbnRlcmZhY2UiLGxpYiQzLmdldFN0YXRpYyhfbmV3VGFyZ2V0LCJnZXRJbnRlcmZhY2UiKShjb250cmFjdEludGVyZmFjZSkpO2lmKHNpZ25lck9yUHJvdmlkZXI9PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsInByb3ZpZGVyIixudWxsKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJzaWduZXIiLG51bGwpfWVsc2UgaWYobGliJGMuU2lnbmVyLmlzU2lnbmVyKHNpZ25lck9yUHJvdmlkZXIpKXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwcm92aWRlciIsc2lnbmVyT3JQcm92aWRlci5wcm92aWRlcnx8bnVsbCk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywic2lnbmVyIixzaWduZXJPclByb3ZpZGVyKX1lbHNlIGlmKGxpYiRiLlByb3ZpZGVyLmlzUHJvdmlkZXIoc2lnbmVyT3JQcm92aWRlcikpe2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsInByb3ZpZGVyIixzaWduZXJPclByb3ZpZGVyKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJzaWduZXIiLG51bGwpfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBzaWduZXIgb3IgcHJvdmlkZXIiLCJzaWduZXJPclByb3ZpZGVyIixzaWduZXJPclByb3ZpZGVyKX1saWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJjYWxsU3RhdGljIix7fSk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiZXN0aW1hdGVHYXMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJmdW5jdGlvbnMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwb3B1bGF0ZVRyYW5zYWN0aW9uIix7fSk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiZmlsdGVycyIse30pO3t2YXIgdW5pcXVlRmlsdGVyc18xPXt9O09iamVjdC5rZXlzKHRoaXMuaW50ZXJmYWNlLmV2ZW50cykuZm9yRWFjaChmdW5jdGlvbihldmVudFNpZ25hdHVyZSl7dmFyIGV2ZW50PV90aGlzLmludGVyZmFjZS5ldmVudHNbZXZlbnRTaWduYXR1cmVdO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLmZpbHRlcnMsZXZlbnRTaWduYXR1cmUsZnVuY3Rpb24oKXt2YXIgYXJncz1bXTtmb3IodmFyIF9pPTA7X2k8YXJndW1lbnRzLmxlbmd0aDtfaSsrKXthcmdzW19pXT1hcmd1bWVudHNbX2ldfXJldHVybnthZGRyZXNzOl90aGlzLmFkZHJlc3MsdG9waWNzOl90aGlzLmludGVyZmFjZS5lbmNvZGVGaWx0ZXJUb3BpY3MoZXZlbnQsYXJncyl9fSk7aWYoIXVuaXF1ZUZpbHRlcnNfMVtldmVudC5uYW1lXSl7dW5pcXVlRmlsdGVyc18xW2V2ZW50Lm5hbWVdPVtdfXVuaXF1ZUZpbHRlcnNfMVtldmVudC5uYW1lXS5wdXNoKGV2ZW50U2lnbmF0dXJlKX0pO09iamVjdC5rZXlzKHVuaXF1ZUZpbHRlcnNfMSkuZm9yRWFjaChmdW5jdGlvbihuYW1lKXt2YXIgZmlsdGVycz11bmlxdWVGaWx0ZXJzXzFbbmFtZV07aWYoZmlsdGVycy5sZW5ndGg9PT0xKXtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcy5maWx0ZXJzLG5hbWUsX3RoaXMuZmlsdGVyc1tmaWx0ZXJzWzBdXSl9ZWxzZXtsb2dnZXIud2FybigiRHVwbGljYXRlIGRlZmluaXRpb24gb2YgIituYW1lKyIgKCIrZmlsdGVycy5qb2luKCIsICIpKyIpIil9fSl9bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX3J1bm5pbmdFdmVudHMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJfd3JhcHBlZEVtaXRzIix7fSk7aWYoYWRkcmVzc09yTmFtZT09bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBjb250cmFjdCBhZGRyZXNzIG9yIEVOUyBuYW1lIiwiYWRkcmVzc09yTmFtZSIsYWRkcmVzc09yTmFtZSl9bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiYWRkcmVzcyIsYWRkcmVzc09yTmFtZSk7aWYodGhpcy5wcm92aWRlcil7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywicmVzb2x2ZWRBZGRyZXNzIixyZXNvbHZlTmFtZSh0aGlzLnByb3ZpZGVyLGFkZHJlc3NPck5hbWUpKX1lbHNle3RyeXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJyZXNvbHZlZEFkZHJlc3MiLFByb21pc2UucmVzb2x2ZShsaWIkNi5nZXRBZGRyZXNzKGFkZHJlc3NPck5hbWUpKSl9Y2F0Y2goZXJyb3Ipe2xvZ2dlci50aHJvd0Vycm9yKCJwcm92aWRlciBpcyByZXF1aXJlZCB0byB1c2UgRU5TIG5hbWUgYXMgY29udHJhY3QgYWRkcmVzcyIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im5ldyBDb250cmFjdCJ9KX19dmFyIHVuaXF1ZU5hbWVzPXt9O3ZhciB1bmlxdWVTaWduYXR1cmVzPXt9O09iamVjdC5rZXlzKHRoaXMuaW50ZXJmYWNlLmZ1bmN0aW9ucykuZm9yRWFjaChmdW5jdGlvbihzaWduYXR1cmUpe3ZhciBmcmFnbWVudD1fdGhpcy5pbnRlcmZhY2UuZnVuY3Rpb25zW3NpZ25hdHVyZV07aWYodW5pcXVlU2lnbmF0dXJlc1tzaWduYXR1cmVdKXtsb2dnZXIud2FybigiRHVwbGljYXRlIEFCSSBlbnRyeSBmb3IgIitKU09OLnN0cmluZ2lmeShuYW1lKSk7cmV0dXJufXVuaXF1ZVNpZ25hdHVyZXNbc2lnbmF0dXJlXT10cnVlO3t2YXIgbmFtZV8xPWZyYWdtZW50Lm5hbWU7aWYoIXVuaXF1ZU5hbWVzW25hbWVfMV0pe3VuaXF1ZU5hbWVzW25hbWVfMV09W119dW5pcXVlTmFtZXNbbmFtZV8xXS5wdXNoKHNpZ25hdHVyZSl9aWYoX3RoaXNbc2lnbmF0dXJlXT09bnVsbCl7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsc2lnbmF0dXJlLGJ1aWxkRGVmYXVsdChfdGhpcyxmcmFnbWVudCx0cnVlKSl9aWYoX3RoaXMuZnVuY3Rpb25zW3NpZ25hdHVyZV09PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLmZ1bmN0aW9ucyxzaWduYXR1cmUsYnVpbGREZWZhdWx0KF90aGlzLGZyYWdtZW50LGZhbHNlKSl9aWYoX3RoaXMuY2FsbFN0YXRpY1tzaWduYXR1cmVdPT1udWxsKXtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcy5jYWxsU3RhdGljLHNpZ25hdHVyZSxidWlsZENhbGwoX3RoaXMsZnJhZ21lbnQsdHJ1ZSkpfWlmKF90aGlzLnBvcHVsYXRlVHJhbnNhY3Rpb25bc2lnbmF0dXJlXT09bnVsbCl7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMucG9wdWxhdGVUcmFuc2FjdGlvbixzaWduYXR1cmUsYnVpbGRQb3B1bGF0ZShfdGhpcyxmcmFnbWVudCkpfWlmKF90aGlzLmVzdGltYXRlR2FzW3NpZ25hdHVyZV09PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLmVzdGltYXRlR2FzLHNpZ25hdHVyZSxidWlsZEVzdGltYXRlKF90aGlzLGZyYWdtZW50KSl9fSk7T2JqZWN0LmtleXModW5pcXVlTmFtZXMpLmZvckVhY2goZnVuY3Rpb24obmFtZSl7dmFyIHNpZ25hdHVyZXM9dW5pcXVlTmFtZXNbbmFtZV07aWYoc2lnbmF0dXJlcy5sZW5ndGg+MSl7cmV0dXJufXZhciBzaWduYXR1cmU9c2lnbmF0dXJlc1swXTt0cnl7aWYoX3RoaXNbbmFtZV09PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLG5hbWUsX3RoaXNbc2lnbmF0dXJlXSl9fWNhdGNoKGUpe31pZihfdGhpcy5mdW5jdGlvbnNbbmFtZV09PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLmZ1bmN0aW9ucyxuYW1lLF90aGlzLmZ1bmN0aW9uc1tzaWduYXR1cmVdKX1pZihfdGhpcy5jYWxsU3RhdGljW25hbWVdPT1udWxsKXtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcy5jYWxsU3RhdGljLG5hbWUsX3RoaXMuY2FsbFN0YXRpY1tzaWduYXR1cmVdKX1pZihfdGhpcy5wb3B1bGF0ZVRyYW5zYWN0aW9uW25hbWVdPT1udWxsKXtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcy5wb3B1bGF0ZVRyYW5zYWN0aW9uLG5hbWUsX3RoaXMucG9wdWxhdGVUcmFuc2FjdGlvbltzaWduYXR1cmVdKX1pZihfdGhpcy5lc3RpbWF0ZUdhc1tuYW1lXT09bnVsbCl7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMuZXN0aW1hdGVHYXMsbmFtZSxfdGhpcy5lc3RpbWF0ZUdhc1tzaWduYXR1cmVdKX19KX1CYXNlQ29udHJhY3QuZ2V0Q29udHJhY3RBZGRyZXNzPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gbGliJDYuZ2V0Q29udHJhY3RBZGRyZXNzKHRyYW5zYWN0aW9uKX07QmFzZUNvbnRyYWN0LmdldEludGVyZmFjZT1mdW5jdGlvbihjb250cmFjdEludGVyZmFjZSl7aWYobGliJGEuSW50ZXJmYWNlLmlzSW50ZXJmYWNlKGNvbnRyYWN0SW50ZXJmYWNlKSl7cmV0dXJuIGNvbnRyYWN0SW50ZXJmYWNlfXJldHVybiBuZXcgbGliJGEuSW50ZXJmYWNlKGNvbnRyYWN0SW50ZXJmYWNlKX07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5kZXBsb3llZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXBsb3llZCgpfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLl9kZXBsb3llZD1mdW5jdGlvbihibG9ja1RhZyl7dmFyIF90aGlzPXRoaXM7aWYoIXRoaXMuX2RlcGxveWVkUHJvbWlzZSl7aWYodGhpcy5kZXBsb3lUcmFuc2FjdGlvbil7dGhpcy5fZGVwbG95ZWRQcm9taXNlPXRoaXMuZGVwbG95VHJhbnNhY3Rpb24ud2FpdCgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gX3RoaXN9KX1lbHNle3RoaXMuX2RlcGxveWVkUHJvbWlzZT10aGlzLnByb3ZpZGVyLmdldENvZGUodGhpcy5hZGRyZXNzLGJsb2NrVGFnKS50aGVuKGZ1bmN0aW9uKGNvZGUpe2lmKGNvZGU9PT0iMHgiKXtsb2dnZXIudGhyb3dFcnJvcigiY29udHJhY3Qgbm90IGRlcGxveWVkIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se2NvbnRyYWN0QWRkcmVzczpfdGhpcy5hZGRyZXNzLG9wZXJhdGlvbjoiZ2V0RGVwbG95ZWQifSl9cmV0dXJuIF90aGlzfSl9fXJldHVybiB0aGlzLl9kZXBsb3llZFByb21pc2V9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUuZmFsbGJhY2s9ZnVuY3Rpb24ob3ZlcnJpZGVzKXt2YXIgX3RoaXM9dGhpcztpZighdGhpcy5zaWduZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJzZW5kaW5nIGEgdHJhbnNhY3Rpb25zIHJlcXVpcmUgYSBzaWduZXIiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJzZW5kVHJhbnNhY3Rpb24oZmFsbGJhY2spIn0pfXZhciB0eD1saWIkMy5zaGFsbG93Q29weShvdmVycmlkZXN8fHt9KTtbImZyb20iLCJ0byJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih0eFtrZXldPT1udWxsKXtyZXR1cm59bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBvdmVycmlkZSAiK2tleSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjprZXl9KX0pO3R4LnRvPXRoaXMucmVzb2x2ZWRBZGRyZXNzO3JldHVybiB0aGlzLmRlcGxveWVkKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBfdGhpcy5zaWduZXIuc2VuZFRyYW5zYWN0aW9uKHR4KX0pfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oc2lnbmVyT3JQcm92aWRlcil7aWYodHlwZW9mIHNpZ25lck9yUHJvdmlkZXI9PT0ic3RyaW5nIil7c2lnbmVyT3JQcm92aWRlcj1uZXcgbGliJGMuVm9pZFNpZ25lcihzaWduZXJPclByb3ZpZGVyLHRoaXMucHJvdmlkZXIpfXZhciBjb250cmFjdD1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFkZHJlc3MsdGhpcy5pbnRlcmZhY2Usc2lnbmVyT3JQcm92aWRlcik7aWYodGhpcy5kZXBsb3lUcmFuc2FjdGlvbil7bGliJDMuZGVmaW5lUmVhZE9ubHkoY29udHJhY3QsImRlcGxveVRyYW5zYWN0aW9uIix0aGlzLmRlcGxveVRyYW5zYWN0aW9uKX1yZXR1cm4gY29udHJhY3R9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKGFkZHJlc3NPck5hbWUpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcihhZGRyZXNzT3JOYW1lLHRoaXMuaW50ZXJmYWNlLHRoaXMuc2lnbmVyfHx0aGlzLnByb3ZpZGVyKX07QmFzZUNvbnRyYWN0LmlzSW5kZXhlZD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGxpYiRhLkluZGV4ZWQuaXNJbmRleGVkKHZhbHVlKX07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5fbm9ybWFsaXplUnVubmluZ0V2ZW50PWZ1bmN0aW9uKHJ1bm5pbmdFdmVudCl7aWYodGhpcy5fcnVubmluZ0V2ZW50c1tydW5uaW5nRXZlbnQudGFnXSl7cmV0dXJuIHRoaXMuX3J1bm5pbmdFdmVudHNbcnVubmluZ0V2ZW50LnRhZ119cmV0dXJuIHJ1bm5pbmdFdmVudH07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5fZ2V0UnVubmluZ0V2ZW50PWZ1bmN0aW9uKGV2ZW50TmFtZSl7aWYodHlwZW9mIGV2ZW50TmFtZT09PSJzdHJpbmciKXtpZihldmVudE5hbWU9PT0iZXJyb3IiKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplUnVubmluZ0V2ZW50KG5ldyBFcnJvclJ1bm5pbmdFdmVudCl9aWYoZXZlbnROYW1lPT09ImV2ZW50Iil7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZVJ1bm5pbmdFdmVudChuZXcgUnVubmluZ0V2ZW50KCJldmVudCIsbnVsbCkpfWlmKGV2ZW50TmFtZT09PSIqIil7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZVJ1bm5pbmdFdmVudChuZXcgV2lsZGNhcmRSdW5uaW5nRXZlbnQodGhpcy5hZGRyZXNzLHRoaXMuaW50ZXJmYWNlKSl9dmFyIGZyYWdtZW50PXRoaXMuaW50ZXJmYWNlLmdldEV2ZW50KGV2ZW50TmFtZSk7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZVJ1bm5pbmdFdmVudChuZXcgRnJhZ21lbnRSdW5uaW5nRXZlbnQodGhpcy5hZGRyZXNzLHRoaXMuaW50ZXJmYWNlLGZyYWdtZW50KSl9aWYoZXZlbnROYW1lLnRvcGljcyYmZXZlbnROYW1lLnRvcGljcy5sZW5ndGg+MCl7dHJ5e3ZhciB0b3BpYz1ldmVudE5hbWUudG9waWNzWzBdO2lmKHR5cGVvZiB0b3BpYyE9PSJzdHJpbmciKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdG9waWMiKX12YXIgZnJhZ21lbnQ9dGhpcy5pbnRlcmZhY2UuZ2V0RXZlbnQodG9waWMpO3JldHVybiB0aGlzLl9ub3JtYWxpemVSdW5uaW5nRXZlbnQobmV3IEZyYWdtZW50UnVubmluZ0V2ZW50KHRoaXMuYWRkcmVzcyx0aGlzLmludGVyZmFjZSxmcmFnbWVudCxldmVudE5hbWUudG9waWNzKSl9Y2F0Y2goZXJyb3Ipe312YXIgZmlsdGVyPXthZGRyZXNzOnRoaXMuYWRkcmVzcyx0b3BpY3M6ZXZlbnROYW1lLnRvcGljc307cmV0dXJuIHRoaXMuX25vcm1hbGl6ZVJ1bm5pbmdFdmVudChuZXcgUnVubmluZ0V2ZW50KGdldEV2ZW50VGFnKGZpbHRlciksZmlsdGVyKSl9cmV0dXJuIHRoaXMuX25vcm1hbGl6ZVJ1bm5pbmdFdmVudChuZXcgV2lsZGNhcmRSdW5uaW5nRXZlbnQodGhpcy5hZGRyZXNzLHRoaXMuaW50ZXJmYWNlKSl9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUuX2NoZWNrUnVubmluZ0V2ZW50cz1mdW5jdGlvbihydW5uaW5nRXZlbnQpe2lmKHJ1bm5pbmdFdmVudC5saXN0ZW5lckNvdW50KCk9PT0wKXtkZWxldGUgdGhpcy5fcnVubmluZ0V2ZW50c1tydW5uaW5nRXZlbnQudGFnXTt2YXIgZW1pdD10aGlzLl93cmFwcGVkRW1pdHNbcnVubmluZ0V2ZW50LnRhZ107aWYoZW1pdCYmcnVubmluZ0V2ZW50LmZpbHRlcil7dGhpcy5wcm92aWRlci5vZmYocnVubmluZ0V2ZW50LmZpbHRlcixlbWl0KTtkZWxldGUgdGhpcy5fd3JhcHBlZEVtaXRzW3J1bm5pbmdFdmVudC50YWddfX19O0Jhc2VDb250cmFjdC5wcm90b3R5cGUuX3dyYXBFdmVudD1mdW5jdGlvbihydW5uaW5nRXZlbnQsbG9nLGxpc3RlbmVyKXt2YXIgX3RoaXM9dGhpczt2YXIgZXZlbnQ9bGliJDMuZGVlcENvcHkobG9nKTtldmVudC5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbigpe2lmKCFsaXN0ZW5lcil7cmV0dXJufXJ1bm5pbmdFdmVudC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7X3RoaXMuX2NoZWNrUnVubmluZ0V2ZW50cyhydW5uaW5nRXZlbnQpfTtldmVudC5nZXRCbG9jaz1mdW5jdGlvbigpe3JldHVybiBfdGhpcy5wcm92aWRlci5nZXRCbG9jayhsb2cuYmxvY2tIYXNoKX07ZXZlbnQuZ2V0VHJhbnNhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gX3RoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24obG9nLnRyYW5zYWN0aW9uSGFzaCl9O2V2ZW50LmdldFRyYW5zYWN0aW9uUmVjZWlwdD1mdW5jdGlvbigpe3JldHVybiBfdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvblJlY2VpcHQobG9nLnRyYW5zYWN0aW9uSGFzaCl9O3J1bm5pbmdFdmVudC5wcmVwYXJlRXZlbnQoZXZlbnQpO3JldHVybiBldmVudH07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5fYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihydW5uaW5nRXZlbnQsbGlzdGVuZXIsb25jZSl7dmFyIF90aGlzPXRoaXM7aWYoIXRoaXMucHJvdmlkZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJldmVudHMgcmVxdWlyZSBhIHByb3ZpZGVyIG9yIGEgc2lnbmVyIHdpdGggYSBwcm92aWRlciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im9uY2UifSl9cnVubmluZ0V2ZW50LmFkZExpc3RlbmVyKGxpc3RlbmVyLG9uY2UpO3RoaXMuX3J1bm5pbmdFdmVudHNbcnVubmluZ0V2ZW50LnRhZ109cnVubmluZ0V2ZW50O2lmKCF0aGlzLl93cmFwcGVkRW1pdHNbcnVubmluZ0V2ZW50LnRhZ10pe3ZhciB3cmFwcGVkRW1pdD1mdW5jdGlvbihsb2cpe3ZhciBldmVudD1fdGhpcy5fd3JhcEV2ZW50KHJ1bm5pbmdFdmVudCxsb2csbGlzdGVuZXIpO2lmKGV2ZW50LmRlY29kZUVycm9yPT1udWxsKXt0cnl7dmFyIGFyZ3M9cnVubmluZ0V2ZW50LmdldEVtaXQoZXZlbnQpO190aGlzLmVtaXQuYXBwbHkoX3RoaXMsX19zcHJlYWRBcnJheShbcnVubmluZ0V2ZW50LmZpbHRlcl0sYXJncykpfWNhdGNoKGVycm9yKXtldmVudC5kZWNvZGVFcnJvcj1lcnJvci5lcnJvcn19aWYocnVubmluZ0V2ZW50LmZpbHRlciE9bnVsbCl7X3RoaXMuZW1pdCgiZXZlbnQiLGV2ZW50KX1pZihldmVudC5kZWNvZGVFcnJvciE9bnVsbCl7X3RoaXMuZW1pdCgiZXJyb3IiLGV2ZW50LmRlY29kZUVycm9yLGV2ZW50KX19O3RoaXMuX3dyYXBwZWRFbWl0c1tydW5uaW5nRXZlbnQudGFnXT13cmFwcGVkRW1pdDtpZihydW5uaW5nRXZlbnQuZmlsdGVyIT1udWxsKXt0aGlzLnByb3ZpZGVyLm9uKHJ1bm5pbmdFdmVudC5maWx0ZXIsd3JhcHBlZEVtaXQpfX19O0Jhc2VDb250cmFjdC5wcm90b3R5cGUucXVlcnlGaWx0ZXI9ZnVuY3Rpb24oZXZlbnQsZnJvbUJsb2NrT3JCbG9ja2hhc2gsdG9CbG9jayl7dmFyIF90aGlzPXRoaXM7dmFyIHJ1bm5pbmdFdmVudD10aGlzLl9nZXRSdW5uaW5nRXZlbnQoZXZlbnQpO3ZhciBmaWx0ZXI9bGliJDMuc2hhbGxvd0NvcHkocnVubmluZ0V2ZW50LmZpbHRlcik7aWYodHlwZW9mIGZyb21CbG9ja09yQmxvY2toYXNoPT09InN0cmluZyImJmxpYiQxLmlzSGV4U3RyaW5nKGZyb21CbG9ja09yQmxvY2toYXNoLDMyKSl7aWYodG9CbG9jayE9bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiY2Fubm90IHNwZWNpZnkgdG9CbG9jayB3aXRoIGJsb2NraGFzaCIsInRvQmxvY2siLHRvQmxvY2spfWZpbHRlci5ibG9ja0hhc2g9ZnJvbUJsb2NrT3JCbG9ja2hhc2h9ZWxzZXtmaWx0ZXIuZnJvbUJsb2NrPWZyb21CbG9ja09yQmxvY2toYXNoIT1udWxsP2Zyb21CbG9ja09yQmxvY2toYXNoOjA7ZmlsdGVyLnRvQmxvY2s9dG9CbG9jayE9bnVsbD90b0Jsb2NrOiJsYXRlc3QifXJldHVybiB0aGlzLnByb3ZpZGVyLmdldExvZ3MoZmlsdGVyKS50aGVuKGZ1bmN0aW9uKGxvZ3Mpe3JldHVybiBsb2dzLm1hcChmdW5jdGlvbihsb2cpe3JldHVybiBfdGhpcy5fd3JhcEV2ZW50KHJ1bm5pbmdFdmVudCxsb2csbnVsbCl9KX0pfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGV2ZW50LGxpc3RlbmVyKXt0aGlzLl9hZGRFdmVudExpc3RlbmVyKHRoaXMuX2dldFJ1bm5pbmdFdmVudChldmVudCksbGlzdGVuZXIsZmFsc2UpO3JldHVybiB0aGlzfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZXZlbnQsbGlzdGVuZXIpe3RoaXMuX2FkZEV2ZW50TGlzdGVuZXIodGhpcy5fZ2V0UnVubmluZ0V2ZW50KGV2ZW50KSxsaXN0ZW5lcix0cnVlKTtyZXR1cm4gdGhpc307QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGV2ZW50TmFtZSl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0xO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaS0xXT1hcmd1bWVudHNbX2ldfWlmKCF0aGlzLnByb3ZpZGVyKXtyZXR1cm4gZmFsc2V9dmFyIHJ1bm5pbmdFdmVudD10aGlzLl9nZXRSdW5uaW5nRXZlbnQoZXZlbnROYW1lKTt2YXIgcmVzdWx0PXJ1bm5pbmdFdmVudC5ydW4oYXJncyk+MDt0aGlzLl9jaGVja1J1bm5pbmdFdmVudHMocnVubmluZ0V2ZW50KTtyZXR1cm4gcmVzdWx0fTtCYXNlQ29udHJhY3QucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZXZlbnROYW1lKXt2YXIgX3RoaXM9dGhpcztpZighdGhpcy5wcm92aWRlcil7cmV0dXJuIDB9aWYoZXZlbnROYW1lPT1udWxsKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcnVubmluZ0V2ZW50cykucmVkdWNlKGZ1bmN0aW9uKGFjY3VtLGtleSl7cmV0dXJuIGFjY3VtK190aGlzLl9ydW5uaW5nRXZlbnRzW2tleV0ubGlzdGVuZXJDb3VudCgpfSwwKX1yZXR1cm4gdGhpcy5fZ2V0UnVubmluZ0V2ZW50KGV2ZW50TmFtZSkubGlzdGVuZXJDb3VudCgpfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihldmVudE5hbWUpe2lmKCF0aGlzLnByb3ZpZGVyKXtyZXR1cm5bXX1pZihldmVudE5hbWU9PW51bGwpe3ZhciByZXN1bHRfMT1bXTtmb3IodmFyIHRhZyBpbiB0aGlzLl9ydW5uaW5nRXZlbnRzKXt0aGlzLl9ydW5uaW5nRXZlbnRzW3RhZ10ubGlzdGVuZXJzKCkuZm9yRWFjaChmdW5jdGlvbihsaXN0ZW5lcil7cmVzdWx0XzEucHVzaChsaXN0ZW5lcil9KX1yZXR1cm4gcmVzdWx0XzF9cmV0dXJuIHRoaXMuX2dldFJ1bm5pbmdFdmVudChldmVudE5hbWUpLmxpc3RlbmVycygpfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihldmVudE5hbWUpe2lmKCF0aGlzLnByb3ZpZGVyKXtyZXR1cm4gdGhpc31pZihldmVudE5hbWU9PW51bGwpe2Zvcih2YXIgdGFnIGluIHRoaXMuX3J1bm5pbmdFdmVudHMpe3ZhciBydW5uaW5nRXZlbnRfMT10aGlzLl9ydW5uaW5nRXZlbnRzW3RhZ107cnVubmluZ0V2ZW50XzEucmVtb3ZlQWxsTGlzdGVuZXJzKCk7dGhpcy5fY2hlY2tSdW5uaW5nRXZlbnRzKHJ1bm5pbmdFdmVudF8xKX1yZXR1cm4gdGhpc312YXIgcnVubmluZ0V2ZW50PXRoaXMuX2dldFJ1bm5pbmdFdmVudChldmVudE5hbWUpO3J1bm5pbmdFdmVudC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTt0aGlzLl9jaGVja1J1bm5pbmdFdmVudHMocnVubmluZ0V2ZW50KTtyZXR1cm4gdGhpc307QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyKXtpZighdGhpcy5wcm92aWRlcil7cmV0dXJuIHRoaXN9dmFyIHJ1bm5pbmdFdmVudD10aGlzLl9nZXRSdW5uaW5nRXZlbnQoZXZlbnROYW1lKTtydW5uaW5nRXZlbnQucmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIpO3RoaXMuX2NoZWNrUnVubmluZ0V2ZW50cyhydW5uaW5nRXZlbnQpO3JldHVybiB0aGlzfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGV2ZW50TmFtZSxsaXN0ZW5lcil7cmV0dXJuIHRoaXMub2ZmKGV2ZW50TmFtZSxsaXN0ZW5lcil9O3JldHVybiBCYXNlQ29udHJhY3R9KCk7ZXhwb3J0cy5CYXNlQ29udHJhY3Q9QmFzZUNvbnRyYWN0O3ZhciBDb250cmFjdD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhDb250cmFjdCxfc3VwZXIpO2Z1bmN0aW9uIENvbnRyYWN0KCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIENvbnRyYWN0fShCYXNlQ29udHJhY3QpO2V4cG9ydHMuQ29udHJhY3Q9Q29udHJhY3Q7dmFyIENvbnRyYWN0RmFjdG9yeT1mdW5jdGlvbigpe2Z1bmN0aW9uIENvbnRyYWN0RmFjdG9yeShjb250cmFjdEludGVyZmFjZSxieXRlY29kZSxzaWduZXIpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIGJ5dGVjb2RlSGV4PW51bGw7aWYodHlwZW9mIGJ5dGVjb2RlPT09InN0cmluZyIpe2J5dGVjb2RlSGV4PWJ5dGVjb2RlfWVsc2UgaWYobGliJDEuaXNCeXRlcyhieXRlY29kZSkpe2J5dGVjb2RlSGV4PWxpYiQxLmhleGxpZnkoYnl0ZWNvZGUpfWVsc2UgaWYoYnl0ZWNvZGUmJnR5cGVvZiBieXRlY29kZS5vYmplY3Q9PT0ic3RyaW5nIil7Ynl0ZWNvZGVIZXg9Ynl0ZWNvZGUub2JqZWN0fWVsc2V7Ynl0ZWNvZGVIZXg9IiEifWlmKGJ5dGVjb2RlSGV4LnN1YnN0cmluZygwLDIpIT09IjB4Iil7Ynl0ZWNvZGVIZXg9IjB4IitieXRlY29kZUhleH1pZighbGliJDEuaXNIZXhTdHJpbmcoYnl0ZWNvZGVIZXgpfHxieXRlY29kZUhleC5sZW5ndGglMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBieXRlY29kZSIsImJ5dGVjb2RlIixieXRlY29kZSl9aWYoc2lnbmVyJiYhbGliJGMuU2lnbmVyLmlzU2lnbmVyKHNpZ25lcikpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgc2lnbmVyIiwic2lnbmVyIixzaWduZXIpfWxpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsImJ5dGVjb2RlIixieXRlY29kZUhleCk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiaW50ZXJmYWNlIixsaWIkMy5nZXRTdGF0aWMoX25ld1RhcmdldCwiZ2V0SW50ZXJmYWNlIikoY29udHJhY3RJbnRlcmZhY2UpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJzaWduZXIiLHNpZ25lcnx8bnVsbCl9Q29udHJhY3RGYWN0b3J5LnByb3RvdHlwZS5nZXREZXBsb3lUcmFuc2FjdGlvbj1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19dmFyIHR4PXt9O2lmKGFyZ3MubGVuZ3RoPT09dGhpcy5pbnRlcmZhY2UuZGVwbG95LmlucHV0cy5sZW5ndGgrMSYmdHlwZW9mIGFyZ3NbYXJncy5sZW5ndGgtMV09PT0ib2JqZWN0Iil7dHg9bGliJDMuc2hhbGxvd0NvcHkoYXJncy5wb3AoKSk7Zm9yKHZhciBrZXkgaW4gdHgpe2lmKCFhbGxvd2VkVHJhbnNhY3Rpb25LZXlzW2tleV0pe3Rocm93IG5ldyBFcnJvcigidW5rbm93biB0cmFuc2FjdGlvbiBvdmVycmlkZSAiK2tleSl9fX1bImRhdGEiLCJmcm9tIiwidG8iXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodHhba2V5XT09bnVsbCl7cmV0dXJufWxvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3Qgb3ZlcnJpZGUgIitrZXksbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246a2V5fSl9KTtsb2dnZXIuY2hlY2tBcmd1bWVudENvdW50KGFyZ3MubGVuZ3RoLHRoaXMuaW50ZXJmYWNlLmRlcGxveS5pbnB1dHMubGVuZ3RoLCIgaW4gQ29udHJhY3QgY29uc3RydWN0b3IiKTt0eC5kYXRhPWxpYiQxLmhleGxpZnkobGliJDEuY29uY2F0KFt0aGlzLmJ5dGVjb2RlLHRoaXMuaW50ZXJmYWNlLmVuY29kZURlcGxveShhcmdzKV0pKTtyZXR1cm4gdHh9O0NvbnRyYWN0RmFjdG9yeS5wcm90b3R5cGUuZGVwbG95PWZ1bmN0aW9uKCl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0wO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaV09YXJndW1lbnRzW19pXX1yZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBvdmVycmlkZXMscGFyYW1zLHVuc2lnbmVkVHgsdHgsYWRkcmVzcyxjb250cmFjdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6b3ZlcnJpZGVzPXt9O2lmKGFyZ3MubGVuZ3RoPT09dGhpcy5pbnRlcmZhY2UuZGVwbG95LmlucHV0cy5sZW5ndGgrMSl7b3ZlcnJpZGVzPWFyZ3MucG9wKCl9bG9nZ2VyLmNoZWNrQXJndW1lbnRDb3VudChhcmdzLmxlbmd0aCx0aGlzLmludGVyZmFjZS5kZXBsb3kuaW5wdXRzLmxlbmd0aCwiIGluIENvbnRyYWN0IGNvbnN0cnVjdG9yIik7cmV0dXJuWzQscmVzb2x2ZUFkZHJlc3Nlcyh0aGlzLnNpZ25lcixhcmdzLHRoaXMuaW50ZXJmYWNlLmRlcGxveS5pbnB1dHMpXTtjYXNlIDE6cGFyYW1zPV9hLnNlbnQoKTtwYXJhbXMucHVzaChvdmVycmlkZXMpO3Vuc2lnbmVkVHg9dGhpcy5nZXREZXBsb3lUcmFuc2FjdGlvbi5hcHBseSh0aGlzLHBhcmFtcyk7cmV0dXJuWzQsdGhpcy5zaWduZXIuc2VuZFRyYW5zYWN0aW9uKHVuc2lnbmVkVHgpXTtjYXNlIDI6dHg9X2Euc2VudCgpO2FkZHJlc3M9bGliJDMuZ2V0U3RhdGljKHRoaXMuY29uc3RydWN0b3IsImdldENvbnRyYWN0QWRkcmVzcyIpKHR4KTtjb250cmFjdD1saWIkMy5nZXRTdGF0aWModGhpcy5jb25zdHJ1Y3RvciwiZ2V0Q29udHJhY3QiKShhZGRyZXNzLHRoaXMuaW50ZXJmYWNlLHRoaXMuc2lnbmVyKTtsaWIkMy5kZWZpbmVSZWFkT25seShjb250cmFjdCwiZGVwbG95VHJhbnNhY3Rpb24iLHR4KTtyZXR1cm5bMixjb250cmFjdF19fSl9KX07Q29udHJhY3RGYWN0b3J5LnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oYWRkcmVzcyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuZ2V0Q29udHJhY3QoYWRkcmVzcyx0aGlzLmludGVyZmFjZSx0aGlzLnNpZ25lcil9O0NvbnRyYWN0RmFjdG9yeS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbihzaWduZXIpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmludGVyZmFjZSx0aGlzLmJ5dGVjb2RlLHNpZ25lcil9O0NvbnRyYWN0RmFjdG9yeS5mcm9tU29saWRpdHk9ZnVuY3Rpb24oY29tcGlsZXJPdXRwdXQsc2lnbmVyKXtpZihjb21waWxlck91dHB1dD09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoIm1pc3NpbmcgY29tcGlsZXIgb3V0cHV0IixsaWIuTG9nZ2VyLmVycm9ycy5NSVNTSU5HX0FSR1VNRU5ULHthcmd1bWVudDoiY29tcGlsZXJPdXRwdXQifSl9aWYodHlwZW9mIGNvbXBpbGVyT3V0cHV0PT09InN0cmluZyIpe2NvbXBpbGVyT3V0cHV0PUpTT04ucGFyc2UoY29tcGlsZXJPdXRwdXQpfXZhciBhYmk9Y29tcGlsZXJPdXRwdXQuYWJpO3ZhciBieXRlY29kZT1udWxsO2lmKGNvbXBpbGVyT3V0cHV0LmJ5dGVjb2RlKXtieXRlY29kZT1jb21waWxlck91dHB1dC5ieXRlY29kZX1lbHNlIGlmKGNvbXBpbGVyT3V0cHV0LmV2bSYmY29tcGlsZXJPdXRwdXQuZXZtLmJ5dGVjb2RlKXtieXRlY29kZT1jb21waWxlck91dHB1dC5ldm0uYnl0ZWNvZGV9cmV0dXJuIG5ldyB0aGlzKGFiaSxieXRlY29kZSxzaWduZXIpfTtDb250cmFjdEZhY3RvcnkuZ2V0SW50ZXJmYWNlPWZ1bmN0aW9uKGNvbnRyYWN0SW50ZXJmYWNlKXtyZXR1cm4gQ29udHJhY3QuZ2V0SW50ZXJmYWNlKGNvbnRyYWN0SW50ZXJmYWNlKX07Q29udHJhY3RGYWN0b3J5LmdldENvbnRyYWN0QWRkcmVzcz1mdW5jdGlvbih0eCl7cmV0dXJuIGxpYiQ2LmdldENvbnRyYWN0QWRkcmVzcyh0eCl9O0NvbnRyYWN0RmFjdG9yeS5nZXRDb250cmFjdD1mdW5jdGlvbihhZGRyZXNzLGNvbnRyYWN0SW50ZXJmYWNlLHNpZ25lcil7cmV0dXJuIG5ldyBDb250cmFjdChhZGRyZXNzLGNvbnRyYWN0SW50ZXJmYWNlLHNpZ25lcil9O3JldHVybiBDb250cmFjdEZhY3Rvcnl9KCk7ZXhwb3J0cy5Db250cmFjdEZhY3Rvcnk9Q29udHJhY3RGYWN0b3J5fSk7dmFyIGluZGV4JGY9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGYpO3ZhciBsaWIkZz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQmFzZTU4PWV4cG9ydHMuQmFzZTMyPWV4cG9ydHMuQmFzZVg9dm9pZCAwO3ZhciBCYXNlWD1mdW5jdGlvbigpe2Z1bmN0aW9uIEJhc2VYKGFscGhhYmV0KXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJhbHBoYWJldCIsYWxwaGFiZXQpO2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsImJhc2UiLGFscGhhYmV0Lmxlbmd0aCk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX2FscGhhYmV0TWFwIix7fSk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX2xlYWRlciIsYWxwaGFiZXQuY2hhckF0KDApKTtmb3IodmFyIGk9MDtpPGFscGhhYmV0Lmxlbmd0aDtpKyspe3RoaXMuX2FscGhhYmV0TWFwW2FscGhhYmV0LmNoYXJBdChpKV09aX19QmFzZVgucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih2YWx1ZSl7dmFyIHNvdXJjZT1saWIkMS5hcnJheWlmeSh2YWx1ZSk7aWYoc291cmNlLmxlbmd0aD09PTApe3JldHVybiIifXZhciBkaWdpdHM9WzBdO2Zvcih2YXIgaT0wO2k8c291cmNlLmxlbmd0aDsrK2kpe3ZhciBjYXJyeT1zb3VyY2VbaV07Zm9yKHZhciBqPTA7ajxkaWdpdHMubGVuZ3RoOysrail7Y2FycnkrPWRpZ2l0c1tqXTw8ODtkaWdpdHNbal09Y2FycnkldGhpcy5iYXNlO2NhcnJ5PWNhcnJ5L3RoaXMuYmFzZXwwfXdoaWxlKGNhcnJ5PjApe2RpZ2l0cy5wdXNoKGNhcnJ5JXRoaXMuYmFzZSk7Y2Fycnk9Y2FycnkvdGhpcy5iYXNlfDB9fXZhciBzdHJpbmc9IiI7Zm9yKHZhciBrPTA7c291cmNlW2tdPT09MCYmazxzb3VyY2UubGVuZ3RoLTE7KytrKXtzdHJpbmcrPXRoaXMuX2xlYWRlcn1mb3IodmFyIHE9ZGlnaXRzLmxlbmd0aC0xO3E+PTA7LS1xKXtzdHJpbmcrPXRoaXMuYWxwaGFiZXRbZGlnaXRzW3FdXX1yZXR1cm4gc3RyaW5nfTtCYXNlWC5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgU3RyaW5nIil9dmFyIGJ5dGVzPVtdO2lmKHZhbHVlLmxlbmd0aD09PTApe3JldHVybiBuZXcgVWludDhBcnJheShieXRlcyl9Ynl0ZXMucHVzaCgwKTtmb3IodmFyIGk9MDtpPHZhbHVlLmxlbmd0aDtpKyspe3ZhciBieXRlPXRoaXMuX2FscGhhYmV0TWFwW3ZhbHVlW2ldXTtpZihieXRlPT09dW5kZWZpbmVkKXt0aHJvdyBuZXcgRXJyb3IoIk5vbi1iYXNlIit0aGlzLmJhc2UrIiBjaGFyYWN0ZXIiKX12YXIgY2Fycnk9Ynl0ZTtmb3IodmFyIGo9MDtqPGJ5dGVzLmxlbmd0aDsrK2ope2NhcnJ5Kz1ieXRlc1tqXSp0aGlzLmJhc2U7Ynl0ZXNbal09Y2FycnkmMjU1O2NhcnJ5Pj49OH13aGlsZShjYXJyeT4wKXtieXRlcy5wdXNoKGNhcnJ5JjI1NSk7Y2Fycnk+Pj04fX1mb3IodmFyIGs9MDt2YWx1ZVtrXT09PXRoaXMuX2xlYWRlciYmazx2YWx1ZS5sZW5ndGgtMTsrK2spe2J5dGVzLnB1c2goMCl9cmV0dXJuIGxpYiQxLmFycmF5aWZ5KG5ldyBVaW50OEFycmF5KGJ5dGVzLnJldmVyc2UoKSkpfTtyZXR1cm4gQmFzZVh9KCk7ZXhwb3J0cy5CYXNlWD1CYXNlWDt2YXIgQmFzZTMyPW5ldyBCYXNlWCgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoyMzQ1NjciKTtleHBvcnRzLkJhc2UzMj1CYXNlMzI7dmFyIEJhc2U1OD1uZXcgQmFzZVgoIjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoiKTtleHBvcnRzLkJhc2U1OD1CYXNlNTh9KTt2YXIgaW5kZXgkZz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkZyk7dmFyIHR5cGVzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5TdXBwb3J0ZWRBbGdvcml0aG09dm9pZCAwO3ZhciBTdXBwb3J0ZWRBbGdvcml0aG07KGZ1bmN0aW9uKFN1cHBvcnRlZEFsZ29yaXRobSl7U3VwcG9ydGVkQWxnb3JpdGhtWyJzaGEyNTYiXT0ic2hhMjU2IjtTdXBwb3J0ZWRBbGdvcml0aG1bInNoYTUxMiJdPSJzaGE1MTIifSkoU3VwcG9ydGVkQWxnb3JpdGhtPWV4cG9ydHMuU3VwcG9ydGVkQWxnb3JpdGhtfHwoZXhwb3J0cy5TdXBwb3J0ZWRBbGdvcml0aG09e30pKX0pO3ZhciB0eXBlcyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHR5cGVzKTt2YXIgX3ZlcnNpb24kcz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJzaGEyLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiR0PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJHMpO3ZhciBicm93c2VyU2hhMj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2ltcG9ydERlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24obW9kKXtyZXR1cm4gbW9kJiZtb2QuX19lc01vZHVsZT9tb2Q6e2RlZmF1bHQ6bW9kfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5jb21wdXRlSG1hYz1leHBvcnRzLnNoYTUxMj1leHBvcnRzLnNoYTI1Nj1leHBvcnRzLnJpcGVtZDE2MD12b2lkIDA7dmFyIGhhc2hfanNfMT1fX2ltcG9ydERlZmF1bHQoaGFzaF8xKTt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJHMudmVyc2lvbik7ZnVuY3Rpb24gcmlwZW1kMTYwKGRhdGEpe3JldHVybiIweCIraGFzaF9qc18xLmRlZmF1bHQucmlwZW1kMTYwKCkudXBkYXRlKGxpYiQxLmFycmF5aWZ5KGRhdGEpKS5kaWdlc3QoImhleCIpfWV4cG9ydHMucmlwZW1kMTYwPXJpcGVtZDE2MDtmdW5jdGlvbiBzaGEyNTYoZGF0YSl7cmV0dXJuIjB4IitoYXNoX2pzXzEuZGVmYXVsdC5zaGEyNTYoKS51cGRhdGUobGliJDEuYXJyYXlpZnkoZGF0YSkpLmRpZ2VzdCgiaGV4Iil9ZXhwb3J0cy5zaGEyNTY9c2hhMjU2O2Z1bmN0aW9uIHNoYTUxMihkYXRhKXtyZXR1cm4iMHgiK2hhc2hfanNfMS5kZWZhdWx0LnNoYTUxMigpLnVwZGF0ZShsaWIkMS5hcnJheWlmeShkYXRhKSkuZGlnZXN0KCJoZXgiKX1leHBvcnRzLnNoYTUxMj1zaGE1MTI7ZnVuY3Rpb24gY29tcHV0ZUhtYWMoYWxnb3JpdGhtLGtleSxkYXRhKXtpZighdHlwZXMuU3VwcG9ydGVkQWxnb3JpdGhtW2FsZ29yaXRobV0pe2xvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCBhbGdvcml0aG0gIithbGdvcml0aG0sbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImhtYWMiLGFsZ29yaXRobTphbGdvcml0aG19KX1yZXR1cm4iMHgiK2hhc2hfanNfMS5kZWZhdWx0LmhtYWMoaGFzaF9qc18xLmRlZmF1bHRbYWxnb3JpdGhtXSxsaWIkMS5hcnJheWlmeShrZXkpKS51cGRhdGUobGliJDEuYXJyYXlpZnkoZGF0YSkpLmRpZ2VzdCgiaGV4Iil9ZXhwb3J0cy5jb21wdXRlSG1hYz1jb21wdXRlSG1hY30pO3ZhciBicm93c2VyU2hhMiQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJyb3dzZXJTaGEyKTt2YXIgbGliJGg9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlN1cHBvcnRlZEFsZ29yaXRobT1leHBvcnRzLnNoYTUxMj1leHBvcnRzLnNoYTI1Nj1leHBvcnRzLnJpcGVtZDE2MD1leHBvcnRzLmNvbXB1dGVIbWFjPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY29tcHV0ZUhtYWMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJTaGEyLmNvbXB1dGVIbWFjfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJyaXBlbWQxNjAiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJTaGEyLnJpcGVtZDE2MH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic2hhMjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyU2hhMi5zaGEyNTZ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNoYTUxMiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYnJvd3NlclNoYTIuc2hhNTEyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJTdXBwb3J0ZWRBbGdvcml0aG0iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVzLlN1cHBvcnRlZEFsZ29yaXRobX19KX0pO3ZhciBpbmRleCRoPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRoKTt2YXIgYnJvd3NlclBia2RmMj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMucGJrZGYyPXZvaWQgMDtmdW5jdGlvbiBwYmtkZjIocGFzc3dvcmQsc2FsdCxpdGVyYXRpb25zLGtleWxlbixoYXNoQWxnb3JpdGhtKXtwYXNzd29yZD1saWIkMS5hcnJheWlmeShwYXNzd29yZCk7c2FsdD1saWIkMS5hcnJheWlmeShzYWx0KTt2YXIgaExlbjt2YXIgbD0xO3ZhciBESz1uZXcgVWludDhBcnJheShrZXlsZW4pO3ZhciBibG9jazE9bmV3IFVpbnQ4QXJyYXkoc2FsdC5sZW5ndGgrNCk7YmxvY2sxLnNldChzYWx0KTt2YXIgcjt2YXIgVDtmb3IodmFyIGk9MTtpPD1sO2krKyl7YmxvY2sxW3NhbHQubGVuZ3RoXT1pPj4yNCYyNTU7YmxvY2sxW3NhbHQubGVuZ3RoKzFdPWk+PjE2JjI1NTtibG9jazFbc2FsdC5sZW5ndGgrMl09aT4+OCYyNTU7YmxvY2sxW3NhbHQubGVuZ3RoKzNdPWkmMjU1O3ZhciBVPWxpYiQxLmFycmF5aWZ5KGxpYiRoLmNvbXB1dGVIbWFjKGhhc2hBbGdvcml0aG0scGFzc3dvcmQsYmxvY2sxKSk7aWYoIWhMZW4pe2hMZW49VS5sZW5ndGg7VD1uZXcgVWludDhBcnJheShoTGVuKTtsPU1hdGguY2VpbChrZXlsZW4vaExlbik7cj1rZXlsZW4tKGwtMSkqaExlbn1ULnNldChVKTtmb3IodmFyIGo9MTtqPGl0ZXJhdGlvbnM7aisrKXtVPWxpYiQxLmFycmF5aWZ5KGxpYiRoLmNvbXB1dGVIbWFjKGhhc2hBbGdvcml0aG0scGFzc3dvcmQsVSkpO2Zvcih2YXIgaz0wO2s8aExlbjtrKyspVFtrXV49VVtrXX12YXIgZGVzdFBvcz0oaS0xKSpoTGVuO3ZhciBsZW49aT09PWw/cjpoTGVuO0RLLnNldChsaWIkMS5hcnJheWlmeShUKS5zbGljZSgwLGxlbiksZGVzdFBvcyl9cmV0dXJuIGxpYiQxLmhleGxpZnkoREspfWV4cG9ydHMucGJrZGYyPXBia2RmMn0pO3ZhciBicm93c2VyUGJrZGYyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnJvd3NlclBia2RmMik7dmFyIGxpYiRpPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5wYmtkZjI9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwYmtkZjIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJQYmtkZjIucGJrZGYyfX0pfSk7dmFyIGluZGV4JGk9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGkpO3ZhciBfdmVyc2lvbiR1PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249IndvcmRsaXN0cy81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kdj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiR1KTt2YXIgd29yZGxpc3Q9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLldvcmRsaXN0PWV4cG9ydHMubG9nZ2VyPXZvaWQgMDt2YXIgZXhwb3J0V29yZGxpc3Q9ZmFsc2U7ZXhwb3J0cy5sb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kdS52ZXJzaW9uKTt2YXIgV29yZGxpc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBXb3JkbGlzdChsb2NhbGUpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7ZXhwb3J0cy5sb2dnZXIuY2hlY2tBYnN0cmFjdChfbmV3VGFyZ2V0LFdvcmRsaXN0KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJsb2NhbGUiLGxvY2FsZSl9V29yZGxpc3QucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKG1uZW1vbmljKXtyZXR1cm4gbW5lbW9uaWMudG9Mb3dlckNhc2UoKS5zcGxpdCgvICsvZyl9O1dvcmRsaXN0LnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHdvcmRzKXtyZXR1cm4gd29yZHMuam9pbigiICIpfTtXb3JkbGlzdC5jaGVjaz1mdW5jdGlvbih3b3JkbGlzdCl7dmFyIHdvcmRzPVtdO2Zvcih2YXIgaT0wO2k8MjA0ODtpKyspe3ZhciB3b3JkPXdvcmRsaXN0LmdldFdvcmQoaSk7aWYoaSE9PXdvcmRsaXN0LmdldFdvcmRJbmRleCh3b3JkKSl7cmV0dXJuIjB4In13b3Jkcy5wdXNoKHdvcmQpfXJldHVybiBsaWIkOS5pZCh3b3Jkcy5qb2luKCJcbiIpKyJcbiIpfTtXb3JkbGlzdC5yZWdpc3Rlcj1mdW5jdGlvbihsYW5nLG5hbWUpe2lmKCFuYW1lKXtuYW1lPWxhbmcubG9jYWxlfWlmKGV4cG9ydFdvcmRsaXN0KXt0cnl7dmFyIGFueUdsb2JhbD13aW5kb3c7aWYoYW55R2xvYmFsLl9ldGhlcnMmJmFueUdsb2JhbC5fZXRoZXJzLndvcmRsaXN0cyl7aWYoIWFueUdsb2JhbC5fZXRoZXJzLndvcmRsaXN0c1tuYW1lXSl7bGliJDMuZGVmaW5lUmVhZE9ubHkoYW55R2xvYmFsLl9ldGhlcnMud29yZGxpc3RzLG5hbWUsbGFuZyl9fX1jYXRjaChlcnJvcil7fX19O3JldHVybiBXb3JkbGlzdH0oKTtleHBvcnRzLldvcmRsaXN0PVdvcmRsaXN0fSk7dmFyIHdvcmRsaXN0JDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMod29yZGxpc3QpO3ZhciBsYW5nQ3pfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmxhbmdDej12b2lkIDA7dmFyIHdvcmRzPSJBYmRpa2FjZUFiZWNlZGFBZHJlc2FBZ3Jlc2VBa2NlQWt0b3ZrYUFsZWpBbGtvaG9sQW1wdXRhY2VBbmFuYXNBbmR1bGthQW5la2RvdGFBbmtldGFBbnRpa2FBbnVsb3ZhdEFyY2hhQXJvZ2FuY2VBc2ZhbHRBc2lzdGVudEFzcGlyYWNlQXN0bWFBc3Ryb25vbUF0bGFzQXRsZXRpa2FBdG9sQXV0b2J1c0F6eWxCYWJrYUJhY2hvckJhY2lsQmFjdWxrYUJhZGF0ZWxCYWdldGFCYWdyQmFobm9CYWt0ZXJpZUJhbGFkYUJhbGV0a2FCYWxrb25CYWxvbmVrQmFsdmFuQmFsemFCYW1idXNCYW5rb21hdEJhcmJhckJhcmV0QmFybWFuQmFyb2tvQmFydmFCYXRlcmthQmF0b2hCYXZsbmFCYXphbGthQmF6aWxpa2FCYXp1a2FCZWRuYUJlcmFuQmVzZWRhQmVzdGllQmV0b25CZXppbmthQmV6bW9jQmV6dGFrQmljeWtsQmlkbG9CaWZ0ZWtCaWtpbnlCaWxhbmNlQmlvZ3JhZkJpb2xvZ0JpdHZhQml6b25CbGFob2J5dEJsYXRvdWNoQmxlY2hhQmxlZHVsZUJsZXNrQmxpa2F0Qmxpem5hQmxva292YXRCbG91ZGl0Qmx1ZEJvYmVrQm9ickJvZGxpbmFCb2Rub3V0Qm9oYXRvc3RCb2prb3RCb2pvdmF0Qm9rb3J5c0JvbGVzdEJvcmVjQm9yb3ZpY2VCb3RhQm91YmVsQm91Y2hhdEJvdWRhQm91bGVCb3VyYXRCb3hlckJyYWRhdmthQnJhbWJvcmFCcmFua2FCcmF0ckJyZXB0YUJyaWtldGFCcmtvQnJsb2hCcm9uekJyb3NrZXZCcnVuZXRrYUJydXNpbmthQnJ6ZGFCcnp5QnVibGluYUJ1Ym5vdmF0QnVjaHRhQnVkaXRlbEJ1ZGthQnVkb3ZhQnVmZXRCdWphcm9zdEJ1a3ZpY2VCdWxkb2tCdWx2YUJ1bmRhQnVua3JCdXJ6YUJ1dGlrQnV2b2xCdXpvbGFCeWRsZXRCeWxpbmFCeXRvdmthQnp1a290Q2FwYXJ0Q2FyZXZuYUNlZHJDZWR1bGVDZWpjaENlam5DZWxhQ2VsZXJDZWxrZW1DZWxuaWNlQ2VuaW5hQ2Vubm9zdENlbm92a2FDZW50cnVtQ2Vuem9yQ2VzdG9waXNDZXRrYUNoYWx1cGFDaGFwYWRsb0NoYXJpdGFDaGF0YUNoZWNodGF0Q2hlbWllQ2hpY2hvdENoaXJ1cmdDaGxhZENobGViYUNobHViaXRDaG1lbENobXVyYUNob2JvdENob2Nob2xDaG9kYmFDaG9sZXJhQ2hvbW91dENob3BpdENob3JvYmFDaG92Q2hyYXBvdENocmxpdENocnRDaHJ1cENodGl2b3N0Q2h1ZGluYUNodXRuYXRDaHZhdENodmlsa2FDaHZvc3RDaHliYUNoeXN0YXRDaHl0aXRDaWJ1bGVDaWdhcmV0YUNpaGVsbmFDaWhsYUNpbmtvdENpcmt1c0Npc3Rlcm5hQ2l0YWNlQ2l0cnVzQ2l6aW5lY0Npem9zdENsb25hQ29rb2xpdkNvdXZhdEN0aXRlbEN0bm9zdEN1ZG5vc3RDdWtldGFDdWtyQ3Vwb3RDdmFrbm91dEN2YWxDdmlrQ3Zya290Q3lrbGlzdGFEYWxla29EYXJlYmFEYXRlbERhdHVtRGNlcmFEZWJhdGFEZWNob3ZrYURlY2liZWxEZWZpY2l0RGVmbGFjZURla2xEZWtyZXREZW1va3JhdERlcHJlc2VEZXJieURlc2thRGV0ZWt0aXZEaWtvYnJhekRpa3RvdmF0RGlvZGFEaXBsb21EaXNrRGlzcGxlakRpdmFkbG9EaXZvY2hEbGFoYURsb3Vob0RsdWhvcGlzRG5lc0RvYnJvRG9ieXRla0RvY2VudERvY2h1dGl0RG9kbmVzRG9obGVkRG9ob2RhRG9ocmFEb2plbURvam5pY2VEb2tsYWREb2tvbGFEb2t0b3JEb2t1bWVudERvbGFyRG9sZXZhRG9saW5hRG9tYURvbWluYW50RG9tbHV2aXREb21vdkRvbnV0aXREb3BhZERvcGlzRG9wbG5pdERvcG9zdWREb3Byb3ZvZERvcHVzdGl0RG9yYXppdERvcm9zdERvcnREb3NhaERvc2xvdkRvc3RhdGVrRG9zdWREb3N5dGFEb3RhekRvdGVrRG90a25vdXREb3VmYXREb3V0bmF0RG92b3pjZURvemFkdURvem5hdERvem9yY2VEcmFob3RhRHJha0RyYW1hdGlrRHJhdmVjRHJhemVEcmRvbERyb2Jub3N0RHJvZ2VyaWVEcm96ZERyc25vc3REcnRpdERyem9zdER1YmVuRHVjaG92bm9EdWRla0R1aGFEdWhvdmthRHVzaXREdXNub0R1dG9zdER2b2ppY2VEdm9yZWNEeW5hbWl0RWtvbG9nRWtvbm9taWVFbGVrdHJvbkVsaXBzYUVtYWlsRW1pc2VFbW9jZUVtcGF0aWVFcGl6b2RhRXBvY2hhRXBvcGVqRXBvc0VzZWpFc2VuY2VFc2tvcnRhRXNreW1vRXRpa2V0YUV1Zm9yaWVFdm9sdWNlRXhla3VjZUV4a3VyemVFeHBlZGljZUV4cGxvemVFeHBvcnRFeHRyYWt0RmFja2FGYWpma2FGYWt1bHRhRmFuYXRpa0ZhbnRhemllRmFybWFjaWVGYXZvcml0RmF6b2xlRmVkZXJhY2VGZWpldG9uRmVua2FGaWFsa2FGaWd1cmFudEZpbG96b2ZGaWx0ckZpbmFuY2VGaW50YUZpeGFjZUZqb3JkRmxhbmVsRmxpcnRGbG90aWxhRm9uZEZvc2ZvckZvdGJhbEZvdGthRm90b25GcmFrY2VGcmVza2FGcm9udGFGdWthckZ1bmtjZUZ5emlrYUdhbGVqZUdhcmFudEdlbmV0aWthR2VvbG9nR2lsb3RpbmFHbGF6dXJhR2xlanRHb2xlbUdvbGZpc3RhR290aWthR3JhZkdyYW1vZm9uR3JhbnVsZUdyZXBHcmlsR3JvZ0dyb3Rlc2thR3VtYUhhZGljZUhhZHJIYWxhSGFsZW5rYUhhbmJhSGFub3Bpc0hhcmZhSGFycHVuYUhhdnJhbkhlYmtvc3RIZWprYWxIZWpub0hlanRtYW5IZWt0YXJIZWxtYUhlbWF0b21IZXJlY0hlcm5hSGVzbG9IZXpreUhpc3RvcmlrSGxhZG92a2FIbGFzaXZreUhsYXZhSGxlZGF0SGxlbkhsb2RhdmVjSGxvaEhsb3Vwb3N0SGx0YXRIbHViaW5hSGx1Y2hvdGFIbWF0SG1vdGFIbXl6SG5pc0hub2ppdm9Ibm91dEhvYmxpbmFIb2JvakhvY2hIb2RpbnlIb2RsYXRIb2Rub3RhSG9kb3ZhdEhvam5vc3RIb2tlakhvbGlua2FIb2xrYUhvbHViSG9tb2xlSG9uaXRiYUhvbm9yYWNlSG9yYWxIb3JkYUhvcml6b250SG9ya29Ib3JsaXZlY0hvcm1vbkhvcm5pbmFIb3Jvc2tvcEhvcnN0dm9Ib3Nwb2RhSG9zdGluYUhvdG92b3N0SG91YmFIb3VmSG91cGF0SG91c2thSG92b3JIcmFkYmFIcmFuaWNlSHJhdm9zdEhyYXpkYUhyYm9sZWtIcmRpbmFIcmRsb0hyZG9zdEhybmVrSHJvYmthSHJvbWFkYUhyb3RIcm91ZGFIcm96ZW5IcnN0a2FIcnVib3N0SHJ5emF0SHViZW5vc3RIdWJub3V0SHVkYmFIdWtvdEh1bXJIdXNpdGFIdXN0b3RhSHZvemRIeWJub3N0SHlkcmFudEh5Z2llbmFIeW1uYUh5c3RlcmlrSWR5bGthSWhuZWRJa29uYUlsdXplSW11bml0YUluZmVrY2VJbmZsYWNlSW5rYXNvSW5vdmFjZUluc3Bla2NlSW50ZXJuZXRJbnZhbGlkYUludmVzdG9ySW56ZXJjZUlyb25pZUphYmxrb0phY2h0YUphaG9kYUpha21pbGVKYWtvc3RKYWxvdmVjSmFudGFySmFybWFya0phcm9KYXNhbkphc25vSmF0a2FKYXZvckphenlrSmVkaW5lY0plZGxlSmVkbmF0ZWxKZWhsYW5KZWtvdEplbGVuSmVsaXRvSmVtbm9zdEplbm9tSmVwaWNlSmVzZXRlckpldml0SmV6ZGVjSmV6ZXJvSmluYWtKaW5keUppbm9jaEppc2tyYUppc3RvdGFKaXRybmljZUppenZhSm1lbm92YXRKb2d1cnRKdXJ0YUthYmFyZXRLYWJlbEthYmluZXRLYWNobmFLYWRldEthZGlkbG9LYWhhbkthamFrS2FqdXRhS2FrYW9LYWt0dXNLYWxhbWl0YUthbGhvdHlLYWxpYnJLYWxub3N0S2FtZXJhS2Fta29saXZLYW1uYUthbmliYWxLYW5vZUthbnRvckthcGFsaW5hS2FwZWxhS2FwaXRvbGFLYXBrYUthcGxlS2Fwb3RhS2FwckthcHVzdGFLYXB5YmFyYUthcmFtZWxLYXJvdGthS2FydG9uS2FzYUthdGFsb2dLYXRlZHJhS2F1Y2VLYXV6YUthdmFsZWNLYXphamthS2F6ZXRhS2F6aXZvc3RLZGVrb2xpdktkZXNpS2VkbHViZW5LZW1wS2VyYW1pa2FLaW5vS2xhY2VrS2xhZGl2b0tsYW1LbGFwb3RLbGFzaWthS2xhdW5LbGVjS2xlbmJhS2xlcGF0S2xlc25vdXRLbGlkS2xpbWFLbGlzbmFLbG9ib3VrS2xva2FuS2xvcGFLbG91YktsdWJvdm5hS2x1c2F0S2x1emtvc3RLbWVuS21pdGF0S21vdHJLbmloYUtub3RLb2FsaWNlS29iZXJlY0tvYmthS29ibGloYUtvYnlsYUtvY291cktvaG91dEtvamVuZWNLb2tvc0tva3RlamxLb2xhcHNLb2xlZGFLb2xpemVLb2xvS29tYW5kb0tvbWV0YUtvbWlrS29tbmF0YUtvbW9yYUtvbXBhc0tvbXVuaXRhS29uYXRLb25jZXB0S29uZGljZUtvbmVjS29uZmVzZUtvbmdyZXNLb25pbmFLb25rdXJzS29udGFrdEtvbnplcnZhS29wYW5lY0tvcGllS29wbm91dEtvcHJvdmthS29yYmVsS29yZWt0b3JLb3JtaWRsb0tvcm9wdGV2S29ycHVzS29ydW5hS29yeXRvS29yemV0S29zYXRlY0tvc3RrYUtvdGVsS290bGV0YUtvdG91bEtvdWthdEtvdXBlbG5hS291c2VrS291emxvS292Ym9qS296YUtvem9yb2hLcmFiaWNlS3JhY2hLcmFqaW5hS3JhbG92YXRLcmFzb3Bpc0tyYXZhdGFLcmVkaXRLcmVqY2FyS3Jlc2JhS3JldmV0YUtyaWtldEtyaXRpa0tyaXplS3JrYXZlY0tybWVsZWNLcm1pdm9Lcm9jYW5Lcm9rS3JvbmlrYUtyb3BpdEtyb3VwYUtyb3ZrYUtydGVrS3J1aGFkbG9LcnVwaWNlS3J1dG9zdEtydmlua2FLcnljaGxlS3J5cHRhS3J5c3RhbEtyeXRLdWRsYW5rYUt1ZnJLdWpub3N0S3VrbGFLdWxhamRhS3VsaWNoS3Vsa2FLdWxvbWV0S3VsdHVyYUt1bmFLdXBvZGl2dUt1cnRLdXJ6b3JLdXRpbEt2YWxpdGFLdmFzaW5rYUt2ZXN0b3JLeW5vbG9nS3lzZWxpbmFLeXRhcmFLeXRpY2VLeXRrYUt5dG92ZWNLeXZhZGxvTGFicmFkb3JMYWNodGFuTGFkbm9zdExhaWtMYWtvbWVjTGFtZWxhTGFtcGFMYW5vdmthTGFzaWNlTGFzb0xhc3R1cmFMYXRpbmthTGF2aW5hTGVia2FMZWNrZHlMZWRlbkxlZG5pY2VMZWRvdmthTGVkdmluYUxlZ2VuZGFMZWdpZUxlZ3JhY2VMZWhjZUxlaGtvc3RMZWhub3V0TGVrdHZhckxlbm9jaG9kTGVudGlsa2FMZXBlbmthTGVwaWRsb0xldGFkbG9MZXRlY0xldG1vTGV0b2tydWhMZXZoYXJ0TGV2aXRhY2VMZXZvYm9rTGlicmFMaWNob3RrYUxpZG9qZWRMaWRza29zdExpaG92aW5hTGlqYXZlY0xpbGVrTGltZXRrYUxpbmllTGlua2FMaW5vbGV1bUxpc3RvcGFkTGl0aW5hTGl0b3ZhdExvYmlzdGFMb2Rpdm9kTG9naWthTG9nb3BlZExva2FsaXRhTG9rZXRMb21jb3ZhdExvcGF0YUxvcHVjaExvcmRMb3Nvc0xvdHJMb3VkYWxMb3VoTG91a2FMb3Vza2F0TG92ZWNMc3Rpdm9zdEx1Y2VybmFMdWNpZmVyTHVtcEx1c2tMdXN0cmFjZUx2aWNlTHlyYUx5cmlrYUx5c2luYU1hZGFtTWFkbG9NYWdpc3RyTWFoYWdvbk1hamV0ZWtNYWppdGVsTWFqb3JpdGFNYWtha01ha292aWNlTWFrcmVsYU1hbGJhTWFsaW5hTWFsb3ZhdE1hbHZpY2VNYW1pbmthTWFuZGxlTWFua29NYXJub3N0TWFzYWtyTWFza290TWFzb3B1c3RNYXRpY2VNYXRyaWthTWF0dXJpdGFNYXphbmVjTWF6aXZvTWF6bGl0TWF6dXJrYU1kbG9iYU1lY2hhbmlrTWVkaXRhY2VNZWRvdmluYU1lbGFzYU1lbG91bk1lbnRvbGthTWV0bGFNZXRvZGFNZXRyTWV6ZXJhTWlncmFjZU1paG5vdXRNaWh1bGVNaWtpbmFNaWtyb2Zvbk1pbGVuZWNNaWxpbWV0ck1pbG9zdE1pbWlrYU1pbmNvdm5hTWluaWJhck1pbm9tZXRNaW51bG9zdE1pc2thTWlzdHJNaXhvdmF0TWxhZG9zdE1saGFNbGhvdmluYU1sb2tNbHNhdE1sdXZpdE1uaWNoTW5vaGVtTW9iaWxNb2Nub3N0TW9kZWxrYU1vZGxpdGJhTW9oeWxhTW9rcm9Nb2xla3VsYU1vbWVudGthTW9uYXJjaGFNb25va2xNb25zdHJ1bU1vbnRvdmF0TW9uenVuTW9zYXpNb3NreXRNb3N0TW90aXZhY2VNb3RvcmthTW90eWthTW91Y2hhTW91ZHJvc3RNb3phaWthTW96ZWtNb3pvbE1yYW1vck1yYXZlbmVjTXJrZXZNcnR2b2xhTXJ6ZXRNcnp1dG9zdE1zdGl0ZWxNdWRyY011Zmxvbk11bGF0TXVtaWVNdW5pY2VNdXNldE11dGFjZU11emV1bU11emlrYW50TXlzbGl2ZWNNemRhTmFib3VyYXROYWNoeXRhdE5hZGFjZU5hZGJ5dGVrTmFkaG96TmFkb2Jyb05hZHBpc05haGxhc05haG5hdE5haG9kaWxlTmFocmFkaXROYWl2aXRhTmFqZWRub3VOYWppc3RvTmFqbW91dE5ha2xvbml0TmFrb25lY05ha3JtaXROYWxldm9OYW1hemF0TmFtbHV2aXROYW5vbWV0ck5hb2tvTmFvcGFrTmFvc3Ryb05hcGFkYXROYXBldm5vTmFwbG5pdE5hcG5vdXROYXBvc2xlZE5hcHJvc3RvTmFyb2RpdE5hcnVieU5hcnljaGxvTmFzYWRpdE5hc2VrYXROYXNsZXBvTmFzdGF0TmF0b2xpa05hdmVuZWtOYXZyY2hOYXZ6ZG9yeU5henZhdE5lYmVOZWNoYXROZWNreU5lZGFsZWtvTmVkYmF0TmVkdWhOZWdhY2VOZWhldE5laG9kYU5lamVuTmVqcHJ2ZU5la2xpZE5lbGlib3N0TmVtaWxvc3ROZW1vY05lb2Nob3RhTmVvbmthTmVwb2tvak5lcm9zdE5lcnZOZXNteXNsTmVzb3VsYWROZXR2b3JOZXVyb25OZXZpbmFOZXp2eWtsZU5pY290YU5pamFrTmlrYW1OaWtkeU5pa2xOaWt0ZXJha05pdHJvTm9jbGVoTm9oYXZpY2VOb21pbmFjZU5vcmFOb3Jla05vc2l0ZWxOb3Nub3N0Tm91emVOb3ZpbnlOb3ZvdGFOb3pkcmFOdWRhTnVkbGVOdWdldE51dGl0TnV0bm9zdE51dHJpZU55bWZhT2JhbE9iYXJ2aXRPYmF2YU9iZGl2T2JlY09iZWhuYXRPYmVqbW91dE9iZXppdGFPYmhham9iYU9iaWxuaWNlT2JqYXNuaXRPYmpla3RPYmtsb3BpdE9ibGFzdE9ibGVrT2JsaWJhT2Jsb2hhT2JsdWRhT2Jub3NPYm9oYXRpdE9ib2pla09ib3V0T2JyYXplY09icm5hT2JydWJhT2JyeXNPYnNhaE9ic2x1aGFPYnN0YXJhdE9idXZPYnZhek9idmluaXRPYnZvZE9idnlrbGVPYnl2YXRlbE9iem9yT2Nhc09jZWxPY2VuaXRPY2hsYWRpdE9jaG90YU9jaHJhbmFPY2l0bm91dE9kYm9qT2RieXRPZGNob2RPZGNpeml0T2RlYnJhdE9kZXNsYXRPZGV2emRhdE9kZXp2YU9kaGFkY2VPZGhvZGl0T2RqZXRPZGppbnVkT2RrYXpPZGtvdXBpdE9kbGl2T2RsdWthT2RtbGthT2RvbG5vc3RPZHBhZE9kcGlzT2RwbG91dE9kcG9yT2RwdXN0aXRPZHB5a2F0T2RyYXprYU9kc291ZGl0T2RzdHVwT2RzdW5PZHRva09kdHVkT2R2YWhhT2R2ZXRhT2R2b2xhdE9kdnJhY2V0T2R6bmFrT2ZpbmFPZnNhamRPaGxhc09obmlza29PaHJhZGFPaHJveml0T2hyeXpla09rYXBPa2VuaWNlT2tsaWthT2tub09rb3V6bGl0T2tvdnlPa3Jhc2FPa3Jlc09rcnNla09rcnVoT2t1cGFudE9rdXJrYU9rdXNpdE9sZWpuaW5hT2xpem92YXRPbWFrT21lbGV0YU9tZXppdE9tbGFkaW5hT21sb3V2YXRPbWx1dmFPbXlsT25laGR5T3Bha292YXRPcGFzZWtPcGVyYWNlT3BpY2VPcGlsb3N0T3Bpc292YXRPcG9yYU9wb3ppY2VPcHJhdmR1T3Byb3RpT3JiaXRhbE9yY2hlc3RyT3JnaWVPcmxpY2VPcmxvak9ydGVsT3NhZGFPc2Nobm91dE9zaWthT3Npdm9Pc2xhdmFPc2xlcGl0T3Nsbml0T3Nsb3ZpdE9zbm92YU9zb2JhT3NvbGl0T3NwYWxlY09zdGVuT3N0cmFoYU9zdHVkYU9zdHljaE9zdm9qaXRPdGVwbGl0T3Rpc2tPdG9wT3RyaGF0T3RybG9zdE90cm9rT3RydWJ5T3R2b3JPdmFub3V0T3Zhck92ZXNPdmxpdm5pdE92b2NlT3hpZE96ZG9iYVBhY2hhdGVsUGFjaWVudFBhZG91Y2hQYWhvcmVrUGFrdFBhbGFuZGFQYWxlY1BhbGl2b1BhbHViYVBhbWZsZXRQYW1sc2VrUGFuZW5rYVBhbmlrYVBhbm5hUGFub3ZhdFBhbnN0dm9QYW50b2ZsZVBhcHJpa2FQYXJrZXRhUGFyb2RpZVBhcnRhUGFydWthUGFyeWJhUGFzZWthUGFzaXZpdGFQYXN0ZWxrYVBhdGVudFBhdHJvbmFQYXZvdWtQYXpuZWh0UGF6b3VyZWtQZWNrYVBlZGFnb2dQZWpzZWtQZWtsb1BlbG90b25QZW5hbHRhUGVuZHJla1BlbnplUGVyaXNrb3BQZXJvUGVzdHJvc3RQZXRhcmRhUGV0aWNlUGV0cm9sZWpQZXZuaW5hUGV4ZXNvUGlhbmlzdGFQaWhhUGlqYXZpY2VQaWtsZVBpa25pa1BpbGluYVBpbG5vc3RQaWx1bGthUGluemV0YVBpcGV0YVBpc2F0ZWxQaXN0b2xlUGl0ZXZuYVBpdm5pY2VQaXZvdmFyUGxhY2VudGFQbGFrYXRQbGFtZW5QbGFuZXRhUGxhc3Rpa2FQbGF0aXRQbGF2aWRsb1BsYXpQbGVjaFBsZW1lbm9QbGVudGFQbGVzUGxldGl2b1BsZXZlbFBsaXZhdFBsbml0UGxub1Bsb2NoYVBsb2RpbmFQbG9tYmFQbG91dFBsdWtQbHluUG9iYXZpdFBvYnl0UG9jaG9kUG9jaXRQb2N0aXZlY1BvZGF0UG9kY2VuaXRQb2RlcHNhdFBvZGhsZWRQb2Rpdml0UG9ka2xhZFBvZG1hbml0UG9kbmlrUG9kb2JhUG9kcG9yYVBvZHJhelBvZHN0YXRhUG9kdm9kUG9kemltUG9lemllUG9oYW5rYVBvaG51dGthUG9ob3ZvclBvaHJvbWFQb2h5YlBvaW50YVBvamlzdGthUG9qbW91dFBva2F6aXRQb2tsZXNQb2tvalBva3Jva1Bva3V0YVBva3luUG9sZWRuZVBvbGliZWtQb2xrbm91dFBvbG9oYVBvbHlub21Qb21hbHVQb21pbm91dFBvbWxrYVBvbW9jUG9tc3RhUG9teXNsZXRQb25lY2hhdFBvbm9ya2FQb251cm9zdFBvcGFkYXRQb3BlbFBvcGlzZWtQb3BsYWNoUG9wcm9zaXRQb3BzYXRQb3B1ZFBvcmFkY2VQb3JjZVBvcm9kUG9ydWNoYVBvcnl2UG9zYWRpdFBvc2VkUG9zaWxhUG9za29rUG9zbGFuZWNQb3NvdWRpdFBvc3BvbHVQb3N0YXZhUG9zdWRla1Bvc3lwUG90YWhQb3RrYW5Qb3RsZXNrUG90b21la1BvdHJhdmFQb3R1cGFQb3R2b3JhUG91a2F6UG91dG9Qb3V6ZHJvUG92YWhhUG92aWRsYVBvdmxha1Bvdm96UG92cmNoUG92c3RhdFBvdnlrUG92emRlY2hQb3pkcmF2UG96ZW1la1Bvem5hdGVrUG96b3JQb3p2YXRQcmFjb3ZhdFByYWhvcnlQcmFrdGlrYVByYWxlc1ByYW90ZWNQcmFwb3Jla1ByYXNlUHJhdmRhUHJpbmNpcFBya25vUHJvYnVkaXRQcm9jZW50b1Byb2RlalByb2Zlc2VQcm9ocmFQcm9qZWt0UHJvbG9taXRQcm9taWxlUHJvbmlrYXRQcm9wYWRQcm9yb2tQcm9zYmFQcm90b25Qcm91dGVrUHJvdmF6UHJza2F2a2FQcnN0ZW5QcnVka29zdFBydXRQcnZla1Bydm9ob3J5UHNhbmVjUHNvdm9kUHN0cnVoUHRhY3R2b1B1YmVydGFQdWNoUHVkbFB1a2F2ZWNQdWtsaW5hUHVrcmxlUHVsdFB1bXBhUHVuY1B1cGVuUHVzYVB1c2lua2FQdXN0aW5hUHV0b3ZhdFB1dHlrYVB5cmFtaWRhUHlza1B5dGVsUmFjZWtSYWNob3RSYWRpYWNlUmFkbmljZVJhZG9uUmFmdFJhZ2J5UmFrZXRhUmFrb3ZpbmFSYW1lbm9SYW1wb3VjaFJhbmRlUmFyYWNoUmFyaXRhUmFzb3ZuYVJhc3RyUmF0b2xlc3RSYXphbmNlUmF6aWRsb1JlYWdvdmF0UmVha2NlUmVjZXB0UmVkYWt0b3JSZWZlcmVudFJlZmxleFJlam5va1Jla2xhbWFSZWtvcmRSZWtydXRSZWt0b3JSZXB1dGFjZVJldml6ZVJldm1hUmV2b2x2ZXJSZXplcnZhUmlza292YXRSaXppa29Sb2JvdGlrYVJvZG9rbWVuUm9ob3ZrYVJva2xlUm9rb2tvUm9tYW5ldG9Sb3Bvdm9kUm9wdWNoYVJvcmVqc1Jvc29sUm9zdGxpbmFSb3RtaXN0clJvdG9wZWRSb3R1bmRhUm91YmVua2FSb3VjaG9Sb3VwUm91cmFSb3ZpbmFSb3ZuaWNlUm96Ym9yUm96Y2hvZFJvemRhdFJvemV6bmF0Um96aG9kY2VSb3ppbmthUm96amV6ZFJvemthelJvemxvaGFSb3ptYXJSb3pwYWRSb3pydWNoUm96c2FoUm96dG9rUm96dW1Sb3p2b2RSdWJyaWthUnVjaGFkbG9SdWthdmljZVJ1a29waXNSeWJhUnlib2xvdlJ5Y2hsb3N0UnlkbG9SeXBhZGxvUnl0aW5hUnl6b3N0U2FkaXN0YVNhaGF0U2Frb1NhbWVjU2FtaXpkYXRTYW1vdGFTYW5pdGthU2FyZGlua2FTYXNhbmthU2F0ZWxpdFNhemJhU2F6ZW5pY2VTYm9yU2Nob3ZhdFNlYnJhbmthU2VjZXNlU2VkYWRsb1NlZGltZW50U2VkbG9TZWhuYXRTZWptb3V0U2VrZXJhU2VrdGFTZWt1bmRhU2Vrdm9qZVNlbWVub1Nlbm9TZXJ2aXNTZXNhZGl0U2VzaG9yYVNlc2tva1Nlc2xhdFNlc3RyYVNlc3V2U2VzeXBhdFNldGJhU2V0aW5hU2V0a2F0U2V0bm91dFNldHJ2YXRTZXZlclNlem5hbVNob2RhU2hybm91dFNpZm9uU2lsbmljZVNpcmthU2lyb3Rla1NpcnVwU2l0dWFjZVNrYWZhbmRyU2thbGlza29Ta2FuemVuU2thdXRTa2VwdGlrU2tpY2FTa2xhZGJhU2tsZW5pY2VTa2xvU2tsdXpTa29iYVNrb2thblNrb3JvU2tyaXB0YVNrcnpTa3VwaW5hU2t2b3N0U2t2cm5hU2xhYmlrYVNsYWRpZGxvU2xhbmluYVNsYXN0U2xhdm5vc3RTbGVkb3ZhdFNsZXBlY1NsZXZhU2xlemluYVNsaWJTbGluYVNsaXpuaWNlU2xvblNsb3VwZWtTbG92b1NsdWNoU2x1aGFTbHVuY2VTbHVwa2FTbHphU21hcmFnZFNtZXRhbmFTbWlsc3R2b1NtbG91dmFTbW9nU21yYWRTbXJrU21ydGthU211dGVrU215c2xTbmFkU25haGFTbm9iU29ib3RhU29jaGFTb2RvdmthU29rb2xTb3BrYVNvdHZhU291Ym9qU291Y2l0U291ZGNlU291aGxhc1NvdWxhZFNvdW1yYWtTb3VwcmF2YVNvdXNlZFNvdXRva1NvdXZpc2V0U3BhbG92bmFTcGFzaXRlbFNwaXNTcGxhdlNwb2Rla1Nwb2plbmVjU3BvbHVTcG9uem9yU3Bvcm5vc3RTcG91c3RhU3ByY2hhU3B1c3RpdFNyYW5kYVNyYXpTcmRjZVNybmFTcm5lY1Nyb3ZuYXRTcnBlblNyc3RTcnViU3RhbmljZVN0YXJvc3RhU3RhdGlrYVN0YXZiYVN0ZWhub1N0ZXprYVN0b2RvbGFTdG9sZWtTdG9wYVN0b3Jub1N0b3VwYXRTdHJhY2hTdHJlc1N0cmhub3V0U3Ryb21TdHJ1bmFTdHVkbmFTdHVwbmljZVN0dm9sU3R5a1N1Ympla3RTdWJ0cm9weVN1Y2hhclN1ZG9zdFN1a25vU3VuZGF0U3Vub3V0U3VyaWthdGFTdXJvdmluYVN2YWhTdmFsc3R2b1N2ZXRyU3ZhdGJhU3ZhemVrU3Zpc2xlU3ZpdGVrU3ZvYm9kYVN2b2RpZGxvU3ZvcmthU3ZyYWJTeWthdmthU3lrb3RTeW5la1N5bm92ZWNTeXBhdFN5cGtvc3RTeXJvdm9zdFN5c2VsU3l0b3N0VGFibGV0a2FUYWJ1bGVUYWhvdW5UYWplbW5vVGFqZnVuVGFqZ2FUYWppdFRham5vc3RUYWt0aWthVGFtaGxlVGFtcG9uVGFuY292YXRUYW5lY1RhbmtlclRhcGV0YVRhdmVuaW5hVGF6YXRlbFRlY2huaWthVGVoZHlUZWt1dGluYVRlbGVmb25UZW1ub3RhVGVuZGVuY2VUZW5pc3RhVGVub3JUZXBsb3RhVGVwbmFUZXBydmVUZXJhcGllVGVybW9za2FUZXh0aWxUaWNob1Rpc2tvcGlzVGl0dWxla1RrYWRsZWNUa2FuaW5hVGxhcGthVGxlc2thdFRsdWtvdFRsdXBhVG1lbFRvYWxldGFUb3BpbmthVG9wb2xUb3J6b1RvdWhhVG91bGVjVHJhZGljZVRyYWt0b3JUcmFtcFRyYXNhVHJhdmVyemFUcmVmaXRUcmVzdFRyZXpvclRyaGF2aW5hVHJobGluYVRyb2NodVRyb2ppY2VUcm9za2FUcm91YmFUcnBjZVRycGl0ZWxUcnBrb3N0VHJ1YmVjVHJ1Y2hsaXRUcnVobGljZVRydXNUcnZhdFR1ZHlUdWhub3V0VHVob3N0VHVuZHJhVHVyaXN0YVR1cm5halR1emVtc2tvVHZhcm9oVHZvcmJhVHZyZG9zdFR2cnpUeWdyVHlrZXZVYm9ob3N0VWJvemVVYnJhdFVicm91c2VrVWJydXNVYnl0b3ZuYVVjaG9VY3Rpdm9zdFVkaXZpdFVocmFkaXRVamVkbmF0VWppc3RpdFVqbW91dFVrYXphdGVsVWtsaWRuaXRVa2xvbml0VWtvdHZpdFVrcm9qaXRVbGljZVVsaXRhVWxvdml0VW15dmFkbG9VbmF2aXRVbmlmb3JtYVVuaWtub3V0VXBhZG5vdXRVcGxhdG5pdFVwbHlub3V0VXBvdXRhdFVwcmF2aXRVcmFuVXJheml0VXNlZG5vdXRVc2lsb3ZhdFVzbXJ0aXRVc25hZG5pdFVzbm91dFVzb3VkaXRVc3RsYXRVc3Rybm91dFV0YWhvdmF0VXRrYXRVdGx1bWl0VXRvbm91dFV0b3BlbmVjVXRyb3VzaXRVdmFsaXRVdm9sbml0VXZvem92a2FVemRyYXZpdFV6ZWxVemVuaW5hVXpsaW5hVXpuYXRWYWdvblZhbGNoYVZhbG91blZhbmFWYW5kYWxWYW5pbGthVmFyYW5WYXJoYW55VmFyb3ZhdFZjZWxrdVZjaG9kVmRvdmFWZWRyb1ZlZ2V0YWNlVmVqY2VWZWxibG91ZFZlbGV0cmhWZWxpdGVsVmVsbW9jVmVscnliYVZlbmtvdlZlcmFuZGFWZXJ6ZVZlc2Vsa2FWZXNrcnplVmVzbmljZVZlc3BvZHVWZXN0YVZldGVyaW5hVmV2ZXJrYVZpYnJhY2VWaWNoclZpZGVvaHJhVmlkaW5hVmlkbGVWaWxhVmluaWNlVmlzZXRWaXRhbGl0YVZpemVWaXppdGthVmplemRWa2xhZFZrdXNWbGFqa2FWbGFrVmxhc2VjVmxldm9WbGhrb3N0VmxpdlZsbm92a2FWbG91cGF0Vm51Y292YXRWbnVrVm9kYVZvZGl2b3N0Vm9kb3puYWtWb2RzdHZvVm9qZW5za3lWb2puYVZvanNrb1ZvbGFudFZvbGJhVm9saXRWb2xub1Zvc2tvdmthVm96aWRsb1Zvem92bmFWcHJhdm9WcmFiZWNWcmFjZXRWcmFoVnJhdGFWcmJhVnJjaG9sZWtWcmhhdFZyc3R2YVZydHVsZVZzYWRpdFZzdG91cGl0VnN0dXBWdGlwVnliYXZpdFZ5YnJhdFZ5Y2hvdmF0VnlkYXRWeWRyYVZ5Zm90aXRWeWhsZWRhdFZ5aG5vdXRWeWhvZGl0VnlocmFkaXRWeWh1Yml0VnlqYXNuaXRWeWpldFZ5am1vdXRWeWtsb3BpdFZ5a29uYXRWeWxla2F0VnltYXphdFZ5bWV6aXRWeW1pemV0VnlteXNsZXRWeW5lY2hhdFZ5bmlrYXRWeW51dGl0VnlwYWRhdFZ5cGxhdGl0VnlwcmF2aXRWeXB1c3RpdFZ5cmF6aXRWeXJvdm5hdFZ5cnZhdFZ5c2xvdml0Vnlzb2tvVnlzdGF2aXRWeXN1bm91dFZ5c3lwYXRWeXRhc2l0Vnl0ZXNhdFZ5dHJhdGl0Vnl2aW5vdXRWeXZvbGF0Vnl2cmhlbFZ5emRvYml0Vnl6bmF0VnphZHVWemJ1ZGl0VnpjaG9waXRWemRvclZ6ZHVjaFZ6ZHljaGF0Vnplc3R1cFZ6aGxlZGVtVnprYXpWemx5a2F0VnpuaWtWem9yZWtWenBvdXJhVnp0YWhWenRla1h5bG9mb25aYWJyYXRaYWJ5ZGxldFphY2hvdmF0WmFkYXJtb1phZHVzaXRaYWZvdWthdFphaGx0aXRaYWhvZGl0WmFocmFkYVphaHlub3V0WmFqYXRlY1phamV0WmFqaXN0aXRaYWtsZXBhdFpha291cGl0WmFsZXBpdFphbWV6aXRaYW1vdGF0WmFteXNsZXRaYW5lY2hhdFphbmlrYXRaYXBsYXRpdFphcG9qaXRaYXBzYXRaYXJheml0WmFzdGF2aXRaYXN1bm91dFphdGFqaXRaYXRlbW5pdFphdGtub3V0WmF1am1vdXRaYXZhbGl0WmF2ZWxldFphdmluaXRaYXZvbGF0WmF2cnRhdFphenZvbml0WmJhdml0WmJydXN1WmJ1ZG92YXRaYnl0ZWtaZGFsZWthWmRhcm1hWmRhdG5vc3RaZGl2b1pkb2JpdFpkcm9qWmR2aWhaZHltYWRsb1plbGVuaW5hWmVtYW5aZW1pbmFaZXB0YXRaZXphZHVaZXpkb2xhWmhhdGl0WmhsdG5vdXRaaGx1Ym9rYVpob3Rvdml0WmhydWJhWmltYVppbW5pY2VaamVtbml0WmtsYW1hdFprb3VtYXRaa3JhdGthWmt1bWF2a2FabGF0b1psZWhrYVpsb2JhWmxvbVpsb3N0WmxvenZ5a1ptYXBvdmF0Wm1hclptYXRla1ptaWplWm1pemV0Wm1vY25pdFptb2RyYXRabXJ6bGluYVptdXRvdmF0Wm5ha1puYWxvc3RabmFtZW5hdFpub3Z1Wm9icmF6aXRab3Rhdml0Wm91YmVrWm91ZmFsZVpwbG9kaXRacG9tYWxpdFpwcmF2YVpwcm9zdGl0WnBydWRrYVpwcnZ1WnJhZGFacmFuaXRacmNhZGxvWnJuaXRvc3Racm5vWnJvdm5hWnJ5Y2hsaXRacnphdm9zdFp0aWNoYVp0cmF0aXRadWJvdmluYVp1YnJadmVkbm91dFp2ZW5rdVp2ZXNlbGFadm9uWnZyYXRadnVrb3ZvZFp2eWsiO3ZhciB3b3JkbGlzdCQxPW51bGw7ZnVuY3Rpb24gbG9hZFdvcmRzKGxhbmcpe2lmKHdvcmRsaXN0JDEhPW51bGwpe3JldHVybn13b3JkbGlzdCQxPXdvcmRzLnJlcGxhY2UoLyhbQS1aXSkvZywiICQxIikudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMSkuc3BsaXQoIiAiKTtpZih3b3JkbGlzdC5Xb3JkbGlzdC5jaGVjayhsYW5nKSE9PSIweDI1ZjQ0NTU1ZjRhZjI1YjUxYTcxMTEzNmUxYzdkNmU1MGNlOWY4OTE3ZDM5ZDZiMWYwNzZiMmJiNGQyZmFjMWEiKXt3b3JkbGlzdCQxPW51bGw7dGhyb3cgbmV3IEVycm9yKCJCSVAzOSBXb3JkbGlzdCBmb3IgZW4gKEVuZ2xpc2gpIEZBSUxFRCIpfX12YXIgTGFuZ0N6PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKExhbmdDeixfc3VwZXIpO2Z1bmN0aW9uIExhbmdDeigpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJjeiIpfHx0aGlzfUxhbmdDei5wcm90b3R5cGUuZ2V0V29yZD1mdW5jdGlvbihpbmRleCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxW2luZGV4XX07TGFuZ0N6LnByb3RvdHlwZS5nZXRXb3JkSW5kZXg9ZnVuY3Rpb24od29yZCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxLmluZGV4T2Yod29yZCl9O3JldHVybiBMYW5nQ3p9KHdvcmRsaXN0LldvcmRsaXN0KTt2YXIgbGFuZ0N6PW5ldyBMYW5nQ3o7ZXhwb3J0cy5sYW5nQ3o9bGFuZ0N6O3dvcmRsaXN0LldvcmRsaXN0LnJlZ2lzdGVyKGxhbmdDeil9KTt2YXIgbGFuZ0N6PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxhbmdDel8xKTt2YXIgbGFuZ0VuXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5sYW5nRW49dm9pZCAwO3ZhciB3b3Jkcz0iQWJhbmRvbkFiaWxpdHlBYmxlQWJvdXRBYm92ZUFic2VudEFic29yYkFic3RyYWN0QWJzdXJkQWJ1c2VBY2Nlc3NBY2NpZGVudEFjY291bnRBY2N1c2VBY2hpZXZlQWNpZEFjb3VzdGljQWNxdWlyZUFjcm9zc0FjdEFjdGlvbkFjdG9yQWN0cmVzc0FjdHVhbEFkYXB0QWRkQWRkaWN0QWRkcmVzc0FkanVzdEFkbWl0QWR1bHRBZHZhbmNlQWR2aWNlQWVyb2JpY0FmZmFpckFmZm9yZEFmcmFpZEFnYWluQWdlQWdlbnRBZ3JlZUFoZWFkQWltQWlyQWlycG9ydEFpc2xlQWxhcm1BbGJ1bUFsY29ob2xBbGVydEFsaWVuQWxsQWxsZXlBbGxvd0FsbW9zdEFsb25lQWxwaGFBbHJlYWR5QWxzb0FsdGVyQWx3YXlzQW1hdGV1ckFtYXppbmdBbW9uZ0Ftb3VudEFtdXNlZEFuYWx5c3RBbmNob3JBbmNpZW50QW5nZXJBbmdsZUFuZ3J5QW5pbWFsQW5rbGVBbm5vdW5jZUFubnVhbEFub3RoZXJBbnN3ZXJBbnRlbm5hQW50aXF1ZUFueGlldHlBbnlBcGFydEFwb2xvZ3lBcHBlYXJBcHBsZUFwcHJvdmVBcHJpbEFyY2hBcmN0aWNBcmVhQXJlbmFBcmd1ZUFybUFybWVkQXJtb3JBcm15QXJvdW5kQXJyYW5nZUFycmVzdEFycml2ZUFycm93QXJ0QXJ0ZWZhY3RBcnRpc3RBcnR3b3JrQXNrQXNwZWN0QXNzYXVsdEFzc2V0QXNzaXN0QXNzdW1lQXN0aG1hQXRobGV0ZUF0b21BdHRhY2tBdHRlbmRBdHRpdHVkZUF0dHJhY3RBdWN0aW9uQXVkaXRBdWd1c3RBdW50QXV0aG9yQXV0b0F1dHVtbkF2ZXJhZ2VBdm9jYWRvQXZvaWRBd2FrZUF3YXJlQXdheUF3ZXNvbWVBd2Z1bEF3a3dhcmRBeGlzQmFieUJhY2hlbG9yQmFjb25CYWRnZUJhZ0JhbGFuY2VCYWxjb255QmFsbEJhbWJvb0JhbmFuYUJhbm5lckJhckJhcmVseUJhcmdhaW5CYXJyZWxCYXNlQmFzaWNCYXNrZXRCYXR0bGVCZWFjaEJlYW5CZWF1dHlCZWNhdXNlQmVjb21lQmVlZkJlZm9yZUJlZ2luQmVoYXZlQmVoaW5kQmVsaWV2ZUJlbG93QmVsdEJlbmNoQmVuZWZpdEJlc3RCZXRyYXlCZXR0ZXJCZXR3ZWVuQmV5b25kQmljeWNsZUJpZEJpa2VCaW5kQmlvbG9neUJpcmRCaXJ0aEJpdHRlckJsYWNrQmxhZGVCbGFtZUJsYW5rZXRCbGFzdEJsZWFrQmxlc3NCbGluZEJsb29kQmxvc3NvbUJsb3VzZUJsdWVCbHVyQmx1c2hCb2FyZEJvYXRCb2R5Qm9pbEJvbWJCb25lQm9udXNCb29rQm9vc3RCb3JkZXJCb3JpbmdCb3Jyb3dCb3NzQm90dG9tQm91bmNlQm94Qm95QnJhY2tldEJyYWluQnJhbmRCcmFzc0JyYXZlQnJlYWRCcmVlemVCcmlja0JyaWRnZUJyaWVmQnJpZ2h0QnJpbmdCcmlza0Jyb2Njb2xpQnJva2VuQnJvbnplQnJvb21Ccm90aGVyQnJvd25CcnVzaEJ1YmJsZUJ1ZGR5QnVkZ2V0QnVmZmFsb0J1aWxkQnVsYkJ1bGtCdWxsZXRCdW5kbGVCdW5rZXJCdXJkZW5CdXJnZXJCdXJzdEJ1c0J1c2luZXNzQnVzeUJ1dHRlckJ1eWVyQnV6ekNhYmJhZ2VDYWJpbkNhYmxlQ2FjdHVzQ2FnZUNha2VDYWxsQ2FsbUNhbWVyYUNhbXBDYW5DYW5hbENhbmNlbENhbmR5Q2Fubm9uQ2Fub2VDYW52YXNDYW55b25DYXBhYmxlQ2FwaXRhbENhcHRhaW5DYXJDYXJib25DYXJkQ2FyZ29DYXJwZXRDYXJyeUNhcnRDYXNlQ2FzaENhc2lub0Nhc3RsZUNhc3VhbENhdENhdGFsb2dDYXRjaENhdGVnb3J5Q2F0dGxlQ2F1Z2h0Q2F1c2VDYXV0aW9uQ2F2ZUNlaWxpbmdDZWxlcnlDZW1lbnRDZW5zdXNDZW50dXJ5Q2VyZWFsQ2VydGFpbkNoYWlyQ2hhbGtDaGFtcGlvbkNoYW5nZUNoYW9zQ2hhcHRlckNoYXJnZUNoYXNlQ2hhdENoZWFwQ2hlY2tDaGVlc2VDaGVmQ2hlcnJ5Q2hlc3RDaGlja2VuQ2hpZWZDaGlsZENoaW1uZXlDaG9pY2VDaG9vc2VDaHJvbmljQ2h1Y2tsZUNodW5rQ2h1cm5DaWdhckNpbm5hbW9uQ2lyY2xlQ2l0aXplbkNpdHlDaXZpbENsYWltQ2xhcENsYXJpZnlDbGF3Q2xheUNsZWFuQ2xlcmtDbGV2ZXJDbGlja0NsaWVudENsaWZmQ2xpbWJDbGluaWNDbGlwQ2xvY2tDbG9nQ2xvc2VDbG90aENsb3VkQ2xvd25DbHViQ2x1bXBDbHVzdGVyQ2x1dGNoQ29hY2hDb2FzdENvY29udXRDb2RlQ29mZmVlQ29pbENvaW5Db2xsZWN0Q29sb3JDb2x1bW5Db21iaW5lQ29tZUNvbWZvcnRDb21pY0NvbW1vbkNvbXBhbnlDb25jZXJ0Q29uZHVjdENvbmZpcm1Db25ncmVzc0Nvbm5lY3RDb25zaWRlckNvbnRyb2xDb252aW5jZUNvb2tDb29sQ29wcGVyQ29weUNvcmFsQ29yZUNvcm5Db3JyZWN0Q29zdENvdHRvbkNvdWNoQ291bnRyeUNvdXBsZUNvdXJzZUNvdXNpbkNvdmVyQ295b3RlQ3JhY2tDcmFkbGVDcmFmdENyYW1DcmFuZUNyYXNoQ3JhdGVyQ3Jhd2xDcmF6eUNyZWFtQ3JlZGl0Q3JlZWtDcmV3Q3JpY2tldENyaW1lQ3Jpc3BDcml0aWNDcm9wQ3Jvc3NDcm91Y2hDcm93ZENydWNpYWxDcnVlbENydWlzZUNydW1ibGVDcnVuY2hDcnVzaENyeUNyeXN0YWxDdWJlQ3VsdHVyZUN1cEN1cGJvYXJkQ3VyaW91c0N1cnJlbnRDdXJ0YWluQ3VydmVDdXNoaW9uQ3VzdG9tQ3V0ZUN5Y2xlRGFkRGFtYWdlRGFtcERhbmNlRGFuZ2VyRGFyaW5nRGFzaERhdWdodGVyRGF3bkRheURlYWxEZWJhdGVEZWJyaXNEZWNhZGVEZWNlbWJlckRlY2lkZURlY2xpbmVEZWNvcmF0ZURlY3JlYXNlRGVlckRlZmVuc2VEZWZpbmVEZWZ5RGVncmVlRGVsYXlEZWxpdmVyRGVtYW5kRGVtaXNlRGVuaWFsRGVudGlzdERlbnlEZXBhcnREZXBlbmREZXBvc2l0RGVwdGhEZXB1dHlEZXJpdmVEZXNjcmliZURlc2VydERlc2lnbkRlc2tEZXNwYWlyRGVzdHJveURldGFpbERldGVjdERldmVsb3BEZXZpY2VEZXZvdGVEaWFncmFtRGlhbERpYW1vbmREaWFyeURpY2VEaWVzZWxEaWV0RGlmZmVyRGlnaXRhbERpZ25pdHlEaWxlbW1hRGlubmVyRGlub3NhdXJEaXJlY3REaXJ0RGlzYWdyZWVEaXNjb3ZlckRpc2Vhc2VEaXNoRGlzbWlzc0Rpc29yZGVyRGlzcGxheURpc3RhbmNlRGl2ZXJ0RGl2aWRlRGl2b3JjZURpenp5RG9jdG9yRG9jdW1lbnREb2dEb2xsRG9scGhpbkRvbWFpbkRvbmF0ZURvbmtleURvbm9yRG9vckRvc2VEb3VibGVEb3ZlRHJhZnREcmFnb25EcmFtYURyYXN0aWNEcmF3RHJlYW1EcmVzc0RyaWZ0RHJpbGxEcmlua0RyaXBEcml2ZURyb3BEcnVtRHJ5RHVja0R1bWJEdW5lRHVyaW5nRHVzdER1dGNoRHV0eUR3YXJmRHluYW1pY0VhZ2VyRWFnbGVFYXJseUVhcm5FYXJ0aEVhc2lseUVhc3RFYXN5RWNob0Vjb2xvZ3lFY29ub215RWRnZUVkaXRFZHVjYXRlRWZmb3J0RWdnRWlnaHRFaXRoZXJFbGJvd0VsZGVyRWxlY3RyaWNFbGVnYW50RWxlbWVudEVsZXBoYW50RWxldmF0b3JFbGl0ZUVsc2VFbWJhcmtFbWJvZHlFbWJyYWNlRW1lcmdlRW1vdGlvbkVtcGxveUVtcG93ZXJFbXB0eUVuYWJsZUVuYWN0RW5kRW5kbGVzc0VuZG9yc2VFbmVteUVuZXJneUVuZm9yY2VFbmdhZ2VFbmdpbmVFbmhhbmNlRW5qb3lFbmxpc3RFbm91Z2hFbnJpY2hFbnJvbGxFbnN1cmVFbnRlckVudGlyZUVudHJ5RW52ZWxvcGVFcGlzb2RlRXF1YWxFcXVpcEVyYUVyYXNlRXJvZGVFcm9zaW9uRXJyb3JFcnVwdEVzY2FwZUVzc2F5RXNzZW5jZUVzdGF0ZUV0ZXJuYWxFdGhpY3NFdmlkZW5jZUV2aWxFdm9rZUV2b2x2ZUV4YWN0RXhhbXBsZUV4Y2Vzc0V4Y2hhbmdlRXhjaXRlRXhjbHVkZUV4Y3VzZUV4ZWN1dGVFeGVyY2lzZUV4aGF1c3RFeGhpYml0RXhpbGVFeGlzdEV4aXRFeG90aWNFeHBhbmRFeHBlY3RFeHBpcmVFeHBsYWluRXhwb3NlRXhwcmVzc0V4dGVuZEV4dHJhRXllRXllYnJvd0ZhYnJpY0ZhY2VGYWN1bHR5RmFkZUZhaW50RmFpdGhGYWxsRmFsc2VGYW1lRmFtaWx5RmFtb3VzRmFuRmFuY3lGYW50YXN5RmFybUZhc2hpb25GYXRGYXRhbEZhdGhlckZhdGlndWVGYXVsdEZhdm9yaXRlRmVhdHVyZUZlYnJ1YXJ5RmVkZXJhbEZlZUZlZWRGZWVsRmVtYWxlRmVuY2VGZXN0aXZhbEZldGNoRmV2ZXJGZXdGaWJlckZpY3Rpb25GaWVsZEZpZ3VyZUZpbGVGaWxtRmlsdGVyRmluYWxGaW5kRmluZUZpbmdlckZpbmlzaEZpcmVGaXJtRmlyc3RGaXNjYWxGaXNoRml0Rml0bmVzc0ZpeEZsYWdGbGFtZUZsYXNoRmxhdEZsYXZvckZsZWVGbGlnaHRGbGlwRmxvYXRGbG9ja0Zsb29yRmxvd2VyRmx1aWRGbHVzaEZseUZvYW1Gb2N1c0ZvZ0ZvaWxGb2xkRm9sbG93Rm9vZEZvb3RGb3JjZUZvcmVzdEZvcmdldEZvcmtGb3J0dW5lRm9ydW1Gb3J3YXJkRm9zc2lsRm9zdGVyRm91bmRGb3hGcmFnaWxlRnJhbWVGcmVxdWVudEZyZXNoRnJpZW5kRnJpbmdlRnJvZ0Zyb250RnJvc3RGcm93bkZyb3plbkZydWl0RnVlbEZ1bkZ1bm55RnVybmFjZUZ1cnlGdXR1cmVHYWRnZXRHYWluR2FsYXh5R2FsbGVyeUdhbWVHYXBHYXJhZ2VHYXJiYWdlR2FyZGVuR2FybGljR2FybWVudEdhc0dhc3BHYXRlR2F0aGVyR2F1Z2VHYXplR2VuZXJhbEdlbml1c0dlbnJlR2VudGxlR2VudWluZUdlc3R1cmVHaG9zdEdpYW50R2lmdEdpZ2dsZUdpbmdlckdpcmFmZmVHaXJsR2l2ZUdsYWRHbGFuY2VHbGFyZUdsYXNzR2xpZGVHbGltcHNlR2xvYmVHbG9vbUdsb3J5R2xvdmVHbG93R2x1ZUdvYXRHb2RkZXNzR29sZEdvb2RHb29zZUdvcmlsbGFHb3NwZWxHb3NzaXBHb3Zlcm5Hb3duR3JhYkdyYWNlR3JhaW5HcmFudEdyYXBlR3Jhc3NHcmF2aXR5R3JlYXRHcmVlbkdyaWRHcmllZkdyaXRHcm9jZXJ5R3JvdXBHcm93R3J1bnRHdWFyZEd1ZXNzR3VpZGVHdWlsdEd1aXRhckd1bkd5bUhhYml0SGFpckhhbGZIYW1tZXJIYW1zdGVySGFuZEhhcHB5SGFyYm9ySGFyZEhhcnNoSGFydmVzdEhhdEhhdmVIYXdrSGF6YXJkSGVhZEhlYWx0aEhlYXJ0SGVhdnlIZWRnZWhvZ0hlaWdodEhlbGxvSGVsbWV0SGVscEhlbkhlcm9IaWRkZW5IaWdoSGlsbEhpbnRIaXBIaXJlSGlzdG9yeUhvYmJ5SG9ja2V5SG9sZEhvbGVIb2xpZGF5SG9sbG93SG9tZUhvbmV5SG9vZEhvcGVIb3JuSG9ycm9ySG9yc2VIb3NwaXRhbEhvc3RIb3RlbEhvdXJIb3Zlckh1Ykh1Z2VIdW1hbkh1bWJsZUh1bW9ySHVuZHJlZEh1bmdyeUh1bnRIdXJkbGVIdXJyeUh1cnRIdXNiYW5kSHlicmlkSWNlSWNvbklkZWFJZGVudGlmeUlkbGVJZ25vcmVJbGxJbGxlZ2FsSWxsbmVzc0ltYWdlSW1pdGF0ZUltbWVuc2VJbW11bmVJbXBhY3RJbXBvc2VJbXByb3ZlSW1wdWxzZUluY2hJbmNsdWRlSW5jb21lSW5jcmVhc2VJbmRleEluZGljYXRlSW5kb29ySW5kdXN0cnlJbmZhbnRJbmZsaWN0SW5mb3JtSW5oYWxlSW5oZXJpdEluaXRpYWxJbmplY3RJbmp1cnlJbm1hdGVJbm5lcklubm9jZW50SW5wdXRJbnF1aXJ5SW5zYW5lSW5zZWN0SW5zaWRlSW5zcGlyZUluc3RhbGxJbnRhY3RJbnRlcmVzdEludG9JbnZlc3RJbnZpdGVJbnZvbHZlSXJvbklzbGFuZElzb2xhdGVJc3N1ZUl0ZW1Jdm9yeUphY2tldEphZ3VhckphckphenpKZWFsb3VzSmVhbnNKZWxseUpld2VsSm9iSm9pbkpva2VKb3VybmV5Sm95SnVkZ2VKdWljZUp1bXBKdW5nbGVKdW5pb3JKdW5rSnVzdEthbmdhcm9vS2VlbktlZXBLZXRjaHVwS2V5S2lja0tpZEtpZG5leUtpbmRLaW5nZG9tS2lzc0tpdEtpdGNoZW5LaXRlS2l0dGVuS2l3aUtuZWVLbmlmZUtub2NrS25vd0xhYkxhYmVsTGFib3JMYWRkZXJMYWR5TGFrZUxhbXBMYW5ndWFnZUxhcHRvcExhcmdlTGF0ZXJMYXRpbkxhdWdoTGF1bmRyeUxhdmFMYXdMYXduTGF3c3VpdExheWVyTGF6eUxlYWRlckxlYWZMZWFybkxlYXZlTGVjdHVyZUxlZnRMZWdMZWdhbExlZ2VuZExlaXN1cmVMZW1vbkxlbmRMZW5ndGhMZW5zTGVvcGFyZExlc3NvbkxldHRlckxldmVsTGlhckxpYmVydHlMaWJyYXJ5TGljZW5zZUxpZmVMaWZ0TGlnaHRMaWtlTGltYkxpbWl0TGlua0xpb25MaXF1aWRMaXN0TGl0dGxlTGl2ZUxpemFyZExvYWRMb2FuTG9ic3RlckxvY2FsTG9ja0xvZ2ljTG9uZWx5TG9uZ0xvb3BMb3R0ZXJ5TG91ZExvdW5nZUxvdmVMb3lhbEx1Y2t5THVnZ2FnZUx1bWJlckx1bmFyTHVuY2hMdXh1cnlMeXJpY3NNYWNoaW5lTWFkTWFnaWNNYWduZXRNYWlkTWFpbE1haW5NYWpvck1ha2VNYW1tYWxNYW5NYW5hZ2VNYW5kYXRlTWFuZ29NYW5zaW9uTWFudWFsTWFwbGVNYXJibGVNYXJjaE1hcmdpbk1hcmluZU1hcmtldE1hcnJpYWdlTWFza01hc3NNYXN0ZXJNYXRjaE1hdGVyaWFsTWF0aE1hdHJpeE1hdHRlck1heGltdW1NYXplTWVhZG93TWVhbk1lYXN1cmVNZWF0TWVjaGFuaWNNZWRhbE1lZGlhTWVsb2R5TWVsdE1lbWJlck1lbW9yeU1lbnRpb25NZW51TWVyY3lNZXJnZU1lcml0TWVycnlNZXNoTWVzc2FnZU1ldGFsTWV0aG9kTWlkZGxlTWlkbmlnaHRNaWxrTWlsbGlvbk1pbWljTWluZE1pbmltdW1NaW5vck1pbnV0ZU1pcmFjbGVNaXJyb3JNaXNlcnlNaXNzTWlzdGFrZU1peE1peGVkTWl4dHVyZU1vYmlsZU1vZGVsTW9kaWZ5TW9tTW9tZW50TW9uaXRvck1vbmtleU1vbnN0ZXJNb250aE1vb25Nb3JhbE1vcmVNb3JuaW5nTW9zcXVpdG9Nb3RoZXJNb3Rpb25Nb3Rvck1vdW50YWluTW91c2VNb3ZlTW92aWVNdWNoTXVmZmluTXVsZU11bHRpcGx5TXVzY2xlTXVzZXVtTXVzaHJvb21NdXNpY011c3RNdXR1YWxNeXNlbGZNeXN0ZXJ5TXl0aE5haXZlTmFtZU5hcGtpbk5hcnJvd05hc3R5TmF0aW9uTmF0dXJlTmVhck5lY2tOZWVkTmVnYXRpdmVOZWdsZWN0TmVpdGhlck5lcGhld05lcnZlTmVzdE5ldE5ldHdvcmtOZXV0cmFsTmV2ZXJOZXdzTmV4dE5pY2VOaWdodE5vYmxlTm9pc2VOb21pbmVlTm9vZGxlTm9ybWFsTm9ydGhOb3NlTm90YWJsZU5vdGVOb3RoaW5nTm90aWNlTm92ZWxOb3dOdWNsZWFyTnVtYmVyTnVyc2VOdXRPYWtPYmV5T2JqZWN0T2JsaWdlT2JzY3VyZU9ic2VydmVPYnRhaW5PYnZpb3VzT2NjdXJPY2Vhbk9jdG9iZXJPZG9yT2ZmT2ZmZXJPZmZpY2VPZnRlbk9pbE9rYXlPbGRPbGl2ZU9seW1waWNPbWl0T25jZU9uZU9uaW9uT25saW5lT25seU9wZW5PcGVyYU9waW5pb25PcHBvc2VPcHRpb25PcmFuZ2VPcmJpdE9yY2hhcmRPcmRlck9yZGluYXJ5T3JnYW5PcmllbnRPcmlnaW5hbE9ycGhhbk9zdHJpY2hPdGhlck91dGRvb3JPdXRlck91dHB1dE91dHNpZGVPdmFsT3Zlbk92ZXJPd25Pd25lck94eWdlbk95c3Rlck96b25lUGFjdFBhZGRsZVBhZ2VQYWlyUGFsYWNlUGFsbVBhbmRhUGFuZWxQYW5pY1BhbnRoZXJQYXBlclBhcmFkZVBhcmVudFBhcmtQYXJyb3RQYXJ0eVBhc3NQYXRjaFBhdGhQYXRpZW50UGF0cm9sUGF0dGVyblBhdXNlUGF2ZVBheW1lbnRQZWFjZVBlYW51dFBlYXJQZWFzYW50UGVsaWNhblBlblBlbmFsdHlQZW5jaWxQZW9wbGVQZXBwZXJQZXJmZWN0UGVybWl0UGVyc29uUGV0UGhvbmVQaG90b1BocmFzZVBoeXNpY2FsUGlhbm9QaWNuaWNQaWN0dXJlUGllY2VQaWdQaWdlb25QaWxsUGlsb3RQaW5rUGlvbmVlclBpcGVQaXN0b2xQaXRjaFBpenphUGxhY2VQbGFuZXRQbGFzdGljUGxhdGVQbGF5UGxlYXNlUGxlZGdlUGx1Y2tQbHVnUGx1bmdlUG9lbVBvZXRQb2ludFBvbGFyUG9sZVBvbGljZVBvbmRQb255UG9vbFBvcHVsYXJQb3J0aW9uUG9zaXRpb25Qb3NzaWJsZVBvc3RQb3RhdG9Qb3R0ZXJ5UG92ZXJ0eVBvd2RlclBvd2VyUHJhY3RpY2VQcmFpc2VQcmVkaWN0UHJlZmVyUHJlcGFyZVByZXNlbnRQcmV0dHlQcmV2ZW50UHJpY2VQcmlkZVByaW1hcnlQcmludFByaW9yaXR5UHJpc29uUHJpdmF0ZVByaXplUHJvYmxlbVByb2Nlc3NQcm9kdWNlUHJvZml0UHJvZ3JhbVByb2plY3RQcm9tb3RlUHJvb2ZQcm9wZXJ0eVByb3NwZXJQcm90ZWN0UHJvdWRQcm92aWRlUHVibGljUHVkZGluZ1B1bGxQdWxwUHVsc2VQdW1wa2luUHVuY2hQdXBpbFB1cHB5UHVyY2hhc2VQdXJpdHlQdXJwb3NlUHVyc2VQdXNoUHV0UHV6emxlUHlyYW1pZFF1YWxpdHlRdWFudHVtUXVhcnRlclF1ZXN0aW9uUXVpY2tRdWl0UXVpelF1b3RlUmFiYml0UmFjY29vblJhY2VSYWNrUmFkYXJSYWRpb1JhaWxSYWluUmFpc2VSYWxseVJhbXBSYW5jaFJhbmRvbVJhbmdlUmFwaWRSYXJlUmF0ZVJhdGhlclJhdmVuUmF3UmF6b3JSZWFkeVJlYWxSZWFzb25SZWJlbFJlYnVpbGRSZWNhbGxSZWNlaXZlUmVjaXBlUmVjb3JkUmVjeWNsZVJlZHVjZVJlZmxlY3RSZWZvcm1SZWZ1c2VSZWdpb25SZWdyZXRSZWd1bGFyUmVqZWN0UmVsYXhSZWxlYXNlUmVsaWVmUmVseVJlbWFpblJlbWVtYmVyUmVtaW5kUmVtb3ZlUmVuZGVyUmVuZXdSZW50UmVvcGVuUmVwYWlyUmVwZWF0UmVwbGFjZVJlcG9ydFJlcXVpcmVSZXNjdWVSZXNlbWJsZVJlc2lzdFJlc291cmNlUmVzcG9uc2VSZXN1bHRSZXRpcmVSZXRyZWF0UmV0dXJuUmV1bmlvblJldmVhbFJldmlld1Jld2FyZFJoeXRobVJpYlJpYmJvblJpY2VSaWNoUmlkZVJpZGdlUmlmbGVSaWdodFJpZ2lkUmluZ1Jpb3RSaXBwbGVSaXNrUml0dWFsUml2YWxSaXZlclJvYWRSb2FzdFJvYm90Um9idXN0Um9ja2V0Um9tYW5jZVJvb2ZSb29raWVSb29tUm9zZVJvdGF0ZVJvdWdoUm91bmRSb3V0ZVJveWFsUnViYmVyUnVkZVJ1Z1J1bGVSdW5SdW53YXlSdXJhbFNhZFNhZGRsZVNhZG5lc3NTYWZlU2FpbFNhbGFkU2FsbW9uU2Fsb25TYWx0U2FsdXRlU2FtZVNhbXBsZVNhbmRTYXRpc2Z5U2F0b3NoaVNhdWNlU2F1c2FnZVNhdmVTYXlTY2FsZVNjYW5TY2FyZVNjYXR0ZXJTY2VuZVNjaGVtZVNjaG9vbFNjaWVuY2VTY2lzc29yc1Njb3JwaW9uU2NvdXRTY3JhcFNjcmVlblNjcmlwdFNjcnViU2VhU2VhcmNoU2Vhc29uU2VhdFNlY29uZFNlY3JldFNlY3Rpb25TZWN1cml0eVNlZWRTZWVrU2VnbWVudFNlbGVjdFNlbGxTZW1pbmFyU2VuaW9yU2Vuc2VTZW50ZW5jZVNlcmllc1NlcnZpY2VTZXNzaW9uU2V0dGxlU2V0dXBTZXZlblNoYWRvd1NoYWZ0U2hhbGxvd1NoYXJlU2hlZFNoZWxsU2hlcmlmZlNoaWVsZFNoaWZ0U2hpbmVTaGlwU2hpdmVyU2hvY2tTaG9lU2hvb3RTaG9wU2hvcnRTaG91bGRlclNob3ZlU2hyaW1wU2hydWdTaHVmZmxlU2h5U2libGluZ1NpY2tTaWRlU2llZ2VTaWdodFNpZ25TaWxlbnRTaWxrU2lsbHlTaWx2ZXJTaW1pbGFyU2ltcGxlU2luY2VTaW5nU2lyZW5TaXN0ZXJTaXR1YXRlU2l4U2l6ZVNrYXRlU2tldGNoU2tpU2tpbGxTa2luU2tpcnRTa3VsbFNsYWJTbGFtU2xlZXBTbGVuZGVyU2xpY2VTbGlkZVNsaWdodFNsaW1TbG9nYW5TbG90U2xvd1NsdXNoU21hbGxTbWFydFNtaWxlU21va2VTbW9vdGhTbmFja1NuYWtlU25hcFNuaWZmU25vd1NvYXBTb2NjZXJTb2NpYWxTb2NrU29kYVNvZnRTb2xhclNvbGRpZXJTb2xpZFNvbHV0aW9uU29sdmVTb21lb25lU29uZ1Nvb25Tb3JyeVNvcnRTb3VsU291bmRTb3VwU291cmNlU291dGhTcGFjZVNwYXJlU3BhdGlhbFNwYXduU3BlYWtTcGVjaWFsU3BlZWRTcGVsbFNwZW5kU3BoZXJlU3BpY2VTcGlkZXJTcGlrZVNwaW5TcGlyaXRTcGxpdFNwb2lsU3BvbnNvclNwb29uU3BvcnRTcG90U3ByYXlTcHJlYWRTcHJpbmdTcHlTcXVhcmVTcXVlZXplU3F1aXJyZWxTdGFibGVTdGFkaXVtU3RhZmZTdGFnZVN0YWlyc1N0YW1wU3RhbmRTdGFydFN0YXRlU3RheVN0ZWFrU3RlZWxTdGVtU3RlcFN0ZXJlb1N0aWNrU3RpbGxTdGluZ1N0b2NrU3RvbWFjaFN0b25lU3Rvb2xTdG9yeVN0b3ZlU3RyYXRlZ3lTdHJlZXRTdHJpa2VTdHJvbmdTdHJ1Z2dsZVN0dWRlbnRTdHVmZlN0dW1ibGVTdHlsZVN1YmplY3RTdWJtaXRTdWJ3YXlTdWNjZXNzU3VjaFN1ZGRlblN1ZmZlclN1Z2FyU3VnZ2VzdFN1aXRTdW1tZXJTdW5TdW5ueVN1bnNldFN1cGVyU3VwcGx5U3VwcmVtZVN1cmVTdXJmYWNlU3VyZ2VTdXJwcmlzZVN1cnJvdW5kU3VydmV5U3VzcGVjdFN1c3RhaW5Td2FsbG93U3dhbXBTd2FwU3dhcm1Td2VhclN3ZWV0U3dpZnRTd2ltU3dpbmdTd2l0Y2hTd29yZFN5bWJvbFN5bXB0b21TeXJ1cFN5c3RlbVRhYmxlVGFja2xlVGFnVGFpbFRhbGVudFRhbGtUYW5rVGFwZVRhcmdldFRhc2tUYXN0ZVRhdHRvb1RheGlUZWFjaFRlYW1UZWxsVGVuVGVuYW50VGVubmlzVGVudFRlcm1UZXN0VGV4dFRoYW5rVGhhdFRoZW1lVGhlblRoZW9yeVRoZXJlVGhleVRoaW5nVGhpc1Rob3VnaHRUaHJlZVRocml2ZVRocm93VGh1bWJUaHVuZGVyVGlja2V0VGlkZVRpZ2VyVGlsdFRpbWJlclRpbWVUaW55VGlwVGlyZWRUaXNzdWVUaXRsZVRvYXN0VG9iYWNjb1RvZGF5VG9kZGxlclRvZVRvZ2V0aGVyVG9pbGV0VG9rZW5Ub21hdG9Ub21vcnJvd1RvbmVUb25ndWVUb25pZ2h0VG9vbFRvb3RoVG9wVG9waWNUb3BwbGVUb3JjaFRvcm5hZG9Ub3J0b2lzZVRvc3NUb3RhbFRvdXJpc3RUb3dhcmRUb3dlclRvd25Ub3lUcmFja1RyYWRlVHJhZmZpY1RyYWdpY1RyYWluVHJhbnNmZXJUcmFwVHJhc2hUcmF2ZWxUcmF5VHJlYXRUcmVlVHJlbmRUcmlhbFRyaWJlVHJpY2tUcmlnZ2VyVHJpbVRyaXBUcm9waHlUcm91YmxlVHJ1Y2tUcnVlVHJ1bHlUcnVtcGV0VHJ1c3RUcnV0aFRyeVR1YmVUdWl0aW9uVHVtYmxlVHVuYVR1bm5lbFR1cmtleVR1cm5UdXJ0bGVUd2VsdmVUd2VudHlUd2ljZVR3aW5Ud2lzdFR3b1R5cGVUeXBpY2FsVWdseVVtYnJlbGxhVW5hYmxlVW5hd2FyZVVuY2xlVW5jb3ZlclVuZGVyVW5kb1VuZmFpclVuZm9sZFVuaGFwcHlVbmlmb3JtVW5pcXVlVW5pdFVuaXZlcnNlVW5rbm93blVubG9ja1VudGlsVW51c3VhbFVudmVpbFVwZGF0ZVVwZ3JhZGVVcGhvbGRVcG9uVXBwZXJVcHNldFVyYmFuVXJnZVVzYWdlVXNlVXNlZFVzZWZ1bFVzZWxlc3NVc3VhbFV0aWxpdHlWYWNhbnRWYWN1dW1WYWd1ZVZhbGlkVmFsbGV5VmFsdmVWYW5WYW5pc2hWYXBvclZhcmlvdXNWYXN0VmF1bHRWZWhpY2xlVmVsdmV0VmVuZG9yVmVudHVyZVZlbnVlVmVyYlZlcmlmeVZlcnNpb25WZXJ5VmVzc2VsVmV0ZXJhblZpYWJsZVZpYnJhbnRWaWNpb3VzVmljdG9yeVZpZGVvVmlld1ZpbGxhZ2VWaW50YWdlVmlvbGluVmlydHVhbFZpcnVzVmlzYVZpc2l0VmlzdWFsVml0YWxWaXZpZFZvY2FsVm9pY2VWb2lkVm9sY2Fub1ZvbHVtZVZvdGVWb3lhZ2VXYWdlV2Fnb25XYWl0V2Fsa1dhbGxXYWxudXRXYW50V2FyZmFyZVdhcm1XYXJyaW9yV2FzaFdhc3BXYXN0ZVdhdGVyV2F2ZVdheVdlYWx0aFdlYXBvbldlYXJXZWFzZWxXZWF0aGVyV2ViV2VkZGluZ1dlZWtlbmRXZWlyZFdlbGNvbWVXZXN0V2V0V2hhbGVXaGF0V2hlYXRXaGVlbFdoZW5XaGVyZVdoaXBXaGlzcGVyV2lkZVdpZHRoV2lmZVdpbGRXaWxsV2luV2luZG93V2luZVdpbmdXaW5rV2lubmVyV2ludGVyV2lyZVdpc2RvbVdpc2VXaXNoV2l0bmVzc1dvbGZXb21hbldvbmRlcldvb2RXb29sV29yZFdvcmtXb3JsZFdvcnJ5V29ydGhXcmFwV3JlY2tXcmVzdGxlV3Jpc3RXcml0ZVdyb25nWWFyZFllYXJZZWxsb3dZb3VZb3VuZ1lvdXRoWmVicmFaZXJvWm9uZVpvbyI7dmFyIHdvcmRsaXN0JDE9bnVsbDtmdW5jdGlvbiBsb2FkV29yZHMobGFuZyl7aWYod29yZGxpc3QkMSE9bnVsbCl7cmV0dXJufXdvcmRsaXN0JDE9d29yZHMucmVwbGFjZSgvKFtBLVpdKS9nLCIgJDEiKS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygxKS5zcGxpdCgiICIpO2lmKHdvcmRsaXN0LldvcmRsaXN0LmNoZWNrKGxhbmcpIT09IjB4M2M4YWNjMWU3YjA4ZDhlNzZmOWZkYTAxNWVmNDhkYzhjNzEwYTczY2I3ZTBmNzdiMmMxOGE5YjVhN2FkZGU2MCIpe3dvcmRsaXN0JDE9bnVsbDt0aHJvdyBuZXcgRXJyb3IoIkJJUDM5IFdvcmRsaXN0IGZvciBlbiAoRW5nbGlzaCkgRkFJTEVEIil9fXZhciBMYW5nRW49ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTGFuZ0VuLF9zdXBlcik7ZnVuY3Rpb24gTGFuZ0VuKCl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImVuIil8fHRoaXN9TGFuZ0VuLnByb3RvdHlwZS5nZXRXb3JkPWZ1bmN0aW9uKGluZGV4KXtsb2FkV29yZHModGhpcyk7cmV0dXJuIHdvcmRsaXN0JDFbaW5kZXhdfTtMYW5nRW4ucHJvdG90eXBlLmdldFdvcmRJbmRleD1mdW5jdGlvbih3b3JkKXtsb2FkV29yZHModGhpcyk7cmV0dXJuIHdvcmRsaXN0JDEuaW5kZXhPZih3b3JkKX07cmV0dXJuIExhbmdFbn0od29yZGxpc3QuV29yZGxpc3QpO3ZhciBsYW5nRW49bmV3IExhbmdFbjtleHBvcnRzLmxhbmdFbj1sYW5nRW47d29yZGxpc3QuV29yZGxpc3QucmVnaXN0ZXIobGFuZ0VuKX0pO3ZhciBsYW5nRW49Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGFuZ0VuXzEpO3ZhciBsYW5nRXNfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmxhbmdFcz12b2lkIDA7dmFyIHdvcmRzPSJBL2JhY29BYmRvbWVuQWJlamFBYmllcnRvQWJvZ2Fkb0Fib25vQWJvcnRvQWJyYXpvQWJyaXJBYnVlbG9BYnVzb0FjYWJhckFjYWRlbWlhQWNjZXNvQWNjaW8vbkFjZWl0ZUFjZWxnYUFjZW50b0FjZXB0YXJBL2NpZG9BY2xhcmFyQWNuZS9BY29nZXJBY29zb0FjdGl2b0FjdG9BY3RyaXpBY3R1YXJBY3VkaXJBY3VlcmRvQWN1c2FyQWRpY3RvQWRtaXRpckFkb3B0YXJBZG9ybm9BZHVhbmFBZHVsdG9BZS9yZW9BZmVjdGFyQWZpY2lvL25BZmluYXJBZmlybWFyQS9naWxBZ2l0YXJBZ29uaS9hQWdvc3RvQWdvdGFyQWdyZWdhckFncmlvQWd1YUFndWRvQS9ndWlsYUFndWphQWhvZ29BaG9ycm9BaXJlQWlzbGFyQWplZHJlekFqZW5vQWp1c3RlQWxhY3JhL25BbGFtYnJlQWxhcm1hQWxiYUEvbGJ1bUFsY2FsZGVBbGRlYUFsZWdyZUFsZWphckFsZXJ0YUFsZXRhQWxmaWxlckFsZ2FBbGdvZG8vbkFsaWFkb0FsaWVudG9BbGl2aW9BbG1hQWxtZWphQWxtaS9iYXJBbHRhckFsdGV6YUFsdGl2b0FsdG9BbHR1cmFBbHVtbm9BbHphckFtYWJsZUFtYW50ZUFtYXBvbGFBbWFyZ29BbWFzYXJBL21iYXJBL21iaXRvQW1lbm9BbWlnb0FtaXN0YWRBbW9yQW1wYXJvQW1wbGlvQW5jaG9BbmNpYW5vQW5jbGFBbmRhckFuZGUvbkFuZW1pYUEvbmd1bG9BbmlsbG9BL25pbW9Bbmkvc0Fub3RhckFudGVuYUFudGlndW9BbnRvam9BbnVhbEFudWxhckFudW5jaW9BfmFkaXJBfmVqb0F+b0FwYWdhckFwYXJhdG9BcGV0aXRvQXBpb0FwbGljYXJBcG9kb0Fwb3J0ZUFwb3lvQXByZW5kZXJBcHJvYmFyQXB1ZXN0YUFwdXJvQXJhZG9BcmF+YUFyYXJBL3JiaXRyb0EvcmJvbEFyYnVzdG9BcmNoaXZvQXJjb0FyZGVyQXJkaWxsYUFyZHVvQS9yZWFBL3JpZG9Bcmllc0FybW9uaS9hQXJuZS9zQXJvbWFBcnBhQXJwby9uQXJyZWdsb0Fycm96QXJydWdhQXJ0ZUFydGlzdGFBc2FBc2Fkb0FzYWx0b0FzY2Vuc29Bc2VndXJhckFzZW9Bc2Vzb3JBc2llbnRvQXNpbG9Bc2lzdGlyQXNub0Fzb21icm9BL3NwZXJvQXN0aWxsYUFzdHJvQXN0dXRvQXN1bWlyQXN1bnRvQXRham9BdGFxdWVBdGFyQXRlbnRvQXRlb0EvdGljb0F0bGV0YUEvdG9tb0F0cmFlckF0cm96QXR1L25BdWRhekF1ZGlvQXVnZUF1bGFBdW1lbnRvQXVzZW50ZUF1dG9yQXZhbEF2YW5jZUF2YXJvQXZlQXZlbGxhbmFBdmVuYUF2ZXN0cnV6QXZpby9uQXZpc29BeWVyQXl1ZGFBeXVub0F6YWZyYS9uQXphckF6b3RlQXp1L2NhckF6dWZyZUF6dWxCYWJhQmFib3JCYWNoZUJhaGkvYUJhaWxlQmFqYXJCYWxhbnphQmFsY28vbkJhbGRlQmFtYnUvQmFuY29CYW5kYUJhfm9CYXJiYUJhcmNvQmFybml6QmFycm9CYS9zY3VsYUJhc3RvL25CYXN1cmFCYXRhbGxhQmF0ZXJpL2FCYXRpckJhdHV0YUJhdS9sQmF6YXJCZWJlL0JlYmlkYUJlbGxvQmVzYXJCZXNvQmVzdGlhQmljaG9CaWVuQmluZ29CbGFuY29CbG9xdWVCbHVzYUJvYUJvYmluYUJvYm9Cb2NhQm9jaW5hQm9kYUJvZGVnYUJvaW5hQm9sYUJvbGVyb0JvbHNhQm9tYmFCb25kYWRCb25pdG9Cb25vQm9uc2EvaUJvcmRlQm9ycmFyQm9zcXVlQm90ZUJvdGkvbkJvL3ZlZGFCb3phbEJyYXZvQnJhem9CcmVjaGFCcmV2ZUJyaWxsb0JyaW5jb0JyaXNhQnJvY2FCcm9tYUJyb25jZUJyb3RlQnJ1amFCcnVzY29CcnV0b0J1Y2VvQnVjbGVCdWVub0J1ZXlCdWZhbmRhQnVmby9uQnUvaG9CdWl0cmVCdWx0b0J1cmJ1amFCdXJsYUJ1cnJvQnVzY2FyQnV0YWNhQnV6by9uQ2FiYWxsb0NhYmV6YUNhYmluYUNhYnJhQ2FjYW9DYWRhL3ZlckNhZGVuYUNhZXJDYWZlL0NhaS9kYUNhaW1hL25DYWphQ2Fqby9uQ2FsQ2FsYW1hckNhbGNpb0NhbGRvQ2FsaWRhZENhbGxlQ2FsbWFDYWxvckNhbHZvQ2FtYUNhbWJpb0NhbWVsbG9DYW1pbm9DYW1wb0NhL25jZXJDYW5kaWxDYW5lbGFDYW5ndXJvQ2FuaWNhQ2FudG9DYX5hQ2F+by9uQ2FvYmFDYW9zQ2FwYXpDYXBpdGEvbkNhcG90ZUNhcHRhckNhcHVjaGFDYXJhQ2FyYm8vbkNhL3JjZWxDYXJldGFDYXJnYUNhcml+b0Nhcm5lQ2FycGV0YUNhcnJvQ2FydGFDYXNhQ2FzY29DYXNlcm9DYXNwYUNhc3RvckNhdG9yY2VDYXRyZUNhdWRhbENhdXNhQ2F6b0NlYm9sbGFDZWRlckNlZHJvQ2VsZGFDZS9sZWJyZUNlbG9zb0NlL2x1bGFDZW1lbnRvQ2VuaXphQ2VudHJvQ2VyY2FDZXJkb0NlcmV6YUNlcm9DZXJyYXJDZXJ0ZXphQ2Uvc3BlZENldHJvQ2hhY2FsQ2hhbGVjb0NoYW1wdS9DaGFuY2xhQ2hhcGFDaGFybGFDaGljb0NoaXN0ZUNoaXZvQ2hvcXVlQ2hvemFDaHVsZXRhQ2h1cGFyQ2ljbG8vbkNpZWdvQ2llbG9DaWVuQ2llcnRvQ2lmcmFDaWdhcnJvQ2ltYUNpbmNvQ2luZUNpbnRhQ2lwcmUvc0NpcmNvQ2lydWVsYUNpc25lQ2l0YUNpdWRhZENsYW1vckNsYW5DbGFyb0NsYXNlQ2xhdmVDbGllbnRlQ2xpbWFDbGkvbmljYUNvYnJlQ29jY2lvL25Db2NoaW5vQ29jaW5hQ29jb0NvL2RpZ29Db2RvQ29mcmVDb2dlckNvaGV0ZUNvamkvbkNvam9Db2xhQ29sY2hhQ29sZWdpb0NvbGdhckNvbGluYUNvbGxhckNvbG1vQ29sdW1uYUNvbWJhdGVDb21lckNvbWlkYUNvL21vZG9Db21wcmFDb25kZUNvbmVqb0NvbmdhQ29ub2NlckNvbnNlam9Db250YXJDb3BhQ29waWFDb3Jhem8vbkNvcmJhdGFDb3JjaG9Db3Jkby9uQ29yb25hQ29ycmVyQ29zZXJDb3Ntb3NDb3N0YUNyYS9uZW9DcmEvdGVyQ3JlYXJDcmVjZXJDcmVpL2RvQ3JlbWFDcmkvYUNyaW1lbkNyaXB0YUNyaXNpc0Nyb21vQ3JvL25pY2FDcm9xdWV0YUNydWRvQ3J1ekN1YWRyb0N1YXJ0b0N1YXRyb0N1Ym9DdWJyaXJDdWNoYXJhQ3VlbGxvQ3VlbnRvQ3VlcmRhQ3Vlc3RhQ3VldmFDdWlkYXJDdWxlYnJhQ3VscGFDdWx0b0N1bWJyZUN1bXBsaXJDdW5hQ3VuZXRhQ3VvdGFDdXBvL25DdS9wdWxhQ3VyYXJDdXJpb3NvQ3Vyc29DdXJ2YUN1dGlzRGFtYURhbnphRGFyRGFyZG9EYS90aWxEZWJlckRlL2JpbERlL2NhZGFEZWNpckRlZG9EZWZlbnNhRGVmaW5pckRlamFyRGVsZmkvbkRlbGdhZG9EZWxpdG9EZW1vcmFEZW5zb0RlbnRhbERlcG9ydGVEZXJlY2hvRGVycm90YURlc2F5dW5vRGVzZW9EZXNmaWxlRGVzbnVkb0Rlc3Rpbm9EZXN2aS9vRGV0YWxsZURldGVuZXJEZXVkYURpL2FEaWFibG9EaWFkZW1hRGlhbWFudGVEaWFuYURpYXJpb0RpYnVqb0RpY3RhckRpZW50ZURpZXRhRGllekRpZmkvY2lsRGlnbm9EaWxlbWFEaWx1aXJEaW5lcm9EaXJlY3RvRGlyaWdpckRpc2NvRGlzZX5vRGlzZnJhekRpdmFEaXZpbm9Eb2JsZURvY2VEb2xvckRvbWluZ29Eb25Eb25hckRvcmFkb0Rvcm1pckRvcnNvRG9zRG9zaXNEcmFnby9uRHJvZ2FEdWNoYUR1ZGFEdWVsb0R1ZX5vRHVsY2VEdS9vRHVxdWVEdXJhckR1cmV6YUR1cm9FL2Jhbm9FYnJpb0VjaGFyRWNvRWN1YWRvckVkYWRFZGljaW8vbkVkaWZpY2lvRWRpdG9yRWR1Y2FyRWZlY3RvRWZpY2F6RWplRWplbXBsb0VsZWZhbnRlRWxlZ2lyRWxlbWVudG9FbGV2YXJFbGlwc2VFL2xpdGVFbGl4aXJFbG9naW9FbHVkaXJFbWJ1ZG9FbWl0aXJFbW9jaW8vbkVtcGF0ZUVtcGV+b0VtcGxlb0VtcHJlc2FFbmFub0VuY2FyZ29FbmNodWZlRW5jaS9hRW5lbWlnb0VuZXJvRW5mYWRvRW5mZXJtb0VuZ2F+b0VuaWdtYUVubGFjZUVub3JtZUVucmVkb0Vuc2F5b0Vuc2V+YXJFbnRlcm9FbnRyYXJFbnZhc2VFbnZpL29FL3BvY2FFcXVpcG9Fcml6b0VzY2FsYUVzY2VuYUVzY29sYXJFc2NyaWJpckVzY3Vkb0VzZW5jaWFFc2ZlcmFFc2Z1ZXJ6b0VzcGFkYUVzcGVqb0VzcGkvYUVzcG9zYUVzcHVtYUVzcXVpL0VzdGFyRXN0ZUVzdGlsb0VzdHVmYUV0YXBhRXRlcm5vRS90aWNhRXRuaWFFdmFkaXJFdmFsdWFyRXZlbnRvRXZpdGFyRXhhY3RvRXhhbWVuRXhjZXNvRXhjdXNhRXhlbnRvRXhpZ2lyRXhpbGlvRXhpc3RpckUveGl0b0V4cGVydG9FeHBsaWNhckV4cG9uZXJFeHRyZW1vRmEvYnJpY2FGYS9idWxhRmFjaGFkYUZhL2NpbEZhY3RvckZhZW5hRmFqYUZhbGRhRmFsbG9GYWxzb0ZhbHRhckZhbWFGYW1pbGlhRmFtb3NvRmFyYW8vbkZhcm1hY2lhRmFyb2xGYXJzYUZhc2VGYXRpZ2FGYXVuYUZhdm9yRmF4RmVicmVyb0ZlY2hhRmVsaXpGZW9GZXJpYUZlcm96RmUvcnRpbEZlcnZvckZlc3RpL25GaWFibGVGaWFuemFGaWFyRmlicmFGaWNjaW8vbkZpY2hhRmlkZW9GaWVicmVGaWVsRmllcmFGaWVzdGFGaWd1cmFGaWphckZpam9GaWxhRmlsZXRlRmlsaWFsRmlsdHJvRmluRmluY2FGaW5naXJGaW5pdG9GaXJtYUZsYWNvRmxhdXRhRmxlY2hhRmxvckZsb3RhRmx1aXJGbHVqb0ZsdS9vckZvYmlhRm9jYUZvZ2F0YUZvZ28vbkZvbGlvRm9sbGV0b0ZvbmRvRm9ybWFGb3Jyb0ZvcnR1bmFGb3J6YXJGb3NhRm90b0ZyYWNhc29GcmEvZ2lsRnJhbmphRnJhc2VGcmF1ZGVGcmVpL3JGcmVub0ZyZXNhRnJpL29Gcml0b0ZydXRhRnVlZ29GdWVudGVGdWVyemFGdWdhRnVtYXJGdW5jaW8vbkZ1bmRhRnVyZ28vbkZ1cmlhRnVzaWxGdS90Ym9sRnV0dXJvR2FjZWxhR2FmYXNHYWl0YUdham9HYWxhR2FsZXJpL2FHYWxsb0dhbWJhR2FuYXJHYW5jaG9HYW5nYUdhbnNvR2FyYWplR2FyemFHYXNvbGluYUdhc3RhckdhdG9HYXZpbGEvbkdlbWVsb0dlbWlyR2VuR2UvbmVyb0dlbmlvR2VudGVHZXJhbmlvR2VyZW50ZUdlcm1lbkdlc3RvR2lnYW50ZUdpbW5hc2lvR2lyYXJHaXJvR2xhY2lhckdsb2JvR2xvcmlhR29sR29sZm9Hb2xvc29Hb2xwZUdvbWFHb3Jkb0dvcmlsYUdvcnJhR290YUdvdGVvR296YXJHcmFkYUdyYS9maWNvR3Jhbm9HcmFzYUdyYXRpc0dyYXZlR3JpZXRhR3JpbGxvR3JpcGVHcmlzR3JpdG9Hcm9zb3JHcnUvYUdydWVzb0dydW1vR3J1cG9HdWFudGVHdWFwb0d1YXJkaWFHdWVycmFHdWkvYUd1aX5vR3Vpb25HdWlzb0d1aXRhcnJhR3VzYW5vR3VzdGFySGFiZXJIYS9iaWxIYWJsYXJIYWNlckhhY2hhSGFkYUhhbGxhckhhbWFjYUhhcmluYUhhekhhemF+YUhlYmlsbGFIZWJyYUhlY2hvSGVsYWRvSGVsaW9IZW1icmFIZXJpckhlcm1hbm9IZS9yb2VIZXJ2aXJIaWVsb0hpZXJyb0hpL2dhZG9IaWdpZW5lSGlqb0hpbW5vSGlzdG9yaWFIb2NpY29Ib2dhckhvZ3VlcmFIb2phSG9tYnJlSG9uZ29Ib25vckhvbnJhSG9yYUhvcm1pZ2FIb3Jub0hvc3RpbEhveW9IdWVjb0h1ZWxnYUh1ZXJ0YUh1ZXNvSHVldm9IdWlkYUh1aXJIdW1hbm9IdS9tZWRvSHVtaWxkZUh1bW9IdW5kaXJIdXJhY2Evbkh1cnRvSWNvbm9JZGVhbElkaW9tYUkvZG9sb0lnbGVzaWFJZ2x1L0lndWFsSWxlZ2FsSWx1c2lvL25JbWFnZW5JbWEvbkltaXRhckltcGFySW1wZXJpb0ltcG9uZXJJbXB1bHNvSW5jYXBhekkvbmRpY2VJbmVydGVJbmZpZWxJbmZvcm1lSW5nZW5pb0luaWNpb0lubWVuc29Jbm11bmVJbm5hdG9JbnNlY3RvSW5zdGFudGVJbnRlcmUvc0kvbnRpbW9JbnR1aXJJbnUvdGlsSW52aWVybm9JcmFJcmlzSXJvbmkvYUlzbGFJc2xvdGVKYWJhbGkvSmFiby9uSmFtby9uSmFyYWJlSmFyZGkvbkphcnJhSmF1bGFKYXptaS9uSmVmZUplcmluZ2FKaW5ldGVKb3JuYWRhSm9yb2JhSm92ZW5Kb3lhSnVlcmdhSnVldmVzSnVlekp1Z2Fkb3JKdWdvSnVndWV0ZUp1aWNpb0p1bmNvSnVuZ2xhSnVuaW9KdW50YXJKdS9waXRlckp1cmFySnVzdG9KdXZlbmlsSnV6Z2FyS2lsb0tvYWxhTGFiaW9MYWNpb0xhY3JhTGFkb0xhZHJvL25MYWdhcnRvTGEvZ3JpbWFMYWd1bmFMYWljb0xhbWVyTGEvbWluYUxhL21wYXJhTGFuYUxhbmNoYUxhbmdvc3RhTGFuemFMYS9waXpMYXJnb0xhcnZhTGEvc3RpbWFMYXRhTGEvdGV4TGF0aXJMYXVyZWxMYXZhckxhem9MZWFsTGVjY2lvL25MZWNoZUxlY3RvckxlZXJMZWdpby9uTGVndW1icmVMZWphbm9MZW5ndWFMZW50b0xlfmFMZW8vbkxlb3BhcmRvTGVzaW8vbkxldGFsTGV0cmFMZXZlTGV5ZW5kYUxpYmVydGFkTGlicm9MaWNvckxpL2RlckxpZGlhckxpZW56b0xpZ2FMaWdlcm9MaW1hTGkvbWl0ZUxpbW8vbkxpbXBpb0xpbmNlTGluZG9MaS9uZWFMaW5nb3RlTGlub0xpbnRlcm5hTGkvcXVpZG9MaXNvTGlzdGFMaXRlcmFMaXRpb0xpdHJvTGxhZ2FMbGFtYUxsYW50b0xsYXZlTGxlZ2FyTGxlbmFyTGxldmFyTGxvcmFyTGxvdmVyTGx1dmlhTG9ib0xvY2lvL25Mb2NvTG9jdXJhTG8vZ2ljYUxvZ3JvTG9tYnJpekxvbW9Mb25qYUxvdGVMdWNoYUx1Y2lyTHVnYXJMdWpvTHVuYUx1bmVzTHVwYUx1c3Ryb0x1dG9MdXpNYWNldGFNYWNob01hZGVyYU1hZHJlTWFkdXJvTWFlc3Ryb01hZmlhTWFnaWFNYWdvTWFpL3pNYWxkYWRNYWxldGFNYWxsYU1hbG9NYW1hL01hbWJvTWFtdXRNYW5jb01hbmRvTWFuZWphck1hbmdhTWFuaXF1aS9NYW5qYXJNYW5vTWFuc29NYW50YU1hfmFuYU1hcGFNYS9xdWluYU1hck1hcmNvTWFyZWFNYXJmaWxNYXJnZW5NYXJpZG9NYS9ybW9sTWFycm8vbk1hcnRlc01hcnpvTWFzYU1hL3NjYXJhTWFzaXZvTWF0YXJNYXRlcmlhTWF0aXpNYXRyaXpNYS94aW1vTWF5b3JNYXpvcmNhTWVjaGFNZWRhbGxhTWVkaW9NZS9kdWxhTWVqaWxsYU1lam9yTWVsZW5hTWVsby9uTWVtb3JpYU1lbm9yTWVuc2FqZU1lbnRlTWVudS9NZXJjYWRvTWVyZW5ndWVNZS9yaXRvTWVzTWVzby9uTWV0YU1ldGVyTWUvdG9kb01ldHJvTWV6Y2xhTWllZG9NaWVsTWllbWJyb01pZ2FNaWxNaWxhZ3JvTWlsaXRhck1pbGxvL25NaW1vTWluYU1pbmVyb01pL25pbW9NaW51dG9NaW9wZU1pcmFyTWlzYU1pc2VyaWFNaXNpbE1pc21vTWl0YWRNaXRvTW9jaGlsYU1vY2lvL25Nb2RhTW9kZWxvTW9ob01vamFyTW9sZGVNb2xlck1vbGlub01vbWVudG9Nb21pYU1vbmFyY2FNb25lZGFNb25qYU1vbnRvTW9+b01vcmFkYU1vcmRlck1vcmVub01vcmlyTW9ycm9Nb3JzYU1vcnRhbE1vc2NhTW9zdHJhck1vdGl2b01vdmVyTW8vdmlsTW96b011Y2hvTXVkYXJNdWVibGVNdWVsYU11ZXJ0ZU11ZXN0cmFNdWdyZU11amVyTXVsYU11bGV0YU11bHRhTXVuZG9NdX5lY2FNdXJhbE11cm9NdS9zY3Vsb011c2VvTXVzZ29NdS9zaWNhTXVzbG9OYS9jYXJOYWNpby9uTmFkYXJOYWlwZU5hcmFuamFOYXJpek5hcnJhck5hc2FsTmF0YWxOYXRpdm9OYXR1cmFsTmEvdXNlYU5hdmFsTmF2ZU5hdmlkYWROZWNpb05lL2N0YXJOZWdhck5lZ29jaW9OZWdyb05lby9uTmVydmlvTmV0b05ldXRyb05ldmFyTmV2ZXJhTmljaG9OaWRvTmllYmxhTmlldG9OaX5lek5pfm9OaS90aWRvTml2ZWxOb2JsZXphTm9jaGVOby9taW5hTm9yaWFOb3JtYU5vcnRlTm90YU5vdGljaWFOb3ZhdG9Ob3ZlbGFOb3Zpb051YmVOdWNhTnUvY2xlb051ZGlsbG9OdWRvTnVlcmFOdWV2ZU51ZXpOdWxvTnUvbWVyb051dHJpYU9hc2lzT2Jlc29PYmlzcG9PYmpldG9PYnJhT2JyZXJvT2JzZXJ2YXJPYnRlbmVyT2J2aW9PY2FPY2Fzb09jZS9hbm9PY2hlbnRhT2Nob09jaW9PY3JlT2N0YXZvT2N0dWJyZU9jdWx0b09jdXBhck9jdXJyaXJPZGlhck9kaW9PZGlzZWFPZXN0ZU9mZW5zYU9mZXJ0YU9maWNpb09mcmVjZXJPZ3JvT2kvZG9PaS9yT2pvT2xhT2xlYWRhT2xmYXRvT2xpdm9PbGxhT2xtb09sb3JPbHZpZG9PbWJsaWdvT25kYU9uemFPcGFjb09wY2lvL25PL3BlcmFPcGluYXJPcG9uZXJPcHRhck8vcHRpY2FPcHVlc3RvT3JhY2lvL25PcmFkb3JPcmFsTy9yYml0YU9yY2FPcmRlbk9yZWphTy9yZ2Fub09yZ2kvYU9yZ3VsbG9PcmllbnRlT3JpZ2VuT3JpbGxhT3JvT3JxdWVzdGFPcnVnYU9zYWRpL2FPc2N1cm9Pc2V6bm9Pc29Pc3RyYU90b35vT3Ryb092ZWphTy92dWxvTy94aWRvT3hpL2dlbm9PeWVudGVPem9ub1BhY3RvUGFkcmVQYWVsbGFQYS9naW5hUGFnb1BhaS9zUGEvamFyb1BhbGFicmFQYWxjb1BhbGV0YVBhL2xpZG9QYWxtYVBhbG9tYVBhbHBhclBhblBhbmFsUGEvbmljb1BhbnRlcmFQYX51ZWxvUGFwYS9QYXBlbFBhcGlsbGFQYXF1ZXRlUGFyYXJQYXJjZWxhUGFyZWRQYXJpclBhcm9QYS9ycGFkb1BhcnF1ZVBhL3JyYWZvUGFydGVQYXNhclBhc2VvUGFzaW8vblBhc29QYXN0YVBhdGFQYXRpb1BhdHJpYVBhdXNhUGF1dGFQYXZvUGF5YXNvUGVhdG8vblBlY2Fkb1BlY2VyYVBlY2hvUGVkYWxQZWRpclBlZ2FyUGVpbmVQZWxhclBlbGRhfm9QZWxlYVBlbGlncm9QZWxsZWpvUGVsb1BlbHVjYVBlbmFQZW5zYXJQZX5vL25QZW8vblBlb3JQZXBpbm9QZXF1ZX5vUGVyYVBlcmNoYVBlcmRlclBlcmV6YVBlcmZpbFBlcmljb1BlcmxhUGVybWlzb1BlcnJvUGVyc29uYVBlc2FQZXNjYVBlL3NpbW9QZXN0YX5hUGUvdGFsb1BldHJvL2xlb1BlelBlenV+YVBpY2FyUGljaG8vblBpZVBpZWRyYVBpZXJuYVBpZXphUGlqYW1hUGlsYXJQaWxvdG9QaW1pZW50YVBpbm9QaW50b3JQaW56YVBpfmFQaW9qb1BpcGFQaXJhdGFQaXNhclBpc2NpbmFQaXNvUGlzdGFQaXRvL25QaXpjYVBsYWNhUGxhblBsYXRhUGxheWFQbGF6YVBsZWl0b1BsZW5vUGxvbW9QbHVtYVBsdXJhbFBvYnJlUG9jb1BvZGVyUG9kaW9Qb2VtYVBvZXNpL2FQb2V0YVBvbGVuUG9saWNpL2FQb2xsb1BvbHZvUG9tYWRhUG9tZWxvUG9tb1BvbXBhUG9uZXJQb3JjaW8vblBvcnRhbFBvc2FkYVBvc2VlclBvc2libGVQb3N0ZVBvdGVuY2lhUG90cm9Qb3pvUHJhZG9QcmVjb3pQcmVndW50YVByZW1pb1ByZW5zYVByZXNvUHJldmlvUHJpbW9QcmkvbmNpcGVQcmlzaW8vblByaXZhclByb2FQcm9iYXJQcm9jZXNvUHJvZHVjdG9Qcm9lemFQcm9mZXNvclByb2dyYW1hUHJvbGVQcm9tZXNhUHJvbnRvUHJvcGlvUHJvL3hpbW9QcnVlYmFQdS9ibGljb1B1Y2hlcm9QdWRvclB1ZWJsb1B1ZXJ0YVB1ZXN0b1B1bGdhUHVsaXJQdWxtby9uUHVscG9QdWxzb1B1bWFQdW50b1B1fmFsUHV+b1B1cGFQdXBpbGFQdXJlL1F1ZWRhclF1ZWphUXVlbWFyUXVlcmVyUXVlc29RdWlldG9RdWkvbWljYVF1aW5jZVF1aXRhclJhL2Jhbm9SYWJpYVJhYm9SYWNpby9uUmFkaWNhbFJhaS96UmFtYVJhbXBhUmFuY2hvUmFuZ29SYXBhelJhL3BpZG9SYXB0b1Jhc2dvUmFzcGFSYXRvUmF5b1JhemFSYXpvL25SZWFjY2lvL25SZWFsaWRhZFJlYmF+b1JlYm90ZVJlY2FlclJlY2V0YVJlY2hhem9SZWNvZ2VyUmVjcmVvUmVjdG9SZWN1cnNvUmVkUmVkb25kb1JlZHVjaXJSZWZsZWpvUmVmb3JtYVJlZnJhL25SZWZ1Z2lvUmVnYWxvUmVnaXJSZWdsYVJlZ3Jlc29SZWhlL25SZWlub1JlaS9yUmVqYVJlbGF0b1JlbGV2b1JlbGlldmVSZWxsZW5vUmVsb2pSZW1hclJlbWVkaW9SZW1vUmVuY29yUmVuZGlyUmVudGFSZXBhcnRvUmVwZXRpclJlcG9zb1JlcHRpbFJlc1Jlc2NhdGVSZXNpbmFSZXNwZXRvUmVzdG9SZXN1bWVuUmV0aXJvUmV0b3Jub1JldHJhdG9SZXVuaXJSZXZlL3NSZXZpc3RhUmV5UmV6YXJSaWNvUmllZ29SaWVuZGFSaWVzZ29SaWZhUmkvZ2lkb1JpZ29yUmluY28vblJpfm8vblJpL29SaXF1ZXphUmlzYVJpdG1vUml0b1Jpem9Sb2JsZVJvY2VSb2NpYXJSb2RhclJvZGVvUm9kaWxsYVJvZXJSb2ppem9Sb2pvUm9tZXJvUm9tcGVyUm9uUm9uY29Sb25kYVJvcGFSb3Blcm9Sb3NhUm9zY2FSb3N0cm9Sb3RhclJ1YmkvUnVib3JSdWRvUnVlZGFSdWdpclJ1aWRvUnVpbmFSdWxldGFSdWxvUnVtYm9SdW1vclJ1cHR1cmFSdXRhUnV0aW5hU2EvYmFkb1NhYmVyU2FiaW9TYWJsZVNhY2FyU2FnYXpTYWdyYWRvU2FsYVNhbGRvU2FsZXJvU2FsaXJTYWxtby9uU2Fsby9uU2Fsc2FTYWx0b1NhbHVkU2FsdmFyU2FtYmFTYW5jaW8vblNhbmRpL2FTYW5lYXJTYW5ncmVTYW5pZGFkU2Fub1NhbnRvU2Fwb1NhcXVlU2FyZGluYVNhcnRlL25TYXN0cmVTYXRhL25TYXVuYVNheG9mby9uU2VjY2lvL25TZWNvU2VjcmV0b1NlY3RhU2VkU2VndWlyU2Vpc1NlbGxvU2VsdmFTZW1hbmFTZW1pbGxhU2VuZGFTZW5zb3JTZX5hbFNlfm9yU2VwYXJhclNlcGlhU2VxdWkvYVNlclNlcmllU2VybW8vblNlcnZpclNlc2VudGFTZXNpby9uU2V0YVNldGVudGFTZXZlcm9TZXhvU2V4dG9TaWRyYVNpZXN0YVNpZXRlU2lnbG9TaWdub1NpL2xhYmFTaWxiYXJTaWxlbmNpb1NpbGxhU2kvbWJvbG9TaW1pb1NpcmVuYVNpc3RlbWFTaXRpb1NpdHVhclNvYnJlU29jaW9Tb2Rpb1NvbFNvbGFwYVNvbGRhZG9Tb2xlZGFkU28vbGlkb1NvbHRhclNvbHVjaW8vblNvbWJyYVNvbmRlb1Nvbmlkb1Nvbm9yb1NvbnJpc2FTb3BhU29wbGFyU29wb3J0ZVNvcmRvU29ycHJlc2FTb3J0ZW9Tb3N0ZS9uU28vdGFub1N1YXZlU3ViaXJTdWNlc29TdWRvclN1ZWdyYVN1ZWxvU3Vlfm9TdWVydGVTdWZyaXJTdWpldG9TdWx0YS9uU3VtYXJTdXBlcmFyU3VwbGlyU3Vwb25lclN1cHJlbW9TdXJTdXJjb1N1cmV+b1N1cmdpclN1c3RvU3V0aWxUYWJhY29UYWJpcXVlVGFibGFUYWJ1L1RhY29UYWN0b1Rham9UYWxhclRhbGNvVGFsZW50b1RhbGxhVGFsby9uVGFtYX5vVGFtYm9yVGFuZ29UYW5xdWVUYXBhVGFwZXRlVGFwaWFUYXBvL25UYXF1aWxsYVRhcmRlVGFyZWFUYXJpZmFUYXJqZXRhVGFyb3RUYXJyb1RhcnRhVGF0dWFqZVRhdXJvVGF6YVRhem8vblRlYXRyb1RlY2hvVGVjbGFUZS9jbmljYVRlamFkb1RlamVyVGVqaWRvVGVsYVRlbGUvZm9ub1RlbWFUZW1vclRlbXBsb1RlbmF6VGVuZGVyVGVuZXJUZW5pc1RlbnNvVGVvcmkvYVRlcmFwaWFUZXJjb1RlL3JtaW5vVGVybnVyYVRlcnJvclRlc2lzVGVzb3JvVGVzdGlnb1RldGVyYVRleHRvVGV6VGliaW9UaWJ1cm8vblRpZW1wb1RpZW5kYVRpZXJyYVRpZXNvVGlncmVUaWplcmFUaWxkZVRpbWJyZVRpL21pZG9UaW1vVGludGFUaS9vVGkvcGljb1RpcG9UaXJhVGlyby9uVGl0YS9uVGkvdGVyZVRpL3R1bG9UaXphVG9hbGxhVG9iaWxsb1RvY2FyVG9jaW5vVG9kb1RvZ2FUb2xkb1RvbWFyVG9ub1RvbnRvVG9wYXJUb3BlVG9xdWVUby9yYXhUb3Jlcm9Ub3JtZW50YVRvcm5lb1Rvcm9Ub3JwZWRvVG9ycmVUb3Jzb1RvcnR1Z2FUb3NUb3Njb1Rvc2VyVG8veGljb1RyYWJham9UcmFjdG9yVHJhZXJUcmEvZmljb1RyYWdvVHJhamVUcmFtb1RyYW5jZVRyYXRvVHJhdW1hVHJhemFyVHJlL2JvbFRyZWd1YVRyZWludGFUcmVuVHJlcGFyVHJlc1RyaWJ1VHJpZ29UcmlwYVRyaXN0ZVRyaXVuZm9Ucm9mZW9Ucm9tcGFUcm9uY29Ucm9wYVRyb3RlVHJvem9UcnVjb1RydWVub1RydWZhVHViZXJpL2FUdWJvVHVlcnRvVHVtYmFUdW1vclR1L25lbFR1L25pY2FUdXJiaW5hVHVyaXNtb1R1cm5vVHV0b3JVYmljYXJVL2xjZXJhVW1icmFsVW5pZGFkVW5pclVuaXZlcnNvVW5vVW50YXJVfmFVcmJhbm9VcmJlVXJnZW50ZVVybmFVc2FyVXN1YXJpb1UvdGlsVXRvcGkvYVV2YVZhY2FWYWNpL29WYWN1bmFWYWdhclZhZ29WYWluYVZhamlsbGFWYWxlVmEvbGlkb1ZhbGxlVmFsb3JWYS9sdnVsYVZhbXBpcm9WYXJhVmFyaWFyVmFyby9uVmFzb1ZlY2lub1ZlY3RvclZlaGkvY3Vsb1ZlaW50ZVZlamV6VmVsYVZlbGVyb1ZlbG96VmVuYVZlbmNlclZlbmRhVmVuZW5vVmVuZ2FyVmVuaXJWZW50YVZlbnVzVmVyVmVyYW5vVmVyYm9WZXJkZVZlcmVkYVZlcmphVmVyc29WZXJ0ZXJWaS9hVmlhamVWaWJyYXJWaWNpb1ZpL2N0aW1hVmlkYVZpL2Rlb1ZpZHJpb1ZpZWpvVmllcm5lc1ZpZ29yVmlsVmlsbGFWaW5hZ3JlVmlub1ZpfmVkb1Zpb2xpL25WaXJhbFZpcmdvVmlydHVkVmlzb3JWaS9zcGVyYVZpc3RhVml0YW1pbmFWaXVkb1ZpdmF6Vml2ZXJvVml2aXJWaXZvVm9sY2EvblZvbHVtZW5Wb2x2ZXJWb3JhelZvdGFyVm90b1ZvelZ1ZWxvVnVsZ2FyWWFjZXJZYXRlWWVndWFZZW1hWWVybm9ZZXNvWW9kb1lvZ2FZb2d1clphZmlyb1phbmphWmFwYXRvWmFyemFab25hWm9ycm9adW1vWnVyZG8iO3ZhciBsb29rdXA9e307dmFyIHdvcmRsaXN0JDE9bnVsbDtmdW5jdGlvbiBkcm9wRGlhY3JpdGljKHdvcmQpe3dvcmRsaXN0LmxvZ2dlci5jaGVja05vcm1hbGl6ZSgpO3JldHVybiBsaWIkOC50b1V0ZjhTdHJpbmcoQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGxpYiQ4LnRvVXRmOEJ5dGVzKHdvcmQubm9ybWFsaXplKCJORkQiKS50b0xvd2VyQ2FzZSgpKSxmdW5jdGlvbihjKXtyZXR1cm4gYz49NjUmJmM8PTkwfHxjPj05NyYmYzw9MTIzfSkpfWZ1bmN0aW9uIGV4cGFuZCh3b3JkKXt2YXIgb3V0cHV0PVtdO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobGliJDgudG9VdGY4Qnl0ZXMod29yZCksZnVuY3Rpb24oYyl7aWYoYz09PTQ3KXtvdXRwdXQucHVzaCgyMDQpO291dHB1dC5wdXNoKDEyOSl9ZWxzZSBpZihjPT09MTI2KXtvdXRwdXQucHVzaCgxMTApO291dHB1dC5wdXNoKDIwNCk7b3V0cHV0LnB1c2goMTMxKX1lbHNle291dHB1dC5wdXNoKGMpfX0pO3JldHVybiBsaWIkOC50b1V0ZjhTdHJpbmcob3V0cHV0KX1mdW5jdGlvbiBsb2FkV29yZHMobGFuZyl7aWYod29yZGxpc3QkMSE9bnVsbCl7cmV0dXJufXdvcmRsaXN0JDE9d29yZHMucmVwbGFjZSgvKFtBLVpdKS9nLCIgJDEiKS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygxKS5zcGxpdCgiICIpLm1hcChmdW5jdGlvbih3KXtyZXR1cm4gZXhwYW5kKHcpfSk7d29yZGxpc3QkMS5mb3JFYWNoKGZ1bmN0aW9uKHdvcmQsaW5kZXgpe2xvb2t1cFtkcm9wRGlhY3JpdGljKHdvcmQpXT1pbmRleH0pO2lmKHdvcmRsaXN0LldvcmRsaXN0LmNoZWNrKGxhbmcpIT09IjB4Zjc0ZmI3MDkyYWVhY2RmYmY4OTU5NTU3ZGUyMjA5OGRhNTEyMjA3ZmI5ZjEwOWNiNTI2OTk0OTM4Y2Y0MDMwMCIpe3dvcmRsaXN0JDE9bnVsbDt0aHJvdyBuZXcgRXJyb3IoIkJJUDM5IFdvcmRsaXN0IGZvciBlcyAoU3BhbmlzaCkgRkFJTEVEIil9fXZhciBMYW5nRXM9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTGFuZ0VzLF9zdXBlcik7ZnVuY3Rpb24gTGFuZ0VzKCl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImVzIil8fHRoaXN9TGFuZ0VzLnByb3RvdHlwZS5nZXRXb3JkPWZ1bmN0aW9uKGluZGV4KXtsb2FkV29yZHModGhpcyk7cmV0dXJuIHdvcmRsaXN0JDFbaW5kZXhdfTtMYW5nRXMucHJvdG90eXBlLmdldFdvcmRJbmRleD1mdW5jdGlvbih3b3JkKXtsb2FkV29yZHModGhpcyk7cmV0dXJuIGxvb2t1cFtkcm9wRGlhY3JpdGljKHdvcmQpXX07cmV0dXJuIExhbmdFc30od29yZGxpc3QuV29yZGxpc3QpO3ZhciBsYW5nRXM9bmV3IExhbmdFcztleHBvcnRzLmxhbmdFcz1sYW5nRXM7d29yZGxpc3QuV29yZGxpc3QucmVnaXN0ZXIobGFuZ0VzKX0pO3ZhciBsYW5nRXM9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGFuZ0VzXzEpO3ZhciBsYW5nRnJfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmxhbmdGcj12b2lkIDA7dmFyIHdvcmRzPSJBYmFpc3NlckFiYW5kb25BYmRpcXVlckFiZWlsbGVBYm9saXJBYm9yZGVyQWJvdXRpckFib3llckFicmFzaWZBYnJldXZlckFicml0ZXJBYnJvZ2VyQWJydXB0QWJzZW5jZUFic29sdUFic3VyZGVBYnVzaWZBYnlzc2FsQWNhZGUvbWllQWNham91QWNhcmllbkFjY2FibGVyQWNjZXB0ZXJBY2NsYW1lckFjY29sYWRlQWNjcm9jaGVBY2N1c2VyQWNlcmJlQWNoYXRBY2hldGVyQWNpZHVsZXJBY2llckFjb21wdGVBY3F1ZS9yaXJBY3JvbnltZUFjdGV1ckFjdGlmQWN0dWVsQWRlcHRlQWRlL3F1YXRBZGhlL3NpZkFkamVjdGlmQWRqdWdlckFkbWV0dHJlQWRtaXJlckFkb3B0ZXJBZG9yZXJBZG91Y2lyQWRyZXNzZUFkcm9pdEFkdWx0ZUFkdmVyYmVBZS9yZXJBZS9yb25lZkFmZmFpcmVBZmZlY3RlckFmZmljaGVBZmZyZXV4QWZmdWJsZXJBZ2FjZXJBZ2VuY2VyQWdpbGVBZ2l0ZXJBZ3JhZmVyQWdyZS9hYmxlQWdydW1lQWlkZXJBaWd1aWxsZUFpbGllckFpbWFibGVBaXNhbmNlQWpvdXRlckFqdXN0ZXJBbGFybWVyQWxjaGltaWVBbGVydGVBbGdlLWJyZUFsZ3VlQWxpZS9uZXJBbGltZW50QWxsZS9nZXJBbGxpYWdlQWxsb3VlckFsbHVtZXJBbG91cmRpckFscGFnYUFsdGVzc2VBbHZlL29sZUFtYXRldXJBbWJpZ3VBbWJyZUFtZS9uYWdlckFtZXJ0dW1lQW1pZG9uQW1pcmFsQW1vcmNlckFtb3VyQW1vdmlibGVBbXBoaWJpZUFtcGxldXJBbXVzYW50QW5hbHlzZUFuYXBob3JlQW5hcmNoaWVBbmF0b21pZUFuY2llbkFuZS9hbnRpckFuZ2xlQW5nb2lzc2VBbmd1bGV1eEFuaW1hbEFubmV4ZXJBbm5vbmNlQW5udWVsQW5vZGluQW5vbWFsaWVBbm9ueW1lQW5vcm1hbEFudGVubmVBbnRpZG90ZUFueGlldXhBcGFpc2VyQXBlL3JpdGlmQXBsYW5pckFwb2xvZ2llQXBwYXJlaWxBcHBlbGVyQXBwb3J0ZXJBcHB1eWVyQXF1YXJpdW1BcXVlZHVjQXJiaXRyZUFyYnVzdGVBcmRldXJBcmRvaXNlQXJnZW50QXJsZXF1aW5Bcm1hdHVyZUFybWVtZW50QXJtb2lyZUFybXVyZUFycGVudGVyQXJyYWNoZXJBcnJpdmVyQXJyb3NlckFyc2VuaWNBcnRlL3JpZWxBcnRpY2xlQXNwZWN0QXNwaGFsdGVBc3BpcmVyQXNzYXV0QXNzZXJ2aXJBc3NpZXR0ZUFzc29jaWVyQXNzdXJlckFzdGljb3RBc3RyZUFzdHVjZUF0ZWxpZXJBdG9tZUF0cml1bUF0cm9jZUF0dGFxdWVBdHRlbnRpZkF0dGlyZXJBdHRyYXBlckF1YmFpbmVBdWJlcmdlQXVkYWNlQXVkaWJsZUF1Z3VyZXJBdXJvcmVBdXRvbW5lQXV0cnVjaGVBdmFsZXJBdmFuY2VyQXZhcmljZUF2ZW5pckF2ZXJzZUF2ZXVnbGVBdmlhdGV1ckF2aWRlQXZpb25BdmlzZXJBdm9pbmVBdm91ZXJBdnJpbEF4aWFsQXhpb21lQmFkZ2VCYWZvdWVyQmFnYWdlQmFndWV0dGVCYWlnbmFkZUJhbGFuY2VyQmFsY29uQmFsZWluZUJhbGlzYWdlQmFtYmluQmFuY2FpcmVCYW5kYWdlQmFubGlldWVCYW5uaWUtcmVCYW5xdWllckJhcmJpZXJCYXJpbEJhcm9uQmFycXVlQmFycmFnZUJhc3NpbkJhc3Rpb25CYXRhaWxsZUJhdGVhdUJhdHRlcmllQmF1ZHJpZXJCYXZhcmRlckJlbGV0dGVCZS9saWVyQmVsb3RlQmUvbmUvZmljZUJlcmNlYXVCZXJnZXJCZXJsaW5lQmVybXVkYUJlc2FjZUJlc29nbmVCZS90YWlsQmV1cnJlQmliZXJvbkJpY3ljbGVCaWR1bGVCaWpvdUJpbGFuQmlsaW5ndWVCaWxsYXJkQmluYWlyZUJpb2xvZ2llQmlvcHNpZUJpb3R5cGVCaXNjdWl0Qmlzb25CaXN0b3VyaUJpdHVtZUJpemFycmVCbGFmYXJkQmxhZ3VlQmxhbmNoaXJCbGVzc2FudEJsaW5kZXJCbG9uZEJsb3F1ZXJCbG91c29uQm9iYXJkQm9iaW5lQm9pcmVCb2lzZXJCb2xpZGVCb25ib25Cb25kaXJCb25oZXVyQm9uaWZpZXJCb251c0JvcmR1cmVCb3JuZUJvdHRlQm91Y2xlQm91ZXV4Qm91Z2llQm91bG9uQm91cXVpbkJvdXJzZUJvdXNzb2xlQm91dGlxdWVCb3hldXJCcmFuY2hlQnJhc2llckJyYXZlQnJlYmlzQnJlLWNoZUJyZXV2YWdlQnJpY29sZXJCcmlnYWRlQnJpbGxhbnRCcmlvY2hlQnJpcXVlQnJvY2h1cmVCcm9kZXJCcm9uemVyQnJvdXNzZUJyb3lldXJCcnVtZUJydXNxdWVCcnV0YWxCcnV5YW50QnVmZmxlQnVpc3NvbkJ1bGxldGluQnVyZWF1QnVyaW5CdXN0aWVyQnV0aW5lckJ1dG9pckJ1dmFibGVCdXZldHRlQ2FiYW5vbkNhYmluZUNhY2hldHRlQ2FkZWF1Q2FkcmVDYWZlL2luZUNhaWxsb3VDYWlzc29uQ2FsY3VsZXJDYWxlcGluQ2FsaWJyZUNhbG1lckNhbG9tbmllQ2FsdmFpcmVDYW1hcmFkZUNhbWUvcmFDYW1pb25DYW1wYWduZUNhbmFsQ2FuZXRvbkNhbm9uQ2FudGluZUNhbnVsYXJDYXBhYmxlQ2Fwb3JhbENhcHJpY2VDYXBzdWxlQ2FwdGVyQ2FwdWNoZUNhcmFiaW5lQ2FyYm9uZUNhcmVzc2VyQ2FyaWJvdUNhcm5hZ2VDYXJvdHRlQ2FycmVhdUNhcnRvbkNhc2NhZGVDYXNpZXJDYXNxdWVDYXNzdXJlQ2F1c2VyQ2F1dGlvbkNhdmFsaWVyQ2F2ZXJuZUNhdmlhckNlL2RpbGxlQ2VpbnR1cmVDZS9sZXN0ZUNlbGx1bGVDZW5kcmllckNlbnN1cmVyQ2VudHJhbENlcmNsZUNlL3JlL2JyYWxDZXJpc2VDZXJuZXJDZXJ2ZWF1Q2Vzc2VyQ2hhZ3JpbkNoYWlzZUNoYWxldXJDaGFtYnJlQ2hhbmNlQ2hhcGl0cmVDaGFyYm9uQ2hhc3NldXJDaGF0b25DaGF1c3NvbkNoYXZpcmVyQ2hlbWlzZUNoZW5pbGxlQ2hlL3F1aWVyQ2hlcmNoZXJDaGV2YWxDaGllbkNoaWZmcmVDaGlnbm9uQ2hpbWUtcmVDaGlvdENobG9ydXJlQ2hvY29sYXRDaG9pc2lyQ2hvc2VDaG91ZXR0ZUNocm9tZUNodXRlQ2lnYXJlQ2lnb2duZUNpbWVudGVyQ2luZS9tYUNpbnRyZXJDaXJjdWxlckNpcmVyQ2lycXVlQ2l0ZXJuZUNpdG95ZW5DaXRyb25DaXZpbENsYWlyb25DbGFtZXVyQ2xhcXVlckNsYXNzZUNsYXZpZXJDbGllbnRDbGlnbmVyQ2xpbWF0Q2xpdmFnZUNsb2NoZUNsb25hZ2VDbG9wb3J0ZUNvYmFsdENvYnJhQ29jYXNzZUNvY290aWVyQ29kZXJDb2RpZmllckNvZmZyZUNvZ25lckNvaGUvc2lvbkNvaWZmZXJDb2luY2VyQ29sZS1yZUNvbGlicmlDb2xsaW5lQ29sbWF0ZXJDb2xvbmVsQ29tYmF0Q29tZS9kaWVDb21tYW5kZUNvbXBhY3RDb25jZXJ0Q29uZHVpcmVDb25maWVyQ29uZ2VsZXJDb25ub3RlckNvbnNvbm5lQ29udGFjdENvbnZleGVDb3BhaW5Db3BpZUNvcmFpbENvcmJlYXVDb3JkYWdlQ29ybmljaGVDb3JwdXNDb3JyZWN0Q29ydGUtZ2VDb3NtaXF1ZUNvc3R1bWVDb3RvbkNvdWRlQ291cHVyZUNvdXJhZ2VDb3V0ZWF1Q291dnJpckNveW90ZUNyYWJlQ3JhaW50ZUNyYXZhdGVDcmF5b25DcmUvYXR1cmVDcmUvZGl0ZXJDcmUvbWV1eENyZXVzZXJDcmV2ZXR0ZUNyaWJsZXJDcmllckNyaXN0YWxDcml0ZS1yZUNyb2lyZUNyb3F1ZXJDcm90YWxlQ3J1Y2lhbENydWVsQ3J5cHRlckN1YmlxdWVDdWVpbGxpckN1aWxsZS1yZUN1aXNpbmVDdWl2cmVDdWxtaW5lckN1bHRpdmVyQ3VtdWxlckN1cGlkZUN1cmF0aWZDdXJzZXVyQ3lhbnVyZUN5Y2xlQ3lsaW5kcmVDeW5pcXVlRGFpZ25lckRhbWllckRhbmdlckRhbnNldXJEYXVwaGluRGUvYmF0dHJlRGUvYml0ZXJEZS9ib3JkZXJEZS9icmlkZXJEZS9idXRhbnREZS9jYWxlckRlL2NlbWJyZURlL2NoaXJlckRlL2NpZGVyRGUvY2xhcmVyRGUvY29yZXJEZS9jcmlyZURlL2N1cGxlckRlL2RhbGVEZS9kdWN0aWZEZS9lc3NlRGUvZmVuc2lmRGUvZmlsZXJEZS9mcmF5ZXJEZS9nYWdlckRlL2dpdnJlckRlL2dsdXRpckRlL2dyYWZlckRlL2pldW5lckRlL2xpY2VEZS9sb2dlckRlbWFuZGVyRGVtZXVyZXJEZS9tb2xpckRlL25pY2hlckRlL25vdWVyRGVudGVsbGVEZS9udWRlckRlL3BhcnREZS9wZW5zZXJEZS9waGFzZXJEZS9wbGFjZXJEZS9wb3NlckRlL3JhbmdlckRlL3JvYmVyRGUvc2FzdHJlRGVzY2VudGVEZS9zZXJ0RGUvc2lnbmVyRGUvc29iZS9pckRlc3NpbmVyRGVzdHJpZXJEZS90YWNoZXJEZS90ZXN0ZXJEZS90b3VyZXJEZS90cmVzc2VEZXZhbmNlckRldmVuaXJEZXZpbmVyRGV2b2lyRGlhYmxlRGlhbG9ndWVEaWFtYW50RGljdGVyRGlmZmUvcmVyRGlnZS9yZXJEaWdpdGFsRGlnbmVEaWx1ZXJEaW1hbmNoZURpbWludWVyRGlveHlkZURpcmVjdGlmRGlyaWdlckRpc2N1dGVyRGlzcG9zZXJEaXNzaXBlckRpc3RhbmNlRGl2ZXJ0aXJEaXZpc2VyRG9jaWxlRG9jdGV1ckRvZ21lRG9pZ3REb21haW5lRG9taWNpbGVEb21wdGVyRG9uYXRldXJEb25qb25Eb25uZXJEb3BhbWluZURvcnRvaXJEb3J1cmVEb3NhZ2VEb3NldXJEb3NzaWVyRG90YXRpb25Eb3VhbmllckRvdWJsZURvdWNldXJEb3V0ZXJEb3llbkRyYWdvbkRyYXBlckRyZXNzZXJEcmliYmxlckRyb2l0dXJlRHVwZXJpZUR1cGxleGVEdXJhYmxlRHVyY2lyRHluYXN0aWVFL2Jsb3VpckUvY2FydGVyRS9jaGFycGVFL2NoZWxsZUUvY2xhaXJlckUvY2xpcHNlRS9jbG9yZUUvY2x1c2VFL2NvbGVFL2Nvbm9taWVFL2NvcmNlRS9jb3V0ZXJFL2NyYXNlckUvY3JlL21lckUvY3JpdmFpbkUvY3JvdUUvY3VtZUUvY3VyZXVpbEUvZGlmaWVyRS9kdXF1ZXJFZmZhY2VyRWZmZWN0aWZFZmZpZ2llRWZmb3J0RWZmcmF5ZXJFZmZ1c2lvbkUvZ2FsaXNlckUvZ2FyZXJFL2plY3RlckUvbGFib3JlckUvbGFyZ2lyRS9sZWN0cm9uRS9sZS9nYW50RS9sZS9waGFudEUvbGUtdmVFL2xpZ2libGVFL2xpdGlzbWVFL2xvZ2VFL2x1Y2lkZXJFL2x1ZGVyRW1iYWxsZXJFbWJlbGxpckVtYnJ5b25FL21lcmF1ZGVFL21pc3Npb25FbW1lbmVyRS9tb3Rpb25FL21vdXZvaXJFbXBlcmV1ckVtcGxveWVyRW1wb3J0ZXJFbXByaXNlRS9tdWxzaW9uRW5jYWRyZXJFbmNoZS1yZUVuY2xhdmVFbmNvY2hlRW5kaWd1ZXJFbmRvc3NlckVuZHJvaXRFbmR1aXJlRS9uZXJnaWVFbmZhbmNlRW5mZXJtZXJFbmZvdWlyRW5nYWdlckVuZ2luRW5nbG9iZXJFL25pZ21lRW5qYW1iZXJFbmpldUVubGV2ZXJFbm5lbWlFbm51eWV1eEVucmljaGlyRW5yb2JhZ2VFbnNlaWduZUVudGFzc2VyRW50ZW5kcmVFbnRpZXJFbnRvdXJlckVudHJhdmVyRS9udW1lL3JlckVudmFoaXJFbnZpYWJsZUVudm95ZXJFbnp5bWVFL29saWVuRS9wYWlzc2lyRS9wYXJnbmVFL3BhdGFudEUvcGF1bGVFL3BpY2VyaWVFL3BpZGUvbWllRS9waWVyRS9waWxvZ3VlRS9waW5lRS9waXNvZGVFL3BpdGFwaGVFL3BvcXVlRS9wcmV1dmVFL3Byb3V2ZXJFL3B1aXNhbnRFL3F1ZXJyZUUvcXVpcGVFL3JpZ2VyRS9yb3Npb25FcnJldXJFL3J1cHRpb25Fc2NhbGllckVzcGFkb25Fc3BlLWNlRXNwaWUtZ2xlRXNwb2lyRXNwcml0RXNxdWl2ZXJFc3NheWVyRXNzZW5jZUVzc2lldUVzc29yZXJFc3RpbWVFc3RvbWFjRXN0cmFkZUUvdGFnZS1yZUUvdGFsZXJFL3RhbmNoZUUvdGF0aXF1ZUUvdGVpbmRyZUUvdGVuZG9pckUvdGVybmVsRS90aGFub2xFL3RoaXF1ZUV0aG5pZUUvdGlyZXJFL3RvZmZlckUvdG9pbGVFL3Rvbm5hbnRFL3RvdXJkaXJFL3RyYW5nZUUvdHJvaXRFL3R1ZGVFdXBob3JpZUUvdmFsdWVyRS92YXNpb25FL3ZlbnRhaWxFL3ZpZGVuY2VFL3ZpdGVyRS92b2x1dGlmRS92b3F1ZXJFeGFjdEV4YWdlL3JlckV4YXVjZXJFeGNlbGxlckV4Y2l0YW50RXhjbHVzaWZFeGN1c2VFeGUvY3V0ZXJFeGVtcGxlRXhlcmNlckV4aGFsZXJFeGhvcnRlckV4aWdlbmNlRXhpbGVyRXhpc3RlckV4b3RpcXVlRXhwZS9kaWVyRXhwbG9yZXJFeHBvc2VyRXhwcmltZXJFeHF1aXNFeHRlbnNpZkV4dHJhaXJlRXh1bHRlckZhYmxlRmFidWxldXhGYWNldHRlRmFjaWxlRmFjdHVyZUZhaWJsaXJGYWxhaXNlRmFtZXV4RmFtaWxsZUZhcmNldXJGYXJmZWx1RmFyaW5lRmFyb3VjaGVGYXNjaW5lckZhdGFsRmF0aWd1ZUZhdWNvbkZhdXRpZkZhdmV1ckZhdm9yaUZlL2JyaWxlRmUvY29uZGVyRmUvZGUvcmVyRmUvbGluRmVtbWVGZS9tdXJGZW5kb2lyRmUvb2RhbEZlcm1lckZlL3JvY2VGZXJ2ZXVyRmVzdGl2YWxGZXVpbGxlRmV1dHJlRmUvdnJpZXJGaWFzY29GaWNlbGVyRmljdGlmRmlkZS1sZUZpZ3VyZUZpbGF0dXJlRmlsZXRhZ2VGaWxpZS1yZUZpbGxldWxGaWxtZXJGaWxvdUZpbHRyZXJGaW5hbmNlckZpbmlyRmlvbGVGaXJtZUZpc3N1cmVGaXhlckZsYWlyZXJGbGFtbWVGbGFzcXVlRmxhdHRldXJGbGUvYXVGbGUtY2hlRmxldXJGbGV4aW9uRmxvY29uRmxvcmVGbHVjdHVlckZsdWlkZUZsdXZpYWxGb2xpZUZvbmRlcmllRm9uZ2libGVGb250YWluZUZvcmNlckZvcmdlcm9uRm9ybXVsZXJGb3J0dW5lRm9zc2lsZUZvdWRyZUZvdWdlLXJlRm91aWxsZXJGb3VsdXJlRm91cm1pRnJhZ2lsZUZyYWlzZUZyYW5jaGlyRnJhcHBlckZyYXlldXJGcmUvZ2F0ZUZyZWluZXJGcmVsb25GcmUvbWlyRnJlL25lL3NpZUZyZS1yZUZyaWFibGVGcmljdGlvbkZyaXNzb25Gcml2b2xlRnJvaWRGcm9tYWdlRnJvbnRhbEZyb3R0ZXJGcnVpdEZ1Z2l0aWZGdWl0ZUZ1cmV1ckZ1cmlldXhGdXJ0aWZGdXNpb25GdXR1ckdhZ25lckdhbGF4aWVHYWxlcmllR2FtYmFkZXJHYXJhbnRpckdhcmRpZW5HYXJuaXJHYXJyaWd1ZUdhemVsbGVHYXpvbkdlL2FudEdlL2xhdGluZUdlL2x1bGVHZW5kYXJtZUdlL25lL3JhbEdlL25pZUdlbm91R2VudGlsR2Uvb2xvZ2llR2Uvb21lLXRyZUdlL3Jhbml1bUdlcm1lR2VzdHVlbEdleXNlckdpYmllckdpY2xlckdpcmFmZUdpdnJlR2xhY2VHbGFpdmVHbGlzc2VyR2xvYmVHbG9pcmVHbG9yaWV1eEdvbGZldXJHb21tZUdvbmZsZXJHb3JnZUdvcmlsbGVHb3Vkcm9uR291ZmZyZUdvdWxvdEdvdXBpbGxlR291cm1hbmRHb3V0dGVHcmFkdWVsR3JhZmZpdGlHcmFpbmVHcmFuZEdyYXBwaW5HcmF0dWl0R3JhdmlyR3JlbmF0R3JpZmZ1cmVHcmlsbGVyR3JpbXBlckdyb2duZXJHcm9uZGVyR3JvdHRlR3JvdXBlR3J1Z2VyR3J1dGllckdydXllLXJlR3VlL3BhcmRHdWVycmllckd1aWRlR3VpbWF1dmVHdWl0YXJlR3VzdGF0aWZHeW1uYXN0ZUd5cm9zdGF0SGFiaXR1ZGVIYWNob2lySGFsdGVIYW1lYXVIYW5nYXJIYW5uZXRvbkhhcmljb3RIYXJtb25pZUhhcnBvbkhhc2FyZEhlL2xpdW1IZS9tYXRvbWVIZXJiZUhlL3Jpc3Nvbkhlcm1pbmVIZS9yb25IZS9zaXRlckhldXJldXhIaWJlcm5lckhpYm91SGlsYXJhbnRIaXN0b2lyZUhpdmVySG9tYXJkSG9tbWFnZUhvbW9nZS1uZUhvbm5ldXJIb25vcmVySG9udGV1eEhvcmRlSG9yaXpvbkhvcmxvZ2VIb3Jtb25lSG9ycmlibGVIb3VsZXV4SG91c3NlSHVibG90SHVpbGV1eEh1bWFpbkh1bWJsZUh1bWlkZUh1bW91ckh1cmxlckh5ZHJvbWVsSHlnaWUtbmVIeW1uZUh5cG5vc2VJZHlsbGVJZ25vcmVySWd1YW5lSWxsaWNpdGVJbGx1c2lvbkltYWdlSW1iaWJlckltaXRlckltbWVuc2VJbW1vYmlsZUltbXVhYmxlSW1wYWN0SW1wZS9yaWFsSW1wbG9yZXJJbXBvc2VySW1wcmltZXJJbXB1dGVySW5jYXJuZXJJbmNlbmRpZUluY2lkZW50SW5jbGluZXJJbmNvbG9yZUluZGV4ZXJJbmRpY2VJbmR1Y3RpZkluZS9kaXRJbmVwdGllSW5leGFjdEluZmluaUluZmxpZ2VySW5mb3JtZXJJbmZ1c2lvbkluZ2UvcmVySW5oYWxlckluaGliZXJJbmplY3RlckluanVyZUlubm9jZW50SW5vY3VsZXJJbm9uZGVySW5zY3JpcmVJbnNlY3RlSW5zaWduZUluc29saXRlSW5zcGlyZXJJbnN0aW5jdEluc3VsdGVySW50YWN0SW50ZW5zZUludGltZUludHJpZ3VlSW50dWl0aWZJbnV0aWxlSW52YXNpb25JbnZlbnRlckludml0ZXJJbnZvcXVlcklyb25pcXVlSXJyYWRpZXJJcnJlL2VsSXJyaXRlcklzb2xlckl2b2lyZUl2cmVzc2VKYWd1YXJKYWlsbGlySmFtYmVKYW52aWVySmFyZGluSmF1Z2VySmF1bmVKYXZlbG90SmV0YWJsZUpldG9uSmV1ZGlKZXVuZXNzZUpvaW5kcmVKb25jaGVySm9uZ2xlckpvdWV1ckpvdWlzc2lmSm91cm5hbEpvdmlhbEpveWF1Sm95ZXV4SnViaWxlckp1Z2VtZW50SnVuaW9ySnVwb25KdXJpc3RlSnVzdGljZUp1dGV1eEp1dmUvbmlsZUtheWFrS2ltb25vS2lvc3F1ZUxhYmVsTGFiaWFsTGFib3VyZXJMYWNlL3JlckxhY3Rvc2VMYWd1bmVMYWluZUxhaXNzZXJMYWl0aWVyTGFtYmVhdUxhbWVsbGVMYW1wZUxhbmNldXJMYW5nYWdlTGFudGVybmVMYXBpbkxhcmdldXJMYXJtZUxhdXJpZXJMYXZhYm9MYXZvaXJMZWN0dXJlTGUvZ2FsTGUvZ2VyTGUvZ3VtZUxlc3NpdmVMZXR0cmVMZXZpZXJMZXhpcXVlTGUvemFyZExpYXNzZUxpYmUvcmVyTGlicmVMaWNlbmNlTGljb3JuZUxpZS1nZUxpZS12cmVMaWdhdHVyZUxpZ290ZXJMaWd1ZUxpbWVyTGltaXRlTGltb25hZGVMaW1waWRlTGluZS9haXJlTGluZ290TGlvbmNlYXVMaXF1aWRlTGlzaWUtcmVMaXN0ZXJMaXRoaXVtTGl0aWdlTGl0dG9yYWxMaXZyZXVyTG9naXF1ZUxvaW50YWluTG9pc2lyTG9tYnJpY0xvdGVyaWVMb3VlckxvdXJkTG91dHJlTG91dmVMb3lhbEx1YmllTHVjaWRlTHVjcmF0aWZMdWV1ckx1Z3VicmVMdWlzYW50THVtaWUtcmVMdW5haXJlTHVuZGlMdXJvbkx1dHRlckx1eHVldXhNYWNoaW5lTWFnYXNpbk1hZ2VudGFNYWdpcXVlTWFpZ3JlTWFpbGxvbk1haW50aWVuTWFpcmllTWFpc29uTWFqb3Jlck1hbGF4ZXJNYWxlL2ZpY2VNYWxoZXVyTWFsaWNlTWFsbGV0dGVNYW1tb3V0aE1hbmRhdGVyTWFuaWFibGVNYW5xdWFudE1hbnRlYXVNYW51ZWxNYXJhdGhvbk1hcmJyZU1hcmNoYW5kTWFyZGlNYXJpdGltZU1hcnF1ZXVyTWFycm9uTWFydGVsZXJNYXNjb3R0ZU1hc3NpZk1hdGUvcmllbE1hdGllLXJlTWF0cmFxdWVNYXVkaXJlTWF1c3NhZGVNYXV2ZU1heGltYWxNZS9jaGFudE1lL2Nvbm51TWUvZGFpbGxlTWUvZGVjaW5NZS9kaXRlck1lL2R1c2VNZWlsbGV1ck1lL2xhbmdlTWUvbG9kaWVNZW1icmVNZS9tb2lyZU1lbmFjZXJNZW5lck1lbmhpck1lbnNvbmdlTWVudG9yTWVyY3JlZGlNZS9yaXRlTWVybGVNZXNzYWdlck1lc3VyZU1lL3RhbE1lL3RlL29yZU1lL3Rob2RlTWUvdGllck1ldWJsZU1pYXVsZXJNaWNyb2JlTWlldHRlTWlnbm9uTWlncmVyTWlsaWV1TWlsbGlvbk1pbWlxdWVNaW5jZU1pbmUvcmFsTWluaW1hbE1pbm9yZXJNaW51dGVNaXJhY2xlTWlyb2l0ZXJNaXNzaWxlTWl4dGVNb2JpbGVNb2Rlcm5lTW9lbGxldXhNb25kaWFsTW9uaXRldXJNb25uYWllTW9ub3RvbmVNb25zdHJlTW9udGFnbmVNb251bWVudE1vcXVldXJNb3JjZWF1TW9yc3VyZU1vcnRpZXJNb3RldXJNb3RpZk1vdWNoZU1vdWZsZU1vdWxpbk1vdXNzb25Nb3V0b25Nb3V2YW50TXVsdGlwbGVNdW5pdGlvbk11cmFpbGxlTXVyZS1uZU11cm11cmVNdXNjbGVNdXNlL3VtTXVzaWNpZW5NdXRhdGlvbk11dGVyTXV0dWVsTXlyaWFkZU15cnRpbGxlTXlzdGUtcmVNeXRoaXF1ZU5hZ2V1ck5hcHBlTmFycXVvaXNOYXJyZXJOYXRhdGlvbk5hdGlvbk5hdHVyZU5hdWZyYWdlTmF1dGlxdWVOYXZpcmVOZS9idWxldXhOZWN0YXJOZS9mYXN0ZU5lL2dhdGlvbk5lL2dsaWdlck5lL2dvY2llck5laWdlTmVydmV1eE5ldHRveWVyTmV1cm9uZU5ldXRyb25OZXZldU5pY2hlTmlja2VsTml0cmF0ZU5pdmVhdU5vYmxlTm9jaWZOb2N0dXJuZU5vaXJjZXVyTm9pc2V0dGVOb21hZGVOb21icmV1eE5vbW1lck5vcm1hdGlmTm90YWJsZU5vdGlmaWVyTm90b2lyZU5vdXJyaXJOb3V2ZWF1Tm92YXRldXJOb3ZlbWJyZU5vdmljZU51YWdlTnVhbmNlck51aXJlTnVpc2libGVOdW1lL3JvTnVwdGlhbE51cXVlTnV0cml0aWZPYmUvaXJPYmplY3RpZk9ibGlnZXJPYnNjdXJPYnNlcnZlck9ic3RhY2xlT2J0ZW5pck9idHVyZXJPY2Nhc2lvbk9jY3VwZXJPY2UvYW5PY3RvYnJlT2N0cm95ZXJPY3R1cGxlck9jdWxhaXJlT2RldXJPZG9yYW50T2ZmZW5zZXJPZmZpY2llck9mZnJpck9naXZlT2lzZWF1T2lzaWxsb25PbGZhY3RpZk9saXZpZXJPbWJyYWdlT21ldHRyZU9uY3R1ZXV4T25kdWxlck9uZS9yZXV4T25pcmlxdWVPcGFsZU9wYXF1ZU9wZS9yZXJPcGluaW9uT3Bwb3J0dW5PcHByaW1lck9wdGVyT3B0aXF1ZU9yYWdldXhPcmFuZ2VPcmJpdGVPcmRvbm5lck9yZWlsbGVPcmdhbmVPcmd1ZWlsT3JpZmljZU9ybmVtZW50T3JxdWVPcnRpZU9zY2lsbGVyT3Ntb3NlT3NzYXR1cmVPdGFyaWVPdXJhZ2FuT3Vyc29uT3V0aWxPdXRyYWdlck91dnJhZ2VPdmF0aW9uT3h5ZGVPeHlnZS1uZU96b25lUGFpc2libGVQYWxhY2VQYWxtYXJlLXNQYWxvdXJkZVBhbHBlclBhbmFjaGVQYW5kYVBhbmdvbGluUGFuaXF1ZXJQYW5uZWF1UGFub3JhbWFQYW50YWxvblBhcGF5ZVBhcGllclBhcG90ZXJQYXB5cnVzUGFyYWRveGVQYXJjZWxsZVBhcmVzc2VQYXJmdW1lclBhcmxlclBhcm9sZVBhcnJhaW5QYXJzZW1lclBhcnRhZ2VyUGFydXJlUGFydmVuaXJQYXNzaW9uUGFzdGUtcXVlUGF0ZXJuZWxQYXRpZW5jZVBhdHJvblBhdmlsbG9uUGF2b2lzZXJQYXllclBheXNhZ2VQZWlnbmVQZWludHJlUGVsYWdlUGUvbGljYW5QZWxsZVBlbG91c2VQZWx1Y2hlUGVuZHVsZVBlL25lL3RyZXJQZS9uaWJsZVBlbnNpZlBlL251cmllUGUvcGl0ZVBlL3BsdW1QZXJkcml4UGVyZm9yZXJQZS9yaW9kZVBlcm11dGVyUGVycGxleGVQZXJzaWxQZXJ0ZVBlc2VyUGUvdGFsZVBldGl0UGUvdHJpclBldXBsZVBoYXJhb25QaG9iaWVQaG9xdWVQaG90b25QaHJhc2VQaHlzaXF1ZVBpYW5vUGljdHVyYWxQaWUtY2VQaWVycmVQaWV1dnJlUGlsb3RlUGluY2VhdVBpcGV0dGVQaXF1ZXJQaXJvZ3VlUGlzY2luZVBpc3RvblBpdm90ZXJQaXhlbFBpenphUGxhY2FyZFBsYWZvbmRQbGFpc2lyUGxhbmVyUGxhcXVlUGxhc3Ryb25QbGF0ZWF1UGxldXJlclBsZXh1c1BsaWFnZVBsb21iUGxvbmdlclBsdWllUGx1bWFnZVBvY2hldHRlUG9lL3NpZVBvZS10ZVBvaW50ZVBvaXJpZXJQb2lzc29uUG9pdnJlUG9sYWlyZVBvbGljaWVyUG9sbGVuUG9seWdvbmVQb21tYWRlUG9tcGllclBvbmN0dWVsUG9uZGUvcmVyUG9uZXlQb3J0aXF1ZVBvc2l0aW9uUG9zc2UvZGVyUG9zdHVyZVBvdGFnZXJQb3RlYXVQb3Rpb25Qb3VjZVBvdWxhaW5Qb3Vtb25Qb3VycHJlUG91c3NpblBvdXZvaXJQcmFpcmllUHJhdGlxdWVQcmUvY2lldXhQcmUvZGlyZVByZS9maXhlUHJlL2x1ZGVQcmUvbm9tUHJlL3NlbmNlUHJlL3RleHRlUHJlL3ZvaXJQcmltaXRpZlByaW5jZVByaXNvblByaXZlclByb2JsZS1tZVByb2NlL2RlclByb2RpZ2VQcm9mb25kUHJvZ3JlLXNQcm9pZVByb2pldGVyUHJvbG9ndWVQcm9tZW5lclByb3ByZVByb3NwZS1yZVByb3RlL2dlclByb3Vlc3NlUHJvdmVyYmVQcnVkZW5jZVBydW5lYXVQc3ljaG9zZVB1YmxpY1B1Y2Vyb25QdWlzZXJQdWxwZVB1bHNhclB1bmFpc2VQdW5pdGlmUHVwaXRyZVB1cmlmaWVyUHV6emxlUHlyYW1pZGVRdWFzYXJRdWVyZWxsZVF1ZXN0aW9uUXVpZS90dWRlUXVpdHRlclF1b3RpZW50UmFjaW5lUmFjb250ZXJSYWRpZXV4UmFnb25kaW5SYWlkZXVyUmFpc2luUmFsZW50aXJSYWxsb25nZVJhbWFzc2VyUmFwaWRlUmFzYWdlUmF0aXNzZXJSYXZhZ2VyUmF2aW5SYXlvbm5lclJlL2FjdGlmUmUvYWdpclJlL2FsaXNlclJlL2FuaW1lclJlY2V2b2lyUmUvY2l0ZXJSZS9jbGFtZXJSZS9jb2x0ZXJSZWNydXRlclJlY3VsZXJSZWN5Y2xlclJlL2RpZ2VyUmVkb3V0ZXJSZWZhaXJlUmUvZmxleGVSZS9mb3JtZXJSZWZyYWluUmVmdWdlUmUvZ2FsaWVuUmUvZ2lvblJlL2dsYWdlUmUvZ3VsaWVyUmUvaXRlL3JlclJlamV0ZXJSZWpvdWVyUmVsYXRpZlJlbGV2ZXJSZWxpZWZSZW1hcnF1ZVJlbWUtZGVSZW1pc2VSZW1vbnRlclJlbXBsaXJSZW11ZXJSZW5hcmRSZW5mb3J0UmVuaWZsZXJSZW5vbmNlclJlbnRyZXJSZW52b2lSZXBsaWVyUmVwb3J0ZXJSZXByaXNlUmVwdGlsZVJlcXVpblJlL3NlcnZlUmUvc2luZXV4UmUvc291ZHJlUmVzcGVjdFJlc3RlclJlL3N1bHRhdFJlL3RhYmxpclJldGVuaXJSZS90aWN1bGVSZXRvbWJlclJldHJhY2VyUmUvdW5pb25SZS91c3NpclJldmFuY2hlUmV2aXZyZVJlL3ZvbHRlUmUvdnVsc2lmUmljaGVzc2VSaWRlYXVSaWV1clJpZ2lkZVJpZ29sZXJSaW5jZXJSaXBvc3RlclJpc2libGVSaXNxdWVSaXR1ZWxSaXZhbFJpdmllLXJlUm9jaGV1eFJvbWFuY2VSb21wcmVSb25jZVJvbmRpblJvc2VhdVJvc2llclJvdGF0aWZSb3RvclJvdHVsZVJvdWdlUm91aWxsZVJvdWxlYXVSb3V0aW5lUm95YXVtZVJ1YmFuUnViaXNSdWNoZVJ1ZWxsZVJ1Z3VldXhSdWluZXJSdWlzc2VhdVJ1c2VyUnVzdGlxdWVSeXRobWVTYWJsZXJTYWJvdGVyU2FicmVTYWNvY2hlU2FmYXJpU2FnZXNzZVNhaXNpclNhbGFkZVNhbGl2ZVNhbG9uU2FsdWVyU2FtZWRpU2FuY3Rpb25TYW5nbGllclNhcmNhc21lU2FyZGluZVNhdHVyZXJTYXVncmVudVNhdW1vblNhdXRlclNhdXZhZ2VTYXZhbnRTYXZvbm5lclNjYWxwZWxTY2FuZGFsZVNjZS9sZS9yYXRTY2UvbmFyaW9TY2VwdHJlU2NoZS9tYVNjaWVuY2VTY2luZGVyU2NvcmVTY3J1dGluU2N1bHB0ZXJTZS9hbmNlU2UvY2FibGVTZS9jaGVyU2Vjb3VlclNlL2NyZS90ZXJTZS9kYXRpZlNlL2R1aXJlU2VpZ25ldXJTZS9qb3VyU2UvbGVjdGlmU2VtYWluZVNlbWJsZXJTZW1lbmNlU2UvbWluYWxTZS9uYXRldXJTZW5zaWJsZVNlbnRlbmNlU2UvcGFyZXJTZS9xdWVuY2VTZXJlaW5TZXJnZW50U2UvcmlldXhTZXJydXJlU2UvcnVtU2VydmljZVNlL3NhbWVTZS92aXJTZXZyYWdlU2V4dHVwbGVTaWRlL3JhbFNpZS1jbGVTaWUvZ2VyU2lmZmxlclNpZ2xlU2lnbmFsU2lsZW5jZVNpbGljaXVtU2ltcGxlU2luY2UtcmVTaW5pc3RyZVNpcGhvblNpcm9wU2lzbWlxdWVTaXR1ZXJTa2llclNvY2lhbFNvY2xlU29kaXVtU29pZ25ldXhTb2xkYXRTb2xlaWxTb2xpdHVkZVNvbHVibGVTb21icmVTb21tZWlsU29tbm9sZXJTb25kZVNvbmdldXJTb25uZXR0ZVNvbm9yZVNvcmNpZXJTb3J0aXJTb3NpZVNvdHRpc2VTb3VjaWV1eFNvdWR1cmVTb3VmZmxlU291bGV2ZXJTb3VwYXBlU291cmNlU291dGlyZXJTb3V2ZW5pclNwYWNpZXV4U3BhdGlhbFNwZS9jaWFsU3BoZS1yZVNwaXJhbFN0YWJsZVN0YXRpb25TdGVybnVtU3RpbXVsdXNTdGlwdWxlclN0cmljdFN0dWRpZXV4U3R1cGV1clN0eWxpc3RlU3VibGltZVN1YnN0cmF0U3VidGlsU3VidmVuaXJTdWNjZS1zU3VjcmVTdWZmaXhlU3VnZ2UvcmVyU3VpdmV1clN1bGZhdGVTdXBlcmJlU3VwcGxpZXJTdXJmYWNlU3VyaWNhdGVTdXJtZW5lclN1cnByaXNlU3Vyc2F1dFN1cnZpZVN1c3BlY3RTeWxsYWJlU3ltYm9sZVN5bWUvdHJpZVN5bmFwc2VTeW50YXhlU3lzdGUtbWVUYWJhY1RhYmxpZXJUYWN0aWxlVGFpbGxlclRhbGVudFRhbGlzbWFuVGFsb25uZXJUYW1ib3VyVGFtaXNlclRhbmdpYmxlVGFwaXNUYXF1aW5lclRhcmRlclRhcmlmVGFydGluZVRhc3NlVGF0YW1pVGF0b3VhZ2VUYXVwZVRhdXJlYXVUYXhlclRlL21vaW5UZW1wb3JlbFRlbmFpbGxlVGVuZHJlVGVuZXVyVGVuaXJUZW5zaW9uVGVybWluZXJUZXJuZVRlcnJpYmxlVGUvdGluZVRleHRlVGhlLW1lVGhlL29yaWVUaGUvcmFwaWVUaG9yYXhUaWJpYVRpZS1kZVRpbWlkZVRpcmVsaXJlVGlyb2lyVGlzc3VUaXRhbmVUaXRyZVRpdHViZXJUb2JvZ2dhblRvbGUvcmFudFRvbWF0ZVRvbmlxdWVUb25uZWF1VG9wb255bWVUb3JjaGVUb3JkcmVUb3JuYWRlVG9ycGlsbGVUb3JyZW50VG9yc2VUb3J0dWVUb3RlbVRvdWNoZXJUb3VybmFnZVRvdXNzZXJUb3hpbmVUcmFjdGlvblRyYWZpY1RyYWdpcXVlVHJhaGlyVHJhaW5UcmFuY2hlclRyYXZhaWxUcmUtZmxlVHJlbXBlclRyZS9zb3JUcmV1aWxUcmlhZ2VUcmlidW5hbFRyaWNvdGVyVHJpbG9naWVUcmlvbXBoZVRyaXBsZXJUcml0dXJlclRyaXZpYWxUcm9tYm9uZVRyb25jVHJvcGljYWxUcm91cGVhdVR1aWxlVHVsaXBlVHVtdWx0ZVR1bm5lbFR1cmJpbmVUdXRldXJUdXRveWVyVHV5YXVUeW1wYW5UeXBob25UeXBpcXVlVHlyYW5VYnVlc3F1ZVVsdGltZVVsdHJhc29uVW5hbmltZVVuaWZpZXJVbmlvblVuaXF1ZVVuaXRhaXJlVW5pdmVyc1VyYW5pdW1VcmJhaW5VcnRpY2FudFVzYWdlVXNpbmVVc3VlbFVzdXJlVXRpbGVVdG9waWVWYWNhcm1lVmFjY2luVmFnYWJvbmRWYWd1ZVZhaWxsYW50VmFpbmNyZVZhaXNzZWF1VmFsYWJsZVZhbGlzZVZhbGxvblZhbHZlVmFtcGlyZVZhbmlsbGVWYXBldXJWYXJpZXJWYXNldXhWYXNzYWxWYXN0ZVZlY3RldXJWZWRldHRlVmUvZ2UvdGFsVmUvaGljdWxlVmVpbmFyZFZlL2xvY2VWZW5kcmVkaVZlL25lL3JlclZlbmdlclZlbmltZXV4VmVudG91c2VWZXJkdXJlVmUvcmluVmVybmlyVmVycm91VmVyc2VyVmVydHVWZXN0b25WZS90ZS9yYW5WZS90dXN0ZVZleGFudFZleGVyVmlhZHVjVmlhbmRlVmljdG9pcmVWaWRhbmdlVmlkZS9vVmlnbmV0dGVWaWd1ZXVyVmlsYWluVmlsbGFnZVZpbmFpZ3JlVmlvbG9uVmlwZS1yZVZpcmVtZW50VmlydHVvc2VWaXJ1c1Zpc2FnZVZpc2V1clZpc2lvblZpc3F1ZXV4VmlzdWVsVml0YWxWaXRlc3NlVml0aWNvbGVWaXRyaW5lVml2YWNlVml2aXBhcmVWb2NhdGlvblZvZ3VlclZvaWxlVm9pc2luVm9pdHVyZVZvbGFpbGxlVm9sY2FuVm9sdGlnZXJWb2x1bWVWb3JhY2VWb3J0ZXhWb3RlclZvdWxvaXJWb3lhZ2VWb3llbGxlV2Fnb25YZS9ub25ZYWNodFplLWJyZVplL25pdGhaZXN0ZVpvb2xvZ2llIjt2YXIgd29yZGxpc3QkMT1udWxsO3ZhciBsb29rdXA9e307ZnVuY3Rpb24gZHJvcERpYWNyaXRpYyh3b3JkKXt3b3JkbGlzdC5sb2dnZXIuY2hlY2tOb3JtYWxpemUoKTtyZXR1cm4gbGliJDgudG9VdGY4U3RyaW5nKEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChsaWIkOC50b1V0ZjhCeXRlcyh3b3JkLm5vcm1hbGl6ZSgiTkZEIikudG9Mb3dlckNhc2UoKSksZnVuY3Rpb24oYyl7cmV0dXJuIGM+PTY1JiZjPD05MHx8Yz49OTcmJmM8PTEyM30pKX1mdW5jdGlvbiBleHBhbmQod29yZCl7dmFyIG91dHB1dD1bXTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGxpYiQ4LnRvVXRmOEJ5dGVzKHdvcmQpLGZ1bmN0aW9uKGMpe2lmKGM9PT00Nyl7b3V0cHV0LnB1c2goMjA0KTtvdXRwdXQucHVzaCgxMjkpfWVsc2UgaWYoYz09PTQ1KXtvdXRwdXQucHVzaCgyMDQpO291dHB1dC5wdXNoKDEyOCl9ZWxzZXtvdXRwdXQucHVzaChjKX19KTtyZXR1cm4gbGliJDgudG9VdGY4U3RyaW5nKG91dHB1dCl9ZnVuY3Rpb24gbG9hZFdvcmRzKGxhbmcpe2lmKHdvcmRsaXN0JDEhPW51bGwpe3JldHVybn13b3JkbGlzdCQxPXdvcmRzLnJlcGxhY2UoLyhbQS1aXSkvZywiICQxIikudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMSkuc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24odyl7cmV0dXJuIGV4cGFuZCh3KX0pO3dvcmRsaXN0JDEuZm9yRWFjaChmdW5jdGlvbih3b3JkLGluZGV4KXtsb29rdXBbZHJvcERpYWNyaXRpYyh3b3JkKV09aW5kZXh9KTtpZih3b3JkbGlzdC5Xb3JkbGlzdC5jaGVjayhsYW5nKSE9PSIweDUxZGViN2FlMDA5MTQ5ZGM2MWE2YmQxOGE5MThlYjdhYzc4ZDI3NzU3MjZjNjhlNTk4YjkyZDAwMjUxOWIwNDUiKXt3b3JkbGlzdCQxPW51bGw7dGhyb3cgbmV3IEVycm9yKCJCSVAzOSBXb3JkbGlzdCBmb3IgZnIgKEZyZW5jaCkgRkFJTEVEIil9fXZhciBMYW5nRnI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTGFuZ0ZyLF9zdXBlcik7ZnVuY3Rpb24gTGFuZ0ZyKCl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImZyIil8fHRoaXN9TGFuZ0ZyLnByb3RvdHlwZS5nZXRXb3JkPWZ1bmN0aW9uKGluZGV4KXtsb2FkV29yZHModGhpcyk7cmV0dXJuIHdvcmRsaXN0JDFbaW5kZXhdfTtMYW5nRnIucHJvdG90eXBlLmdldFdvcmRJbmRleD1mdW5jdGlvbih3b3JkKXtsb2FkV29yZHModGhpcyk7cmV0dXJuIGxvb2t1cFtkcm9wRGlhY3JpdGljKHdvcmQpXX07cmV0dXJuIExhbmdGcn0od29yZGxpc3QuV29yZGxpc3QpO3ZhciBsYW5nRnI9bmV3IExhbmdGcjtleHBvcnRzLmxhbmdGcj1sYW5nRnI7d29yZGxpc3QuV29yZGxpc3QucmVnaXN0ZXIobGFuZ0ZyKX0pO3ZhciBsYW5nRnI9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGFuZ0ZyXzEpO3ZhciBsYW5nSmFfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmxhbmdKYT12b2lkIDA7dmFyIGRhdGE9WyJBUVJBU1JBR0JBR1VBSVJBSEJBZ2hBVVJBZEJBZGNBbm9BTUVBRkJBRkNCS0ZCUVJCU0ZCQ1hCQ0RCQ0hCR0ZCRVFCcEJCcFFCSWtCSE5CZU9CZ0ZCVkNCaEJCaE5CbU9CbVJCaUhCaUZCVUZCWkRCdkZCc1hCa0ZCbGNCallCd0RCTUJCVEJCVFJCV0JCV1hYYVFYYVJYUVdYU1JYQ0ZYWUJYcEhYT1FYSFJYaFJYdVJYbVhYYlJYbFhYd0RYVFJYckNYV1FYV0dhQldhS2NhWWdhc0ZhZFFhbG1hTUJhY0FLYVJLS0JLS1hLS2pLUVJLRFJLQ1lLQ1JLSURLZVZLSGNLbFhLakhLcllOQUhOQldOYVJOS2NOSUJOSU9ObVhOc1hOZFhObkJOTUJOUkJOclhOV0ROV01ORk9RQUJRQUhRQnJRWEJRWEZRYVJRS1hRS0RRS09RS0ZRTkJRTkRRUWdRQ1hRQ0RRR0JRR0RRR2RRWVhRcEJRcFFRcEhRTFhRSHVRZ0JRaEJRaENRdUZRbVhRaURRVUZRWkRRc0ZRZFJRa0hRYlJRbE9RbG1RUERRakRRd1hRTUJRTURRY0ZRVEJRVEhRckREWFFETkZER0JER1FER1JEcEZEaEZEbVhEWlhEYlJETVlEUmREVFJEclhTQWhTQkNTQnJTR1FTRVFTSEJTVlJTaFlTaGtTeVFTdUZTaUJTZGNTb0VTb2NTbG1TTUJTRkJTRktTRk5TRmRTRmNDQnlDYVJDS2NDU0JDU1JDQ3JDR2JDRUhDWVhDcEJDcFFDSUJDSUhDZU5DZ0JDZ0ZDVkVDVmNDbWtDbXdDWlhDWkZDZFJDbE9DbG1DbEZDakRDamRDblhDd0JDd1hDY1JDRlFDRmpHWGhHTmhHREVHRE1HQ0RHQ0hHSUZHZ0JHVlhHVkVHVlJHbVhHc1hHZFlHb1NHYlJHblhHd1hHd0RHV1JHRk5HRkxHRk9HRmRHRmtFQUJFQkRFQkZFWE9FYUJFS1NFTkJFTkRFWVhFSWdFSWtFZ0JFZ1FFZ0hFaEZFdWRFdUZFaUJFaUhFaUZFWkRFdkJFc1hFc0ZFZFhFZFJFa0ZFYkJFYlJFbEZFUENFZmtFRk5ZQUVZQWhZQk5ZUWRZRFhZU1JZQ0VZWW9ZZ1FZZ1JZdVJZbUNZWlRZZEJZYkVZbFhZalFZUmJZV1JwS1hwUW9wUW5wU0ZwQ1hwSUJwSVNwaE5wZEJwZFJwYlJwY1pwRkJwRk5wRkRwRm9wRnJMQURMQnVMWFFMWGNMYUZMQ1hMRWhMcEJMcEZMSFhMZVZMaElMZEhMZFJMb0RMYlJMclhJQUJJQlFJQkNJQnNJQm9JQk1JQlJJWGFJYVJJS1lJS1JJTkJJTnVJQ0RJR0JJSURJSWtJZ1JJeEZJeVFJaUhJZFJJYllJYlJJbEhJd1JJTVlJY1JJUlZJVFJJRkJJRk5JRlFPQUJPQUZPQlFPYUZPTkJPTk1PUUZPU0ZPQ0RPR0JPRVFPcEJPTFhPSUJPSUZPZ1FPZ0ZPeVFPeWNPbVhPc1hPZElPa0hPTUVPTWtPV1dIQk5IWE5IWFdITlhIRHVIRFJIU3VIU1JISG9IaGtIbVJIZFJIa1FIbGNIbFJId0JIV2NnQUVnQWdnQWtnQk5nQlFnQkVnWE9nWWNnTFhnSGpneVFnaUJnc0ZnZGFnTVlnV1NnRlFnRkVWQlRWWEVWS0JWS05WS0RWS1lWS1JWTkJWTllWREJWRHhWU0JWU1JWQ2pWR05WTFhWSUZWaEJWaGNWc1hWZFJWYlJWbFJoQlloS1loRFloR1NoeFdobU5oZGFoZGtoYlJoam9oTVhoVFJ4QVh4WFN4S0J4TkJ4RVF4ZU54ZVF4aFh4c0Z4ZGJ4bEh4amN4RkJ4Rk54RlF4Rk94Rm95Tll5WW95YmN5TVl1QlF1QlJ1QnJ1RE11Q291SEJ1ZFF1a2t1b0J1bFZ1TVh1RkVtQ1ltQ1JtcFJtZURtaU1tamRtVEZtRlFpQURpQk9pYVJpS1JpTkJpTlJpU0ZpR2tpR0ZpRVJpcFJpTEZpSUZpaFlpYkhpakJpakVpTVhpV0JpRkJpRkNVQlFVWEZVYVJVTkRVTmNVTlJVTkZVREJVU0hVQ0RVR0JVR0ZVRXFVTE5VTG9VSVJVZUVVZVlVZ0JVaEZVdVJVaUZVc1hVZEZVa0hVYkJValNVallVd1hVTURVY0hVUmRVVEJVckJVclhVclFaQUZaWFpaYVJaS0ZaTkJaUUZaQ1haR0JaWWRacEJaTERaSUZaSFhaSE5aZVFaVlJaVkZabVhaaUJadkZaZEZaa0ZaYkhaYkZad1haY0NaY1JaUkJ2QlF2Qkd2Qkx2Qld2Q292TVlzQUZzQkRzYVJzS0ZzTkZzRHJzU0hzU0ZzQ1hzQ1JzRUJzRUhzRWZzcEJzTEJzTERzSWdzSVJzZUdzYlJzRkJzRlFzRlNkTkJkU1JkQ1ZkR0hkWURkSGNkVmJkeVNkdURkc1hkbFJkd1hkV1lkV2NkV1JrQk1rWE9rYVJrTklrTkZrU0ZrQ0ZrWUJrcFJrZU5rZ0JraFZrbVhrc0ZrbFZrTUJrV0RrRk5vQk5vYVFvYUZvTkJvTlhvTmFvTkVvU1JvRXJvWVhvWUNvWWJvcFJvcEZvbVhvamtvd1hvckZiQkViRUliZEJiallsYVJsREVsTVhsRkRqS2pqU1JqR0JqWUJqWWtqcFJqTFhqSUJqT0ZqZVZqYlJqd0JuWFFuU0hucEZuTFhuSU5uTUJuVFJ3WEJ3WE53WFl3TkZ3UUZ3U0J3R0Z3TFh3TER3ZU53Z0J3dUh3akR3blhNQlhNcEZNSUJNZU5NVEhjYVFjTkJjREhjU0ZjQ1hjcEJjTFhjTERjZ0ZjdUZjblhjd1hjY0RjVFFjckZUUUVyWE5yQ0hycEZyZ0ZyYkZyVEhyRmNXTllXTmJXRUhXTVhXVFIiLCJBQkdIQUJJSkFFQVZBWUpRQUxaSkFJYVJBSE5YQUhkY0FIYlJBWkpNQVpKUkFaVFJBZFZKQWtsbUFiY05BamRSQU1uUkFNV1lBV3BSQVdnUkFGZ0JBRmhCQUZkY0JOSkJCTkpEQlFLQkJRaGNCUWxtQkRFSkJZSmtCWUpUQnBOQkJwSkZCSUpCQklKREJJY0FCT0tYQk9FSkJPVkpCT2lKQk9aSkJlcEJCZUxYQmVJRkJlZ0JCZ0dKQlZKWEJ1b2NCaUpSQlVKUUJsWFZCbElUQndORkJNWVZCY3FYQlRsbUJXTkZCV2lKQlduUkJGR0hCRndYWEtHSlhOSkJYTlpKWERUVFhTSFNYU1ZSWFNsSFhDSkRYR1FKWEVoWFhZUUpYWWJSWE9mWFhlTmNYVkpGWGhRSlhoRUpYZFRSWGpkWFhNaEJYY1FUWFJHQlhURUJYVG5RWEZDWFhGT0ZYRmdGYUJhRmFCTkphQkNKYUJwQmFCd1hhTkpLYU5KRGFRSUJhRHBSYUVQRGFITUZhbURKYWxFSmFNWkphRmFGYUZOQmFGUUphRkxEYUZWSEtCQ1lLQkVCS0JIREtYYUZLWEdkS1hFSktYcEhLWElCS1haREtYd1hLS3dMS05hY0tOWUpLTkpvS05XY0tER2RLRFRSS0NoWEtHYVJLR2hCS0diUktFQlRLRWFSS0VQVEtMTURLTFdSS09IREtWSmNLZEJjS2xJQktsT1BLRlNCS0ZFUEtGcEZOQk5KTkpCUU5CR0hOQkVQTkJIWE5CZ0ZOQlZYTkJaRE5Cc1hOQndYTk5hUk5OSkROTkpFTk5Ka05EQ0pORFZETkdKUk5KaUROWkpOTnNDSk5KRk5ORlNCTkZDWE5GRVBORkxYTkZJRlFKQkZRQ2FSUUpFUVFMSkRRTEpGUUlhUlFPcVhRSGFGUUhIUVFWSlhRVkpEUWhOSlFtRUlRWkpGUXNKWFFKckZRV2JSREpBQkRCWUpEWE5GRFhDWERYTFhEWFpERFhzSkRRcVhEU0pGREpDWERFUGtERXFYRFltUURwU0pET0NrRE9HUURIRUlEVkpERHVEdURXRUJESkZnU0JORFNCU0ZTQkdIU0JJQlNCVFFTS1ZZU0pRTlNKUWlTSkNYU0VxWFNKWVZTSWlKU09NWVNIQUhTSGFRU2VDRlNlcFFTZWdCU0hkSFNIckZTaFNKU0p1SFNKVUZTa05SU3JTclNXRUJTRmFIU0pGUVNGQ1hTRkdEU0ZZWFNGT0RTRmdCU0ZWWFNGaEJTRnhGU0ZrRlNGYkJTRk1GQ0FEZENKWEJDWGFGQ1hLRkNYTkZDWENYQ1hHQkNYRUpDWFlCQ1hMRENYSUJDWE9QQ1hIWENYZ0JDWGhCQ1hpQkNYbERDWGNIQ0pOQkNKTkZDRENKQ0RHQkNEVlhDRGhCQ0RpRENESmRDQ21OQ3BKRkNJYVJDT3FYQ0hDSENIWkpDVmlKQ3VDdUNtZGRDSmlGQ2ROQkNkSGhDbEVKQ25VSkNyZVNDV2xnQ1dUUkNGQkZDRk5CQ0ZZQkNGVkZDRmhGQ0ZkU0NGVEJDRldER0JOQkdCUUZHSkJDR0JFcUdCcEJHQmdRR05CRUdOSllHTmtPR05KUkdEVUZHSnBRR0hhQkdKZU5HSmVFR1ZCbEdWS2pHaUpER3ZKSEdzVkpHa0VCR01JSkdXak5HRkJGR0ZDWEdGR0JHRllYR0ZwQkdGTUZFQVNKRUFXcEVKTkZFQ0pWRUlYU0VJUUpFT3FYRU9jRkVlTmNFSEVKRUhsRkVKZ0ZFaGxtRW1ESkVtWkpFaU1CRVVxWEVvU1JFUEJGRVBYRkVQS0ZFUFNGRVBFRkVQcEZFUExYRVBJQkVKUGRFUGNGRVBUQkVKblhFcWxIRU1wUkVGQ1hFRk9ERUZjRllBU0pZSkFGWUJhQllCVlhZWHBGWURoQllDSkJZSkdGWVliUlllTmNZSmVWWWlJSllaSmNZdkpnWXZKUllKc1hZc0pGWU1ZTVlyZVZwQk5IcEJFSnBCd1hwUXhGcFlFSnBlTkRwSmVEcGVTRnBlQ0hwSFVKcEhiQnBIY0hwbVVKcGlpSnBVSnJwc0p1cGxJVHBGYUJwRlFxcEZHQnBGRWZwRllCcEZwQnBGTEpwRklEcEZnQnBGVlhwRnlRcEZ1RnBGbEZwRmpEcEZuWHBGd1hwSkZNcEZUQkxYQ0pMWEVGTFhoRkxYVUpMWGJGTGFsbUxOSkJMU0pRTENMQ0xHSkJMTERKTEhhRkxlTkZMZVNITGVDWExlcEZMaGFSTFpzSkxzSkRMc0pyTG9jYUxsTGxMTWRiTEZOQkxGU0JMRkVITEZrRklCQkZJQlhGSUJhUUlCS1hJQlNGSUJwSElCTFhJQmdCSUJoQklCdUhJQm1YSUJpRklCWlhJQnZGSUJiRklCalFJQndYSUJXRklLVFJJUVVKSURHRklDalFJWVNSSUlOWElKZUNJVmFSSW1Fa0laSkZJdkpSSXNKWElkQ0pJSm9SSWJCUUlqWUJJY3FYSVRGVklyZVZJRktGSUZTRklGQ0pJRkdGSUZMRElGSUJJSkZPSUZnQklGVlhJSkZoSUZ4RklGbVhJRmRISUZiQklKRnJJSkZXT0JHQk9RZlhPT0tqT1VxWE9mWEJPcVhFT2NxWE9SVkpPRklCT0ZsREhCSU9IWGlGSE5UUkhDSlhISWFSSEhKREhIRUpIVmJSSFpKWUhiSUJIUnNKSFJrREhXbG1nQktGZ0JTQmdCQ0RnQkdIZ0JwQmdCSUJnQlZKZ0J1QmdCdkZnS0RUZ1FWWGdEVUpnR1NKZ09xWGdtVU1nWklKZ1RVSmdXSUVnRkJGZ0ZOQmdGREpnRlNGZ0ZHQmdGWVhnSkZPZ0ZnUWdGVlhnRmhCZ0ZiSGdKRldWSkFCVlFLY1ZEZ0ZWT2ZYVmVERlZoYVJWbUdkVmlKWVZNYVJWRk5IaEJORGhCQ1hoQkVxaEJwRmhCTFhoTkpCaFNKUmhlVlhoaEtFaHhsbWhaSUpoZEJRaGtJSmhiTU5oTVVKaE1aSnhOSmd4UVVKeERFa3hEZEZ4U0pSeHBsbXhlU0J4ZUNYeGVHRnhlWVh4ZXBReGVnQnhXVmN4RkVReEZMWHhGSUJ4RmdCeEZ4RHhGWnR4RmRjeEZiQnhGd1h5REpYeURsY3VBU0p1REpwdURJQnVDcEp1R1NKdUlKRnVlRUZ1WklKdXNKWHVkV0V1b0lCdVdHSnVGQmN1RktFdUZORnVGUUZ1RkRKdUZHSnVGVkp1RlV0dUZkSHVGVEJtQllKbU5KWW1RaGttTEpEbUxKb21JZFhtaUpZbXZKUm1zSlJta2xtbU1CeW1NdUNtY2xtbWNuUWlKQUJpSkJOaUpCRGlCU0ZpQkNKaUJFRmlCWUJpQnBGaUJMWGlCVEhpSk5jaURFZmlDWkppRUNKaUpFcWlPa0hpSEtGaWVORGlISlFpZVFjaWVESGllU0ZpZUNYaWVHRmllRUZpZUlIaWVnRmloVUppeE5vaW9OWGlGYUJpRktGaUZORGlGRVBpRllYaXRGT2l0RkhpRmdCaUZWRWlGbVhpRml0aUZiQmlGTUZpRnJGVUNYUVVJb1FVSUpjVUhRSlVlQ0VVSHdYVVVKRFVVcVhVZFdjVWNxWFVyblFVRk5EVUZTSFVGQ0ZVRkVmVUZMWFV0Rk9aQlhPWlhTQlpYcEZaWFZYWkVRSlpFSmtacERKWk9xWFplTkhaZUNEWlVxWFpGQlFaRkVIWkZMWHZCQUZ2QktGdkJDWHZCRVB2QnBIdkJJRHZCZ0Z2QnVIdlFOSnZGTkZ2RkdCdkZJQnZKRmNzWENEc1hMWHNYc1hzWGxGc1hjSHNRcVhzSlFGc0VxWHNlSUZzRkVIc0ZqRGRCeE9kTnBSZE5KUmRFSmJkcEpSZGhaSmRuU0pkcmpOZEZOSmRGUUhkRmhOa05KRGtZYVJrSE5Sa0hTUmtWYlJrdU1Sa2pTSmtjcURvU0pGb0VpSm9ZWkpvT2ZYb2hFQm9NR1FvY3FYYkJBRmJCWEZiQmFGYkJORGJCR0JiQkxYYkJUQmJCV0RiR0pZYklKSGJGUXFiRnBRbERnUWxPckZsVkpSakdFQmpaSlJuWHZKblhiQm5FZkhuT1BEbmdKUm54ZlhuVUpXd1hFSndOcEp3RHBCd0VmWHdyRUJNRENKTURHSE1ESUpNTEpEY1FHRGNRcEhjcVhjY3FORmNxQ1hjRkNKUkJTQlJCR0JSQkVKUkJwUVRCTkZUQlFKVEJwQlRCVlhURkFCVEZTQlRGQ0ZURkdCVEZNRHJYQ0pyWExEckROSnJFZkhyRlFKckZpdFdOamRXTlRSIiwiQUtMSk1BTk9QRkFTTkpJQUVKV1hBWUpOUkFJSWJSQUljZGFBZUVmREFnaWRSQWRqTllBTVlFSkFNSWJSQUZOSkJBRnBKRkJCSUpZQkRaSkZCU2lKaEJHZEVCQkVKZlhCRUpxWEJFSldSQnBhVUpCTFhyWEJJWUpNQk9jZlhCZUVmRkJlc3RYQmpOSlJCY0RKT0JGRXFYWE52SlJYRE1CaFhDSk5ZWE9BV3BYT05KV1hIREVCWGVJYVJYaFlKRFhaSlNKWE1ESk9YY0FTSlhGVkpYYUJRcVhhQlpKRmFzWGRRYUZTSlFhRkVmWGFGcEpIYUZPcVhLQk5TUktYdkpCS1FKaFhLRUpRSktFSkdGS0lOSkJLSUpqTktnSk5TS1ZFbG1LVmhFQktpSkdGS2xCZ0pLam5VSkt3c0pZS01GSUpLRk5KREtGSUpGS0ZPZlhOSkJTRk5KQkNYTkJwSkZOSkJ2UU5KQk1CTkpMSlhOSk9xWE5KZUNYTkplR0ZOZHNKQ05iVEtGTndYVUpRTkZFUFFEaUpjUURNU0pRU0ZwQlFHTVFKUUplT2NReUNKRVFVSkVCUUpGQnJRRkVKcURYREpGREpYcEJESlhJTURHaUpoRElKR1JESmVZY0RIckRKRFZYZ0ZEa0FXcERrSWdSRGpERXFETXZKUkRKRk5GREpGSUJTS2NsbVNKUU9GU0pRVkhTSlFqRFNKR0pCU0pHSkZTRUNKb1NIRUpxU0pIVEJTSlZKRFNWaUpZU1pKTkJTSnNKRFNGU0pGU0ZFZlhTSkZMWENCVUpWQ0pYU0JDSlhwQkNYVkpYQ0pYc1hDSlhkRkNKTkpIQ0xJSmdDSGlKRkNWTkpNQ2hDSmhDVUhFSkNzSlRSQ0pkWWNDb1FKQ0NGRWZYQ0ZJSmdDRlVKeENGc3RGR0pCYVFHSkJJREdRSnFYR1lKTlJHSkhLRkdlUXFER0hFSkZHSmVMWEdISWlKR0hkQmxHVUpFQkdrSUpUR0ZRUERHSkZFcUVBR2VnRUpJSkJFSlZKWEVoUUpURWlKTmNFSlpKRkVKb0VxRWpERXFFUERzWEVQR0pCRVBPcVhFUGVRRkVmRGlERUpmRUZFZmVwUUVmTWlKRXFYTkJFcURJREVxZVNGRXFWSlhFTXZKUllYTkpEWVhFSkhZS1ZKY1lZSkVCWUplRWNZSlVxWFlGcEpGWUZzdFhwQVpKTXBCU0pGcE5CTkZwZVFQRHBITEpEcEhJSkZwSGdKRnBlaXRGcEhaSkZwSkZBRHBGU0pGcEpGQ0pwRk9xWHBGaXRCcEpGWkpMWElKRkxJSmdSTFZOSldMVkhKTUx3TnBKTEZHSkJMRkxKRExGT3FYTEpGVUpJQkRKWElCR0pCSUpCWVFJSkJJQklCT3FYSUJjcURJRUdKRklMTkpUSUlKRUJJT2lKaElKZU5CSUplSUJJaGlKSUlXb1RSSUpGQUhJSkZwQklKRnVISUZVdEZJSkZUSE9TQllKT0VjcVhPSEVKcU92QnBGT2tWSnJPYkJWSk9uY3FET2NOSmtIaE5KUkh1SEp1SGRNaEJnQlVxWGdCc0pYZ09OSkJnSE5KRGdISEpRZ0plaXRnSHNKWGdKeU5hZ3lESkJnWkpEcmdzVkpRZ2tFSk5na2pTSmdKRkFIZ0ZDSkRnRlp0TVZKWE5GVlhRZlhWSlhESlZYb1FKVlFWSlFWREVmWFZEdkpIVkVxTkZWZVFmWFZIcEpGVkh4ZlhWVkpTUlZWbWFSVmxJSk9oQ1hWSmhIallraHhDSlZoV1ZVSmhXaUpjeEJOSkl4ZUVxRHhmWEJGeGNGRVB4RlNKRnhGWUpYeUJEUUp5ZGFVSnlGT1BEdVlDSll1THZKUnVITEpYdVpKTER1Rk9QRHVGWkpIdUZjcVhtS0hKZG1DUUpjbU9zVkppSkFHRml0TENGaWVPZlhpZXN0WGlaSk1FaWtOSlFpclh6RmlGUXFYaUZJSkZpRlpKRmlGdnRGVUhwSkZVdGVJY1V0ZU9jVVZDSmtVaGRIY1ViRUpFVUpxWFFVTU5KaFVSallrVUZpdEZaREdKSFpKSXhEWkpWSlhaSkZESlpKRnBRdkJOSkJ2QlNKRnZKeEJyc2VRcURzVkZWSmRGTEpEa0VKTkJrbU5KWWtGTEpEb1FKT1BvR3NKUm9FQUhCb0VKZkZiQlFxRGJCWkpIYkZWSlhsRklKQmpZSXJYamVpdGNqakNFQmpXTU5Cd1hRZlh3WE9hRndEc0pYd0NKVFJ3ckNaSk1ETkpRY0RESkZjcURPUFJZaUpGVEJzSlhUUUlKQlRGRWZYVEZMSkRyWEVKRnJFSlhNckZaSkZXRUpkRVdZVGxtIiwiQUJDREVGQUNOSlRSQU1CREpkQWNOSlZYQkxOSkVCWFNJZFdSWEVyTkprWFlESk1CWFpKQ0phWE1OSmFZS0tWSktjS0RFSnFYS0RjTkpoS1ZKck5ZS2JnSlZYS0ZWSlNCTkJZQndETkplUWZYTkplRXFYTmhHSldFTkpGaUpSUWxJSmJFUUpmWHhEUXFYY2ZYUUZOREVKUUZ3WFVKRFljblVKREpJQmdRRElVSlRSREpGRXFEU0pRU0pGU0pRSUpGU09QZVp0U0pGWkpIQ0pYUWZYQ1RERXFGR0pCU0pGR0pCT2ZYR0pCY3FYR0pITkpER0pSTGlKRUpmWEVxRUpGRUpQRUZwQkVKWUpCWkpGWUJ3WFVKWWlKTUVCWUpaSnlUWVRPTkpYcFFNRlhGcGVHSURkcEpGc3RYcEpGY1BETEJWU0pSTEhRSnFYTEpGWkpGSUpCTkpESUpCVXFYSUJrRkRKSUpFSlBUSVlKR1dSSUplUVBESUplRWZISUpGc0pYT3FHRFNGSFhFSnFYZ0pDc0pDZ0dRSnFYZ2RRWUpFZ0ZNRk5CZ0pGY3FEVkp3WFVKVkpGWkpjaElnSkNDeE9FSnFYeE93WFVKeURKQlZSdXNjaXNjaUpCaUpCaWVVdHFYaUpGREpraUZzSlhRVUdFWkpjVUpGc0pYWnRYSXJYWkRaSkRyWkpGTkpEWkpGc3RYdkpGUXFYdkpGQ0pFc0pYUUpxa2hrTkdCYkRKZFRSYllKTUVCbER3WFVKTUVGaUpGY2ZYTkpEUmNOSldNVEJMSlhDIiwiQnJhRlV0SEJGU0pGZGJOQkxKWFZKUW9ZSk5FQlNKQkVKZkhTSkh3WFVKQ0pkQVpKTUdqYUZWSlhFSlBOSkJsRUpmRmlKRnBGYkZFSnFJSkJWSkNySUJkSGlKaE9QRkNodkpWSlpKTkpXeEdGTklGTHVlSUJRSnFVSEVKZlVGc3RPWkpEcmxYRUFTSlJsWFZKWFNGd1ZKTkpXRCIsIlFKRUpOTkpEUUpFSklCU0ZRSkVKeGVnQlFKRUpmSEVQU0pCbVhFSkZTSkNERUpxWExYTkpGUXFYSWNRc0ZOSkZJRkVKcVhVSmdGc0pYSUpCVUpFSmZITkZ2SnhFcVhOSm5YVUpGUXFEIiwiSUpCRUpxWFpKIl07dmFyIG1hcHBpbmc9In5+QXpCflh+YX5LTn5RfkR+U35Dfkd+RX5ZfnB+TH5Jfk9+ZUh+Z35Wfmh4eXVtaX5+VX5+Wn5+dn5+c35+ZGtvYmxQamZucXdNY1JUcn5Xfn5+Rn5+fn5+SnQiO3ZhciB3b3JkbGlzdCQxPW51bGw7ZnVuY3Rpb24gaGV4KHdvcmQpe3JldHVybiBsaWIkMS5oZXhsaWZ5KGxpYiQ4LnRvVXRmOEJ5dGVzKHdvcmQpKX12YXIgS2lZb0t1PSIweGUzODE4ZGUzODI4NGUzODE4ZiI7dmFyIEt5b0t1PSIweGUzODE4ZGUzODI4M2UzODE4ZiI7ZnVuY3Rpb24gbG9hZFdvcmRzKGxhbmcpe2lmKHdvcmRsaXN0JDEhPT1udWxsKXtyZXR1cm59d29yZGxpc3QkMT1bXTt2YXIgdHJhbnNmb3JtPXt9O3RyYW5zZm9ybVtsaWIkOC50b1V0ZjhTdHJpbmcoWzIyNywxMzAsMTU0XSldPWZhbHNlO3RyYW5zZm9ybVtsaWIkOC50b1V0ZjhTdHJpbmcoWzIyNywxMzAsMTUzXSldPWZhbHNlO3RyYW5zZm9ybVtsaWIkOC50b1V0ZjhTdHJpbmcoWzIyNywxMzAsMTMzXSldPWxpYiQ4LnRvVXRmOFN0cmluZyhbMjI3LDEzMCwxMzRdKTt0cmFuc2Zvcm1bbGliJDgudG9VdGY4U3RyaW5nKFsyMjcsMTI5LDE2M10pXT1saWIkOC50b1V0ZjhTdHJpbmcoWzIyNywxMjksMTY0XSk7dHJhbnNmb3JtW2xpYiQ4LnRvVXRmOFN0cmluZyhbMjI3LDEzMCwxMzFdKV09bGliJDgudG9VdGY4U3RyaW5nKFsyMjcsMTMwLDEzMl0pO3RyYW5zZm9ybVtsaWIkOC50b1V0ZjhTdHJpbmcoWzIyNywxMzAsMTM1XSldPWxpYiQ4LnRvVXRmOFN0cmluZyhbMjI3LDEzMCwxMzZdKTtmdW5jdGlvbiBub3JtYWxpemUod29yZCl7dmFyIHJlc3VsdD0iIjtmb3IodmFyIGk9MDtpPHdvcmQubGVuZ3RoO2krKyl7dmFyIGthbmE9d29yZFtpXTt2YXIgdGFyZ2V0PXRyYW5zZm9ybVtrYW5hXTtpZih0YXJnZXQ9PT1mYWxzZSl7Y29udGludWV9aWYodGFyZ2V0KXtrYW5hPXRhcmdldH1yZXN1bHQrPWthbmF9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBzb3J0SmFwYW5lc2UoYSxiKXthPW5vcm1hbGl6ZShhKTtiPW5vcm1hbGl6ZShiKTtpZihhPGIpe3JldHVybi0xfWlmKGE+Yil7cmV0dXJuIDF9cmV0dXJuIDB9Zm9yKHZhciBsZW5ndGhfMT0zO2xlbmd0aF8xPD05O2xlbmd0aF8xKyspe3ZhciBkPWRhdGFbbGVuZ3RoXzEtM107Zm9yKHZhciBvZmZzZXQ9MDtvZmZzZXQ8ZC5sZW5ndGg7b2Zmc2V0Kz1sZW5ndGhfMSl7dmFyIHdvcmQ9W107Zm9yKHZhciBpPTA7aTxsZW5ndGhfMTtpKyspe3ZhciBrPW1hcHBpbmcuaW5kZXhPZihkW29mZnNldCtpXSk7d29yZC5wdXNoKDIyNyk7d29yZC5wdXNoKGsmNjQ/MTMwOjEyOSk7d29yZC5wdXNoKChrJjYzKSsxMjgpfXdvcmRsaXN0JDEucHVzaChsaWIkOC50b1V0ZjhTdHJpbmcod29yZCkpfX13b3JkbGlzdCQxLnNvcnQoc29ydEphcGFuZXNlKTtpZihoZXgod29yZGxpc3QkMVs0NDJdKT09PUtpWW9LdSYmaGV4KHdvcmRsaXN0JDFbNDQzXSk9PT1LeW9LdSl7dmFyIHRtcD13b3JkbGlzdCQxWzQ0Ml07d29yZGxpc3QkMVs0NDJdPXdvcmRsaXN0JDFbNDQzXTt3b3JkbGlzdCQxWzQ0M109dG1wfWlmKHdvcmRsaXN0LldvcmRsaXN0LmNoZWNrKGxhbmcpIT09IjB4Y2IzNmIwOWU2YmFhOTM1Nzg3ZmQ3NjJjZTY1ZTgwYjBjNmE4ZGFiZGZiYzNhN2Y4NmFjMGUyYzRmZDExMTYwMCIpe3dvcmRsaXN0JDE9bnVsbDt0aHJvdyBuZXcgRXJyb3IoIkJJUDM5IFdvcmRsaXN0IGZvciBqYSAoSmFwYW5lc2UpIEZBSUxFRCIpfX12YXIgTGFuZ0phPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKExhbmdKYSxfc3VwZXIpO2Z1bmN0aW9uIExhbmdKYSgpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJqYSIpfHx0aGlzfUxhbmdKYS5wcm90b3R5cGUuZ2V0V29yZD1mdW5jdGlvbihpbmRleCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxW2luZGV4XX07TGFuZ0phLnByb3RvdHlwZS5nZXRXb3JkSW5kZXg9ZnVuY3Rpb24od29yZCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxLmluZGV4T2Yod29yZCl9O0xhbmdKYS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24obW5lbW9uaWMpe3dvcmRsaXN0LmxvZ2dlci5jaGVja05vcm1hbGl6ZSgpO3JldHVybiBtbmVtb25pYy5zcGxpdCgvKD86XHUzMDAwfCApKy9nKX07TGFuZ0phLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHdvcmRzKXtyZXR1cm4gd29yZHMuam9pbigi44CAIil9O3JldHVybiBMYW5nSmF9KHdvcmRsaXN0LldvcmRsaXN0KTt2YXIgbGFuZ0phPW5ldyBMYW5nSmE7ZXhwb3J0cy5sYW5nSmE9bGFuZ0phO3dvcmRsaXN0LldvcmRsaXN0LnJlZ2lzdGVyKGxhbmdKYSl9KTt2YXIgbGFuZ0phPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxhbmdKYV8xKTt2YXIgbGFuZ0tvXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5sYW5nS289dm9pZCAwO3ZhciBkYXRhPVsiT1lBYSIsIkFUQVpvQVRCbDNBVENUckFUQ2w4QVREbG9BVEdnM0FUSFQ4QVRKVDhBVEpsM0FUTGx2QVRMbjRBVE1UOEFUTVg4QVRNYm9BVE1nb0FUb0xiQVRvTVRBVHJIZ0FUdkhuQVQzQW5BVDNKYkFUM01UQVQ4RGJBVDhKVEFUOExtQVQ4TVlBVDhNYkFUI0xuQVVIVDhBVUhadkFVSlhyQVVKWDhBVUxuckFYSm52QVhMVW9BWExndkFYTW42QVhSZzNBWHJNYkFYM0pUQVgzUWJBWUxuM0FaTGd2QVpyU1VBWnZBY0FaOEFhQVo4QWJBWjhBbkFaOEhuQVo4TGdBWjhNWUFaOE1nQVo4T25BYUFib0FhRFRyQWFGVHJBYUpUckFhSmJvQWFMVm9BYU1YdkFhT2w4QWFTZW9BYkFVb0FiQWc4QWJBbDRBYkduckFiTVQ4QWJNWHJBYk1uNEFiUWI4QWJTVjhBYnZSbEFiOEFVQWI4QW5BYjhIZ0FiOEpUQWI4TlRBYjhSYkFjR2JvQWNMbnZBY01UOEFjTVg4QWNTVG9BY3JBYUFjckZuQWM4QWJBYzhNZ0FmR2dyQWZIYm9BZkpudkFmTFY4QWZMa29BZk1UOEFmTW5vQWZRYjhBZlNjckFmU2dyQWdBWjhBZ0ZsM0FnR1g4QWdIWnZBZ0hnckFnSlhvQWdKWDhBZ0pib0FnTFpvQWdMbjRBZ09YOEFnb0FUQWdvQW5BZ29DVUFnb0pnQWdvTFhBZ29NWUFnb1NlQWdyRFVBZ3JKVEFockZuQWhyTGpBaHJRZ0FqQWdvQWpKbnJBa01YOEFrT25vQWxDVHZBbENWOEFsQ2x2QWxGZzRBbEZsNkFsRm4zQWxvU25BbHJBWEFsckFmQWxyRlVBbHJGYkFsckdnQWxyT1hBbHZLbkFsdk1UQWwzQWJBbDNNbkFuQVRyQW5BY3JBbkNaM0FuQ2w4QW5EZzhBbkZib0FuRmwzQW5IWDRBbkhickFuSGdyQW5JbDNBbkpndkFuTFhvQW5MWDRBbkxickFuTGdyQW5MaHJBbk1Yb0FuTWdyQW5PbjNBblNickFuU2VvQW52TG5BbjNPbkNUR2d2Q1RTbHZDVHZBVUNUdktuQ1R2TlRDVDNDWkNUM0dVQ1QzTVRDVDhIbkNVQ1pyQ1VMZjhDVUxudkNVM0huQ1UzSlVDWTZOVUNiRGI4Q2JGWm9DYkxuckNib09UQ2JvU2NDYnJGbkNidkxuQ2I4QWdDYjhIZ0NiJExuQ2tMZm9DbEJuM0Nsb0RVRFRIVDhEVExsM0RUU1U4RFRyQWFEVHJMWERUckxqRFRyT1lEVHJPZ0RUdkZYRFR2Rm5EVDNIVURUM0xmRFVDVDlEVURUNERVRlZvRFVGVjhEVUZrb0RVR2dyRFVKbnJEVUxsOERVTVQ4RFVNWHJEVU1YNERVTWc4RFVPVW9EVU9ndkRVT2c4RFVTVG9EVVNaOERiRFhvRGJEZ29EYkdUOERiSm4zRGJMZzNEYkxuNERiTVhyRGJNZzhEYk9Ub0Rib0pYR1RDbHZHVERUOEdURlpyR1RMVm9HVExsdkdUTGwzR1RNZzhHVE9UdkdUU2xyR1RvQ1VHVHJEZ0dUckpZR1RyU2NHVHRMbkdUdkFuR1R2UWdHVUNackdVRFR2R1VGWm9HVUhYckdVTG52R1VNVDhHVW9NZ0dYb0xuR1hyTVhHWHJNbkdYdkZuR1lMbnZHWk9udkdadk9uR1o4TGFHWjhMbUdiQWwzR2JEWXZHYkRsckdiSFgzR2JKbDRHYkxWOEdiTG4zR2JNbjRHYm9KVEdib1JmR2J2RlVHYjNHVUdiNEpuR2dEWDNHZ0ZsJEdnSmxyR2dMWDZHZ0xab0dnTGY4R2dPWG9HZ3JBZ0dnckpYR2dyTVlHZ3JTY0dndkFUR2d2T1lHbkFnb0duSmd2R25MWm9HbkxnM0duTG5yR25RbjhHblNickduck1nSFRDbHZIVERUb0hURlQzSFRRVDhIVG9KVEhUb0pnSFRyRFVIVHJNbkhUdkZZSFR2UmZIVDhNbkhUOFNVSFVBWjhIVUJiNEhVRFR2SFVvTVlIWEZsNkhYSlg2SFhRbHJIWHJBVUhYck1uSFhyU2JIWHZGWUhYdktYSFgzTGpIWDNNZUhZdlFsSFpyU2NIWnZEYkhiQWNySGJGVDNIYkZsM0hiSlQ4SGJMVHJIYk1UOEhiTVhySGJNYnJIYlFiOEhiU1gzSGJvRGJIYm9KVEhickZVSGJySGdIYnJKVEhiOEpUSGI4TW5IYjhRZ0hnQWxySGdEVDNIZ0dnckhnSGdySGdKVHJIZ0pUOEhnTFhASGdMbnJIZ01UOEhnTVg4SGdNYm9IZ09uckhnUVRvSGdSZzNIZ29IZ0hnckNiSGdyRm5IZ3JMVkhndkFjSGd2QWZIbkFsb0huQ1RySG5DbnZIbkdUckhuR1o4SG5HbnZIbkpUOEhuTGY4SG5Ma3ZIbk1nOEhuUlRySVR2RlVJVHZGbkpUQVhySlRDVjhKVEZUM0pURlQ4SlRGbjRKVEdndkpUSFQ4SlRKVDhKVEpYdkpUSmwzSlRKbnZKVExYNEpUTGY4SlRMaHZKVE1UOEpUTVhySlRNbnJKVE9ickpUUVQ4SlRTbHZKVDhEVUpUOEZrSlQ4TVRKVDhPWEpUOE9nSlQ4UVVKVDhSZkpVSFpvSlhGVDRKWEZsckpYR1o4SlhHbnJKWExWOEpYTGd2SlhNWG9KWE1YM0pYTmJvSlhQbHZKWG9KVEpYb0xrSlhyQVhKWHJIVUpYckpnSlh2SlRKWHZPbkpYNEtuSllBbDNKWUpUOEpZTGh2SllRVG9KWXJRWEpZNk5VSmJBbDNKYkNackpiRGxvSmJHVDhKYkdnckpiSlh2SmJKYm9KYkxmOEpiTGhySmJMbDNKYk1udkpiUmc4SmJTWjhKYm9EYkpickNaSmJyU1VKYjNLbkpiOExuSmZSbjhKZ0FYckpnQ1pySmdEVHJKZ0dackpnR1o4SmdIVG9KZ0pUOEpnSlhvSmdKZ3ZKZ0xYNEpnTFozSmdMWjhKZ0xuNEpnTWdySmdNbjRKZ09ndkpnUFg2SmdSbnZKZ1NUb0pnb0NaSmdvSmJKZ29NWUpnckpYSmdySmdKZ3JMakpnNk1USmxDbjNKbEdndkpsSmw4Smw0QW5KbDhGbkpsOEhnSm5BVG9KbkFUckpuQWJ2Sm5EVW9KbkduckpuSlhySm5KWHZKbkxodkpuTG5ySm5MbnZKbk1Ub0puTVQ4Sm5NWHZKbk1YM0puTWc4Sm5NbHJKbk1uNEpuT1g4Sm5TVDRKblNYM0pub0FnSm5vQW5Kbm9KVEpub09iSm5yQWJKbnJBa0puckhuSm5ySlRKbnJKWUpuck9ZSm5yU2NKbnZDVUpudkZhSm52SmdKbnZKbkpudk9ZSm52UVVKbnZSVUpuM0ZuSm4zSlRLbkZsM0tuTFQ2TFREbHZMVE1ub0xUT24zTFRSbDNMVFNiNExUU2xyTFRvQW5MVG9KZ0xUckFVTFRyQWNMVHJDVUxUckhnTFRyTWdMVDNKbkxVTG5yTFVNWDhMVW9KZ0xWQVRyTFZEVHJMVkxiOExWb0pnTFY4TWdMVjhSVExYRGczTFhGbHJMWHJDbkxYckxYTFgzR1RMWDRHZ0xYNE9ZTFpBWHJMWkFjckxaQWdyTFpBaHJMWkRYeUxaRGxyTFpGYnJMWkZsM0xaSlg2TFpKWDhMWkxjOExaTG5yTFpTVThMWm9KVExab0puTFpyQWdMWnJBbkxackpZTFpyTFVMWnJNZ0xaclNrTFp2QW5MWnZHVUxadkplTFp2T1RMWjNGWkxaNEpYTFo4U1RMWjhTY0xhQVQzTGFBbDNMYUhUOExhSlRyTGFKVDhMYUpYckxhSmd2TGFKbDRMYUxWb0xhTVhyTGFNWHZMYU1YOExiQ2x2TGJGVG9MYkhsckxiSm40TGJMWjNMYkxodkxiTVhyTGJNbm9MYnZTVUxjTG5yTGM4SG5MYzhNVExkck1uTGVBZ29MZU9ndkxlT24zTGZBbDNMZkxudkxmTWwzTGZPWDhMZjhBbkxmOEpYTGY4TFhMZ0pUckxnSlhyTGdKbDhMZ01YOExnUlpyTGhDVG9MaHJBYkxockZVTGhySlhMaHZKWUxqSFRyTGpIWDRMakpYOExqTGhyTGpTWDNMalNaNExrRlg0TGtHWjhMa0dndkxrSlRyTGtNWG9Ma1NUb0xrU1U4TGtTWjhMa29PWUxsM0ZmTGwzTWdMbUFackxtQ2JyTG1HZ3JMbUhib0xtSm5vTG1KbjNMbUxmb0xtTGhyTG1TVG9MbkFYNkxuQWI2TG5DWjNMbkNiM0xuRFR2TG5EYjhMbkZsM0xuR25yTG5IWnZMbkhndkxuSVR2TG5KVDhMbkpYOExuSmx2TG5MZjhMbkxnNkxuTGh2TG5Mbm9Mbk1YckxuTWc4TG5RbHZMblNickxuckFnTG5yQW5MbnJEYkxuckZrTG5ySmRMbnJNVUxuck9ZTG5yU1RMbnZBbkxudkRVTG52SGdMbnZPWUxudk9uTG4zR2dMbjREVUxuNEpUTG40Sm5NVEFab01UQWxvTVREYjhNVEZUOE1USm5vTVRKbnJNVExack1UTGhyTVRMa3ZNVE1YOE1UUlRyTVRvQVRNVHJEbk1Uck9uTVQzSm5NVDRNbk1UOEZVTVQ4RmFNVDhGbE1UOEdUTVQ4R2JNVDhHbk1UOEhuTVQ4SlRNVDhKYk1UOE9UTVVDbDhNVUpUck1VSlU4TVVNWDhNVVJUck1VU1RvTVhBWDZNWEFiNk1YQ1pvTVhGWHJNWEhYck1YTGd2TVhPZ29NWHJBVU1YckFuTVhySGdNWHJKWU1YckpuTVhyTVRNWHJNZ01Yck9ZTVhyU1pNWHJTZ01YdkRVTVh2T1RNWDNKZ01YM09UTVg0Sm5NWDhEYk1YOEZuTVg4SGJNWDhIZ01YOEhuTVg4TGJNWDhNbk1YOE9uTVlBYjhNWUdib01ZSFR2TVlIWDRNWUxUck1ZTG52TVlNVG9NWU9ndk1ZUmczTVlTVHJNYkFUb01iQVhyTWJBbDNNYkFuOE1iR1o4TWJKVDhNYkpYck1iTVh2TWJNWDhNYk1ub01ick1VTWI4QWZNYjhGYk1iOEZrTWNKWG9NZUxuck1nRmwzTWdHVHZNZ0dYb01nR2dyTWdHbnJNZ0hUOE1nSFpyTWdKbm9NZ0xuck1nTG52TWdNVDhNZ1FVb01nckhuTWd2QW5NZzhIZ01nOEpZTWc4TGZNbG9Kbk1sOEFUTWw4QVhNbDhKWU1uQVRvTW5BVDRNbkFaOE1uQWwzTW5BbDRNbkNsOE1uSFQ4TW5IZzhNbkpub01uTFpvTW5MaHJNbk1Yb01uTVgzTW5NbnJNbk9ndk1uckZiTW5yRmZNbnJGbk1uck5UTW52SlhOVE1sOE9UQ1QzT1RGVjhPVEZuM09USFp2T1RKWHJPVE9sM09UM0FUT1QzSlVPVDNMWk9UM0xlT1QzTWJPVDhBVE9UOEFiT1Q4QWdPVDhNYk9VQ1h2T1VNWDNPWEhYdk9YTGwzT1hyTVVPWHZEYk9YNk5VT1g4SmJPWUZab09ZTGJyT1lMa29PWU1nOE9ZU1gzT2JIVHJPYkhUNE9iSmdyT2JMaHJPYk1YM09iT1g4T2I4Rm5PZUFsck9lSlQ4T2VKWHJPZUpuck9lTFRvT2VNYjhPZ0pYb09nTFhvT2dNbnJPZ09Yck9nT2xvT2dvQWdPZ29KYk9nb01ZT2dvU1RPZzhBYk9qTFg0T2pNbm9PalNWOE9uTFZvT25yQWdPbjNEVVBYUWxyUFh2RlhQYnZGVFBkQVQzUGxGbjNQbnZGYlFUTG40UVRvQWdRVG9NVFFVTFY4UVVSZzhRVW9KblFYQ1h2UWJGYnJRYjhBYVFiOEFjUWI4RmJRYjhNWVFiOFNjUWVBbHJRZUxoclFqQW4zUWxGWG9RbG9KZ1Fsb1NuUlRMbnZSVHJHVVJUckpUUlVKWnJSVW9KbFJVclFuUlpyTG1SWnJNblJaclNuUlo4QVRSWjhKYlJaOFNjUmJNVDhSYlNUM1JmR1pyUmZNWDhSZk1nclJmU1pyUm5BYnJSbkdUOFJudkpnUm52TGZSbnZNVFJuOEFhU1RDbHZTVEpnclNUT1hyU1RSZzNTVFJudlNUb0FjU1RvQWZTVG9BblNUb0huU1RvTGpTVG9NVFNUckFhU1RyRVVTVDNCWVNUOEFnU1Q4TG1TVUFadlNVQWdyU1VEVDRTVURUOFNVR2d2U1VKWG9TVUpYdlNVTFRyU1U4SlRTVThMalNWOEFuU1Y4SmdTWEZUb1NYTGY4U1l2QW5TWnJEVVNack1VU1pyTW5TWjhIZ1NaOEpUU1o4SmdTWjhNWVNaOFFVU2FRVW9TYkNUM1NiSFRvU2JRWXZTYlNsNFNib0puU2J2RmJTYjhIYlNiOEpnU2I4T1RTY0daclNjSGdyU2NKVHZTY01UOFNjU1RvU2NvSGJTY3JNVFNjdkFuU2VBWnJTZUFjclNlSGJvU2VKVW9TZUxoclNlTVQ4U2VNWHJTZTZKZ1NnSFRyU2tKbm9Ta0xudlNrOENVU2xGbDNTbHJTblNsOEduU21BYm9TbUdUOFNtSlU4IiwiQVRMbkRsQVRyQVpvQVRySlg0QVRyTVQ4QVRyTVg0QVRyUlRyQVR2RGw4QVR2SlVvQVR2TWw4QVQzQVRvQVQzTVg4QVQ4Q1QzQVQ4RFQ4QVQ4SFpyQVQ4SGdvQVVBZ0ZuQVVDVEZuQVhvTVg4QVhyQVQ4QVhyR2d2QVhySlh2QVhyT2dvQVh2TGwzQVp2QWdvQVp2RmJyQVp2SlhvQVp2Smw4QVp2Sm4zQVp2TVg4QVp2U2JyQVo4RlpvQVo4TFo4QVo4TVU4QVo4T1R2QVo4U1Y4QVo4U1gzQWJBZ0ZaQWJvSm5vQWJ2R2JvQWI4QVRyQWI4QVpvQWI4QWdyQWI4QWw0QWI4RGI4QWI4Sm5vQWI4TFg0QWI4TFpyQWI4TGhyQWI4TVQ4QWI4T1VvQWI4UWI4QWI4U1Q4QWNyQVVvQWNyQWM4QWNyQ1ozQWNyRlQzQWNyRlpyQWNySmw0QWNySm4zQWNyTVgzQWNyT1R2QWM4QVo4QWM4TVQ4QWZBY0pYQWdvRm40QWdvR2d2QWdvR25yQWdvTGM4QWdvTVhvQWdyTG5yQWtyU1o4QWxGWENUQWxvSGJvQWxySGJyQWxyTGhyQWxyTGtvQWwzQ1pyQWwzTFVvQWwzTFpyQW5yQWw0QW5yTVQ4QW4zSFQ0QlQzSVRvQlg0TW52QmIhTG4kQ1RHWE1uQ1RvTFo0Q1RySFQ4Q1QzSlRyQ1QzUlpyQ1QjR1R2Q1U2R2d2Q1U4RGI4Q1U4R1pyQ1U4SFQ4Q2JvTGwzQ2JyR2dyQ2JyTVU4Q2I4RFQzQ2I4R25yQ2I4TFg0Q2I4TVQ4Q2I4T2JyQ2dyR2d2Q2dyS1g0Q2w4RlpvRFRyQWJ2RFRyRGJvRFRyR1Q2RFRySmdyRFRyTVgzRFRyUlpyRFRyUmc4RFR2QVZ2RFR2RlpvRFQzRFQ4RFQzTG4zRFQ0SFpyRFQ0TVQ4RFQ4QWxyRFQ4TVQ4RFVBa0diRFVEYkpuRFlMblFsRGJEVU9ZRGJNVEFuRGJNWFNuRGJvQVQzRGJvRm40RGJvTG52RGo2SlRyR1RDZ0ZUR1RHZ0ZuR1RKVE1uR1RMblBsR1RvSlQ4R1RyQ1QzR1RyTFZvR1RyTG52R1RyTVgzR1RyTWJvR1R2S2wzR1pDbEZuR1pyRFQzR1o4RFRyR1o4Rlo4R1o4TVh2R1o4T244R1o4U1QzR2JDblFYR2JNYkZuR2JvRmJvR2JvSmczR2JvTVhvR2IzSlR2R2IzSmJvR2IzTW42R2IzUWI4R2dEWExqR2dNbkFVR2dyRGxvR2dySFg0R2dyU1RvR2d2QVhyR2d2QVp2R2d2RmJyR2d2TGwzR2d2TW52R25EbkxYR25yQVRyR25yTWJvR251TGwzSFRBVE1uSFRBZ0NuSFRDVENUSFRyR1R2SFRySFR2SFRySlg4SFRyTGw4SFRyTVQ4SFRyTWdvSFRyT1RySFR1T24zSFR2QVpySFR2RFR2SFR2R2JvSFR2SlU4SFR2TGwzSFR2TVhySFR2UWI0SFQ0R1Q2SFQ0SlQ4SFQ0SmIjSFQ4QWwzSFQ4R1pySFQ4R2dySFQ4SFg0SFQ4SmI4SFQ4Sm5vSFQ4TFRySFQ4TGd2SFQ4U1RvSFQ4U1Y4SFVvSlVvSFVvSlg4SFVvTG5ySFhyTFpvSFh2QWwzSFgzTG5ySFg0Rmt2SFg0TGhySFg0TVhvSFg0T25vSFpyQVo4SFpyRGI4SFpyR1o4SFpySm5ySFp2R1o4SFp2TG52SFo4Sm52SFo4TGhySGJDWEpsSGJNVEFuSGJvSmw0SGJwTGwzSGJySlg4SGJyTG5ySGJyTW52SGJ2UllySGdvU1RySGdyRlY4SGdyR1o4SGdySlhvSGdyUm52SGd2QmIhSGd2R1RySGd2SFg0SGd2SG4hSGd2TFRySGd2U1U4SG5EbkxiSG5GYkpiSG52RG44SG42R2d2SG4hQlR2SlRDVExuSlRRZ0ZuSlRyQW52SlRyTFg0SlRyT1VvSlR2Rm4zSlR2TG5ySlR2TlRvSlQzQWdvSlQzSm40SlQzTGh2SlQzT2JySlQ4QWNySlQ4QWwzSlQ4SlQ4SlQ4Sm5vSlQ4TFg0SlQ4TG5ySlQ4TVgzSlQ4UmczSlQ4U2M4SlVvQlR2SlU4QVRvSlU4R1o4SlU4R2d2SlU4SlRySlU4SlhySlU4Sm5ySlU4TG52SlU4U2N2SlhIbkpsSlhyR2d2SlhySlU4SlhyTGhySlhyTVQ4SlhyTVhySlhyUVVvSlh2Q1R2Slh2R1o4Slh2R2dySlh2UVQ4Slg4QWI4Slg4RFQ4Slg4R1o4Slg4SFp2Slg4TG5ySlg4TVQ4Slg4TVhvSlg4TW52Slg4U1QzSllHbkNUSmJBa0diSmJDVEFuSmJMVEFjSmJvRFQzSmJvTGI2SmJyQW52SmJyQ24zSmJyRGw4SmJyR2JvSmJySVpvSmJySm52SmJyTW52SmJyUWI0SmI4UlpySmVBYkFuSmdKbkZiSmdTY0FuSmdyQVRySmd2SFo4Smd2TW40SmxKbEZiSmxMaVFYSmxMak9uSmxSYk9sSmx2TlhvSmx2UmwzSmw0QWNySmw4QVVvSmw4TW5ySm5Gbk1sSm5IZ0diSm5vRFQ4Sm5vRlY4Sm5vR2d2Sm5vSVQ4Sm5vUVRvSm5vUmczSm5yQ1ozSm5yR2dySm5ySFR2Sm5yTGY4Sm5yT1g4Sm52QVQzSm52RlpvSm52R1Q4Sm52Smw0Sm52TVQ4Sm52TVg4Sm52T1hySm52UFg2Sm52U1gzSm52U1pySm4zTVQ4Sm4zTVg4Sm4zUlRyTFRBVEtuTFRKbkxUTFRNWEtuTFRSVFFsTFRvR2I4TFRyQVo4TFRyQ1o4TFRyRGI4TFRySFQ4TFQzUFg2TFQ0RlpvTFQkQ1R2TFQkR2dyTFV2SFgzTFZvQVRyTFZvQWdvTFZvSmJvTFZvTVgzTFZvUmczTFY4Q1ozTFY4RlpvTFY4R1R2TFhyRFhvTFhyRmJyTFh2QWd2TFh2RmxyTFh2TGwzTFh2Um42TFg0TWI4TFg4R1Q4TFlDWE1uTFlyTW5yTFpvU1R2TFpyQVp2TFpyQWxvTFpyRlRvTFpySlh2TFpySmJvTFpySmw0TFpyTG5yTFpyTVQ4TFpyT2d2TFpyUm52TFpyU1Q0TFp2TVg4TFp2U2x2TFo4QWdvTFo4Q1QzTFo4SlQ4TFo4TFY4TFo4TFpvTFo4TGc4TFo4U1Y4TFo4U2JyTFokSFQ4TFokTW40TGE2Q1R2TGJGYk1uTGJSWUZUTGJTbkZaTGJvSlQ4TGJyQVQ5TGJyR2IzTGJyUWI4TGNySlg4TGNyTVhyTGVySFR2TGVySmJyTGVyTmJvTGdyRGI4TGdyR1o4TGdySFRyTGdyTVhyTGdyU1U4TGd2SlRyTGd2TGwzTGc2TGwzTGhyTG5yTGhyTVQ4TGh2QWw0TGlMblFYTGtvQWdyTGtvSlQ4TGtvSm40TGxyU1U4TGwzRlpvTGwzSFRyTGwzSlg4TGwzSm5vTGwzTFRvTG1MZUZiTG5EVUZiTG5MVkFuTG5yQVRyTG5yQVpvTG5yQWI4TG5yQWxyTG5yR2d2TG5ySlU4TG5yTFpyTG5yTGhyTG5yTWI4TG5yT1hyTG5yU1o4TG52QWI0TG52RFRyTG52RGw4TG52SFRyTG52SGJyTG52SlQ4TG52SlU4TG52SmJyTG52TGh2TG52TVg4TG52TWI4TG52Tm5vTG52U1U4TG4zQWwzTG40RlpvTG40R1Q2TG40Smd2TG40TGhyTG40TVQ4TG40U1RvTVRvQ1pyTVRvSlg4TVRvTFg0TVRvTGY4TVRvUmczTVRyRWxvTVR2R2I2TVQzQlRyTVQzTGI2TVQ4QWNyTVQ4QWdyTVQ4R1pyTVQ4Sm5vTVQ4TG5yTVQ4TVgzTVVPVUFuTVhBYkZuTVhvQWxvTVhvSlg4TVhvTGY4TVhvTGw4TVhyQWI4TVhyRFR2TVhyR1Q4TVhyR2dyTVhySFRyTVhyTGY4TVhyTVU4TVhyT1h2TVhyUWI4TVh2R1Q4TVh2SFRyTVh2TFZvTVgzQVgzTVgzSm4zTVgzTGhyTVgzTVgzTVg0QWxyTVg0T2JvTVg4R1R2TVg4R1pyTVg4R2dyTVg4SlQ4TVg4Slg4TVg4TGhyTVg4TVQ4TVlEVUZiTVlNZ0RiTWJHbkZmTWJ2TFg0TWJ2TGwzTWI4TWI4TWI4U1Q0TWdHWENuTWc4QVRyTWc4QWdvTWc4Q1pyTWc4RFRyTWc4RGJvTWc4SFRyTWc4SmdyTWc4TFQ4TWxvSlhvTWw4QWhyTWw4SlQ4TW5MZ0FVTW5vSlhyTW5vTFg0TW5vTGhyTW5vTVQ4TW5yQWw0TW5yRGI4TW5yT1R2TW5yT2d2TW5yUWI4TW5yU1U4TW52R2dyTW52SFo4TW4zTVRvTW40RFRyTW40TFRyTW40TWc4Tm5CWEFuT1RGVEZuT1RvQVRvT1RyR2d2T1RySlg4T1QzSlhvT1Q2TVRyT1Q4R2dyT1Q4SFRwT1Q4TVRvT1VvSFQ4T1VvSlQ4T1VvTG4zT1hyQWdvT1hyRGc4T1hyTVQ4T1h2U1RvT1g2Q1R2T1g4Q1pyT1g4T2dyT2I2SGd2T2I4QVRvT2I4TVQ4T2N2TFo4T2d2QWxyT2d2SFR2T2d2SlRyT2d2Sm5yT2d2TFpyT2d2TG40T2d2TVQ4T2d2UlRyT2c4QVpvT2c4RGJ2T25yT1hvT252Sm40T252TGh2T252UlRyT24zR2dvT24zSm52T242SmJ2T244T1RyUFRHWUZUUGJCbkZuUGJHbkRuUGdEWVFUUGxyQW52UGxyRVR2UGxyTG52UGxyTVh2UGx2Rlg0UVRNVEFuUVRySlU4UVlDbkpsUVlKbFFsUWJHVFFiUWI4Sm5yUWI4TFpvUWI4TG52UWI4TVQ4UWI4TWw4UWI4U1Q0UWxvQWw0UWxvSFp2UWxvSlg4UWxvTW44UW5KWk9sUlRyQVp2UlRyRFRyUlR2Sm40UlR2TGh2UlQ0SmI4UlpyQVpyUlo4QWtyUlo4SlU4Ulo4TFY4Ulo4TG52UmJKbFFYUmczR2JvUmczTW52Umc4QVo4Umc4SmJvUmc4Smw0Um5MVENiUm52RmwzUm52UWI4U1RvQWw0U1RvQ1pyU1RvRlpvU1RvSFhyU1RvSlU4U1RvSmd2U1RvSmw0U1RvTGhyU1RvTVgzU1RyQWx2U1RyQ1Q5U1RyQ2dyU1RyR2dyU1RySFhyU1RySGJvU1RySm5vU1RyTmJvU1R2TG5yU1Q0QVpvU1Q4QWI4U1Q4SlQ4U1VvSm4zU1U2SFojU1U2SlR2U1U4RGI4U1U4SGJvU1U4TGdyU1Y4SlQ4U1pyQWNyU1pyQWwzU1pySlQ4U1pySm52U1pyTVQ4U1p2TFVvU1o0RlpvU1o4Sm5vU1o4UlpyU2NvTG5yU2NvTVQ4U2NvTVg4U2NyQVQ0U2NyQVo4U2NyTFo4U2NyTGt2U2N2RGI4U2N2TGY4U2N2TlRvU2dyRlpyU2h2S25yU2xvSFVvU2xvTG5yU2xyTVhvU2w4SGdyU21ySlVvU24zQlg2IiwiQVRGbE9uM0FUTGdyRFlBVDRNVEFuQVQ4TFRNbkFZSm5SVHJBYkdnSm5yQWJMVjhMbkFidk5UQW5BZUZiTGczQWdPWU1Yb0FsUWJGYm9BbkRib0FmQW5KZ29KVEJUb0RnQW5CVUpiQWwzQmJvRFVBbkNURGx2TG5DVEZUclNuQ1lvUVRMbkRUd0FiQW5EVURUclNuRFVIZ0hnckRYOExYRm5EYkpYQWNyRVR2TFRMbkdURlRRYnJHVE1uR1RvR1QzRFVGYkdVSmxQWDNHYlFnOExuR2JvSmJGbkdiM0dnQVlHZ0FnOFNjR2dNYkFYckdndkFiQW5HbkpUTG52R252QVRGZ0hURFQ2QVRIVHJEbEpuSFlMbk1uOEhaclNiSlRIWjhMVEZuSGJGVEpVb0hnU2VNVDhIZ3JMakFuSGd2QWJBbkhsRlVyRGxIbkRndkFuSG5IVEZUM0huUVRHbnJKVEFhTVh2SlRHYkNuM0pUT2dyQW5KWHZBWE1uSmJNZzhTbkpiTW5SZzNKYjhMVE1uSm5BbDNPbkpuR1lyUWxKbkpsUVkzTFREbENuM0xUSmpMZzNMVExndkZYTFRNZzNHVExWOEhVT2dMWEZaTGczTFhOWHJNbkxYOFFYRm5MWDlBbE1ZTFlMWFBYckxaQWJKVThMWkRVSlU4TFpNWHJTbkxaJEFnRm5MYVBYckRVTGJGWXJNbkxiTW44TFhMYm9KZ0pnTGVGYkxnM0xnTFpyU25MZ09ZQWdvTGhyUm5KbExrQ1RyU25Ma09uTGhyTG5GWCVBWUxuRlpvSlhMbkhUdkpiTG5MbG9BYk1UQVRMZjhNVEhnSm4zTVRNWHJBWE1UM01URm5NVUlUdkZuTVhGWCVBWU1YTVh2RmJNWHJGVERiTVlBY01YM01iTGY4U25NYjhKYkZuTWdNWHJNVE1ndkFYRm5NZ3ZHZ0NtTW5BbG9Tbk1uRm5KVHJPWHZNWFNuT1g4SFRNbk9iSlQ4U2NPYkxaRmwzT2JNWENab1BUTGdyUVhQVUZub1FYUFUzUlhKbFBYM1JrUVhQYnJKWFFsUGxySmJGblFVQWhyRGJRWEduQ1h2UVlMbkhsdlFiTGZMbnZSVE9ndkpiUlhKWXJRbFJZTG5yUWxSYkxuclFsUmxGVDhKbFJsRm5yUVhTVENsQ24zU1RIVHJBblNUTFpRbHJTVE1uR1RyU1RvSGdHYlNUckdURG5TVHZHWENuU1QzSGdGYlNVM0hYQVhTYkFuSm4zU2JGVDhMblNjTGZMbnYiLCJBVDNKZ0pYOEFUOEZab1NuQVQ4SmdGVjhBVDhMaHJEYkFaOEpUOERiQWI4R2dMaHJBYjhTa0xudkFlOE1UOFNuQWxNWUpYTFZBbDNHWURUdkFsM0xmTG52QlVEVHZMbDNDVE9uM0hUckNUM0RVR2dyQ1U4TVQ4QWJDYkZUckpVb0NnckRiOE1URFRMVjhKWDhEVExuTFhRbERUOExaclNuRFVRYjhGWjhEVVNUNEpudkRiOFNjT1VvRGo2R2JKbDRHVExmQ1lNbEdUb0FYdkZuR2JvQVh2TG5HZ0FjckpuM0dndkZuU1RvR25MZjhKbnZHbiNIVERUb0hUTG5GWEpsSFR2QVRGVG9IVHZIVERUb0hUdk1UQWdvSFQzU1RDbHZIVDRBbEZsNkhUOEhURFRvSFVvRGdKVHJIVW9TY01YM0hiUlpyTVhvSGJvSmc4TFRIZ0RiOEpUckhnTVRvTGY4SGd2TG5Mbm9IbkhuM0hUNEhuNk1ndkFuSlRKVThTY3ZKVDNBYVFUOEpUOEhUckFuSlhyUmc4QW5KYkFsb01Yb0pickFURlRvSmJ2TW5vU25KZ0RiNkdndkpnRGI4TVhvSmdTWDNKVThKZ3VBVEZUb0psUFlMblFsSmxRa0RuTGJKbFFsRllKbEpsOExmOE9USm5DVEZuTGJKbkxUSFhNbkpuTFhHWENuSm5vRmZSZzNKbnJNWVJnM0puM0hnRmwzS1Q4RGc4TG5MVFJsRm5QVExUdlBiTGJ2TFZvU2JyQ1pMWE1ZNkhUM0xYTlU3RGxyTFhOWERUQVRMWDhEWDhMbkxaRGI4SlU4TFpNbm9MaHJMWlNUb0pVOExackxhTG5yTFp2Sm4zU25MWjhMaHJTbkxhSm5vTVQ4TGJGbHJIVHZMYnJGVExuckxidkFUTGx2TGI2T1RGbjNMY0xuSlpPbExlQVQ2TW40TGVKVDNPYnJMZzZMWEZsckxockpnOExuTGh2RGxQWDRMaHZMZkxudkxqNkpURlQzTG5GYnJNWG9MblFsdUNUdkxuclFYQ1k2TG52TGZMbnZMbnZNZ0xudkxudlNlTGY4TVRNYnJKbjNNVDNKZ1NUM01UOEFuQVRyTVQ4TFVMbnJNVU1Ub0Nack1VU2N2TGY4TVhvRFQ4U25NWDZBVEZUb01YOEFYTVQ4TVg4RmtNVDhNWDhIVHJEVU1YOFNjb1NuTVlKVDZDVHZNZ0Fjck1Yb01nOFNUb0FmTWx2QVhMZzNNbkZsM0Fudk9UM0FuRmwzT1VvQVRIVDhPVTNSbkxYck9Yck9YclNuT2JQYnZGbjZPZzhIZ3JTbk9nOE9YOERiUFR2QWdvSmdQVTNSWUxuclBYckRuSlpyUGI4Q1RHZ3ZQbHJMVERsdlBsdkZVSm5vUVV2RlhyUWxRZU1ub0FsM1FsclFsclNuUlRGVHJKVW9TVERsTGlMWFNURmc2SFQzU1RKZ29NbjRTVHJGVEpUclNUckxaRmwzU1Q0Rm5NWG9TVXJEbEhVb1NjdkhUdlNuU2ZMa3ZNWG8iLCJBVW9BY3JNWG9BWjhIYm9BZzhBYk9nNkFURmdBZzhBbG9NWG9BbDNBVDhKVHJBbDhNWDhNWG9DVDNTVG9KVThDbDhEYjhNWG9EVDhIZ3JBVHJEYm9PVDhNWG9HVE9UckFUTW5HVDhMaHJBWjhHbnZGbkduUVhIVG9HZ3ZBY3JIVHZBWHZMbDNIYnJBWm9NWG9IZ0JsRlhMZzNIZ01uRlhyU25IZ3JTYjhKVW9IbjZIVDhMZ3ZJVHZBVHJKVW9KVW9MWnJSbnZKVThIVDhKYjhKWHZGWDhRVDhKWHZMVG9KVHJKWXJRbkduUVhKZ3JKbm9BVHJKbm9KVThTY3ZKbnZNbnZNWG9MVENUTGdySlhMVEpsUlR2UWxMYlJuSmxRWXZMYnJNYjhMbnZMYnZGbjNSbm9MZENWU1RHWnJMZVNUdkdYQ25MZzNNbm9MbjNNVG9MbHJFVHZNVDhTVG9BbDNNYnJEVTZHVHZNYjhMWDRMaHJQbHJMWEdYQ25TVG9MZjhSZzNTVHJEYjhMVHJTVHZMVEhYTW5TYjNSWUxuTW5TZ09nNkFURmciLCJIVURsR25yUVhySlRySGdMbnJBY0pZTWI4RFVMYzhMVHZGZ0duQ2szTWc4SmJBbkxYNFFZdkZZSG5NWHJSVW9KbkdudkZuUmx2RlRKbFFub1NUckJYSFhyTFlTVUpnTGZvTVQ4U2U4RFRySGJEYiIsIkFiRGw4U1RvSlU4QW4zUmJBYjhTVDhEVVNUckduckFnb0xiRlU2RGI4TFRyTWc4QWFIVDhKYjhPYkRsOFNUb0pVOFBiM1JsdkZZb0psIl07dmFyIGNvZGVzPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSFAIyQlXiYqIjtmdW5jdGlvbiBnZXRIYW5ndWwoY29kZSl7aWYoY29kZT49NDApe2NvZGU9Y29kZSsxNjgtNDB9ZWxzZSBpZihjb2RlPj0xOSl7Y29kZT1jb2RlKzk3LTE5fXJldHVybiBsaWIkOC50b1V0ZjhTdHJpbmcoWzIyNSwoY29kZT4+NikrMTMyLChjb2RlJjYzKSsxMjhdKX12YXIgd29yZGxpc3QkMT1udWxsO2Z1bmN0aW9uIGxvYWRXb3JkcyhsYW5nKXtpZih3b3JkbGlzdCQxIT1udWxsKXtyZXR1cm59d29yZGxpc3QkMT1bXTtkYXRhLmZvckVhY2goZnVuY3Rpb24oZGF0YSxsZW5ndGgpe2xlbmd0aCs9NDtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krPWxlbmd0aCl7dmFyIHdvcmQ9IiI7Zm9yKHZhciBqPTA7ajxsZW5ndGg7aisrKXt3b3JkKz1nZXRIYW5ndWwoY29kZXMuaW5kZXhPZihkYXRhW2kral0pKX13b3JkbGlzdCQxLnB1c2god29yZCl9fSk7d29yZGxpc3QkMS5zb3J0KCk7aWYod29yZGxpc3QuV29yZGxpc3QuY2hlY2sobGFuZykhPT0iMHhmOWVkZGVhY2U5YzVkM2RhOWM5M2NmN2QzY2QzOGY2YTEzZWQzYWZmYjkzMzI1OWFlODY1NzE0ZThhM2FlNzFhIil7d29yZGxpc3QkMT1udWxsO3Rocm93IG5ldyBFcnJvcigiQklQMzkgV29yZGxpc3QgZm9yIGtvIChLb3JlYW4pIEZBSUxFRCIpfX12YXIgTGFuZ0tvPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKExhbmdLbyxfc3VwZXIpO2Z1bmN0aW9uIExhbmdLbygpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJrbyIpfHx0aGlzfUxhbmdLby5wcm90b3R5cGUuZ2V0V29yZD1mdW5jdGlvbihpbmRleCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxW2luZGV4XX07TGFuZ0tvLnByb3RvdHlwZS5nZXRXb3JkSW5kZXg9ZnVuY3Rpb24od29yZCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxLmluZGV4T2Yod29yZCl9O3JldHVybiBMYW5nS299KHdvcmRsaXN0LldvcmRsaXN0KTt2YXIgbGFuZ0tvPW5ldyBMYW5nS287ZXhwb3J0cy5sYW5nS289bGFuZ0tvO3dvcmRsaXN0LldvcmRsaXN0LnJlZ2lzdGVyKGxhbmdLbyl9KTt2YXIgbGFuZ0tvPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxhbmdLb18xKTt2YXIgbGFuZ0l0XzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5sYW5nSXQ9dm9pZCAwO3ZhciB3b3Jkcz0iQWJhY29BYmJhZ2xpb0FiYmluYXRvQWJldGVBYmlzc29BYm9saXJlQWJyYXNpdm9BYnJvZ2F0b0FjY2FkZXJlQWNjZW5ub0FjY3VzYXRvQWNldG9uZUFjaGlsbGVBY2lkb0FjcXVhQWNyZUFjcmlsaWNvQWNyb2JhdGFBY3V0b0FkYWdpb0FkZGViaXRvQWRkb21lQWRlZ3VhdG9BZGVyaXJlQWRpcGVBZG90dGFyZUFkdWxhcmVBZmZhYmlsZUFmZmV0dG9BZmZpc3NvQWZmcmFudG9BZm9yaXNtYUFmb3NvQWZyaWNhbm9BZ2F2ZUFnZW50ZUFnZXZvbGVBZ2dhbmNpb0FnaXJlQWdpdGFyZUFnb25pc21vQWdyaWNvbG9BZ3J1bWV0b0FndXp6b0FsYWJhcmRhQWxhdG9BbGJhdHJvQWxiZXJhdG9BbGJvQWxidW1lQWxjZUFsY29saWNvQWxldHRvbmVBbGZhQWxnZWJyYUFsaWFudGVBbGliaUFsaW1lbnRvQWxsYWdhdG9BbGxlZ3JvQWxsaWV2b0FsbG9kb2xhQWxsdXNpdm9BbG1lbm9BbG9nZW5vQWxwYWNhQWxwZXN0cmVBbHRhbGVuYUFsdGVybm9BbHRpY2Npb0FsdHJvdmVBbHVubm9BbHZlb2xvQWx6YXJlQW1hbGdhbWFBbWFuaXRhQW1hcmVuYUFtYml0b0FtYnJhdG9BbWViYUFtZXJpY2FBbWV0aXN0YUFtaWNvQW1tYXNzb0FtbWVuZGFBbW1pcmFyZUFtbW9uaXRvQW1vcmVBbXBpb0FtcGxpYXJlQW11bGV0b0FuYWNhcmRvQW5hZ3JhZmVBbmFsaXN0YUFuYXJjaGlhQW5hdHJhQW5jYUFuY2VsbGFBbmNvcmFBbmRhcmVBbmRyZWFBbmVsbG9BbmdlbG9BbmdvbGFyZUFuZ3VzdG9BbmltYUFubmVnYXJlQW5uaWRhdG9Bbm5vQW5udW5jaW9Bbm9uaW1vQW50aWNpcG9BbnppQXBhdGljb0FwZXJ0dXJhQXBvZGVBcHBhcmlyZUFwcGV0aXRvQXBwb2dnaW9BcHByb2RvQXBwdW50b0FwcmlsZUFyYWJpY2FBcmFjaGlkZUFyYWdvc3RhQXJhbGRpY2FBcmFuY2lvQXJhdHVyYUFyYXp6b0FyYml0cm9BcmNoaXZpb0FyZGl0b0FyZW5pbGVBcmdlbnRvQXJnaW5lQXJndXRvQXJpYUFybW9uaWFBcm5lc2VBcnJlZGF0b0FycmluZ2FBcnJvc3RvQXJzZW5pY29BcnNvQXJ0ZWZpY2VBcnppbGxvQXNjaXV0dG9Bc2NvbHRvQXNlcHNpQXNldHRpY29Bc2ZhbHRvQXNpbm9Bc29sYUFzcGlyYXRvQXNwcm9Bc3NhZ2dpb0Fzc2VBc3NvbHV0b0Fzc3VyZG9Bc3RhQXN0ZW51dG9Bc3RpY2VBc3RyYXR0b0F0YXZpY29BdGVpc21vQXRvbWljb0F0b25vQXR0ZXNhQXR0aXZhcmVBdHRvcm5vQXR0cml0b0F0dHVhbGVBdXNpbGlvQXVzdHJpYUF1dGlzdGFBdXRvbm9tb0F1dHVubm9BdmFuemF0b0F2ZXJlQXZ2ZW5pcmVBdnZpc29BdnZvbGdlcmVBemlvbmVBem90b0F6emltb0F6enVycm9CYWJlbGVCYWNjYW5vQmFjaW5vQmFjb0JhZGVzc2FCYWRpbGF0YUJhZ25hdG9CYWl0YUJhbGNvbmVCYWxkb0JhbGVuYUJhbGxhdGFCYWx6YW5vQmFtYmlub0JhbmRpcmVCYXJhb25kYUJhcmJhcm9CYXJjYUJhcml0b25vQmFybHVtZUJhcm9jY29CYXNpbGljb0Jhc3NvQmF0b3N0YUJhdHR1dG9CYXVsZUJhdmFCYXZvc2FCZWNjb0JlZmZhQmVsZ2lvQmVsdmFCZW5kYUJlbmV2b2xlQmVuaWdub0JlbnppbmFCZXJlQmVybGluYUJldGFCaWJpdGFCaWNpQmlkb25lQmlmaWRvQmlnYUJpbGFuY2lhQmltYm9CaW5vY29sb0Jpb2xvZ29CaXBlZGVCaXBvbGFyZUJpcmJhbnRlQmlycmFCaXNjb3R0b0Jpc2VzdG9CaXNub25ub0Jpc29udGVCaXN0dXJpQml6emFycm9CbGFuZG9CbGF0dGFCb2xsaXRvQm9uaWZpY29Cb3Jkb0Jvc2NvQm90YW5pY29Cb3R0aW5vQm96em9sb0JyYWNjaW9CcmFkaXBvQnJhbWFCcmFuY2FCcmF2dXJhQnJldGVsbGFCcmV2ZXR0b0JyZXp6YUJyaWdsaWFCcmlsbGFudGVCcmluZGFyZUJyb2Njb2xvQnJvZG9Ccm9uemluYUJydWxsb0JydW5vQnViYm9uZUJ1Y2FCdWRpbm9CdWZmb25lQnVpb0J1bGJvQnVvbm9CdXJsb25lQnVycmFzY2FCdXNzb2xhQnVzdGFDYWRldHRvQ2FkdWNvQ2FsYW1hcm9DYWxjb2xvQ2FsZXNzZUNhbGlicm9DYWxtb0NhbG9yaWFDYW1idXNhQ2FtZXJhdGFDYW1pY2lhQ2FtbWlub0NhbW9sYUNhbXBhbGVDYW5hcGFDYW5kZWxhQ2FuZUNhbmlub0Nhbm90dG9DYW50aW5hQ2FwYWNlQ2FwZWxsb0NhcGl0b2xvQ2Fwb2dpcm9DYXBwZXJvQ2FwcmFDYXBzdWxhQ2FyYXBhY2VDYXJjYXNzYUNhcmRvQ2FyaXNtYUNhcm92YW5hQ2FycmV0dG9DYXJ0b2xpbmFDYXNhY2Npb0Nhc2NhdGFDYXNlcm1hQ2Fzb0Nhc3NvbmVDYXN0ZWxsb0Nhc3VhbGVDYXRhc3RhQ2F0ZW5hQ2F0cmFtZUNhdXRvQ2F2aWxsb0NlZGliaWxlQ2VkcmF0YUNlZmFsb0NlbGVicmVDZWxsdWxhcmVDZW5hQ2Vub25lQ2VudGVzaW1vQ2VyYW1pY2FDZXJjYXJlQ2VydG9DZXJ1bWVDZXJ2ZWxsb0Nlc29pYUNlc3BvQ2V0b0NoZWxhQ2hpYXJvQ2hpY2NhQ2hpZWRlcmVDaGltZXJhQ2hpbmFDaGlydXJnb0NoaXRhcnJhQ2lhb0NpY2xpc21vQ2lmcmFyZUNpZ25vQ2lsaW5kcm9DaW90dG9sb0NpcmNhQ2lycm9zaUNpdHJpY29DaXR0YWRpbm9DaXVmZm9DaXZldHRhQ2l2aWxlQ2xhc3NpY29DbGluaWNhQ2xvcm9Db2Njb0NvZGFyZG9Db2RpY2VDb2VyZW50ZUNvZ25vbWVDb2xsYXJlQ29sbWF0b0NvbG9yZUNvbHBvc29Db2x0aXZhdG9Db2x6YUNvbWFDb21ldGFDb21tYW5kb0NvbW9kb0NvbXB1dGVyQ29tdW5lQ29uY2lzb0NvbmR1cnJlQ29uZmVybWFDb25nZWxhcmVDb25pdWdlQ29ubmVzc29Db25vc2NlcmVDb25zdW1vQ29udGludW9Db252ZWdub0NvcGVydG9Db3Bpb25lQ29wcGlhQ29wcmljYXBvQ29yYXp6YUNvcmRhdGFDb3JpY2F0b0Nvcm5pY2VDb3JvbGxhQ29ycG9Db3JyZWRvQ29yc2lhQ29ydGVzZUNvc21pY29Db3N0YW50ZUNvdHR1cmFDb3ZhdG9DcmF0ZXJlQ3JhdmF0dGFDcmVhdG9DcmVkZXJlQ3JlbW9zb0NyZXNjaXRhQ3JldGFDcmljZXRvQ3JpbmFsZUNyaXNpQ3JpdGljb0Nyb2NlQ3JvbmFjYUNyb3N0YXRhQ3J1Y2lhbGVDcnVzY2FDdWNpcmVDdWN1bG9DdWdpbm9DdWxsYXRvQ3Vwb2xhQ3VyYXRvcmVDdXJzb3JlQ3Vydm9DdXNjaW5vQ3VzdG9kZURhZG9EYWlub0RhbG1hdGFEYW1lcmlub0RhbmllbGFEYW5ub3NvRGFuemFyZURhdGF0b0RhdmFudGlEYXZ2ZXJvRGVidXR0b0RlY2VubmlvRGVjaXNvRGVjbGlub0RlY29sbG9EZWNyZXRvRGVkaWNhdG9EZWZpbml0b0RlZm9ybWVEZWdub0RlbGVnYXJlRGVsZmlub0RlbGlyaW9EZWx0YURlbWVuemFEZW5vdGF0b0RlbnRyb0RlcG9zaXRvRGVyYXBhdGFEZXJpdmFyZURlcm9nYURlc2NyaXR0b0Rlc2VydG9EZXNpZGVyaW9EZXN1bWVyZURldGVyc2l2b0Rldm90b0RpYW1ldHJvRGljZW1icmVEaWVkcm9EaWZlc29EaWZmdXNvRGlnZXJpcmVEaWdpdGFsZURpbHV2aW9EaW5hbWljb0Rpbm5hbnppRGlwaW50b0RpcGxvbWFEaXBvbG9EaXJhZGFyZURpcmVEaXJvdHRvRGlydXBvRGlzYWdpb0Rpc2NyZXRvRGlzZmFyZURpc2dlbG9EaXNwb3N0b0Rpc3RhbnphRGlzdW1hbm9EaXRvRGl2YW5vRGl2ZWx0b0RpdmlkZXJlRGl2b3JhdG9Eb2Jsb25lRG9jZW50ZURvZ2FuYWxlRG9nbWFEb2xjZURvbWF0b0RvbWVuaWNhRG9taW5hcmVEb25kb2xvRG9ub0Rvcm1pcmVEb3RlRG90dG9yZURvdnV0b0RvenppbmFEcmFnb0RydWlkb0R1YmJpb0R1Yml0YXJlRHVjYWxlRHVuYUR1b21vRHVwbGljZUR1cmF0dXJvRWJhbm9FY2Nlc3NvRWNjb0VjbGlzc2lFY29ub21pYUVkZXJhRWRpY29sYUVkaWxlRWRpdG9yaWFFZHVjYXJlRWdlbW9uaWFFZ2xpRWdvaXNtb0VncmVnaW9FbGFib3JhdG9FbGFyZ2lyZUVsZWdhbnRlRWxlbmNhdG9FbGV0dG9FbGV2YXJlRWxmaWNvRWxpY2FFbG1vRWxzYUVsdXNvRW1hbmF0b0VtYmxlbWFFbWVzc29FbWlyb0Vtb3Rpdm9FbW96aW9uZUVtcGlyaWNvRW11bG9FbmRlbWljb0VuZHVyb0VuZXJnaWFFbmZhc2lFbm90ZWNhRW50cmFyZUVuemltYUVwYXRpdGVFcGlsb2dvRXBpc29kaW9FcG9jYWxlRXBwdXJlRXF1YXRvcmVFcmFyaW9FcmJhRXJib3NvRXJlZGVFcmVtaXRhRXJpZ2VyZUVybWV0aWNvRXJvZUVyb3Npdm9FcnJhbnRlRXNhZ29ub0VzYW1lRXNhbmltZUVzYXVkaXJlRXNjYUVzZW1waW9Fc2VyY2l0b0VzaWJpdG9Fc2lnZW50ZUVzaXN0ZXJlRXNpdG9Fc29mYWdvRXNvcnRhdG9Fc29zb0VzcGFuc29Fc3ByZXNzb0Vzc2VuemFFc3NvRXN0ZXNvRXN0aW1hcmVFc3RvbmlhRXN0cm9zb0VzdWx0YXJlRXRpbGljb0V0bmljb0V0cnVzY29FdHRvRXVjbGlkZW9FdXJvcGFFdmFzb0V2aWRlbnphRXZpdGF0b0V2b2x1dG9FdnZpdmFGYWJicmljYUZhY2NlbmRhRmFjaGlyb0ZhbGNvRmFtaWdsaWFGYW5hbGVGYW5mYXJhRmFuZ29GYW50YXNtYUZhcmVGYXJmYWxsYUZhcmlub3NvRmFybWFjb0Zhc2NpYUZhc3Rvc29GYXN1bGxvRmF0aWNhcmVGYXRvRmF2b2xvc29GZWJicmVGZWNvbGFGZWRlRmVnYXRvRmVscGFGZWx0cm9GZW1taW5hRmVuZGVyZUZlbm9tZW5vRmVybWVudG9GZXJyb0ZlcnRpbGVGZXNzdXJhRmVzdGl2b0ZldHRhRmV1ZG9GaWFiYUZpZHVjaWFGaWZhRmlndXJhdG9GaWxvRmluYW56YUZpbmVzdHJhRmluaXJlRmlvcmVGaXNjYWxlRmlzaWNvRml1bWVGbGFjb25lRmxhbWVuY29GbGVib0ZsZW1tYUZsb3JpZG9GbHVlbnRlRmx1b3JvRm9iaWNvRm9jYWNjaWFGb2Nvc29Gb2RlcmF0b0ZvZ2xpb0ZvbGF0YUZvbGNsb3JlRm9sZ29yZUZvbmRlbnRlRm9uZXRpY29Gb25pYUZvbnRhbmFGb3JiaXRvRm9yY2hldHRhRm9yZXN0YUZvcm1pY2FGb3JuYWlvRm9yb0ZvcnRlenphRm9yemFyZUZvc2ZhdG9Gb3Nzb0ZyYWNhc3NvRnJhbmFGcmFzc2lub0ZyYXRlbGxvRnJlY2NldHRhRnJlbmF0YUZyZXNjb0ZyaWdvRnJvbGxpbm9Gcm9uZGVGcnVnYWxlRnJ1dHRhRnVjaWxhdGFGdWNzaWFGdWdnZW50ZUZ1bG1pbmVGdWx2b0Z1bWFudGVGdW1ldHRvRnVtb3NvRnVuZUZ1bnppb25lRnVvY29GdXJib0Z1cmdvbmVGdXJvcmVGdXNvRnV0aWxlR2FiYmlhbm9HYWZmZUdhbGF0ZW9HYWxsaW5hR2Fsb3Bwb0dhbWJlcm9HYW1tYUdhcmFuemlhR2FyYm9HYXJvZmFub0dhcnpvbmVHYXNkb3R0b0dhc29saW9HYXN0cmljb0dhdHRvR2F1ZGlvR2F6ZWJvR2F6emVsbGFHZWNvR2VsYXRpbmFHZWxzb0dlbWVsbG9HZW1tYXRvR2VuZUdlbml0b3JlR2VubmFpb0dlbm90aXBvR2VyZ29HaGVwYXJkb0doaWFjY2lvR2hpc2FHaWFsbG9HaWxkYUdpbmVwcm9HaW9jYXJlR2lvaWVsbG9HaW9ybm9HaW92ZUdpcmF0b0dpcm9uZUdpdHRhdGFHaXVkaXppb0dpdXJhdG9HaXVzdG9HbG9idWxvR2x1dGluZUdub21vR29iYmFHb2xmR29taXRvR29tbW9uZUdvbmZpb0dvbm5hR292ZXJub0dyYWNpbGVHcmFkb0dyYWZpY29HcmFtbW9HcmFuZGVHcmF0dGFyZUdyYXZvc29HcmF6aWFHcmVjYUdyZWdnZUdyaWZvbmVHcmlnaW9HcmluemFHcm90dGFHcnVwcG9HdWFkYWdub0d1YWlvR3VhbnRvR3VhcmRhcmVHdWZvR3VpZGFyZUliZXJuYXRvSWNvbmFJZGVudGljb0lkaWxsaW9JZG9sb0lkcmFJZHJpY29JZHJvZ2Vub0lnaWVuZUlnbmFyb0lnbm9yYXRvSWxhcmVJbGxlc29JbGxvZ2ljb0lsbHVkZXJlSW1iYWxsb0ltYmV2dXRvSW1ib2Njb0ltYnV0b0ltbWFuZUltbWVyc29JbW1vbGF0b0ltcGFjY29JbXBldG9JbXBpZWdvSW1wb3J0b0ltcHJvbnRhSW5hbGFyZUluYXJjYXJlSW5hdHRpdm9JbmNhbnRvSW5jZW5kaW9JbmNoaW5vSW5jaXNpdm9JbmNsdXNvSW5jb250cm9JbmNyb2Npb0luY3Vib0luZGFnaW5lSW5kaWFJbmRvbGVJbmVkaXRvSW5mYXR0aUluZmlsYXJlSW5mbGl0dG9JbmdhZ2dpb0luZ2Vnbm9JbmdsZXNlSW5nb3Jkb0luZ3Jvc3NvSW5uZXNjb0lub2RvcmVJbm9sdHJhcmVJbm9uZGF0b0luc2Fub0luc2V0dG9JbnNpZW1lSW5zb25uaWFJbnN1bGluYUludGFzYXRvSW50ZXJvSW50b25hY29JbnR1aXRvSW51bWlkaXJlSW52YWxpZG9JbnZlY2VJbnZpdG9JcGVyYm9sZUlwbm90aWNvSXBvdGVzaUlwcGljYUlyaWRlSXJsYW5kYUlyb25pY29JcnJpZ2F0b0lycm9yYXJlSXNvbGF0b0lzb3RvcG9Jc3Rlcmljb0lzdGl0dXRvSXN0cmljZUl0YWxpYUl0ZXJhcmVMYWJicm9MYWJpcmludG9MYWNjYUxhY2VyYXRvTGFjcmltYUxhY3VuYUxhZGRvdmVMYWdvTGFtcG9MYW5jZXR0YUxhbnRlcm5hTGFyZG9zb0xhcmdhTGFyaW5nZUxhc3RyYUxhdGVuemFMYXRpbm9MYXR0dWdhTGF2YWduYUxhdm9yb0xlZ2FsZUxlZ2dlcm9MZW1ib0xlbnRlenphTGVuemFMZW9uZUxlcHJlTGVzaXZvTGVzc2F0b0xlc3RvTGV0dGVyYWxlTGV2YUxldmlnYXRvTGliZXJvTGlkb0xpZXZpdG9MaWxsYUxpbWF0dXJhTGltaXRhcmVMaW1waWRvTGluZWFyZUxpbmd1YUxpcXVpZG9MaXJhTGlyaWNhTGlzY2FMaXRlTGl0aWdpb0xpdnJlYUxvY2FuZGFMb2RlTG9naWNhTG9tYmFyZUxvbmRyYUxvbmdldm9Mb3F1YWNlTG9yZW56b0xvdG9Mb3R0ZXJpYUx1Y2VMdWNpZGF0b0x1bWFjYUx1bWlub3NvTHVuZ29MdXBvTHVwcG9sb0x1c2luZ2FMdXNzb0x1dHRvTWFjYWJyb01hY2NoaW5hTWFjZXJvTWFjaW5hdG9NYWRhbWFNYWdpY29NYWdsaWFNYWduZXRlTWFncm9NYWlvbGljYU1hbGFmZWRlTWFsZ3JhZG9NYWxpbnRlc29NYWxzYW5vTWFsdG9NYWx1bW9yZU1hbmFNYW5jaWFNYW5kb3JsYU1hbmdpYXJlTWFuaWZlc3RvTWFubmFyb01hbm92cmFNYW5zYXJkYU1hbnRpZGVNYW51YnJpb01hcHBhTWFyYXRvbmFNYXJjaXJlTWFyZXR0YU1hcm1vTWFyc3VwaW9NYXNjaGVyYU1hc3NhaWFNYXN0aW5vTWF0ZXJhc3NvTWF0cmljb2xhTWF0dG9uZU1hdHVyb01henVyY2FNZWFuZHJvTWVjY2FuaWNvTWVjZW5hdGVNZWRlc2ltb01lZGl0YXJlTWVnYU1lbGFzc2FNZWxpc01lbG9kaWFNZW5pbmdlTWVub01lbnNvbGFNZXJjdXJpb01lcmVuZGFNZXJsb01lc2NoaW5vTWVzZU1lc3NlcmVNZXN0b2xvTWV0YWxsb01ldG9kb01ldHRlcmVNaWFnb2xhcmVNaWNhTWljZWxpb01pY2hlbGVNaWNyb2JvTWlkb2xsb01pZWxlTWlnbGlvcmVNaWxhbm9NaWxpdGVNaW1vc2FNaW5lcmFsZU1pbmlNaW5vcmVNaXJpbm9NaXJ0aWxsb01pc2NlbGFNaXNzaXZhTWlzdG9NaXN1cmFyZU1pdGV6emFNaXRpZ2FyZU1pdHJhTWl0dGVudGVNbmVtb25pY29Nb2RlbGxvTW9kaWZpY2FNb2R1bG9Nb2dhbm9Nb2dpb01vbGVNb2xvc3NvTW9uYXN0ZXJvTW9uY29Nb25kaW5hTW9uZXRhcmlvTW9uaWxlTW9ub3Rvbm9Nb25zb25lTW9udGF0b01vbnZpc29Nb3JhTW9yZGVyZU1vcnNpY2F0b01vc3Ryb01vdGl2YXRvTW90b3NlZ2FNb3R0b01vdmVuemFNb3ZpbWVudG9Nb3p6b011Y2NhTXVjb3NhTXVmZmFNdWdoZXR0b011Z25haW9NdWxhdHRvTXVsaW5lbGxvTXVsdGlwbG9NdW1taWFNdW50b011b3ZlcmVNdXJhbGVNdXNhTXVzY29sb011c2ljYU11dGV2b2xlTXV0b05hYmFiYm9OYWZ0YU5hbm9tZXRyb05hcmNpc29OYXJpY2VOYXJyYXRvTmFzY2VyZU5hc3RyYXJlTmF0dXJhbGVOYXV0aWNhTmF2aWdsaW9OZWJ1bG9zYU5lY3Jvc2lOZWdhdGl2b05lZ296aW9OZW1tZW5vTmVvZml0YU5lcmV0dG9OZXJ2b05lc3N1bm9OZXR0dW5vTmV1dHJhbGVOZXZlTmV2cm90aWNvTmljY2hpYU5pbmZhTml0aWRvTm9iaWxlTm9jaXZvTm9kb05vbWVOb21pbmFOb3JkaWNvTm9ybWFsZU5vcnZlZ2VzZU5vc3RyYW5vTm90YXJlTm90aXppYU5vdHR1cm5vTm92ZWxsYU51Y2xlb051bGxhTnVtZXJvTnVvdm9OdXRyaXJlTnV2b2xhTnV6aWFsZU9hc2lPYmJlZGlyZU9iYmxpZ29PYmVsaXNjb09ibGlvT2JvbG9PYnNvbGV0b09jY2FzaW9uZU9jY2hpb09jY2lkZW50ZU9jY29ycmVyZU9jY3VsdGFyZU9jcmFPY3VsYXRvT2RpZXJub09kb3JhcmVPZmZlcnRhT2ZmcmlyZU9mZnVzY2F0b09nZ2V0dG9PZ2dpT2dudW5vT2xhbmRlc2VPbGZhdHRvT2xpYXRvT2xpdmFPbG9ncmFtbWFPbHRyZU9tYWdnaW9PbWJlbGljb09tYnJhT21lZ2FPbWlzc2lvbmVPbmRvc29PbmVyZU9uaWNlT25uaXZvcm9Pbm9yZXZvbGVPbnRhT3BlcmF0b09waW5pb25lT3Bwb3N0b09yYWNvbG9PcmFmb09yZGluZU9yZWNjaGlub09yZWZpY2VPcmZhbm9Pcmdhbmljb09yaWdpbmVPcml6em9udGVPcm1hT3JtZWdnaW9Pcm5hdGl2b09yb2xvZ2lvT3JyZW5kb09ycmliaWxlT3J0ZW5zaWFPcnRpY2FPcnphdGFPcnpvT3NhcmVPc2N1cmFyZU9zbW9zaU9zcGVkYWxlT3NwaXRlT3NzYU9zc2lkYXJlT3N0YWNvbG9Pc3RlT3RpdGVPdHJlT3R0YWdvbm9PdHRpbW9PdHRvYnJlT3ZhbGVPdmVzdE92aW5vT3ZpcGFyb092b2NpdG9PdnVucXVlT3Z2aWFyZU96aW9QYWNjaGV0dG9QYWNlUGFjaWZpY29QYWRlbGxhUGFkcm9uZVBhZXNlUGFnYVBhZ2luYVBhbGF6emluYVBhbGVzYXJlUGFsbGlkb1BhbG9QYWx1ZGVQYW5kb3JvUGFubmVsbG9QYW9sb1Bhb25henpvUGFwcmljYVBhcmFib2xhUGFyY2VsbGFQYXJlcmVQYXJnb2xvUGFyaVBhcmxhdG9QYXJvbGFQYXJ0aXJlUGFydmVuemFQYXJ6aWFsZVBhc3Npdm9QYXN0aWNjYVBhdGFjY2FQYXRvbG9naWFQYXR0dW1lUGF2b25lUGVjY2F0b1BlZGFsYXJlUGVkb25hbGVQZWdnaW9QZWxvc29QZW5hcmVQZW5kaWNlUGVuaXNvbGFQZW5udXRvUGVub21icmFQZW5zYXJlUGVudG9sYVBlcGVQZXBpdGFQZXJiZW5lUGVyY29yc29QZXJkb25hdG9QZXJmb3JhcmVQZXJnYW1lbmFQZXJpb2RvUGVybWVzc29QZXJub1BlcnBsZXNzb1BlcnN1YXNvUGVydHVnaW9QZXJ2YXNvUGVzYXRvcmVQZXNpc3RhUGVzb1Blc3RpZmVyb1BldGFsb1BldHRpbmVQZXR1bGFudGVQZXp6b1BpYWNlcmVQaWFudGFQaWF0dGlub1BpY2Npbm9QaWNvenphUGllZ2FQaWV0cmFQaWZmZXJvUGlnaWFtYVBpZ29saW9QaWdyb1BpbGFQaWxpZmVyb1BpbGxvbGFQaWxvdGFQaW1wYW50ZVBpbmV0YVBpbm5hUGlub2xvUGlvZ2dpYVBpb21ib1BpcmFtaWRlUGlyZXRpY29QaXJpdGVQaXJvbGlzaVBpdG9uZVBpenppY29QbGFjZWJvUGxhbmFyZVBsYXNtYVBsYXRhbm9QbGVuYXJpb1BvY2hlenphUG9kZXJvc29Qb2Rpc21vUG9lc2lhUG9nZ2lhcmVQb2xlbnRhUG9saWdvbm9Qb2xsaWNlUG9sbW9uaXRlUG9scGV0dGFQb2xzb1BvbHRyb25hUG9sdmVyZVBvbWljZVBvbW9kb3JvUG9udGVQb3BvbG9zb1BvcmZpZG9Qb3Jvc29Qb3Jwb3JhUG9ycmVQb3J0YXRhUG9zYVBvc2l0aXZvUG9zc2Vzc29Qb3N0dWxhdG9Qb3Rhc3Npb1BvdGVyZVByYW56b1ByYXNzaVByYXRpY2FQcmVjbHVzb1ByZWRpY2FQcmVmaXNzb1ByZWdpYXRvUHJlbGlldm9QcmVtZXJlUHJlbm90YXJlUHJlcGFyYXRvUHJlc2VuemFQcmV0ZXN0b1ByZXZhbHNvUHJpbWFQcmluY2lwZVByaXZhdG9Qcm9ibGVtYVByb2N1cmFQcm9kdXJyZVByb2Z1bW9Qcm9nZXR0b1Byb2x1bmdhUHJvbWVzc2FQcm9ub21lUHJvcG9zdGFQcm9yb2dhUHJvdGVzb1Byb3ZhUHJ1ZGVudGVQcnVnbmFQcnVyaXRvUHNpY2hlUHViYmxpY29QdWRpY2FQdWdpbGF0b1B1Z25vUHVsY2VQdWxpdG9QdWxzYW50ZVB1bnRhcmVQdXBhenpvUHVwaWxsYVB1cm9RdWFkcm9RdWFsY29zYVF1YXNpUXVlcmVsYVF1b3RhUmFjY29sdG9SYWRkb3BwaW9SYWRpY2FsZVJhZHVuYXRvUmFmZmljYVJhZ2F6em9SYWdpb25lUmFnbm9SYW1hcnJvUmFtaW5nb1JhbW9SYW5kYWdpb1JhbnRvbGFyZVJhcGF0b1JhcGluYVJhcHByZXNvUmFzYXR1cmFSYXNjaGlhdG9SYXNlbnRlUmFzc2VnbmFSYXN0cmVsbG9SYXRhUmF2dmVkdXRvUmVhbGVSZWNlcGlyZVJlY2ludG9SZWNsdXRhUmVjb25kaXRvUmVjdXBlcm9SZWRkaXRvUmVkaW1lcmVSZWdhbGF0b1JlZ2lzdHJvUmVnb2xhUmVncmVzc29SZWxhemlvbmVSZW1hcmVSZW1vdG9SZW5uYVJlcGxpY2FSZXByaW1lcmVSZXB1dGFyZVJlc2FSZXNpZGVudGVSZXNwb25zb1Jlc3RhdXJvUmV0ZVJldGluYVJldG9yaWNhUmV0dGlmaWNhUmV2b2NhdG9SaWFzc3VudG9SaWJhZGlyZVJpYmVsbGVSaWJyZXp6b1JpY2FyaWNhUmljY29SaWNldmVyZVJpY2ljbGF0b1JpY29yZG9SaWNyZWR1dG9SaWRpY29sb1JpZHVycmVSaWZhc2FyZVJpZmxlc3NvUmlmb3JtYVJpZnVnaW9SaWdhcmVSaWdldHRhdG9SaWdoZWxsb1JpbGFzc2F0b1JpbGV2YXRvUmltYW5lcmVSaW1iYWx6b1JpbWVkaW9SaW1vcmNoaW9SaW5hc2NpdGFSaW5jYXJvUmluZm9yem9SaW5ub3ZvUmlub21hdG9SaW5zYXZpdG9SaW50b2Njb1JpbnVuY2lhUmludmVuaXJlUmlwYXJhdG9SaXBldHV0b1JpcGllbm9SaXBvcnRhcmVSaXByZXNhUmlwdWxpcmVSaXNhdGFSaXNjaGlvUmlzZXJ2YVJpc2liaWxlUmlzb1Jpc3BldHRvUmlzdG9yb1Jpc3VsdGF0b1Jpc3ZvbHRvUml0YXJkb1JpdGVnbm9SaXRtaWNvUml0cm92b1JpdW5pb25lUml2YVJpdmVyc29SaXZpbmNpdGFSaXZvbHRvUml6b21hUm9iYVJvYm90aWNvUm9idXN0b1JvY2NpYVJvY29Sb2RhZ2dpb1JvZGVyZVJvZGl0b3JlUm9naXRvUm9sbGlvUm9tYW50aWNvUm9tcGVyZVJvbnppb1Jvc29sYXJlUm9zcG9Sb3RhbnRlUm90b25kb1JvdHVsYVJvdmVzY2lvUnViaXp6b1J1YnJpY2FSdWdhUnVsbGlub1J1bWluZVJ1bW9yb3NvUnVvbG9SdXBlUnVzc2FyZVJ1c3RpY29TYWJhdG9TYWJiaWFyZVNhYm90YXRvU2Fnb21hU2FsYXNzb1NhbGRhdHVyYVNhbGdlbW1hU2FsaXZhcmVTYWxtb25lU2Fsb25lU2FsdGFyZVNhbHV0b1NhbHZvU2FwZXJlU2FwaWRvU2Fwb3JpdG9TYXJhY2Vub1NhcmNhc21vU2FydG9TYXNzb3NvU2F0ZWxsaXRlU2F0aXJhU2F0b2xsb1NhdHVybm9TYXZhbmFTYXZpb1NhemlhdG9TYmFkaWdsaW9TYmFsem9TYmFuY2F0b1NiYXJyYVNiYXR0ZXJlU2JhdmFyZVNiZW5kYXJlU2JpcmNpYXJlU2Jsb2NjYXRvU2JvY2NpYXRvU2JyaW5hcmVTYnJ1ZmZvbmVTYnVmZmFyZVNjYWJyb3NvU2NhZGVuemFTY2FsYVNjYW1iaWFyZVNjYW5kYWxvU2NhcG9sYVNjYXJzb1NjYXRlbmFyZVNjYXZhdG9TY2VsdG9TY2VuaWNvU2NldHRyb1NjaGVkYVNjaGllbmFTY2lhcnBhU2NpZW56YVNjaW5kZXJlU2NpcHBvU2Npcm9wcG9TY2l2b2xvU2NsZXJhcmVTY29kZWxsYVNjb2xwaXRvU2NvbXBhcnRvU2NvbmZvcnRvU2NvcHJpcmVTY29ydGFTY29zc29uZVNjb3p6ZXNlU2NyaWJhU2Nyb2xsYXJlU2NydXRpbmlvU2N1ZGVyaWFTY3VsdG9yZVNjdW9sYVNjdXJvU2N1c2FyZVNkZWJpdGFyZVNkb2dhbmFyZVNlY2NhdHVyYVNlY29uZG9TZWRhbm9TZWdnaW9sYVNlZ25hbGF0b1NlZ3JlZ2F0b1NlZ3VpdG9TZWxjaWF0b1NlbGV0dGl2b1NlbGxhU2VsdmFnZ2lvU2VtYWZvcm9TZW1icmFyZVNlbWVTZW1pbmF0b1NlbXByZVNlbnNvU2VudGlyZVNlcG9sdG9TZXF1ZW56YVNlcmF0YVNlcmJhdG9TZXJlbm9TZXJpb1NlcnBlbnRlU2VycmFnbGlvU2VydmlyZVNlc3RpbmFTZXRvbGFTZXR0aW1hbmFTZmFjZWxvU2ZhbGRhcmVTZmFtYXRvU2Zhcnpvc29TZmF0aWNhdG9TZmVyYVNmaWRhU2ZpbGF0b1NmaW5nZVNmb2NhdG9TZm9kZXJhcmVTZm9nb1Nmb2x0aXJlU2ZvcnphdG9TZnJhdHRvU2ZydXR0YXRvU2Z1Z2dpdG9TZnVtYXJlU2Z1c29TZ2FiZWxsb1NnYXJiYXRvU2dvbmZpYXJlU2dvcmJpb1NncmFzc2F0b1NndWFyZG9TaWJpbG9TaWNjb21lU2llcnJhU2lnbGFTaWdub3JlU2lsZW56aW9TaWxsYWJhU2ltYm9sb1NpbXBhdGljb1NpbXVsYXRvU2luZm9uaWFTaW5nb2xvU2luaXN0cm9TaW5vU2ludGVzaVNpbnVzb2lkZVNpcGFyaW9TaXNtYVNpc3RvbGVTaXR1YXRvU2xpdHRhU2xvZ2F0dXJhU2xvdmVub1NtYXJyaXRvU21lbW9yYXRvU21lbnRpdG9TbWVyYWxkb1NtaWx6b1Ntb250YXJlU21vdHRhdG9TbXVzc2F0b1NuZWxsaXJlU25lcnZhdG9Tbm9kb1NvYmJhbHpvU29icmlvU29jY29yc29Tb2NpYWxlU29kYWxlU29mZml0dG9Tb2dub1NvbGRhdG9Tb2xlbm5lU29saWRvU29sbGF6em9Tb2xvU29sdWJpbGVTb2x2ZW50ZVNvbWF0aWNvU29tbWFTb25kYVNvbmV0dG9Tb25uaWZlcm9Tb3BpcmVTb3BwZXNvU29wcmFTb3JnZXJlU29ycGFzc29Tb3JyaXNvU29yc29Tb3J0ZWdnaW9Tb3J2b2xhdG9Tb3NwaXJvU29zdGFTb3R0aWxlU3BhZGFTcGFsbGFTcGFyZ2VyZVNwYXRvbGFTcGF2ZW50b1NwYXp6b2xhU3BlY2llU3BlZGlyZVNwZWduZXJlU3BlbGF0dXJhU3BlcmFuemFTcGVzc29yZVNwZXR0cmFsZVNwZXp6YXRvU3BpYVNwaWdvbG9zb1NwaWxsYXRvU3Bpbm9zb1NwaXJhbGVTcGxlbmRpZG9TcG9ydGl2b1Nwb3NvU3ByYW5nYVNwcmVjYXJlU3Byb25hdG9TcHJ1enpvU3B1bnRpbm9TcXVpbGxvU3JhZGljYXJlU3JvdG9sYXRvU3RhYmlsZVN0YWNjb1N0YWZmYVN0YWduYXJlU3RhbXBhdG9TdGFudGlvU3Rhcm51dG9TdGFzZXJhU3RhdHV0b1N0ZWxvU3RlcHBhU3RlcnpvU3RpbGV0dG9TdGltYVN0aXJwZVN0aXZhbGVTdGl6em9zb1N0b25hdG9TdG9yaWNvU3RyYXBwb1N0cmVnYXRvU3RyaWR1bG9TdHJvenphcmVTdHJ1dHRvU3R1Y2NhcmVTdHVmb1N0dXBlbmRvU3ViZW50cm9TdWNjb3NvU3Vkb3JlU3VnZ2VyaXRvU3Vnb1N1bHRhbm9TdW9uYXJlU3VwZXJib1N1cHBvcnRvU3VyZ2VsYXRvU3Vycm9nYXRvU3Vzc3Vycm9TdXR1cmFTdmFnYXJlU3ZlZGVzZVN2ZWdsaW9TdmVsYXJlU3ZlbnV0b1N2ZXppYVN2aWx1cHBvU3Zpc3RhU3ZpenplcmFTdm9sdGFTdnVvdGFyZVRhYmFjY29UYWJ1bGF0b1RhY2NpYXJlVGFjaXR1cm5vVGFsZVRhbGlzbWFub1RhbXBvbmVUYW5uaW5vVGFyYVRhcmRpdm9UYXJnYXRvVGFyaWZmYVRhcnBhcmVUYXJ0YXJ1Z2FUYXN0b1RhdHRpY29UYXZlcm5hVGF2b2xhdGFUYXp6YVRlY2FUZWNuaWNvVGVsZWZvbm9UZW1lcmFyaW9UZW1wb1RlbXV0b1RlbmRvbmVUZW5lcm9UZW5zaW9uZVRlbnRhY29sb1Rlb3JlbWFUZXJtZVRlcnJhenpvVGVyemV0dG9UZXNpVGVzc2VyYXRvVGVzdGF0b1RldHJvVGV0dG9pYVRpZmFyZVRpZ2VsbGFUaW1icm9UaW50b1RpcGljb1RpcG9ncmFmb1RpcmFnZ2lvVGlyb1RpdGFuaW9UaXRvbG9UaXR1YmFudGVUaXppb1RpenpvbmVUb2NjYXJlVG9sbGVyYXJlVG9sdG9Ub21ib2xhVG9tb1RvbmZvVG9uc2lsbGFUb3BhemlvVG9wb2xvZ2lhVG9wcGFUb3JiYVRvcm5hcmVUb3Jyb25lVG9ydG9yYVRvc2Nhbm9Ub3NzaXJlVG9zdGF0dXJhVG90YW5vVHJhYm9jY29UcmFjaGVhVHJhZmlsYVRyYWdlZGlhVHJhbGNpb1RyYW1vbnRvVHJhbnNpdG9UcmFwYW5vVHJhcnJlVHJhc2xvY29UcmF0dGF0b1RyYXZlVHJlY2NpYVRyZW1vbGlvVHJlc3BvbG9UcmlidXRvVHJpY2hlY29Ucmlmb2dsaW9UcmlsbG9UcmluY2VhVHJpb1RyaXN0ZXp6YVRyaXR1cmF0b1RyaXZlbGxhVHJvbWJhVHJvbm9Ucm9wcG9Ucm90dG9sYVRyb3ZhcmVUcnVjY2F0b1R1YmF0dXJhVHVmZmF0b1R1bGlwYW5vVHVtdWx0b1R1bmlzaWFUdXJiYXJlVHVyY2hpbm9UdXRhVHV0ZWxhVWJpY2F0b1VjY2VsbG9VY2Npc29yZVVkaXJlVWRpdGl2b1VmZmFVZmZpY2lvVWd1YWxlVWxpc3NlVWx0aW1hdG9VbWFub1VtaWxlVW1vcmlzbW9VbmNpbmV0dG9VbmdlcmVVbmdoZXJlc2VVbmljb3Jub1VuaWZpY2F0b1VuaXNvbm9Vbml0YXJpb1VudGVVb3ZvVXB1cGFVcmFnYW5vVXJnZW56YVVybG9Vc2FuemFVc2F0b1VzY2l0b1VzaWdub2xvVXN1cmFpb1V0ZW5zaWxlVXRpbGl6em9VdG9waWFWYWNhbnRlVmFjY2luYXRvVmFnYWJvbmRvVmFnbGlhdG9WYWxhbmdhVmFsZ29WYWxpY29WYWxsZXR0YVZhbG9yb3NvVmFsdXRhcmVWYWx2b2xhVmFtcGF0YVZhbmdhcmVWYW5pdG9zb1Zhbm9WYW50YWdnaW9WYW52ZXJhVmFwb3JlVmFyYW5vVmFyY2F0b1ZhcmlhbnRlVmFzY2FWZWRldHRhVmVkb3ZhVmVkdXRvVmVnZXRhbGVWZWljb2xvVmVsY3JvVmVsaW5hVmVsbHV0b1ZlbG9jZVZlbmF0b1ZlbmRlbW1pYVZlbnRvVmVyYWNlVmVyYmFsZVZlcmdvZ25hVmVyaWZpY2FWZXJvVmVycnVjYVZlcnRpY2FsZVZlc2NpY2FWZXNzaWxsb1Zlc3RhbGVWZXRlcmFub1ZldHJpbmFWZXR1c3RvVmlhbmRhbnRlVmlicmFudGVWaWNlbmRhVmljaGluZ29WaWNpbmFuemFWaWRpbWFyZVZpZ2lsaWFWaWduZXRvVmlnb3JlVmlsZVZpbGxhbm9WaW1pbmlWaW5jaXRvcmVWaW9sYVZpcGVyYVZpcmdvbGFWaXJvbG9nb1ZpcnVsZW50b1Zpc2Nvc29WaXNpb25lVmlzcG9WaXNzdXRvVmlzdXJhVml0YVZpdGVsbG9WaXR0aW1hVml2YW5kYVZpdmlkb1ZpemlhcmVWb2NlVm9nYVZvbGF0aWxlVm9sZXJlVm9scGVWb3JhZ2luZVZ1bGNhbm9aYW1wb2duYVphbm5hWmFwcGF0b1phdHRlcmFaYXZvcnJhWmVmaXJvWmVsYW50ZVplbG9aZW56ZXJvWmVyYmlub1ppYmV0dG9aaW5jb1ppcmNvbmVaaXR0b1pvbGxhWm90aWNvWnVjY2hlcm9adWZvbG9adWx1WnVwcGEiO3ZhciB3b3JkbGlzdCQxPW51bGw7ZnVuY3Rpb24gbG9hZFdvcmRzKGxhbmcpe2lmKHdvcmRsaXN0JDEhPW51bGwpe3JldHVybn13b3JkbGlzdCQxPXdvcmRzLnJlcGxhY2UoLyhbQS1aXSkvZywiICQxIikudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMSkuc3BsaXQoIiAiKTtpZih3b3JkbGlzdC5Xb3JkbGlzdC5jaGVjayhsYW5nKSE9PSIweDVjMTM2MmQ4OGZkNGNmNjE0YTk2ZjMyMzQ5NDFkMjlmN2QzN2MwOGM1MjkyZmRlMDNiZjYyYzJkYjZmZjc2MjAiKXt3b3JkbGlzdCQxPW51bGw7dGhyb3cgbmV3IEVycm9yKCJCSVAzOSBXb3JkbGlzdCBmb3IgaXQgKEl0YWxpYW4pIEZBSUxFRCIpfX12YXIgTGFuZ0l0PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKExhbmdJdCxfc3VwZXIpO2Z1bmN0aW9uIExhbmdJdCgpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJpdCIpfHx0aGlzfUxhbmdJdC5wcm90b3R5cGUuZ2V0V29yZD1mdW5jdGlvbihpbmRleCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxW2luZGV4XX07TGFuZ0l0LnByb3RvdHlwZS5nZXRXb3JkSW5kZXg9ZnVuY3Rpb24od29yZCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxLmluZGV4T2Yod29yZCl9O3JldHVybiBMYW5nSXR9KHdvcmRsaXN0LldvcmRsaXN0KTt2YXIgbGFuZ0l0PW5ldyBMYW5nSXQ7ZXhwb3J0cy5sYW5nSXQ9bGFuZ0l0O3dvcmRsaXN0LldvcmRsaXN0LnJlZ2lzdGVyKGxhbmdJdCl9KTt2YXIgbGFuZ0l0PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxhbmdJdF8xKTt2YXIgbGFuZ1poPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMubGFuZ1poVHc9ZXhwb3J0cy5sYW5nWmhDbj12b2lkIDA7dmFyIGRhdGE9In1hRSM0QT1ZdiZjbyM0TiM2Rz1jSiZTTSM2NnwvWiM0dCZrbn40NiM0S340cSViOT1JUiM3bCxtQiM3V19YMipkbH1Vb343c31VZiZJdyM5YyZjd342TyZINiZ3eCZJRyV2NT1JUX44YSZQdiM0NyRQUiY1MCVLbyZRTSYzbCM1ZixEOSM0THwvSCZ0UTt2MH42bl1uTjxkaSxBTT1XNSVRTyZrYSZ1YSxoTV50bT16Vj1KQT13UiYrWF03UCZOQiM0SiM1THwvYltkQX10SjxEbyY2bSZ1MltVMSZLYi5ITSZtQz13MCZNVzxyWSxIcSM2TX1RRywxMyZ3UH1KcF1PdyV1ZSZLZzxIUDxEOX40a345VCZJMl9jNiQ5VCM5L1tDNX43T340YT1jcyZPNz1LSz1BbiZsOSQ2VSQ4QSZ1RCZRSXwvWSZiZ31VeCZGMiM2Yn1FMiZKTiZrVyZrcD1VLyZiYj1YbDxDan1rK341SiM2TCY1eiY5aX1iNCZGbyxobyhYMF9nM340TyRGeiZRRTxITj1Xd102LyVHRi1Wdz10aiYvRCZQTiM5Zz1ZT31jTCZPZiZQSX41SSZJcD12VT1JVyM5Rzswby13VX1zcyZRUjxCVCZSOT10ayRQWV9kaCZQcS15aF03VCxuai5YdT1FUCY3Nj1jSSZGcypYZ316NyRHYiYrST1ERixBRj1jQX1yTCM3aj1EeiYzeTxBYSQ1Mj1QUX1iMChpWSRGYX1vTCZ4ViM2VT1lYz1XWix4aCVSWTxkcCM5TiZGbCY0ND1XSCpBNz1zaCZUQiY4UD0wNzt1KyZQS311aH1KNSM3MilWLz14QyxBQiRrMCZmNjsxRXwrNT0xQiwzdl02biZ3UiViKyZ4eF03Zj1PbH1mbDsrRF53R103RTtuQjt1aF5JciZsNT1KTCxuUz1jZj1nNTt1NnwvUSRHYz1NSCVIZyM1ZCVNNl44Nj1VKyRHeixsLyxpcl41eSZCYSYvRi1JWSZGSSZiZSVJWiM3NyZQV19OdSRrRShZZiZOWF03WixKeSZGSihYbyZOeiMvZD15NyZNWDxBZ31aKztuRV1EdChpRyM0RD0xMyZQan40YyV2OCZabyVPTCYvWCM0VzxIUiZpZX42Sl8xTyhZMj15NT1BZCpjdl9lQiM2ayZQWDpCVSM3QTt1ayZGdCZGeF9kRD1VMjt2Qj1VNT00Rn0rTyZHTi5ISDo5cz1iMCVOVihqTyZJSD1KVH1aOT1WWjxBZixLeF40bSZ1SiVjNiw2cjs5bSMrTH1jZiVLaCZGM340SD12UH1idSxIenwrKywxd11udn1rNjt1dSRqdypLbCpXWCZ1TVt4NyZGclttNyROTyZRTl1odT1KTn1uUl44ZyMvaChwc3xLQzt2ZH14ej1WMH1wNiZGRCRHMSM3SzxiR180cH44ZyZjZjt1ND10bH0rayU1L31mejt1dzxjQT11MX1nVX1WTT1MSj1lWCYrTCZQciM0VX1wMjpuQywyS103SDpqRiY5eH11WCM5Tz1NQjxmen44WH41bSY0RCZrTiZ1NSVFLyhoNyhaRiZWRzxkZShxTXwvZS1XdD0zeChhKywvUl1mLyZORCRSbyZuVX0wZz1LQSVrSCZOSyRLZTxkU31jQiZJWH41ZyRUTl02bT1VdixJcyZQeT1FZiVLeiMrLyViaSYrQTxGNCRPRyY0QyZGTCM5Vjxaaz0ySV9lRSY2Y11udyZrcSRIR315KyZBOCRQM31PSD1YUF03MCVJUyhBSl9nSCVHWiZ0WSZBWj12Yn42eSYvcj1WST1XdjxaaT1mbD14ZiZlTH1jOH1PTD1NSj1nOCRGNz1ZVH05dT0wK154Q31KSCZuTF5OMH40VF1LMixDeSVPQyM2czt2RyhBQ154ZV5jRyZNRn1CciM5UDt3RC03aCRPLyZ4QX1Gbl5QQ102aV03RyY4ViRRczt2bChUQn43M340bDxtVyY2Vj0yeSZ1WSYrMylhUH1YRjtMUCZreCR3VT10Nzt1eTxGTiZseik3RT1PbypZKzt3SX05cX1sZTtKNiZSaSY0dCZRciM4Qj1jYiZ2Rz1KNXxRbChoNTxZeX40K31RRCxMeD13biVLLyZSSz1kTyZQdyxROT1jbyU0dTs5dX1nMEA2YV40SSViMD16b3wvYyZ0WD1kUT1PUyMrYj15el9BQiZ3QiZQbT1XOSRIUF9nUj02Mj1BTz10aT1oSSxvQSZqciZkSD10bSZiNiRQMih4OD16aTtuR343RjswNV0wbltJeCYzbX1yZz1YcD1jZCZ1el03dDs5Nz1jTjt2VjxqZiZGRiZGMT02USZJaypLayZQNCwyej1mUV03RCYzdSxIMD1kL31VdzxaTjw3Un1LdjswZiRINyxNRF03biRGMCM4OH45WiVkYT1ieTsrVCMvdT1WRiZmTyZrcl5rZjxBQl1zVSxJNSROZyZQejswaSZRRCZ2TT1ZbDpCTTtuSl94Sl1VNyZLZiYzMCwzZnxaOSpkQylqZV9qQSZRNCZLcCROSChZeiM2UyZJZCVJYj1LWCxBRD1LViVkUH10VyZQa14rRV9OaT1jcSwzUn1WWihTaT1iK31ydjswan1yWl11QSwvdyhTeCZKdiR3OSY0ZCZ3RSxOSiRHeT1KL11McyM3azxaUTxZLyZ1al1PdiRQTTt2MywyRiYrdTp1cD1PbiYzZSxKdjs5MD1KKyZRbV02cX1iSyMrZH44WShoMl1oQTs5OSZBUz1JL31xQiZkUX15Si1WTX1WbCZ1aSxpQiZHM3xEY103ZD1lUSVkWCVKQ18xTH40ZF5OUDt2SiYvMSlaSSM3Tl05WFtiUSZQTD0wTChVWixMbSZrYyZJUn1uNyhpUjxBUTxkZz0zMz12Tn1mdH1hdV03SSxCYT14OT1kUn42UiZUcT1YaSwzZCROciZCY31ESSZrdSZ2Zl1EbiwvRiZpRCxMbCZOdz0weSZJNz1Mcz0vQSZ0VT1RZX1VYSZ1ayYrRj1nND1naD1WaiMrMSZRbn1VeSo0NCM1RixQYyZSeipYbj1vaD01Vzswbl9OZihpRTxZNz12cj1adV1veiM1WiVtST1rTj1Cdl9KcChUMjt2dF9NbDxGUyZ1ST1MLyY2UF02NCRNN304NjxibyVRWChTSSVJWSZWSz1BbCZVeDt2djt1dCpFLyV1aDxaRXxPMyxNMih5Y115dT1XayZ0cDpFeH1ocixDbCZXRSkrWj04VX1JMl80USxoQV9zaT1pdz1PTT10TT15WiVJYT1VNzt3VH1iKzt1bz1aYX15UyE1eH1IRH1mYiM1T19kQTtOdiV1Qih5QjswMShTZn1Gazt2N31QdCM4djxtWiM3TCwvciZQbH40dyZmNT1QaCRGd19MRiY4bSxiTD15SiZCSH1wLypKbn10VX41UTt3QihoNl1EZl04cF4rQjtFNCZXYz1kKztFYSZidyQ4QyZGTixETT1ZZn1tUH41dz1mVCM2Vj1tQz1GaT1BVn1qQiZBTn1sV31hSCMvRClkWjtobDt2RX0vNyxDSjszMSZ3OCxoaiV1OV9Kcz1qSiY0TX44az1UTiZlQ31uTCZ1Yy13aSZsWH1kaj1Ndj1lMiM2dT1jciR1cSQ2R104V31KYjpubT1ZZzxiMyhVQTt2WCY2biZ4Rj1LVCxqQyxEZSZSOCZvWT1adiZvQl03Lz1aMiZPYX1iZixoaCg0aF50WiY3MiZOeDtEMiZ4TH41aH40MClaRyloKz1PSiZSQV1CdiR5Qj1PcT1kZixBUSVKbn1PSjsxMSwzeiZUbCZ0ajt2K15IdixEaChpZD1zK103TiZOMyk5UX44ZixTND11Vz13NCZ1WCxMWCYzZF1DSiZ5cCY4eDxiMl9kbyZsUD15LzxjeV9kRz1PaT03UihWSChsdF8xVCxJcV9BQTsxMl42VCVrNiM4S1tCMXtvTzxBVVtCdDsxYiQ5UyZQczw4VD1TdHtiWSxqQihacCY2MyZVdiQ5VixQTV02diZBZn16V1tiV19vcX1zbX1uQiZLcSZnQyZmZl9lcV8ybSY1RiZUSX1yZn1HZjtacl96OTtFUiZqa31pel9zbjxCTn4rbiZ2bz1WaSU5N3xaUj1XYyxXRSY2dF02eiU4NShseSM4ND1LWSk2bV81Lz1hWCxOM31UbSZoZSY2S110Ul9CMi1JMzt1LyZoVSZsSDxBUD1pQiZJQT1YTDsvNSZOaD13djxCSCM3OT12Uz16bDxBQT0wWF9SR31CdyY5cCROVyxBWCZrUF9McCYvWihUY11NdX1ocyM2SX01QiZjSTxicSZIOSM2bT1LOX12SChZMShZMCM0QiZ3NiwvOSZnRzxiRSwvTz16Yn1JNF9sODxCLzt3TCVRbzxIT1tNcT1YWH0wdiZCUCZGNChtR30waX1ubSxFQz05dXtJMyx4RyYvOT1KWSpESyZoUilCWD1FST1jeD1iL3s2a315WCVBKyZ3YX1YYj1sYTt3aV5sTDswdH1qbyZRYj14Zz1YQn1pTzxxb3tiUj1OViY4Zj1hMCZKeTswdj11SylISzt2TiM2aCZqQihoLyV1ZCZOSSV3WS5YNz1QdH1DdS11TCZHc19obCVtSCx0bV03OD1MYl5RMCM3WT0xdTxCdCYrUT1Db19SSCx3MzsxZX11eDxhVTt1aX1VMyZRNSVidF02MyZVUXwwbCZ1TH1PNyYzbyxBViZkbXxOaihYdCo1KyhVdSZIaChwNyhVRj1WUj1CcF5KbCZIZFtpeCk5Lz1JcV1DODw2N102Nn1tQiU2Zn1iYn1KSV04VCRIQX1kYj1ZTSZwYT0ySn10UyZZMD1QUyZ5ND1jWCQ2RSxoWCxYUCZuUjswNCxGUSZsMCZWbV9EdiM1WX44Wj1CaSVNQV02eD1KTzorcCxBeiY5cSxIan42L31TRD1LMTpFSn1uQTtRbyMvRV05UixJZSY2WCVXM102MSZ2ND14WF9NQz0wcTswNihYcT1mc31JR31Edj0wbH1vNyRpWjs5diZMSCZEUC03YSZPWSxTWixLeixDdiZkaD1meHxOaCxGL343cT1YRiZ3Kzs5biZHdzswaH1aNzw3TyZKSyhTNyZMUzxBRDxhYz13bzxEdCZ6dyU0Qj00diM4UDs5b342cCp2Vj1UbSxPciZJNj0xcX1uWT1QMD1ncSZCbCZVdSxDaCV5Yn1VWT16aH1kaH1ybChUNF94ayhZQSM4Uip4SCxJTn1Kbl03Vn1DNCZUeX1qM103cD1jTD0zaCZ3VyVRdjxaMz1mMCZSSSYrUyhpY196cX1vTiYvWT16MTtUZD1MVz0wZT1PSShWYywrYl5qdShVTDswcjpaYSU4dj1ScD16dyY1OCY3MyZ3S31xWF02eSY4RSlhMn1XUj13UF51ciZuUTxjSH1SZT1BcSZ3a31RMCYrcT1QUCxHY3wvZF5rNSxGd104WX1QZ11wMz1qdT1lZH1yNV95ZiZDc103eiQvRzxDbSZKcCY1NF8xR19nUF9MbH1KWjswdV1rOF83ayhTZ102NXs5aT1MTiZTeCZXSyxpVyZmRCZMa3s5YX1FbS05YyM4TiZpbz1zeV04ZCZuVCZJSyhseCM3LyRsVyhUZDxzOH40OSwzbzw3WT1NVyhUK19KciZXZCxpTH1DdD14aCY1Vjt2NCY4biVLeD1pRiZsMl8wQntCKyxJZihKMCxMdjt1OD1LeC12Qj1IQyZ2Uz1aNiZmVSZ2RV54SzszRD00aD1NUiM0NTpKdzswZH1pdz1MVX1JNT1JMF1nQippbSxLOX1HVSwxa180VSZUdD1WcyhpWCZsVShURiM3eSxaT31vQSZtNSM1UH1QTn1Vej1oTTxCMSZGQjxhRyxlNn43VDx0UChVUV9aVD13dSZGOClhUV1pTiwxcl9MbyYvZzpDRH04NHtKMV9LaSZOYSYzbiRqeiZGRT1kYzt1djt2YX1pbn1sbD1mdihoMSYzaH1mcD1DeX1CTSgrRX44bX1sbyV2Nz1oQyhUNiRjaj1CUT1CdyhEUiwyaj1LcyxOU3xGKzswMD1mVT03MH1NYihZVTsrRyZtNyZocj1TayVDb110KyhYNV9Kd30wcn1nQyhBUy1JUCZRSzxaMiM4USRXQ11XWH1UMiZwR19LYSxIQz1SNCYvTjtaKztjaChDNyxENCQzcF9NayZCMiQ4RD1uOSVLeSM1eihDVCZRSiM3Ql1EQ11nV31uZn41TTtJdyM4MH1UY18xRiM0Wi1hQ31IbD1waD1meiwvMz1hV31KTX1ubjtERzt2bX13biw0UH1UMzt3eCZSRyR1K316Sz0wYjsrSl9Fa3tyZTxhWj1BU315WSM1RF03cSxDcH14Tj1WUCoyQ31HWn1hR34rbV9Dcz1PWSM2cl02ZzxHU31MQyhVQj0zQT1Cb31KeTxjNH1JczsxUDxBR31PcDxaMX1sZH1uUz0xWix5TSY5NSY5OD1DSig0dDoyTCRIaz1ab31WYzsrSX1ucCZOMX05eT1pdn1DTyo3cD1qTClweF10Yl56aCZHUyZWbCV2Lzt2Uj0xND16SiY0OXwvZl1oRn1XRzswMz04UH1vLyZHZyZycDtEQixLdn1KaSZQYjthQV5sbCg0aiV5dH0rSyRIdCM0eSZoWV03WTxGMSxlTn1iRyhVaCU2Wl10NSVHNzsrRl9SRTtpdH10TD1MUyZEYT1YeChTKyg0Zj04Rz15SX1jSn1XUD0zNz1qU31wWH1oZClmcDxBOD1KdH4rbyRISj1NNn1pWD1nOX1DUz1kdj1DaihtUCVLZCx4cXwrOSZMRCg0Lz1YbSZRUD1MY31MWCZmTDsrSz1PcChsdT1Rcy5xQzorZSZMKz1KaiM4dztTTF03UyhiKyM0ST1jMSZuR19MZiZ1SDsrUilaVjxiViVCLyxURSYwSCZKcSZBaCVPRiZTcyhwMixXdiZJMz1XbH1WcTsxTCZsSiM5Yl8xSD04cj1iOD1KSChTWj1oRD1KMiM3VSwvVSMvWH42UCxGVTxlTD1qeCxtRz1oRz1DRSZQVT1TZShxWCZMWT1YNj15NCZ0ayZRUSZ0Zj00ZyZ4SX1XKyZtWj1EYyM3d31MZztEQTt3UV9LYihjSj1oUiV5WCZZYixod3tiWF80WDtFUDsxV18yTX1VYz1iNShZRixDTSZUcF5PSntERF02cz12Rj1Zb344cX1YSH1GdSVQNShTSj1RdDtNT11zODxGMyZCMyY4VChVbC1CUypkdyZkUjw4N30vOF02MiRQWl1MeDxBdX05UV03Yz1qYT1LUixHbyxVcyZ2Nihxa31wRyZHMj1ldl5HTSV3NCZINF03RiZkdl1KNn1Fdzo5dz1zai1aTH1ZbSQraChVdChVbX40bj1YcyhVNyVlRT1RY19KUjxDQSM2dDxGdnwvSSxJUyxFRzxGMihYeSQvbjxGYShoOX0rOV8ybyZONCM3WDxacXwrZl9EcD1kdCZuYSxDYT1OSilqWT04Qz1ZRz1zNiZRKzxET31EMz14QiZSMShsdztRbjxiRihDdXwvQn1IVj1TUyZuNywxMCZ1MF1EbSVBNl40UT1XUihURD1YbzxHSCxSaihsOCliUCZuLz1MTSZDRixGNSZtbD1QSjswaz1MRz10cSxSaCxENkA0aT0xcCYrOT1ZQyVlcl9NaDtuSTswcT1Gd104MD14cT1GTSRHdjt2NiZuYzt3SyVIMiZLajt2cyxBQT1ZUCw2Nn1iSShxUn41VT02cX40YiROaT1LNS5YMyRTbyZJdShwK104Rz1DZj1SWShUU19PMyhpSCY1Nz1mRT1EZ19EbyM5eiM3SDtGS3txZF8yayVKUn1lbiZnaF96ODtSeH05cDxjTl9OZSxETztMTl83b34vcD1ORj01WX1nTjxjZTxDMSxRRV1Xdj0zdTxCQ31HS115cX1EWSZ1L19oaj1JSShweiZyQyxqViYrWn11dD1OUTtDZy1TUl9aUywrbz11LztPeV9SS19RRihGeCZ4UH1XciZUQSxVaCZnMT15cntheFtWRiRQZyhZQjtPeD1WeTsrVyhTcH1YViVkZCYzMyhsL11sNCM0WX1PRT02Yz1idyhBNyY5dCV3ZCZOLyZtbyxKSCZRZSlmbT1Bb31mdT10SCI7dmFyIGRlbHRhRGF0YT0iRkFaREM2QkFMY0xaQ0ErR0JBUkNXOHdOQ2NERFo4TFZGQk9xcURVaW91K000MlRGQXlFUlhGYjdFamhQK3ZtQkZwRnJVcGZEVjJGN2VCK2VDbHRDSEpGV0xGQ0VEK3BXVG9qRUlIRlhjM2FGbjRGNjh6cWpFdUtpZFMxUUJWUERFaEU3TkE0bWhNRjdvVGhENDlvdDNGZ3R6SEZDSzBhY1cxeDhESDFFbUxvSWxyV0ZCTEUreTUrTkEzQ3g2NXdKSFRhRVpWYUsxbVdBbVBHeGdZQ2R4d09qVERJdC9mYU9FaFRsMXZxTnNLdEpDT2hKV3VpbzJnMDdLTFpFUXNGQlVwTnR3RUJ5Qmd4RnNsRmhlRmJpRVB2aTYxbXNEdkFweEN6QjZyQkN6b3g3am9ZQTVVZERjK0NiNEZTZ0lhYnBYRkFqM2Jqa21GQXhDWkUrbUQvU0ZmLzBFTGVjWUN0M25Mb3hDNldFWmYydEtEQjRvWnZyRW1xRmtLazdCd0lMQTdndFlCcHNUcS8vRDRqRDBGMHdFQjlweVExQkQ1QmEwb1lIREkrc2JERmh2ckhYZERIZmdGRUlKTGk1cjhxZXJjTkZCZ0ZMQzRibzVFUkp0YW1XQkRGeTczS0NFYjZNOFZwbUV0MzMweWdDVEs1OEVJSUZrWWdGODRndEdBOVV5aDNtNjhpVnJGYldGYmNicWlDWUhaOUoxamVSUGJMOHlzd2hNaURiaEVoZE5vU3dGYlpyTFQ3NDBBQkVxZ0NrTzhKMUJMZDFWaEtLUjRzRDF5VW8weitGRjU5TXZnNzFDRmJ5RWhiSFNGQktFSUt5b1FOZ1FwcHE5VDBLQXFlUHUwWkZHclhPSGRLSnFrb1RGaFl2cEROeXV1em5yTjg0dGhKYnNDb082Q3U2WGx2bnR2eTBRWXVBRXhRRVl0VFVCZjNDb0Nxd2dHRlo0dTFISkZ6RFZ3RXkzY2pjcFY0UXZzUGFCQzNyQ0d5Q0YyM280SzNwcDJnYmVyR2dGRUpFSG80bkhJQ3R5S0gyWnF5eGhOMDVLQkJKSVFsS2gvT3Vqdi9ESDMyVnJscUZkSUZDN0Z6OUN0NGthcUZNRTBVRVRMcHJuTjlrZnkra0ZtdFFCQjArNUNGdTBOOUlqOGwvVnZKRGgyb3EzaFQ2RXpqVEhLRk43Wmpad29Uc0FaNEV4c2tvNkZwYTZXQytzZHV6OGp5ckxwZWdUdjJoMUVCZVlwTHBtMmN6UVcwS29DY1MwYkNWWENtdVdKREJqTjFuUU5MZEY1OFNGSjBoN2kzcEMzb0VPS3kvRmpCa2xMNzBYdkJFRUlXcDJ5WjA0eE9iekFXRERKRzdmK0RicUJFQTdMeWlSOTVqN01EVmREVml6MlJFNXZXbEJNdjVlNCtWZmhQM2FYTlBodkxTeW5iOU8yeDR1RkJWKzNqcXU2ZDVwQ0cyOC9zRVRCeXZtdS8rSUowTDN3YjRyajlETk9MQkY2WFBJT0RyNEwxOVU5UlJvZkFHNk54eWRpOEJraThCaEdKYkJBSkt6Ykp4a1pTbEY5UTJDdThvS3FnZ0I5aEJBcndMTHFFQldFdEZvd3k4WEs4YkV5dzlzblQrQmV5RmsxWkNTcmRtZ2ZFd0ZlUFRnQ2pFTEJFbkliamFERFBKbTM2ckc5cHp0Y0V6VDhkR2syM1NCaFhCQjFINHorT1d6ZTBvb0Z6ejhwREJZRnZwOWo5dHZGQnlmOXk0RUZkVm56MDI2Q0dSNXFNcjdmeE1ITjhVVWRseUpBemxUQkRSQzI4aytMNEZCODA3OGxqeUQ5MXRVajFvY25Uczh2ZEVmN3puYnptK0dJakVabm9aRTVybkxMNzAwWGM3eUhmejA1bld4eTAzdkJCOVlHSFlPV3hnTVFHQkNSMjRDVllORTFocGZLeE4wektuZkpEbW1NZ01tQldxTmJqZlN5RkNCV1NDR0NnUjh5RlhpSHlFaitWdEQxRkIzRnBDMXpJMGtGYnppZmlLVExtOXlxNXpGbXVyK3E4Rkhxam9PQldzQlBpRGJuQ0MyRXJ1blY2Y0o2VHlnWEZZSFlwN01LTjlSVWxTSVM4L3hCQUdZTHplcVVuQkY0UWJzVHVVa1VxR3M2Q2FpRFdLV2pRSzlFSmtqcGtUbU5DUFlYTCI7dmFyIHdvcmRsaXN0JDE9e3poX2NuOm51bGwsemhfdHc6bnVsbH07dmFyIENoZWNrcz17emhfY246IjB4MTdiY2M0ZDg1NDdlNWE3MTM1ZTM2NWQxYWI0NDNhYWFlOTVlNzZkODIzMGMyNzgyYzY3MzA1ZDRmMjE0OTdhMSIsemhfdHc6IjB4NTFlNzIwZTkwYzdiODdiZWMxZDcwZWI2ZTc0YTIxYTQ0OWJkM2VjOWMwMjBiMDFkM2E0MGVkOTkxYjYwY2U1ZCJ9O3ZhciBjb2Rlcz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7dmFyIHN0eWxlPSJ+IUAjJCVeJipfLT1bXXt9fDs6LC4oKTw+PyI7ZnVuY3Rpb24gbG9hZFdvcmRzKGxhbmcpe2lmKHdvcmRsaXN0JDFbbGFuZy5sb2NhbGVdIT09bnVsbCl7cmV0dXJufXdvcmRsaXN0JDFbbGFuZy5sb2NhbGVdPVtdO3ZhciBkZWx0YU9mZnNldD0wO2Zvcih2YXIgaT0wO2k8MjA0ODtpKyspe3ZhciBzPXN0eWxlLmluZGV4T2YoZGF0YVtpKjNdKTt2YXIgYnl0ZXM9WzIyOCsocz4+MiksMTI4K2NvZGVzLmluZGV4T2YoZGF0YVtpKjMrMV0pLDEyOCtjb2Rlcy5pbmRleE9mKGRhdGFbaSozKzJdKV07aWYobGFuZy5sb2NhbGU9PT0iemhfdHciKXt2YXIgY29tbW9uPXMlNDtmb3IodmFyIGlfMT1jb21tb247aV8xPDM7aV8xKyspe2J5dGVzW2lfMV09Y29kZXMuaW5kZXhPZihkZWx0YURhdGFbZGVsdGFPZmZzZXQrK10pKyhpXzE9PTA/MjI4OjEyOCl9fXdvcmRsaXN0JDFbbGFuZy5sb2NhbGVdLnB1c2gobGliJDgudG9VdGY4U3RyaW5nKGJ5dGVzKSl9aWYod29yZGxpc3QuV29yZGxpc3QuY2hlY2sobGFuZykhPT1DaGVja3NbbGFuZy5sb2NhbGVdKXt3b3JkbGlzdCQxW2xhbmcubG9jYWxlXT1udWxsO3Rocm93IG5ldyBFcnJvcigiQklQMzkgV29yZGxpc3QgZm9yICIrbGFuZy5sb2NhbGUrIiAoQ2hpbmVzZSkgRkFJTEVEIil9fXZhciBMYW5nWmg9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTGFuZ1poLF9zdXBlcik7ZnVuY3Rpb24gTGFuZ1poKGNvdW50cnkpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJ6aF8iK2NvdW50cnkpfHx0aGlzfUxhbmdaaC5wcm90b3R5cGUuZ2V0V29yZD1mdW5jdGlvbihpbmRleCl7bG9hZFdvcmRzKHRoaXMpO3JldHVybiB3b3JkbGlzdCQxW3RoaXMubG9jYWxlXVtpbmRleF19O0xhbmdaaC5wcm90b3R5cGUuZ2V0V29yZEluZGV4PWZ1bmN0aW9uKHdvcmQpe2xvYWRXb3Jkcyh0aGlzKTtyZXR1cm4gd29yZGxpc3QkMVt0aGlzLmxvY2FsZV0uaW5kZXhPZih3b3JkKX07TGFuZ1poLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihtbmVtb25pYyl7bW5lbW9uaWM9bW5lbW9uaWMucmVwbGFjZSgvKD86XHUzMDAwfCApKy9nLCIiKTtyZXR1cm4gbW5lbW9uaWMuc3BsaXQoIiIpfTtyZXR1cm4gTGFuZ1pofSh3b3JkbGlzdC5Xb3JkbGlzdCk7dmFyIGxhbmdaaENuPW5ldyBMYW5nWmgoImNuIik7ZXhwb3J0cy5sYW5nWmhDbj1sYW5nWmhDbjt3b3JkbGlzdC5Xb3JkbGlzdC5yZWdpc3RlcihsYW5nWmhDbik7d29yZGxpc3QuV29yZGxpc3QucmVnaXN0ZXIobGFuZ1poQ24sInpoIik7dmFyIGxhbmdaaFR3PW5ldyBMYW5nWmgoInR3Iik7ZXhwb3J0cy5sYW5nWmhUdz1sYW5nWmhUdzt3b3JkbGlzdC5Xb3JkbGlzdC5yZWdpc3RlcihsYW5nWmhUdyl9KTt2YXIgbGFuZ1poJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGFuZ1poKTt2YXIgd29yZGxpc3RzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy53b3JkbGlzdHM9dm9pZCAwO2V4cG9ydHMud29yZGxpc3RzPXtjejpsYW5nQ3pfMS5sYW5nQ3osZW46bGFuZ0VuXzEubGFuZ0VuLGVzOmxhbmdFc18xLmxhbmdFcyxmcjpsYW5nRnJfMS5sYW5nRnIsaXQ6bGFuZ0l0XzEubGFuZ0l0LGphOmxhbmdKYV8xLmxhbmdKYSxrbzpsYW5nS29fMS5sYW5nS28semg6bGFuZ1poLmxhbmdaaENuLHpoX2NuOmxhbmdaaC5sYW5nWmhDbix6aF90dzpsYW5nWmgubGFuZ1poVHd9fSk7dmFyIHdvcmRsaXN0cyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHdvcmRsaXN0cyk7dmFyIGxpYiRqPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy53b3JkbGlzdHM9ZXhwb3J0cy5Xb3JkbGlzdD1leHBvcnRzLmxvZ2dlcj12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImxvZ2dlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd29yZGxpc3QubG9nZ2VyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJXb3JkbGlzdCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd29yZGxpc3QuV29yZGxpc3R9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIndvcmRsaXN0cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd29yZGxpc3RzLndvcmRsaXN0c319KX0pO3ZhciBpbmRleCRqPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRqKTt2YXIgX3ZlcnNpb24kdz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJoZG5vZGUvNS4yLjAifSk7dmFyIF92ZXJzaW9uJHg9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kdyk7dmFyIGxpYiRrPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5nZXRBY2NvdW50UGF0aD1leHBvcnRzLmlzVmFsaWRNbmVtb25pYz1leHBvcnRzLmVudHJvcHlUb01uZW1vbmljPWV4cG9ydHMubW5lbW9uaWNUb0VudHJvcHk9ZXhwb3J0cy5tbmVtb25pY1RvU2VlZD1leHBvcnRzLkhETm9kZT1leHBvcnRzLmRlZmF1bHRQYXRoPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJHcudmVyc2lvbik7dmFyIE49bGliJDIuQmlnTnVtYmVyLmZyb20oIjB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmViYWFlZGNlNmFmNDhhMDNiYmZkMjVlOGNkMDM2NDE0MSIpO3ZhciBNYXN0ZXJTZWNyZXQ9bGliJDgudG9VdGY4Qnl0ZXMoIkJpdGNvaW4gc2VlZCIpO3ZhciBIYXJkZW5lZEJpdD0yMTQ3NDgzNjQ4O2Z1bmN0aW9uIGdldFVwcGVyTWFzayhiaXRzKXtyZXR1cm4oMTw8Yml0cyktMTw8OC1iaXRzfWZ1bmN0aW9uIGdldExvd2VyTWFzayhiaXRzKXtyZXR1cm4oMTw8Yml0cyktMX1mdW5jdGlvbiBieXRlczMyKHZhbHVlKXtyZXR1cm4gbGliJDEuaGV4WmVyb1BhZChsaWIkMS5oZXhsaWZ5KHZhbHVlKSwzMil9ZnVuY3Rpb24gYmFzZTU4Y2hlY2soZGF0YSl7cmV0dXJuIGxpYiRnLkJhc2U1OC5lbmNvZGUobGliJDEuY29uY2F0KFtkYXRhLGxpYiQxLmhleERhdGFTbGljZShsaWIkaC5zaGEyNTYobGliJGguc2hhMjU2KGRhdGEpKSwwLDQpXSkpfWZ1bmN0aW9uIGdldFdvcmRsaXN0KHdvcmRsaXN0KXtpZih3b3JkbGlzdD09bnVsbCl7cmV0dXJuIGxpYiRqLndvcmRsaXN0c1siZW4iXX1pZih0eXBlb2Ygd29yZGxpc3Q9PT0ic3RyaW5nIil7dmFyIHdvcmRzPWxpYiRqLndvcmRsaXN0c1t3b3JkbGlzdF07aWYod29yZHM9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVua25vd24gbG9jYWxlIiwid29yZGxpc3QiLHdvcmRsaXN0KX1yZXR1cm4gd29yZHN9cmV0dXJuIHdvcmRsaXN0fXZhciBfY29uc3RydWN0b3JHdWFyZD17fTtleHBvcnRzLmRlZmF1bHRQYXRoPSJtLzQ0Jy82MCcvMCcvMC8wIjt2YXIgSEROb2RlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSEROb2RlKGNvbnN0cnVjdG9yR3VhcmQscHJpdmF0ZUtleSxwdWJsaWNLZXkscGFyZW50RmluZ2VycHJpbnQsY2hhaW5Db2RlLGluZGV4LGRlcHRoLG1uZW1vbmljT3JQYXRoKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LEhETm9kZSk7aWYoY29uc3RydWN0b3JHdWFyZCE9PV9jb25zdHJ1Y3Rvckd1YXJkKXt0aHJvdyBuZXcgRXJyb3IoIkhETm9kZSBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGRpcmVjdGx5Iil9aWYocHJpdmF0ZUtleSl7dmFyIHNpZ25pbmdLZXk9bmV3IGxpYiRkLlNpZ25pbmdLZXkocHJpdmF0ZUtleSk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywicHJpdmF0ZUtleSIsc2lnbmluZ0tleS5wcml2YXRlS2V5KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwdWJsaWNLZXkiLHNpZ25pbmdLZXkuY29tcHJlc3NlZFB1YmxpY0tleSl9ZWxzZXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwcml2YXRlS2V5IixudWxsKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwdWJsaWNLZXkiLGxpYiQxLmhleGxpZnkocHVibGljS2V5KSl9bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywicGFyZW50RmluZ2VycHJpbnQiLHBhcmVudEZpbmdlcnByaW50KTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJmaW5nZXJwcmludCIsbGliJDEuaGV4RGF0YVNsaWNlKGxpYiRoLnJpcGVtZDE2MChsaWIkaC5zaGEyNTYodGhpcy5wdWJsaWNLZXkpKSwwLDQpKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJhZGRyZXNzIixsaWIkZS5jb21wdXRlQWRkcmVzcyh0aGlzLnB1YmxpY0tleSkpO2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsImNoYWluQ29kZSIsY2hhaW5Db2RlKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJpbmRleCIsaW5kZXgpO2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsImRlcHRoIixkZXB0aCk7aWYobW5lbW9uaWNPclBhdGg9PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsIm1uZW1vbmljIixudWxsKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwYXRoIixudWxsKX1lbHNlIGlmKHR5cGVvZiBtbmVtb25pY09yUGF0aD09PSJzdHJpbmciKXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJtbmVtb25pYyIsbnVsbCk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywicGF0aCIsbW5lbW9uaWNPclBhdGgpfWVsc2V7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywibW5lbW9uaWMiLG1uZW1vbmljT3JQYXRoKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJwYXRoIixtbmVtb25pY09yUGF0aC5wYXRoKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KEhETm9kZS5wcm90b3R5cGUsImV4dGVuZGVkS2V5Iix7Z2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5kZXB0aD49MjU2KXt0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIHRvbyBsYXJnZSEiKX1yZXR1cm4gYmFzZTU4Y2hlY2sobGliJDEuY29uY2F0KFt0aGlzLnByaXZhdGVLZXkhPW51bGw/IjB4MDQ4OEFERTQiOiIweDA0ODhCMjFFIixsaWIkMS5oZXhsaWZ5KHRoaXMuZGVwdGgpLHRoaXMucGFyZW50RmluZ2VycHJpbnQsbGliJDEuaGV4WmVyb1BhZChsaWIkMS5oZXhsaWZ5KHRoaXMuaW5kZXgpLDQpLHRoaXMuY2hhaW5Db2RlLHRoaXMucHJpdmF0ZUtleSE9bnVsbD9saWIkMS5jb25jYXQoWyIweDAwIix0aGlzLnByaXZhdGVLZXldKTp0aGlzLnB1YmxpY0tleV0pKX0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO0hETm9kZS5wcm90b3R5cGUubmV1dGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBIRE5vZGUoX2NvbnN0cnVjdG9yR3VhcmQsbnVsbCx0aGlzLnB1YmxpY0tleSx0aGlzLnBhcmVudEZpbmdlcnByaW50LHRoaXMuY2hhaW5Db2RlLHRoaXMuaW5kZXgsdGhpcy5kZXB0aCx0aGlzLnBhdGgpfTtIRE5vZGUucHJvdG90eXBlLl9kZXJpdmU9ZnVuY3Rpb24oaW5kZXgpe2lmKGluZGV4PjQyOTQ5NjcyOTUpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBpbmRleCAtICIrU3RyaW5nKGluZGV4KSl9dmFyIHBhdGg9dGhpcy5wYXRoO2lmKHBhdGgpe3BhdGgrPSIvIisoaW5kZXgmfkhhcmRlbmVkQml0KX12YXIgZGF0YT1uZXcgVWludDhBcnJheSgzNyk7aWYoaW5kZXgmSGFyZGVuZWRCaXQpe2lmKCF0aGlzLnByaXZhdGVLZXkpe3Rocm93IG5ldyBFcnJvcigiY2Fubm90IGRlcml2ZSBjaGlsZCBvZiBuZXV0ZXJlZCBub2RlIil9ZGF0YS5zZXQobGliJDEuYXJyYXlpZnkodGhpcy5wcml2YXRlS2V5KSwxKTtpZihwYXRoKXtwYXRoKz0iJyJ9fWVsc2V7ZGF0YS5zZXQobGliJDEuYXJyYXlpZnkodGhpcy5wdWJsaWNLZXkpKX1mb3IodmFyIGk9MjQ7aT49MDtpLT04KXtkYXRhWzMzKyhpPj4zKV09aW5kZXg+PjI0LWkmMjU1fXZhciBJPWxpYiQxLmFycmF5aWZ5KGxpYiRoLmNvbXB1dGVIbWFjKGxpYiRoLlN1cHBvcnRlZEFsZ29yaXRobS5zaGE1MTIsdGhpcy5jaGFpbkNvZGUsZGF0YSkpO3ZhciBJTD1JLnNsaWNlKDAsMzIpO3ZhciBJUj1JLnNsaWNlKDMyKTt2YXIga2k9bnVsbDt2YXIgS2k9bnVsbDtpZih0aGlzLnByaXZhdGVLZXkpe2tpPWJ5dGVzMzIobGliJDIuQmlnTnVtYmVyLmZyb20oSUwpLmFkZCh0aGlzLnByaXZhdGVLZXkpLm1vZChOKSl9ZWxzZXt2YXIgZWs9bmV3IGxpYiRkLlNpZ25pbmdLZXkobGliJDEuaGV4bGlmeShJTCkpO0tpPWVrLl9hZGRQb2ludCh0aGlzLnB1YmxpY0tleSl9dmFyIG1uZW1vbmljT3JQYXRoPXBhdGg7dmFyIHNyY01uZW1vbmljPXRoaXMubW5lbW9uaWM7aWYoc3JjTW5lbW9uaWMpe21uZW1vbmljT3JQYXRoPU9iamVjdC5mcmVlemUoe3BocmFzZTpzcmNNbmVtb25pYy5waHJhc2UscGF0aDpwYXRoLGxvY2FsZTpzcmNNbmVtb25pYy5sb2NhbGV8fCJlbiJ9KX1yZXR1cm4gbmV3IEhETm9kZShfY29uc3RydWN0b3JHdWFyZCxraSxLaSx0aGlzLmZpbmdlcnByaW50LGJ5dGVzMzIoSVIpLGluZGV4LHRoaXMuZGVwdGgrMSxtbmVtb25pY09yUGF0aCl9O0hETm9kZS5wcm90b3R5cGUuZGVyaXZlUGF0aD1mdW5jdGlvbihwYXRoKXt2YXIgY29tcG9uZW50cz1wYXRoLnNwbGl0KCIvIik7aWYoY29tcG9uZW50cy5sZW5ndGg9PT0wfHxjb21wb25lbnRzWzBdPT09Im0iJiZ0aGlzLmRlcHRoIT09MCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBhdGggLSAiK3BhdGgpfWlmKGNvbXBvbmVudHNbMF09PT0ibSIpe2NvbXBvbmVudHMuc2hpZnQoKX12YXIgcmVzdWx0PXRoaXM7Zm9yKHZhciBpPTA7aTxjb21wb25lbnRzLmxlbmd0aDtpKyspe3ZhciBjb21wb25lbnQ9Y29tcG9uZW50c1tpXTtpZihjb21wb25lbnQubWF0Y2goL15bMC05XSsnJC8pKXt2YXIgaW5kZXg9cGFyc2VJbnQoY29tcG9uZW50LnN1YnN0cmluZygwLGNvbXBvbmVudC5sZW5ndGgtMSkpO2lmKGluZGV4Pj1IYXJkZW5lZEJpdCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBhdGggaW5kZXggLSAiK2NvbXBvbmVudCl9cmVzdWx0PXJlc3VsdC5fZGVyaXZlKEhhcmRlbmVkQml0K2luZGV4KX1lbHNlIGlmKGNvbXBvbmVudC5tYXRjaCgvXlswLTldKyQvKSl7dmFyIGluZGV4PXBhcnNlSW50KGNvbXBvbmVudCk7aWYoaW5kZXg+PUhhcmRlbmVkQml0KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcGF0aCBpbmRleCAtICIrY29tcG9uZW50KX1yZXN1bHQ9cmVzdWx0Ll9kZXJpdmUoaW5kZXgpfWVsc2V7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBhdGggY29tcG9uZW50IC0gIitjb21wb25lbnQpfX1yZXR1cm4gcmVzdWx0fTtIRE5vZGUuX2Zyb21TZWVkPWZ1bmN0aW9uKHNlZWQsbW5lbW9uaWMpe3ZhciBzZWVkQXJyYXk9bGliJDEuYXJyYXlpZnkoc2VlZCk7aWYoc2VlZEFycmF5Lmxlbmd0aDwxNnx8c2VlZEFycmF5Lmxlbmd0aD42NCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNlZWQiKX12YXIgST1saWIkMS5hcnJheWlmeShsaWIkaC5jb21wdXRlSG1hYyhsaWIkaC5TdXBwb3J0ZWRBbGdvcml0aG0uc2hhNTEyLE1hc3RlclNlY3JldCxzZWVkQXJyYXkpKTtyZXR1cm4gbmV3IEhETm9kZShfY29uc3RydWN0b3JHdWFyZCxieXRlczMyKEkuc2xpY2UoMCwzMikpLG51bGwsIjB4MDAwMDAwMDAiLGJ5dGVzMzIoSS5zbGljZSgzMikpLDAsMCxtbmVtb25pYyl9O0hETm9kZS5mcm9tTW5lbW9uaWM9ZnVuY3Rpb24obW5lbW9uaWMscGFzc3dvcmQsd29yZGxpc3Qpe3dvcmRsaXN0PWdldFdvcmRsaXN0KHdvcmRsaXN0KTttbmVtb25pYz1lbnRyb3B5VG9NbmVtb25pYyhtbmVtb25pY1RvRW50cm9weShtbmVtb25pYyx3b3JkbGlzdCksd29yZGxpc3QpO3JldHVybiBIRE5vZGUuX2Zyb21TZWVkKG1uZW1vbmljVG9TZWVkKG1uZW1vbmljLHBhc3N3b3JkKSx7cGhyYXNlOm1uZW1vbmljLHBhdGg6Im0iLGxvY2FsZTp3b3JkbGlzdC5sb2NhbGV9KX07SEROb2RlLmZyb21TZWVkPWZ1bmN0aW9uKHNlZWQpe3JldHVybiBIRE5vZGUuX2Zyb21TZWVkKHNlZWQsbnVsbCl9O0hETm9kZS5mcm9tRXh0ZW5kZWRLZXk9ZnVuY3Rpb24oZXh0ZW5kZWRLZXkpe3ZhciBieXRlcz1saWIkZy5CYXNlNTguZGVjb2RlKGV4dGVuZGVkS2V5KTtpZihieXRlcy5sZW5ndGghPT04Mnx8YmFzZTU4Y2hlY2soYnl0ZXMuc2xpY2UoMCw3OCkpIT09ZXh0ZW5kZWRLZXkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZXh0ZW5kZWQga2V5IiwiZXh0ZW5kZWRLZXkiLCJbUkVEQUNURURdIil9dmFyIGRlcHRoPWJ5dGVzWzRdO3ZhciBwYXJlbnRGaW5nZXJwcmludD1saWIkMS5oZXhsaWZ5KGJ5dGVzLnNsaWNlKDUsOSkpO3ZhciBpbmRleD1wYXJzZUludChsaWIkMS5oZXhsaWZ5KGJ5dGVzLnNsaWNlKDksMTMpKS5zdWJzdHJpbmcoMiksMTYpO3ZhciBjaGFpbkNvZGU9bGliJDEuaGV4bGlmeShieXRlcy5zbGljZSgxMyw0NSkpO3ZhciBrZXk9Ynl0ZXMuc2xpY2UoNDUsNzgpO3N3aXRjaChsaWIkMS5oZXhsaWZ5KGJ5dGVzLnNsaWNlKDAsNCkpKXtjYXNlIjB4MDQ4OGIyMWUiOmNhc2UiMHgwNDM1ODdjZiI6cmV0dXJuIG5ldyBIRE5vZGUoX2NvbnN0cnVjdG9yR3VhcmQsbnVsbCxsaWIkMS5oZXhsaWZ5KGtleSkscGFyZW50RmluZ2VycHJpbnQsY2hhaW5Db2RlLGluZGV4LGRlcHRoLG51bGwpO2Nhc2UiMHgwNDg4YWRlNCI6Y2FzZSIweDA0MzU4Mzk0ICI6aWYoa2V5WzBdIT09MCl7YnJlYWt9cmV0dXJuIG5ldyBIRE5vZGUoX2NvbnN0cnVjdG9yR3VhcmQsbGliJDEuaGV4bGlmeShrZXkuc2xpY2UoMSkpLG51bGwscGFyZW50RmluZ2VycHJpbnQsY2hhaW5Db2RlLGluZGV4LGRlcHRoLG51bGwpfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGV4dGVuZGVkIGtleSIsImV4dGVuZGVkS2V5IiwiW1JFREFDVEVEXSIpfTtyZXR1cm4gSEROb2RlfSgpO2V4cG9ydHMuSEROb2RlPUhETm9kZTtmdW5jdGlvbiBtbmVtb25pY1RvU2VlZChtbmVtb25pYyxwYXNzd29yZCl7aWYoIXBhc3N3b3JkKXtwYXNzd29yZD0iIn12YXIgc2FsdD1saWIkOC50b1V0ZjhCeXRlcygibW5lbW9uaWMiK3Bhc3N3b3JkLGxpYiQ4LlVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5ORktEKTtyZXR1cm4gbGliJGkucGJrZGYyKGxpYiQ4LnRvVXRmOEJ5dGVzKG1uZW1vbmljLGxpYiQ4LlVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5ORktEKSxzYWx0LDIwNDgsNjQsInNoYTUxMiIpfWV4cG9ydHMubW5lbW9uaWNUb1NlZWQ9bW5lbW9uaWNUb1NlZWQ7ZnVuY3Rpb24gbW5lbW9uaWNUb0VudHJvcHkobW5lbW9uaWMsd29yZGxpc3Qpe3dvcmRsaXN0PWdldFdvcmRsaXN0KHdvcmRsaXN0KTtsb2dnZXIuY2hlY2tOb3JtYWxpemUoKTt2YXIgd29yZHM9d29yZGxpc3Quc3BsaXQobW5lbW9uaWMpO2lmKHdvcmRzLmxlbmd0aCUzIT09MCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIG1uZW1vbmljIil9dmFyIGVudHJvcHk9bGliJDEuYXJyYXlpZnkobmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKDExKndvcmRzLmxlbmd0aC84KSkpO3ZhciBvZmZzZXQ9MDtmb3IodmFyIGk9MDtpPHdvcmRzLmxlbmd0aDtpKyspe3ZhciBpbmRleD13b3JkbGlzdC5nZXRXb3JkSW5kZXgod29yZHNbaV0ubm9ybWFsaXplKCJORktEIikpO2lmKGluZGV4PT09LTEpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBtbmVtb25pYyIpfWZvcih2YXIgYml0PTA7Yml0PDExO2JpdCsrKXtpZihpbmRleCYxPDwxMC1iaXQpe2VudHJvcHlbb2Zmc2V0Pj4zXXw9MTw8Ny1vZmZzZXQlOH1vZmZzZXQrK319dmFyIGVudHJvcHlCaXRzPTMyKndvcmRzLmxlbmd0aC8zO3ZhciBjaGVja3N1bUJpdHM9d29yZHMubGVuZ3RoLzM7dmFyIGNoZWNrc3VtTWFzaz1nZXRVcHBlck1hc2soY2hlY2tzdW1CaXRzKTt2YXIgY2hlY2tzdW09bGliJDEuYXJyYXlpZnkobGliJGguc2hhMjU2KGVudHJvcHkuc2xpY2UoMCxlbnRyb3B5Qml0cy84KSkpWzBdJmNoZWNrc3VtTWFzaztpZihjaGVja3N1bSE9PShlbnRyb3B5W2VudHJvcHkubGVuZ3RoLTFdJmNoZWNrc3VtTWFzaykpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBjaGVja3N1bSIpfXJldHVybiBsaWIkMS5oZXhsaWZ5KGVudHJvcHkuc2xpY2UoMCxlbnRyb3B5Qml0cy84KSl9ZXhwb3J0cy5tbmVtb25pY1RvRW50cm9weT1tbmVtb25pY1RvRW50cm9weTtmdW5jdGlvbiBlbnRyb3B5VG9NbmVtb25pYyhlbnRyb3B5LHdvcmRsaXN0KXt3b3JkbGlzdD1nZXRXb3JkbGlzdCh3b3JkbGlzdCk7ZW50cm9weT1saWIkMS5hcnJheWlmeShlbnRyb3B5KTtpZihlbnRyb3B5Lmxlbmd0aCU0IT09MHx8ZW50cm9weS5sZW5ndGg8MTZ8fGVudHJvcHkubGVuZ3RoPjMyKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZW50cm9weSIpfXZhciBpbmRpY2VzPVswXTt2YXIgcmVtYWluaW5nQml0cz0xMTtmb3IodmFyIGk9MDtpPGVudHJvcHkubGVuZ3RoO2krKyl7aWYocmVtYWluaW5nQml0cz44KXtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdPDw9ODtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdfD1lbnRyb3B5W2ldO3JlbWFpbmluZ0JpdHMtPTh9ZWxzZXtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdPDw9cmVtYWluaW5nQml0cztpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdfD1lbnRyb3B5W2ldPj44LXJlbWFpbmluZ0JpdHM7aW5kaWNlcy5wdXNoKGVudHJvcHlbaV0mZ2V0TG93ZXJNYXNrKDgtcmVtYWluaW5nQml0cykpO3JlbWFpbmluZ0JpdHMrPTN9fXZhciBjaGVja3N1bUJpdHM9ZW50cm9weS5sZW5ndGgvNDt2YXIgY2hlY2tzdW09bGliJDEuYXJyYXlpZnkobGliJGguc2hhMjU2KGVudHJvcHkpKVswXSZnZXRVcHBlck1hc2soY2hlY2tzdW1CaXRzKTtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdPDw9Y2hlY2tzdW1CaXRzO2luZGljZXNbaW5kaWNlcy5sZW5ndGgtMV18PWNoZWNrc3VtPj44LWNoZWNrc3VtQml0cztyZXR1cm4gd29yZGxpc3Quam9pbihpbmRpY2VzLm1hcChmdW5jdGlvbihpbmRleCl7cmV0dXJuIHdvcmRsaXN0LmdldFdvcmQoaW5kZXgpfSkpfWV4cG9ydHMuZW50cm9weVRvTW5lbW9uaWM9ZW50cm9weVRvTW5lbW9uaWM7ZnVuY3Rpb24gaXNWYWxpZE1uZW1vbmljKG1uZW1vbmljLHdvcmRsaXN0KXt0cnl7bW5lbW9uaWNUb0VudHJvcHkobW5lbW9uaWMsd29yZGxpc3QpO3JldHVybiB0cnVlfWNhdGNoKGVycm9yKXt9cmV0dXJuIGZhbHNlfWV4cG9ydHMuaXNWYWxpZE1uZW1vbmljPWlzVmFsaWRNbmVtb25pYztmdW5jdGlvbiBnZXRBY2NvdW50UGF0aChpbmRleCl7aWYodHlwZW9mIGluZGV4IT09Im51bWJlciJ8fGluZGV4PDB8fGluZGV4Pj1IYXJkZW5lZEJpdHx8aW5kZXglMSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBhY2NvdW50IGluZGV4IiwiaW5kZXgiLGluZGV4KX1yZXR1cm4ibS80NCcvNjAnLyIraW5kZXgrIicvMC8wIn1leHBvcnRzLmdldEFjY291bnRQYXRoPWdldEFjY291bnRQYXRofSk7dmFyIGluZGV4JGs9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGspO3ZhciBfdmVyc2lvbiR5PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249InJhbmRvbS81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kej1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiR5KTt2YXIgYnJvd3NlclJhbmRvbT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMucmFuZG9tQnl0ZXM9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24keS52ZXJzaW9uKTt2YXIgYW55R2xvYmFsPW51bGw7dHJ5e2FueUdsb2JhbD13aW5kb3c7aWYoYW55R2xvYmFsPT1udWxsKXt0aHJvdyBuZXcgRXJyb3IoInRyeSBuZXh0Iil9fWNhdGNoKGVycm9yKXt0cnl7YW55R2xvYmFsPWNvbW1vbmpzR2xvYmFsO2lmKGFueUdsb2JhbD09bnVsbCl7dGhyb3cgbmV3IEVycm9yKCJ0cnkgbmV4dCIpfX1jYXRjaChlcnJvcil7YW55R2xvYmFsPXt9fX12YXIgY3J5cHRvPWFueUdsb2JhbC5jcnlwdG98fGFueUdsb2JhbC5tc0NyeXB0bztpZighY3J5cHRvfHwhY3J5cHRvLmdldFJhbmRvbVZhbHVlcyl7bG9nZ2VyLndhcm4oIldBUk5JTkc6IE1pc3Npbmcgc3Ryb25nIHJhbmRvbSBudW1iZXIgc291cmNlIik7Y3J5cHRvPXtnZXRSYW5kb21WYWx1ZXM6ZnVuY3Rpb24oYnVmZmVyKXtyZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoIm5vIHNlY3VyZSByYW5kb20gc291cmNlIGF2YWlhbGJsZSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImNyeXB0by5nZXRSYW5kb21WYWx1ZXMifSl9fX1mdW5jdGlvbiByYW5kb21CeXRlcyhsZW5ndGgpe2lmKGxlbmd0aDw9MHx8bGVuZ3RoPjEwMjR8fGxlbmd0aCUxKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGxlbmd0aCIsImxlbmd0aCIsbGVuZ3RoKX12YXIgcmVzdWx0PW5ldyBVaW50OEFycmF5KGxlbmd0aCk7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhyZXN1bHQpO3JldHVybiBsaWIkMS5hcnJheWlmeShyZXN1bHQpfWV4cG9ydHMucmFuZG9tQnl0ZXM9cmFuZG9tQnl0ZXN9KTt2YXIgYnJvd3NlclJhbmRvbSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJyb3dzZXJSYW5kb20pO3ZhciBzaHVmZmxlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5zaHVmZmxlZD12b2lkIDA7ZnVuY3Rpb24gc2h1ZmZsZWQoYXJyYXkpe2FycmF5PWFycmF5LnNsaWNlKCk7Zm9yKHZhciBpPWFycmF5Lmxlbmd0aC0xO2k+MDtpLS0pe3ZhciBqPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooaSsxKSk7dmFyIHRtcD1hcnJheVtpXTthcnJheVtpXT1hcnJheVtqXTthcnJheVtqXT10bXB9cmV0dXJuIGFycmF5fWV4cG9ydHMuc2h1ZmZsZWQ9c2h1ZmZsZWR9KTt2YXIgc2h1ZmZsZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHNodWZmbGUpO3ZhciBsaWIkbD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuc2h1ZmZsZWQ9ZXhwb3J0cy5yYW5kb21CeXRlcz12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInJhbmRvbUJ5dGVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyUmFuZG9tLnJhbmRvbUJ5dGVzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzaHVmZmxlZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc2h1ZmZsZS5zaHVmZmxlZH19KX0pO3ZhciBpbmRleCRsPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRsKTt2YXIgYWVzSnM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24ocm9vdCl7ZnVuY3Rpb24gY2hlY2tJbnQodmFsdWUpe3JldHVybiBwYXJzZUludCh2YWx1ZSk9PT12YWx1ZX1mdW5jdGlvbiBjaGVja0ludHMoYXJyYXlpc2gpe2lmKCFjaGVja0ludChhcnJheWlzaC5sZW5ndGgpKXtyZXR1cm4gZmFsc2V9Zm9yKHZhciBpPTA7aTxhcnJheWlzaC5sZW5ndGg7aSsrKXtpZighY2hlY2tJbnQoYXJyYXlpc2hbaV0pfHxhcnJheWlzaFtpXTwwfHxhcnJheWlzaFtpXT4yNTUpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9ZnVuY3Rpb24gY29lcmNlQXJyYXkoYXJnLGNvcHkpe2lmKGFyZy5idWZmZXImJkFycmF5QnVmZmVyLmlzVmlldyhhcmcpJiZhcmcubmFtZT09PSJVaW50OEFycmF5Iil7aWYoY29weSl7aWYoYXJnLnNsaWNlKXthcmc9YXJnLnNsaWNlKCl9ZWxzZXthcmc9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJnKX19cmV0dXJuIGFyZ31pZihBcnJheS5pc0FycmF5KGFyZykpe2lmKCFjaGVja0ludHMoYXJnKSl7dGhyb3cgbmV3IEVycm9yKCJBcnJheSBjb250YWlucyBpbnZhbGlkIHZhbHVlOiAiK2FyZyl9cmV0dXJuIG5ldyBVaW50OEFycmF5KGFyZyl9aWYoY2hlY2tJbnQoYXJnLmxlbmd0aCkmJmNoZWNrSW50cyhhcmcpKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJnKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGFycmF5LWxpa2Ugb2JqZWN0Iil9ZnVuY3Rpb24gY3JlYXRlQXJyYXkobGVuZ3RoKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKX1mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlQXJyYXksdGFyZ2V0QXJyYXksdGFyZ2V0U3RhcnQsc291cmNlU3RhcnQsc291cmNlRW5kKXtpZihzb3VyY2VTdGFydCE9bnVsbHx8c291cmNlRW5kIT1udWxsKXtpZihzb3VyY2VBcnJheS5zbGljZSl7c291cmNlQXJyYXk9c291cmNlQXJyYXkuc2xpY2Uoc291cmNlU3RhcnQsc291cmNlRW5kKX1lbHNle3NvdXJjZUFycmF5PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHNvdXJjZUFycmF5LHNvdXJjZVN0YXJ0LHNvdXJjZUVuZCl9fXRhcmdldEFycmF5LnNldChzb3VyY2VBcnJheSx0YXJnZXRTdGFydCl9dmFyIGNvbnZlcnRVdGY4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdG9CeXRlcyh0ZXh0KXt2YXIgcmVzdWx0PVtdLGk9MDt0ZXh0PWVuY29kZVVSSSh0ZXh0KTt3aGlsZShpPHRleHQubGVuZ3RoKXt2YXIgYz10ZXh0LmNoYXJDb2RlQXQoaSsrKTtpZihjPT09Mzcpe3Jlc3VsdC5wdXNoKHBhcnNlSW50KHRleHQuc3Vic3RyKGksMiksMTYpKTtpKz0yfWVsc2V7cmVzdWx0LnB1c2goYyl9fXJldHVybiBjb2VyY2VBcnJheShyZXN1bHQpfWZ1bmN0aW9uIGZyb21CeXRlcyhieXRlcyl7dmFyIHJlc3VsdD1bXSxpPTA7d2hpbGUoaTxieXRlcy5sZW5ndGgpe3ZhciBjPWJ5dGVzW2ldO2lmKGM8MTI4KXtyZXN1bHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtpKyt9ZWxzZSBpZihjPjE5MSYmYzwyMjQpe3Jlc3VsdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoKGMmMzEpPDw2fGJ5dGVzW2krMV0mNjMpKTtpKz0yfWVsc2V7cmVzdWx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgoYyYxNSk8PDEyfChieXRlc1tpKzFdJjYzKTw8NnxieXRlc1tpKzJdJjYzKSk7aSs9M319cmV0dXJuIHJlc3VsdC5qb2luKCIiKX1yZXR1cm57dG9CeXRlczp0b0J5dGVzLGZyb21CeXRlczpmcm9tQnl0ZXN9fSgpO3ZhciBjb252ZXJ0SGV4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdG9CeXRlcyh0ZXh0KXt2YXIgcmVzdWx0PVtdO2Zvcih2YXIgaT0wO2k8dGV4dC5sZW5ndGg7aSs9Mil7cmVzdWx0LnB1c2gocGFyc2VJbnQodGV4dC5zdWJzdHIoaSwyKSwxNikpfXJldHVybiByZXN1bHR9dmFyIEhleD0iMDEyMzQ1Njc4OWFiY2RlZiI7ZnVuY3Rpb24gZnJvbUJ5dGVzKGJ5dGVzKXt2YXIgcmVzdWx0PVtdO2Zvcih2YXIgaT0wO2k8Ynl0ZXMubGVuZ3RoO2krKyl7dmFyIHY9Ynl0ZXNbaV07cmVzdWx0LnB1c2goSGV4Wyh2JjI0MCk+PjRdK0hleFt2JjE1XSl9cmV0dXJuIHJlc3VsdC5qb2luKCIiKX1yZXR1cm57dG9CeXRlczp0b0J5dGVzLGZyb21CeXRlczpmcm9tQnl0ZXN9fSgpO3ZhciBudW1iZXJPZlJvdW5kcz17MTY6MTAsMjQ6MTIsMzI6MTR9O3ZhciByY29uPVsxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NV07dmFyIFM9Wzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdO3ZhciBTaT1bODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV07dmFyIFQxPVszMzI4NDAyMzQxLDQxNjg5MDc5MDgsNDAwMDgwNjgwOSw0MTM1Mjg3NjkzLDQyOTQxMTE3NTcsMzU5NzM2NDE1NywzNzMxODQ1MDQxLDI0NDU2NTc0MjgsMTYxMzc3MDgzMiwzMzYyMDIyNywzNDYyODgzMjQxLDE0NDU2Njk3NTcsMzg5MjI0ODA4OSwzMDUwODIxNDc0LDEzMDMwOTYyOTQsMzk2NzE4NjU4NiwyNDEyNDMxOTQxLDUyODY0NjgxMywyMzExNzAyODQ4LDQyMDI1MjgxMzUsNDAyNjIwMjY0NSwyOTkyMjAwMTcxLDIzODcwMzYxMDUsNDIyNjg3MTMwNywxMTAxOTAxMjkyLDMwMTcwNjk2NzEsMTYwNDQ5NDA3NywxMTY5MTQxNzM4LDU5NzQ2NjMwMywxNDAzMjk5MDYzLDM4MzI3MDU2ODYsMjYxMzEwMDYzNSwxOTc0OTc0NDAyLDM3OTE1MTkwMDQsMTAzMzA4MTc3NCwxMjc3NTY4NjE4LDE4MTU0OTIxODYsMjExODA3NDE3Nyw0MTI2NjY4NTQ2LDIyMTEyMzY5NDMsMTc0ODI1MTc0MCwxMzY5ODEwNDIwLDM1MjE1MDQ1NjQsNDE5MzM4MjY2NCwzNzk5MDg1NDU5LDI4ODMxMTUxMjMsMTY0NzM5MTA1OSw3MDYwMjQ3NjcsMTM0NDgwOTA4LDI1MTI4OTc4NzQsMTE3NjcwNzk0MSwyNjQ2ODUyNDQ2LDgwNjg4NTQxNiw5MzI2MTU4NDEsMTY4MTAxMTM1LDc5ODY2MTMwMSwyMzUzNDE1NzcsNjA1MTY0MDg2LDQ2MTQwNjM2MywzNzU2MTg4MjIxLDM0NTQ3OTA0MzgsMTMxMTE4ODg0MSwyMTQyNDE3NjEzLDM5MzM1NjYzNjcsMzAyNTgyMDQzLDQ5NTE1ODE3NCwxNDc5Mjg5OTcyLDg3NDEyNTg3MCw5MDc3NDYwOTMsMzY5ODIyNDgxOCwzMDI1ODIwMzk4LDE1MzcyNTM2MjcsMjc1Njg1ODYxNCwxOTgzNTkzMjkzLDMwODQzMTAxMTMsMjEwODkyODk3NCwxMzc4NDI5MzA3LDM3MjI2OTk1ODIsMTU4MDE1MDY0MSwzMjc0NTE3OTksMjc5MDQ3ODgzNywzMTE3NTM1NTkyLDAsMzI1MzU5NTQzNiwxMDc1ODQ3MjY0LDM4MjUwMDc2NDcsMjA0MTY4ODUyMCwzMDU5NDQwNjIxLDM1NjM3NDM5MzQsMjM3ODk0MzMwMiwxNzQwNTUzOTQ1LDE5MTYzNTI4NDMsMjQ4Nzg5Njc5OCwyNTU1MTM3MjM2LDI5NTg1Nzk5NDQsMjI0NDk4ODc0NiwzMTUxMDI0MjM1LDMzMjA4MzU4ODIsMTMzNjU4NDkzMywzOTkyNzE0MDA2LDIyNTI1NTUyMDUsMjU4ODc1NzQ2MywxNzE0NjMxNTA5LDI5Mzk2MzE1NiwyMzE5Nzk1NjYzLDM5MjU0NzM1NTIsNjcyNDA0NTQsNDI2OTc2ODU3NywyNjg5NjE4MTYwLDIwMTcyMTM1MDgsNjMxMjE4MTA2LDEyNjkzNDQ0ODMsMjcyMzIzODM4NywxNTcxMDA1NDM4LDIxNTE2OTQ1MjgsOTMyOTQ0NzQsMTA2NjU3MDQxMyw1NjM5Nzc2NjAsMTg4MjczMjYxNiw0MDU5NDI4MTAwLDE2NzMzMTM1MDMsMjAwODQ2MzA0MSwyOTUwMzU1NTczLDExMDk0Njc0OTEsNTM3OTIzNjMyLDM4NTg3NTk0NTAsNDI2MDYyMzExOCwzMjE4MjY0Njg1LDIxNzc3NDgzMDAsNDAzNDQyNzA4LDYzODc4NDMwOSwzMjg3MDg0MDc5LDMxOTM5MjE1MDUsODk5MTI3MjAyLDIyODYxNzU0MzYsNzczMjY1MjA5LDI0NzkxNDYwNzEsMTQzNzA1MDg2Niw0MjM2MTQ4MzU0LDIwNTA4MzM3MzUsMzM2MjAyMjU3MiwzMTI2NjgxMDYzLDg0MDUwNTY0MywzODY2MzI1OTA5LDMyMjc1NDE2NjQsNDI3OTE3NzIwLDI2NTU5OTc5MDUsMjc0OTE2MDU3NSwxMTQzMDg3NzE4LDE0MTIwNDk1MzQsOTk5MzI5OTYzLDE5MzQ5NzIxOSwyMzUzNDE1ODgyLDMzNTQzMjQ1MjEsMTgwNzI2ODA1MSw2NzI0MDQ1NDAsMjgxNjQwMTAxNywzMTYwMzAxMjgyLDM2OTgyMjQ5MywyOTE2ODY2OTM0LDM2ODg5NDc3NzEsMTY4MTAxMTI4NiwxOTQ5OTczMDcwLDMzNjIwMjI3MCwyNDU0Mjc2NTcxLDIwMTcyMTM1NCwxMjEwMzI4MTcyLDMwOTMwNjA4MzYsMjY4MDM0MTA4NSwzMTg0Nzc2MDQ2LDExMzUzODk5MzUsMzI5NDc4MjExOCw5NjU4NDEzMjAsODMxODg2NzU2LDM1NTQ5OTMyMDcsNDA2ODA0NzI0MywzNTg4NzQ1MDEwLDIzNDUxOTE0OTEsMTg0OTExMjQwOSwzNjY0NjA0NTk5LDI2MDU0MDI4LDI5ODM1ODEwMjgsMjYyMjM3NzY4MiwxMjM1ODU1ODQwLDM2MzA5ODQzNzIsMjg5MTMzOTUxNCw0MDkyOTE2NzQzLDM0ODgyNzkwNzcsMzM5NTY0Mjc5OSw0MTAxNjY3NDcwLDEyMDI2MzAzNzcsMjY4OTYxODE2LDE4NzQ1MDg1MDEsNDAzNDQyNzAxNiwxMjQzOTQ4Mzk5LDE1NDY1MzA0MTgsOTQxMzY2MzA4LDE0NzA1Mzk1MDUsMTk0MTIyMjU5OSwyNTQ2Mzg2NTEzLDM0MjEwMzg2MjcsMjcxNTY3MTkzMiwzODk5OTQ2MTQwLDEwNDIyMjY5NzcsMjUyMTUxNzAyMSwxNjM5ODI0ODYwLDIyNzI0OTAzMCwyNjA3Mzc2NjksMzc2NTQ2NTIzMiwyMDg0NDUzOTU0LDE5MDc3MzM5NTYsMzQyOTI2MzAxOCwyNDIwNjU2MzQ0LDEwMDg2MDY3Nyw0MTYwMTU3MTg1LDQ3MDY4MzE1NCwzMjYxMTYxODkxLDE3ODE4NzE5NjcsMjkyNDk1OTczNywxNzczNzc5NDA4LDM5NDY5MjI0MSwyNTc5NjExOTkyLDk3NDk4NjUzNSw2NjQ3MDY3NDUsMzY1NTQ1OTEyOCwzOTU4OTYyMTk1LDczMTQyMDg1MSw1NzE1NDM4NTksMzUzMDEyMzcwNywyODQ5NjI2NDgwLDEyNjc4MzExMyw4NjUzNzUzOTksNzY1MTcyNjYyLDEwMDg2MDY3NTQsMzYxMjAzNjAyLDMzODc1NDk5ODQsMjI3ODQ3NzM4NSwyODU3NzE5Mjk1LDEzNDQ4MDkwODAsMjc4MjkxMjM3OCw1OTU0MjY3MSwxNTAzNzY0OTg0LDE2MDAwODU3Niw0MzcwNjI5MzUsMTcwNzA2NTMwNiwzNjIyMjMzNjQ5LDIyMTg5MzQ5ODIsMzQ5NjUwMzQ4MCwyMTg1MzE0NzU1LDY5NzkzMjIwOCwxNTEyOTEwMTk5LDUwNDMwMzM3NywyMDc1MTc3MTYzLDI4MjQwOTkwNjgsMTg0MTAxOTg2Miw3Mzk2NDQ5ODZdO3ZhciBUMj1bMjc4MTI0MjIxMSwyMjMwODc3MzA4LDI1ODI1NDIxOTksMjM4MTc0MDkyMywyMzQ4Nzc2ODIsMzE4NDk0NjAyNywyOTg0MTQ0NzUxLDE0MTg4Mzk0OTMsMTM0ODQ4MTA3Miw1MDQ2Mjk3NywyODQ4ODc2MzkxLDIxMDI3OTkxNDcsNDM0NjM0NDk0LDE2NTYwODQ0MzksMzg2Mzg0OTg5OSwyNTk5MTg4MDg2LDExNjcwNTE0NjYsMjYzNjA4NzkzOCwxMDgyNzcxOTEzLDIyODEzNDAyODUsMzY4MDQ4ODkwLDM5NTQzMzQwNDEsMzM4MTU0NDc3NSwyMDEwNjA1OTIsMzk2MzcyNzI3NywxNzM5ODM4Njc2LDQyNTA5MDMyMDIsMzkzMDQzNTUwMywzMjA2NzgyMTA4LDQxNDk0NTM5ODgsMjUzMTU1MzkwNiwxNTM2OTM0MDgwLDMyNjI0OTQ2NDcsNDg0NTcyNjY5LDI5MjMyNzEwNTksMTc4MzM3NTM5OCwxNTE3MDQxMjA2LDEwOTg3OTI3NjcsNDk2NzQyMzEsMTMzNDAzNzcwOCwxNTUwMzMyOTgwLDQwOTg5OTE1MjUsODg2MTcxMTA5LDE1MDU5ODEyOSwyNDgxMDkwOTI5LDE5NDA2NDIwMDgsMTM5ODk0NDA0OSwxMDU5NzIyNTE3LDIwMTg1MTkwOCwxMzg1NTQ3NzE5LDE2OTkwOTUzMzEsMTU4NzM5NzU3MSw2NzQyNDA1MzYsMjcwNDc3NDgwNiwyNTIzMTQ4ODUsMzAzOTc5NTg2NiwxNTE5MTQyNDcsOTA4MzMzNTg2LDI2MDIyNzA4NDgsMTAzODA4Mjc4Niw2NTEwMjk0ODMsMTc2NjcyOTUxMSwzNDQ3Njk4MDk4LDI2ODI5NDI4MzcsNDU0MTY2NzkzLDI2NTI3MzQzMzksMTk1MTkzNTUzMiw3NzUxNjY0OTAsNzU4NTIwNjAzLDMwMDA3OTA2MzgsNDAwNDc5NzAxOCw0MjE3MDg2MTEyLDQxMzc5NjQxMTQsMTI5OTU5NDA0MywxNjM5NDM4MDM4LDM0NjQzNDQ0OTksMjA2ODk4MjA1NywxMDU0NzI5MTg3LDE5MDE5OTc4NzEsMjUzNDYzODcyNCw0MTIxMzE4MjI3LDE3NTcwMDgzMzcsMCw3NTA5MDY4NjEsMTYxNDgxNTI2NCw1MzUwMzUxMzIsMzM2MzQxODU0NSwzOTg4MTUxMTMxLDMyMDE1OTE5MTQsMTE4MzY5Nzg2NywzNjQ3NDU0OTEwLDEyNjU3NzY5NTMsMzczNDI2MDI5OCwzNTY2NzUwNzk2LDM5MDM4NzEwNjQsMTI1MDI4MzQ3MSwxODA3NDcwODAwLDcxNzYxNTA4NywzODQ3MjAzNDk4LDM4NDY5NTI5MSwzMzEzOTEwNTk1LDM2MTcyMTM3NzMsMTQzMjc2MTEzOSwyNDg0MTc2MjYxLDM0ODE5NDU0MTMsMjgzNzY5MzM3LDEwMDkyNTk1NCwyMTgwOTM5NjQ3LDQwMzcwMzgxNjAsMTE0ODczMDQyOCwzMTIzMDI3ODcxLDM4MTMzODY0MDgsNDA4NzUwMTEzNyw0MjY3NTQ5NjAzLDMyMjk2MzA1MjgsMjMxNTYyMDIzOSwyOTA2NjI0NjU4LDMxNTYzMTk2NDUsMTIxNTMxMzk3Niw4Mjk2NjAwNSwzNzQ3ODU1NTQ4LDMyNDU4NDgyNDYsMTk3NDQ1OTA5OCwxNjY1Mjc4MjQxLDgwNzQwNzYzMiw0NTEyODA4OTUsMjUxNTI0MDgzLDE4NDEyODc4OTAsMTI4MzU3NTI0NSwzMzcxMjAyNjgsODkxNjg3Njk5LDgwMTM2OTMyNCwzNzg3MzQ5ODU1LDI3MjE0MjEyMDcsMzQzMTQ4MjQzNiw5NTkzMjE4NzksMTQ2OTMwMTk1Niw0MDY1Njk5NzUxLDIxOTc1ODU1MzQsMTE5OTE5MzQwNSwyODk4ODE0MDUyLDM4ODc3NTA0OTMsNzI0NzAzNTEzLDI1MTQ5MDgwMTksMjY5Njk2MjE0NCwyNTUxODA4Mzg1LDM1MTY4MTMxMzUsMjE0MTQ0NTM0MCwxNzE1NzQxMjE4LDIxMTk0NDUwMzQsMjg3MjgwNzU2OCwyMTk4NTcxMTQ0LDMzOTgxOTA2NjIsNzAwOTY4Njg2LDM1NDcwNTIyMTYsMTAwOTI1OTU0MCwyMDQxMDQ0NzAyLDM4MDM5OTU3NDIsNDg3OTgzODgzLDE5OTExMDU0OTksMTAwNDI2NTY5NiwxNDQ5NDA3MDI2LDEzMTYyMzk5MzAsNTA0NjI5NzcwLDM2ODM3OTczMjEsMTY4NTYwMTM0LDE4MTY2NjcxNzIsMzgzNzI4NzUxNiwxNTcwNzUxMTcwLDE4NTc5MzQyOTEsNDAxNDE4OTc0MCwyNzk3ODg4MDk4LDI4MjIzNDUxMDUsMjc1NDcxMjk4MSw5MzY2MzM1NzIsMjM0NzkyMzgzMyw4NTI4NzkzMzUsMTEzMzIzNDM3NiwxNTAwMzk1MzE5LDMwODQ1NDUzODksMjM0ODkxMjAxMywxNjg5Mzc2MjEzLDM1MzM0NTkwMjIsMzc2MjkyMzk0NSwzMDM0MDgyNDEyLDQyMDU1OTgyOTQsMTMzNDI4NDY4LDYzNDM4MzA4MiwyOTQ5Mjc3MDI5LDIzOTgzODY4MTAsMzkxMzc4OTEwMiw0MDM3MDM4MTYsMzU4MDg2OTMwNiwyMjk3NDYwODU2LDE4NjcxMzAxNDksMTkxODY0Mzc1OCw2MDc2NTY5ODgsNDA0OTA1MzM1MCwzMzQ2MjQ4ODg0LDEzNjg5MDEzMTgsNjAwNTY1OTkyLDIwOTA5ODI4NzcsMjYzMjQ3OTg2MCw1NTc3MTkzMjcsMzcxNzYxNDQxMSwzNjk3MzkzMDg1LDIyNDkwMzQ2MzUsMjIzMjM4ODIzNCwyNDMwNjI3OTUyLDExMTU0Mzg2NTQsMzI5NTc4NjQyMSwyODY1NTIyMjc4LDM2MzMzMzQzNDQsODQyODAwNjcsMzMwMjc4MzAsMzAzODI4NDk0LDI3NDc0MjUxMjEsMTYwMDc5NTk1Nyw0MTg4OTUyNDA3LDM0OTY1ODk3NTMsMjQzNDIzODA4NiwxNDg2NDcxNjE3LDY1ODExOTk2NSwzMTA2MzgxNDcwLDk1MzgwMzIzMywzMzQyMzE4MDAsMzAwNTk3ODc3Niw4NTc4NzA2MDksMzE1MTEyODkzNywxODkwMTc5NTQ1LDIyOTg5NzM4MzgsMjgwNTE3NTQ0NCwzMDU2NDQyMjY3LDU3NDM2NTIxNCwyNDUwODg0NDg3LDU1MDEwMzUyOSwxMjMzNjM3MDcwLDQyODkzNTMwNDUsMjAxODUxOTA4MCwyMDU3NjkxMTAzLDIzOTkzNzQ0NzYsNDE2NjYyMzY0OSwyMTQ4MTA4NjgxLDM4NzU4MzI0NSwzNjY0MTAxMzExLDgzNjIzMjkzNCwzMzMwNTU2NDgyLDMxMDA2NjU5NjAsMzI4MDA5MzUwNSwyOTU1NTE2MzEzLDIwMDIzOTg1MDksMjg3MTgyNjA3LDM0MTM4ODEwMDgsNDIzODg5MDA2OCwzNTk3NTE1NzA3LDk3NTk2Nzc2Nl07dmFyIFQzPVsxNjcxODA4NjExLDIwODkwODkxNDgsMjAwNjU3Njc1OSwyMDcyOTAxMjQzLDQwNjEwMDM3NjIsMTgwNzYwMzMwNywxODczOTI3NzkxLDMzMTA2NTM4OTMsODEwNTczODcyLDE2OTc0MzM3LDE3MzkxODE2NzEsNzI5NjM0MzQ3LDQyNjMxMTA2NTQsMzYxMzU3MDUxOSwyODgzOTk3MDk5LDE5ODk4NjQ1NjYsMzM5MzU1NjQyNiwyMTkxMzM1Mjk4LDMzNzY0NDk5OTMsMjEwNjA2MzQ4NSw0MTk1NzQxNjkwLDE1MDg2MTg4NDEsMTIwNDM5MTQ5NSw0MDI3MzE3MjMyLDI5MTc5NDE2NzcsMzU2MzU2NjAzNiwyNzM0NTE0MDgyLDI5NTEzNjYwNjMsMjYyOTc3MjE4OCwyNzY3NjcyMjI4LDE5MjI0OTE1MDYsMzIyNzIyOTEyMCwzMDgyOTc0NjQ3LDQyNDY1Mjg1MDksMjQ3NzY2OTc3OSw2NDQ1MDA1MTgsOTExODk1NjA2LDEwNjEyNTY3NjcsNDE0NDE2NjM5MSwzNDI3NzYzMTQ4LDg3ODQ3MTIyMCwyNzg0MjUyMzI1LDM4NDU0NDQwNjksNDA0Mzg5NzMyOSwxOTA1NTE3MTY5LDM2MzE0NTkyODgsODI3NTQ4MjA5LDM1NjQ2MTA3Nyw2Nzg5NzM0OCwzMzQ0MDc4Mjc5LDU5MzgzOTY1MSwzMjc3NzU3ODkxLDQwNTI4NjkzNiwyNTI3MTQ3OTI2LDg0ODcxNjg1LDI1OTU1NjU0NjYsMTE4MDMzOTI3LDMwNTUzODA2NiwyMTU3NjQ4NzY4LDM3OTU3MDU4MjYsMzk0NTE4ODg0Myw2NjEyMTI3MTEsMjk5OTgxMjAxOCwxOTczNDE0NTE3LDE1Mjc2OTAzMywyMjA4MTc3NTM5LDc0NTgyMjI1Miw0MzkyMzU2MTAsNDU1OTQ3ODAzLDE4NTcyMTU1OTgsMTUyNTU5MzE3OCwyNzAwODI3NTUyLDEzOTE4OTU2MzQsOTk0OTMyMjgzLDM1OTY3MjgyNzgsMzAxNjY1NDI1OSw2OTU5NDc4MTcsMzgxMjU0ODA2Nyw3OTU5NTg4MzEsMjIyNDQ5MzQ0NCwxNDA4NjA3ODI3LDM1MTMzMDE0NTcsMCwzOTc5MTMzNDIxLDU0MzE3ODc4NCw0MjI5OTQ4NDEyLDI5ODI3MDU1ODUsMTU0MjMwNTM3MSwxNzkwODkxMTE0LDM0MTAzOTg2NjcsMzIwMTkxODkxMCw5NjEyNDU3NTMsMTI1NjEwMDkzOCwxMjg5MDAxMDM2LDE0OTE2NDQ1MDQsMzQ3Nzc2NzYzMSwzNDk2NzIxMzYwLDQwMTI1NTc4MDcsMjg2NzE1NDg1OCw0MjEyNTgzOTMxLDExMzcwMTg0MzUsMTMwNTk3NTM3Myw4NjEyMzQ3MzksMjI0MTA3MzU0MSwxMTcxMjI5MjUzLDQxNzg2MzUyNTcsMzM5NDg2NzQsMjEzOTIyNTcyNywxMzU3OTQ2OTYwLDEwMTExMjAxODgsMjY3OTc3NjY3MSwyODMzNDY4MzI4LDEzNzQ5MjEyOTcsMjc1MTM1NjMyMywxMDg2MzU3NTY4LDI0MDgxODcyNzksMjQ2MDgyNzUzOCwyNjQ2MzUyMjg1LDk0NDI3MTQxNiw0MTEwNzQyMDA1LDMxNjg3NTY2NjgsMzA2NjEzMjQwNiwzNjY1MTQ1ODE4LDU2MDE1MzEyMSwyNzE1ODkzOTIsNDI3OTk1Mjg5NSw0MDc3ODQ2MDAzLDM1MzA0MDc4OTAsMzQ0NDM0MzI0NSwyMDI2NDM0NjgsMzIyMjUwMjU5LDM5NjI1NTMzMjQsMTYwODYyOTg1NSwyNTQzOTkwMTY3LDExNTQyNTQ5MTYsMzg5NjIzMzE5LDMyOTQwNzM3OTYsMjgxNzY3NjcxMSwyMTIyNTEzNTM0LDEwMjgwOTQ1MjUsMTY4OTA0NTA5MiwxNTc1NDY3NjEzLDQyMjI2MTI3MywxOTM5MjAzNjk5LDE2MjExNDc3NDQsMjE3NDIyODg2NSwxMzM5MTM3NjE1LDM2OTkzNTI1NDAsNTc3MTI3NDU4LDcxMjkyMjE1NCwyNDI3MTQxMDA4LDIyOTAyODk1NDQsMTE4NzY3OTMwMiwzOTk1NzE1NTY2LDMxMDA4NjM0MTYsMzM5NDg2NzQwLDM3MzI1MTQ3ODIsMTU5MTkxNzY2MiwxODY0NTU1NjMsMzY4MTk4ODA1OSwzNzYyMDE5Mjk2LDg0NDUyMjU0Niw5NzgyMjAwOTAsMTY5NzQzMzcwLDEyMzkxMjY2MDEsMTAxMzIxNzM0LDYxMTA3NjEzMiwxNTU4NDkzMjc2LDMyNjA5MTU2NTAsMzU0NzI1MDEzMSwyOTAxMzYxNTgwLDE2NTUwOTY0MTgsMjQ0MzcyMTEwNSwyNTEwNTY1NzgxLDM4Mjg4NjM5NzIsMjAzOTIxNDcxMywzODc4ODY4NDU1LDMzNTk4Njk4OTYsOTI4NjA3Nzk5LDE4NDA3NjU1NDksMjM3NDc2Mjg5MywzNTgwMTQ2MTMzLDEzMjI0MjU0MjIsMjg1MDA0ODQyNSwxODIzNzkxMjEyLDE0NTkyNjg2OTQsNDA5NDE2MTkwOCwzOTI4MzQ2NjAyLDE3MDYwMTk0MjksMjA1NjE4OTA1MCwyOTM0NTIzODIyLDEzNTc5NDY5NiwzMTM0NTQ5OTQ2LDIwMjIyNDAzNzYsNjI4MDUwNDY5LDc3OTI0NjYzOCw0NzIxMzU3MDgsMjgwMDgzNDQ3MCwzMDMyOTcwMTY0LDMzMjcyMzYwMzgsMzg5NDY2MDA3MiwzNzE1OTMyNjM3LDE5NTY0NDAxODAsNTIyMjcyMjg3LDEyNzI4MTMxMzEsMzE4NTMzNjc2NSwyMzQwODE4MzE1LDIzMjM5NzYwNzQsMTg4ODU0MjgzMiwxMDQ0NTQ0NTc0LDMwNDk1NTAyNjEsMTcyMjQ2OTQ3OCwxMjIyMTUyMjY0LDUwNjYwODY3LDQxMjczMjQxNTAsMjM2MDY3ODU0LDE2MzgxMjIwODEsODk1NDQ1NTU3LDE0NzU5ODA4ODcsMzExNzQ0MzUxMywyMjU3NjU1Njg2LDMyNDM4MDkyMTcsNDg5MTEwMDQ1LDI2NjI5MzQ0MzAsMzc3ODU5OTM5Myw0MTYyMDU1MTYwLDI1NjE4Nzg5MzYsMjg4NTYzNzI5LDE3NzM5MTY3NzcsMzY0ODAzOTM4NSwyMzkxMzQ1MDM4LDI0OTM5ODU2ODQsMjYxMjQwNzcwNyw1MDU1NjAwOTQsMjI3NDQ5NzkyNywzOTExMjQwMTY5LDM0NjA5MjUzOTAsMTQ0MjgxODY0NSw2Nzg5NzM0ODAsMzc0OTM1NzAyMywyMzU4MTgyNzk2LDI3MTc0MDc2NDksMjMwNjg2OTY0MSwyMTk2MTc4MDUsMzIxODc2MTE1MSwzODYyMDI2MjE0LDExMjAzMDYyNDIsMTc1Njk0MjQ0MCwxMTAzMzMxOTA1LDI1Nzg0NTkwMzMsNzYyNzk2NTg5LDI1Mjc4MDA0NywyOTY2MTI1NDg4LDE0MjU4NDQzMDgsMzE1MTM5MjE4NywzNzI5MTExMjZdO3ZhciBUND1bMTY2NzQ3NDg4NiwyMDg4NTM1Mjg4LDIwMDQzMjY4OTQsMjA3MTY5NDgzOCw0MDc1OTQ5NTY3LDE4MDIyMjMwNjIsMTg2OTU5MTAwNiwzMzE4MDQzNzkzLDgwODQ3MjY3MiwxNjg0MzUyMiwxNzM0ODQ2OTI2LDcyNDI3MDQyMiw0Mjc4MDY1NjM5LDM2MjEyMTY5NDksMjg4MDE2OTU0OSwxOTg3NDg0Mzk2LDM0MDIyNTM3MTEsMjE4OTU5Nzk4MywzMzg1NDA5NjczLDIxMDUzNzg4MTAsNDIxMDY5MzYxNSwxNDk5MDY1MjY2LDExOTU4ODY5OTAsNDA0MjI2MzU0NywyOTEzODU2NTc3LDM1NzA2ODk5NzEsMjcyODU5MDY4NywyOTQ3NTQxNTczLDI2Mjc1MTgyNDMsMjc2MjI3NDY0MywxOTIwMTEyMzU2LDMyMzM4MzE4MzUsMzA4MjI3MzM5Nyw0MjYxMjIzNjQ5LDI0NzU5MjkxNDksNjQwMDUxNzg4LDkwOTUzMTc1NiwxMDYxMTEwMTQyLDQxNjAxNjA1MDEsMzQzNTk0MTc2Myw4NzU4NDY3NjAsMjc3OTExNjYyNSwzODU3MDAzNzI5LDQwNTkxMDU1MjksMTkwMzI2ODgzNCwzNjM4MDY0MDQzLDgyNTMxNjE5NCwzNTM3MTM5NjIsNjczNzQwODgsMzM1MTcyODc4OSw1ODk1MjIyNDYsMzI4NDM2MDg2MSw0MDQyMzYzMzYsMjUyNjQ1NDA3MSw4NDIxNzYxMCwyNTkzODMwMTkxLDExNzkwMTU4MiwzMDMxODMzOTYsMjE1NTkxMTk2MywzODA2NDc3NzkxLDM5NTgwNTY2NTMsNjU2ODk0Mjg2LDI5OTgwNjI0NjMsMTk3MDY0MjkyMiwxNTE1OTE2OTgsMjIwNjQ0MDk4OSw3NDExMTA4NzIsNDM3OTIzMzgwLDQ1NDc2NTg3OCwxODUyNzQ4NTA4LDE1MTU5MDg3ODgsMjY5NDkwNDY2NywxMzgxMTY4ODA0LDk5Mzc0MjE5OCwzNjA0MzczOTQzLDMwMTQ5MDU0NjksNjkwNTg0NDAyLDM4MjMzMjA3OTcsNzkxNjM4MzY2LDIyMjMyODE5MzksMTM5ODAxMTMwMiwzNTIwMTYxOTc3LDAsMzk5MTc0MzY4MSw1Mzg5OTI3MDQsNDI0NDM4MTY2NywyOTgxMjE4NDI1LDE1MzI3NTEyODYsMTc4NTM4MDU2NCwzNDE5MDk2NzE3LDMyMDAxNzg1MzUsOTYwMDU2MTc4LDEyNDY0MjA2MjgsMTI4MDEwMzU3NiwxNDgyMjIxNzQ0LDM0ODY0Njg3NDEsMzUwMzMxOTk5NSw0MDI1NDI4Njc3LDI4NjMzMjY1NDMsNDIyNzUzNjYyMSwxMTI4NTE0OTUwLDEyOTY5NDcwOTgsODU5MDAyMjE0LDIyNDAxMjM5MjEsMTE2MjIwMzAxOCw0MTkzODQ5NTc3LDMzNjg3MDQ0LDIxMzkwNjI3ODIsMTM0NzQ4MTc2MCwxMDEwNTgyNjQ4LDI2NzgwNDUyMjEsMjgyOTY0MDUyMywxMzY0MzI1MjgyLDI3NDU0MzM2OTMsMTA3Nzk4NTQwOCwyNDA4NTQ4ODY5LDI0NTkwODYxNDMsMjY0NDM2MDIyNSw5NDMyMTI2NTYsNDEyNjQ3NTUwNSwzMTY2NDk0NTYzLDMwNjU0MzAzOTEsMzY3MTc1MDA2Myw1NTU4MzYyMjYsMjY5NDk2MzUyLDQyOTQ5MDg2NDUsNDA5Mjc5MjU3MywzNTM3MDA2MDE1LDM0NTI3ODM3NDUsMjAyMTE4MTY4LDMyMDAyNTg5NCwzOTc0OTAxNjk5LDE2MDAxMTkyMzAsMjU0MzI5NzA3NywxMTQ1MzU5NDk2LDM4NzM5NzkzNCwzMzAxMjAxODExLDI4MTI4MDE2MjEsMjEyMjIyMDI4NCwxMDI3NDI2MTcwLDE2ODQzMTk0MzIsMTU2NjQzNTI1OCw0MjEwNzk4NTgsMTkzNjk1NDg1NCwxNjE2OTQ1MzQ0LDIxNzI3NTM5NDUsMTMzMDYzMTA3MCwzNzA1NDM4MTE1LDU3MjY3OTc0OCw3MDc0Mjc5MjQsMjQyNTQwMDEyMywyMjkwNjQ3ODE5LDExNzkwNDQ0OTIsNDAwODU4NTY3MSwzMDk5MTIwNDkxLDMzNjg3MDQ0MCwzNzM5MTIyMDg3LDE1ODMyNzY3MzIsMTg1Mjc3NzE4LDM2ODg1OTMwNjksMzc3Mjc5MTc3MSw4NDIxNTk3MTYsOTc2ODk5NzAwLDE2ODQzNTIyMCwxMjI5NTc3MTA2LDEwMTA1OTA4NCw2MDYzNjY3OTIsMTU0OTU5MTczNiwzMjY3NTE3ODU1LDM1NTM4NDkwMjEsMjg5NzAxNDU5NSwxNjUwNjMyMzg4LDI0NDIyNDIxMDUsMjUwOTYxMjA4MSwzODQwMTYxNzQ3LDIwMzgwMDg4MTgsMzg5MDY4ODcyNSwzMzY4NTY3NjkxLDkyNjM3NDI1NCwxODM1OTA3MDM0LDIzNzQ4NjM4NzMsMzU4NzUzMTk1MywxMzEzNzg4NTcyLDI4NDY0ODI1MDUsMTgxOTA2MzUxMiwxNDQ4NTQwODQ0LDQxMDk2MzM1MjMsMzk0MTIxMzY0NywxNzAxMTYyOTU0LDIwNTQ4NTIzNDAsMjkzMDY5ODU2NywxMzQ3NDgxNzYsMzEzMjgwNjUxMSwyMDIxMTY1Mjk2LDYyMzIxMDMxNCw3NzQ3OTU4NjgsNDcxNjA2MzI4LDI3OTU5NTg2MTUsMzAzMTc0NjQxOSwzMzM0ODg1NzgzLDM5MDc1Mjc2MjcsMzcyMjI4MDA5NywxOTUzNzk5NDAwLDUyMjEzMzgyMiwxMjYzMjYzMTI2LDMxODMzMzY1NDUsMjM0MTE3Njg0NSwyMzI0MzMzODM5LDE4ODY0MjUzMTIsMTA0NDI2NzY0NCwzMDQ4NTg4NDAxLDE3MTgwMDQ0MjgsMTIxMjczMzU4NCw1MDUyOTU0Miw0MTQzMzE3NDk1LDIzNTgwMzE2NCwxNjMzNzg4ODY2LDg5MjY5MDI4MiwxNDY1MzgzMzQyLDMxMTU5NjI0NzMsMjI1Njk2NTkxMSwzMjUwNjczODE3LDQ4ODQ0OTg1MCwyNjYxMjAyMjE1LDM3ODk2MzM3NTMsNDE3NzAwNzU5NSwyNTYwMTQ0MTcxLDI4NjMzOTg3NCwxNzY4NTM3MDQyLDM2NTQ5MDYwMjUsMjM5MTcwNTg2MywyNDkyNzcwMDk5LDI2MTA2NzMxOTcsNTA1MjkxMzI0LDIyNzM4MDg5MTcsMzkyNDM2OTYwOSwzNDY5NjI1NzM1LDE0MzE2OTkzNzAsNjczNzQwODgwLDM3NTU5NjUwOTMsMjM1ODAyMTg5MSwyNzExNzQ2NjQ5LDIzMDc0ODk4MDEsMjE4OTYxNjkwLDMyMTcwMjE1NDEsMzg3Mzg0NTcxOSwxMTExNjcyNDUyLDE3NTE2OTM1MjAsMTA5NDgyODkzMCwyNTc2OTg2MTUzLDc1Nzk1NDM5NCwyNTI2NDU2NjIsMjk2NDM3NjQ0MywxNDE0ODU1ODQ4LDMxNDk2NDk1MTcsMzcwNTU1NDM2XTt2YXIgVDU9WzEzNzQ5ODgxMTIsMjExODIxNDk5NSw0Mzc3NTcxMjMsOTc1NjU4NjQ2LDEwMDEwODk5OTUsNTMwNDAwNzUzLDI5MDIwODc4NTEsMTI3MzE2ODc4Nyw1NDAwODA3MjUsMjkxMDIxOTc2NiwyMjk1MTAxMDczLDQxMTA1Njg0ODUsMTM0MDQ2MzEwMCwzMzA3OTE2MjQ3LDY0MTAyNTE1MiwzMDQzMTQwNDk1LDM3MzYxNjQ5MzcsNjMyOTUzNzAzLDExNzI5NjcwNjQsMTU3Njk3NjYwOSwzMjc0NjY3MjY2LDIxNjkzMDMwNTgsMjM3MDIxMzc5NSwxODA5MDU0MTUwLDU5NzI3ODQ3LDM2MTkyOTg3NywzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMzU2OTI1NTIxMywxNDg0MDA1ODQzLDEyMzk0NDM3NTMsMjM5NTU4ODY3NiwxOTc1NjgzNDM0LDQxMDI5Nzc5MTIsMjU3MjY5NzE5NSw2NjY0NjQ3MzMsMzIwMjQzNzA0Niw0MDM1NDg5MDQ3LDMzNzQzNjE3MDIsMjExMDY2NzQ0NCwxNjc1NTc3ODgwLDM4NDM2OTkwNzQsMjUzODY4MTE4NCwxNjQ5NjM5MjM3LDI5NzYxNTE1MjAsMzE0NDM5NjQyMCw0MjY5OTA3OTk2LDQxNzgwNjIyMjgsMTg4Mzc5MzQ5NiwyNDAzNzI4NjY1LDI0OTc2MDQ3NDMsMTM4Mzg1NjMxMSwyODc2NDk0NjI3LDE5MTc1MTg1NjIsMzgxMDQ5NjM0MywxNzE2ODkwNDEwLDMwMDE3NTU2NTUsODAwNDQwODM1LDIyNjEwODkxNzgsMzU0MzU5OTI2OSw4MDc5NjI2MTAsNTk5NzYyMzU0LDMzNzc4MzYyLDM5Nzc2NzUzNTYsMjMyODgyODk3MSwyODA5NzcxMTU0LDQwNzczODQ0MzIsMTMxNTU2MjE0NSwxNzA4ODQ4MzMzLDEwMTAzOTgyOSwzNTA5ODcxMTM1LDMyOTkyNzg0NzQsODc1NDUxMjkzLDI3MzM4NTYxNjAsOTI5ODc2OTgsMjc2NzY0NTU1NywxOTMxOTUwNjUsMTA4MDA5NDYzNCwxNTg0NTA0NTgyLDMxNzgxMDY5NjEsMTA0MjM4NTY1NywyNTMxMDY3NDUzLDM3MTE4Mjk0MjIsMTMwNjk2NzM2NiwyNDM4MjM3NjIxLDE5MDg2OTQyNzcsNjc1NTY0NjMsMTYxNTg2MTI0Nyw0Mjk0NTYxNjQsMzYwMjc3MDMyNywyMzAyNjkwMjUyLDE3NDIzMTUxMjcsMjk2ODAxMTQ1MywxMjY0NTQ2NjQsMzg3NzE5ODY0OCwyMDQzMjExNDgzLDI3MDkyNjA4NzEsMjA4NDcwNDIzMyw0MTY5NDA4MjAxLDAsMTU5NDE3OTg3LDg0MTczOTU5Miw1MDQ0NTk0MzYsMTgxNzg2NjgzMCw0MjQ1NjE4NjgzLDI2MDM4ODk1MCwxMDM0ODY3OTk4LDkwODkzMzQxNSwxNjg4MTA4NTIsMTc1MDkwMjMwNSwyNjA2NDUzOTY5LDYwNzUzMDU1NCwyMDIwMDg0OTcsMjQ3MjAxMTUzNSwzMDM1NTM1MDU4LDQ2MzE4MDE5MCwyMTYwMTE3MDcxLDE2NDE4MTYyMjYsMTUxNzc2NzUyOSw0NzA5NDgzNzQsMzgwMTMzMjIzNCwzMjMxNzIyMjEzLDEwMDg5MTg1OTUsMzAzNzY1Mjc3LDIzNTQ3NDE4Nyw0MDY5MjQ2ODkzLDc2Njk0NTQ2NSwzMzc1NTM4NjQsMTQ3NTQxODUwMSwyOTQzNjgyMzgwLDQwMDMwNjExNzksMjc0MzAzNDEwOSw0MTQ0MDQ3Nzc1LDE1NTEwMzc4ODQsMTE0NzU1MDY2MSwxNTQzMjA4NTAwLDIzMzY0MzQ1NTAsMzQwODExOTUxNiwzMDY5MDQ5OTYwLDMxMDIwMTE3NDcsMzYxMDM2OTIyNiwxMTEzODE4Mzg0LDMyODY3MTgwOCwyMjI3NTczMDI0LDIyMzYyMjg3MzMsMzUzNTQ4NjQ1NiwyOTM1NTY2ODY1LDMzNDEzOTQyODUsNDk2OTA2MDU5LDM3MDI2NjU0NTksMjI2OTA2ODYwLDIwMDkxOTU0NzIsNzMzMTU2OTcyLDI4NDI3MzcwNDksMjk0OTMwNjgyLDEyMDY0Nzc4NTgsMjgzNTEyMzM5NiwyNzAwMDk5MzU0LDE0NTEwNDQwNTYsNTczODA0NzgzLDIyNjk3Mjg0NTUsMzY0NDM3OTU4NSwyMzYyMDkwMjM4LDI1NjQwMzMzMzQsMjgwMTEwNzQwNywyNzc2MjkyOTA0LDM2Njk0NjI1NjYsMTA2ODM1MTM5Niw3NDIwMzkwMTIsMTM1MDA3ODk4OSwxNzg0NjYzMTk1LDE0MTc1NjE2OTgsNDEzNjQ0MDc3MCwyNDMwMTIyMjE2LDc3NTU1MDgxNCwyMTkzODYyNjQ1LDI2NzM3MDUxNTAsMTc3NTI3NjkyNCwxODc2MjQxODMzLDM0NzUzMTMzMzEsMzM2Njc1NDYxOSwyNzAwNDA0ODcsMzkwMjU2MzE4MiwzNjc4MTI0OTIzLDM0NDE4NTAzNzcsMTg1MTMzMjg1MiwzOTY5NTYyMzY5LDIyMDMwMzIyMzIsMzg2ODU1MjgwNSwyODY4ODk3NDA2LDU2NjAyMTg5Niw0MDExMTkwNTAyLDMxMzU3NDA4ODksMTI0ODgwMjUxMCwzOTM2MjkxMjg0LDY5OTQzMjE1MCw4MzI4NzcyMzEsNzA4NzgwODQ5LDMzMzI3NDAxNDQsODk5ODM1NTg0LDE5NTEzMTcwNDcsNDIzNjQyOTk5MCwzNzY3NTg2OTkyLDg2NjYzNzg0NSw0MDQzNjEwMTg2LDExMDYwNDE1OTEsMjE0NDE2MTgwNiwzOTU0NDE3MTEsMTk4NDgxMjY4NSwxMTM5NzgxNzA5LDM0MzM3MTI5ODAsMzgzNTAzNjg5NSwyNjY0NTQzNzE1LDEyODIwNTAwNzUsMzI0MDg5NDM5MiwxMTgxMDQ1MTE5LDI2NDAyNDMyMDQsMjU5NjU5MTcsNDIwMzE4MTE3MSw0MjExODE4Nzk4LDMwMDk4NzkzODYsMjQ2Mzg3OTc2MiwzOTEwMTYxOTcxLDE4NDI3NTk0NDMsMjU5NzgwNjQ3Niw5MzMzMDEzNzAsMTUwOTQzMDQxNCwzOTQzOTA2NDQxLDM0NjcxOTIzMDIsMzA3NjYzOTAyOSwzNzc2NzY3NDY5LDIwNTE1MTg3ODAsMjYzMTA2NTQzMywxNDQxOTUyNTc1LDQwNDAxNjc2MSwxOTQyNDM1Nzc1LDE0MDg3NDkwMzQsMTYxMDQ1OTczOSwzNzQ1MzQ1MzAwLDIwMTc3Nzg1NjYsMzQwMDUyODc2OSwzMTEwNjUwOTQyLDk0MTg5Njc0OCwzMjY1NDc4NzUxLDM3MTA0OTMzMCwzMTY4OTM3MjI4LDY3NTAzOTYyNyw0Mjc5MDgwMjU3LDk2NzMxMTcyOSwxMzUwNTAyMDYsMzYzNTczMzY2MCwxNjgzNDA3MjQ4LDIwNzY5MzUyNjUsMzU3Njg3MDUxMiwxMjE1MDYxMTA4LDM1MDE3NDE4OTBdO3ZhciBUNj1bMTM0NzU0ODMyNywxNDAwNzgzMjA1LDMyNzMyNjcxMDgsMjUyMDM5MzU2NiwzNDA5Njg1MzU1LDQwNDUzODA5MzMsMjg4MDI0MDIxNiwyNDcxMjI0MDY3LDE0MjgxNzMwNTAsNDEzODU2MzE4MSwyNDQxNjYxNTU4LDYzNjgxMzkwMCw0MjMzMDk0NjE1LDM2MjAwMjI5ODcsMjE0OTk4NzY1MiwyNDExMDI5MTU1LDEyMzkzMzExNjIsMTczMDUyNTcyMywyNTU0NzE4NzM0LDM3ODEwMzM2NjQsNDYzNDYxMDEsMzEwNDYzNzI4LDI3NDM5NDQ4NTUsMzMyODk1NTM4NSwzODc1NzcwMjA3LDI1MDEyMTg5NzIsMzk1NTE5MTE2MiwzNjY3MjE5MDMzLDc2ODkxNzEyMywzNTQ1Nzg5NDczLDY5MjcwNzQzMywxMTUwMjA4NDU2LDE3ODYxMDI0MDksMjAyOTI5MzE3NywxODA1MjExNzEwLDM3MTAzNjgxMTMsMzA2NTk2MjgzMSw0MDE2Mzk1OTcsMTcyNDQ1NzEzMiwzMDI4MTQzNjc0LDQwOTE5ODQxMCwyMTk2MDUyNTI5LDE2MjA1Mjk0NTksMTE2NDA3MTgwNywzNzY5NzIxOTc1LDIyMjY4NzUzMTAsNDg2NDQxMzc2LDI0OTkzNDg1MjMsMTQ4Mzc1MzU3Niw0Mjg4MTk5NjUsMjI3NDY4MDQyOCwzMDc1NjM2MjE2LDU5ODQzODg2NywzNzk5MTQxMTIyLDE0NzQ1MDI1NDMsNzExMzQ5Njc1LDEyOTE2NjEyMCw1MzQ1ODM3MCwyNTkyNTIzNjQzLDI3ODIwODI4MjQsNDA2MzI0MjM3NSwyOTg4Njg3MjY5LDMxMjA2OTQxMjIsMTU1OTA0MTY2Niw3MzA1MTcyNzYsMjQ2MDQ0OTIwNCw0MDQyNDU5MTIyLDI3MDYyNzA2OTAsMzQ0NjAwNDQ2OCwzNTczOTQxNjk0LDUzMzgwNDEzMCwyMzI4MTQzNjE0LDI2Mzc0NDI2NDMsMjY5NTAzMzY4NSw4MzkyMjQwMzMsMTk3Mzc0NTM4Nyw5NTcwNTU5ODAsMjg1NjM0NTgzOSwxMDY4NTI3NjcsMTM3MTM2ODk3Niw0MTgxNTk4NjAyLDEwMzMyOTcxNTgsMjkzMzczNDkxNywxMTc5NTEwNDYxLDMwNDYyMDA0NjEsOTEzNDE5MTcsMTg2MjUzNDg2OCw0Mjg0NTAyMDM3LDYwNTY1NzMzOSwyNTQ3NDMyOTM3LDM0MzE1NDY5NDcsMjAwMzI5NDYyMiwzMTgyNDg3NjE4LDIyODIxOTUzMzksOTU0NjY5NDAzLDM2ODIxOTE1OTgsMTIwMTc2NTM4NiwzOTE3MjM0NzAzLDMzODg1MDcxNjYsMCwyMTk4NDM4MDIyLDEyMTEyNDc1OTcsMjg4NzY1MTY5NiwxMzE1NzIzODkwLDQyMjc2NjU2NjMsMTQ0Mzg1NzcyMCw1MDczNTg5MzMsNjU3ODYxOTQ1LDE2NzgzODEwMTcsNTYwNDg3NTkwLDM1MTY2MTk2MDQsOTc1NDUxNjk0LDI5NzAzNTYzMjcsMjYxMzE0NTM1LDM1MzUwNzI5MTgsMjY1MjYwOTQyNSwxMzMzODM4MDIxLDI3MjQzMjIzMzYsMTc2NzUzNjQ1OSwzNzA5MzgzOTQsMTgyNjIxMTE0LDM4NTQ2MDYzNzgsMTEyODAxNDU2MCw0ODc3MjU4NDcsMTg1NDY5MTk3LDI5MTgzNTM4NjMsMzEwNjc4MDg0MCwzMzU2NzYxNzY5LDIyMzcxMzMwODEsMTI4NjU2NzE3NSwzMTUyOTc2MzQ5LDQyNTUzNTA2MjQsMjY4Mzc2NTAzMCwzMTYwMTc1MzQ5LDMzMDk1OTQxNzEsODc4NDQzMzkwLDE5ODg4MzgxODUsMzcwNDMwMDQ4NiwxNzU2ODE4OTQwLDE2NzMwNjE2MTcsMzQwMzEwMDYzNiwyNzI3ODYzMDksMTA3NTAyNTY5OCw1NDU1NzIzNjksMjEwNTg4NzI2OCw0MTc0NTYwMDYxLDI5NjY3OTczMCwxODQxNzY4ODY1LDEyNjAyMzIyMzksNDA5MTMyNzAyNCwzOTYwMzA5MzMwLDM0OTc1MDkzNDcsMTgxNDgwMzIyMiwyNTc4MDE4NDg5LDQxOTU0NTYwNzIsNTc1MTM4MTQ4LDMyOTk0MDkwMzYsNDQ2NzU0ODc5LDM2Mjk1NDY3OTYsNDAxMTk5NjA0OCwzMzQ3NTMyMTEwLDMyNTIyMzg1NDUsNDI3MDYzOTc3OCw5MTU5ODU0MTksMzQ4MzgyNTUzNyw2ODE5MzM1MzQsNjUxODY4MDQ2LDI3NTU2MzY2NzEsMzgyODEwMzgzNywyMjMzNzc1NTQsMjYwNzQzOTgyMCwxNjQ5NzA0NTE4LDMyNzA5Mzc4NzUsMzkwMTgwNjc3NiwxNTgwMDg3Nzk5LDQxMTg5ODc2OTUsMzE5ODExNTIwMCwyMDg3MzA5NDU5LDI4NDI2Nzg1NzMsMzAxNjY5NzEwNiwxMDAzMDA3MTI5LDI4MDI4NDk5MTcsMTg2MDczODE0NywyMDc3OTY1MjQzLDE2NDQzOTY3Miw0MTAwODcyNDcyLDMyMjgzMzE5LDI4MjcxNzc4ODIsMTcwOTYxMDM1MCwyMTI1MTM1ODQ2LDEzNjQyODc1MSwzODc0NDI4MzkyLDM2NTI5MDQ4NTksMzQ2MDk4NDYzMCwzNTcyMTQ1OTI5LDM1OTMwNTYzODAsMjkzOTI2NjIyNiw4MjQ4NTIyNTksODE4MzI0ODg0LDMyMjQ3NDA0NTQsOTMwMzY5MjEyLDI4MDE1NjY0MTAsMjk2NzUwNzE1MiwzNTU3MDY4NDAsMTI1NzMwOTMzNiw0MTQ4MjkyODI2LDI0MzI1NjY1Niw3OTAwNzM4NDYsMjM3MzM0MDYzMCwxMjk2Mjk3OTA0LDE0MjI2OTkwODUsMzc1NjI5OTc4MCwzODE4ODM2NDA1LDQ1Nzk5Mjg0MCwzMDk5NjY3NDg3LDIxMzUzMTk4ODksNzc0MjIzMTQsMTU2MDM4MjUxNywxOTQ1Nzk4NTE2LDc4ODIwNDM1MywxNTIxNzA2NzgxLDEzODUzNTYyNDIsODcwOTEyMDg2LDMyNTk2NTM4MywyMzU4OTU3OTIxLDIwNTA0NjYwNjAsMjM4ODI2MDg4NCwyMzEzODg0NDc2LDQwMDY1MjExMjcsOTAxMjEwNTY5LDM5OTA5NTMxODksMTAxNDY0NjcwNSwxNTAzNDQ5ODIzLDEwNjI1OTcyMzUsMjAzMTYyMTMyNiwzMjEyMDM1ODk1LDM5MzEzNzE0NjksMTUzMzAxNzUxNCwzNTAxNzQ1NzUsMjI1NjAyODg5MSwyMTc3NTQ0MTc5LDEwNTIzMzgzNzIsNzQxODc2Nzg4LDE2MDY1OTEyOTYsMTkxNDA1MjAzNSwyMTM3MDUyNTMsMjMzNDY2OTg5NywxMTA3MjM0MTk3LDE4OTk2MDM5NjksMzcyNTA2OTQ5MSwyNjMxNDQ3NzgwLDI0MjI0OTQ5MTMsMTYzNTUwMjk4MCwxODkzMDIwMzQyLDE5NTA5MDMzODgsMTEyMDk3NDkzNV07dmFyIFQ3PVsyODA3MDU4OTMyLDE2OTk5NzA2MjUsMjc2NDI0OTYyMywxNTg2OTAzNTkxLDE4MDg0ODExOTUsMTE3MzQzMDE3MywxNDg3NjQ1OTQ2LDU5OTg0ODY3LDQxOTk4ODI4MDAsMTg0NDg4MjgwNiwxOTg5MjQ5MjI4LDEyNzc1NTU5NzAsMzYyMzYzNjk2NSwzNDE5OTE1NTYyLDExNDkyNDkwNzcsMjc0NDEwNDI5MCwxNTE0NzkwNTc3LDQ1OTc0NDY5OCwyNDQ4NjAzOTQsMzIzNTk5NTEzNCwxOTYzMTE1MzExLDQwMjc3NDQ1ODgsMjU0NDA3ODE1MCw0MTkwNTMwNTE1LDE2MDg5NzUyNDcsMjYyNzAxNjA4MiwyMDYyMjcwMzE3LDE1MDc0OTcyOTgsMjIwMDgxODg3OCw1Njc0OTg4NjgsMTc2NDMxMzU2OCwzMzU5OTM2MjAxLDIzMDU0NTU1NTQsMjAzNzk3MDA2MiwxMDQ3MjM5ZTMsMTkxMDMxOTAzMywxMzM3Mzc2NDgxLDI5MDQwMjcyNzIsMjg5MjQxNzMxMiw5ODQ5MDcyMTQsMTI0MzExMjQxNSw4MzA2NjE5MTQsODYxOTY4MjA5LDIxMzUyNTM1ODcsMjAxMTIxNDE4MCwyOTI3OTM0MzE1LDI2ODYyNTQ3MjEsNzMxMTgzMzY4LDE3NTA2MjYzNzYsNDI0NjMxMDcyNSwxODIwODI0Nzk4LDQxNzI3NjM3NzEsMzU0MjMzMDIyNyw0ODM5NDgyNywyNDA0OTAxNjYzLDI4NzE2ODI2NDUsNjcxNTkzMTk1LDMyNTQ5ODg3MjUsMjA3MzcyNDYxMywxNDUwODUyMzksMjI4MDc5NjIwMCwyNzc5OTE1MTk5LDE3OTA1NzUxMDcsMjE4NzEyODA4Niw0NzI2MTU2MzEsMzAyOTUxMDAwOSw0MDc1ODc3MTI3LDM4MDIyMjIxODUsNDEwNzEwMTY1OCwzMjAxNjMxNzQ5LDE2NDYyNTIzNDAsNDI3MDUwNzE3NCwxNDAyODExNDM4LDE0MzY1OTA4MzUsMzc3ODE1MTgxOCwzOTUwMzU1NzAyLDM5NjMxNjE0NzUsNDAyMDkxMjIyNCwyNjY3OTk0NzM3LDI3Mzc5MjM2NiwyMzMxNTkwMTc3LDEwNDY5OTYxMyw5NTM0NTk4MiwzMTc1NTAxMjg2LDIzNzc0ODY2NzYsMTU2MDYzNzg5MiwzNTY0MDQ1MzE4LDM2OTA1Nzg3Miw0MjEzNDQ3MDY0LDM5MTkwNDIyMzcsMTEzNzQ3Nzk1MiwyNjU4NjI1NDk3LDExMTk3Mjc4NDgsMjM0MDk0Nzg0OSwxNTMwNDU1ODMzLDQwMDczNjA5NjgsMTcyNDY2NTU2LDI2Njk1OTkzOCw1MTY1NTI4MzYsMCwyMjU2NzM0NTkyLDM5ODA5MzE2MjcsMTg5MDMyODA4MSwxOTE3NzQyMTcwLDQyOTQ3MDQzOTgsOTQ1MTY0MTY1LDM1NzU1Mjg4NzgsOTU4ODcxMDg1LDM2NDcyMTIwNDcsMjc4NzIwNzI2MCwxNDIzMDIyOTM5LDc3NTU2MjI5NCwxNzM5NjU2MjAyLDM4NzY1NTc2NTUsMjUzMDM5MTI3OCwyNDQzMDU4MDc1LDMzMTAzMjE4NTYsNTQ3NTEyNzk2LDEyNjUxOTU2MzksNDM3NjU2NTk0LDMxMjEyNzU1MzksNzE5NzAwMTI4LDM3NjI1MDI2OTAsMzg3NzgxMTQ3LDIxODgyODI5NywzMzUwMDY1ODAzLDI4MzA3MDgxNTAsMjg0ODQ2MTg1NCw0MjgxNjkyMDEsMTIyNDY2MTY1LDM3MjAwODEwNDksMTYyNzIzNTE5OSw2NDgwMTc2NjUsNDEyMjc2MjM1NCwxMDAyNzgzODQ2LDIxMTczNjA2MzUsNjk1NjM0NzU1LDMzMzYzNTg2OTEsNDIzNDcyMTAwNSw0MDQ5ODQ0NDUyLDM3MDQyODA4ODEsMjIzMjQzNTI5OSw1NzQ2MjQ2NjMsMjg3MzQzODE0LDYxMjIwNTg5OCwxMDM5NzE3MDUxLDg0MDAxOTcwNSwyNzA4MzI2MTg1LDc5MzQ1MTkzNCw4MjEyODgxMTQsMTM5MTIwMTY3MCwzODIyMDkwMTc3LDM3NjE4NzgyNywzMTEzODU1MzQ0LDEyMjQzNDgwNTIsMTY3OTk2ODIzMywyMzYxNjk4NTU2LDEwNTg3MDk3NDQsNzUyMzc1NDIxLDI0MzE1OTA5NjMsMTMyMTY5OTE0NSwzNTE5MTQyMjAwLDI3MzQ1OTExNzgsMTg4MTI3NDQ0LDIxNzc4Njk1NTcsMzcyNzIwNTc1NCwyMzg0OTExMDMxLDMyMTUyMTI0NjEsMjY0ODk3NjQ0MiwyNDUwMzQ2MTA0LDM0MzI3MzczNzUsMTE4MDg0OTI3OCwzMzE1NDQyMDUsMzEwMjI0OTE3Niw0MTUwMTQ0NTY5LDI5NTIxMDI1OTUsMjE1OTk3NjI4NSwyNDc0NDA0MzA0LDc2NjA3ODkzMywzMTM3NzM4NjEsMjU3MDgzMjA0NCwyMTA4MTAwNjMyLDE2NjgyMTI4OTIsMzE0NTQ1NjQ0MywyMDEzOTA4MjYyLDQxODY3MjIxNywzMDcwMzU2NjM0LDI1OTQ3MzQ5MjcsMTg1MjE3MTkyNSwzODY3MDYwOTkxLDM0NzM0MTY2MzYsMzkwNzQ0ODU5NywyNjE0NzM3NjM5LDkxOTQ4OTEzNSwxNjQ5NDg2MzksMjA5NDQxMDE2MCwyOTk3ODI1OTU2LDU5MDQyNDYzOSwyNDg2MjI0NTQ5LDE3MjM4NzI2NzQsMzE1Nzc1MDg2MiwzMzk5OTQxMjUwLDM1MDEyNTI3NTIsMzYyNTI2ODEzNSwyNTU1MDQ4MTk2LDM2NzM2MzczNTYsMTM0MzEyNzUwMSw0MTMwMjgxMzYxLDM1OTk1OTUwODUsMjk1Nzg1MzY3OSwxMjk3NDAzMDUwLDgxNzgxOTEwLDMwNTE1OTM0MjUsMjI4MzQ5MDQxMCw1MzIyMDE3NzIsMTM2NzI5NTU4OSwzOTI2MTcwOTc0LDg5NTI4NzY5MiwxOTUzNzU3ODMxLDEwOTM1OTc5NjMsNDkyNDgzNDMxLDM1Mjg2MjY5MDcsMTQ0NjI0MjU3NiwxMTkyNDU1NjM4LDE2MzY2MDQ2MzEsMjA5MzM2MjI1LDM0NDg3MzQ2NCwxMDE1NjcxNTcxLDY2OTk2MTg5NywzMzc1NzQwNzY5LDM4NTc1NzIxMjQsMjk3MzUzMDY5NSwzNzQ3MTkyMDE4LDE5MzM1MzA2MTAsMzQ2NDA0MjUxNiw5MzUyOTM4OTUsMzQ1NDY4NjE5OSwyODU4MTE1MDY5LDE4NjM2Mzg4NDUsMzY4MzAyMjkxNiw0MDg1MzY5NTE5LDMyOTI0NDUwMzIsODc1MzEzMTg4LDEwODAwMTc1NzEsMzI3OTAzMzg4NSw2MjE1OTE3NzgsMTIzMzg1NjU3MiwyNTA0MTMwMzE3LDI0MTk3NTQ0LDMwMTc2NzI3MTYsMzgzNTQ4NDM0MCwzMjQ3NDY1NTU4LDIyMjA5ODExOTUsMzA2MDg0NzkyMiwxNTUxMTI0NTg4LDE0NjM5OTY2MDBdO3ZhciBUOD1bNDEwNDYwNTc3NywxMDk3MTU5NTUwLDM5NjY3MzgxOCw2NjA1MTAyNjYsMjg3NTk2ODMxNSwyNjM4NjA2NjIzLDQyMDAxMTUxMTYsMzgwODY2MjM0Nyw4MjE3MTIxNjAsMTk4NjkxODA2MSwzNDMwMzIyNTY4LDM4NTQ0ODg1LDM4NTYxMzcyOTUsNzE4MDAyMTE3LDg5MzY4MTcwMiwxNjU0ODg2MzI1LDI5NzU0ODQzODIsMzEyMjM1ODA1MywzOTI2ODI1MDI5LDQyNzQwNTM0NjksNzk2MTk3NTcxLDEyOTA4MDE3OTMsMTE4NDM0MjkyNSwzNTU2MzYxODM1LDI0MDU0MjY5NDcsMjQ1OTczNTMxNywxODM2NzcyMjg3LDEzODE2MjAzNzMsMzE5NjI2Nzk4OCwxOTQ4MzczODQ4LDM3NjQ5ODgyMzMsMzM4NTM0NTE2NiwzMjYzNzg1NTg5LDIzOTAzMjU0OTIsMTQ4MDQ4NTc4NSwzMTExMjQ3MTQzLDM3ODAwOTc3MjYsMjI5MzA0NTIzMiw1NDgxNjk0MTcsMzQ1OTk1Mzc4OSwzNzQ2MTc1MDc1LDQzOTQ1MjM4OSwxMzYyMzIxNTU5LDE0MDA4NDk3NjIsMTY4NTU3NzkwNSwxODA2NTk5MzU1LDIxNzQ3NTQwNDYsMTM3MDczOTEzLDEyMTQ3OTc5MzYsMTE3NDIxNTA1NSwzNzMxNjU0NTQ4LDIwNzk4OTc0MjYsMTk0MzIxNzA2NywxMjU4NDgwMjQyLDUyOTQ4Nzg0MywxNDM3MjgwODcwLDM5NDUyNjkxNzAsMzA0OTM5MDg5NSwzMzEzMjEyMDM4LDkyMzMxMzYxOSw2Nzk5OThlMywzMjE1MzA3Mjk5LDU3MzI2MDgyLDM3NzY0MjIyMSwzNDc0NzI5ODY2LDIwNDE4NzcxNTksMTMzMzYxOTA3LDE3NzY0NjAxMTAsMzY3MzQ3NjQ1Myw5NjM5MjQ1NCw4Nzg4NDU5MDUsMjgwMTY5OTUyNCw3NzcyMzE2NjgsNDA4MjQ3NTE3MCwyMzMwMDE0MjEzLDQxNDI2MjYyMTIsMjIxMzI5NjM5NSwxNjI2MzE5NDI0LDE5MDYyNDcyNjIsMTg0NjU2MzI2MSw1NjI3NTU5MDIsMzcwODE3MzcxOCwxMDQwNTU5ODM3LDM4NzExNjM5ODEsMTQxODU3MzIwMSwzMjk0NDMwNTc3LDExNDU4NTM0OCwxMzQzNjE4OTEyLDI1NjY1OTU2MDksMzE4NjIwMjU4MiwxMDc4MTg1MDk3LDM2NTEwNDExMjcsMzg5NjY4ODA0OCwyMzA3NjIyOTE5LDQyNTQwODc0MywzMzcxMDk2OTUzLDIwODEwNDg0ODEsMTEwODMzOTA2OCwyMjE2NjEwMjk2LDAsMjE1NjI5OTAxNyw3MzY5NzA4MDIsMjkyNTk2NzY2LDE1MTc0NDA2MjAsMjUxNjU3MjEzLDIyMzUwNjE3NzUsMjkzMzIwMjQ5Myw3NTg3MjAzMTAsMjY1OTA1MTYyLDE1NTQzOTE0MDAsMTUzMjI4NTMzOSw5MDg5OTkyMDQsMTc0NTY3NjkyLDE0NzQ3NjA1OTUsNDAwMjg2MTc0OCwyNjEwMDExNjc1LDMyMzQxNTY0MTYsMzY5MzEyNjI0MSwyMDAxNDMwODc0LDMwMzY5OTQ4NCwyNDc4NDQzMjM0LDI2ODcxNjU4ODgsNTg1MTIyNjIwLDQ1NDQ5OTYwMiwxNTE4NDk3NDIsMjM0NTExOTIxOCwzMDY0NTEwNzY1LDUxNDQ0MzI4NCw0MDQ0OTgxNTkxLDE5NjM0MTI2NTUsMjU4MTQ0NTYxNCwyMTM3MDYyODE5LDE5MzA4NTM1LDE5Mjg3MDcxNjQsMTcxNTE5MzE1Niw0MjE5MzUyMTU1LDExMjY3OTA3OTUsNjAwMjM1MjExLDM5OTI3NDIwNzAsMzg0MTAyNDk1Miw4MzY1NTM0MzEsMTY2OTY2NDgzNCwyNTM1NjA0MjQzLDMzMjMwMTEyMDQsMTI0MzkwNTQxMywzMTQxNDAwNzg2LDQxODA4MDgxMTAsNjk4NDQ1MjU1LDI2NTM4OTk1NDksMjk4OTU1MjYwNCwyMjUzNTgxMzI1LDMyNTI5MzI3MjcsMzAwNDU5MTE0NywxODkxMjExNjg5LDI0ODc4MTA1NzcsMzkxNTY1MzcwMyw0MjM3MDgzODE2LDQwMzA2Njc0MjQsMjEwMDA5MDk2Niw4NjUxMzY0MTgsMTIyOTg5OTY1NSw5NTMyNzA3NDUsMzM5OTY3OTYyOCwzNTU3NTA0NjY0LDQxMTg5MjUyMjIsMjA2MTM3OTc0OSwzMDc5NTQ2NTg2LDI5MTUwMTc3OTEsOTgzNDI2MDkyLDIwMjI4Mzc1ODQsMTYwNzI0NDY1MCwyMTE4NTQxOTA4LDIzNjY4ODI1NTAsMzYzNTk5NjgxNiw5NzI1MTI4MTQsMzI4MzA4ODc3MCwxNTY4NzE4NDk1LDM0OTkzMjY1NjksMzU3NjUzOTUwMyw2MjE5ODI2NzEsMjg5NTcyMzQ2NCw0MTA4ODc5NTIsMjYyMzc2MjE1MiwxMDAyMTQyNjgzLDY0NTQwMTAzNywxNDk0ODA3NjYyLDI1OTU2ODQ4NDQsMTMzNTUzNTc0NywyNTA3MDQwMjMwLDQyOTMyOTU3ODYsMzE2NzY4NDY0MSwzNjc1ODUwMDcsMzg4NTc1MDcxNCwxODY1ODYyNzMwLDI2NjgyMjE2NzQsMjk2MDk3MTMwNSwyNzYzMTczNjgxLDEwNTkyNzA5NTQsMjc3Nzk1MjQ1NCwyNzI0NjQyODY5LDEzMjA5NTc4MTIsMjE5NDMxOTEwMCwyNDI5NTk1ODcyLDI4MTU5NTYyNzUsNzcwODk1MjEsMzk3Mzc3MzEyMSwzNDQ0NTc1ODcxLDI0NDg4MzAyMzEsMTMwNTkwNjU1MCw0MDIxMzA4NzM5LDI4NTcxOTQ3MDAsMjUxNjkwMTg2MCwzNTE4MzU4NDMwLDE3ODczMDQ3ODAsNzQwMjc2NDE3LDE2OTk4Mzk4MTQsMTU5MjM5NDkwOSwyMzUyMzA3NDU3LDIyNzI1NTYwMjYsMTg4ODIxMjQzLDE3Mjk5NzcwMTEsMzY4Nzk5NDAwMiwyNzQwODQ4NDEsMzU5NDk4MjI1MywzNjEzNDk0NDI2LDI3MDE5NDk0OTUsNDE2MjA5NjcyOSwzMjI3MzQ1NzEsMjgzNzk2NjU0MiwxNjQwNTc2NDM5LDQ4NDgzMDY4OSwxMjAyNzk3NjkwLDM1Mzc4NTI4MjgsNDA2NzYzOTEyNSwzNDkwNzU3MzYsMzM0MjMxOTQ3NSw0MTU3NDY3MjE5LDQyNTU4MDAxNTksMTAzMDY5MDAxNSwxMTU1MjM3NDk2LDI5NTE5NzEyNzQsMTc1NzY5MTU3Nyw2MDczOTg5NjgsMjczODkwNTAyNiw0OTkzNDc5OTAsMzc5NDA3ODkwOCwxMDExNDUyNzEyLDIyNzg4NTU2NywyODE4NjY2ODA5LDIxMzExNDM3NiwzMDM0ODgxMjQwLDE0NTU1MjU5ODgsMzQxNDQ1MDU1NSw4NTA4MTcyMzcsMTgxNzk5ODQwOCwzMDkyNzI2NDgwXTt2YXIgVTE9WzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdO3ZhciBVMj1bMCwxODU0NjkxOTcsMzcwOTM4Mzk0LDQ4NzcyNTg0Nyw3NDE4NzY3ODgsNjU3ODYxOTQ1LDk3NTQ1MTY5NCw4MjQ4NTIyNTksMTQ4Mzc1MzU3NiwxNDAwNzgzMjA1LDEzMTU3MjM4OTAsMTE2NDA3MTgwNywxOTUwOTAzMzg4LDIxMzUzMTk4ODksMTY0OTcwNDUxOCwxNzY3NTM2NDU5LDI5Njc1MDcxNTIsMzE1Mjk3NjM0OSwyODAxNTY2NDEwLDI5MTgzNTM4NjMsMjYzMTQ0Nzc4MCwyNTQ3NDMyOTM3LDIzMjgxNDM2MTQsMjE3NzU0NDE3OSwzOTAxODA2Nzc2LDM4MTg4MzY0MDUsNDI3MDYzOTc3OCw0MTE4OTg3Njk1LDMyOTk0MDkwMzYsMzQ4MzgyNTUzNywzNTM1MDcyOTE4LDM2NTI5MDQ4NTksMjA3Nzk2NTI0MywxODkzMDIwMzQyLDE4NDE3Njg4NjUsMTcyNDQ1NzEzMiwxNDc0NTAyNTQzLDE1NTkwNDE2NjYsMTEwNzIzNDE5NywxMjU3MzA5MzM2LDU5ODQzODg2Nyw2ODE5MzM1MzQsOTAxMjEwNTY5LDEwNTIzMzgzNzIsMjYxMzE0NTM1LDc3NDIyMzE0LDQyODgxOTk2NSwzMTA0NjM3MjgsMzQwOTY4NTM1NSwzMjI0NzQwNDU0LDM3MTAzNjgxMTMsMzU5MzA1NjM4MCwzODc1NzcwMjA3LDM5NjAzMDkzMzAsNDA0NTM4MDkzMyw0MTk1NDU2MDcyLDI0NzEyMjQwNjcsMjU1NDcxODczNCwyMjM3MTMzMDgxLDIzODgyNjA4ODQsMzIxMjAzNTg5NSwzMDI4MTQzNjc0LDI4NDI2Nzg1NzMsMjcyNDMyMjMzNiw0MTM4NTYzMTgxLDQyNTUzNTA2MjQsMzc2OTcyMTk3NSwzOTU1MTkxMTYyLDM2NjcyMTkwMzMsMzUxNjYxOTYwNCwzNDMxNTQ2OTQ3LDMzNDc1MzIxMTAsMjkzMzczNDkxNywyNzgyMDgyODI0LDMwOTk2Njc0ODcsMzAxNjY5NzEwNiwyMTk2MDUyNTI5LDIzMTM4ODQ0NzYsMjQ5OTM0ODUyMywyNjgzNzY1MDMwLDExNzk1MTA0NjEsMTI5NjI5NzkwNCwxMzQ3NTQ4MzI3LDE1MzMwMTc1MTQsMTc4NjEwMjQwOSwxNjM1NTAyOTgwLDIwODczMDk0NTksMjAwMzI5NDYyMiw1MDczNTg5MzMsMzU1NzA2ODQwLDEzNjQyODc1MSw1MzQ1ODM3MCw4MzkyMjQwMzMsOTU3MDU1OTgwLDYwNTY1NzMzOSw3OTAwNzM4NDYsMjM3MzM0MDYzMCwyMjU2MDI4ODkxLDI2MDc0Mzk4MjAsMjQyMjQ5NDkxMywyNzA2MjcwNjkwLDI4NTYzNDU4MzksMzA3NTYzNjIxNiwzMTYwMTc1MzQ5LDM1NzM5NDE2OTQsMzcyNTA2OTQ5MSwzMjczMjY3MTA4LDMzNTY3NjE3NjksNDE4MTU5ODYwMiw0MDYzMjQyMzc1LDQwMTE5OTYwNDgsMzgyODEwMzgzNywxMDMzMjk3MTU4LDkxNTk4NTQxOSw3MzA1MTcyNzYsNTQ1NTcyMzY5LDI5NjY3OTczMCw0NDY3NTQ4NzksMTI5MTY2MTIwLDIxMzcwNTI1MywxNzA5NjEwMzUwLDE4NjA3MzgxNDcsMTk0NTc5ODUxNiwyMDI5MjkzMTc3LDEyMzkzMzExNjIsMTEyMDk3NDkzNSwxNjA2NTkxMjk2LDE0MjI2OTkwODUsNDE0ODI5MjgyNiw0MjMzMDk0NjE1LDM3ODEwMzM2NjQsMzkzMTM3MTQ2OSwzNjgyMTkxNTk4LDM0OTc1MDkzNDcsMzQ0NjAwNDQ2OCwzMzI4OTU1Mzg1LDI5MzkyNjYyMjYsMjc1NTYzNjY3MSwzMTA2NzgwODQwLDI5ODg2ODcyNjksMjE5ODQzODAyMiwyMjgyMTk1MzM5LDI1MDEyMTg5NzIsMjY1MjYwOTQyNSwxMjAxNzY1Mzg2LDEyODY1NjcxNzUsMTM3MTM2ODk3NiwxNTIxNzA2NzgxLDE4MDUyMTE3MTAsMTYyMDUyOTQ1OSwyMTA1ODg3MjY4LDE5ODg4MzgxODUsNTMzODA0MTMwLDM1MDE3NDU3NSwxNjQ0Mzk2NzIsNDYzNDYxMDEsODcwOTEyMDg2LDk1NDY2OTQwMyw2MzY4MTM5MDAsNzg4MjA0MzUzLDIzNTg5NTc5MjEsMjI3NDY4MDQyOCwyNTkyNTIzNjQzLDI0NDE2NjE1NTgsMjY5NTAzMzY4NSwyODgwMjQwMjE2LDMwNjU5NjI4MzEsMzE4MjQ4NzYxOCwzNTcyMTQ1OTI5LDM3NTYyOTk3ODAsMzI3MDkzNzg3NSwzMzg4NTA3MTY2LDQxNzQ1NjAwNjEsNDA5MTMyNzAyNCw0MDA2NTIxMTI3LDM4NTQ2MDYzNzgsMTAxNDY0NjcwNSw5MzAzNjkyMTIsNzExMzQ5Njc1LDU2MDQ4NzU5MCwyNzI3ODYzMDksNDU3OTkyODQwLDEwNjg1Mjc2NywyMjMzNzc1NTQsMTY3ODM4MTAxNywxODYyNTM0ODY4LDE5MTQwNTIwMzUsMjAzMTYyMTMyNiwxMjExMjQ3NTk3LDExMjgwMTQ1NjAsMTU4MDA4Nzc5OSwxNDI4MTczMDUwLDMyMjgzMzE5LDE4MjYyMTExNCw0MDE2Mzk1OTcsNDg2NDQxMzc2LDc2ODkxNzEyMyw2NTE4NjgwNDYsMTAwMzAwNzEyOSw4MTgzMjQ4ODQsMTUwMzQ0OTgyMywxMzg1MzU2MjQyLDEzMzM4MzgwMjEsMTE1MDIwODQ1NiwxOTczNzQ1Mzg3LDIxMjUxMzU4NDYsMTY3MzA2MTYxNywxNzU2ODE4OTQwLDI5NzAzNTYzMjcsMzEyMDY5NDEyMiwyODAyODQ5OTE3LDI4ODc2NTE2OTYsMjYzNzQ0MjY0MywyNTIwMzkzNTY2LDIzMzQ2Njk4OTcsMjE0OTk4NzY1MiwzOTE3MjM0NzAzLDM3OTkxNDExMjIsNDI4NDUwMjAzNyw0MTAwODcyNDcyLDMzMDk1OTQxNzEsMzQ2MDk4NDYzMCwzNTQ1Nzg5NDczLDM2Mjk1NDY3OTYsMjA1MDQ2NjA2MCwxODk5NjAzOTY5LDE4MTQ4MDMyMjIsMTczMDUyNTcyMywxNDQzODU3NzIwLDE1NjAzODI1MTcsMTA3NTAyNTY5OCwxMjYwMjMyMjM5LDU3NTEzODE0OCw2OTI3MDc0MzMsODc4NDQzMzkwLDEwNjI1OTcyMzUsMjQzMjU2NjU2LDkxMzQxOTE3LDQwOTE5ODQxMCwzMjU5NjUzODMsMzQwMzEwMDYzNiwzMjUyMjM4NTQ1LDM3MDQzMDA0ODYsMzYyMDAyMjk4NywzODc0NDI4MzkyLDM5OTA5NTMxODksNDA0MjQ1OTEyMiw0MjI3NjY1NjYzLDI0NjA0NDkyMDQsMjU3ODAxODQ4OSwyMjI2ODc1MzEwLDI0MTEwMjkxNTUsMzE5ODExNTIwMCwzMDQ2MjAwNDYxLDI4MjcxNzc4ODIsMjc0Mzk0NDg1NV07dmFyIFUzPVswLDIxODgyODI5Nyw0Mzc2NTY1OTQsMzg3NzgxMTQ3LDg3NTMxMzE4OCw5NTg4NzEwODUsNzc1NTYyMjk0LDU5MDQyNDYzOSwxNzUwNjI2Mzc2LDE2OTk5NzA2MjUsMTkxNzc0MjE3MCwyMTM1MjUzNTg3LDE1NTExMjQ1ODgsMTM2NzI5NTU4OSwxMTgwODQ5Mjc4LDEyNjUxOTU2MzksMzUwMTI1Mjc1MiwzNzIwMDgxMDQ5LDMzOTk5NDEyNTAsMzM1MDA2NTgwMywzODM1NDg0MzQwLDM5MTkwNDIyMzcsNDI3MDUwNzE3NCw0MDg1MzY5NTE5LDMxMDIyNDkxNzYsMzA1MTU5MzQyNSwyNzM0NTkxMTc4LDI5NTIxMDI1OTUsMjM2MTY5ODU1NiwyMTc3ODY5NTU3LDI1MzAzOTEyNzgsMjYxNDczNzYzOSwzMTQ1NDU2NDQzLDMwNjA4NDc5MjIsMjcwODMyNjE4NSwyODkyNDE3MzEyLDI0MDQ5MDE2NjMsMjE4NzEyODA4NiwyNTA0MTMwMzE3LDI1NTUwNDgxOTYsMzU0MjMzMDIyNywzNzI3MjA1NzU0LDMzNzU3NDA3NjksMzI5MjQ0NTAzMiwzODc2NTU3NjU1LDM5MjYxNzA5NzQsNDI0NjMxMDcyNSw0MDI3NzQ0NTg4LDE4MDg0ODExOTUsMTcyMzg3MjY3NCwxOTEwMzE5MDMzLDIwOTQ0MTAxNjAsMTYwODk3NTI0NywxMzkxMjAxNjcwLDExNzM0MzAxNzMsMTIyNDM0ODA1Miw1OTk4NDg2NywyNDQ4NjAzOTQsNDI4MTY5MjAxLDM0NDg3MzQ2NCw5MzUyOTM4OTUsOTg0OTA3MjE0LDc2NjA3ODkzMyw1NDc1MTI3OTYsMTg0NDg4MjgwNiwxNjI3MjM1MTk5LDIwMTEyMTQxODAsMjA2MjI3MDMxNywxNTA3NDk3Mjk4LDE0MjMwMjI5MzksMTEzNzQ3Nzk1MiwxMzIxNjk5MTQ1LDk1MzQ1OTgyLDE0NTA4NTIzOSw1MzIyMDE3NzIsMzEzNzczODYxLDgzMDY2MTkxNCwxMDE1NjcxNTcxLDczMTE4MzM2OCw2NDgwMTc2NjUsMzE3NTUwMTI4NiwyOTU3ODUzNjc5LDI4MDcwNTg5MzIsMjg1ODExNTA2OSwyMzA1NDU1NTU0LDIyMjA5ODExOTUsMjQ3NDQwNDMwNCwyNjU4NjI1NDk3LDM1NzU1Mjg4NzgsMzYyNTI2ODEzNSwzNDczNDE2NjM2LDMyNTQ5ODg3MjUsMzc3ODE1MTgxOCwzOTYzMTYxNDc1LDQyMTM0NDcwNjQsNDEzMDI4MTM2MSwzNTk5NTk1MDg1LDM2ODMwMjI5MTYsMzQzMjczNzM3NSwzMjQ3NDY1NTU4LDM4MDIyMjIxODUsNDAyMDkxMjIyNCw0MTcyNzYzNzcxLDQxMjI3NjIzNTQsMzIwMTYzMTc0OSwzMDE3NjcyNzE2LDI3NjQyNDk2MjMsMjg0ODQ2MTg1NCwyMzMxNTkwMTc3LDIyODA3OTYyMDAsMjQzMTU5MDk2MywyNjQ4OTc2NDQyLDEwNDY5OTYxMywxODgxMjc0NDQsNDcyNjE1NjMxLDI4NzM0MzgxNCw4NDAwMTk3MDUsMTA1ODcwOTc0NCw2NzE1OTMxOTUsNjIxNTkxNzc4LDE4NTIxNzE5MjUsMTY2ODIxMjg5MiwxOTUzNzU3ODMxLDIwMzc5NzAwNjIsMTUxNDc5MDU3NywxNDYzOTk2NjAwLDEwODAwMTc1NzEsMTI5NzQwMzA1MCwzNjczNjM3MzU2LDM2MjM2MzY5NjUsMzIzNTk5NTEzNCwzNDU0Njg2MTk5LDQwMDczNjA5NjgsMzgyMjA5MDE3Nyw0MTA3MTAxNjU4LDQxOTA1MzA1MTUsMjk5NzgyNTk1NiwzMjE1MjEyNDYxLDI4MzA3MDgxNTAsMjc3OTkxNTE5OSwyMjU2NzM0NTkyLDIzNDA5NDc4NDksMjYyNzAxNjA4MiwyNDQzMDU4MDc1LDE3MjQ2NjU1NiwxMjI0NjYxNjUsMjczNzkyMzY2LDQ5MjQ4MzQzMSwxMDQ3MjM5ZTMsODYxOTY4MjA5LDYxMjIwNTg5OCw2OTU2MzQ3NTUsMTY0NjI1MjM0MCwxODYzNjM4ODQ1LDIwMTM5MDgyNjIsMTk2MzExNTMxMSwxNDQ2MjQyNTc2LDE1MzA0NTU4MzMsMTI3NzU1NTk3MCwxMDkzNTk3OTYzLDE2MzY2MDQ2MzEsMTgyMDgyNDc5OCwyMDczNzI0NjEzLDE5ODkyNDkyMjgsMTQzNjU5MDgzNSwxNDg3NjQ1OTQ2LDEzMzczNzY0ODEsMTExOTcyNzg0OCwxNjQ5NDg2MzksODE3ODE5MTAsMzMxNTQ0MjA1LDUxNjU1MjgzNiwxMDM5NzE3MDUxLDgyMTI4ODExNCw2Njk5NjE4OTcsNzE5NzAwMTI4LDI5NzM1MzA2OTUsMzE1Nzc1MDg2MiwyODcxNjgyNjQ1LDI3ODcyMDcyNjAsMjIzMjQzNTI5OSwyMjgzNDkwNDEwLDI2Njc5OTQ3MzcsMjQ1MDM0NjEwNCwzNjQ3MjEyMDQ3LDM1NjQwNDUzMTgsMzI3OTAzMzg4NSwzNDY0MDQyNTE2LDM5ODA5MzE2MjcsMzc2MjUwMjY5MCw0MTUwMTQ0NTY5LDQxOTk4ODI4MDAsMzA3MDM1NjYzNCwzMTIxMjc1NTM5LDI5MDQwMjcyNzIsMjY4NjI1NDcyMSwyMjAwODE4ODc4LDIzODQ5MTEwMzEsMjU3MDgzMjA0NCwyNDg2MjI0NTQ5LDM3NDcxOTIwMTgsMzUyODYyNjkwNywzMzEwMzIxODU2LDMzNTk5MzYyMDEsMzk1MDM1NTcwMiwzODY3MDYwOTkxLDQwNDk4NDQ0NTIsNDIzNDcyMTAwNSwxNzM5NjU2MjAyLDE3OTA1NzUxMDcsMjEwODEwMDYzMiwxODkwMzI4MDgxLDE0MDI4MTE0MzgsMTU4NjkwMzU5MSwxMjMzODU2NTcyLDExNDkyNDkwNzcsMjY2OTU5OTM4LDQ4Mzk0ODI3LDM2OTA1Nzg3Miw0MTg2NzIyMTcsMTAwMjc4Mzg0Niw5MTk0ODkxMzUsNTY3NDk4ODY4LDc1MjM3NTQyMSwyMDkzMzYyMjUsMjQxOTc1NDQsMzc2MTg3ODI3LDQ1OTc0NDY5OCw5NDUxNjQxNjUsODk1Mjg3NjkyLDU3NDYyNDY2Myw3OTM0NTE5MzQsMTY3OTk2ODIzMywxNzY0MzEzNTY4LDIxMTczNjA2MzUsMTkzMzUzMDYxMCwxMzQzMTI3NTAxLDE1NjA2Mzc4OTIsMTI0MzExMjQxNSwxMTkyNDU1NjM4LDM3MDQyODA4ODEsMzUxOTE0MjIwMCwzMzM2MzU4NjkxLDM0MTk5MTU1NjIsMzkwNzQ0ODU5NywzODU3NTcyMTI0LDQwNzU4NzcxMjcsNDI5NDcwNDM5OCwzMDI5NTEwMDA5LDMxMTM4NTUzNDQsMjkyNzkzNDMxNSwyNzQ0MTA0MjkwLDIxNTk5NzYyODUsMjM3NzQ4NjY3NiwyNTk0NzM0OTI3LDI1NDQwNzgxNTBdO3ZhciBVND1bMCwxNTE4NDk3NDIsMzAzNjk5NDg0LDQ1NDQ5OTYwMiw2MDczOTg5NjgsNzU4NzIwMzEwLDkwODk5OTIwNCwxMDU5MjcwOTU0LDEyMTQ3OTc5MzYsMTA5NzE1OTU1MCwxNTE3NDQwNjIwLDE0MDA4NDk3NjIsMTgxNzk5ODQwOCwxNjk5ODM5ODE0LDIxMTg1NDE5MDgsMjAwMTQzMDg3NCwyNDI5NTk1ODcyLDI1ODE0NDU2MTQsMjE5NDMxOTEwMCwyMzQ1MTE5MjE4LDMwMzQ4ODEyNDAsMzE4NjIwMjU4MiwyODAxNjk5NTI0LDI5NTE5NzEyNzQsMzYzNTk5NjgxNiwzNTE4MzU4NDMwLDMzOTk2Nzk2MjgsMzI4MzA4ODc3MCw0MjM3MDgzODE2LDQxMTg5MjUyMjIsNDAwMjg2MTc0OCwzODg1NzUwNzE0LDEwMDIxNDI2ODMsODUwODE3MjM3LDY5ODQ0NTI1NSw1NDgxNjk0MTcsNTI5NDg3ODQzLDM3NzY0MjIyMSwyMjc4ODU1NjcsNzcwODk1MjEsMTk0MzIxNzA2NywyMDYxMzc5NzQ5LDE2NDA1NzY0MzksMTc1NzY5MTU3NywxNDc0NzYwNTk1LDE1OTIzOTQ5MDksMTE3NDIxNTA1NSwxMjkwODAxNzkzLDI4NzU5NjgzMTUsMjcyNDY0Mjg2OSwzMTExMjQ3MTQzLDI5NjA5NzEzMDUsMjQwNTQyNjk0NywyMjUzNTgxMzI1LDI2Mzg2MDY2MjMsMjQ4NzgxMDU3NywzODA4NjYyMzQ3LDM5MjY4MjUwMjksNDA0NDk4MTU5MSw0MTYyMDk2NzI5LDMzNDIzMTk0NzUsMzQ1OTk1Mzc4OSwzNTc2NTM5NTAzLDM2OTMxMjYyNDEsMTk4NjkxODA2MSwyMTM3MDYyODE5LDE2ODU1Nzc5MDUsMTgzNjc3MjI4NywxMzgxNjIwMzczLDE1MzIyODUzMzksMTA3ODE4NTA5NywxMjI5ODk5NjU1LDEwNDA1NTk4MzcsOTIzMzEzNjE5LDc0MDI3NjQxNyw2MjE5ODI2NzEsNDM5NDUyMzg5LDMyMjczNDU3MSwxMzcwNzM5MTMsMTkzMDg1MzUsMzg3MTE2Mzk4MSw0MDIxMzA4NzM5LDQxMDQ2MDU3NzcsNDI1NTgwMDE1OSwzMjYzNzg1NTg5LDM0MTQ0NTA1NTUsMzQ5OTMyNjU2OSwzNjUxMDQxMTI3LDI5MzMyMDI0OTMsMjgxNTk1NjI3NSwzMTY3Njg0NjQxLDMwNDkzOTA4OTUsMjMzMDAxNDIxMywyMjEzMjk2Mzk1LDI1NjY1OTU2MDksMjQ0ODgzMDIzMSwxMzA1OTA2NTUwLDExNTUyMzc0OTYsMTYwNzI0NDY1MCwxNDU1NTI1OTg4LDE3NzY0NjAxMTAsMTYyNjMxOTQyNCwyMDc5ODk3NDI2LDE5Mjg3MDcxNjQsOTYzOTI0NTQsMjEzMTE0Mzc2LDM5NjY3MzgxOCw1MTQ0NDMyODQsNTYyNzU1OTAyLDY3OTk5OGUzLDg2NTEzNjQxOCw5ODM0MjYwOTIsMzcwODE3MzcxOCwzNTU3NTA0NjY0LDM0NzQ3Mjk4NjYsMzMyMzAxMTIwNCw0MTgwODA4MTEwLDQwMzA2Njc0MjQsMzk0NTI2OTE3MCwzNzk0MDc4OTA4LDI1MDcwNDAyMzAsMjYyMzc2MjE1MiwyMjcyNTU2MDI2LDIzOTAzMjU0OTIsMjk3NTQ4NDM4MiwzMDkyNzI2NDgwLDI3Mzg5MDUwMjYsMjg1NzE5NDcwMCwzOTczNzczMTIxLDM4NTYxMzcyOTUsNDI3NDA1MzQ2OSw0MTU3NDY3MjE5LDMzNzEwOTY5NTMsMzI1MjkzMjcyNywzNjczNDc2NDUzLDM1NTYzNjE4MzUsMjc2MzE3MzY4MSwyOTE1MDE3NzkxLDMwNjQ1MTA3NjUsMzIxNTMwNzI5OSwyMTU2Mjk5MDE3LDIzMDc2MjI5MTksMjQ1OTczNTMxNywyNjEwMDExNjc1LDIwODEwNDg0ODEsMTk2MzQxMjY1NSwxODQ2NTYzMjYxLDE3Mjk5NzcwMTEsMTQ4MDQ4NTc4NSwxMzYyMzIxNTU5LDEyNDM5MDU0MTMsMTEyNjc5MDc5NSw4Nzg4NDU5MDUsMTAzMDY5MDAxNSw2NDU0MDEwMzcsNzk2MTk3NTcxLDI3NDA4NDg0MSw0MjU0MDg3NDMsMzg1NDQ4ODUsMTg4ODIxMjQzLDM2MTM0OTQ0MjYsMzczMTY1NDU0OCwzMzEzMjEyMDM4LDM0MzAzMjI1NjgsNDA4MjQ3NTE3MCw0MjAwMTE1MTE2LDM3ODAwOTc3MjYsMzg5NjY4ODA0OCwyNjY4MjIxNjc0LDI1MTY5MDE4NjAsMjM2Njg4MjU1MCwyMjE2NjEwMjk2LDMxNDE0MDA3ODYsMjk4OTU1MjYwNCwyODM3OTY2NTQyLDI2ODcxNjU4ODgsMTIwMjc5NzY5MCwxMzIwOTU3ODEyLDE0MzcyODA4NzAsMTU1NDM5MTQwMCwxNjY5NjY0ODM0LDE3ODczMDQ3ODAsMTkwNjI0NzI2MiwyMDIyODM3NTg0LDI2NTkwNTE2MiwxMTQ1ODUzNDgsNDk5MzQ3OTkwLDM0OTA3NTczNiw3MzY5NzA4MDIsNTg1MTIyNjIwLDk3MjUxMjgxNCw4MjE3MTIxNjAsMjU5NTY4NDg0NCwyNDc4NDQzMjM0LDIyOTMwNDUyMzIsMjE3NDc1NDA0NiwzMTk2MjY3OTg4LDMwNzk1NDY1ODYsMjg5NTcyMzQ2NCwyNzc3OTUyNDU0LDM1Mzc4NTI4MjgsMzY4Nzk5NDAwMiwzMjM0MTU2NDE2LDMzODUzNDUxNjYsNDE0MjYyNjIxMiw0MjkzMjk1Nzg2LDM4NDEwMjQ5NTIsMzk5Mjc0MjA3MCwxNzQ1Njc2OTIsNTczMjYwODIsNDEwODg3OTUyLDI5MjU5Njc2Niw3NzcyMzE2NjgsNjYwNTEwMjY2LDEwMTE0NTI3MTIsODkzNjgxNzAyLDExMDgzMzkwNjgsMTI1ODQ4MDI0MiwxMzQzNjE4OTEyLDE0OTQ4MDc2NjIsMTcxNTE5MzE1NiwxODY1ODYyNzMwLDE5NDgzNzM4NDgsMjEwMDA5MDk2NiwyNzAxOTQ5NDk1LDI4MTg2NjY4MDksMzAwNDU5MTE0NywzMTIyMzU4MDUzLDIyMzUwNjE3NzUsMjM1MjMwNzQ1NywyNTM1NjA0MjQzLDI2NTM4OTk1NDksMzkxNTY1MzcwMywzNzY0OTg4MjMzLDQyMTkzNTIxNTUsNDA2NzYzOTEyNSwzNDQ0NTc1ODcxLDMyOTQ0MzA1NzcsMzc0NjE3NTA3NSwzNTk0OTgyMjUzLDgzNjU1MzQzMSw5NTMyNzA3NDUsNjAwMjM1MjExLDcxODAwMjExNywzNjc1ODUwMDcsNDg0ODMwNjg5LDEzMzM2MTkwNywyNTE2NTcyMTMsMjA0MTg3NzE1OSwxODkxMjExNjg5LDE4MDY1OTkzNTUsMTY1NDg4NjMyNSwxNTY4NzE4NDk1LDE0MTg1NzMyMDEsMTMzNTUzNTc0NywxMTg0MzQyOTI1XTtmdW5jdGlvbiBjb252ZXJ0VG9JbnQzMihieXRlcyl7dmFyIHJlc3VsdD1bXTtmb3IodmFyIGk9MDtpPGJ5dGVzLmxlbmd0aDtpKz00KXtyZXN1bHQucHVzaChieXRlc1tpXTw8MjR8Ynl0ZXNbaSsxXTw8MTZ8Ynl0ZXNbaSsyXTw8OHxieXRlc1tpKzNdKX1yZXR1cm4gcmVzdWx0fXZhciBBRVM9ZnVuY3Rpb24oa2V5KXtpZighKHRoaXMgaW5zdGFuY2VvZiBBRVMpKXt0aHJvdyBFcnJvcigiQUVTIG11c3QgYmUgaW5zdGFuaXRhdGVkIHdpdGggYG5ld2AiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywia2V5Iix7dmFsdWU6Y29lcmNlQXJyYXkoa2V5LHRydWUpfSk7dGhpcy5fcHJlcGFyZSgpfTtBRVMucHJvdG90eXBlLl9wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIHJvdW5kcz1udW1iZXJPZlJvdW5kc1t0aGlzLmtleS5sZW5ndGhdO2lmKHJvdW5kcz09bnVsbCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGtleSBzaXplIChtdXN0IGJlIDE2LCAyNCBvciAzMiBieXRlcykiKX10aGlzLl9LZT1bXTt0aGlzLl9LZD1bXTtmb3IodmFyIGk9MDtpPD1yb3VuZHM7aSsrKXt0aGlzLl9LZS5wdXNoKFswLDAsMCwwXSk7dGhpcy5fS2QucHVzaChbMCwwLDAsMF0pfXZhciByb3VuZEtleUNvdW50PShyb3VuZHMrMSkqNDt2YXIgS0M9dGhpcy5rZXkubGVuZ3RoLzQ7dmFyIHRrPWNvbnZlcnRUb0ludDMyKHRoaXMua2V5KTt2YXIgaW5kZXg7Zm9yKHZhciBpPTA7aTxLQztpKyspe2luZGV4PWk+PjI7dGhpcy5fS2VbaW5kZXhdW2klNF09dGtbaV07dGhpcy5fS2Rbcm91bmRzLWluZGV4XVtpJTRdPXRrW2ldfXZhciByY29ucG9pbnRlcj0wO3ZhciB0PUtDLHR0O3doaWxlKHQ8cm91bmRLZXlDb3VudCl7dHQ9dGtbS0MtMV07dGtbMF1ePVNbdHQ+PjE2JjI1NV08PDI0XlNbdHQ+PjgmMjU1XTw8MTZeU1t0dCYyNTVdPDw4XlNbdHQ+PjI0JjI1NV1ecmNvbltyY29ucG9pbnRlcl08PDI0O3Jjb25wb2ludGVyKz0xO2lmKEtDIT04KXtmb3IodmFyIGk9MTtpPEtDO2krKyl7dGtbaV1ePXRrW2ktMV19fWVsc2V7Zm9yKHZhciBpPTE7aTxLQy8yO2krKyl7dGtbaV1ePXRrW2ktMV19dHQ9dGtbS0MvMi0xXTt0a1tLQy8yXV49U1t0dCYyNTVdXlNbdHQ+PjgmMjU1XTw8OF5TW3R0Pj4xNiYyNTVdPDwxNl5TW3R0Pj4yNCYyNTVdPDwyNDtmb3IodmFyIGk9S0MvMisxO2k8S0M7aSsrKXt0a1tpXV49dGtbaS0xXX19dmFyIGk9MCxyLGM7d2hpbGUoaTxLQyYmdDxyb3VuZEtleUNvdW50KXtyPXQ+PjI7Yz10JTQ7dGhpcy5fS2Vbcl1bY109dGtbaV07dGhpcy5fS2Rbcm91bmRzLXJdW2NdPXRrW2krK107dCsrfX1mb3IodmFyIHI9MTtyPHJvdW5kcztyKyspe2Zvcih2YXIgYz0wO2M8NDtjKyspe3R0PXRoaXMuX0tkW3JdW2NdO3RoaXMuX0tkW3JdW2NdPVUxW3R0Pj4yNCYyNTVdXlUyW3R0Pj4xNiYyNTVdXlUzW3R0Pj44JjI1NV1eVTRbdHQmMjU1XX19fTtBRVMucHJvdG90eXBlLmVuY3J5cHQ9ZnVuY3Rpb24ocGxhaW50ZXh0KXtpZihwbGFpbnRleHQubGVuZ3RoIT0xNil7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBsYWludGV4dCBzaXplIChtdXN0IGJlIDE2IGJ5dGVzKSIpfXZhciByb3VuZHM9dGhpcy5fS2UubGVuZ3RoLTE7dmFyIGE9WzAsMCwwLDBdO3ZhciB0PWNvbnZlcnRUb0ludDMyKHBsYWludGV4dCk7Zm9yKHZhciBpPTA7aTw0O2krKyl7dFtpXV49dGhpcy5fS2VbMF1baV19Zm9yKHZhciByPTE7cjxyb3VuZHM7cisrKXtmb3IodmFyIGk9MDtpPDQ7aSsrKXthW2ldPVQxW3RbaV0+PjI0JjI1NV1eVDJbdFsoaSsxKSU0XT4+MTYmMjU1XV5UM1t0WyhpKzIpJTRdPj44JjI1NV1eVDRbdFsoaSszKSU0XSYyNTVdXnRoaXMuX0tlW3JdW2ldfXQ9YS5zbGljZSgpfXZhciByZXN1bHQ9Y3JlYXRlQXJyYXkoMTYpLHR0O2Zvcih2YXIgaT0wO2k8NDtpKyspe3R0PXRoaXMuX0tlW3JvdW5kc11baV07cmVzdWx0WzQqaV09KFNbdFtpXT4+MjQmMjU1XV50dD4+MjQpJjI1NTtyZXN1bHRbNCppKzFdPShTW3RbKGkrMSklNF0+PjE2JjI1NV1edHQ+PjE2KSYyNTU7cmVzdWx0WzQqaSsyXT0oU1t0WyhpKzIpJTRdPj44JjI1NV1edHQ+PjgpJjI1NTtyZXN1bHRbNCppKzNdPShTW3RbKGkrMyklNF0mMjU1XV50dCkmMjU1fXJldHVybiByZXN1bHR9O0FFUy5wcm90b3R5cGUuZGVjcnlwdD1mdW5jdGlvbihjaXBoZXJ0ZXh0KXtpZihjaXBoZXJ0ZXh0Lmxlbmd0aCE9MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBjaXBoZXJ0ZXh0IHNpemUgKG11c3QgYmUgMTYgYnl0ZXMpIil9dmFyIHJvdW5kcz10aGlzLl9LZC5sZW5ndGgtMTt2YXIgYT1bMCwwLDAsMF07dmFyIHQ9Y29udmVydFRvSW50MzIoY2lwaGVydGV4dCk7Zm9yKHZhciBpPTA7aTw0O2krKyl7dFtpXV49dGhpcy5fS2RbMF1baV19Zm9yKHZhciByPTE7cjxyb3VuZHM7cisrKXtmb3IodmFyIGk9MDtpPDQ7aSsrKXthW2ldPVQ1W3RbaV0+PjI0JjI1NV1eVDZbdFsoaSszKSU0XT4+MTYmMjU1XV5UN1t0WyhpKzIpJTRdPj44JjI1NV1eVDhbdFsoaSsxKSU0XSYyNTVdXnRoaXMuX0tkW3JdW2ldfXQ9YS5zbGljZSgpfXZhciByZXN1bHQ9Y3JlYXRlQXJyYXkoMTYpLHR0O2Zvcih2YXIgaT0wO2k8NDtpKyspe3R0PXRoaXMuX0tkW3JvdW5kc11baV07cmVzdWx0WzQqaV09KFNpW3RbaV0+PjI0JjI1NV1edHQ+PjI0KSYyNTU7cmVzdWx0WzQqaSsxXT0oU2lbdFsoaSszKSU0XT4+MTYmMjU1XV50dD4+MTYpJjI1NTtyZXN1bHRbNCppKzJdPShTaVt0WyhpKzIpJTRdPj44JjI1NV1edHQ+PjgpJjI1NTtyZXN1bHRbNCppKzNdPShTaVt0WyhpKzEpJTRdJjI1NV1edHQpJjI1NX1yZXR1cm4gcmVzdWx0fTt2YXIgTW9kZU9mT3BlcmF0aW9uRUNCPWZ1bmN0aW9uKGtleSl7aWYoISh0aGlzIGluc3RhbmNlb2YgTW9kZU9mT3BlcmF0aW9uRUNCKSl7dGhyb3cgRXJyb3IoIkFFUyBtdXN0IGJlIGluc3Rhbml0YXRlZCB3aXRoIGBuZXdgIil9dGhpcy5kZXNjcmlwdGlvbj0iRWxlY3Ryb25pYyBDb2RlIEJsb2NrIjt0aGlzLm5hbWU9ImVjYiI7dGhpcy5fYWVzPW5ldyBBRVMoa2V5KX07TW9kZU9mT3BlcmF0aW9uRUNCLnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBsYWludGV4dCl7cGxhaW50ZXh0PWNvZXJjZUFycmF5KHBsYWludGV4dCk7aWYocGxhaW50ZXh0Lmxlbmd0aCUxNiE9PTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwbGFpbnRleHQgc2l6ZSAobXVzdCBiZSBtdWx0aXBsZSBvZiAxNiBieXRlcykiKX12YXIgY2lwaGVydGV4dD1jcmVhdGVBcnJheShwbGFpbnRleHQubGVuZ3RoKTt2YXIgYmxvY2s9Y3JlYXRlQXJyYXkoMTYpO2Zvcih2YXIgaT0wO2k8cGxhaW50ZXh0Lmxlbmd0aDtpKz0xNil7Y29weUFycmF5KHBsYWludGV4dCxibG9jaywwLGksaSsxNik7YmxvY2s9dGhpcy5fYWVzLmVuY3J5cHQoYmxvY2spO2NvcHlBcnJheShibG9jayxjaXBoZXJ0ZXh0LGkpfXJldHVybiBjaXBoZXJ0ZXh0fTtNb2RlT2ZPcGVyYXRpb25FQ0IucHJvdG90eXBlLmRlY3J5cHQ9ZnVuY3Rpb24oY2lwaGVydGV4dCl7Y2lwaGVydGV4dD1jb2VyY2VBcnJheShjaXBoZXJ0ZXh0KTtpZihjaXBoZXJ0ZXh0Lmxlbmd0aCUxNiE9PTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBjaXBoZXJ0ZXh0IHNpemUgKG11c3QgYmUgbXVsdGlwbGUgb2YgMTYgYnl0ZXMpIil9dmFyIHBsYWludGV4dD1jcmVhdGVBcnJheShjaXBoZXJ0ZXh0Lmxlbmd0aCk7dmFyIGJsb2NrPWNyZWF0ZUFycmF5KDE2KTtmb3IodmFyIGk9MDtpPGNpcGhlcnRleHQubGVuZ3RoO2krPTE2KXtjb3B5QXJyYXkoY2lwaGVydGV4dCxibG9jaywwLGksaSsxNik7YmxvY2s9dGhpcy5fYWVzLmRlY3J5cHQoYmxvY2spO2NvcHlBcnJheShibG9jayxwbGFpbnRleHQsaSl9cmV0dXJuIHBsYWludGV4dH07dmFyIE1vZGVPZk9wZXJhdGlvbkNCQz1mdW5jdGlvbihrZXksaXYpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE1vZGVPZk9wZXJhdGlvbkNCQykpe3Rocm93IEVycm9yKCJBRVMgbXVzdCBiZSBpbnN0YW5pdGF0ZWQgd2l0aCBgbmV3YCIpfXRoaXMuZGVzY3JpcHRpb249IkNpcGhlciBCbG9jayBDaGFpbmluZyI7dGhpcy5uYW1lPSJjYmMiO2lmKCFpdil7aXY9Y3JlYXRlQXJyYXkoMTYpfWVsc2UgaWYoaXYubGVuZ3RoIT0xNil7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGluaXRpYWxhdGlvbiB2ZWN0b3Igc2l6ZSAobXVzdCBiZSAxNiBieXRlcykiKX10aGlzLl9sYXN0Q2lwaGVyYmxvY2s9Y29lcmNlQXJyYXkoaXYsdHJ1ZSk7dGhpcy5fYWVzPW5ldyBBRVMoa2V5KX07TW9kZU9mT3BlcmF0aW9uQ0JDLnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBsYWludGV4dCl7cGxhaW50ZXh0PWNvZXJjZUFycmF5KHBsYWludGV4dCk7aWYocGxhaW50ZXh0Lmxlbmd0aCUxNiE9PTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwbGFpbnRleHQgc2l6ZSAobXVzdCBiZSBtdWx0aXBsZSBvZiAxNiBieXRlcykiKX12YXIgY2lwaGVydGV4dD1jcmVhdGVBcnJheShwbGFpbnRleHQubGVuZ3RoKTt2YXIgYmxvY2s9Y3JlYXRlQXJyYXkoMTYpO2Zvcih2YXIgaT0wO2k8cGxhaW50ZXh0Lmxlbmd0aDtpKz0xNil7Y29weUFycmF5KHBsYWludGV4dCxibG9jaywwLGksaSsxNik7Zm9yKHZhciBqPTA7ajwxNjtqKyspe2Jsb2NrW2pdXj10aGlzLl9sYXN0Q2lwaGVyYmxvY2tbal19dGhpcy5fbGFzdENpcGhlcmJsb2NrPXRoaXMuX2Flcy5lbmNyeXB0KGJsb2NrKTtjb3B5QXJyYXkodGhpcy5fbGFzdENpcGhlcmJsb2NrLGNpcGhlcnRleHQsaSl9cmV0dXJuIGNpcGhlcnRleHR9O01vZGVPZk9wZXJhdGlvbkNCQy5wcm90b3R5cGUuZGVjcnlwdD1mdW5jdGlvbihjaXBoZXJ0ZXh0KXtjaXBoZXJ0ZXh0PWNvZXJjZUFycmF5KGNpcGhlcnRleHQpO2lmKGNpcGhlcnRleHQubGVuZ3RoJTE2IT09MCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNpcGhlcnRleHQgc2l6ZSAobXVzdCBiZSBtdWx0aXBsZSBvZiAxNiBieXRlcykiKX12YXIgcGxhaW50ZXh0PWNyZWF0ZUFycmF5KGNpcGhlcnRleHQubGVuZ3RoKTt2YXIgYmxvY2s9Y3JlYXRlQXJyYXkoMTYpO2Zvcih2YXIgaT0wO2k8Y2lwaGVydGV4dC5sZW5ndGg7aSs9MTYpe2NvcHlBcnJheShjaXBoZXJ0ZXh0LGJsb2NrLDAsaSxpKzE2KTtibG9jaz10aGlzLl9hZXMuZGVjcnlwdChibG9jayk7Zm9yKHZhciBqPTA7ajwxNjtqKyspe3BsYWludGV4dFtpK2pdPWJsb2NrW2pdXnRoaXMuX2xhc3RDaXBoZXJibG9ja1tqXX1jb3B5QXJyYXkoY2lwaGVydGV4dCx0aGlzLl9sYXN0Q2lwaGVyYmxvY2ssMCxpLGkrMTYpfXJldHVybiBwbGFpbnRleHR9O3ZhciBNb2RlT2ZPcGVyYXRpb25DRkI9ZnVuY3Rpb24oa2V5LGl2LHNlZ21lbnRTaXplKXtpZighKHRoaXMgaW5zdGFuY2VvZiBNb2RlT2ZPcGVyYXRpb25DRkIpKXt0aHJvdyBFcnJvcigiQUVTIG11c3QgYmUgaW5zdGFuaXRhdGVkIHdpdGggYG5ld2AiKX10aGlzLmRlc2NyaXB0aW9uPSJDaXBoZXIgRmVlZGJhY2siO3RoaXMubmFtZT0iY2ZiIjtpZighaXYpe2l2PWNyZWF0ZUFycmF5KDE2KX1lbHNlIGlmKGl2Lmxlbmd0aCE9MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBpbml0aWFsYXRpb24gdmVjdG9yIHNpemUgKG11c3QgYmUgMTYgc2l6ZSkiKX1pZighc2VnbWVudFNpemUpe3NlZ21lbnRTaXplPTF9dGhpcy5zZWdtZW50U2l6ZT1zZWdtZW50U2l6ZTt0aGlzLl9zaGlmdFJlZ2lzdGVyPWNvZXJjZUFycmF5KGl2LHRydWUpO3RoaXMuX2Flcz1uZXcgQUVTKGtleSl9O01vZGVPZk9wZXJhdGlvbkNGQi5wcm90b3R5cGUuZW5jcnlwdD1mdW5jdGlvbihwbGFpbnRleHQpe2lmKHBsYWludGV4dC5sZW5ndGgldGhpcy5zZWdtZW50U2l6ZSE9MCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBsYWludGV4dCBzaXplIChtdXN0IGJlIHNlZ21lbnRTaXplIGJ5dGVzKSIpfXZhciBlbmNyeXB0ZWQ9Y29lcmNlQXJyYXkocGxhaW50ZXh0LHRydWUpO3ZhciB4b3JTZWdtZW50O2Zvcih2YXIgaT0wO2k8ZW5jcnlwdGVkLmxlbmd0aDtpKz10aGlzLnNlZ21lbnRTaXplKXt4b3JTZWdtZW50PXRoaXMuX2Flcy5lbmNyeXB0KHRoaXMuX3NoaWZ0UmVnaXN0ZXIpO2Zvcih2YXIgaj0wO2o8dGhpcy5zZWdtZW50U2l6ZTtqKyspe2VuY3J5cHRlZFtpK2pdXj14b3JTZWdtZW50W2pdfWNvcHlBcnJheSh0aGlzLl9zaGlmdFJlZ2lzdGVyLHRoaXMuX3NoaWZ0UmVnaXN0ZXIsMCx0aGlzLnNlZ21lbnRTaXplKTtjb3B5QXJyYXkoZW5jcnlwdGVkLHRoaXMuX3NoaWZ0UmVnaXN0ZXIsMTYtdGhpcy5zZWdtZW50U2l6ZSxpLGkrdGhpcy5zZWdtZW50U2l6ZSl9cmV0dXJuIGVuY3J5cHRlZH07TW9kZU9mT3BlcmF0aW9uQ0ZCLnByb3RvdHlwZS5kZWNyeXB0PWZ1bmN0aW9uKGNpcGhlcnRleHQpe2lmKGNpcGhlcnRleHQubGVuZ3RoJXRoaXMuc2VnbWVudFNpemUhPTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBjaXBoZXJ0ZXh0IHNpemUgKG11c3QgYmUgc2VnbWVudFNpemUgYnl0ZXMpIil9dmFyIHBsYWludGV4dD1jb2VyY2VBcnJheShjaXBoZXJ0ZXh0LHRydWUpO3ZhciB4b3JTZWdtZW50O2Zvcih2YXIgaT0wO2k8cGxhaW50ZXh0Lmxlbmd0aDtpKz10aGlzLnNlZ21lbnRTaXplKXt4b3JTZWdtZW50PXRoaXMuX2Flcy5lbmNyeXB0KHRoaXMuX3NoaWZ0UmVnaXN0ZXIpO2Zvcih2YXIgaj0wO2o8dGhpcy5zZWdtZW50U2l6ZTtqKyspe3BsYWludGV4dFtpK2pdXj14b3JTZWdtZW50W2pdfWNvcHlBcnJheSh0aGlzLl9zaGlmdFJlZ2lzdGVyLHRoaXMuX3NoaWZ0UmVnaXN0ZXIsMCx0aGlzLnNlZ21lbnRTaXplKTtjb3B5QXJyYXkoY2lwaGVydGV4dCx0aGlzLl9zaGlmdFJlZ2lzdGVyLDE2LXRoaXMuc2VnbWVudFNpemUsaSxpK3RoaXMuc2VnbWVudFNpemUpfXJldHVybiBwbGFpbnRleHR9O3ZhciBNb2RlT2ZPcGVyYXRpb25PRkI9ZnVuY3Rpb24oa2V5LGl2KXtpZighKHRoaXMgaW5zdGFuY2VvZiBNb2RlT2ZPcGVyYXRpb25PRkIpKXt0aHJvdyBFcnJvcigiQUVTIG11c3QgYmUgaW5zdGFuaXRhdGVkIHdpdGggYG5ld2AiKX10aGlzLmRlc2NyaXB0aW9uPSJPdXRwdXQgRmVlZGJhY2siO3RoaXMubmFtZT0ib2ZiIjtpZighaXYpe2l2PWNyZWF0ZUFycmF5KDE2KX1lbHNlIGlmKGl2Lmxlbmd0aCE9MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBpbml0aWFsYXRpb24gdmVjdG9yIHNpemUgKG11c3QgYmUgMTYgYnl0ZXMpIil9dGhpcy5fbGFzdFByZWNpcGhlcj1jb2VyY2VBcnJheShpdix0cnVlKTt0aGlzLl9sYXN0UHJlY2lwaGVySW5kZXg9MTY7dGhpcy5fYWVzPW5ldyBBRVMoa2V5KX07TW9kZU9mT3BlcmF0aW9uT0ZCLnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBsYWludGV4dCl7dmFyIGVuY3J5cHRlZD1jb2VyY2VBcnJheShwbGFpbnRleHQsdHJ1ZSk7Zm9yKHZhciBpPTA7aTxlbmNyeXB0ZWQubGVuZ3RoO2krKyl7aWYodGhpcy5fbGFzdFByZWNpcGhlckluZGV4PT09MTYpe3RoaXMuX2xhc3RQcmVjaXBoZXI9dGhpcy5fYWVzLmVuY3J5cHQodGhpcy5fbGFzdFByZWNpcGhlcik7dGhpcy5fbGFzdFByZWNpcGhlckluZGV4PTB9ZW5jcnlwdGVkW2ldXj10aGlzLl9sYXN0UHJlY2lwaGVyW3RoaXMuX2xhc3RQcmVjaXBoZXJJbmRleCsrXX1yZXR1cm4gZW5jcnlwdGVkfTtNb2RlT2ZPcGVyYXRpb25PRkIucHJvdG90eXBlLmRlY3J5cHQ9TW9kZU9mT3BlcmF0aW9uT0ZCLnByb3RvdHlwZS5lbmNyeXB0O3ZhciBDb3VudGVyPWZ1bmN0aW9uKGluaXRpYWxWYWx1ZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgQ291bnRlcikpe3Rocm93IEVycm9yKCJDb3VudGVyIG11c3QgYmUgaW5zdGFuaXRhdGVkIHdpdGggYG5ld2AiKX1pZihpbml0aWFsVmFsdWUhPT0wJiYhaW5pdGlhbFZhbHVlKXtpbml0aWFsVmFsdWU9MX1pZih0eXBlb2YgaW5pdGlhbFZhbHVlPT09Im51bWJlciIpe3RoaXMuX2NvdW50ZXI9Y3JlYXRlQXJyYXkoMTYpO3RoaXMuc2V0VmFsdWUoaW5pdGlhbFZhbHVlKX1lbHNle3RoaXMuc2V0Qnl0ZXMoaW5pdGlhbFZhbHVlKX19O0NvdW50ZXIucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyInx8cGFyc2VJbnQodmFsdWUpIT12YWx1ZSl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvdW50ZXIgdmFsdWUgKG11c3QgYmUgYW4gaW50ZWdlcikiKX1mb3IodmFyIGluZGV4PTE1O2luZGV4Pj0wOy0taW5kZXgpe3RoaXMuX2NvdW50ZXJbaW5kZXhdPXZhbHVlJTI1Njt2YWx1ZT12YWx1ZT4+OH19O0NvdW50ZXIucHJvdG90eXBlLnNldEJ5dGVzPWZ1bmN0aW9uKGJ5dGVzKXtieXRlcz1jb2VyY2VBcnJheShieXRlcyx0cnVlKTtpZihieXRlcy5sZW5ndGghPTE2KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY291bnRlciBieXRlcyBzaXplIChtdXN0IGJlIDE2IGJ5dGVzKSIpfXRoaXMuX2NvdW50ZXI9Ynl0ZXN9O0NvdW50ZXIucHJvdG90eXBlLmluY3JlbWVudD1mdW5jdGlvbigpe2Zvcih2YXIgaT0xNTtpPj0wO2ktLSl7aWYodGhpcy5fY291bnRlcltpXT09PTI1NSl7dGhpcy5fY291bnRlcltpXT0wfWVsc2V7dGhpcy5fY291bnRlcltpXSsrO2JyZWFrfX19O3ZhciBNb2RlT2ZPcGVyYXRpb25DVFI9ZnVuY3Rpb24oa2V5LGNvdW50ZXIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE1vZGVPZk9wZXJhdGlvbkNUUikpe3Rocm93IEVycm9yKCJBRVMgbXVzdCBiZSBpbnN0YW5pdGF0ZWQgd2l0aCBgbmV3YCIpfXRoaXMuZGVzY3JpcHRpb249IkNvdW50ZXIiO3RoaXMubmFtZT0iY3RyIjtpZighKGNvdW50ZXIgaW5zdGFuY2VvZiBDb3VudGVyKSl7Y291bnRlcj1uZXcgQ291bnRlcihjb3VudGVyKX10aGlzLl9jb3VudGVyPWNvdW50ZXI7dGhpcy5fcmVtYWluaW5nQ291bnRlcj1udWxsO3RoaXMuX3JlbWFpbmluZ0NvdW50ZXJJbmRleD0xNjt0aGlzLl9hZXM9bmV3IEFFUyhrZXkpfTtNb2RlT2ZPcGVyYXRpb25DVFIucHJvdG90eXBlLmVuY3J5cHQ9ZnVuY3Rpb24ocGxhaW50ZXh0KXt2YXIgZW5jcnlwdGVkPWNvZXJjZUFycmF5KHBsYWludGV4dCx0cnVlKTtmb3IodmFyIGk9MDtpPGVuY3J5cHRlZC5sZW5ndGg7aSsrKXtpZih0aGlzLl9yZW1haW5pbmdDb3VudGVySW5kZXg9PT0xNil7dGhpcy5fcmVtYWluaW5nQ291bnRlcj10aGlzLl9hZXMuZW5jcnlwdCh0aGlzLl9jb3VudGVyLl9jb3VudGVyKTt0aGlzLl9yZW1haW5pbmdDb3VudGVySW5kZXg9MDt0aGlzLl9jb3VudGVyLmluY3JlbWVudCgpfWVuY3J5cHRlZFtpXV49dGhpcy5fcmVtYWluaW5nQ291bnRlclt0aGlzLl9yZW1haW5pbmdDb3VudGVySW5kZXgrK119cmV0dXJuIGVuY3J5cHRlZH07TW9kZU9mT3BlcmF0aW9uQ1RSLnByb3RvdHlwZS5kZWNyeXB0PU1vZGVPZk9wZXJhdGlvbkNUUi5wcm90b3R5cGUuZW5jcnlwdDtmdW5jdGlvbiBwa2NzN3BhZChkYXRhKXtkYXRhPWNvZXJjZUFycmF5KGRhdGEsdHJ1ZSk7dmFyIHBhZGRlcj0xNi1kYXRhLmxlbmd0aCUxNjt2YXIgcmVzdWx0PWNyZWF0ZUFycmF5KGRhdGEubGVuZ3RoK3BhZGRlcik7Y29weUFycmF5KGRhdGEscmVzdWx0KTtmb3IodmFyIGk9ZGF0YS5sZW5ndGg7aTxyZXN1bHQubGVuZ3RoO2krKyl7cmVzdWx0W2ldPXBhZGRlcn1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHBrY3M3c3RyaXAoZGF0YSl7ZGF0YT1jb2VyY2VBcnJheShkYXRhLHRydWUpO2lmKGRhdGEubGVuZ3RoPDE2KXt0aHJvdyBuZXcgRXJyb3IoIlBLQ1MjNyBpbnZhbGlkIGxlbmd0aCIpfXZhciBwYWRkZXI9ZGF0YVtkYXRhLmxlbmd0aC0xXTtpZihwYWRkZXI+MTYpe3Rocm93IG5ldyBFcnJvcigiUEtDUyM3IHBhZGRpbmcgYnl0ZSBvdXQgb2YgcmFuZ2UiKX12YXIgbGVuZ3RoPWRhdGEubGVuZ3RoLXBhZGRlcjtmb3IodmFyIGk9MDtpPHBhZGRlcjtpKyspe2lmKGRhdGFbbGVuZ3RoK2ldIT09cGFkZGVyKXt0aHJvdyBuZXcgRXJyb3IoIlBLQ1MjNyBpbnZhbGlkIHBhZGRpbmcgYnl0ZSIpfX12YXIgcmVzdWx0PWNyZWF0ZUFycmF5KGxlbmd0aCk7Y29weUFycmF5KGRhdGEscmVzdWx0LDAsMCxsZW5ndGgpO3JldHVybiByZXN1bHR9dmFyIGFlc2pzPXtBRVM6QUVTLENvdW50ZXI6Q291bnRlcixNb2RlT2ZPcGVyYXRpb246e2VjYjpNb2RlT2ZPcGVyYXRpb25FQ0IsY2JjOk1vZGVPZk9wZXJhdGlvbkNCQyxjZmI6TW9kZU9mT3BlcmF0aW9uQ0ZCLG9mYjpNb2RlT2ZPcGVyYXRpb25PRkIsY3RyOk1vZGVPZk9wZXJhdGlvbkNUUn0sdXRpbHM6e2hleDpjb252ZXJ0SGV4LHV0Zjg6Y29udmVydFV0Zjh9LHBhZGRpbmc6e3BrY3M3OntwYWQ6cGtjczdwYWQsc3RyaXA6cGtjczdzdHJpcH19LF9hcnJheVRlc3Q6e2NvZXJjZUFycmF5OmNvZXJjZUFycmF5LGNyZWF0ZUFycmF5OmNyZWF0ZUFycmF5LGNvcHlBcnJheTpjb3B5QXJyYXl9fTtpZigib2JqZWN0IiE9PSJ1bmRlZmluZWQiKXttb2R1bGUuZXhwb3J0cz1hZXNqc31lbHNlIGlmKHR5cGVvZiB1bmRlZmluZWQ9PT0iZnVuY3Rpb24iJiZ1bmRlZmluZWQuYW1kKXt1bmRlZmluZWQoYWVzanMpfWVsc2V7aWYocm9vdC5hZXNqcyl7YWVzanMuX2Flc2pzPXJvb3QuYWVzanN9cm9vdC5hZXNqcz1hZXNqc319KShjb21tb25qc0dsb2JhbCl9KTt2YXIgX3ZlcnNpb24kQT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJqc29uLXdhbGxldHMvNS4yLjAifSk7dmFyIF92ZXJzaW9uJEI9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kQSk7dmFyIHV0aWxzJDE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnV1aWRWND1leHBvcnRzLnNlYXJjaFBhdGg9ZXhwb3J0cy5nZXRQYXNzd29yZD1leHBvcnRzLnpwYWQ9ZXhwb3J0cy5sb29zZUFycmF5aWZ5PXZvaWQgMDtmdW5jdGlvbiBsb29zZUFycmF5aWZ5KGhleFN0cmluZyl7aWYodHlwZW9mIGhleFN0cmluZz09PSJzdHJpbmciJiZoZXhTdHJpbmcuc3Vic3RyaW5nKDAsMikhPT0iMHgiKXtoZXhTdHJpbmc9IjB4IitoZXhTdHJpbmd9cmV0dXJuIGxpYiQxLmFycmF5aWZ5KGhleFN0cmluZyl9ZXhwb3J0cy5sb29zZUFycmF5aWZ5PWxvb3NlQXJyYXlpZnk7ZnVuY3Rpb24genBhZCh2YWx1ZSxsZW5ndGgpe3ZhbHVlPVN0cmluZyh2YWx1ZSk7d2hpbGUodmFsdWUubGVuZ3RoPGxlbmd0aCl7dmFsdWU9IjAiK3ZhbHVlfXJldHVybiB2YWx1ZX1leHBvcnRzLnpwYWQ9enBhZDtmdW5jdGlvbiBnZXRQYXNzd29yZChwYXNzd29yZCl7aWYodHlwZW9mIHBhc3N3b3JkPT09InN0cmluZyIpe3JldHVybiBsaWIkOC50b1V0ZjhCeXRlcyhwYXNzd29yZCxsaWIkOC5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm0uTkZLQyl9cmV0dXJuIGxpYiQxLmFycmF5aWZ5KHBhc3N3b3JkKX1leHBvcnRzLmdldFBhc3N3b3JkPWdldFBhc3N3b3JkO2Z1bmN0aW9uIHNlYXJjaFBhdGgob2JqZWN0LHBhdGgpe3ZhciBjdXJyZW50Q2hpbGQ9b2JqZWN0O3ZhciBjb21wcz1wYXRoLnRvTG93ZXJDYXNlKCkuc3BsaXQoIi8iKTtmb3IodmFyIGk9MDtpPGNvbXBzLmxlbmd0aDtpKyspe3ZhciBtYXRjaGluZ0NoaWxkPW51bGw7Zm9yKHZhciBrZXkgaW4gY3VycmVudENoaWxkKXtpZihrZXkudG9Mb3dlckNhc2UoKT09PWNvbXBzW2ldKXttYXRjaGluZ0NoaWxkPWN1cnJlbnRDaGlsZFtrZXldO2JyZWFrfX1pZihtYXRjaGluZ0NoaWxkPT09bnVsbCl7cmV0dXJuIG51bGx9Y3VycmVudENoaWxkPW1hdGNoaW5nQ2hpbGR9cmV0dXJuIGN1cnJlbnRDaGlsZH1leHBvcnRzLnNlYXJjaFBhdGg9c2VhcmNoUGF0aDtmdW5jdGlvbiB1dWlkVjQocmFuZG9tQnl0ZXMpe3ZhciBieXRlcz1saWIkMS5hcnJheWlmeShyYW5kb21CeXRlcyk7Ynl0ZXNbNl09Ynl0ZXNbNl0mMTV8NjQ7Ynl0ZXNbOF09Ynl0ZXNbOF0mNjN8MTI4O3ZhciB2YWx1ZT1saWIkMS5oZXhsaWZ5KGJ5dGVzKTtyZXR1cm5bdmFsdWUuc3Vic3RyaW5nKDIsMTApLHZhbHVlLnN1YnN0cmluZygxMCwxNCksdmFsdWUuc3Vic3RyaW5nKDE0LDE4KSx2YWx1ZS5zdWJzdHJpbmcoMTgsMjIpLHZhbHVlLnN1YnN0cmluZygyMiwzNCldLmpvaW4oIi0iKX1leHBvcnRzLnV1aWRWND11dWlkVjR9KTt2YXIgdXRpbHMkMj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh1dGlscyQxKTt2YXIgY3Jvd2RzYWxlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2ltcG9ydERlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24obW9kKXtyZXR1cm4gbW9kJiZtb2QuX19lc01vZHVsZT9tb2Q6e2RlZmF1bHQ6bW9kfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5kZWNyeXB0PWV4cG9ydHMuQ3Jvd2RzYWxlQWNjb3VudD12b2lkIDA7dmFyIGFlc19qc18xPV9faW1wb3J0RGVmYXVsdChhZXNKcyk7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRBLnZlcnNpb24pO3ZhciBDcm93ZHNhbGVBY2NvdW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKENyb3dkc2FsZUFjY291bnQsX3N1cGVyKTtmdW5jdGlvbiBDcm93ZHNhbGVBY2NvdW50KCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9Q3Jvd2RzYWxlQWNjb3VudC5wcm90b3R5cGUuaXNDcm93ZHNhbGVBY2NvdW50PWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSYmdmFsdWUuX2lzQ3Jvd2RzYWxlQWNjb3VudCl9O3JldHVybiBDcm93ZHNhbGVBY2NvdW50fShsaWIkMy5EZXNjcmlwdGlvbik7ZXhwb3J0cy5Dcm93ZHNhbGVBY2NvdW50PUNyb3dkc2FsZUFjY291bnQ7ZnVuY3Rpb24gZGVjcnlwdChqc29uLHBhc3N3b3JkKXt2YXIgZGF0YT1KU09OLnBhcnNlKGpzb24pO3Bhc3N3b3JkPXV0aWxzJDEuZ2V0UGFzc3dvcmQocGFzc3dvcmQpO3ZhciBldGhhZGRyPWxpYiQ2LmdldEFkZHJlc3ModXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsImV0aGFkZHIiKSk7dmFyIGVuY3NlZWQ9dXRpbHMkMS5sb29zZUFycmF5aWZ5KHV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJlbmNzZWVkIikpO2lmKCFlbmNzZWVkfHxlbmNzZWVkLmxlbmd0aCUxNiE9PTApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZW5jc2VlZCIsImpzb24iLGpzb24pfXZhciBrZXk9bGliJDEuYXJyYXlpZnkobGliJGkucGJrZGYyKHBhc3N3b3JkLHBhc3N3b3JkLDJlMywzMiwic2hhMjU2IikpLnNsaWNlKDAsMTYpO3ZhciBpdj1lbmNzZWVkLnNsaWNlKDAsMTYpO3ZhciBlbmNyeXB0ZWRTZWVkPWVuY3NlZWQuc2xpY2UoMTYpO3ZhciBhZXNDYmM9bmV3IGFlc19qc18xLmRlZmF1bHQuTW9kZU9mT3BlcmF0aW9uLmNiYyhrZXksaXYpO3ZhciBzZWVkPWFlc19qc18xLmRlZmF1bHQucGFkZGluZy5wa2NzNy5zdHJpcChsaWIkMS5hcnJheWlmeShhZXNDYmMuZGVjcnlwdChlbmNyeXB0ZWRTZWVkKSkpO3ZhciBzZWVkSGV4PSIiO2Zvcih2YXIgaT0wO2k8c2VlZC5sZW5ndGg7aSsrKXtzZWVkSGV4Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHNlZWRbaV0pfXZhciBzZWVkSGV4Qnl0ZXM9bGliJDgudG9VdGY4Qnl0ZXMoc2VlZEhleCk7dmFyIHByaXZhdGVLZXk9bGliJDQua2VjY2FrMjU2KHNlZWRIZXhCeXRlcyk7cmV0dXJuIG5ldyBDcm93ZHNhbGVBY2NvdW50KHtfaXNDcm93ZHNhbGVBY2NvdW50OnRydWUsYWRkcmVzczpldGhhZGRyLHByaXZhdGVLZXk6cHJpdmF0ZUtleX0pfWV4cG9ydHMuZGVjcnlwdD1kZWNyeXB0fSk7dmFyIGNyb3dkc2FsZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGNyb3dkc2FsZSk7dmFyIGluc3BlY3Q9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmdldEpzb25XYWxsZXRBZGRyZXNzPWV4cG9ydHMuaXNLZXlzdG9yZVdhbGxldD1leHBvcnRzLmlzQ3Jvd2RzYWxlV2FsbGV0PXZvaWQgMDtmdW5jdGlvbiBpc0Nyb3dkc2FsZVdhbGxldChqc29uKXt2YXIgZGF0YT1udWxsO3RyeXtkYXRhPUpTT04ucGFyc2UoanNvbil9Y2F0Y2goZXJyb3Ipe3JldHVybiBmYWxzZX1yZXR1cm4gZGF0YS5lbmNzZWVkJiZkYXRhLmV0aGFkZHJ9ZXhwb3J0cy5pc0Nyb3dkc2FsZVdhbGxldD1pc0Nyb3dkc2FsZVdhbGxldDtmdW5jdGlvbiBpc0tleXN0b3JlV2FsbGV0KGpzb24pe3ZhciBkYXRhPW51bGw7dHJ5e2RhdGE9SlNPTi5wYXJzZShqc29uKX1jYXRjaChlcnJvcil7cmV0dXJuIGZhbHNlfWlmKCFkYXRhLnZlcnNpb258fHBhcnNlSW50KGRhdGEudmVyc2lvbikhPT1kYXRhLnZlcnNpb258fHBhcnNlSW50KGRhdGEudmVyc2lvbikhPT0zKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZXhwb3J0cy5pc0tleXN0b3JlV2FsbGV0PWlzS2V5c3RvcmVXYWxsZXQ7ZnVuY3Rpb24gZ2V0SnNvbldhbGxldEFkZHJlc3MoanNvbil7aWYoaXNDcm93ZHNhbGVXYWxsZXQoanNvbikpe3RyeXtyZXR1cm4gbGliJDYuZ2V0QWRkcmVzcyhKU09OLnBhcnNlKGpzb24pLmV0aGFkZHIpfWNhdGNoKGVycm9yKXtyZXR1cm4gbnVsbH19aWYoaXNLZXlzdG9yZVdhbGxldChqc29uKSl7dHJ5e3JldHVybiBsaWIkNi5nZXRBZGRyZXNzKEpTT04ucGFyc2UoanNvbikuYWRkcmVzcyl9Y2F0Y2goZXJyb3Ipe3JldHVybiBudWxsfX1yZXR1cm4gbnVsbH1leHBvcnRzLmdldEpzb25XYWxsZXRBZGRyZXNzPWdldEpzb25XYWxsZXRBZGRyZXNzfSk7dmFyIGluc3BlY3QkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhpbnNwZWN0KTt2YXIgc2NyeXB0PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHJvb3Qpe2NvbnN0IE1BWF9WQUxVRT0yMTQ3NDgzNjQ3O2Z1bmN0aW9uIFNIQTI1NihtKXtjb25zdCBLPW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSk7bGV0IGgwPTE3NzkwMzM3MDMsaDE9MzE0NDEzNDI3NyxoMj0xMDEzOTA0MjQyLGgzPTI3NzM0ODA3NjI7bGV0IGg0PTEzNTk4OTMxMTksaDU9MjYwMDgyMjkyNCxoNj01Mjg3MzQ2MzUsaDc9MTU0MTQ1OTIyNTtjb25zdCB3PW5ldyBVaW50MzJBcnJheSg2NCk7ZnVuY3Rpb24gYmxvY2tzKHApe2xldCBvZmY9MCxsZW49cC5sZW5ndGg7d2hpbGUobGVuPj02NCl7bGV0IGE9aDAsYj1oMSxjPWgyLGQ9aDMsZT1oNCxmPWg1LGc9aDYsaD1oNyx1LGksaix0MSx0Mjtmb3IoaT0wO2k8MTY7aSsrKXtqPW9mZitpKjQ7d1tpXT0ocFtqXSYyNTUpPDwyNHwocFtqKzFdJjI1NSk8PDE2fChwW2orMl0mMjU1KTw8OHxwW2orM10mMjU1fWZvcihpPTE2O2k8NjQ7aSsrKXt1PXdbaS0yXTt0MT0odT4+PjE3fHU8PDMyLTE3KV4odT4+PjE5fHU8PDMyLTE5KV51Pj4+MTA7dT13W2ktMTVdO3QyPSh1Pj4+N3x1PDwzMi03KV4odT4+PjE4fHU8PDMyLTE4KV51Pj4+Mzt3W2ldPSh0MSt3W2ktN118MCkrKHQyK3dbaS0xNl18MCl8MH1mb3IoaT0wO2k8NjQ7aSsrKXt0MT0oKChlPj4+NnxlPDwzMi02KV4oZT4+PjExfGU8PDMyLTExKV4oZT4+PjI1fGU8PDMyLTI1KSkrKGUmZl5+ZSZnKXwwKSsoaCsoS1tpXSt3W2ldfDApfDApfDA7dDI9KChhPj4+MnxhPDwzMi0yKV4oYT4+PjEzfGE8PDMyLTEzKV4oYT4+PjIyfGE8PDMyLTIyKSkrKGEmYl5hJmNeYiZjKXwwO2g9ZztnPWY7Zj1lO2U9ZCt0MXwwO2Q9YztjPWI7Yj1hO2E9dDErdDJ8MH1oMD1oMCthfDA7aDE9aDErYnwwO2gyPWgyK2N8MDtoMz1oMytkfDA7aDQ9aDQrZXwwO2g1PWg1K2Z8MDtoNj1oNitnfDA7aDc9aDcraHwwO29mZis9NjQ7bGVuLT02NH19YmxvY2tzKG0pO2xldCBpLGJ5dGVzTGVmdD1tLmxlbmd0aCU2NCxiaXRMZW5IaT1tLmxlbmd0aC81MzY4NzA5MTJ8MCxiaXRMZW5Mbz1tLmxlbmd0aDw8MyxudW1aZXJvcz1ieXRlc0xlZnQ8NTY/NTY6MTIwLHA9bS5zbGljZShtLmxlbmd0aC1ieXRlc0xlZnQsbS5sZW5ndGgpO3AucHVzaCgxMjgpO2ZvcihpPWJ5dGVzTGVmdCsxO2k8bnVtWmVyb3M7aSsrKXtwLnB1c2goMCl9cC5wdXNoKGJpdExlbkhpPj4+MjQmMjU1KTtwLnB1c2goYml0TGVuSGk+Pj4xNiYyNTUpO3AucHVzaChiaXRMZW5IaT4+PjgmMjU1KTtwLnB1c2goYml0TGVuSGk+Pj4wJjI1NSk7cC5wdXNoKGJpdExlbkxvPj4+MjQmMjU1KTtwLnB1c2goYml0TGVuTG8+Pj4xNiYyNTUpO3AucHVzaChiaXRMZW5Mbz4+PjgmMjU1KTtwLnB1c2goYml0TGVuTG8+Pj4wJjI1NSk7YmxvY2tzKHApO3JldHVybltoMD4+PjI0JjI1NSxoMD4+PjE2JjI1NSxoMD4+PjgmMjU1LGgwPj4+MCYyNTUsaDE+Pj4yNCYyNTUsaDE+Pj4xNiYyNTUsaDE+Pj44JjI1NSxoMT4+PjAmMjU1LGgyPj4+MjQmMjU1LGgyPj4+MTYmMjU1LGgyPj4+OCYyNTUsaDI+Pj4wJjI1NSxoMz4+PjI0JjI1NSxoMz4+PjE2JjI1NSxoMz4+PjgmMjU1LGgzPj4+MCYyNTUsaDQ+Pj4yNCYyNTUsaDQ+Pj4xNiYyNTUsaDQ+Pj44JjI1NSxoND4+PjAmMjU1LGg1Pj4+MjQmMjU1LGg1Pj4+MTYmMjU1LGg1Pj4+OCYyNTUsaDU+Pj4wJjI1NSxoNj4+PjI0JjI1NSxoNj4+PjE2JjI1NSxoNj4+PjgmMjU1LGg2Pj4+MCYyNTUsaDc+Pj4yNCYyNTUsaDc+Pj4xNiYyNTUsaDc+Pj44JjI1NSxoNz4+PjAmMjU1XX1mdW5jdGlvbiBQQktERjJfSE1BQ19TSEEyNTZfT25lSXRlcihwYXNzd29yZCxzYWx0LGRrTGVuKXtwYXNzd29yZD1wYXNzd29yZC5sZW5ndGg8PTY0P3Bhc3N3b3JkOlNIQTI1NihwYXNzd29yZCk7Y29uc3QgaW5uZXJMZW49NjQrc2FsdC5sZW5ndGgrNDtjb25zdCBpbm5lcj1uZXcgQXJyYXkoaW5uZXJMZW4pO2NvbnN0IG91dGVyS2V5PW5ldyBBcnJheSg2NCk7bGV0IGk7bGV0IGRrPVtdO2ZvcihpPTA7aTw2NDtpKyspe2lubmVyW2ldPTU0fWZvcihpPTA7aTxwYXNzd29yZC5sZW5ndGg7aSsrKXtpbm5lcltpXV49cGFzc3dvcmRbaV19Zm9yKGk9MDtpPHNhbHQubGVuZ3RoO2krKyl7aW5uZXJbNjQraV09c2FsdFtpXX1mb3IoaT1pbm5lckxlbi00O2k8aW5uZXJMZW47aSsrKXtpbm5lcltpXT0wfWZvcihpPTA7aTw2NDtpKyspb3V0ZXJLZXlbaV09OTI7Zm9yKGk9MDtpPHBhc3N3b3JkLmxlbmd0aDtpKyspb3V0ZXJLZXlbaV1ePXBhc3N3b3JkW2ldO2Z1bmN0aW9uIGluY3JlbWVudENvdW50ZXIoKXtmb3IobGV0IGk9aW5uZXJMZW4tMTtpPj1pbm5lckxlbi00O2ktLSl7aW5uZXJbaV0rKztpZihpbm5lcltpXTw9MjU1KXJldHVybjtpbm5lcltpXT0wfX13aGlsZShka0xlbj49MzIpe2luY3JlbWVudENvdW50ZXIoKTtkaz1kay5jb25jYXQoU0hBMjU2KG91dGVyS2V5LmNvbmNhdChTSEEyNTYoaW5uZXIpKSkpO2RrTGVuLT0zMn1pZihka0xlbj4wKXtpbmNyZW1lbnRDb3VudGVyKCk7ZGs9ZGsuY29uY2F0KFNIQTI1NihvdXRlcktleS5jb25jYXQoU0hBMjU2KGlubmVyKSkpLnNsaWNlKDAsZGtMZW4pKX1yZXR1cm4gZGt9ZnVuY3Rpb24gYmxvY2ttaXhfc2Fsc2E4KEJZLFlpLHIseCxfWCl7bGV0IGk7YXJyYXljb3B5KEJZLCgyKnItMSkqMTYsX1gsMCwxNik7Zm9yKGk9MDtpPDIqcjtpKyspe2Jsb2NreG9yKEJZLGkqMTYsX1gsMTYpO3NhbHNhMjBfOChfWCx4KTthcnJheWNvcHkoX1gsMCxCWSxZaStpKjE2LDE2KX1mb3IoaT0wO2k8cjtpKyspe2FycmF5Y29weShCWSxZaStpKjIqMTYsQlksaSoxNiwxNil9Zm9yKGk9MDtpPHI7aSsrKXthcnJheWNvcHkoQlksWWkrKGkqMisxKSoxNixCWSwoaStyKSoxNiwxNil9fWZ1bmN0aW9uIFIoYSxiKXtyZXR1cm4gYTw8YnxhPj4+MzItYn1mdW5jdGlvbiBzYWxzYTIwXzgoQix4KXthcnJheWNvcHkoQiwwLHgsMCwxNik7Zm9yKGxldCBpPTg7aT4wO2ktPTIpe3hbNF1ePVIoeFswXSt4WzEyXSw3KTt4WzhdXj1SKHhbNF0reFswXSw5KTt4WzEyXV49Uih4WzhdK3hbNF0sMTMpO3hbMF1ePVIoeFsxMl0reFs4XSwxOCk7eFs5XV49Uih4WzVdK3hbMV0sNyk7eFsxM11ePVIoeFs5XSt4WzVdLDkpO3hbMV1ePVIoeFsxM10reFs5XSwxMyk7eFs1XV49Uih4WzFdK3hbMTNdLDE4KTt4WzE0XV49Uih4WzEwXSt4WzZdLDcpO3hbMl1ePVIoeFsxNF0reFsxMF0sOSk7eFs2XV49Uih4WzJdK3hbMTRdLDEzKTt4WzEwXV49Uih4WzZdK3hbMl0sMTgpO3hbM11ePVIoeFsxNV0reFsxMV0sNyk7eFs3XV49Uih4WzNdK3hbMTVdLDkpO3hbMTFdXj1SKHhbN10reFszXSwxMyk7eFsxNV1ePVIoeFsxMV0reFs3XSwxOCk7eFsxXV49Uih4WzBdK3hbM10sNyk7eFsyXV49Uih4WzFdK3hbMF0sOSk7eFszXV49Uih4WzJdK3hbMV0sMTMpO3hbMF1ePVIoeFszXSt4WzJdLDE4KTt4WzZdXj1SKHhbNV0reFs0XSw3KTt4WzddXj1SKHhbNl0reFs1XSw5KTt4WzRdXj1SKHhbN10reFs2XSwxMyk7eFs1XV49Uih4WzRdK3hbN10sMTgpO3hbMTFdXj1SKHhbMTBdK3hbOV0sNyk7eFs4XV49Uih4WzExXSt4WzEwXSw5KTt4WzldXj1SKHhbOF0reFsxMV0sMTMpO3hbMTBdXj1SKHhbOV0reFs4XSwxOCk7eFsxMl1ePVIoeFsxNV0reFsxNF0sNyk7eFsxM11ePVIoeFsxMl0reFsxNV0sOSk7eFsxNF1ePVIoeFsxM10reFsxMl0sMTMpO3hbMTVdXj1SKHhbMTRdK3hbMTNdLDE4KX1mb3IobGV0IGk9MDtpPDE2OysraSl7QltpXSs9eFtpXX19ZnVuY3Rpb24gYmxvY2t4b3IoUyxTaSxELGxlbil7Zm9yKGxldCBpPTA7aTxsZW47aSsrKXtEW2ldXj1TW1NpK2ldfX1mdW5jdGlvbiBhcnJheWNvcHkoc3JjLHNyY1BvcyxkZXN0LGRlc3RQb3MsbGVuZ3RoKXt3aGlsZShsZW5ndGgtLSl7ZGVzdFtkZXN0UG9zKytdPXNyY1tzcmNQb3MrK119fWZ1bmN0aW9uIGNoZWNrQnVmZmVyaXNoKG8pe2lmKCFvfHx0eXBlb2Ygby5sZW5ndGghPT0ibnVtYmVyIil7cmV0dXJuIGZhbHNlfWZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKXtjb25zdCB2PW9baV07aWYodHlwZW9mIHYhPT0ibnVtYmVyInx8diUxfHx2PDB8fHY+PTI1Nil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1mdW5jdGlvbiBlbnN1cmVJbnRlZ2VyKHZhbHVlLG5hbWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIifHx2YWx1ZSUxKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgIituYW1lKX1yZXR1cm4gdmFsdWV9ZnVuY3Rpb24gX3NjcnlwdChwYXNzd29yZCxzYWx0LE4scixwLGRrTGVuLGNhbGxiYWNrKXtOPWVuc3VyZUludGVnZXIoTiwiTiIpO3I9ZW5zdXJlSW50ZWdlcihyLCJyIik7cD1lbnN1cmVJbnRlZ2VyKHAsInAiKTtka0xlbj1lbnN1cmVJbnRlZ2VyKGRrTGVuLCJka0xlbiIpO2lmKE49PT0wfHwoTiZOLTEpIT09MCl7dGhyb3cgbmV3IEVycm9yKCJOIG11c3QgYmUgcG93ZXIgb2YgMiIpfWlmKE4+TUFYX1ZBTFVFLzEyOC9yKXt0aHJvdyBuZXcgRXJyb3IoIk4gdG9vIGxhcmdlIil9aWYocj5NQVhfVkFMVUUvMTI4L3Ape3Rocm93IG5ldyBFcnJvcigiciB0b28gbGFyZ2UiKX1pZighY2hlY2tCdWZmZXJpc2gocGFzc3dvcmQpKXt0aHJvdyBuZXcgRXJyb3IoInBhc3N3b3JkIG11c3QgYmUgYW4gYXJyYXkgb3IgYnVmZmVyIil9cGFzc3dvcmQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocGFzc3dvcmQpO2lmKCFjaGVja0J1ZmZlcmlzaChzYWx0KSl7dGhyb3cgbmV3IEVycm9yKCJzYWx0IG11c3QgYmUgYW4gYXJyYXkgb3IgYnVmZmVyIil9c2FsdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChzYWx0KTtsZXQgYj1QQktERjJfSE1BQ19TSEEyNTZfT25lSXRlcihwYXNzd29yZCxzYWx0LHAqMTI4KnIpO2NvbnN0IEI9bmV3IFVpbnQzMkFycmF5KHAqMzIqcik7Zm9yKGxldCBpPTA7aTxCLmxlbmd0aDtpKyspe2NvbnN0IGo9aSo0O0JbaV09KGJbaiszXSYyNTUpPDwyNHwoYltqKzJdJjI1NSk8PDE2fChiW2orMV0mMjU1KTw8OHwoYltqKzBdJjI1NSk8PDB9Y29uc3QgWFk9bmV3IFVpbnQzMkFycmF5KDY0KnIpO2NvbnN0IFY9bmV3IFVpbnQzMkFycmF5KDMyKnIqTik7Y29uc3QgWWk9MzIqcjtjb25zdCB4PW5ldyBVaW50MzJBcnJheSgxNik7Y29uc3QgX1g9bmV3IFVpbnQzMkFycmF5KDE2KTtjb25zdCB0b3RhbE9wcz1wKk4qMjtsZXQgY3VycmVudE9wPTA7bGV0IGxhc3RQZXJjZW50MTA9bnVsbDtsZXQgc3RvcD1mYWxzZTtsZXQgc3RhdGU9MDtsZXQgaTA9MCxpMTtsZXQgQmk7Y29uc3QgbGltaXQ9Y2FsbGJhY2s/cGFyc2VJbnQoMWUzL3IpOjQyOTQ5NjcyOTU7Y29uc3QgbmV4dFRpY2s9dHlwZW9mIHNldEltbWVkaWF0ZSE9PSJ1bmRlZmluZWQiP3NldEltbWVkaWF0ZTpzZXRUaW1lb3V0O2NvbnN0IGluY3JlbWVudGFsU01peD1mdW5jdGlvbigpe2lmKHN0b3Ape3JldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoImNhbmNlbGxlZCIpLGN1cnJlbnRPcC90b3RhbE9wcyl9bGV0IHN0ZXBzO3N3aXRjaChzdGF0ZSl7Y2FzZSAwOkJpPWkwKjMyKnI7YXJyYXljb3B5KEIsQmksWFksMCxZaSk7c3RhdGU9MTtpMT0wO2Nhc2UgMTpzdGVwcz1OLWkxO2lmKHN0ZXBzPmxpbWl0KXtzdGVwcz1saW1pdH1mb3IobGV0IGk9MDtpPHN0ZXBzO2krKyl7YXJyYXljb3B5KFhZLDAsViwoaTEraSkqWWksWWkpO2Jsb2NrbWl4X3NhbHNhOChYWSxZaSxyLHgsX1gpfWkxKz1zdGVwcztjdXJyZW50T3ArPXN0ZXBzO2lmKGNhbGxiYWNrKXtjb25zdCBwZXJjZW50MTA9cGFyc2VJbnQoMWUzKmN1cnJlbnRPcC90b3RhbE9wcyk7aWYocGVyY2VudDEwIT09bGFzdFBlcmNlbnQxMCl7c3RvcD1jYWxsYmFjayhudWxsLGN1cnJlbnRPcC90b3RhbE9wcyk7aWYoc3RvcCl7YnJlYWt9bGFzdFBlcmNlbnQxMD1wZXJjZW50MTB9fWlmKGkxPE4pe2JyZWFrfWkxPTA7c3RhdGU9MjtjYXNlIDI6c3RlcHM9Ti1pMTtpZihzdGVwcz5saW1pdCl7c3RlcHM9bGltaXR9Zm9yKGxldCBpPTA7aTxzdGVwcztpKyspe2NvbnN0IG9mZnNldD0oMipyLTEpKjE2O2NvbnN0IGo9WFlbb2Zmc2V0XSZOLTE7YmxvY2t4b3IoVixqKllpLFhZLFlpKTtibG9ja21peF9zYWxzYTgoWFksWWkscix4LF9YKX1pMSs9c3RlcHM7Y3VycmVudE9wKz1zdGVwcztpZihjYWxsYmFjayl7Y29uc3QgcGVyY2VudDEwPXBhcnNlSW50KDFlMypjdXJyZW50T3AvdG90YWxPcHMpO2lmKHBlcmNlbnQxMCE9PWxhc3RQZXJjZW50MTApe3N0b3A9Y2FsbGJhY2sobnVsbCxjdXJyZW50T3AvdG90YWxPcHMpO2lmKHN0b3Ape2JyZWFrfWxhc3RQZXJjZW50MTA9cGVyY2VudDEwfX1pZihpMTxOKXticmVha31hcnJheWNvcHkoWFksMCxCLEJpLFlpKTtpMCsrO2lmKGkwPHApe3N0YXRlPTA7YnJlYWt9Yj1bXTtmb3IobGV0IGk9MDtpPEIubGVuZ3RoO2krKyl7Yi5wdXNoKEJbaV0+PjAmMjU1KTtiLnB1c2goQltpXT4+OCYyNTUpO2IucHVzaChCW2ldPj4xNiYyNTUpO2IucHVzaChCW2ldPj4yNCYyNTUpfWNvbnN0IGRlcml2ZWRLZXk9UEJLREYyX0hNQUNfU0hBMjU2X09uZUl0ZXIocGFzc3dvcmQsYixka0xlbik7aWYoY2FsbGJhY2spe2NhbGxiYWNrKG51bGwsMSxkZXJpdmVkS2V5KX1yZXR1cm4gZGVyaXZlZEtleX1pZihjYWxsYmFjayl7bmV4dFRpY2soaW5jcmVtZW50YWxTTWl4KX19O2lmKCFjYWxsYmFjayl7d2hpbGUodHJ1ZSl7Y29uc3QgZGVyaXZlZEtleT1pbmNyZW1lbnRhbFNNaXgoKTtpZihkZXJpdmVkS2V5IT11bmRlZmluZWQpe3JldHVybiBkZXJpdmVkS2V5fX19aW5jcmVtZW50YWxTTWl4KCl9Y29uc3QgbGliPXtzY3J5cHQ6ZnVuY3Rpb24ocGFzc3dvcmQsc2FsdCxOLHIscCxka0xlbixwcm9ncmVzc0NhbGxiYWNrKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2xldCBsYXN0UHJvZ3Jlc3M9MDtpZihwcm9ncmVzc0NhbGxiYWNrKXtwcm9ncmVzc0NhbGxiYWNrKDApfV9zY3J5cHQocGFzc3dvcmQsc2FsdCxOLHIscCxka0xlbixmdW5jdGlvbihlcnJvcixwcm9ncmVzcyxrZXkpe2lmKGVycm9yKXtyZWplY3QoZXJyb3IpfWVsc2UgaWYoa2V5KXtpZihwcm9ncmVzc0NhbGxiYWNrJiZsYXN0UHJvZ3Jlc3MhPT0xKXtwcm9ncmVzc0NhbGxiYWNrKDEpfXJlc29sdmUobmV3IFVpbnQ4QXJyYXkoa2V5KSl9ZWxzZSBpZihwcm9ncmVzc0NhbGxiYWNrJiZwcm9ncmVzcyE9PWxhc3RQcm9ncmVzcyl7bGFzdFByb2dyZXNzPXByb2dyZXNzO3JldHVybiBwcm9ncmVzc0NhbGxiYWNrKHByb2dyZXNzKX19KX0pfSxzeW5jU2NyeXB0OmZ1bmN0aW9uKHBhc3N3b3JkLHNhbHQsTixyLHAsZGtMZW4pe3JldHVybiBuZXcgVWludDhBcnJheShfc2NyeXB0KHBhc3N3b3JkLHNhbHQsTixyLHAsZGtMZW4pKX19O2lmKCJvYmplY3QiIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPWxpYn1lbHNlIGlmKHR5cGVvZiB1bmRlZmluZWQ9PT0iZnVuY3Rpb24iJiZ1bmRlZmluZWQuYW1kKXt1bmRlZmluZWQobGliKX1lbHNlIGlmKHJvb3Qpe2lmKHJvb3Quc2NyeXB0KXtyb290Ll9zY3J5cHQ9cm9vdC5zY3J5cHR9cm9vdC5zY3J5cHQ9bGlifX0pKGNvbW1vbmpzR2xvYmFsKX0pO3ZhciBrZXlzdG9yZT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O3ZhciBfX2ltcG9ydERlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24obW9kKXtyZXR1cm4gbW9kJiZtb2QuX19lc01vZHVsZT9tb2Q6e2RlZmF1bHQ6bW9kfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5lbmNyeXB0PWV4cG9ydHMuZGVjcnlwdD1leHBvcnRzLmRlY3J5cHRTeW5jPWV4cG9ydHMuS2V5c3RvcmVBY2NvdW50PXZvaWQgMDt2YXIgYWVzX2pzXzE9X19pbXBvcnREZWZhdWx0KGFlc0pzKTt2YXIgc2NyeXB0X2pzXzE9X19pbXBvcnREZWZhdWx0KHNjcnlwdCk7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRBLnZlcnNpb24pO2Z1bmN0aW9uIGhhc01uZW1vbmljKHZhbHVlKXtyZXR1cm4gdmFsdWUhPW51bGwmJnZhbHVlLm1uZW1vbmljJiZ2YWx1ZS5tbmVtb25pYy5waHJhc2V9dmFyIEtleXN0b3JlQWNjb3VudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhLZXlzdG9yZUFjY291bnQsX3N1cGVyKTtmdW5jdGlvbiBLZXlzdG9yZUFjY291bnQoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31LZXlzdG9yZUFjY291bnQucHJvdG90eXBlLmlzS2V5c3RvcmVBY2NvdW50PWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSYmdmFsdWUuX2lzS2V5c3RvcmVBY2NvdW50KX07cmV0dXJuIEtleXN0b3JlQWNjb3VudH0obGliJDMuRGVzY3JpcHRpb24pO2V4cG9ydHMuS2V5c3RvcmVBY2NvdW50PUtleXN0b3JlQWNjb3VudDtmdW5jdGlvbiBfZGVjcnlwdChkYXRhLGtleSxjaXBoZXJ0ZXh0KXt2YXIgY2lwaGVyPXV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJjcnlwdG8vY2lwaGVyIik7aWYoY2lwaGVyPT09ImFlcy0xMjgtY3RyIil7dmFyIGl2PXV0aWxzJDEubG9vc2VBcnJheWlmeSh1dGlscyQxLnNlYXJjaFBhdGgoZGF0YSwiY3J5cHRvL2NpcGhlcnBhcmFtcy9pdiIpKTt2YXIgY291bnRlcj1uZXcgYWVzX2pzXzEuZGVmYXVsdC5Db3VudGVyKGl2KTt2YXIgYWVzQ3RyPW5ldyBhZXNfanNfMS5kZWZhdWx0Lk1vZGVPZk9wZXJhdGlvbi5jdHIoa2V5LGNvdW50ZXIpO3JldHVybiBsaWIkMS5hcnJheWlmeShhZXNDdHIuZGVjcnlwdChjaXBoZXJ0ZXh0KSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gX2dldEFjY291bnQoZGF0YSxrZXkpe3ZhciBjaXBoZXJ0ZXh0PXV0aWxzJDEubG9vc2VBcnJheWlmeSh1dGlscyQxLnNlYXJjaFBhdGgoZGF0YSwiY3J5cHRvL2NpcGhlcnRleHQiKSk7dmFyIGNvbXB1dGVkTUFDPWxpYiQxLmhleGxpZnkobGliJDQua2VjY2FrMjU2KGxpYiQxLmNvbmNhdChba2V5LnNsaWNlKDE2LDMyKSxjaXBoZXJ0ZXh0XSkpKS5zdWJzdHJpbmcoMik7aWYoY29tcHV0ZWRNQUMhPT11dGlscyQxLnNlYXJjaFBhdGgoZGF0YSwiY3J5cHRvL21hYyIpLnRvTG93ZXJDYXNlKCkpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwYXNzd29yZCIpfXZhciBwcml2YXRlS2V5PV9kZWNyeXB0KGRhdGEsa2V5LnNsaWNlKDAsMTYpLGNpcGhlcnRleHQpO2lmKCFwcml2YXRlS2V5KXtsb2dnZXIudGhyb3dFcnJvcigidW5zdXBwb3J0ZWQgY2lwaGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZGVjcnlwdCJ9KX12YXIgbW5lbW9uaWNLZXk9a2V5LnNsaWNlKDMyLDY0KTt2YXIgYWRkcmVzcz1saWIkZS5jb21wdXRlQWRkcmVzcyhwcml2YXRlS2V5KTtpZihkYXRhLmFkZHJlc3Mpe3ZhciBjaGVjaz1kYXRhLmFkZHJlc3MudG9Mb3dlckNhc2UoKTtpZihjaGVjay5zdWJzdHJpbmcoMCwyKSE9PSIweCIpe2NoZWNrPSIweCIrY2hlY2t9aWYobGliJDYuZ2V0QWRkcmVzcyhjaGVjaykhPT1hZGRyZXNzKXt0aHJvdyBuZXcgRXJyb3IoImFkZHJlc3MgbWlzbWF0Y2giKX19dmFyIGFjY291bnQ9e19pc0tleXN0b3JlQWNjb3VudDp0cnVlLGFkZHJlc3M6YWRkcmVzcyxwcml2YXRlS2V5OmxpYiQxLmhleGxpZnkocHJpdmF0ZUtleSl9O2lmKHV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJ4LWV0aGVycy92ZXJzaW9uIik9PT0iMC4xIil7dmFyIG1uZW1vbmljQ2lwaGVydGV4dD11dGlscyQxLmxvb3NlQXJyYXlpZnkodXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsIngtZXRoZXJzL21uZW1vbmljQ2lwaGVydGV4dCIpKTt2YXIgbW5lbW9uaWNJdj11dGlscyQxLmxvb3NlQXJyYXlpZnkodXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsIngtZXRoZXJzL21uZW1vbmljQ291bnRlciIpKTt2YXIgbW5lbW9uaWNDb3VudGVyPW5ldyBhZXNfanNfMS5kZWZhdWx0LkNvdW50ZXIobW5lbW9uaWNJdik7dmFyIG1uZW1vbmljQWVzQ3RyPW5ldyBhZXNfanNfMS5kZWZhdWx0Lk1vZGVPZk9wZXJhdGlvbi5jdHIobW5lbW9uaWNLZXksbW5lbW9uaWNDb3VudGVyKTt2YXIgcGF0aD11dGlscyQxLnNlYXJjaFBhdGgoZGF0YSwieC1ldGhlcnMvcGF0aCIpfHxsaWIkay5kZWZhdWx0UGF0aDt2YXIgbG9jYWxlPXV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJ4LWV0aGVycy9sb2NhbGUiKXx8ImVuIjt2YXIgZW50cm9weT1saWIkMS5hcnJheWlmeShtbmVtb25pY0Flc0N0ci5kZWNyeXB0KG1uZW1vbmljQ2lwaGVydGV4dCkpO3RyeXt2YXIgbW5lbW9uaWM9bGliJGsuZW50cm9weVRvTW5lbW9uaWMoZW50cm9weSxsb2NhbGUpO3ZhciBub2RlPWxpYiRrLkhETm9kZS5mcm9tTW5lbW9uaWMobW5lbW9uaWMsbnVsbCxsb2NhbGUpLmRlcml2ZVBhdGgocGF0aCk7aWYobm9kZS5wcml2YXRlS2V5IT1hY2NvdW50LnByaXZhdGVLZXkpe3Rocm93IG5ldyBFcnJvcigibW5lbW9uaWMgbWlzbWF0Y2giKX1hY2NvdW50Lm1uZW1vbmljPW5vZGUubW5lbW9uaWN9Y2F0Y2goZXJyb3Ipe2lmKGVycm9yLmNvZGUhPT1saWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5UfHxlcnJvci5hcmd1bWVudCE9PSJ3b3JkbGlzdCIpe3Rocm93IGVycm9yfX19cmV0dXJuIG5ldyBLZXlzdG9yZUFjY291bnQoYWNjb3VudCl9ZnVuY3Rpb24gcGJrZGYyU3luYyhwYXNzd29yZEJ5dGVzLHNhbHQsY291bnQsZGtMZW4scHJmRnVuYyl7cmV0dXJuIGxpYiQxLmFycmF5aWZ5KGxpYiRpLnBia2RmMihwYXNzd29yZEJ5dGVzLHNhbHQsY291bnQsZGtMZW4scHJmRnVuYykpfWZ1bmN0aW9uIHBia2RmMihwYXNzd29yZEJ5dGVzLHNhbHQsY291bnQsZGtMZW4scHJmRnVuYyl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShwYmtkZjJTeW5jKHBhc3N3b3JkQnl0ZXMsc2FsdCxjb3VudCxka0xlbixwcmZGdW5jKSl9ZnVuY3Rpb24gX2NvbXB1dGVLZGZLZXkoZGF0YSxwYXNzd29yZCxwYmtkZjJGdW5jLHNjcnlwdEZ1bmMscHJvZ3Jlc3NDYWxsYmFjayl7dmFyIHBhc3N3b3JkQnl0ZXM9dXRpbHMkMS5nZXRQYXNzd29yZChwYXNzd29yZCk7dmFyIGtkZj11dGlscyQxLnNlYXJjaFBhdGgoZGF0YSwiY3J5cHRvL2tkZiIpO2lmKGtkZiYmdHlwZW9mIGtkZj09PSJzdHJpbmciKXt2YXIgdGhyb3dFcnJvcj1mdW5jdGlvbihuYW1lLHZhbHVlKXtyZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBrZXktZGVyaXZhdGlvbiBmdW5jdGlvbiBwYXJhbWV0ZXJzIixuYW1lLHZhbHVlKX07aWYoa2RmLnRvTG93ZXJDYXNlKCk9PT0ic2NyeXB0Iil7dmFyIHNhbHQ9dXRpbHMkMS5sb29zZUFycmF5aWZ5KHV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJjcnlwdG8va2RmcGFyYW1zL3NhbHQiKSk7dmFyIE49cGFyc2VJbnQodXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsImNyeXB0by9rZGZwYXJhbXMvbiIpKTt2YXIgcj1wYXJzZUludCh1dGlscyQxLnNlYXJjaFBhdGgoZGF0YSwiY3J5cHRvL2tkZnBhcmFtcy9yIikpO3ZhciBwPXBhcnNlSW50KHV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJjcnlwdG8va2RmcGFyYW1zL3AiKSk7aWYoIU58fCFyfHwhcCl7dGhyb3dFcnJvcigia2RmIixrZGYpfWlmKChOJk4tMSkhPT0wKXt0aHJvd0Vycm9yKCJOIixOKX12YXIgZGtMZW49cGFyc2VJbnQodXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsImNyeXB0by9rZGZwYXJhbXMvZGtsZW4iKSk7aWYoZGtMZW4hPT0zMil7dGhyb3dFcnJvcigiZGtsZW4iLGRrTGVuKX1yZXR1cm4gc2NyeXB0RnVuYyhwYXNzd29yZEJ5dGVzLHNhbHQsTixyLHAsNjQscHJvZ3Jlc3NDYWxsYmFjayl9ZWxzZSBpZihrZGYudG9Mb3dlckNhc2UoKT09PSJwYmtkZjIiKXt2YXIgc2FsdD11dGlscyQxLmxvb3NlQXJyYXlpZnkodXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsImNyeXB0by9rZGZwYXJhbXMvc2FsdCIpKTt2YXIgcHJmRnVuYz1udWxsO3ZhciBwcmY9dXRpbHMkMS5zZWFyY2hQYXRoKGRhdGEsImNyeXB0by9rZGZwYXJhbXMvcHJmIik7aWYocHJmPT09ImhtYWMtc2hhMjU2Iil7cHJmRnVuYz0ic2hhMjU2In1lbHNlIGlmKHByZj09PSJobWFjLXNoYTUxMiIpe3ByZkZ1bmM9InNoYTUxMiJ9ZWxzZXt0aHJvd0Vycm9yKCJwcmYiLHByZil9dmFyIGNvdW50PXBhcnNlSW50KHV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJjcnlwdG8va2RmcGFyYW1zL2MiKSk7dmFyIGRrTGVuPXBhcnNlSW50KHV0aWxzJDEuc2VhcmNoUGF0aChkYXRhLCJjcnlwdG8va2RmcGFyYW1zL2RrbGVuIikpO2lmKGRrTGVuIT09MzIpe3Rocm93RXJyb3IoImRrbGVuIixka0xlbil9cmV0dXJuIHBia2RmMkZ1bmMocGFzc3dvcmRCeXRlcyxzYWx0LGNvdW50LGRrTGVuLHByZkZ1bmMpfX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQga2V5LWRlcml2YXRpb24gZnVuY3Rpb24iLCJrZGYiLGtkZil9ZnVuY3Rpb24gZGVjcnlwdFN5bmMoanNvbixwYXNzd29yZCl7dmFyIGRhdGE9SlNPTi5wYXJzZShqc29uKTt2YXIga2V5PV9jb21wdXRlS2RmS2V5KGRhdGEscGFzc3dvcmQscGJrZGYyU3luYyxzY3J5cHRfanNfMS5kZWZhdWx0LnN5bmNTY3J5cHQpO3JldHVybiBfZ2V0QWNjb3VudChkYXRhLGtleSl9ZXhwb3J0cy5kZWNyeXB0U3luYz1kZWNyeXB0U3luYztmdW5jdGlvbiBkZWNyeXB0KGpzb24scGFzc3dvcmQscHJvZ3Jlc3NDYWxsYmFjayl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZGF0YSxrZXk7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmRhdGE9SlNPTi5wYXJzZShqc29uKTtyZXR1cm5bNCxfY29tcHV0ZUtkZktleShkYXRhLHBhc3N3b3JkLHBia2RmMixzY3J5cHRfanNfMS5kZWZhdWx0LnNjcnlwdCxwcm9ncmVzc0NhbGxiYWNrKV07Y2FzZSAxOmtleT1fYS5zZW50KCk7cmV0dXJuWzIsX2dldEFjY291bnQoZGF0YSxrZXkpXX19KX0pfWV4cG9ydHMuZGVjcnlwdD1kZWNyeXB0O2Z1bmN0aW9uIGVuY3J5cHQoYWNjb3VudCxwYXNzd29yZCxvcHRpb25zLHByb2dyZXNzQ2FsbGJhY2spe3RyeXtpZihsaWIkNi5nZXRBZGRyZXNzKGFjY291bnQuYWRkcmVzcykhPT1saWIkZS5jb21wdXRlQWRkcmVzcyhhY2NvdW50LnByaXZhdGVLZXkpKXt0aHJvdyBuZXcgRXJyb3IoImFkZHJlc3MvcHJpdmF0ZUtleSBtaXNtYXRjaCIpfWlmKGhhc01uZW1vbmljKGFjY291bnQpKXt2YXIgbW5lbW9uaWM9YWNjb3VudC5tbmVtb25pYzt2YXIgbm9kZT1saWIkay5IRE5vZGUuZnJvbU1uZW1vbmljKG1uZW1vbmljLnBocmFzZSxudWxsLG1uZW1vbmljLmxvY2FsZSkuZGVyaXZlUGF0aChtbmVtb25pYy5wYXRofHxsaWIkay5kZWZhdWx0UGF0aCk7aWYobm9kZS5wcml2YXRlS2V5IT1hY2NvdW50LnByaXZhdGVLZXkpe3Rocm93IG5ldyBFcnJvcigibW5lbW9uaWMgbWlzbWF0Y2giKX19fWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1pZih0eXBlb2Ygb3B0aW9ucz09PSJmdW5jdGlvbiImJiFwcm9ncmVzc0NhbGxiYWNrKXtwcm9ncmVzc0NhbGxiYWNrPW9wdGlvbnM7b3B0aW9ucz17fX1pZighb3B0aW9ucyl7b3B0aW9ucz17fX12YXIgcHJpdmF0ZUtleT1saWIkMS5hcnJheWlmeShhY2NvdW50LnByaXZhdGVLZXkpO3ZhciBwYXNzd29yZEJ5dGVzPXV0aWxzJDEuZ2V0UGFzc3dvcmQocGFzc3dvcmQpO3ZhciBlbnRyb3B5PW51bGw7dmFyIHBhdGg9bnVsbDt2YXIgbG9jYWxlPW51bGw7aWYoaGFzTW5lbW9uaWMoYWNjb3VudCkpe3ZhciBzcmNNbmVtb25pYz1hY2NvdW50Lm1uZW1vbmljO2VudHJvcHk9bGliJDEuYXJyYXlpZnkobGliJGsubW5lbW9uaWNUb0VudHJvcHkoc3JjTW5lbW9uaWMucGhyYXNlLHNyY01uZW1vbmljLmxvY2FsZXx8ImVuIikpO3BhdGg9c3JjTW5lbW9uaWMucGF0aHx8bGliJGsuZGVmYXVsdFBhdGg7bG9jYWxlPXNyY01uZW1vbmljLmxvY2FsZXx8ImVuIn12YXIgY2xpZW50PW9wdGlvbnMuY2xpZW50O2lmKCFjbGllbnQpe2NsaWVudD0iZXRoZXJzLmpzIn12YXIgc2FsdD1udWxsO2lmKG9wdGlvbnMuc2FsdCl7c2FsdD1saWIkMS5hcnJheWlmeShvcHRpb25zLnNhbHQpfWVsc2V7c2FsdD1saWIkbC5yYW5kb21CeXRlcygzMil9dmFyIGl2PW51bGw7aWYob3B0aW9ucy5pdil7aXY9bGliJDEuYXJyYXlpZnkob3B0aW9ucy5pdik7aWYoaXYubGVuZ3RoIT09MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBpdiIpfX1lbHNle2l2PWxpYiRsLnJhbmRvbUJ5dGVzKDE2KX12YXIgdXVpZFJhbmRvbT1udWxsO2lmKG9wdGlvbnMudXVpZCl7dXVpZFJhbmRvbT1saWIkMS5hcnJheWlmeShvcHRpb25zLnV1aWQpO2lmKHV1aWRSYW5kb20ubGVuZ3RoIT09MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCB1dWlkIil9fWVsc2V7dXVpZFJhbmRvbT1saWIkbC5yYW5kb21CeXRlcygxNil9dmFyIE49MTw8MTcscj04LHA9MTtpZihvcHRpb25zLnNjcnlwdCl7aWYob3B0aW9ucy5zY3J5cHQuTil7Tj1vcHRpb25zLnNjcnlwdC5OfWlmKG9wdGlvbnMuc2NyeXB0LnIpe3I9b3B0aW9ucy5zY3J5cHQucn1pZihvcHRpb25zLnNjcnlwdC5wKXtwPW9wdGlvbnMuc2NyeXB0LnB9fXJldHVybiBzY3J5cHRfanNfMS5kZWZhdWx0LnNjcnlwdChwYXNzd29yZEJ5dGVzLHNhbHQsTixyLHAsNjQscHJvZ3Jlc3NDYWxsYmFjaykudGhlbihmdW5jdGlvbihrZXkpe2tleT1saWIkMS5hcnJheWlmeShrZXkpO3ZhciBkZXJpdmVkS2V5PWtleS5zbGljZSgwLDE2KTt2YXIgbWFjUHJlZml4PWtleS5zbGljZSgxNiwzMik7dmFyIG1uZW1vbmljS2V5PWtleS5zbGljZSgzMiw2NCk7dmFyIGNvdW50ZXI9bmV3IGFlc19qc18xLmRlZmF1bHQuQ291bnRlcihpdik7dmFyIGFlc0N0cj1uZXcgYWVzX2pzXzEuZGVmYXVsdC5Nb2RlT2ZPcGVyYXRpb24uY3RyKGRlcml2ZWRLZXksY291bnRlcik7dmFyIGNpcGhlcnRleHQ9bGliJDEuYXJyYXlpZnkoYWVzQ3RyLmVuY3J5cHQocHJpdmF0ZUtleSkpO3ZhciBtYWM9bGliJDQua2VjY2FrMjU2KGxpYiQxLmNvbmNhdChbbWFjUHJlZml4LGNpcGhlcnRleHRdKSk7dmFyIGRhdGE9e2FkZHJlc3M6YWNjb3VudC5hZGRyZXNzLnN1YnN0cmluZygyKS50b0xvd2VyQ2FzZSgpLGlkOnV0aWxzJDEudXVpZFY0KHV1aWRSYW5kb20pLHZlcnNpb246MyxDcnlwdG86e2NpcGhlcjoiYWVzLTEyOC1jdHIiLGNpcGhlcnBhcmFtczp7aXY6bGliJDEuaGV4bGlmeShpdikuc3Vic3RyaW5nKDIpfSxjaXBoZXJ0ZXh0OmxpYiQxLmhleGxpZnkoY2lwaGVydGV4dCkuc3Vic3RyaW5nKDIpLGtkZjoic2NyeXB0IixrZGZwYXJhbXM6e3NhbHQ6bGliJDEuaGV4bGlmeShzYWx0KS5zdWJzdHJpbmcoMiksbjpOLGRrbGVuOjMyLHA6cCxyOnJ9LG1hYzptYWMuc3Vic3RyaW5nKDIpfX07aWYoZW50cm9weSl7dmFyIG1uZW1vbmljSXY9bGliJGwucmFuZG9tQnl0ZXMoMTYpO3ZhciBtbmVtb25pY0NvdW50ZXI9bmV3IGFlc19qc18xLmRlZmF1bHQuQ291bnRlcihtbmVtb25pY0l2KTt2YXIgbW5lbW9uaWNBZXNDdHI9bmV3IGFlc19qc18xLmRlZmF1bHQuTW9kZU9mT3BlcmF0aW9uLmN0cihtbmVtb25pY0tleSxtbmVtb25pY0NvdW50ZXIpO3ZhciBtbmVtb25pY0NpcGhlcnRleHQ9bGliJDEuYXJyYXlpZnkobW5lbW9uaWNBZXNDdHIuZW5jcnlwdChlbnRyb3B5KSk7dmFyIG5vdz1uZXcgRGF0ZTt2YXIgdGltZXN0YW1wPW5vdy5nZXRVVENGdWxsWWVhcigpKyItIit1dGlscyQxLnpwYWQobm93LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrdXRpbHMkMS56cGFkKG5vdy5nZXRVVENEYXRlKCksMikrIlQiK3V0aWxzJDEuenBhZChub3cuZ2V0VVRDSG91cnMoKSwyKSsiLSIrdXRpbHMkMS56cGFkKG5vdy5nZXRVVENNaW51dGVzKCksMikrIi0iK3V0aWxzJDEuenBhZChub3cuZ2V0VVRDU2Vjb25kcygpLDIpKyIuMFoiO2RhdGFbIngtZXRoZXJzIl09e2NsaWVudDpjbGllbnQsZ2V0aEZpbGVuYW1lOiJVVEMtLSIrdGltZXN0YW1wKyItLSIrZGF0YS5hZGRyZXNzLG1uZW1vbmljQ291bnRlcjpsaWIkMS5oZXhsaWZ5KG1uZW1vbmljSXYpLnN1YnN0cmluZygyKSxtbmVtb25pY0NpcGhlcnRleHQ6bGliJDEuaGV4bGlmeShtbmVtb25pY0NpcGhlcnRleHQpLnN1YnN0cmluZygyKSxwYXRoOnBhdGgsbG9jYWxlOmxvY2FsZSx2ZXJzaW9uOiIwLjEifX1yZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSl9KX1leHBvcnRzLmVuY3J5cHQ9ZW5jcnlwdH0pO3ZhciBrZXlzdG9yZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGtleXN0b3JlKTt2YXIgbGliJG09Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmRlY3J5cHRKc29uV2FsbGV0U3luYz1leHBvcnRzLmRlY3J5cHRKc29uV2FsbGV0PWV4cG9ydHMuZ2V0SnNvbldhbGxldEFkZHJlc3M9ZXhwb3J0cy5pc0tleXN0b3JlV2FsbGV0PWV4cG9ydHMuaXNDcm93ZHNhbGVXYWxsZXQ9ZXhwb3J0cy5lbmNyeXB0S2V5c3RvcmU9ZXhwb3J0cy5kZWNyeXB0S2V5c3RvcmVTeW5jPWV4cG9ydHMuZGVjcnlwdEtleXN0b3JlPWV4cG9ydHMuZGVjcnlwdENyb3dkc2FsZT12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRlY3J5cHRDcm93ZHNhbGUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNyb3dkc2FsZS5kZWNyeXB0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXRKc29uV2FsbGV0QWRkcmVzcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaW5zcGVjdC5nZXRKc29uV2FsbGV0QWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNDcm93ZHNhbGVXYWxsZXQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGluc3BlY3QuaXNDcm93ZHNhbGVXYWxsZXR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlzS2V5c3RvcmVXYWxsZXQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGluc3BlY3QuaXNLZXlzdG9yZVdhbGxldH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZGVjcnlwdEtleXN0b3JlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBrZXlzdG9yZS5kZWNyeXB0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkZWNyeXB0S2V5c3RvcmVTeW5jIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBrZXlzdG9yZS5kZWNyeXB0U3luY319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZW5jcnlwdEtleXN0b3JlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBrZXlzdG9yZS5lbmNyeXB0fX0pO2Z1bmN0aW9uIGRlY3J5cHRKc29uV2FsbGV0KGpzb24scGFzc3dvcmQscHJvZ3Jlc3NDYWxsYmFjayl7aWYoaW5zcGVjdC5pc0Nyb3dkc2FsZVdhbGxldChqc29uKSl7aWYocHJvZ3Jlc3NDYWxsYmFjayl7cHJvZ3Jlc3NDYWxsYmFjaygwKX12YXIgYWNjb3VudD1jcm93ZHNhbGUuZGVjcnlwdChqc29uLHBhc3N3b3JkKTtpZihwcm9ncmVzc0NhbGxiYWNrKXtwcm9ncmVzc0NhbGxiYWNrKDEpfXJldHVybiBQcm9taXNlLnJlc29sdmUoYWNjb3VudCl9aWYoaW5zcGVjdC5pc0tleXN0b3JlV2FsbGV0KGpzb24pKXtyZXR1cm4ga2V5c3RvcmUuZGVjcnlwdChqc29uLHBhc3N3b3JkLHByb2dyZXNzQ2FsbGJhY2spfXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoImludmFsaWQgSlNPTiB3YWxsZXQiKSl9ZXhwb3J0cy5kZWNyeXB0SnNvbldhbGxldD1kZWNyeXB0SnNvbldhbGxldDtmdW5jdGlvbiBkZWNyeXB0SnNvbldhbGxldFN5bmMoanNvbixwYXNzd29yZCl7aWYoaW5zcGVjdC5pc0Nyb3dkc2FsZVdhbGxldChqc29uKSl7cmV0dXJuIGNyb3dkc2FsZS5kZWNyeXB0KGpzb24scGFzc3dvcmQpfWlmKGluc3BlY3QuaXNLZXlzdG9yZVdhbGxldChqc29uKSl7cmV0dXJuIGtleXN0b3JlLmRlY3J5cHRTeW5jKGpzb24scGFzc3dvcmQpfXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBKU09OIHdhbGxldCIpfWV4cG9ydHMuZGVjcnlwdEpzb25XYWxsZXRTeW5jPWRlY3J5cHRKc29uV2FsbGV0U3luY30pO3ZhciBpbmRleCRtPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRtKTt2YXIgX3ZlcnNpb24kQz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJ3YWxsZXQvNS4yLjAifSk7dmFyIF92ZXJzaW9uJEQ9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kQyk7dmFyIGxpYiRuPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJpZnlUeXBlZERhdGE9ZXhwb3J0cy52ZXJpZnlNZXNzYWdlPWV4cG9ydHMuV2FsbGV0PXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEMudmVyc2lvbik7ZnVuY3Rpb24gaXNBY2NvdW50KHZhbHVlKXtyZXR1cm4gdmFsdWUhPW51bGwmJmxpYiQxLmlzSGV4U3RyaW5nKHZhbHVlLnByaXZhdGVLZXksMzIpJiZ2YWx1ZS5hZGRyZXNzIT1udWxsfWZ1bmN0aW9uIGhhc01uZW1vbmljKHZhbHVlKXt2YXIgbW5lbW9uaWM9dmFsdWUubW5lbW9uaWM7cmV0dXJuIG1uZW1vbmljJiZtbmVtb25pYy5waHJhc2V9dmFyIFdhbGxldD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhXYWxsZXQsX3N1cGVyKTtmdW5jdGlvbiBXYWxsZXQocHJpdmF0ZUtleSxwcm92aWRlcil7dmFyIF9uZXdUYXJnZXQ9dGhpcy5jb25zdHJ1Y3Rvcjt2YXIgX3RoaXM9dGhpcztsb2dnZXIuY2hlY2tOZXcoX25ld1RhcmdldCxXYWxsZXQpO190aGlzPV9zdXBlci5jYWxsKHRoaXMpfHx0aGlzO2lmKGlzQWNjb3VudChwcml2YXRlS2V5KSl7dmFyIHNpZ25pbmdLZXlfMT1uZXcgbGliJGQuU2lnbmluZ0tleShwcml2YXRlS2V5LnByaXZhdGVLZXkpO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfc2lnbmluZ0tleSIsZnVuY3Rpb24oKXtyZXR1cm4gc2lnbmluZ0tleV8xfSk7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImFkZHJlc3MiLGxpYiRlLmNvbXB1dGVBZGRyZXNzKF90aGlzLnB1YmxpY0tleSkpO2lmKF90aGlzLmFkZHJlc3MhPT1saWIkNi5nZXRBZGRyZXNzKHByaXZhdGVLZXkuYWRkcmVzcykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInByaXZhdGVLZXkvYWRkcmVzcyBtaXNtYXRjaCIsInByaXZhdGVLZXkiLCJbUkVEQUNURURdIil9aWYoaGFzTW5lbW9uaWMocHJpdmF0ZUtleSkpe3ZhciBzcmNNbmVtb25pY18xPXByaXZhdGVLZXkubW5lbW9uaWM7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsIl9tbmVtb25pYyIsZnVuY3Rpb24oKXtyZXR1cm57cGhyYXNlOnNyY01uZW1vbmljXzEucGhyYXNlLHBhdGg6c3JjTW5lbW9uaWNfMS5wYXRofHxsaWIkay5kZWZhdWx0UGF0aCxsb2NhbGU6c3JjTW5lbW9uaWNfMS5sb2NhbGV8fCJlbiJ9fSk7dmFyIG1uZW1vbmljPV90aGlzLm1uZW1vbmljO3ZhciBub2RlPWxpYiRrLkhETm9kZS5mcm9tTW5lbW9uaWMobW5lbW9uaWMucGhyYXNlLG51bGwsbW5lbW9uaWMubG9jYWxlKS5kZXJpdmVQYXRoKG1uZW1vbmljLnBhdGgpO2lmKGxpYiRlLmNvbXB1dGVBZGRyZXNzKG5vZGUucHJpdmF0ZUtleSkhPT1fdGhpcy5hZGRyZXNzKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJtbmVtb25pYy9hZGRyZXNzIG1pc21hdGNoIiwicHJpdmF0ZUtleSIsIltSRURBQ1RFRF0iKX19ZWxzZXtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX21uZW1vbmljIixmdW5jdGlvbigpe3JldHVybiBudWxsfSl9fWVsc2V7aWYobGliJGQuU2lnbmluZ0tleS5pc1NpZ25pbmdLZXkocHJpdmF0ZUtleSkpe2lmKHByaXZhdGVLZXkuY3VydmUhPT0ic2VjcDI1NmsxIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgY3VydmU7IG11c3QgYmUgc2VjcDI1NmsxIiwicHJpdmF0ZUtleSIsIltSRURBQ1RFRF0iKX1saWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX3NpZ25pbmdLZXkiLGZ1bmN0aW9uKCl7cmV0dXJuIHByaXZhdGVLZXl9KX1lbHNle2lmKHR5cGVvZiBwcml2YXRlS2V5PT09InN0cmluZyIpe2lmKHByaXZhdGVLZXkubWF0Y2goL15bMC05YS1mXSokL2kpJiZwcml2YXRlS2V5Lmxlbmd0aD09PTY0KXtwcml2YXRlS2V5PSIweCIrcHJpdmF0ZUtleX19dmFyIHNpZ25pbmdLZXlfMj1uZXcgbGliJGQuU2lnbmluZ0tleShwcml2YXRlS2V5KTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX3NpZ25pbmdLZXkiLGZ1bmN0aW9uKCl7cmV0dXJuIHNpZ25pbmdLZXlfMn0pfWxpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfbW5lbW9uaWMiLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiYWRkcmVzcyIsbGliJGUuY29tcHV0ZUFkZHJlc3MoX3RoaXMucHVibGljS2V5KSl9aWYocHJvdmlkZXImJiFsaWIkYi5Qcm92aWRlci5pc1Byb3ZpZGVyKHByb3ZpZGVyKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBwcm92aWRlciIsInByb3ZpZGVyIixwcm92aWRlcil9bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsInByb3ZpZGVyIixwcm92aWRlcnx8bnVsbCk7cmV0dXJuIF90aGlzfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShXYWxsZXQucHJvdG90eXBlLCJtbmVtb25pYyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tbmVtb25pYygpfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFdhbGxldC5wcm90b3R5cGUsInByaXZhdGVLZXkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2lnbmluZ0tleSgpLnByaXZhdGVLZXl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV2FsbGV0LnByb3RvdHlwZSwicHVibGljS2V5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpZ25pbmdLZXkoKS5wdWJsaWNLZXl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtXYWxsZXQucHJvdG90eXBlLmdldEFkZHJlc3M9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYWRkcmVzcyl9O1dhbGxldC5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbihwcm92aWRlcil7cmV0dXJuIG5ldyBXYWxsZXQodGhpcyxwcm92aWRlcil9O1dhbGxldC5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXt2YXIgX3RoaXM9dGhpcztyZXR1cm4gbGliJDMucmVzb2x2ZVByb3BlcnRpZXModHJhbnNhY3Rpb24pLnRoZW4oZnVuY3Rpb24odHgpe2lmKHR4LmZyb20hPW51bGwpe2lmKGxpYiQ2LmdldEFkZHJlc3ModHguZnJvbSkhPT1fdGhpcy5hZGRyZXNzKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ0cmFuc2FjdGlvbiBmcm9tIGFkZHJlc3MgbWlzbWF0Y2giLCJ0cmFuc2FjdGlvbi5mcm9tIix0cmFuc2FjdGlvbi5mcm9tKX1kZWxldGUgdHguZnJvbX12YXIgc2lnbmF0dXJlPV90aGlzLl9zaWduaW5nS2V5KCkuc2lnbkRpZ2VzdChsaWIkNC5rZWNjYWsyNTYobGliJGUuc2VyaWFsaXplKHR4KSkpO3JldHVybiBsaWIkZS5zZXJpYWxpemUodHgsc2lnbmF0dXJlKX0pfTtXYWxsZXQucHJvdG90eXBlLnNpZ25NZXNzYWdlPWZ1bmN0aW9uKG1lc3NhZ2Upe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLGxpYiQxLmpvaW5TaWduYXR1cmUodGhpcy5fc2lnbmluZ0tleSgpLnNpZ25EaWdlc3QobGliJDkuaGFzaE1lc3NhZ2UobWVzc2FnZSkpKV19KX0pfTtXYWxsZXQucHJvdG90eXBlLl9zaWduVHlwZWREYXRhPWZ1bmN0aW9uKGRvbWFpbix0eXBlcyx2YWx1ZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcG9wdWxhdGVkO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxsaWIkOS5fVHlwZWREYXRhRW5jb2Rlci5yZXNvbHZlTmFtZXMoZG9tYWluLHR5cGVzLHZhbHVlLGZ1bmN0aW9uKG5hbWUpe2lmKF90aGlzLnByb3ZpZGVyPT1udWxsKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IHJlc29sdmUgRU5TIG5hbWVzIHdpdGhvdXQgYSBwcm92aWRlciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InJlc29sdmVOYW1lIix2YWx1ZTpuYW1lfSl9cmV0dXJuIF90aGlzLnByb3ZpZGVyLnJlc29sdmVOYW1lKG5hbWUpfSldO2Nhc2UgMTpwb3B1bGF0ZWQ9X2Euc2VudCgpO3JldHVyblsyLGxpYiQxLmpvaW5TaWduYXR1cmUodGhpcy5fc2lnbmluZ0tleSgpLnNpZ25EaWdlc3QobGliJDkuX1R5cGVkRGF0YUVuY29kZXIuaGFzaChwb3B1bGF0ZWQuZG9tYWluLHR5cGVzLHBvcHVsYXRlZC52YWx1ZSkpKV19fSl9KX07V2FsbGV0LnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBhc3N3b3JkLG9wdGlvbnMscHJvZ3Jlc3NDYWxsYmFjayl7aWYodHlwZW9mIG9wdGlvbnM9PT0iZnVuY3Rpb24iJiYhcHJvZ3Jlc3NDYWxsYmFjayl7cHJvZ3Jlc3NDYWxsYmFjaz1vcHRpb25zO29wdGlvbnM9e319aWYocHJvZ3Jlc3NDYWxsYmFjayYmdHlwZW9mIHByb2dyZXNzQ2FsbGJhY2shPT0iZnVuY3Rpb24iKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKX1pZighb3B0aW9ucyl7b3B0aW9ucz17fX1yZXR1cm4gbGliJG0uZW5jcnlwdEtleXN0b3JlKHRoaXMscGFzc3dvcmQsb3B0aW9ucyxwcm9ncmVzc0NhbGxiYWNrKX07V2FsbGV0LmNyZWF0ZVJhbmRvbT1mdW5jdGlvbihvcHRpb25zKXt2YXIgZW50cm9weT1saWIkbC5yYW5kb21CeXRlcygxNik7aWYoIW9wdGlvbnMpe29wdGlvbnM9e319aWYob3B0aW9ucy5leHRyYUVudHJvcHkpe2VudHJvcHk9bGliJDEuYXJyYXlpZnkobGliJDEuaGV4RGF0YVNsaWNlKGxpYiQ0LmtlY2NhazI1NihsaWIkMS5jb25jYXQoW2VudHJvcHksb3B0aW9ucy5leHRyYUVudHJvcHldKSksMCwxNikpfXZhciBtbmVtb25pYz1saWIkay5lbnRyb3B5VG9NbmVtb25pYyhlbnRyb3B5LG9wdGlvbnMubG9jYWxlKTtyZXR1cm4gV2FsbGV0LmZyb21NbmVtb25pYyhtbmVtb25pYyxvcHRpb25zLnBhdGgsb3B0aW9ucy5sb2NhbGUpfTtXYWxsZXQuZnJvbUVuY3J5cHRlZEpzb249ZnVuY3Rpb24oanNvbixwYXNzd29yZCxwcm9ncmVzc0NhbGxiYWNrKXtyZXR1cm4gbGliJG0uZGVjcnlwdEpzb25XYWxsZXQoanNvbixwYXNzd29yZCxwcm9ncmVzc0NhbGxiYWNrKS50aGVuKGZ1bmN0aW9uKGFjY291bnQpe3JldHVybiBuZXcgV2FsbGV0KGFjY291bnQpfSl9O1dhbGxldC5mcm9tRW5jcnlwdGVkSnNvblN5bmM9ZnVuY3Rpb24oanNvbixwYXNzd29yZCl7cmV0dXJuIG5ldyBXYWxsZXQobGliJG0uZGVjcnlwdEpzb25XYWxsZXRTeW5jKGpzb24scGFzc3dvcmQpKX07V2FsbGV0LmZyb21NbmVtb25pYz1mdW5jdGlvbihtbmVtb25pYyxwYXRoLHdvcmRsaXN0KXtpZighcGF0aCl7cGF0aD1saWIkay5kZWZhdWx0UGF0aH1yZXR1cm4gbmV3IFdhbGxldChsaWIkay5IRE5vZGUuZnJvbU1uZW1vbmljKG1uZW1vbmljLG51bGwsd29yZGxpc3QpLmRlcml2ZVBhdGgocGF0aCkpfTtyZXR1cm4gV2FsbGV0fShsaWIkYy5TaWduZXIpO2V4cG9ydHMuV2FsbGV0PVdhbGxldDtmdW5jdGlvbiB2ZXJpZnlNZXNzYWdlKG1lc3NhZ2Usc2lnbmF0dXJlKXtyZXR1cm4gbGliJGUucmVjb3ZlckFkZHJlc3MobGliJDkuaGFzaE1lc3NhZ2UobWVzc2FnZSksc2lnbmF0dXJlKX1leHBvcnRzLnZlcmlmeU1lc3NhZ2U9dmVyaWZ5TWVzc2FnZTtmdW5jdGlvbiB2ZXJpZnlUeXBlZERhdGEoZG9tYWluLHR5cGVzLHZhbHVlLHNpZ25hdHVyZSl7cmV0dXJuIGxpYiRlLnJlY292ZXJBZGRyZXNzKGxpYiQ5Ll9UeXBlZERhdGFFbmNvZGVyLmhhc2goZG9tYWluLHR5cGVzLHZhbHVlKSxzaWduYXR1cmUpfWV4cG9ydHMudmVyaWZ5VHlwZWREYXRhPXZlcmlmeVR5cGVkRGF0YX0pO3ZhciBpbmRleCRuPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRuKTt2YXIgX3ZlcnNpb24kRT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJuZXR3b3Jrcy81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kRj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRFKTt2YXIgbGliJG89Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmdldE5ldHdvcms9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kRS52ZXJzaW9uKTtmdW5jdGlvbiBpc1JlbmV0d29ya2FibGUodmFsdWUpe3JldHVybiB2YWx1ZSYmdHlwZW9mIHZhbHVlLnJlbmV0d29yaz09PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gZXRoRGVmYXVsdFByb3ZpZGVyKG5ldHdvcmspe3ZhciBmdW5jPWZ1bmN0aW9uKHByb3ZpZGVycyxvcHRpb25zKXtpZihvcHRpb25zPT1udWxsKXtvcHRpb25zPXt9fXZhciBwcm92aWRlckxpc3Q9W107aWYocHJvdmlkZXJzLkluZnVyYVByb3ZpZGVyKXt0cnl7cHJvdmlkZXJMaXN0LnB1c2gobmV3IHByb3ZpZGVycy5JbmZ1cmFQcm92aWRlcihuZXR3b3JrLG9wdGlvbnMuaW5mdXJhKSl9Y2F0Y2goZXJyb3Ipe319aWYocHJvdmlkZXJzLkV0aGVyc2NhblByb3ZpZGVyKXt0cnl7cHJvdmlkZXJMaXN0LnB1c2gobmV3IHByb3ZpZGVycy5FdGhlcnNjYW5Qcm92aWRlcihuZXR3b3JrLG9wdGlvbnMuZXRoZXJzY2FuKSl9Y2F0Y2goZXJyb3Ipe319aWYocHJvdmlkZXJzLkFsY2hlbXlQcm92aWRlcil7dHJ5e3Byb3ZpZGVyTGlzdC5wdXNoKG5ldyBwcm92aWRlcnMuQWxjaGVteVByb3ZpZGVyKG5ldHdvcmssb3B0aW9ucy5hbGNoZW15KSl9Y2F0Y2goZXJyb3Ipe319aWYocHJvdmlkZXJzLkNsb3VkZmxhcmVQcm92aWRlcil7dHJ5e3Byb3ZpZGVyTGlzdC5wdXNoKG5ldyBwcm92aWRlcnMuQ2xvdWRmbGFyZVByb3ZpZGVyKG5ldHdvcmspKX1jYXRjaChlcnJvcil7fX1pZihwcm92aWRlckxpc3QubGVuZ3RoPT09MCl7cmV0dXJuIG51bGx9aWYocHJvdmlkZXJzLkZhbGxiYWNrUHJvdmlkZXIpe3ZhciBxdW9ydW09MTtpZihvcHRpb25zLnF1b3J1bSE9bnVsbCl7cXVvcnVtPW9wdGlvbnMucXVvcnVtfWVsc2UgaWYobmV0d29yaz09PSJob21lc3RlYWQiKXtxdW9ydW09Mn1yZXR1cm4gbmV3IHByb3ZpZGVycy5GYWxsYmFja1Byb3ZpZGVyKHByb3ZpZGVyTGlzdCxxdW9ydW0pfXJldHVybiBwcm92aWRlckxpc3RbMF19O2Z1bmMucmVuZXR3b3JrPWZ1bmN0aW9uKG5ldHdvcmspe3JldHVybiBldGhEZWZhdWx0UHJvdmlkZXIobmV0d29yayl9O3JldHVybiBmdW5jfWZ1bmN0aW9uIGV0Y0RlZmF1bHRQcm92aWRlcih1cmwsbmV0d29yayl7dmFyIGZ1bmM9ZnVuY3Rpb24ocHJvdmlkZXJzLG9wdGlvbnMpe2lmKHByb3ZpZGVycy5Kc29uUnBjUHJvdmlkZXIpe3JldHVybiBuZXcgcHJvdmlkZXJzLkpzb25ScGNQcm92aWRlcih1cmwsbmV0d29yayl9cmV0dXJuIG51bGx9O2Z1bmMucmVuZXR3b3JrPWZ1bmN0aW9uKG5ldHdvcmspe3JldHVybiBldGNEZWZhdWx0UHJvdmlkZXIodXJsLG5ldHdvcmspfTtyZXR1cm4gZnVuY312YXIgaG9tZXN0ZWFkPXtjaGFpbklkOjEsZW5zQWRkcmVzczoiMHgwMDAwMDAwMDAwMEMyRTA3NGVDNjlBMGRGYjI5OTdCQTZDN2QyZTFlIixuYW1lOiJob21lc3RlYWQiLF9kZWZhdWx0UHJvdmlkZXI6ZXRoRGVmYXVsdFByb3ZpZGVyKCJob21lc3RlYWQiKX07dmFyIHJvcHN0ZW49e2NoYWluSWQ6MyxlbnNBZGRyZXNzOiIweDAwMDAwMDAwMDAwQzJFMDc0ZUM2OUEwZEZiMjk5N0JBNkM3ZDJlMWUiLG5hbWU6InJvcHN0ZW4iLF9kZWZhdWx0UHJvdmlkZXI6ZXRoRGVmYXVsdFByb3ZpZGVyKCJyb3BzdGVuIil9O3ZhciBjbGFzc2ljTW9yZG9yPXtjaGFpbklkOjYzLG5hbWU6ImNsYXNzaWNNb3Jkb3IiLF9kZWZhdWx0UHJvdmlkZXI6ZXRjRGVmYXVsdFByb3ZpZGVyKCJodHRwczovL3d3dy5ldGhlcmNsdXN0ZXIuY29tL21vcmRvciIsImNsYXNzaWNNb3Jkb3IiKX07dmFyIG5ldHdvcmtzPXt1bnNwZWNpZmllZDp7Y2hhaW5JZDowLG5hbWU6InVuc3BlY2lmaWVkIn0saG9tZXN0ZWFkOmhvbWVzdGVhZCxtYWlubmV0OmhvbWVzdGVhZCxtb3JkZW46e2NoYWluSWQ6MixuYW1lOiJtb3JkZW4ifSxyb3BzdGVuOnJvcHN0ZW4sdGVzdG5ldDpyb3BzdGVuLHJpbmtlYnk6e2NoYWluSWQ6NCxlbnNBZGRyZXNzOiIweDAwMDAwMDAwMDAwQzJFMDc0ZUM2OUEwZEZiMjk5N0JBNkM3ZDJlMWUiLG5hbWU6InJpbmtlYnkiLF9kZWZhdWx0UHJvdmlkZXI6ZXRoRGVmYXVsdFByb3ZpZGVyKCJyaW5rZWJ5Iil9LGtvdmFuOntjaGFpbklkOjQyLG5hbWU6ImtvdmFuIixfZGVmYXVsdFByb3ZpZGVyOmV0aERlZmF1bHRQcm92aWRlcigia292YW4iKX0sZ29lcmxpOntjaGFpbklkOjUsZW5zQWRkcmVzczoiMHgwMDAwMDAwMDAwMEMyRTA3NGVDNjlBMGRGYjI5OTdCQTZDN2QyZTFlIixuYW1lOiJnb2VybGkiLF9kZWZhdWx0UHJvdmlkZXI6ZXRoRGVmYXVsdFByb3ZpZGVyKCJnb2VybGkiKX0sY2xhc3NpYzp7Y2hhaW5JZDo2MSxuYW1lOiJjbGFzc2ljIixfZGVmYXVsdFByb3ZpZGVyOmV0Y0RlZmF1bHRQcm92aWRlcigiaHR0cHM6Ly93d3cuZXRoZXJjbHVzdGVyLmNvbS9ldGMiLCJjbGFzc2ljIil9LGNsYXNzaWNNb3JkZW46e2NoYWluSWQ6NjIsbmFtZToiY2xhc3NpY01vcmRlbiJ9LGNsYXNzaWNNb3Jkb3I6Y2xhc3NpY01vcmRvcixjbGFzc2ljVGVzdG5ldDpjbGFzc2ljTW9yZG9yLGNsYXNzaWNLb3R0aTp7Y2hhaW5JZDo2LG5hbWU6ImNsYXNzaWNLb3R0aSIsX2RlZmF1bHRQcm92aWRlcjpldGNEZWZhdWx0UHJvdmlkZXIoImh0dHBzOi8vd3d3LmV0aGVyY2x1c3Rlci5jb20va290dGkiLCJjbGFzc2ljS290dGkiKX0seGRhaTp7Y2hhaW5JZDoxMDAsbmFtZToieGRhaSJ9LG1hdGljOntjaGFpbklkOjEzNyxuYW1lOiJtYXRpYyJ9LGJuYjp7Y2hhaW5JZDo1NixuYW1lOiJibmIifSxibmJ0OntjaGFpbklkOjk3LG5hbWU6ImJuYnQifX07ZnVuY3Rpb24gZ2V0TmV0d29yayhuZXR3b3JrKXtpZihuZXR3b3JrPT1udWxsKXtyZXR1cm4gbnVsbH1pZih0eXBlb2YgbmV0d29yaz09PSJudW1iZXIiKXtmb3IodmFyIG5hbWVfMSBpbiBuZXR3b3Jrcyl7dmFyIHN0YW5kYXJkXzE9bmV0d29ya3NbbmFtZV8xXTtpZihzdGFuZGFyZF8xLmNoYWluSWQ9PT1uZXR3b3JrKXtyZXR1cm57bmFtZTpzdGFuZGFyZF8xLm5hbWUsY2hhaW5JZDpzdGFuZGFyZF8xLmNoYWluSWQsZW5zQWRkcmVzczpzdGFuZGFyZF8xLmVuc0FkZHJlc3N8fG51bGwsX2RlZmF1bHRQcm92aWRlcjpzdGFuZGFyZF8xLl9kZWZhdWx0UHJvdmlkZXJ8fG51bGx9fX1yZXR1cm57Y2hhaW5JZDpuZXR3b3JrLG5hbWU6InVua25vd24ifX1pZih0eXBlb2YgbmV0d29yaz09PSJzdHJpbmciKXt2YXIgc3RhbmRhcmRfMj1uZXR3b3Jrc1tuZXR3b3JrXTtpZihzdGFuZGFyZF8yPT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm57bmFtZTpzdGFuZGFyZF8yLm5hbWUsY2hhaW5JZDpzdGFuZGFyZF8yLmNoYWluSWQsZW5zQWRkcmVzczpzdGFuZGFyZF8yLmVuc0FkZHJlc3MsX2RlZmF1bHRQcm92aWRlcjpzdGFuZGFyZF8yLl9kZWZhdWx0UHJvdmlkZXJ8fG51bGx9fXZhciBzdGFuZGFyZD1uZXR3b3Jrc1tuZXR3b3JrLm5hbWVdO2lmKCFzdGFuZGFyZCl7aWYodHlwZW9mIG5ldHdvcmsuY2hhaW5JZCE9PSJudW1iZXIiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG5ldHdvcmsgY2hhaW5JZCIsIm5ldHdvcmsiLG5ldHdvcmspfXJldHVybiBuZXR3b3JrfWlmKG5ldHdvcmsuY2hhaW5JZCE9PTAmJm5ldHdvcmsuY2hhaW5JZCE9PXN0YW5kYXJkLmNoYWluSWQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5ldHdvcmsgY2hhaW5JZCBtaXNtYXRjaCIsIm5ldHdvcmsiLG5ldHdvcmspfXZhciBkZWZhdWx0UHJvdmlkZXI9bmV0d29yay5fZGVmYXVsdFByb3ZpZGVyfHxudWxsO2lmKGRlZmF1bHRQcm92aWRlcj09bnVsbCYmc3RhbmRhcmQuX2RlZmF1bHRQcm92aWRlcil7aWYoaXNSZW5ldHdvcmthYmxlKHN0YW5kYXJkLl9kZWZhdWx0UHJvdmlkZXIpKXtkZWZhdWx0UHJvdmlkZXI9c3RhbmRhcmQuX2RlZmF1bHRQcm92aWRlci5yZW5ldHdvcmsobmV0d29yayl9ZWxzZXtkZWZhdWx0UHJvdmlkZXI9c3RhbmRhcmQuX2RlZmF1bHRQcm92aWRlcn19cmV0dXJue25hbWU6bmV0d29yay5uYW1lLGNoYWluSWQ6c3RhbmRhcmQuY2hhaW5JZCxlbnNBZGRyZXNzOm5ldHdvcmsuZW5zQWRkcmVzc3x8c3RhbmRhcmQuZW5zQWRkcmVzc3x8bnVsbCxfZGVmYXVsdFByb3ZpZGVyOmRlZmF1bHRQcm92aWRlcn19ZXhwb3J0cy5nZXROZXR3b3JrPWdldE5ldHdvcmt9KTt2YXIgaW5kZXgkbz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkbyk7dmFyIGJyb3dzZXJCYXNlNjQ9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmVuY29kZT1leHBvcnRzLmRlY29kZT12b2lkIDA7ZnVuY3Rpb24gZGVjb2RlKHRleHREYXRhKXt0ZXh0RGF0YT1hdG9iKHRleHREYXRhKTt2YXIgZGF0YT1bXTtmb3IodmFyIGk9MDtpPHRleHREYXRhLmxlbmd0aDtpKyspe2RhdGEucHVzaCh0ZXh0RGF0YS5jaGFyQ29kZUF0KGkpKX1yZXR1cm4gbGliJDEuYXJyYXlpZnkoZGF0YSl9ZXhwb3J0cy5kZWNvZGU9ZGVjb2RlO2Z1bmN0aW9uIGVuY29kZShkYXRhKXtkYXRhPWxpYiQxLmFycmF5aWZ5KGRhdGEpO3ZhciB0ZXh0RGF0YT0iIjtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKyl7dGV4dERhdGErPVN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YVtpXSl9cmV0dXJuIGJ0b2EodGV4dERhdGEpfWV4cG9ydHMuZW5jb2RlPWVuY29kZX0pO3ZhciBicm93c2VyQmFzZTY0JDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnJvd3NlckJhc2U2NCk7dmFyIGxpYiRwPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5lbmNvZGU9ZXhwb3J0cy5kZWNvZGU9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkZWNvZGUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJCYXNlNjQuZGVjb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJlbmNvZGUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJCYXNlNjQuZW5jb2RlfX0pfSk7dmFyIGluZGV4JHA9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJHApO3ZhciBfdmVyc2lvbiRHPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249IndlYi81LjIuMCJ9KTt2YXIgX3ZlcnNpb24kSD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRHKTt2YXIgYnJvd3NlckdldHVybD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5nZXRVcmw9dm9pZCAwO2Z1bmN0aW9uIGdldFVybChocmVmLG9wdGlvbnMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlcXVlc3QscmVzcG9uc2UsYm9keSxoZWFkZXJzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZihvcHRpb25zPT1udWxsKXtvcHRpb25zPXt9fXJlcXVlc3Q9e21ldGhvZDpvcHRpb25zLm1ldGhvZHx8IkdFVCIsaGVhZGVyczpvcHRpb25zLmhlYWRlcnN8fHt9LGJvZHk6b3B0aW9ucy5ib2R5fHx1bmRlZmluZWQsbW9kZToiY29ycyIsY2FjaGU6Im5vLWNhY2hlIixjcmVkZW50aWFsczoic2FtZS1vcmlnaW4iLHJlZGlyZWN0OiJmb2xsb3ciLHJlZmVycmVyOiJjbGllbnQifTtyZXR1cm5bNCxmZXRjaChocmVmLHJlcXVlc3QpXTtjYXNlIDE6cmVzcG9uc2U9X2Euc2VudCgpO3JldHVybls0LHJlc3BvbnNlLmFycmF5QnVmZmVyKCldO2Nhc2UgMjpib2R5PV9hLnNlbnQoKTtoZWFkZXJzPXt9O2lmKHJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCl7cmVzcG9uc2UuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLGtleSl7aGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV09dmFsdWV9KX1lbHNle3Jlc3BvbnNlLmhlYWRlcnMua2V5cygpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtoZWFkZXJzW2tleS50b0xvd2VyQ2FzZSgpXT1yZXNwb25zZS5oZWFkZXJzLmdldChrZXkpfSl9cmV0dXJuWzIse2hlYWRlcnM6aGVhZGVycyxzdGF0dXNDb2RlOnJlc3BvbnNlLnN0YXR1cyxzdGF0dXNNZXNzYWdlOnJlc3BvbnNlLnN0YXR1c1RleHQsYm9keTpsaWIkMS5hcnJheWlmeShuZXcgVWludDhBcnJheShib2R5KSl9XX19KX0pfWV4cG9ydHMuZ2V0VXJsPWdldFVybH0pO3ZhciBicm93c2VyR2V0dXJsJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnJvd3NlckdldHVybCk7dmFyIGxpYiRxPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnBvbGw9ZXhwb3J0cy5mZXRjaEpzb249ZXhwb3J0cy5fZmV0Y2hEYXRhPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEcudmVyc2lvbik7ZnVuY3Rpb24gc3RhbGxlcihkdXJhdGlvbil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpe3NldFRpbWVvdXQocmVzb2x2ZSxkdXJhdGlvbil9KX1mdW5jdGlvbiBib2R5aWZ5KHZhbHVlLHR5cGUpe2lmKHZhbHVlPT1udWxsKXtyZXR1cm4gbnVsbH1pZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIHZhbHVlfWlmKGxpYiQxLmlzQnl0ZXNMaWtlKHZhbHVlKSl7aWYodHlwZSYmKHR5cGUuc3BsaXQoIi8iKVswXT09PSJ0ZXh0Inx8dHlwZS5zcGxpdCgiOyIpWzBdLnRyaW0oKT09PSJhcHBsaWNhdGlvbi9qc29uIikpe3RyeXtyZXR1cm4gbGliJDgudG9VdGY4U3RyaW5nKHZhbHVlKX1jYXRjaChlcnJvcil7fX1yZXR1cm4gbGliJDEuaGV4bGlmeSh2YWx1ZSl9cmV0dXJuIHZhbHVlfWZ1bmN0aW9uIF9mZXRjaERhdGEoY29ubmVjdGlvbixib2R5LHByb2Nlc3NGdW5jKXt2YXIgYXR0ZW1wdExpbWl0PXR5cGVvZiBjb25uZWN0aW9uPT09Im9iamVjdCImJmNvbm5lY3Rpb24udGhyb3R0bGVMaW1pdCE9bnVsbD9jb25uZWN0aW9uLnRocm90dGxlTGltaXQ6MTI7bG9nZ2VyLmFzc2VydEFyZ3VtZW50KGF0dGVtcHRMaW1pdD4wJiZhdHRlbXB0TGltaXQlMT09PTAsImludmFsaWQgY29ubmVjdGlvbiB0aHJvdHRsZSBsaW1pdCIsImNvbm5lY3Rpb24udGhyb3R0bGVMaW1pdCIsYXR0ZW1wdExpbWl0KTt2YXIgdGhyb3R0bGVDYWxsYmFjaz10eXBlb2YgY29ubmVjdGlvbj09PSJvYmplY3QiP2Nvbm5lY3Rpb24udGhyb3R0bGVDYWxsYmFjazpudWxsO3ZhciB0aHJvdHRsZVNsb3RJbnRlcnZhbD10eXBlb2YgY29ubmVjdGlvbj09PSJvYmplY3QiJiZ0eXBlb2YgY29ubmVjdGlvbi50aHJvdHRsZVNsb3RJbnRlcnZhbD09PSJudW1iZXIiP2Nvbm5lY3Rpb24udGhyb3R0bGVTbG90SW50ZXJ2YWw6MTAwO2xvZ2dlci5hc3NlcnRBcmd1bWVudCh0aHJvdHRsZVNsb3RJbnRlcnZhbD4wJiZ0aHJvdHRsZVNsb3RJbnRlcnZhbCUxPT09MCwiaW52YWxpZCBjb25uZWN0aW9uIHRocm90dGxlIHNsb3QgaW50ZXJ2YWwiLCJjb25uZWN0aW9uLnRocm90dGxlU2xvdEludGVydmFsIix0aHJvdHRsZVNsb3RJbnRlcnZhbCk7dmFyIGhlYWRlcnM9e307dmFyIHVybD1udWxsO3ZhciBvcHRpb25zPXttZXRob2Q6IkdFVCJ9O3ZhciBhbGxvdzMwND1mYWxzZTt2YXIgdGltZW91dD0yKjYwKjFlMztpZih0eXBlb2YgY29ubmVjdGlvbj09PSJzdHJpbmciKXt1cmw9Y29ubmVjdGlvbn1lbHNlIGlmKHR5cGVvZiBjb25uZWN0aW9uPT09Im9iamVjdCIpe2lmKGNvbm5lY3Rpb249PW51bGx8fGNvbm5lY3Rpb24udXJsPT1udWxsKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJtaXNzaW5nIFVSTCIsImNvbm5lY3Rpb24udXJsIixjb25uZWN0aW9uKX11cmw9Y29ubmVjdGlvbi51cmw7aWYodHlwZW9mIGNvbm5lY3Rpb24udGltZW91dD09PSJudW1iZXIiJiZjb25uZWN0aW9uLnRpbWVvdXQ+MCl7dGltZW91dD1jb25uZWN0aW9uLnRpbWVvdXR9aWYoY29ubmVjdGlvbi5oZWFkZXJzKXtmb3IodmFyIGtleSBpbiBjb25uZWN0aW9uLmhlYWRlcnMpe2hlYWRlcnNba2V5LnRvTG93ZXJDYXNlKCldPXtrZXk6a2V5LHZhbHVlOlN0cmluZyhjb25uZWN0aW9uLmhlYWRlcnNba2V5XSl9O2lmKFsiaWYtbm9uZS1tYXRjaCIsImlmLW1vZGlmaWVkLXNpbmNlIl0uaW5kZXhPZihrZXkudG9Mb3dlckNhc2UoKSk+PTApe2FsbG93MzA0PXRydWV9fX1vcHRpb25zLmFsbG93R3ppcD0hIWNvbm5lY3Rpb24uYWxsb3dHemlwO2lmKGNvbm5lY3Rpb24udXNlciE9bnVsbCYmY29ubmVjdGlvbi5wYXNzd29yZCE9bnVsbCl7aWYodXJsLnN1YnN0cmluZygwLDYpIT09Imh0dHBzOiImJmNvbm5lY3Rpb24uYWxsb3dJbnNlY3VyZUF1dGhlbnRpY2F0aW9uIT09dHJ1ZSl7bG9nZ2VyLnRocm93RXJyb3IoImJhc2ljIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVzIGEgc2VjdXJlIGh0dHBzIHVybCIsbGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7YXJndW1lbnQ6InVybCIsdXJsOnVybCx1c2VyOmNvbm5lY3Rpb24udXNlcixwYXNzd29yZDoiW1JFREFDVEVEXSJ9KX12YXIgYXV0aG9yaXphdGlvbj1jb25uZWN0aW9uLnVzZXIrIjoiK2Nvbm5lY3Rpb24ucGFzc3dvcmQ7aGVhZGVyc1siYXV0aG9yaXphdGlvbiJdPXtrZXk6IkF1dGhvcml6YXRpb24iLHZhbHVlOiJCYXNpYyAiK2xpYiRwLmVuY29kZShsaWIkOC50b1V0ZjhCeXRlcyhhdXRob3JpemF0aW9uKSl9fX1pZihib2R5KXtvcHRpb25zLm1ldGhvZD0iUE9TVCI7b3B0aW9ucy5ib2R5PWJvZHk7aWYoaGVhZGVyc1siY29udGVudC10eXBlIl09PW51bGwpe2hlYWRlcnNbImNvbnRlbnQtdHlwZSJdPXtrZXk6IkNvbnRlbnQtVHlwZSIsdmFsdWU6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9fWlmKGhlYWRlcnNbImNvbnRlbnQtbGVuZ3RoIl09PW51bGwpe2hlYWRlcnNbImNvbnRlbnQtbGVuZ3RoIl09e2tleToiQ29udGVudC1MZW5ndGgiLHZhbHVlOlN0cmluZyhib2R5Lmxlbmd0aCl9fX12YXIgZmxhdEhlYWRlcnM9e307T2JqZWN0LmtleXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihrZXkpe3ZhciBoZWFkZXI9aGVhZGVyc1trZXldO2ZsYXRIZWFkZXJzW2hlYWRlci5rZXldPWhlYWRlci52YWx1ZX0pO29wdGlvbnMuaGVhZGVycz1mbGF0SGVhZGVyczt2YXIgcnVubmluZ1RpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdGltZXI9bnVsbDt2YXIgcHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7aWYodGltZW91dCl7dGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHRpbWVyPT1udWxsKXtyZXR1cm59dGltZXI9bnVsbDtyZWplY3QobG9nZ2VyLm1ha2VFcnJvcigidGltZW91dCIsbGliLkxvZ2dlci5lcnJvcnMuVElNRU9VVCx7cmVxdWVzdEJvZHk6Ym9keWlmeShvcHRpb25zLmJvZHksZmxhdEhlYWRlcnNbImNvbnRlbnQtdHlwZSJdKSxyZXF1ZXN0TWV0aG9kOm9wdGlvbnMubWV0aG9kLHRpbWVvdXQ6dGltZW91dCx1cmw6dXJsfSkpfSx0aW1lb3V0KX19KTt2YXIgY2FuY2VsPWZ1bmN0aW9uKCl7aWYodGltZXI9PW51bGwpe3JldHVybn1jbGVhclRpbWVvdXQodGltZXIpO3RpbWVyPW51bGx9O3JldHVybntwcm9taXNlOnByb21pc2UsY2FuY2VsOmNhbmNlbH19KCk7dmFyIHJ1bm5pbmdGZXRjaD1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGF0dGVtcHQscmVzcG9uc2UsdHJ5QWdhaW4sc3RhbGwscmV0cnlBZnRlcixlcnJvcl8xLGJvZHlfMSxyZXN1bHQsZXJyb3JfMix0cnlBZ2Fpbix0aW1lb3V0XzE7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmF0dGVtcHQ9MDtfYS5sYWJlbD0xO2Nhc2UgMTppZighKGF0dGVtcHQ8YXR0ZW1wdExpbWl0KSlyZXR1cm5bMywxOV07cmVzcG9uc2U9bnVsbDtfYS5sYWJlbD0yO2Nhc2UgMjpfYS50cnlzLnB1c2goWzIsOCwsOV0pO3JldHVybls0LGJyb3dzZXJHZXR1cmwuZ2V0VXJsKHVybCxvcHRpb25zKV07Y2FzZSAzOnJlc3BvbnNlPV9hLnNlbnQoKTtpZighKHJlc3BvbnNlLnN0YXR1c0NvZGU9PT00MjkmJmF0dGVtcHQ8YXR0ZW1wdExpbWl0KSlyZXR1cm5bMyw3XTt0cnlBZ2Fpbj10cnVlO2lmKCF0aHJvdHRsZUNhbGxiYWNrKXJldHVyblszLDVdO3JldHVybls0LHRocm90dGxlQ2FsbGJhY2soYXR0ZW1wdCx1cmwpXTtjYXNlIDQ6dHJ5QWdhaW49X2Euc2VudCgpO19hLmxhYmVsPTU7Y2FzZSA1OmlmKCF0cnlBZ2FpbilyZXR1cm5bMyw3XTtzdGFsbD0wO3JldHJ5QWZ0ZXI9cmVzcG9uc2UuaGVhZGVyc1sicmV0cnktYWZ0ZXIiXTtpZih0eXBlb2YgcmV0cnlBZnRlcj09PSJzdHJpbmciJiZyZXRyeUFmdGVyLm1hdGNoKC9eWzEtOV1bMC05XSokLykpe3N0YWxsPXBhcnNlSW50KHJldHJ5QWZ0ZXIpKjFlM31lbHNle3N0YWxsPXRocm90dGxlU2xvdEludGVydmFsKnBhcnNlSW50KFN0cmluZyhNYXRoLnJhbmRvbSgpKk1hdGgucG93KDIsYXR0ZW1wdCkpKX1yZXR1cm5bNCxzdGFsbGVyKHN0YWxsKV07Y2FzZSA2Ol9hLnNlbnQoKTtyZXR1cm5bMywxOF07Y2FzZSA3OnJldHVyblszLDldO2Nhc2UgODplcnJvcl8xPV9hLnNlbnQoKTtyZXNwb25zZT1lcnJvcl8xLnJlc3BvbnNlO2lmKHJlc3BvbnNlPT1udWxsKXtydW5uaW5nVGltZW91dC5jYW5jZWwoKTtsb2dnZXIudGhyb3dFcnJvcigibWlzc2luZyByZXNwb25zZSIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHtyZXF1ZXN0Qm9keTpib2R5aWZ5KG9wdGlvbnMuYm9keSxmbGF0SGVhZGVyc1siY29udGVudC10eXBlIl0pLHJlcXVlc3RNZXRob2Q6b3B0aW9ucy5tZXRob2Qsc2VydmVyRXJyb3I6ZXJyb3JfMSx1cmw6dXJsfSl9cmV0dXJuWzMsOV07Y2FzZSA5OmJvZHlfMT1yZXNwb25zZS5ib2R5O2lmKGFsbG93MzA0JiZyZXNwb25zZS5zdGF0dXNDb2RlPT09MzA0KXtib2R5XzE9bnVsbH1lbHNlIGlmKHJlc3BvbnNlLnN0YXR1c0NvZGU8MjAwfHxyZXNwb25zZS5zdGF0dXNDb2RlPj0zMDApe3J1bm5pbmdUaW1lb3V0LmNhbmNlbCgpO2xvZ2dlci50aHJvd0Vycm9yKCJiYWQgcmVzcG9uc2UiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7c3RhdHVzOnJlc3BvbnNlLnN0YXR1c0NvZGUsaGVhZGVyczpyZXNwb25zZS5oZWFkZXJzLGJvZHk6Ym9keWlmeShib2R5XzEscmVzcG9uc2UuaGVhZGVycz9yZXNwb25zZS5oZWFkZXJzWyJjb250ZW50LXR5cGUiXTpudWxsKSxyZXF1ZXN0Qm9keTpib2R5aWZ5KG9wdGlvbnMuYm9keSxmbGF0SGVhZGVyc1siY29udGVudC10eXBlIl0pLHJlcXVlc3RNZXRob2Q6b3B0aW9ucy5tZXRob2QsdXJsOnVybH0pfWlmKCFwcm9jZXNzRnVuYylyZXR1cm5bMywxN107X2EubGFiZWw9MTA7Y2FzZSAxMDpfYS50cnlzLnB1c2goWzEwLDEyLCwxN10pO3JldHVybls0LHByb2Nlc3NGdW5jKGJvZHlfMSxyZXNwb25zZSldO2Nhc2UgMTE6cmVzdWx0PV9hLnNlbnQoKTtydW5uaW5nVGltZW91dC5jYW5jZWwoKTtyZXR1cm5bMixyZXN1bHRdO2Nhc2UgMTI6ZXJyb3JfMj1fYS5zZW50KCk7aWYoIShlcnJvcl8yLnRocm90dGxlUmV0cnkmJmF0dGVtcHQ8YXR0ZW1wdExpbWl0KSlyZXR1cm5bMywxNl07dHJ5QWdhaW49dHJ1ZTtpZighdGhyb3R0bGVDYWxsYmFjaylyZXR1cm5bMywxNF07cmV0dXJuWzQsdGhyb3R0bGVDYWxsYmFjayhhdHRlbXB0LHVybCldO2Nhc2UgMTM6dHJ5QWdhaW49X2Euc2VudCgpO19hLmxhYmVsPTE0O2Nhc2UgMTQ6aWYoIXRyeUFnYWluKXJldHVyblszLDE2XTt0aW1lb3V0XzE9dGhyb3R0bGVTbG90SW50ZXJ2YWwqcGFyc2VJbnQoU3RyaW5nKE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMixhdHRlbXB0KSkpO3JldHVybls0LHN0YWxsZXIodGltZW91dF8xKV07Y2FzZSAxNTpfYS5zZW50KCk7cmV0dXJuWzMsMThdO2Nhc2UgMTY6cnVubmluZ1RpbWVvdXQuY2FuY2VsKCk7bG9nZ2VyLnRocm93RXJyb3IoInByb2Nlc3NpbmcgcmVzcG9uc2UgZXJyb3IiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7Ym9keTpib2R5aWZ5KGJvZHlfMSxyZXNwb25zZS5oZWFkZXJzP3Jlc3BvbnNlLmhlYWRlcnNbImNvbnRlbnQtdHlwZSJdOm51bGwpLGVycm9yOmVycm9yXzIscmVxdWVzdEJvZHk6Ym9keWlmeShvcHRpb25zLmJvZHksZmxhdEhlYWRlcnNbImNvbnRlbnQtdHlwZSJdKSxyZXF1ZXN0TWV0aG9kOm9wdGlvbnMubWV0aG9kLHVybDp1cmx9KTtyZXR1cm5bMywxN107Y2FzZSAxNzpydW5uaW5nVGltZW91dC5jYW5jZWwoKTtyZXR1cm5bMixib2R5XzFdO2Nhc2UgMTg6YXR0ZW1wdCsrO3JldHVyblszLDFdO2Nhc2UgMTk6cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImZhaWxlZCByZXNwb25zZSIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHtyZXF1ZXN0Qm9keTpib2R5aWZ5KG9wdGlvbnMuYm9keSxmbGF0SGVhZGVyc1siY29udGVudC10eXBlIl0pLHJlcXVlc3RNZXRob2Q6b3B0aW9ucy5tZXRob2QsdXJsOnVybH0pXX19KX0pfSgpO3JldHVybiBQcm9taXNlLnJhY2UoW3J1bm5pbmdUaW1lb3V0LnByb21pc2UscnVubmluZ0ZldGNoXSl9ZXhwb3J0cy5fZmV0Y2hEYXRhPV9mZXRjaERhdGE7ZnVuY3Rpb24gZmV0Y2hKc29uKGNvbm5lY3Rpb24sanNvbixwcm9jZXNzRnVuYyl7dmFyIHByb2Nlc3NKc29uRnVuYz1mdW5jdGlvbih2YWx1ZSxyZXNwb25zZSl7dmFyIHJlc3VsdD1udWxsO2lmKHZhbHVlIT1udWxsKXt0cnl7cmVzdWx0PUpTT04ucGFyc2UobGliJDgudG9VdGY4U3RyaW5nKHZhbHVlKSl9Y2F0Y2goZXJyb3Ipe2xvZ2dlci50aHJvd0Vycm9yKCJpbnZhbGlkIEpTT04iLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7Ym9keTp2YWx1ZSxlcnJvcjplcnJvcn0pfX1pZihwcm9jZXNzRnVuYyl7cmVzdWx0PXByb2Nlc3NGdW5jKHJlc3VsdCxyZXNwb25zZSl9cmV0dXJuIHJlc3VsdH07dmFyIGJvZHk9bnVsbDtpZihqc29uIT1udWxsKXtib2R5PWxpYiQ4LnRvVXRmOEJ5dGVzKGpzb24pO3ZhciB1cGRhdGVkPXR5cGVvZiBjb25uZWN0aW9uPT09InN0cmluZyI/e3VybDpjb25uZWN0aW9ufTpsaWIkMy5zaGFsbG93Q29weShjb25uZWN0aW9uKTtpZih1cGRhdGVkLmhlYWRlcnMpe3ZhciBoYXNDb250ZW50VHlwZT1PYmplY3Qua2V5cyh1cGRhdGVkLmhlYWRlcnMpLmZpbHRlcihmdW5jdGlvbihrKXtyZXR1cm4gay50b0xvd2VyQ2FzZSgpPT09ImNvbnRlbnQtdHlwZSJ9KS5sZW5ndGghPT0wO2lmKCFoYXNDb250ZW50VHlwZSl7dXBkYXRlZC5oZWFkZXJzPWxpYiQzLnNoYWxsb3dDb3B5KHVwZGF0ZWQuaGVhZGVycyk7dXBkYXRlZC5oZWFkZXJzWyJjb250ZW50LXR5cGUiXT0iYXBwbGljYXRpb24vanNvbiJ9fWVsc2V7dXBkYXRlZC5oZWFkZXJzPXsiY29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiJ9fWNvbm5lY3Rpb249dXBkYXRlZH1yZXR1cm4gX2ZldGNoRGF0YShjb25uZWN0aW9uLGJvZHkscHJvY2Vzc0pzb25GdW5jKX1leHBvcnRzLmZldGNoSnNvbj1mZXRjaEpzb247ZnVuY3Rpb24gcG9sbChmdW5jLG9wdGlvbnMpe2lmKCFvcHRpb25zKXtvcHRpb25zPXt9fW9wdGlvbnM9bGliJDMuc2hhbGxvd0NvcHkob3B0aW9ucyk7aWYob3B0aW9ucy5mbG9vcj09bnVsbCl7b3B0aW9ucy5mbG9vcj0wfWlmKG9wdGlvbnMuY2VpbGluZz09bnVsbCl7b3B0aW9ucy5jZWlsaW5nPTFlNH1pZihvcHRpb25zLmludGVydmFsPT1udWxsKXtvcHRpb25zLmludGVydmFsPTI1MH1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe3ZhciB0aW1lcj1udWxsO3ZhciBkb25lPWZhbHNlO3ZhciBjYW5jZWw9ZnVuY3Rpb24oKXtpZihkb25lKXtyZXR1cm4gZmFsc2V9ZG9uZT10cnVlO2lmKHRpbWVyKXtjbGVhclRpbWVvdXQodGltZXIpfXJldHVybiB0cnVlfTtpZihvcHRpb25zLnRpbWVvdXQpe3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihjYW5jZWwoKSl7cmVqZWN0KG5ldyBFcnJvcigidGltZW91dCIpKX19LG9wdGlvbnMudGltZW91dCl9dmFyIHJldHJ5TGltaXQ9b3B0aW9ucy5yZXRyeUxpbWl0O3ZhciBhdHRlbXB0PTA7ZnVuY3Rpb24gY2hlY2soKXtyZXR1cm4gZnVuYygpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtpZihyZXN1bHQhPT11bmRlZmluZWQpe2lmKGNhbmNlbCgpKXtyZXNvbHZlKHJlc3VsdCl9fWVsc2UgaWYob3B0aW9ucy5vbmNlUG9sbCl7b3B0aW9ucy5vbmNlUG9sbC5vbmNlKCJwb2xsIixjaGVjayl9ZWxzZSBpZihvcHRpb25zLm9uY2VCbG9jayl7b3B0aW9ucy5vbmNlQmxvY2sub25jZSgiYmxvY2siLGNoZWNrKX1lbHNlIGlmKCFkb25lKXthdHRlbXB0Kys7aWYoYXR0ZW1wdD5yZXRyeUxpbWl0KXtpZihjYW5jZWwoKSl7cmVqZWN0KG5ldyBFcnJvcigicmV0cnkgbGltaXQgcmVhY2hlZCIpKX1yZXR1cm59dmFyIHRpbWVvdXQ9b3B0aW9ucy5pbnRlcnZhbCpwYXJzZUludChTdHJpbmcoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygyLGF0dGVtcHQpKSk7aWYodGltZW91dDxvcHRpb25zLmZsb29yKXt0aW1lb3V0PW9wdGlvbnMuZmxvb3J9aWYodGltZW91dD5vcHRpb25zLmNlaWxpbmcpe3RpbWVvdXQ9b3B0aW9ucy5jZWlsaW5nfXNldFRpbWVvdXQoY2hlY2ssdGltZW91dCl9cmV0dXJuIG51bGx9LGZ1bmN0aW9uKGVycm9yKXtpZihjYW5jZWwoKSl7cmVqZWN0KGVycm9yKX19KX1jaGVjaygpfSl9ZXhwb3J0cy5wb2xsPXBvbGx9KTt2YXIgaW5kZXgkcT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkcSk7InVzZSBzdHJpY3QiO3ZhciBBTFBIQUJFVD0icXB6cnk5eDhnZjJ0dmR3MHMzam41NGtoY2U2bXVhN2wiO3ZhciBBTFBIQUJFVF9NQVA9e307Zm9yKHZhciB6PTA7ejxBTFBIQUJFVC5sZW5ndGg7eisrKXt2YXIgeD1BTFBIQUJFVC5jaGFyQXQoeik7aWYoQUxQSEFCRVRfTUFQW3hdIT09dW5kZWZpbmVkKXRocm93IG5ldyBUeXBlRXJyb3IoeCsiIGlzIGFtYmlndW91cyIpO0FMUEhBQkVUX01BUFt4XT16fWZ1bmN0aW9uIHBvbHltb2RTdGVwKHByZSl7dmFyIGI9cHJlPj4yNTtyZXR1cm4ocHJlJjMzNTU0NDMxKTw8NV4tKGI+PjAmMSkmOTk2ODI1MDEwXi0oYj4+MSYxKSY2NDI4MTM1NDleLShiPj4yJjEpJjUxMzg3NDQyNl4tKGI+PjMmMSkmMTAyNzc0ODgyOV4tKGI+PjQmMSkmNzA1OTc5MDU5fWZ1bmN0aW9uIHByZWZpeENoayhwcmVmaXgpe3ZhciBjaGs9MTtmb3IodmFyIGk9MDtpPHByZWZpeC5sZW5ndGg7KytpKXt2YXIgYz1wcmVmaXguY2hhckNvZGVBdChpKTtpZihjPDMzfHxjPjEyNilyZXR1cm4iSW52YWxpZCBwcmVmaXggKCIrcHJlZml4KyIpIjtjaGs9cG9seW1vZFN0ZXAoY2hrKV5jPj41fWNoaz1wb2x5bW9kU3RlcChjaGspO2ZvcihpPTA7aTxwcmVmaXgubGVuZ3RoOysraSl7dmFyIHY9cHJlZml4LmNoYXJDb2RlQXQoaSk7Y2hrPXBvbHltb2RTdGVwKGNoaylediYzMX1yZXR1cm4gY2hrfWZ1bmN0aW9uIGVuY29kZShwcmVmaXgsd29yZHMsTElNSVQpe0xJTUlUPUxJTUlUfHw5MDtpZihwcmVmaXgubGVuZ3RoKzcrd29yZHMubGVuZ3RoPkxJTUlUKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4Y2VlZHMgbGVuZ3RoIGxpbWl0Iik7cHJlZml4PXByZWZpeC50b0xvd2VyQ2FzZSgpO3ZhciBjaGs9cHJlZml4Q2hrKHByZWZpeCk7aWYodHlwZW9mIGNoaz09PSJzdHJpbmciKXRocm93IG5ldyBFcnJvcihjaGspO3ZhciByZXN1bHQ9cHJlZml4KyIxIjtmb3IodmFyIGk9MDtpPHdvcmRzLmxlbmd0aDsrK2kpe3ZhciB4PXdvcmRzW2ldO2lmKHg+PjUhPT0wKXRocm93IG5ldyBFcnJvcigiTm9uIDUtYml0IHdvcmQiKTtjaGs9cG9seW1vZFN0ZXAoY2hrKV54O3Jlc3VsdCs9QUxQSEFCRVQuY2hhckF0KHgpfWZvcihpPTA7aTw2OysraSl7Y2hrPXBvbHltb2RTdGVwKGNoayl9Y2hrXj0xO2ZvcihpPTA7aTw2OysraSl7dmFyIHY9Y2hrPj4oNS1pKSo1JjMxO3Jlc3VsdCs9QUxQSEFCRVQuY2hhckF0KHYpfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gX19kZWNvZGUoc3RyLExJTUlUKXtMSU1JVD1MSU1JVHx8OTA7aWYoc3RyLmxlbmd0aDw4KXJldHVybiBzdHIrIiB0b28gc2hvcnQiO2lmKHN0ci5sZW5ndGg+TElNSVQpcmV0dXJuIkV4Y2VlZHMgbGVuZ3RoIGxpbWl0Ijt2YXIgbG93ZXJlZD1zdHIudG9Mb3dlckNhc2UoKTt2YXIgdXBwZXJlZD1zdHIudG9VcHBlckNhc2UoKTtpZihzdHIhPT1sb3dlcmVkJiZzdHIhPT11cHBlcmVkKXJldHVybiJNaXhlZC1jYXNlIHN0cmluZyAiK3N0cjtzdHI9bG93ZXJlZDt2YXIgc3BsaXQ9c3RyLmxhc3RJbmRleE9mKCIxIik7aWYoc3BsaXQ9PT0tMSlyZXR1cm4iTm8gc2VwYXJhdG9yIGNoYXJhY3RlciBmb3IgIitzdHI7aWYoc3BsaXQ9PT0wKXJldHVybiJNaXNzaW5nIHByZWZpeCBmb3IgIitzdHI7dmFyIHByZWZpeD1zdHIuc2xpY2UoMCxzcGxpdCk7dmFyIHdvcmRDaGFycz1zdHIuc2xpY2Uoc3BsaXQrMSk7aWYod29yZENoYXJzLmxlbmd0aDw2KXJldHVybiJEYXRhIHRvbyBzaG9ydCI7dmFyIGNoaz1wcmVmaXhDaGsocHJlZml4KTtpZih0eXBlb2YgY2hrPT09InN0cmluZyIpcmV0dXJuIGNoazt2YXIgd29yZHM9W107Zm9yKHZhciBpPTA7aTx3b3JkQ2hhcnMubGVuZ3RoOysraSl7dmFyIGM9d29yZENoYXJzLmNoYXJBdChpKTt2YXIgdj1BTFBIQUJFVF9NQVBbY107aWYodj09PXVuZGVmaW5lZClyZXR1cm4iVW5rbm93biBjaGFyYWN0ZXIgIitjO2Noaz1wb2x5bW9kU3RlcChjaGspXnY7aWYoaSs2Pj13b3JkQ2hhcnMubGVuZ3RoKWNvbnRpbnVlO3dvcmRzLnB1c2godil9aWYoY2hrIT09MSlyZXR1cm4iSW52YWxpZCBjaGVja3N1bSBmb3IgIitzdHI7cmV0dXJue3ByZWZpeDpwcmVmaXgsd29yZHM6d29yZHN9fWZ1bmN0aW9uIGRlY29kZVVuc2FmZSgpe3ZhciByZXM9X19kZWNvZGUuYXBwbHkobnVsbCxhcmd1bWVudHMpO2lmKHR5cGVvZiByZXM9PT0ib2JqZWN0IilyZXR1cm4gcmVzfWZ1bmN0aW9uIGRlY29kZShzdHIpe3ZhciByZXM9X19kZWNvZGUuYXBwbHkobnVsbCxhcmd1bWVudHMpO2lmKHR5cGVvZiByZXM9PT0ib2JqZWN0IilyZXR1cm4gcmVzO3Rocm93IG5ldyBFcnJvcihyZXMpfWZ1bmN0aW9uIGNvbnZlcnQoZGF0YSxpbkJpdHMsb3V0Qml0cyxwYWQpe3ZhciB2YWx1ZT0wO3ZhciBiaXRzPTA7dmFyIG1heFY9KDE8PG91dEJpdHMpLTE7dmFyIHJlc3VsdD1bXTtmb3IodmFyIGk9MDtpPGRhdGEubGVuZ3RoOysraSl7dmFsdWU9dmFsdWU8PGluQml0c3xkYXRhW2ldO2JpdHMrPWluQml0czt3aGlsZShiaXRzPj1vdXRCaXRzKXtiaXRzLT1vdXRCaXRzO3Jlc3VsdC5wdXNoKHZhbHVlPj5iaXRzJm1heFYpfX1pZihwYWQpe2lmKGJpdHM+MCl7cmVzdWx0LnB1c2godmFsdWU8PG91dEJpdHMtYml0cyZtYXhWKX19ZWxzZXtpZihiaXRzPj1pbkJpdHMpcmV0dXJuIkV4Y2VzcyBwYWRkaW5nIjtpZih2YWx1ZTw8b3V0Qml0cy1iaXRzJm1heFYpcmV0dXJuIk5vbi16ZXJvIHBhZGRpbmcifXJldHVybiByZXN1bHR9ZnVuY3Rpb24gdG9Xb3Jkc1Vuc2FmZShieXRlcyl7dmFyIHJlcz1jb252ZXJ0KGJ5dGVzLDgsNSx0cnVlKTtpZihBcnJheS5pc0FycmF5KHJlcykpcmV0dXJuIHJlc31mdW5jdGlvbiB0b1dvcmRzKGJ5dGVzKXt2YXIgcmVzPWNvbnZlcnQoYnl0ZXMsOCw1LHRydWUpO2lmKEFycmF5LmlzQXJyYXkocmVzKSlyZXR1cm4gcmVzO3Rocm93IG5ldyBFcnJvcihyZXMpfWZ1bmN0aW9uIGZyb21Xb3Jkc1Vuc2FmZSh3b3Jkcyl7dmFyIHJlcz1jb252ZXJ0KHdvcmRzLDUsOCxmYWxzZSk7aWYoQXJyYXkuaXNBcnJheShyZXMpKXJldHVybiByZXN9ZnVuY3Rpb24gZnJvbVdvcmRzKHdvcmRzKXt2YXIgcmVzPWNvbnZlcnQod29yZHMsNSw4LGZhbHNlKTtpZihBcnJheS5pc0FycmF5KHJlcykpcmV0dXJuIHJlczt0aHJvdyBuZXcgRXJyb3IocmVzKX12YXIgYmVjaDMyPXtkZWNvZGVVbnNhZmU6ZGVjb2RlVW5zYWZlLGRlY29kZTpkZWNvZGUsZW5jb2RlOmVuY29kZSx0b1dvcmRzVW5zYWZlOnRvV29yZHNVbnNhZmUsdG9Xb3Jkczp0b1dvcmRzLGZyb21Xb3Jkc1Vuc2FmZTpmcm9tV29yZHNVbnNhZmUsZnJvbVdvcmRzOmZyb21Xb3Jkc307dmFyIF92ZXJzaW9uJEk9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0icHJvdmlkZXJzLzUuMi4wIn0pO3ZhciBfdmVyc2lvbiRKPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJEkpO3ZhciBmb3JtYXR0ZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnNob3dUaHJvdHRsZU1lc3NhZ2U9ZXhwb3J0cy5pc0NvbW11bml0eVJlc291cmNlPWV4cG9ydHMuaXNDb21tdW5pdHlSZXNvdXJjYWJsZT1leHBvcnRzLkZvcm1hdHRlcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRJLnZlcnNpb24pO3ZhciBGb3JtYXR0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBGb3JtYXR0ZXIoKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LEZvcm1hdHRlcik7dGhpcy5mb3JtYXRzPXRoaXMuZ2V0RGVmYXVsdEZvcm1hdHMoKX1Gb3JtYXR0ZXIucHJvdG90eXBlLmdldERlZmF1bHRGb3JtYXRzPWZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7dmFyIGZvcm1hdHM9e307dmFyIGFkZHJlc3M9dGhpcy5hZGRyZXNzLmJpbmQodGhpcyk7dmFyIGJpZ051bWJlcj10aGlzLmJpZ051bWJlci5iaW5kKHRoaXMpO3ZhciBibG9ja1RhZz10aGlzLmJsb2NrVGFnLmJpbmQodGhpcyk7dmFyIGRhdGE9dGhpcy5kYXRhLmJpbmQodGhpcyk7dmFyIGhhc2g9dGhpcy5oYXNoLmJpbmQodGhpcyk7dmFyIGhleD10aGlzLmhleC5iaW5kKHRoaXMpO3ZhciBudW1iZXI9dGhpcy5udW1iZXIuYmluZCh0aGlzKTt2YXIgc3RyaWN0RGF0YT1mdW5jdGlvbih2KXtyZXR1cm4gX3RoaXMuZGF0YSh2LHRydWUpfTtmb3JtYXRzLnRyYW5zYWN0aW9uPXtoYXNoOmhhc2gsdHlwZTpGb3JtYXR0ZXIuYWxsb3dOdWxsKG51bWJlcixudWxsKSxhY2Nlc3NMaXN0OkZvcm1hdHRlci5hbGxvd051bGwodGhpcy5hY2Nlc3NMaXN0LmJpbmQodGhpcyksbnVsbCksYmxvY2tIYXNoOkZvcm1hdHRlci5hbGxvd051bGwoaGFzaCxudWxsKSxibG9ja051bWJlcjpGb3JtYXR0ZXIuYWxsb3dOdWxsKG51bWJlcixudWxsKSx0cmFuc2FjdGlvbkluZGV4OkZvcm1hdHRlci5hbGxvd051bGwobnVtYmVyLG51bGwpLGNvbmZpcm1hdGlvbnM6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIsbnVsbCksZnJvbTphZGRyZXNzLGdhc1ByaWNlOmJpZ051bWJlcixnYXNMaW1pdDpiaWdOdW1iZXIsdG86Rm9ybWF0dGVyLmFsbG93TnVsbChhZGRyZXNzLG51bGwpLHZhbHVlOmJpZ051bWJlcixub25jZTpudW1iZXIsZGF0YTpkYXRhLHI6Rm9ybWF0dGVyLmFsbG93TnVsbCh0aGlzLnVpbnQyNTYpLHM6Rm9ybWF0dGVyLmFsbG93TnVsbCh0aGlzLnVpbnQyNTYpLHY6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIpLGNyZWF0ZXM6Rm9ybWF0dGVyLmFsbG93TnVsbChhZGRyZXNzLG51bGwpLHJhdzpGb3JtYXR0ZXIuYWxsb3dOdWxsKGRhdGEpfTtmb3JtYXRzLnRyYW5zYWN0aW9uUmVxdWVzdD17ZnJvbTpGb3JtYXR0ZXIuYWxsb3dOdWxsKGFkZHJlc3MpLG5vbmNlOkZvcm1hdHRlci5hbGxvd051bGwobnVtYmVyKSxnYXNMaW1pdDpGb3JtYXR0ZXIuYWxsb3dOdWxsKGJpZ051bWJlciksZ2FzUHJpY2U6Rm9ybWF0dGVyLmFsbG93TnVsbChiaWdOdW1iZXIpLHRvOkZvcm1hdHRlci5hbGxvd051bGwoYWRkcmVzcyksdmFsdWU6Rm9ybWF0dGVyLmFsbG93TnVsbChiaWdOdW1iZXIpLGRhdGE6Rm9ybWF0dGVyLmFsbG93TnVsbChzdHJpY3REYXRhKSx0eXBlOkZvcm1hdHRlci5hbGxvd051bGwobnVtYmVyKSxhY2Nlc3NMaXN0OkZvcm1hdHRlci5hbGxvd051bGwodGhpcy5hY2Nlc3NMaXN0LmJpbmQodGhpcyksbnVsbCl9O2Zvcm1hdHMucmVjZWlwdExvZz17dHJhbnNhY3Rpb25JbmRleDpudW1iZXIsYmxvY2tOdW1iZXI6bnVtYmVyLHRyYW5zYWN0aW9uSGFzaDpoYXNoLGFkZHJlc3M6YWRkcmVzcyx0b3BpY3M6Rm9ybWF0dGVyLmFycmF5T2YoaGFzaCksZGF0YTpkYXRhLGxvZ0luZGV4Om51bWJlcixibG9ja0hhc2g6aGFzaH07Zm9ybWF0cy5yZWNlaXB0PXt0bzpGb3JtYXR0ZXIuYWxsb3dOdWxsKHRoaXMuYWRkcmVzcyxudWxsKSxmcm9tOkZvcm1hdHRlci5hbGxvd051bGwodGhpcy5hZGRyZXNzLG51bGwpLGNvbnRyYWN0QWRkcmVzczpGb3JtYXR0ZXIuYWxsb3dOdWxsKGFkZHJlc3MsbnVsbCksdHJhbnNhY3Rpb25JbmRleDpudW1iZXIscm9vdDpGb3JtYXR0ZXIuYWxsb3dOdWxsKGhleCksZ2FzVXNlZDpiaWdOdW1iZXIsbG9nc0Jsb29tOkZvcm1hdHRlci5hbGxvd051bGwoZGF0YSksYmxvY2tIYXNoOmhhc2gsdHJhbnNhY3Rpb25IYXNoOmhhc2gsbG9nczpGb3JtYXR0ZXIuYXJyYXlPZih0aGlzLnJlY2VpcHRMb2cuYmluZCh0aGlzKSksYmxvY2tOdW1iZXI6bnVtYmVyLGNvbmZpcm1hdGlvbnM6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIsbnVsbCksY3VtdWxhdGl2ZUdhc1VzZWQ6YmlnTnVtYmVyLHN0YXR1czpGb3JtYXR0ZXIuYWxsb3dOdWxsKG51bWJlcil9O2Zvcm1hdHMuYmxvY2s9e2hhc2g6aGFzaCxwYXJlbnRIYXNoOmhhc2gsbnVtYmVyOm51bWJlcix0aW1lc3RhbXA6bnVtYmVyLG5vbmNlOkZvcm1hdHRlci5hbGxvd051bGwoaGV4KSxkaWZmaWN1bHR5OnRoaXMuZGlmZmljdWx0eS5iaW5kKHRoaXMpLGdhc0xpbWl0OmJpZ051bWJlcixnYXNVc2VkOmJpZ051bWJlcixtaW5lcjphZGRyZXNzLGV4dHJhRGF0YTpkYXRhLHRyYW5zYWN0aW9uczpGb3JtYXR0ZXIuYWxsb3dOdWxsKEZvcm1hdHRlci5hcnJheU9mKGhhc2gpKX07Zm9ybWF0cy5ibG9ja1dpdGhUcmFuc2FjdGlvbnM9bGliJDMuc2hhbGxvd0NvcHkoZm9ybWF0cy5ibG9jayk7Zm9ybWF0cy5ibG9ja1dpdGhUcmFuc2FjdGlvbnMudHJhbnNhY3Rpb25zPUZvcm1hdHRlci5hbGxvd051bGwoRm9ybWF0dGVyLmFycmF5T2YodGhpcy50cmFuc2FjdGlvblJlc3BvbnNlLmJpbmQodGhpcykpKTtmb3JtYXRzLmZpbHRlcj17ZnJvbUJsb2NrOkZvcm1hdHRlci5hbGxvd051bGwoYmxvY2tUYWcsdW5kZWZpbmVkKSx0b0Jsb2NrOkZvcm1hdHRlci5hbGxvd051bGwoYmxvY2tUYWcsdW5kZWZpbmVkKSxibG9ja0hhc2g6Rm9ybWF0dGVyLmFsbG93TnVsbChoYXNoLHVuZGVmaW5lZCksYWRkcmVzczpGb3JtYXR0ZXIuYWxsb3dOdWxsKGFkZHJlc3MsdW5kZWZpbmVkKSx0b3BpY3M6Rm9ybWF0dGVyLmFsbG93TnVsbCh0aGlzLnRvcGljcy5iaW5kKHRoaXMpLHVuZGVmaW5lZCl9O2Zvcm1hdHMuZmlsdGVyTG9nPXtibG9ja051bWJlcjpGb3JtYXR0ZXIuYWxsb3dOdWxsKG51bWJlciksYmxvY2tIYXNoOkZvcm1hdHRlci5hbGxvd051bGwoaGFzaCksdHJhbnNhY3Rpb25JbmRleDpudW1iZXIscmVtb3ZlZDpGb3JtYXR0ZXIuYWxsb3dOdWxsKHRoaXMuYm9vbGVhbi5iaW5kKHRoaXMpKSxhZGRyZXNzOmFkZHJlc3MsZGF0YTpGb3JtYXR0ZXIuYWxsb3dGYWxzaXNoKGRhdGEsIjB4IiksdG9waWNzOkZvcm1hdHRlci5hcnJheU9mKGhhc2gpLHRyYW5zYWN0aW9uSGFzaDpoYXNoLGxvZ0luZGV4Om51bWJlcn07cmV0dXJuIGZvcm1hdHN9O0Zvcm1hdHRlci5wcm90b3R5cGUuYWNjZXNzTGlzdD1mdW5jdGlvbihhY2Nlc3NMaXN0KXtyZXR1cm4gbGliJGUuYWNjZXNzTGlzdGlmeShhY2Nlc3NMaXN0fHxbXSl9O0Zvcm1hdHRlci5wcm90b3R5cGUubnVtYmVyPWZ1bmN0aW9uKG51bWJlcil7aWYobnVtYmVyPT09IjB4Iil7cmV0dXJuIDB9cmV0dXJuIGxpYiQyLkJpZ051bWJlci5mcm9tKG51bWJlcikudG9OdW1iZXIoKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5iaWdOdW1iZXI9ZnVuY3Rpb24odmFsdWUpe3JldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuYm9vbGVhbj1mdW5jdGlvbih2YWx1ZSl7aWYodHlwZW9mIHZhbHVlPT09ImJvb2xlYW4iKXtyZXR1cm4gdmFsdWV9aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3ZhbHVlPXZhbHVlLnRvTG93ZXJDYXNlKCk7aWYodmFsdWU9PT0idHJ1ZSIpe3JldHVybiB0cnVlfWlmKHZhbHVlPT09ImZhbHNlIil7cmV0dXJuIGZhbHNlfX10aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYm9vbGVhbiAtICIrdmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmhleD1mdW5jdGlvbih2YWx1ZSxzdHJpY3Qpe2lmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtpZighc3RyaWN0JiZ2YWx1ZS5zdWJzdHJpbmcoMCwyKSE9PSIweCIpe3ZhbHVlPSIweCIrdmFsdWV9aWYobGliJDEuaXNIZXhTdHJpbmcodmFsdWUpKXtyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKX19cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgaGFzaCIsInZhbHVlIix2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuZGF0YT1mdW5jdGlvbih2YWx1ZSxzdHJpY3Qpe3ZhciByZXN1bHQ9dGhpcy5oZXgodmFsdWUsc3RyaWN0KTtpZihyZXN1bHQubGVuZ3RoJTIhPT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZGF0YTsgb2RkLWxlbmd0aCAtICIrdmFsdWUpfXJldHVybiByZXN1bHR9O0Zvcm1hdHRlci5wcm90b3R5cGUuYWRkcmVzcz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGxpYiQ2LmdldEFkZHJlc3ModmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmNhbGxBZGRyZXNzPWZ1bmN0aW9uKHZhbHVlKXtpZighbGliJDEuaXNIZXhTdHJpbmcodmFsdWUsMzIpKXtyZXR1cm4gbnVsbH12YXIgYWRkcmVzcz1saWIkNi5nZXRBZGRyZXNzKGxpYiQxLmhleERhdGFTbGljZSh2YWx1ZSwxMikpO3JldHVybiBhZGRyZXNzPT09bGliJDcuQWRkcmVzc1plcm8/bnVsbDphZGRyZXNzfTtGb3JtYXR0ZXIucHJvdG90eXBlLmNvbnRyYWN0QWRkcmVzcz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGxpYiQ2LmdldENvbnRyYWN0QWRkcmVzcyh2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuYmxvY2tUYWc9ZnVuY3Rpb24oYmxvY2tUYWcpe2lmKGJsb2NrVGFnPT1udWxsKXtyZXR1cm4ibGF0ZXN0In1pZihibG9ja1RhZz09PSJlYXJsaWVzdCIpe3JldHVybiIweDAifWlmKGJsb2NrVGFnPT09ImxhdGVzdCJ8fGJsb2NrVGFnPT09InBlbmRpbmciKXtyZXR1cm4gYmxvY2tUYWd9aWYodHlwZW9mIGJsb2NrVGFnPT09Im51bWJlciJ8fGxpYiQxLmlzSGV4U3RyaW5nKGJsb2NrVGFnKSl7cmV0dXJuIGxpYiQxLmhleFZhbHVlKGJsb2NrVGFnKX10aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYmxvY2tUYWciKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5oYXNoPWZ1bmN0aW9uKHZhbHVlLHN0cmljdCl7dmFyIHJlc3VsdD10aGlzLmhleCh2YWx1ZSxzdHJpY3QpO2lmKGxpYiQxLmhleERhdGFMZW5ndGgocmVzdWx0KSE9PTMyKXtyZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBoYXNoIiwidmFsdWUiLHZhbHVlKX1yZXR1cm4gcmVzdWx0fTtGb3JtYXR0ZXIucHJvdG90eXBlLmRpZmZpY3VsdHk9ZnVuY3Rpb24odmFsdWUpe2lmKHZhbHVlPT1udWxsKXtyZXR1cm4gbnVsbH12YXIgdj1saWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSk7dHJ5e3JldHVybiB2LnRvTnVtYmVyKCl9Y2F0Y2goZXJyb3Ipe31yZXR1cm4gbnVsbH07Rm9ybWF0dGVyLnByb3RvdHlwZS51aW50MjU2PWZ1bmN0aW9uKHZhbHVlKXtpZighbGliJDEuaXNIZXhTdHJpbmcodmFsdWUpKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdWludDI1NiIpfXJldHVybiBsaWIkMS5oZXhaZXJvUGFkKHZhbHVlLDMyKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5fYmxvY2s9ZnVuY3Rpb24odmFsdWUsZm9ybWF0KXtpZih2YWx1ZS5hdXRob3IhPW51bGwmJnZhbHVlLm1pbmVyPT1udWxsKXt2YWx1ZS5taW5lcj12YWx1ZS5hdXRob3J9cmV0dXJuIEZvcm1hdHRlci5jaGVjayhmb3JtYXQsdmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmJsb2NrPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdGhpcy5fYmxvY2sodmFsdWUsdGhpcy5mb3JtYXRzLmJsb2NrKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5ibG9ja1dpdGhUcmFuc2FjdGlvbnM9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB0aGlzLl9ibG9jayh2YWx1ZSx0aGlzLmZvcm1hdHMuYmxvY2tXaXRoVHJhbnNhY3Rpb25zKX07Rm9ybWF0dGVyLnByb3RvdHlwZS50cmFuc2FjdGlvblJlcXVlc3Q9ZnVuY3Rpb24odmFsdWUpe3JldHVybiBGb3JtYXR0ZXIuY2hlY2sodGhpcy5mb3JtYXRzLnRyYW5zYWN0aW9uUmVxdWVzdCx2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUudHJhbnNhY3Rpb25SZXNwb25zZT1mdW5jdGlvbih0cmFuc2FjdGlvbil7aWYodHJhbnNhY3Rpb24uZ2FzIT1udWxsJiZ0cmFuc2FjdGlvbi5nYXNMaW1pdD09bnVsbCl7dHJhbnNhY3Rpb24uZ2FzTGltaXQ9dHJhbnNhY3Rpb24uZ2FzfWlmKHRyYW5zYWN0aW9uLnRvJiZsaWIkMi5CaWdOdW1iZXIuZnJvbSh0cmFuc2FjdGlvbi50bykuaXNaZXJvKCkpe3RyYW5zYWN0aW9uLnRvPSIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifWlmKHRyYW5zYWN0aW9uLmlucHV0IT1udWxsJiZ0cmFuc2FjdGlvbi5kYXRhPT1udWxsKXt0cmFuc2FjdGlvbi5kYXRhPXRyYW5zYWN0aW9uLmlucHV0fWlmKHRyYW5zYWN0aW9uLnRvPT1udWxsJiZ0cmFuc2FjdGlvbi5jcmVhdGVzPT1udWxsKXt0cmFuc2FjdGlvbi5jcmVhdGVzPXRoaXMuY29udHJhY3RBZGRyZXNzKHRyYW5zYWN0aW9uKX1pZih0cmFuc2FjdGlvbi50eXBlPT09MSYmdHJhbnNhY3Rpb24uYWNjZXNzTGlzdD09bnVsbCl7dHJhbnNhY3Rpb24uYWNjZXNzTGlzdD1bXX12YXIgcmVzdWx0PUZvcm1hdHRlci5jaGVjayh0aGlzLmZvcm1hdHMudHJhbnNhY3Rpb24sdHJhbnNhY3Rpb24pO2lmKHRyYW5zYWN0aW9uLmNoYWluSWQhPW51bGwpe3ZhciBjaGFpbklkPXRyYW5zYWN0aW9uLmNoYWluSWQ7aWYobGliJDEuaXNIZXhTdHJpbmcoY2hhaW5JZCkpe2NoYWluSWQ9bGliJDIuQmlnTnVtYmVyLmZyb20oY2hhaW5JZCkudG9OdW1iZXIoKX1yZXN1bHQuY2hhaW5JZD1jaGFpbklkfWVsc2V7dmFyIGNoYWluSWQ9dHJhbnNhY3Rpb24ubmV0d29ya0lkO2lmKGNoYWluSWQ9PW51bGwmJnJlc3VsdC52PT1udWxsKXtjaGFpbklkPXRyYW5zYWN0aW9uLmNoYWluSWR9aWYobGliJDEuaXNIZXhTdHJpbmcoY2hhaW5JZCkpe2NoYWluSWQ9bGliJDIuQmlnTnVtYmVyLmZyb20oY2hhaW5JZCkudG9OdW1iZXIoKX1pZih0eXBlb2YgY2hhaW5JZCE9PSJudW1iZXIiJiZyZXN1bHQudiE9bnVsbCl7Y2hhaW5JZD0ocmVzdWx0LnYtMzUpLzI7aWYoY2hhaW5JZDwwKXtjaGFpbklkPTB9Y2hhaW5JZD1wYXJzZUludChjaGFpbklkKX1pZih0eXBlb2YgY2hhaW5JZCE9PSJudW1iZXIiKXtjaGFpbklkPTB9cmVzdWx0LmNoYWluSWQ9Y2hhaW5JZH1pZihyZXN1bHQuYmxvY2tIYXNoJiZyZXN1bHQuYmxvY2tIYXNoLnJlcGxhY2UoLzAvZywiIik9PT0ieCIpe3Jlc3VsdC5ibG9ja0hhc2g9bnVsbH1yZXR1cm4gcmVzdWx0fTtGb3JtYXR0ZXIucHJvdG90eXBlLnRyYW5zYWN0aW9uPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gbGliJGUucGFyc2UodmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLnJlY2VpcHRMb2c9ZnVuY3Rpb24odmFsdWUpe3JldHVybiBGb3JtYXR0ZXIuY2hlY2sodGhpcy5mb3JtYXRzLnJlY2VpcHRMb2csdmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLnJlY2VpcHQ9ZnVuY3Rpb24odmFsdWUpe3ZhciByZXN1bHQ9Rm9ybWF0dGVyLmNoZWNrKHRoaXMuZm9ybWF0cy5yZWNlaXB0LHZhbHVlKTtpZihyZXN1bHQucm9vdCE9bnVsbCl7aWYocmVzdWx0LnJvb3QubGVuZ3RoPD00KXt2YXIgdmFsdWVfMT1saWIkMi5CaWdOdW1iZXIuZnJvbShyZXN1bHQucm9vdCkudG9OdW1iZXIoKTtpZih2YWx1ZV8xPT09MHx8dmFsdWVfMT09PTEpe2lmKHJlc3VsdC5zdGF0dXMhPW51bGwmJnJlc3VsdC5zdGF0dXMhPT12YWx1ZV8xKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJhbHQtcm9vdC1zdGF0dXMvc3RhdHVzIG1pc21hdGNoIiwidmFsdWUiLHtyb290OnJlc3VsdC5yb290LHN0YXR1czpyZXN1bHQuc3RhdHVzfSl9cmVzdWx0LnN0YXR1cz12YWx1ZV8xO2RlbGV0ZSByZXN1bHQucm9vdH1lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYWx0LXJvb3Qtc3RhdHVzIiwidmFsdWUucm9vdCIscmVzdWx0LnJvb3QpfX1lbHNlIGlmKHJlc3VsdC5yb290Lmxlbmd0aCE9PTY2KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHJvb3QgaGFzaCIsInZhbHVlLnJvb3QiLHJlc3VsdC5yb290KX19aWYocmVzdWx0LnN0YXR1cyE9bnVsbCl7cmVzdWx0LmJ5emFudGl1bT10cnVlfXJldHVybiByZXN1bHR9O0Zvcm1hdHRlci5wcm90b3R5cGUudG9waWNzPWZ1bmN0aW9uKHZhbHVlKXt2YXIgX3RoaXM9dGhpcztpZihBcnJheS5pc0FycmF5KHZhbHVlKSl7cmV0dXJuIHZhbHVlLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gX3RoaXMudG9waWNzKHYpfSl9ZWxzZSBpZih2YWx1ZSE9bnVsbCl7cmV0dXJuIHRoaXMuaGFzaCh2YWx1ZSx0cnVlKX1yZXR1cm4gbnVsbH07Rm9ybWF0dGVyLnByb3RvdHlwZS5maWx0ZXI9ZnVuY3Rpb24odmFsdWUpe3JldHVybiBGb3JtYXR0ZXIuY2hlY2sodGhpcy5mb3JtYXRzLmZpbHRlcix2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuZmlsdGVyTG9nPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gRm9ybWF0dGVyLmNoZWNrKHRoaXMuZm9ybWF0cy5maWx0ZXJMb2csdmFsdWUpfTtGb3JtYXR0ZXIuY2hlY2s9ZnVuY3Rpb24oZm9ybWF0LG9iamVjdCl7dmFyIHJlc3VsdD17fTtmb3IodmFyIGtleSBpbiBmb3JtYXQpe3RyeXt2YXIgdmFsdWU9Zm9ybWF0W2tleV0ob2JqZWN0W2tleV0pO2lmKHZhbHVlIT09dW5kZWZpbmVkKXtyZXN1bHRba2V5XT12YWx1ZX19Y2F0Y2goZXJyb3Ipe2Vycm9yLmNoZWNrS2V5PWtleTtlcnJvci5jaGVja1ZhbHVlPW9iamVjdFtrZXldO3Rocm93IGVycm9yfX1yZXR1cm4gcmVzdWx0fTtGb3JtYXR0ZXIuYWxsb3dOdWxsPWZ1bmN0aW9uKGZvcm1hdCxudWxsVmFsdWUpe3JldHVybiBmdW5jdGlvbih2YWx1ZSl7aWYodmFsdWU9PW51bGwpe3JldHVybiBudWxsVmFsdWV9cmV0dXJuIGZvcm1hdCh2YWx1ZSl9fTtGb3JtYXR0ZXIuYWxsb3dGYWxzaXNoPWZ1bmN0aW9uKGZvcm1hdCxyZXBsYWNlVmFsdWUpe3JldHVybiBmdW5jdGlvbih2YWx1ZSl7aWYoIXZhbHVlKXtyZXR1cm4gcmVwbGFjZVZhbHVlfXJldHVybiBmb3JtYXQodmFsdWUpfX07Rm9ybWF0dGVyLmFycmF5T2Y9ZnVuY3Rpb24oZm9ybWF0KXtyZXR1cm4gZnVuY3Rpb24oYXJyYXkpe2lmKCFBcnJheS5pc0FycmF5KGFycmF5KSl7dGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXkiKX12YXIgcmVzdWx0PVtdO2FycmF5LmZvckVhY2goZnVuY3Rpb24odmFsdWUpe3Jlc3VsdC5wdXNoKGZvcm1hdCh2YWx1ZSkpfSk7cmV0dXJuIHJlc3VsdH19O3JldHVybiBGb3JtYXR0ZXJ9KCk7ZXhwb3J0cy5Gb3JtYXR0ZXI9Rm9ybWF0dGVyO2Z1bmN0aW9uIGlzQ29tbXVuaXR5UmVzb3VyY2FibGUodmFsdWUpe3JldHVybiB2YWx1ZSYmdHlwZW9mIHZhbHVlLmlzQ29tbXVuaXR5UmVzb3VyY2U9PT0iZnVuY3Rpb24ifWV4cG9ydHMuaXNDb21tdW5pdHlSZXNvdXJjYWJsZT1pc0NvbW11bml0eVJlc291cmNhYmxlO2Z1bmN0aW9uIGlzQ29tbXVuaXR5UmVzb3VyY2UodmFsdWUpe3JldHVybiBpc0NvbW11bml0eVJlc291cmNhYmxlKHZhbHVlKSYmdmFsdWUuaXNDb21tdW5pdHlSZXNvdXJjZSgpfWV4cG9ydHMuaXNDb21tdW5pdHlSZXNvdXJjZT1pc0NvbW11bml0eVJlc291cmNlO3ZhciB0aHJvdHRsZU1lc3NhZ2U9ZmFsc2U7ZnVuY3Rpb24gc2hvd1Rocm90dGxlTWVzc2FnZSgpe2lmKHRocm90dGxlTWVzc2FnZSl7cmV0dXJufXRocm90dGxlTWVzc2FnZT10cnVlO2NvbnNvbGUubG9nKCI9PT09PT09PT0gTk9USUNFID09PT09PT09PSIpO2NvbnNvbGUubG9nKCJSZXF1ZXN0LVJhdGUgRXhjZWVkZWQgICh0aGlzIG1lc3NhZ2Ugd2lsbCBub3QgYmUgcmVwZWF0ZWQpIik7Y29uc29sZS5sb2coIiIpO2NvbnNvbGUubG9nKCJUaGUgZGVmYXVsdCBBUEkga2V5cyBmb3IgZWFjaCBzZXJ2aWNlIGFyZSBwcm92aWRlZCBhcyBhIGhpZ2hseS10aHJvdHRsZWQsIik7Y29uc29sZS5sb2coImNvbW11bml0eSByZXNvdXJjZSBmb3IgbG93LXRyYWZmaWMgcHJvamVjdHMgYW5kIGVhcmx5IHByb3RvdHlwaW5nLiIpO2NvbnNvbGUubG9nKCIiKTtjb25zb2xlLmxvZygiV2hpbGUgeW91ciBhcHBsaWNhdGlvbiB3aWxsIGNvbnRpbnVlIHRvIGZ1bmN0aW9uLCB3ZSBoaWdobHkgcmVjb21tZW5kZWQiKTtjb25zb2xlLmxvZygic2lnbmluZyB1cCBmb3IgeW91ciBvd24gQVBJIGtleXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSwgaW5jcmVhc2UgeW91ciIpO2NvbnNvbGUubG9nKCJyZXF1ZXN0IHJhdGUvbGltaXQgYW5kIGVuYWJsZSBvdGhlciBwZXJrcywgc3VjaCBhcyBtZXRyaWNzIGFuZCBhZHZhbmNlZCBBUElzLiIpO2NvbnNvbGUubG9nKCIiKTtjb25zb2xlLmxvZygiRm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly9kb2NzLmV0aGVycy5pby9hcGkta2V5cy8iKTtjb25zb2xlLmxvZygiPT09PT09PT09PT09PT09PT09PT09PT09PT0iKX1leHBvcnRzLnNob3dUaHJvdHRsZU1lc3NhZ2U9c2hvd1Rocm90dGxlTWVzc2FnZX0pO3ZhciBmb3JtYXR0ZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhmb3JtYXR0ZXIpO3ZhciBiYXNlUHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTt2YXIgX19pbXBvcnREZWZhdWx0PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKG1vZCl7cmV0dXJuIG1vZCYmbW9kLl9fZXNNb2R1bGU/bW9kOntkZWZhdWx0Om1vZH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQmFzZVByb3ZpZGVyPWV4cG9ydHMuUmVzb2x2ZXI9ZXhwb3J0cy5FdmVudD12b2lkIDA7dmFyIGJlY2gzMl8xPV9faW1wb3J0RGVmYXVsdChiZWNoMzIpO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTtmdW5jdGlvbiBjaGVja1RvcGljKHRvcGljKXtpZih0b3BpYz09bnVsbCl7cmV0dXJuIm51bGwifWlmKGxpYiQxLmhleERhdGFMZW5ndGgodG9waWMpIT09MzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdG9waWMiLCJ0b3BpYyIsdG9waWMpfXJldHVybiB0b3BpYy50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHNlcmlhbGl6ZVRvcGljcyh0b3BpY3Mpe3RvcGljcz10b3BpY3Muc2xpY2UoKTt3aGlsZSh0b3BpY3MubGVuZ3RoPjAmJnRvcGljc1t0b3BpY3MubGVuZ3RoLTFdPT1udWxsKXt0b3BpY3MucG9wKCl9cmV0dXJuIHRvcGljcy5tYXAoZnVuY3Rpb24odG9waWMpe2lmKEFycmF5LmlzQXJyYXkodG9waWMpKXt2YXIgdW5pcXVlXzE9e307dG9waWMuZm9yRWFjaChmdW5jdGlvbih0b3BpYyl7dW5pcXVlXzFbY2hlY2tUb3BpYyh0b3BpYyldPXRydWV9KTt2YXIgc29ydGVkPU9iamVjdC5rZXlzKHVuaXF1ZV8xKTtzb3J0ZWQuc29ydCgpO3JldHVybiBzb3J0ZWQuam9pbigifCIpfWVsc2V7cmV0dXJuIGNoZWNrVG9waWModG9waWMpfX0pLmpvaW4oIiYiKX1mdW5jdGlvbiBkZXNlcmlhbGl6ZVRvcGljcyhkYXRhKXtpZihkYXRhPT09IiIpe3JldHVybltdfXJldHVybiBkYXRhLnNwbGl0KC8mL2cpLm1hcChmdW5jdGlvbih0b3BpYyl7aWYodG9waWM9PT0iIil7cmV0dXJuW119dmFyIGNvbXBzPXRvcGljLnNwbGl0KCJ8IikubWFwKGZ1bmN0aW9uKHRvcGljKXtyZXR1cm4gdG9waWM9PT0ibnVsbCI/bnVsbDp0b3BpY30pO3JldHVybiBjb21wcy5sZW5ndGg9PT0xP2NvbXBzWzBdOmNvbXBzfSl9ZnVuY3Rpb24gZ2V0RXZlbnRUYWcoZXZlbnROYW1lKXtpZih0eXBlb2YgZXZlbnROYW1lPT09InN0cmluZyIpe2V2ZW50TmFtZT1ldmVudE5hbWUudG9Mb3dlckNhc2UoKTtpZihsaWIkMS5oZXhEYXRhTGVuZ3RoKGV2ZW50TmFtZSk9PT0zMil7cmV0dXJuInR4OiIrZXZlbnROYW1lfWlmKGV2ZW50TmFtZS5pbmRleE9mKCI6Iik9PT0tMSl7cmV0dXJuIGV2ZW50TmFtZX19ZWxzZSBpZihBcnJheS5pc0FycmF5KGV2ZW50TmFtZSkpe3JldHVybiJmaWx0ZXI6KjoiK3NlcmlhbGl6ZVRvcGljcyhldmVudE5hbWUpfWVsc2UgaWYobGliJGIuRm9ya0V2ZW50LmlzRm9ya0V2ZW50KGV2ZW50TmFtZSkpe2xvZ2dlci53YXJuKCJub3QgaW1wbGVtZW50ZWQiKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBpbXBsZW1lbnRlZCIpfWVsc2UgaWYoZXZlbnROYW1lJiZ0eXBlb2YgZXZlbnROYW1lPT09Im9iamVjdCIpe3JldHVybiJmaWx0ZXI6IisoZXZlbnROYW1lLmFkZHJlc3N8fCIqIikrIjoiK3NlcmlhbGl6ZVRvcGljcyhldmVudE5hbWUudG9waWNzfHxbXSl9dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGV2ZW50IC0gIitldmVudE5hbWUpfWZ1bmN0aW9uIGdldFRpbWUoKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX1mdW5jdGlvbiBzdGFsbChkdXJhdGlvbil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpe3NldFRpbWVvdXQocmVzb2x2ZSxkdXJhdGlvbil9KX12YXIgUG9sbGFibGVFdmVudHM9WyJibG9jayIsIm5ldHdvcmsiLCJwZW5kaW5nIiwicG9sbCJdO3ZhciBFdmVudD1mdW5jdGlvbigpe2Z1bmN0aW9uIEV2ZW50KHRhZyxsaXN0ZW5lcixvbmNlKXtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJ0YWciLHRhZyk7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywibGlzdGVuZXIiLGxpc3RlbmVyKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJvbmNlIixvbmNlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJldmVudCIse2dldDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UidHgiOnJldHVybiB0aGlzLmhhc2g7Y2FzZSJmaWx0ZXIiOnJldHVybiB0aGlzLmZpbHRlcn1yZXR1cm4gdGhpcy50YWd9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFnLnNwbGl0KCI6IilbMF19LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJoYXNoIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGNvbXBzPXRoaXMudGFnLnNwbGl0KCI6Iik7aWYoY29tcHNbMF0hPT0idHgiKXtyZXR1cm4gbnVsbH1yZXR1cm4gY29tcHNbMV19LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJmaWx0ZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgY29tcHM9dGhpcy50YWcuc3BsaXQoIjoiKTtpZihjb21wc1swXSE9PSJmaWx0ZXIiKXtyZXR1cm4gbnVsbH12YXIgYWRkcmVzcz1jb21wc1sxXTt2YXIgdG9waWNzPWRlc2VyaWFsaXplVG9waWNzKGNvbXBzWzJdKTt2YXIgZmlsdGVyPXt9O2lmKHRvcGljcy5sZW5ndGg+MCl7ZmlsdGVyLnRvcGljcz10b3BpY3N9aWYoYWRkcmVzcyYmYWRkcmVzcyE9PSIqIil7ZmlsdGVyLmFkZHJlc3M9YWRkcmVzc31yZXR1cm4gZmlsdGVyfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7RXZlbnQucHJvdG90eXBlLnBvbGxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFnLmluZGV4T2YoIjoiKT49MHx8UG9sbGFibGVFdmVudHMuaW5kZXhPZih0aGlzLnRhZyk+PTB9O3JldHVybiBFdmVudH0oKTtleHBvcnRzLkV2ZW50PUV2ZW50O3ZhciBjb2luSW5mb3M9ezA6e3N5bWJvbDoiYnRjIixwMnBraDowLHAyc2g6NSxwcmVmaXg6ImJjIn0sMjp7c3ltYm9sOiJsdGMiLHAycGtoOjQ4LHAyc2g6NTAscHJlZml4OiJsdGMifSwzOntzeW1ib2w6ImRvZ2UiLHAycGtoOjMwLHAyc2g6MjJ9LDYwOntzeW1ib2w6ImV0aCIsaWxrOiJldGgifSw2MTp7c3ltYm9sOiJldGMiLGlsazoiZXRoIn0sNzAwOntzeW1ib2w6InhkYWkiLGlsazoiZXRoIn19O2Z1bmN0aW9uIGJ5dGVzMzJpZnkodmFsdWUpe3JldHVybiBsaWIkMS5oZXhaZXJvUGFkKGxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKS50b0hleFN0cmluZygpLDMyKX1mdW5jdGlvbiBiYXNlNThFbmNvZGUoZGF0YSl7cmV0dXJuIGxpYiRnLkJhc2U1OC5lbmNvZGUobGliJDEuY29uY2F0KFtkYXRhLGxpYiQxLmhleERhdGFTbGljZShsaWIkaC5zaGEyNTYobGliJGguc2hhMjU2KGRhdGEpKSwwLDQpXSkpfXZhciBSZXNvbHZlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIFJlc29sdmVyKHByb3ZpZGVyLGFkZHJlc3MsbmFtZSl7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywicHJvdmlkZXIiLHByb3ZpZGVyKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJuYW1lIixuYW1lKTtsaWIkMy5kZWZpbmVSZWFkT25seSh0aGlzLCJhZGRyZXNzIixwcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhhZGRyZXNzKSl9UmVzb2x2ZXIucHJvdG90eXBlLl9mZXRjaEJ5dGVzPWZ1bmN0aW9uKHNlbGVjdG9yLHBhcmFtZXRlcnMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHRyYW5zYWN0aW9uLHJlc3VsdCxvZmZzZXQsbGVuZ3RoO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDp0cmFuc2FjdGlvbj17dG86dGhpcy5hZGRyZXNzLGRhdGE6bGliJDEuaGV4Q29uY2F0KFtzZWxlY3RvcixsaWIkOS5uYW1laGFzaCh0aGlzLm5hbWUpLHBhcmFtZXRlcnN8fCIweCJdKX07cmV0dXJuWzQsdGhpcy5wcm92aWRlci5jYWxsKHRyYW5zYWN0aW9uKV07Y2FzZSAxOnJlc3VsdD1fYS5zZW50KCk7aWYocmVzdWx0PT09IjB4Iil7cmV0dXJuWzIsbnVsbF19b2Zmc2V0PWxpYiQyLkJpZ051bWJlci5mcm9tKGxpYiQxLmhleERhdGFTbGljZShyZXN1bHQsMCwzMikpLnRvTnVtYmVyKCk7bGVuZ3RoPWxpYiQyLkJpZ051bWJlci5mcm9tKGxpYiQxLmhleERhdGFTbGljZShyZXN1bHQsb2Zmc2V0LG9mZnNldCszMikpLnRvTnVtYmVyKCk7cmV0dXJuWzIsbGliJDEuaGV4RGF0YVNsaWNlKHJlc3VsdCxvZmZzZXQrMzIsb2Zmc2V0KzMyK2xlbmd0aCldfX0pfSl9O1Jlc29sdmVyLnByb3RvdHlwZS5fZ2V0QWRkcmVzcz1mdW5jdGlvbihjb2luVHlwZSxoZXhCeXRlcyl7dmFyIGNvaW5JbmZvPWNvaW5JbmZvc1tTdHJpbmcoY29pblR5cGUpXTtpZihjb2luSW5mbz09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIGNvaW4gdHlwZTogIitjb2luVHlwZSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZ2V0QWRkcmVzcygiK2NvaW5UeXBlKyIpIn0pfWlmKGNvaW5JbmZvLmlsaz09PSJldGgiKXtyZXR1cm4gdGhpcy5wcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhoZXhCeXRlcyl9dmFyIGJ5dGVzPWxpYiQxLmFycmF5aWZ5KGhleEJ5dGVzKTtpZihjb2luSW5mby5wMnBraCE9bnVsbCl7dmFyIHAycGtoPWhleEJ5dGVzLm1hdGNoKC9eMHg3NmE5KFswLTlhLWZdWzAtOWEtZl0pKFswLTlhLWZdKik4OGFjJC8pO2lmKHAycGtoKXt2YXIgbGVuZ3RoXzE9cGFyc2VJbnQocDJwa2hbMV0sMTYpO2lmKHAycGtoWzJdLmxlbmd0aD09PWxlbmd0aF8xKjImJmxlbmd0aF8xPj0xJiZsZW5ndGhfMTw9NzUpe3JldHVybiBiYXNlNThFbmNvZGUobGliJDEuY29uY2F0KFtbY29pbkluZm8ucDJwa2hdLCIweCIrcDJwa2hbMl1dKSl9fX1pZihjb2luSW5mby5wMnNoIT1udWxsKXt2YXIgcDJzaD1oZXhCeXRlcy5tYXRjaCgvXjB4YTkoWzAtOWEtZl1bMC05YS1mXSkoWzAtOWEtZl0qKTg3JC8pO2lmKHAyc2gpe3ZhciBsZW5ndGhfMj1wYXJzZUludChwMnNoWzFdLDE2KTtpZihwMnNoWzJdLmxlbmd0aD09PWxlbmd0aF8yKjImJmxlbmd0aF8yPj0xJiZsZW5ndGhfMjw9NzUpe3JldHVybiBiYXNlNThFbmNvZGUobGliJDEuY29uY2F0KFtbY29pbkluZm8ucDJzaF0sIjB4IitwMnNoWzJdXSkpfX19aWYoY29pbkluZm8ucHJlZml4IT1udWxsKXt2YXIgbGVuZ3RoXzM9Ynl0ZXNbMV07dmFyIHZlcnNpb25fMT1ieXRlc1swXTtpZih2ZXJzaW9uXzE9PT0wKXtpZihsZW5ndGhfMyE9PTIwJiZsZW5ndGhfMyE9PTMyKXt2ZXJzaW9uXzE9LTF9fWVsc2V7dmVyc2lvbl8xPS0xfWlmKHZlcnNpb25fMT49MCYmYnl0ZXMubGVuZ3RoPT09MitsZW5ndGhfMyYmbGVuZ3RoXzM+PTEmJmxlbmd0aF8zPD03NSl7dmFyIHdvcmRzPWJlY2gzMl8xLmRlZmF1bHQudG9Xb3JkcyhieXRlcy5zbGljZSgyKSk7d29yZHMudW5zaGlmdCh2ZXJzaW9uXzEpO3JldHVybiBiZWNoMzJfMS5kZWZhdWx0LmVuY29kZShjb2luSW5mby5wcmVmaXgsd29yZHMpfX1yZXR1cm4gbnVsbH07UmVzb2x2ZXIucHJvdG90eXBlLmdldEFkZHJlc3M9ZnVuY3Rpb24oY29pblR5cGUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHRyYW5zYWN0aW9uLGhleEJ5dGVzXzEsaGV4Qnl0ZXMsYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoY29pblR5cGU9PW51bGwpe2NvaW5UeXBlPTYwfWlmKCEoY29pblR5cGU9PT02MCkpcmV0dXJuWzMsMl07dHJhbnNhY3Rpb249e3RvOnRoaXMuYWRkcmVzcyxkYXRhOiIweDNiM2I1N2RlIitsaWIkOS5uYW1laGFzaCh0aGlzLm5hbWUpLnN1YnN0cmluZygyKX07cmV0dXJuWzQsdGhpcy5wcm92aWRlci5jYWxsKHRyYW5zYWN0aW9uKV07Y2FzZSAxOmhleEJ5dGVzXzE9X2Euc2VudCgpO2lmKGhleEJ5dGVzXzE9PT0iMHgifHxoZXhCeXRlc18xPT09bGliJDcuSGFzaFplcm8pe3JldHVyblsyLG51bGxdfXJldHVyblsyLHRoaXMucHJvdmlkZXIuZm9ybWF0dGVyLmNhbGxBZGRyZXNzKGhleEJ5dGVzXzEpXTtjYXNlIDI6cmV0dXJuWzQsdGhpcy5fZmV0Y2hCeXRlcygiMHhmMWNiN2UwNiIsYnl0ZXMzMmlmeShjb2luVHlwZSkpXTtjYXNlIDM6aGV4Qnl0ZXM9X2Euc2VudCgpO2lmKGhleEJ5dGVzPT1udWxsfHxoZXhCeXRlcz09PSIweCIpe3JldHVyblsyLG51bGxdfWFkZHJlc3M9dGhpcy5fZ2V0QWRkcmVzcyhjb2luVHlwZSxoZXhCeXRlcyk7aWYoYWRkcmVzcz09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoImludmFsaWQgb3IgdW5zdXBwb3J0ZWQgY29pbiBkYXRhIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZ2V0QWRkcmVzcygiK2NvaW5UeXBlKyIpIixjb2luVHlwZTpjb2luVHlwZSxkYXRhOmhleEJ5dGVzfSl9cmV0dXJuWzIsYWRkcmVzc119fSl9KX07UmVzb2x2ZXIucHJvdG90eXBlLmdldENvbnRlbnRIYXNoPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaGV4Qnl0ZXMsaXBmcyxsZW5ndGhfNCxzd2FybTtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5fZmV0Y2hCeXRlcygiMHhiYzFjNThkMSIpXTtjYXNlIDE6aGV4Qnl0ZXM9X2Euc2VudCgpO2lmKGhleEJ5dGVzPT1udWxsfHxoZXhCeXRlcz09PSIweCIpe3JldHVyblsyLG51bGxdfWlwZnM9aGV4Qnl0ZXMubWF0Y2goL14weGUzMDEwMTcwKChbMC05YS1mXVswLTlhLWZdKShbMC05YS1mXVswLTlhLWZdKShbMC05YS1mXSopKSQvKTtpZihpcGZzKXtsZW5ndGhfND1wYXJzZUludChpcGZzWzNdLDE2KTtpZihpcGZzWzRdLmxlbmd0aD09PWxlbmd0aF80KjIpe3JldHVyblsyLCJpcGZzOi8vIitsaWIkZy5CYXNlNTguZW5jb2RlKCIweCIraXBmc1sxXSldfX1zd2FybT1oZXhCeXRlcy5tYXRjaCgvXjB4ZTQwMTAxZmEwMTFiMjAoWzAtOWEtZl0qKSQvKTtpZihzd2FybSl7aWYoc3dhcm1bMV0ubGVuZ3RoPT09MzIqMil7cmV0dXJuWzIsImJ6ejovLyIrc3dhcm1bMV1dfX1yZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiaW52YWxpZCBvciB1bnN1cHBvcnRlZCBjb250ZW50IGhhc2ggZGF0YSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImdldENvbnRlbnRIYXNoKCkiLGRhdGE6aGV4Qnl0ZXN9KV19fSl9KX07UmVzb2x2ZXIucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24oa2V5KXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBrZXlCeXRlcyxoZXhCeXRlcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6a2V5Qnl0ZXM9bGliJDgudG9VdGY4Qnl0ZXMoa2V5KTtrZXlCeXRlcz1saWIkMS5jb25jYXQoW2J5dGVzMzJpZnkoNjQpLGJ5dGVzMzJpZnkoa2V5Qnl0ZXMubGVuZ3RoKSxrZXlCeXRlc10pO2lmKGtleUJ5dGVzLmxlbmd0aCUzMiE9PTApe2tleUJ5dGVzPWxpYiQxLmNvbmNhdChba2V5Qnl0ZXMsbGliJDEuaGV4WmVyb1BhZCgiMHgiLDMyLWtleS5sZW5ndGglMzIpXSl9cmV0dXJuWzQsdGhpcy5fZmV0Y2hCeXRlcygiMHg1OWQxZDQzYyIsbGliJDEuaGV4bGlmeShrZXlCeXRlcykpXTtjYXNlIDE6aGV4Qnl0ZXM9X2Euc2VudCgpO2lmKGhleEJ5dGVzPT1udWxsfHxoZXhCeXRlcz09PSIweCIpe3JldHVyblsyLG51bGxdfXJldHVyblsyLGxpYiQ4LnRvVXRmOFN0cmluZyhoZXhCeXRlcyldfX0pfSl9O3JldHVybiBSZXNvbHZlcn0oKTtleHBvcnRzLlJlc29sdmVyPVJlc29sdmVyO3ZhciBkZWZhdWx0Rm9ybWF0dGVyPW51bGw7dmFyIG5leHRQb2xsSWQ9MTt2YXIgQmFzZVByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEJhc2VQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEJhc2VQcm92aWRlcihuZXR3b3JrKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LGxpYiRiLlByb3ZpZGVyKTtfdGhpcz1fc3VwZXIuY2FsbCh0aGlzKXx8dGhpcztfdGhpcy5fZXZlbnRzPVtdO190aGlzLl9lbWl0dGVkPXtibG9jazotMn07X3RoaXMuZm9ybWF0dGVyPV9uZXdUYXJnZXQuZ2V0Rm9ybWF0dGVyKCk7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImFueU5ldHdvcmsiLG5ldHdvcms9PT0iYW55Iik7aWYoX3RoaXMuYW55TmV0d29yayl7bmV0d29yaz1fdGhpcy5kZXRlY3ROZXR3b3JrKCl9aWYobmV0d29yayBpbnN0YW5jZW9mIFByb21pc2Upe190aGlzLl9uZXR3b3JrUHJvbWlzZT1uZXR3b3JrO25ldHdvcmsuY2F0Y2goZnVuY3Rpb24oZXJyb3Ipe30pO190aGlzLl9yZWFkeSgpLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXt9KX1lbHNle3ZhciBrbm93bk5ldHdvcms9bGliJDMuZ2V0U3RhdGljKF9uZXdUYXJnZXQsImdldE5ldHdvcmsiKShuZXR3b3JrKTtpZihrbm93bk5ldHdvcmspe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfbmV0d29yayIsa25vd25OZXR3b3JrKTtfdGhpcy5lbWl0KCJuZXR3b3JrIixrbm93bk5ldHdvcmssbnVsbCl9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG5ldHdvcmsiLCJuZXR3b3JrIixuZXR3b3JrKX19X3RoaXMuX21heEludGVybmFsQmxvY2tOdW1iZXI9LTEwMjQ7X3RoaXMuX2xhc3RCbG9ja051bWJlcj0tMjtfdGhpcy5fcG9sbGluZ0ludGVydmFsPTRlMztfdGhpcy5fZmFzdFF1ZXJ5RGF0ZT0wO3JldHVybiBfdGhpc31CYXNlUHJvdmlkZXIucHJvdG90eXBlLl9yZWFkeT1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5ldHdvcmssZXJyb3JfMTtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoISh0aGlzLl9uZXR3b3JrPT1udWxsKSlyZXR1cm5bMyw3XTtuZXR3b3JrPW51bGw7aWYoIXRoaXMuX25ldHdvcmtQcm9taXNlKXJldHVyblszLDRdO19hLmxhYmVsPTE7Y2FzZSAxOl9hLnRyeXMucHVzaChbMSwzLCw0XSk7cmV0dXJuWzQsdGhpcy5fbmV0d29ya1Byb21pc2VdO2Nhc2UgMjpuZXR3b3JrPV9hLnNlbnQoKTtyZXR1cm5bMyw0XTtjYXNlIDM6ZXJyb3JfMT1fYS5zZW50KCk7cmV0dXJuWzMsNF07Y2FzZSA0OmlmKCEobmV0d29yaz09bnVsbCkpcmV0dXJuWzMsNl07cmV0dXJuWzQsdGhpcy5kZXRlY3ROZXR3b3JrKCldO2Nhc2UgNTpuZXR3b3JrPV9hLnNlbnQoKTtfYS5sYWJlbD02O2Nhc2UgNjppZighbmV0d29yayl7bG9nZ2VyLnRocm93RXJyb3IoIm5vIG5ldHdvcmsgZGV0ZWN0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1Ise30pfWlmKHRoaXMuX25ldHdvcms9PW51bGwpe2lmKHRoaXMuYW55TmV0d29yayl7dGhpcy5fbmV0d29yaz1uZXR3b3JrfWVsc2V7bGliJDMuZGVmaW5lUmVhZE9ubHkodGhpcywiX25ldHdvcmsiLG5ldHdvcmspfXRoaXMuZW1pdCgibmV0d29yayIsbmV0d29yayxudWxsKX1fYS5sYWJlbD03O2Nhc2UgNzpyZXR1cm5bMix0aGlzLl9uZXR3b3JrXX19KX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQmFzZVByb3ZpZGVyLnByb3RvdHlwZSwicmVhZHkiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgX3RoaXM9dGhpcztyZXR1cm4gbGliJHEucG9sbChmdW5jdGlvbigpe3JldHVybiBfdGhpcy5fcmVhZHkoKS50aGVuKGZ1bmN0aW9uKG5ldHdvcmspe3JldHVybiBuZXR3b3JrfSxmdW5jdGlvbihlcnJvcil7aWYoZXJyb3IuY29kZT09PWxpYi5Mb2dnZXIuZXJyb3JzLk5FVFdPUktfRVJST1ImJmVycm9yLmV2ZW50PT09Im5vTmV0d29yayIpe3JldHVybiB1bmRlZmluZWR9dGhyb3cgZXJyb3J9KX0pfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7QmFzZVByb3ZpZGVyLmdldEZvcm1hdHRlcj1mdW5jdGlvbigpe2lmKGRlZmF1bHRGb3JtYXR0ZXI9PW51bGwpe2RlZmF1bHRGb3JtYXR0ZXI9bmV3IGZvcm1hdHRlci5Gb3JtYXR0ZXJ9cmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXJ9O0Jhc2VQcm92aWRlci5nZXROZXR3b3JrPWZ1bmN0aW9uKG5ldHdvcmspe3JldHVybiBsaWIkby5nZXROZXR3b3JrKG5ldHdvcms9PW51bGw/ImhvbWVzdGVhZCI6bmV0d29yayl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX2dldEludGVybmFsQmxvY2tOdW1iZXI9ZnVuY3Rpb24obWF4QWdlKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBpbnRlcm5hbEJsb2NrTnVtYmVyLHJlc3VsdCxlcnJvcl8yLHJlcVRpbWUsY2hlY2tJbnRlcm5hbEJsb2NrTnVtYmVyO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLl9yZWFkeSgpXTtjYXNlIDE6X2Euc2VudCgpO2lmKCEobWF4QWdlPjApKXJldHVyblszLDddO19hLmxhYmVsPTI7Y2FzZSAyOmlmKCF0aGlzLl9pbnRlcm5hbEJsb2NrTnVtYmVyKXJldHVyblszLDddO2ludGVybmFsQmxvY2tOdW1iZXI9dGhpcy5faW50ZXJuYWxCbG9ja051bWJlcjtfYS5sYWJlbD0zO2Nhc2UgMzpfYS50cnlzLnB1c2goWzMsNSwsNl0pO3JldHVybls0LGludGVybmFsQmxvY2tOdW1iZXJdO2Nhc2UgNDpyZXN1bHQ9X2Euc2VudCgpO2lmKGdldFRpbWUoKS1yZXN1bHQucmVzcFRpbWU8PW1heEFnZSl7cmV0dXJuWzIscmVzdWx0LmJsb2NrTnVtYmVyXX1yZXR1cm5bMyw3XTtjYXNlIDU6ZXJyb3JfMj1fYS5zZW50KCk7aWYodGhpcy5faW50ZXJuYWxCbG9ja051bWJlcj09PWludGVybmFsQmxvY2tOdW1iZXIpe3JldHVyblszLDddfXJldHVyblszLDZdO2Nhc2UgNjpyZXR1cm5bMywyXTtjYXNlIDc6cmVxVGltZT1nZXRUaW1lKCk7Y2hlY2tJbnRlcm5hbEJsb2NrTnVtYmVyPWxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKHtibG9ja051bWJlcjp0aGlzLnBlcmZvcm0oImdldEJsb2NrTnVtYmVyIix7fSksbmV0d29ya0Vycm9yOnRoaXMuZ2V0TmV0d29yaygpLnRoZW4oZnVuY3Rpb24obmV0d29yayl7cmV0dXJuIG51bGx9LGZ1bmN0aW9uKGVycm9yKXtyZXR1cm4gZXJyb3J9KX0pLnRoZW4oZnVuY3Rpb24oX2Epe3ZhciBibG9ja051bWJlcj1fYS5ibG9ja051bWJlcixuZXR3b3JrRXJyb3I9X2EubmV0d29ya0Vycm9yO2lmKG5ldHdvcmtFcnJvcil7aWYoX3RoaXMuX2ludGVybmFsQmxvY2tOdW1iZXI9PT1jaGVja0ludGVybmFsQmxvY2tOdW1iZXIpe190aGlzLl9pbnRlcm5hbEJsb2NrTnVtYmVyPW51bGx9dGhyb3cgbmV0d29ya0Vycm9yfXZhciByZXNwVGltZT1nZXRUaW1lKCk7YmxvY2tOdW1iZXI9bGliJDIuQmlnTnVtYmVyLmZyb20oYmxvY2tOdW1iZXIpLnRvTnVtYmVyKCk7aWYoYmxvY2tOdW1iZXI8X3RoaXMuX21heEludGVybmFsQmxvY2tOdW1iZXIpe2Jsb2NrTnVtYmVyPV90aGlzLl9tYXhJbnRlcm5hbEJsb2NrTnVtYmVyfV90aGlzLl9tYXhJbnRlcm5hbEJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyO190aGlzLl9zZXRGYXN0QmxvY2tOdW1iZXIoYmxvY2tOdW1iZXIpO3JldHVybntibG9ja051bWJlcjpibG9ja051bWJlcixyZXFUaW1lOnJlcVRpbWUscmVzcFRpbWU6cmVzcFRpbWV9fSk7dGhpcy5faW50ZXJuYWxCbG9ja051bWJlcj1jaGVja0ludGVybmFsQmxvY2tOdW1iZXI7Y2hlY2tJbnRlcm5hbEJsb2NrTnVtYmVyLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtpZihfdGhpcy5faW50ZXJuYWxCbG9ja051bWJlcj09PWNoZWNrSW50ZXJuYWxCbG9ja051bWJlcil7X3RoaXMuX2ludGVybmFsQmxvY2tOdW1iZXI9bnVsbH19KTtyZXR1cm5bNCxjaGVja0ludGVybmFsQmxvY2tOdW1iZXJdO2Nhc2UgODpyZXR1cm5bMixfYS5zZW50KCkuYmxvY2tOdW1iZXJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUucG9sbD1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBvbGxJZCxydW5uZXJzLGJsb2NrTnVtYmVyLGVycm9yXzMsaTt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cG9sbElkPW5leHRQb2xsSWQrKztydW5uZXJzPVtdO2Jsb2NrTnVtYmVyPW51bGw7X2EubGFiZWw9MTtjYXNlIDE6X2EudHJ5cy5wdXNoKFsxLDMsLDRdKTtyZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCt0aGlzLnBvbGxpbmdJbnRlcnZhbC8yKV07Y2FzZSAyOmJsb2NrTnVtYmVyPV9hLnNlbnQoKTtyZXR1cm5bMyw0XTtjYXNlIDM6ZXJyb3JfMz1fYS5zZW50KCk7dGhpcy5lbWl0KCJlcnJvciIsZXJyb3JfMyk7cmV0dXJuWzJdO2Nhc2UgNDp0aGlzLl9zZXRGYXN0QmxvY2tOdW1iZXIoYmxvY2tOdW1iZXIpO3RoaXMuZW1pdCgicG9sbCIscG9sbElkLGJsb2NrTnVtYmVyKTtpZihibG9ja051bWJlcj09PXRoaXMuX2xhc3RCbG9ja051bWJlcil7dGhpcy5lbWl0KCJkaWRQb2xsIixwb2xsSWQpO3JldHVyblsyXX1pZih0aGlzLl9lbWl0dGVkLmJsb2NrPT09LTIpe3RoaXMuX2VtaXR0ZWQuYmxvY2s9YmxvY2tOdW1iZXItMX1pZihNYXRoLmFicyh0aGlzLl9lbWl0dGVkLmJsb2NrLWJsb2NrTnVtYmVyKT4xZTMpe2xvZ2dlci53YXJuKCJuZXR3b3JrIGJsb2NrIHNrZXcgZGV0ZWN0ZWQ7IHNraXBwaW5nIGJsb2NrIGV2ZW50cyAoZW1pdHRlZD0iK3RoaXMuX2VtaXR0ZWQuYmxvY2srIiBibG9ja051bWJlciIrYmxvY2tOdW1iZXIrIikiKTt0aGlzLmVtaXQoImVycm9yIixsb2dnZXIubWFrZUVycm9yKCJuZXR3b3JrIGJsb2NrIHNrZXcgZGV0ZWN0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLk5FVFdPUktfRVJST1Ise2Jsb2NrTnVtYmVyOmJsb2NrTnVtYmVyLGV2ZW50OiJibG9ja1NrZXciLHByZXZpb3VzQmxvY2tOdW1iZXI6dGhpcy5fZW1pdHRlZC5ibG9ja30pKTt0aGlzLmVtaXQoImJsb2NrIixibG9ja051bWJlcil9ZWxzZXtmb3IoaT10aGlzLl9lbWl0dGVkLmJsb2NrKzE7aTw9YmxvY2tOdW1iZXI7aSsrKXt0aGlzLmVtaXQoImJsb2NrIixpKX19aWYodGhpcy5fZW1pdHRlZC5ibG9jayE9PWJsb2NrTnVtYmVyKXt0aGlzLl9lbWl0dGVkLmJsb2NrPWJsb2NrTnVtYmVyO09iamVjdC5rZXlzKHRoaXMuX2VtaXR0ZWQpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZihrZXk9PT0iYmxvY2siKXtyZXR1cm59dmFyIGV2ZW50QmxvY2tOdW1iZXI9X3RoaXMuX2VtaXR0ZWRba2V5XTtpZihldmVudEJsb2NrTnVtYmVyPT09InBlbmRpbmciKXtyZXR1cm59aWYoYmxvY2tOdW1iZXItZXZlbnRCbG9ja051bWJlcj4xMil7ZGVsZXRlIF90aGlzLl9lbWl0dGVkW2tleV19fSl9aWYodGhpcy5fbGFzdEJsb2NrTnVtYmVyPT09LTIpe3RoaXMuX2xhc3RCbG9ja051bWJlcj1ibG9ja051bWJlci0xfXRoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KXtzd2l0Y2goZXZlbnQudHlwZSl7Y2FzZSJ0eCI6e3ZhciBoYXNoXzI9ZXZlbnQuaGFzaDt2YXIgcnVubmVyPV90aGlzLmdldFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoXzIpLnRoZW4oZnVuY3Rpb24ocmVjZWlwdCl7aWYoIXJlY2VpcHR8fHJlY2VpcHQuYmxvY2tOdW1iZXI9PW51bGwpe3JldHVybiBudWxsfV90aGlzLl9lbWl0dGVkWyJ0OiIraGFzaF8yXT1yZWNlaXB0LmJsb2NrTnVtYmVyO190aGlzLmVtaXQoaGFzaF8yLHJlY2VpcHQpO3JldHVybiBudWxsfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3Ipe190aGlzLmVtaXQoImVycm9yIixlcnJvcil9KTtydW5uZXJzLnB1c2gocnVubmVyKTticmVha31jYXNlImZpbHRlciI6e3ZhciBmaWx0ZXJfMT1ldmVudC5maWx0ZXI7ZmlsdGVyXzEuZnJvbUJsb2NrPV90aGlzLl9sYXN0QmxvY2tOdW1iZXIrMTtmaWx0ZXJfMS50b0Jsb2NrPWJsb2NrTnVtYmVyO3ZhciBydW5uZXI9X3RoaXMuZ2V0TG9ncyhmaWx0ZXJfMSkudGhlbihmdW5jdGlvbihsb2dzKXtpZihsb2dzLmxlbmd0aD09PTApe3JldHVybn1sb2dzLmZvckVhY2goZnVuY3Rpb24obG9nKXtfdGhpcy5fZW1pdHRlZFsiYjoiK2xvZy5ibG9ja0hhc2hdPWxvZy5ibG9ja051bWJlcjtfdGhpcy5fZW1pdHRlZFsidDoiK2xvZy50cmFuc2FjdGlvbkhhc2hdPWxvZy5ibG9ja051bWJlcjtfdGhpcy5lbWl0KGZpbHRlcl8xLGxvZyl9KX0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtfdGhpcy5lbWl0KCJlcnJvciIsZXJyb3IpfSk7cnVubmVycy5wdXNoKHJ1bm5lcik7YnJlYWt9fX0pO3RoaXMuX2xhc3RCbG9ja051bWJlcj1ibG9ja051bWJlcjtQcm9taXNlLmFsbChydW5uZXJzKS50aGVuKGZ1bmN0aW9uKCl7X3RoaXMuZW1pdCgiZGlkUG9sbCIscG9sbElkKX0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtfdGhpcy5lbWl0KCJlcnJvciIsZXJyb3IpfSk7cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUucmVzZXRFdmVudHNCbG9jaz1mdW5jdGlvbihibG9ja051bWJlcil7dGhpcy5fbGFzdEJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyLTE7aWYodGhpcy5wb2xsaW5nKXt0aGlzLnBvbGwoKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNlUHJvdmlkZXIucHJvdG90eXBlLCJuZXR3b3JrIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25ldHdvcmt9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmRldGVjdE5ldHdvcms9ZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigicHJvdmlkZXIgZG9lcyBub3Qgc3VwcG9ydCBuZXR3b3JrIGRldGVjdGlvbiIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InByb3ZpZGVyLmRldGVjdE5ldHdvcmsifSldfSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXROZXR3b3JrPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmV0d29yayxjdXJyZW50TmV0d29yayxlcnJvcjtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5fcmVhZHkoKV07Y2FzZSAxOm5ldHdvcms9X2Euc2VudCgpO3JldHVybls0LHRoaXMuZGV0ZWN0TmV0d29yaygpXTtjYXNlIDI6Y3VycmVudE5ldHdvcms9X2Euc2VudCgpO2lmKCEobmV0d29yay5jaGFpbklkIT09Y3VycmVudE5ldHdvcmsuY2hhaW5JZCkpcmV0dXJuWzMsNV07aWYoIXRoaXMuYW55TmV0d29yaylyZXR1cm5bMyw0XTt0aGlzLl9uZXR3b3JrPWN1cnJlbnROZXR3b3JrO3RoaXMuX2xhc3RCbG9ja051bWJlcj0tMjt0aGlzLl9mYXN0QmxvY2tOdW1iZXI9bnVsbDt0aGlzLl9mYXN0QmxvY2tOdW1iZXJQcm9taXNlPW51bGw7dGhpcy5fZmFzdFF1ZXJ5RGF0ZT0wO3RoaXMuX2VtaXR0ZWQuYmxvY2s9LTI7dGhpcy5fbWF4SW50ZXJuYWxCbG9ja051bWJlcj0tMTAyNDt0aGlzLl9pbnRlcm5hbEJsb2NrTnVtYmVyPW51bGw7dGhpcy5lbWl0KCJuZXR3b3JrIixjdXJyZW50TmV0d29yayxuZXR3b3JrKTtyZXR1cm5bNCxzdGFsbCgwKV07Y2FzZSAzOl9hLnNlbnQoKTtyZXR1cm5bMix0aGlzLl9uZXR3b3JrXTtjYXNlIDQ6ZXJyb3I9bG9nZ2VyLm1ha2VFcnJvcigidW5kZXJseWluZyBuZXR3b3JrIGNoYW5nZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLk5FVFdPUktfRVJST1Ise2V2ZW50OiJjaGFuZ2VkIixuZXR3b3JrOm5ldHdvcmssZGV0ZWN0ZWROZXR3b3JrOmN1cnJlbnROZXR3b3JrfSk7dGhpcy5lbWl0KCJlcnJvciIsZXJyb3IpO3Rocm93IGVycm9yO2Nhc2UgNTpyZXR1cm5bMixuZXR3b3JrXX19KX0pfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQmFzZVByb3ZpZGVyLnByb3RvdHlwZSwiYmxvY2tOdW1iZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgX3RoaXM9dGhpczt0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCt0aGlzLnBvbGxpbmdJbnRlcnZhbC8yKS50aGVuKGZ1bmN0aW9uKGJsb2NrTnVtYmVyKXtfdGhpcy5fc2V0RmFzdEJsb2NrTnVtYmVyKGJsb2NrTnVtYmVyKX0sZnVuY3Rpb24oZXJyb3Ipe30pO3JldHVybiB0aGlzLl9mYXN0QmxvY2tOdW1iZXIhPW51bGw/dGhpcy5fZmFzdEJsb2NrTnVtYmVyOi0xfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2VQcm92aWRlci5wcm90b3R5cGUsInBvbGxpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9sbGVyIT1udWxsfSxzZXQ6ZnVuY3Rpb24odmFsdWUpe3ZhciBfdGhpcz10aGlzO2lmKHZhbHVlJiYhdGhpcy5fcG9sbGVyKXt0aGlzLl9wb2xsZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtfdGhpcy5wb2xsKCl9LHRoaXMucG9sbGluZ0ludGVydmFsKTtpZighdGhpcy5fYm9vdHN0cmFwUG9sbCl7dGhpcy5fYm9vdHN0cmFwUG9sbD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7X3RoaXMucG9sbCgpO190aGlzLl9ib290c3RyYXBQb2xsPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZighX3RoaXMuX3BvbGxlcil7X3RoaXMucG9sbCgpfV90aGlzLl9ib290c3RyYXBQb2xsPW51bGx9LF90aGlzLnBvbGxpbmdJbnRlcnZhbCl9LDApfX1lbHNlIGlmKCF2YWx1ZSYmdGhpcy5fcG9sbGVyKXtjbGVhckludGVydmFsKHRoaXMuX3BvbGxlcik7dGhpcy5fcG9sbGVyPW51bGx9fSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2VQcm92aWRlci5wcm90b3R5cGUsInBvbGxpbmdJbnRlcnZhbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb2xsaW5nSW50ZXJ2YWx9LHNldDpmdW5jdGlvbih2YWx1ZSl7dmFyIF90aGlzPXRoaXM7aWYodHlwZW9mIHZhbHVlIT09Im51bWJlciJ8fHZhbHVlPD0wfHxwYXJzZUludChTdHJpbmcodmFsdWUpKSE9dmFsdWUpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2xsaW5nIGludGVydmFsIil9dGhpcy5fcG9sbGluZ0ludGVydmFsPXZhbHVlO2lmKHRoaXMuX3BvbGxlcil7Y2xlYXJJbnRlcnZhbCh0aGlzLl9wb2xsZXIpO3RoaXMuX3BvbGxlcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe190aGlzLnBvbGwoKX0sdGhpcy5fcG9sbGluZ0ludGVydmFsKX19LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9nZXRGYXN0QmxvY2tOdW1iZXI9ZnVuY3Rpb24oKXt2YXIgX3RoaXM9dGhpczt2YXIgbm93PWdldFRpbWUoKTtpZihub3ctdGhpcy5fZmFzdFF1ZXJ5RGF0ZT4yKnRoaXMuX3BvbGxpbmdJbnRlcnZhbCl7dGhpcy5fZmFzdFF1ZXJ5RGF0ZT1ub3c7dGhpcy5fZmFzdEJsb2NrTnVtYmVyUHJvbWlzZT10aGlzLmdldEJsb2NrTnVtYmVyKCkudGhlbihmdW5jdGlvbihibG9ja051bWJlcil7aWYoX3RoaXMuX2Zhc3RCbG9ja051bWJlcj09bnVsbHx8YmxvY2tOdW1iZXI+X3RoaXMuX2Zhc3RCbG9ja051bWJlcil7X3RoaXMuX2Zhc3RCbG9ja051bWJlcj1ibG9ja051bWJlcn1yZXR1cm4gX3RoaXMuX2Zhc3RCbG9ja051bWJlcn0pfXJldHVybiB0aGlzLl9mYXN0QmxvY2tOdW1iZXJQcm9taXNlfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9zZXRGYXN0QmxvY2tOdW1iZXI9ZnVuY3Rpb24oYmxvY2tOdW1iZXIpe2lmKHRoaXMuX2Zhc3RCbG9ja051bWJlciE9bnVsbCYmYmxvY2tOdW1iZXI8dGhpcy5fZmFzdEJsb2NrTnVtYmVyKXtyZXR1cm59dGhpcy5fZmFzdFF1ZXJ5RGF0ZT1nZXRUaW1lKCk7aWYodGhpcy5fZmFzdEJsb2NrTnVtYmVyPT1udWxsfHxibG9ja051bWJlcj50aGlzLl9mYXN0QmxvY2tOdW1iZXIpe3RoaXMuX2Zhc3RCbG9ja051bWJlcj1ibG9ja051bWJlcjt0aGlzLl9mYXN0QmxvY2tOdW1iZXJQcm9taXNlPVByb21pc2UucmVzb2x2ZShibG9ja051bWJlcil9fTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLndhaXRGb3JUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbkhhc2gsY29uZmlybWF0aW9ucyx0aW1lb3V0KXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtyZXR1cm5bMix0aGlzLl93YWl0Rm9yVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25IYXNoLGNvbmZpcm1hdGlvbnM9PW51bGw/MTpjb25maXJtYXRpb25zLHRpbWVvdXR8fDAsbnVsbCldfSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fd2FpdEZvclRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uSGFzaCxjb25maXJtYXRpb25zLHRpbWVvdXQscmVwbGFjZWFibGUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlY2VpcHQ7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0VHJhbnNhY3Rpb25SZWNlaXB0KHRyYW5zYWN0aW9uSGFzaCldO2Nhc2UgMTpyZWNlaXB0PV9hLnNlbnQoKTtpZigocmVjZWlwdD9yZWNlaXB0LmNvbmZpcm1hdGlvbnM6MCk+PWNvbmZpcm1hdGlvbnMpe3JldHVyblsyLHJlY2VpcHRdfXJldHVyblsyLG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXt2YXIgY2FuY2VsRnVuY3M9W107dmFyIGRvbmU9ZmFsc2U7dmFyIGFscmVhZHlEb25lPWZ1bmN0aW9uKCl7aWYoZG9uZSl7cmV0dXJuIHRydWV9ZG9uZT10cnVlO2NhbmNlbEZ1bmNzLmZvckVhY2goZnVuY3Rpb24oZnVuYyl7ZnVuYygpfSk7cmV0dXJuIGZhbHNlfTt2YXIgbWluZWRIYW5kbGVyPWZ1bmN0aW9uKHJlY2VpcHQpe2lmKHJlY2VpcHQuY29uZmlybWF0aW9uczxjb25maXJtYXRpb25zKXtyZXR1cm59aWYoYWxyZWFkeURvbmUoKSl7cmV0dXJufXJlc29sdmUocmVjZWlwdCl9O190aGlzLm9uKHRyYW5zYWN0aW9uSGFzaCxtaW5lZEhhbmRsZXIpO2NhbmNlbEZ1bmNzLnB1c2goZnVuY3Rpb24oKXtfdGhpcy5yZW1vdmVMaXN0ZW5lcih0cmFuc2FjdGlvbkhhc2gsbWluZWRIYW5kbGVyKX0pO2lmKHJlcGxhY2VhYmxlKXt2YXIgbGFzdEJsb2NrTnVtYmVyXzE9cmVwbGFjZWFibGUuc3RhcnRCbG9jazt2YXIgc2Nhbm5lZEJsb2NrXzE9bnVsbDt2YXIgcmVwbGFjZUhhbmRsZXJfMT1mdW5jdGlvbihibG9ja051bWJlcil7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKGRvbmUpe3JldHVyblsyXX1yZXR1cm5bNCxzdGFsbCgxZTMpXTtjYXNlIDE6X2Euc2VudCgpO3RoaXMuZ2V0VHJhbnNhY3Rpb25Db3VudChyZXBsYWNlYWJsZS5mcm9tKS50aGVuKGZ1bmN0aW9uKG5vbmNlKXtyZXR1cm4gX19hd2FpdGVyKF90aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbWluZWQsYmxvY2ssdGksdHgscmVjZWlwdF8xLHJlYXNvbjtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoZG9uZSl7cmV0dXJuWzJdfWlmKCEobm9uY2U8PXJlcGxhY2VhYmxlLm5vbmNlKSlyZXR1cm5bMywxXTtsYXN0QmxvY2tOdW1iZXJfMT1ibG9ja051bWJlcjtyZXR1cm5bMyw5XTtjYXNlIDE6cmV0dXJuWzQsdGhpcy5nZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbkhhc2gpXTtjYXNlIDI6bWluZWQ9X2Euc2VudCgpO2lmKG1pbmVkJiZtaW5lZC5ibG9ja051bWJlciE9bnVsbCl7cmV0dXJuWzJdfWlmKHNjYW5uZWRCbG9ja18xPT1udWxsKXtzY2FubmVkQmxvY2tfMT1sYXN0QmxvY2tOdW1iZXJfMS0zO2lmKHNjYW5uZWRCbG9ja18xPHJlcGxhY2VhYmxlLnN0YXJ0QmxvY2spe3NjYW5uZWRCbG9ja18xPXJlcGxhY2VhYmxlLnN0YXJ0QmxvY2t9fV9hLmxhYmVsPTM7Y2FzZSAzOmlmKCEoc2Nhbm5lZEJsb2NrXzE8PWJsb2NrTnVtYmVyKSlyZXR1cm5bMyw5XTtpZihkb25lKXtyZXR1cm5bMl19cmV0dXJuWzQsdGhpcy5nZXRCbG9ja1dpdGhUcmFuc2FjdGlvbnMoc2Nhbm5lZEJsb2NrXzEpXTtjYXNlIDQ6YmxvY2s9X2Euc2VudCgpO3RpPTA7X2EubGFiZWw9NTtjYXNlIDU6aWYoISh0aTxibG9jay50cmFuc2FjdGlvbnMubGVuZ3RoKSlyZXR1cm5bMyw4XTt0eD1ibG9jay50cmFuc2FjdGlvbnNbdGldO2lmKHR4Lmhhc2g9PT10cmFuc2FjdGlvbkhhc2gpe3JldHVyblsyXX1pZighKHR4LmZyb209PT1yZXBsYWNlYWJsZS5mcm9tJiZ0eC5ub25jZT09PXJlcGxhY2VhYmxlLm5vbmNlKSlyZXR1cm5bMyw3XTtpZihkb25lKXtyZXR1cm5bMl19cmV0dXJuWzQsdGhpcy53YWl0Rm9yVHJhbnNhY3Rpb24odHguaGFzaCxjb25maXJtYXRpb25zKV07Y2FzZSA2OnJlY2VpcHRfMT1fYS5zZW50KCk7aWYoYWxyZWFkeURvbmUoKSl7cmV0dXJuWzJdfXJlYXNvbj0icmVwbGFjZWQiO2lmKHR4LmRhdGE9PT1yZXBsYWNlYWJsZS5kYXRhJiZ0eC50bz09PXJlcGxhY2VhYmxlLnRvJiZ0eC52YWx1ZS5lcShyZXBsYWNlYWJsZS52YWx1ZSkpe3JlYXNvbj0icmVwcmljZWQifWVsc2UgaWYodHguZGF0YT09PSIweCImJnR4LmZyb209PT10eC50byYmdHgudmFsdWUuaXNaZXJvKCkpe3JlYXNvbj0iY2FuY2VsbGVkIn1yZWplY3QobG9nZ2VyLm1ha2VFcnJvcigidHJhbnNhY3Rpb24gd2FzIHJlcGxhY2VkIixsaWIuTG9nZ2VyLmVycm9ycy5UUkFOU0FDVElPTl9SRVBMQUNFRCx7Y2FuY2VsbGVkOnJlYXNvbj09PSJyZXBsYWNlZCJ8fHJlYXNvbj09PSJjYW5jZWxsZWQiLHJlYXNvbjpyZWFzb24scmVwbGFjZW1lbnQ6dGhpcy5fd3JhcFRyYW5zYWN0aW9uKHR4KSxoYXNoOnRyYW5zYWN0aW9uSGFzaCxyZWNlaXB0OnJlY2VpcHRfMX0pKTtyZXR1cm5bMl07Y2FzZSA3OnRpKys7cmV0dXJuWzMsNV07Y2FzZSA4OnNjYW5uZWRCbG9ja18xKys7cmV0dXJuWzMsM107Y2FzZSA5OmlmKGRvbmUpe3JldHVyblsyXX10aGlzLm9uY2UoImJsb2NrIixyZXBsYWNlSGFuZGxlcl8xKTtyZXR1cm5bMl19fSl9KX0sZnVuY3Rpb24oZXJyb3Ipe2lmKGRvbmUpe3JldHVybn1fdGhpcy5vbmNlKCJibG9jayIscmVwbGFjZUhhbmRsZXJfMSl9KTtyZXR1cm5bMl19fSl9KX07aWYoZG9uZSl7cmV0dXJufV90aGlzLm9uY2UoImJsb2NrIixyZXBsYWNlSGFuZGxlcl8xKTtjYW5jZWxGdW5jcy5wdXNoKGZ1bmN0aW9uKCl7X3RoaXMucmVtb3ZlTGlzdGVuZXIoImJsb2NrIixyZXBsYWNlSGFuZGxlcl8xKX0pfWlmKHR5cGVvZiB0aW1lb3V0PT09Im51bWJlciImJnRpbWVvdXQ+MCl7dmFyIHRpbWVyXzE9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKGFscmVhZHlEb25lKCkpe3JldHVybn1yZWplY3QobG9nZ2VyLm1ha2VFcnJvcigidGltZW91dCBleGNlZWRlZCIsbGliLkxvZ2dlci5lcnJvcnMuVElNRU9VVCx7dGltZW91dDp0aW1lb3V0fSkpfSx0aW1lb3V0KTtpZih0aW1lcl8xLnVucmVmKXt0aW1lcl8xLnVucmVmKCl9Y2FuY2VsRnVuY3MucHVzaChmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aW1lcl8xKX0pfX0pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEJsb2NrTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7cmV0dXJuWzIsdGhpcy5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigwKV19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEdhc1ByaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLnBlcmZvcm0oImdldEdhc1ByaWNlIix7fSldO2Nhc2UgMjpyZXN1bHQ9X2Euc2VudCgpO3RyeXtyZXR1cm5bMixsaWIkMi5CaWdOdW1iZXIuZnJvbShyZXN1bHQpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiZ2V0R2FzUHJpY2UiLHJlc3VsdDpyZXN1bHQsZXJyb3I6ZXJyb3J9KV19cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0QmFsYW5jZT1mdW5jdGlvbihhZGRyZXNzT3JOYW1lLGJsb2NrVGFnKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMscmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh7YWRkcmVzczp0aGlzLl9nZXRBZGRyZXNzKGFkZHJlc3NPck5hbWUpLGJsb2NrVGFnOnRoaXMuX2dldEJsb2NrVGFnKGJsb2NrVGFnKX0pXTtjYXNlIDI6cGFyYW1zPV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLnBlcmZvcm0oImdldEJhbGFuY2UiLHBhcmFtcyldO2Nhc2UgMzpyZXN1bHQ9X2Euc2VudCgpO3RyeXtyZXR1cm5bMixsaWIkMi5CaWdOdW1iZXIuZnJvbShyZXN1bHQpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiZ2V0QmFsYW5jZSIscGFyYW1zOnBhcmFtcyxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uQ291bnQ9ZnVuY3Rpb24oYWRkcmVzc09yTmFtZSxibG9ja1RhZyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGFyYW1zLHJlc3VsdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMoe2FkZHJlc3M6dGhpcy5fZ2V0QWRkcmVzcyhhZGRyZXNzT3JOYW1lKSxibG9ja1RhZzp0aGlzLl9nZXRCbG9ja1RhZyhibG9ja1RhZyl9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRUcmFuc2FjdGlvbkNvdW50IixwYXJhbXMpXTtjYXNlIDM6cmVzdWx0PV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsbGliJDIuQmlnTnVtYmVyLmZyb20ocmVzdWx0KS50b051bWJlcigpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiZ2V0VHJhbnNhY3Rpb25Db3VudCIscGFyYW1zOnBhcmFtcyxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldENvZGU9ZnVuY3Rpb24oYWRkcmVzc09yTmFtZSxibG9ja1RhZyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGFyYW1zLHJlc3VsdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMoe2FkZHJlc3M6dGhpcy5fZ2V0QWRkcmVzcyhhZGRyZXNzT3JOYW1lKSxibG9ja1RhZzp0aGlzLl9nZXRCbG9ja1RhZyhibG9ja1RhZyl9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRDb2RlIixwYXJhbXMpXTtjYXNlIDM6cmVzdWx0PV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsbGliJDEuaGV4bGlmeShyZXN1bHQpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiZ2V0Q29kZSIscGFyYW1zOnBhcmFtcyxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldFN0b3JhZ2VBdD1mdW5jdGlvbihhZGRyZXNzT3JOYW1lLHBvc2l0aW9uLGJsb2NrVGFnKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMscmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh7YWRkcmVzczp0aGlzLl9nZXRBZGRyZXNzKGFkZHJlc3NPck5hbWUpLGJsb2NrVGFnOnRoaXMuX2dldEJsb2NrVGFnKGJsb2NrVGFnKSxwb3NpdGlvbjpQcm9taXNlLnJlc29sdmUocG9zaXRpb24pLnRoZW4oZnVuY3Rpb24ocCl7cmV0dXJuIGxpYiQxLmhleFZhbHVlKHApfSl9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRTdG9yYWdlQXQiLHBhcmFtcyldO2Nhc2UgMzpyZXN1bHQ9X2Euc2VudCgpO3RyeXtyZXR1cm5bMixsaWIkMS5oZXhsaWZ5KHJlc3VsdCldfWNhdGNoKGVycm9yKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiYmFkIHJlc3VsdCBmcm9tIGJhY2tlbmQiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7bWV0aG9kOiJnZXRTdG9yYWdlQXQiLHBhcmFtczpwYXJhbXMscmVzdWx0OnJlc3VsdCxlcnJvcjplcnJvcn0pXX1yZXR1cm5bMl19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fd3JhcFRyYW5zYWN0aW9uPWZ1bmN0aW9uKHR4LGhhc2gsc3RhcnRCbG9jayl7dmFyIF90aGlzPXRoaXM7aWYoaGFzaCE9bnVsbCYmbGliJDEuaGV4RGF0YUxlbmd0aChoYXNoKSE9PTMyKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcmVzcG9uc2UgLSBzZW5kVHJhbnNhY3Rpb24iKX12YXIgcmVzdWx0PXR4O2lmKGhhc2ghPW51bGwmJnR4Lmhhc2ghPT1oYXNoKXtsb2dnZXIudGhyb3dFcnJvcigiVHJhbnNhY3Rpb24gaGFzaCBtaXNtYXRjaCBmcm9tIFByb3ZpZGVyLnNlbmRUcmFuc2FjdGlvbi4iLGxpYi5Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1Ise2V4cGVjdGVkSGFzaDp0eC5oYXNoLHJldHVybmVkSGFzaDpoYXNofSl9cmVzdWx0LndhaXQ9ZnVuY3Rpb24oY29uZmlybXMsdGltZW91dCl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlcGxhY2VtZW50LHJlY2VpcHQ7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKGNvbmZpcm1zPT1udWxsKXtjb25maXJtcz0xfWlmKHRpbWVvdXQ9PW51bGwpe3RpbWVvdXQ9MH1yZXBsYWNlbWVudD11bmRlZmluZWQ7aWYoY29uZmlybXMhPT0wJiZzdGFydEJsb2NrIT1udWxsKXtyZXBsYWNlbWVudD17ZGF0YTp0eC5kYXRhLGZyb206dHguZnJvbSxub25jZTp0eC5ub25jZSx0bzp0eC50byx2YWx1ZTp0eC52YWx1ZSxzdGFydEJsb2NrOnN0YXJ0QmxvY2t9fXJldHVybls0LHRoaXMuX3dhaXRGb3JUcmFuc2FjdGlvbih0eC5oYXNoLGNvbmZpcm1zLHRpbWVvdXQscmVwbGFjZW1lbnQpXTtjYXNlIDE6cmVjZWlwdD1fYS5zZW50KCk7aWYocmVjZWlwdD09bnVsbCYmY29uZmlybXM9PT0wKXtyZXR1cm5bMixudWxsXX10aGlzLl9lbWl0dGVkWyJ0OiIrdHguaGFzaF09cmVjZWlwdC5ibG9ja051bWJlcjtpZihyZWNlaXB0LnN0YXR1cz09PTApe2xvZ2dlci50aHJvd0Vycm9yKCJ0cmFuc2FjdGlvbiBmYWlsZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLHt0cmFuc2FjdGlvbkhhc2g6dHguaGFzaCx0cmFuc2FjdGlvbjp0eCxyZWNlaXB0OnJlY2VpcHR9KX1yZXR1cm5bMixyZWNlaXB0XX19KX0pfTtyZXR1cm4gcmVzdWx0fTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLnNlbmRUcmFuc2FjdGlvbj1mdW5jdGlvbihzaWduZWRUcmFuc2FjdGlvbil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaGV4VHgsdHgsYmxvY2tOdW1iZXIsaGFzaCxlcnJvcl80O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCxQcm9taXNlLnJlc29sdmUoc2lnbmVkVHJhbnNhY3Rpb24pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGxpYiQxLmhleGxpZnkodCl9KV07Y2FzZSAyOmhleFR4PV9hLnNlbnQoKTt0eD10aGlzLmZvcm1hdHRlci50cmFuc2FjdGlvbihzaWduZWRUcmFuc2FjdGlvbik7cmV0dXJuWzQsdGhpcy5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigxMDArMip0aGlzLnBvbGxpbmdJbnRlcnZhbCldO2Nhc2UgMzpibG9ja051bWJlcj1fYS5zZW50KCk7X2EubGFiZWw9NDtjYXNlIDQ6X2EudHJ5cy5wdXNoKFs0LDYsLDddKTtyZXR1cm5bNCx0aGlzLnBlcmZvcm0oInNlbmRUcmFuc2FjdGlvbiIse3NpZ25lZFRyYW5zYWN0aW9uOmhleFR4fSldO2Nhc2UgNTpoYXNoPV9hLnNlbnQoKTtyZXR1cm5bMix0aGlzLl93cmFwVHJhbnNhY3Rpb24odHgsaGFzaCxibG9ja051bWJlcildO2Nhc2UgNjplcnJvcl80PV9hLnNlbnQoKTtlcnJvcl80LnRyYW5zYWN0aW9uPXR4O2Vycm9yXzQudHJhbnNhY3Rpb25IYXNoPXR4Lmhhc2g7dGhyb3cgZXJyb3JfNDtjYXNlIDc6cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX2dldFRyYW5zYWN0aW9uUmVxdWVzdD1mdW5jdGlvbih0cmFuc2FjdGlvbil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmFsdWVzLHR4LF9hLF9iO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9jKXtzd2l0Y2goX2MubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0cmFuc2FjdGlvbl07Y2FzZSAxOnZhbHVlcz1fYy5zZW50KCk7dHg9e307WyJmcm9tIiwidG8iXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodmFsdWVzW2tleV09PW51bGwpe3JldHVybn10eFtrZXldPVByb21pc2UucmVzb2x2ZSh2YWx1ZXNba2V5XSkudGhlbihmdW5jdGlvbih2KXtyZXR1cm4gdj9fdGhpcy5fZ2V0QWRkcmVzcyh2KTpudWxsfSl9KTtbImdhc0xpbWl0IiwiZ2FzUHJpY2UiLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih2YWx1ZXNba2V5XT09bnVsbCl7cmV0dXJufXR4W2tleV09UHJvbWlzZS5yZXNvbHZlKHZhbHVlc1trZXldKS50aGVuKGZ1bmN0aW9uKHYpe3JldHVybiB2P2xpYiQyLkJpZ051bWJlci5mcm9tKHYpOm51bGx9KX0pO1sidHlwZSJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih2YWx1ZXNba2V5XT09bnVsbCl7cmV0dXJufXR4W2tleV09UHJvbWlzZS5yZXNvbHZlKHZhbHVlc1trZXldKS50aGVuKGZ1bmN0aW9uKHYpe3JldHVybiB2IT1udWxsP3Y6bnVsbH0pfSk7aWYodmFsdWVzLmFjY2Vzc0xpc3Qpe3R4LmFjY2Vzc0xpc3Q9dGhpcy5mb3JtYXR0ZXIuYWNjZXNzTGlzdCh2YWx1ZXMuYWNjZXNzTGlzdCl9WyJkYXRhIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKHZhbHVlc1trZXldPT1udWxsKXtyZXR1cm59dHhba2V5XT1Qcm9taXNlLnJlc29sdmUodmFsdWVzW2tleV0pLnRoZW4oZnVuY3Rpb24odil7cmV0dXJuIHY/bGliJDEuaGV4bGlmeSh2KTpudWxsfSl9KTtfYj0oX2E9dGhpcy5mb3JtYXR0ZXIpLnRyYW5zYWN0aW9uUmVxdWVzdDtyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh0eCldO2Nhc2UgMjpyZXR1cm5bMixfYi5hcHBseShfYSxbX2Muc2VudCgpXSldfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX2dldEZpbHRlcj1mdW5jdGlvbihmaWx0ZXIpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc3VsdCxfYSxfYjt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYyl7c3dpdGNoKF9jLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsZmlsdGVyXTtjYXNlIDE6ZmlsdGVyPV9jLnNlbnQoKTtyZXN1bHQ9e307aWYoZmlsdGVyLmFkZHJlc3MhPW51bGwpe3Jlc3VsdC5hZGRyZXNzPXRoaXMuX2dldEFkZHJlc3MoZmlsdGVyLmFkZHJlc3MpfVsiYmxvY2tIYXNoIiwidG9waWNzIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKGZpbHRlcltrZXldPT1udWxsKXtyZXR1cm59cmVzdWx0W2tleV09ZmlsdGVyW2tleV19KTtbImZyb21CbG9jayIsInRvQmxvY2siXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYoZmlsdGVyW2tleV09PW51bGwpe3JldHVybn1yZXN1bHRba2V5XT1fdGhpcy5fZ2V0QmxvY2tUYWcoZmlsdGVyW2tleV0pfSk7X2I9KF9hPXRoaXMuZm9ybWF0dGVyKS5maWx0ZXI7cmV0dXJuWzQsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMocmVzdWx0KV07Y2FzZSAyOnJldHVyblsyLF9iLmFwcGx5KF9hLFtfYy5zZW50KCldKV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHRyYW5zYWN0aW9uLGJsb2NrVGFnKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMscmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh7dHJhbnNhY3Rpb246dGhpcy5fZ2V0VHJhbnNhY3Rpb25SZXF1ZXN0KHRyYW5zYWN0aW9uKSxibG9ja1RhZzp0aGlzLl9nZXRCbG9ja1RhZyhibG9ja1RhZyl9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJjYWxsIixwYXJhbXMpXTtjYXNlIDM6cmVzdWx0PV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsbGliJDEuaGV4bGlmeShyZXN1bHQpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiY2FsbCIscGFyYW1zOnBhcmFtcyxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmVzdGltYXRlR2FzPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMscmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh7dHJhbnNhY3Rpb246dGhpcy5fZ2V0VHJhbnNhY3Rpb25SZXF1ZXN0KHRyYW5zYWN0aW9uKX0pXTtjYXNlIDI6cGFyYW1zPV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLnBlcmZvcm0oImVzdGltYXRlR2FzIixwYXJhbXMpXTtjYXNlIDM6cmVzdWx0PV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsbGliJDIuQmlnTnVtYmVyLmZyb20ocmVzdWx0KV19Y2F0Y2goZXJyb3Ipe3JldHVyblsyLGxvZ2dlci50aHJvd0Vycm9yKCJiYWQgcmVzdWx0IGZyb20gYmFja2VuZCIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHttZXRob2Q6ImVzdGltYXRlR2FzIixwYXJhbXM6cGFyYW1zLHJlc3VsdDpyZXN1bHQsZXJyb3I6ZXJyb3J9KV19cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX2dldEFkZHJlc3M9ZnVuY3Rpb24oYWRkcmVzc09yTmFtZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXNvbHZlTmFtZShhZGRyZXNzT3JOYW1lKV07Y2FzZSAxOmFkZHJlc3M9X2Euc2VudCgpO2lmKGFkZHJlc3M9PW51bGwpe2xvZ2dlci50aHJvd0Vycm9yKCJFTlMgbmFtZSBub3QgY29uZmlndXJlZCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InJlc29sdmVOYW1lKCIrSlNPTi5zdHJpbmdpZnkoYWRkcmVzc09yTmFtZSkrIikifSl9cmV0dXJuWzIsYWRkcmVzc119fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fZ2V0QmxvY2s9ZnVuY3Rpb24oYmxvY2tIYXNoT3JCbG9ja1RhZyxpbmNsdWRlVHJhbnNhY3Rpb25zKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBibG9ja051bWJlcixwYXJhbXMsX2EsX2IsX2MsZXJyb3JfNTt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfZCl7c3dpdGNoKF9kLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfZC5zZW50KCk7cmV0dXJuWzQsYmxvY2tIYXNoT3JCbG9ja1RhZ107Y2FzZSAyOmJsb2NrSGFzaE9yQmxvY2tUYWc9X2Quc2VudCgpO2Jsb2NrTnVtYmVyPS0xMjg7cGFyYW1zPXtpbmNsdWRlVHJhbnNhY3Rpb25zOiEhaW5jbHVkZVRyYW5zYWN0aW9uc307aWYoIWxpYiQxLmlzSGV4U3RyaW5nKGJsb2NrSGFzaE9yQmxvY2tUYWcsMzIpKXJldHVyblszLDNdO3BhcmFtcy5ibG9ja0hhc2g9YmxvY2tIYXNoT3JCbG9ja1RhZztyZXR1cm5bMyw2XTtjYXNlIDM6X2QudHJ5cy5wdXNoKFszLDUsLDZdKTtfYT1wYXJhbXM7X2M9KF9iPXRoaXMuZm9ybWF0dGVyKS5ibG9ja1RhZztyZXR1cm5bNCx0aGlzLl9nZXRCbG9ja1RhZyhibG9ja0hhc2hPckJsb2NrVGFnKV07Y2FzZSA0Ol9hLmJsb2NrVGFnPV9jLmFwcGx5KF9iLFtfZC5zZW50KCldKTtpZihsaWIkMS5pc0hleFN0cmluZyhwYXJhbXMuYmxvY2tUYWcpKXtibG9ja051bWJlcj1wYXJzZUludChwYXJhbXMuYmxvY2tUYWcuc3Vic3RyaW5nKDIpLDE2KX1yZXR1cm5bMyw2XTtjYXNlIDU6ZXJyb3JfNT1fZC5zZW50KCk7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBibG9jayBoYXNoIG9yIGJsb2NrIHRhZyIsImJsb2NrSGFzaE9yQmxvY2tUYWciLGJsb2NrSGFzaE9yQmxvY2tUYWcpO3JldHVyblszLDZdO2Nhc2UgNjpyZXR1cm5bMixsaWIkcS5wb2xsKGZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrLGJsb2NrTnVtYmVyXzEsaSx0eCxjb25maXJtYXRpb25zO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnBlcmZvcm0oImdldEJsb2NrIixwYXJhbXMpXTtjYXNlIDE6YmxvY2s9X2Euc2VudCgpO2lmKGJsb2NrPT1udWxsKXtpZihwYXJhbXMuYmxvY2tIYXNoIT1udWxsKXtpZih0aGlzLl9lbWl0dGVkWyJiOiIrcGFyYW1zLmJsb2NrSGFzaF09PW51bGwpe3JldHVyblsyLG51bGxdfX1pZihwYXJhbXMuYmxvY2tUYWchPW51bGwpe2lmKGJsb2NrTnVtYmVyPnRoaXMuX2VtaXR0ZWQuYmxvY2spe3JldHVyblsyLG51bGxdfX1yZXR1cm5bMix1bmRlZmluZWRdfWlmKCFpbmNsdWRlVHJhbnNhY3Rpb25zKXJldHVyblszLDhdO2Jsb2NrTnVtYmVyXzE9bnVsbDtpPTA7X2EubGFiZWw9MjtjYXNlIDI6aWYoIShpPGJsb2NrLnRyYW5zYWN0aW9ucy5sZW5ndGgpKXJldHVyblszLDddO3R4PWJsb2NrLnRyYW5zYWN0aW9uc1tpXTtpZighKHR4LmJsb2NrTnVtYmVyPT1udWxsKSlyZXR1cm5bMywzXTt0eC5jb25maXJtYXRpb25zPTA7cmV0dXJuWzMsNl07Y2FzZSAzOmlmKCEodHguY29uZmlybWF0aW9ucz09bnVsbCkpcmV0dXJuWzMsNl07aWYoIShibG9ja051bWJlcl8xPT1udWxsKSlyZXR1cm5bMyw1XTtyZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCsyKnRoaXMucG9sbGluZ0ludGVydmFsKV07Y2FzZSA0OmJsb2NrTnVtYmVyXzE9X2Euc2VudCgpO19hLmxhYmVsPTU7Y2FzZSA1OmNvbmZpcm1hdGlvbnM9YmxvY2tOdW1iZXJfMS10eC5ibG9ja051bWJlcisxO2lmKGNvbmZpcm1hdGlvbnM8PTApe2NvbmZpcm1hdGlvbnM9MX10eC5jb25maXJtYXRpb25zPWNvbmZpcm1hdGlvbnM7X2EubGFiZWw9NjtjYXNlIDY6aSsrO3JldHVyblszLDJdO2Nhc2UgNzpyZXR1cm5bMix0aGlzLmZvcm1hdHRlci5ibG9ja1dpdGhUcmFuc2FjdGlvbnMoYmxvY2spXTtjYXNlIDg6cmV0dXJuWzIsdGhpcy5mb3JtYXR0ZXIuYmxvY2soYmxvY2spXX19KX0pfSx7b25jZVBvbGw6dGhpc30pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEJsb2NrPWZ1bmN0aW9uKGJsb2NrSGFzaE9yQmxvY2tUYWcpe3JldHVybiB0aGlzLl9nZXRCbG9jayhibG9ja0hhc2hPckJsb2NrVGFnLGZhbHNlKX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRCbG9ja1dpdGhUcmFuc2FjdGlvbnM9ZnVuY3Rpb24oYmxvY2tIYXNoT3JCbG9ja1RhZyl7cmV0dXJuIHRoaXMuX2dldEJsb2NrKGJsb2NrSGFzaE9yQmxvY2tUYWcsdHJ1ZSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb25IYXNoKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXM7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0TmV0d29yaygpXTtjYXNlIDE6X2Euc2VudCgpO3JldHVybls0LHRyYW5zYWN0aW9uSGFzaF07Y2FzZSAyOnRyYW5zYWN0aW9uSGFzaD1fYS5zZW50KCk7cGFyYW1zPXt0cmFuc2FjdGlvbkhhc2g6dGhpcy5mb3JtYXR0ZXIuaGFzaCh0cmFuc2FjdGlvbkhhc2gsdHJ1ZSl9O3JldHVyblsyLGxpYiRxLnBvbGwoZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKF90aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVzdWx0LHR4LGJsb2NrTnVtYmVyLGNvbmZpcm1hdGlvbnM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucGVyZm9ybSgiZ2V0VHJhbnNhY3Rpb24iLHBhcmFtcyldO2Nhc2UgMTpyZXN1bHQ9X2Euc2VudCgpO2lmKHJlc3VsdD09bnVsbCl7aWYodGhpcy5fZW1pdHRlZFsidDoiK3RyYW5zYWN0aW9uSGFzaF09PW51bGwpe3JldHVyblsyLG51bGxdfXJldHVyblsyLHVuZGVmaW5lZF19dHg9dGhpcy5mb3JtYXR0ZXIudHJhbnNhY3Rpb25SZXNwb25zZShyZXN1bHQpO2lmKCEodHguYmxvY2tOdW1iZXI9PW51bGwpKXJldHVyblszLDJdO3R4LmNvbmZpcm1hdGlvbnM9MDtyZXR1cm5bMyw0XTtjYXNlIDI6aWYoISh0eC5jb25maXJtYXRpb25zPT1udWxsKSlyZXR1cm5bMyw0XTtyZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCsyKnRoaXMucG9sbGluZ0ludGVydmFsKV07Y2FzZSAzOmJsb2NrTnVtYmVyPV9hLnNlbnQoKTtjb25maXJtYXRpb25zPWJsb2NrTnVtYmVyLXR4LmJsb2NrTnVtYmVyKzE7aWYoY29uZmlybWF0aW9uczw9MCl7Y29uZmlybWF0aW9ucz0xfXR4LmNvbmZpcm1hdGlvbnM9Y29uZmlybWF0aW9ucztfYS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMix0aGlzLl93cmFwVHJhbnNhY3Rpb24odHgpXX19KX0pfSx7b25jZVBvbGw6dGhpc30pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uUmVjZWlwdD1mdW5jdGlvbih0cmFuc2FjdGlvbkhhc2gpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBhcmFtczt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsdHJhbnNhY3Rpb25IYXNoXTtjYXNlIDI6dHJhbnNhY3Rpb25IYXNoPV9hLnNlbnQoKTtwYXJhbXM9e3RyYW5zYWN0aW9uSGFzaDp0aGlzLmZvcm1hdHRlci5oYXNoKHRyYW5zYWN0aW9uSGFzaCx0cnVlKX07cmV0dXJuWzIsbGliJHEucG9sbChmdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIoX3RoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZXN1bHQscmVjZWlwdCxibG9ja051bWJlcixjb25maXJtYXRpb25zO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnBlcmZvcm0oImdldFRyYW5zYWN0aW9uUmVjZWlwdCIscGFyYW1zKV07Y2FzZSAxOnJlc3VsdD1fYS5zZW50KCk7aWYocmVzdWx0PT1udWxsKXtpZih0aGlzLl9lbWl0dGVkWyJ0OiIrdHJhbnNhY3Rpb25IYXNoXT09bnVsbCl7cmV0dXJuWzIsbnVsbF19cmV0dXJuWzIsdW5kZWZpbmVkXX1pZihyZXN1bHQuYmxvY2tIYXNoPT1udWxsKXtyZXR1cm5bMix1bmRlZmluZWRdfXJlY2VpcHQ9dGhpcy5mb3JtYXR0ZXIucmVjZWlwdChyZXN1bHQpO2lmKCEocmVjZWlwdC5ibG9ja051bWJlcj09bnVsbCkpcmV0dXJuWzMsMl07cmVjZWlwdC5jb25maXJtYXRpb25zPTA7cmV0dXJuWzMsNF07Y2FzZSAyOmlmKCEocmVjZWlwdC5jb25maXJtYXRpb25zPT1udWxsKSlyZXR1cm5bMyw0XTtyZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCsyKnRoaXMucG9sbGluZ0ludGVydmFsKV07Y2FzZSAzOmJsb2NrTnVtYmVyPV9hLnNlbnQoKTtjb25maXJtYXRpb25zPWJsb2NrTnVtYmVyLXJlY2VpcHQuYmxvY2tOdW1iZXIrMTtpZihjb25maXJtYXRpb25zPD0wKXtjb25maXJtYXRpb25zPTF9cmVjZWlwdC5jb25maXJtYXRpb25zPWNvbmZpcm1hdGlvbnM7X2EubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzIscmVjZWlwdF19fSl9KX0se29uY2VQb2xsOnRoaXN9KV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRMb2dzPWZ1bmN0aW9uKGZpbHRlcil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGFyYW1zLGxvZ3M7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0TmV0d29yaygpXTtjYXNlIDE6X2Euc2VudCgpO3JldHVybls0LGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKHtmaWx0ZXI6dGhpcy5fZ2V0RmlsdGVyKGZpbHRlcil9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRMb2dzIixwYXJhbXMpXTtjYXNlIDM6bG9ncz1fYS5zZW50KCk7bG9ncy5mb3JFYWNoKGZ1bmN0aW9uKGxvZyl7aWYobG9nLnJlbW92ZWQ9PW51bGwpe2xvZy5yZW1vdmVkPWZhbHNlfX0pO3JldHVyblsyLGZvcm1hdHRlci5Gb3JtYXR0ZXIuYXJyYXlPZih0aGlzLmZvcm1hdHRlci5maWx0ZXJMb2cuYmluZCh0aGlzLmZvcm1hdHRlcikpKGxvZ3MpXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEV0aGVyUHJpY2U9ZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bMix0aGlzLnBlcmZvcm0oImdldEV0aGVyUHJpY2UiLHt9KV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fZ2V0QmxvY2tUYWc9ZnVuY3Rpb24oYmxvY2tUYWcpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrTnVtYmVyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxibG9ja1RhZ107Y2FzZSAxOmJsb2NrVGFnPV9hLnNlbnQoKTtpZighKHR5cGVvZiBibG9ja1RhZz09PSJudW1iZXIiJiZibG9ja1RhZzwwKSlyZXR1cm5bMywzXTtpZihibG9ja1RhZyUxKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIEJsb2NrVGFnIiwiYmxvY2tUYWciLGJsb2NrVGFnKX1yZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCsyKnRoaXMucG9sbGluZ0ludGVydmFsKV07Y2FzZSAyOmJsb2NrTnVtYmVyPV9hLnNlbnQoKTtibG9ja051bWJlcis9YmxvY2tUYWc7aWYoYmxvY2tOdW1iZXI8MCl7YmxvY2tOdW1iZXI9MH1yZXR1cm5bMix0aGlzLmZvcm1hdHRlci5ibG9ja1RhZyhibG9ja051bWJlcildO2Nhc2UgMzpyZXR1cm5bMix0aGlzLmZvcm1hdHRlci5ibG9ja1RhZyhibG9ja1RhZyldfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0UmVzb2x2ZXI9ZnVuY3Rpb24obmFtZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5fZ2V0UmVzb2x2ZXIobmFtZSldO2Nhc2UgMTphZGRyZXNzPV9hLnNlbnQoKTtpZihhZGRyZXNzPT1udWxsKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bMixuZXcgUmVzb2x2ZXIodGhpcyxhZGRyZXNzLG5hbWUpXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9nZXRSZXNvbHZlcj1mdW5jdGlvbihuYW1lKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBuZXR3b3JrLHRyYW5zYWN0aW9uLF9hLF9iO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9jKXtzd2l0Y2goX2MubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOm5ldHdvcms9X2Muc2VudCgpO2lmKCFuZXR3b3JrLmVuc0FkZHJlc3Mpe2xvZ2dlci50aHJvd0Vycm9yKCJuZXR3b3JrIGRvZXMgbm90IHN1cHBvcnQgRU5TIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiRU5TIixuZXR3b3JrOm5ldHdvcmsubmFtZX0pfXRyYW5zYWN0aW9uPXt0bzpuZXR3b3JrLmVuc0FkZHJlc3MsZGF0YToiMHgwMTc4YjhiZiIrbGliJDkubmFtZWhhc2gobmFtZSkuc3Vic3RyaW5nKDIpfTtfYj0oX2E9dGhpcy5mb3JtYXR0ZXIpLmNhbGxBZGRyZXNzO3JldHVybls0LHRoaXMuY2FsbCh0cmFuc2FjdGlvbildO2Nhc2UgMjpyZXR1cm5bMixfYi5hcHBseShfYSxbX2Muc2VudCgpXSldfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUucmVzb2x2ZU5hbWU9ZnVuY3Rpb24obmFtZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVzb2x2ZXI7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LG5hbWVdO2Nhc2UgMTpuYW1lPV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsUHJvbWlzZS5yZXNvbHZlKHRoaXMuZm9ybWF0dGVyLmFkZHJlc3MobmFtZSkpXX1jYXRjaChlcnJvcil7aWYobGliJDEuaXNIZXhTdHJpbmcobmFtZSkpe3Rocm93IGVycm9yfX1pZih0eXBlb2YgbmFtZSE9PSJzdHJpbmciKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIEVOUyBuYW1lIiwibmFtZSIsbmFtZSl9cmV0dXJuWzQsdGhpcy5nZXRSZXNvbHZlcihuYW1lKV07Y2FzZSAyOnJlc29sdmVyPV9hLnNlbnQoKTtpZighcmVzb2x2ZXIpe3JldHVyblsyLG51bGxdfXJldHVybls0LHJlc29sdmVyLmdldEFkZHJlc3MoKV07Y2FzZSAzOnJldHVyblsyLF9hLnNlbnQoKV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5sb29rdXBBZGRyZXNzPWZ1bmN0aW9uKGFkZHJlc3Mpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJldmVyc2VOYW1lLHJlc29sdmVyQWRkcmVzcyxieXRlcyxfYSxsZW5ndGgsbmFtZSxhZGRyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxhZGRyZXNzXTtjYXNlIDE6YWRkcmVzcz1fYi5zZW50KCk7YWRkcmVzcz10aGlzLmZvcm1hdHRlci5hZGRyZXNzKGFkZHJlc3MpO3JldmVyc2VOYW1lPWFkZHJlc3Muc3Vic3RyaW5nKDIpLnRvTG93ZXJDYXNlKCkrIi5hZGRyLnJldmVyc2UiO3JldHVybls0LHRoaXMuX2dldFJlc29sdmVyKHJldmVyc2VOYW1lKV07Y2FzZSAyOnJlc29sdmVyQWRkcmVzcz1fYi5zZW50KCk7aWYoIXJlc29sdmVyQWRkcmVzcyl7cmV0dXJuWzIsbnVsbF19X2E9bGliJDEuYXJyYXlpZnk7cmV0dXJuWzQsdGhpcy5jYWxsKHt0bzpyZXNvbHZlckFkZHJlc3MsZGF0YToiMHg2OTFmMzQzMSIrbGliJDkubmFtZWhhc2gocmV2ZXJzZU5hbWUpLnN1YnN0cmluZygyKX0pXTtjYXNlIDM6Ynl0ZXM9X2EuYXBwbHkodm9pZCAwLFtfYi5zZW50KCldKTtpZihieXRlcy5sZW5ndGg8MzJ8fCFsaWIkMi5CaWdOdW1iZXIuZnJvbShieXRlcy5zbGljZSgwLDMyKSkuZXEoMzIpKXtyZXR1cm5bMixudWxsXX1ieXRlcz1ieXRlcy5zbGljZSgzMik7aWYoYnl0ZXMubGVuZ3RoPDMyKXtyZXR1cm5bMixudWxsXX1sZW5ndGg9bGliJDIuQmlnTnVtYmVyLmZyb20oYnl0ZXMuc2xpY2UoMCwzMikpLnRvTnVtYmVyKCk7Ynl0ZXM9Ynl0ZXMuc2xpY2UoMzIpO2lmKGxlbmd0aD5ieXRlcy5sZW5ndGgpe3JldHVyblsyLG51bGxdfW5hbWU9bGliJDgudG9VdGY4U3RyaW5nKGJ5dGVzLnNsaWNlKDAsbGVuZ3RoKSk7cmV0dXJuWzQsdGhpcy5yZXNvbHZlTmFtZShuYW1lKV07Y2FzZSA0OmFkZHI9X2Iuc2VudCgpO2lmKGFkZHIhPWFkZHJlc3Mpe3JldHVyblsyLG51bGxdfXJldHVyblsyLG5hbWVdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUucGVyZm9ybT1mdW5jdGlvbihtZXRob2QscGFyYW1zKXtyZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IobWV0aG9kKyIgbm90IGltcGxlbWVudGVkIixsaWIuTG9nZ2VyLmVycm9ycy5OT1RfSU1QTEVNRU5URUQse29wZXJhdGlvbjptZXRob2R9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fc3RhcnRFdmVudD1mdW5jdGlvbihldmVudCl7dGhpcy5wb2xsaW5nPXRoaXMuX2V2ZW50cy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9sbGFibGUoKX0pLmxlbmd0aD4wfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9zdG9wRXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe3RoaXMucG9sbGluZz10aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnBvbGxhYmxlKCl9KS5sZW5ndGg+MH07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihldmVudE5hbWUsbGlzdGVuZXIsb25jZSl7dmFyIGV2ZW50PW5ldyBFdmVudChnZXRFdmVudFRhZyhldmVudE5hbWUpLGxpc3RlbmVyLG9uY2UpO3RoaXMuX2V2ZW50cy5wdXNoKGV2ZW50KTt0aGlzLl9zdGFydEV2ZW50KGV2ZW50KTtyZXR1cm4gdGhpc307QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5vbj1mdW5jdGlvbihldmVudE5hbWUsbGlzdGVuZXIpe3JldHVybiB0aGlzLl9hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSxsaXN0ZW5lcixmYWxzZSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUub25jZT1mdW5jdGlvbihldmVudE5hbWUsbGlzdGVuZXIpe3JldHVybiB0aGlzLl9hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSxsaXN0ZW5lcix0cnVlKX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGV2ZW50TmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0xO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaS0xXT1hcmd1bWVudHNbX2ldfXZhciByZXN1bHQ9ZmFsc2U7dmFyIHN0b3BwZWQ9W107dmFyIGV2ZW50VGFnPWdldEV2ZW50VGFnKGV2ZW50TmFtZSk7dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50cy5maWx0ZXIoZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LnRhZyE9PWV2ZW50VGFnKXtyZXR1cm4gdHJ1ZX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZXZlbnQubGlzdGVuZXIuYXBwbHkoX3RoaXMsYXJncyl9LDApO3Jlc3VsdD10cnVlO2lmKGV2ZW50Lm9uY2Upe3N0b3BwZWQucHVzaChldmVudCk7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfSk7c3RvcHBlZC5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KXtfdGhpcy5fc3RvcEV2ZW50KGV2ZW50KX0pO3JldHVybiByZXN1bHR9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbihldmVudE5hbWUpe2lmKCFldmVudE5hbWUpe3JldHVybiB0aGlzLl9ldmVudHMubGVuZ3RofXZhciBldmVudFRhZz1nZXRFdmVudFRhZyhldmVudE5hbWUpO3JldHVybiB0aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnQudGFnPT09ZXZlbnRUYWd9KS5sZW5ndGh9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGV2ZW50TmFtZSl7aWYoZXZlbnROYW1lPT1udWxsKXtyZXR1cm4gdGhpcy5fZXZlbnRzLm1hcChmdW5jdGlvbihldmVudCl7cmV0dXJuIGV2ZW50Lmxpc3RlbmVyfSl9dmFyIGV2ZW50VGFnPWdldEV2ZW50VGFnKGV2ZW50TmFtZSk7cmV0dXJuIHRoaXMuX2V2ZW50cy5maWx0ZXIoZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudC50YWc9PT1ldmVudFRhZ30pLm1hcChmdW5jdGlvbihldmVudCl7cmV0dXJuIGV2ZW50Lmxpc3RlbmVyfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGV2ZW50TmFtZSxsaXN0ZW5lcil7dmFyIF90aGlzPXRoaXM7aWYobGlzdGVuZXI9PW51bGwpe3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhldmVudE5hbWUpfXZhciBzdG9wcGVkPVtdO3ZhciBmb3VuZD1mYWxzZTt2YXIgZXZlbnRUYWc9Z2V0RXZlbnRUYWcoZXZlbnROYW1lKTt0aGlzLl9ldmVudHM9dGhpcy5fZXZlbnRzLmZpbHRlcihmdW5jdGlvbihldmVudCl7aWYoZXZlbnQudGFnIT09ZXZlbnRUYWd8fGV2ZW50Lmxpc3RlbmVyIT1saXN0ZW5lcil7cmV0dXJuIHRydWV9aWYoZm91bmQpe3JldHVybiB0cnVlfWZvdW5kPXRydWU7c3RvcHBlZC5wdXNoKGV2ZW50KTtyZXR1cm4gZmFsc2V9KTtzdG9wcGVkLmZvckVhY2goZnVuY3Rpb24oZXZlbnQpe190aGlzLl9zdG9wRXZlbnQoZXZlbnQpfSk7cmV0dXJuIHRoaXN9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGV2ZW50TmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIHN0b3BwZWQ9W107aWYoZXZlbnROYW1lPT1udWxsKXtzdG9wcGVkPXRoaXMuX2V2ZW50czt0aGlzLl9ldmVudHM9W119ZWxzZXt2YXIgZXZlbnRUYWdfMT1nZXRFdmVudFRhZyhldmVudE5hbWUpO3RoaXMuX2V2ZW50cz10aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC50YWchPT1ldmVudFRhZ18xKXtyZXR1cm4gdHJ1ZX1zdG9wcGVkLnB1c2goZXZlbnQpO3JldHVybiBmYWxzZX0pfXN0b3BwZWQuZm9yRWFjaChmdW5jdGlvbihldmVudCl7X3RoaXMuX3N0b3BFdmVudChldmVudCl9KTtyZXR1cm4gdGhpc307cmV0dXJuIEJhc2VQcm92aWRlcn0obGliJGIuUHJvdmlkZXIpO2V4cG9ydHMuQmFzZVByb3ZpZGVyPUJhc2VQcm92aWRlcn0pO3ZhciBiYXNlUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhiYXNlUHJvdmlkZXIpO3ZhciBqc29uUnBjUHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkpzb25ScGNQcm92aWRlcj1leHBvcnRzLkpzb25ScGNTaWduZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgZXJyb3JHYXM9WyJjYWxsIiwiZXN0aW1hdGVHYXMiXTtmdW5jdGlvbiBjaGVja0Vycm9yKG1ldGhvZCxlcnJvcixwYXJhbXMpe2lmKG1ldGhvZD09PSJjYWxsIiYmZXJyb3IuY29kZT09PWxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUil7dmFyIGU9ZXJyb3IuZXJyb3I7aWYoZSYmZS5tZXNzYWdlLm1hdGNoKCJyZXZlcnRlZCIpJiZsaWIkMS5pc0hleFN0cmluZyhlLmRhdGEpKXtyZXR1cm4gZS5kYXRhfX12YXIgbWVzc2FnZT1lcnJvci5tZXNzYWdlO2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1ImJmVycm9yLmVycm9yJiZ0eXBlb2YgZXJyb3IuZXJyb3IubWVzc2FnZT09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLmVycm9yLm1lc3NhZ2V9ZWxzZSBpZih0eXBlb2YgZXJyb3IuYm9keT09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLmJvZHl9ZWxzZSBpZih0eXBlb2YgZXJyb3IucmVzcG9uc2VUZXh0PT09InN0cmluZyIpe21lc3NhZ2U9ZXJyb3IucmVzcG9uc2VUZXh0fW1lc3NhZ2U9KG1lc3NhZ2V8fCIiKS50b0xvd2VyQ2FzZSgpO3ZhciB0cmFuc2FjdGlvbj1wYXJhbXMudHJhbnNhY3Rpb258fHBhcmFtcy5zaWduZWRUcmFuc2FjdGlvbjtpZihtZXNzYWdlLm1hdGNoKC9pbnN1ZmZpY2llbnQgZnVuZHMvKSl7bG9nZ2VyLnRocm93RXJyb3IoImluc3VmZmljaWVudCBmdW5kcyBmb3IgaW50cmluc2ljIHRyYW5zYWN0aW9uIGNvc3QiLGxpYi5Mb2dnZXIuZXJyb3JzLklOU1VGRklDSUVOVF9GVU5EUyx7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfWlmKG1lc3NhZ2UubWF0Y2goL25vbmNlIHRvbyBsb3cvKSl7bG9nZ2VyLnRocm93RXJyb3IoIm5vbmNlIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCIsbGliLkxvZ2dlci5lcnJvcnMuTk9OQ0VfRVhQSVJFRCx7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfWlmKG1lc3NhZ2UubWF0Y2goL3JlcGxhY2VtZW50IHRyYW5zYWN0aW9uIHVuZGVycHJpY2VkLykpe2xvZ2dlci50aHJvd0Vycm9yKCJyZXBsYWNlbWVudCBmZWUgdG9vIGxvdyIsbGliLkxvZ2dlci5lcnJvcnMuUkVQTEFDRU1FTlRfVU5ERVJQUklDRUQse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX1pZihtZXNzYWdlLm1hdGNoKC9vbmx5IHJlcGxheS1wcm90ZWN0ZWQvKSl7bG9nZ2VyLnRocm93RXJyb3IoImxlZ2FjeSBwcmUtZWlwLTE1NSB0cmFuc2FjdGlvbnMgbm90IHN1cHBvcnRlZCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtlcnJvcjplcnJvcixtZXRob2Q6bWV0aG9kLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9ufSl9aWYoZXJyb3JHYXMuaW5kZXhPZihtZXRob2QpPj0wJiZtZXNzYWdlLm1hdGNoKC9nYXMgcmVxdWlyZWQgZXhjZWVkcyBhbGxvd2FuY2V8YWx3YXlzIGZhaWxpbmcgdHJhbnNhY3Rpb258ZXhlY3V0aW9uIHJldmVydGVkLykpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgZXN0aW1hdGUgZ2FzOyB0cmFuc2FjdGlvbiBtYXkgZmFpbCBvciBtYXkgcmVxdWlyZSBtYW51YWwgZ2FzIGxpbWl0IixsaWIuTG9nZ2VyLmVycm9ycy5VTlBSRURJQ1RBQkxFX0dBU19MSU1JVCx7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfXRocm93IGVycm9yfWZ1bmN0aW9uIHRpbWVyKHRpbWVvdXQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKXtzZXRUaW1lb3V0KHJlc29sdmUsdGltZW91dCl9KX1mdW5jdGlvbiBnZXRSZXN1bHQocGF5bG9hZCl7aWYocGF5bG9hZC5lcnJvcil7dmFyIGVycm9yPW5ldyBFcnJvcihwYXlsb2FkLmVycm9yLm1lc3NhZ2UpO2Vycm9yLmNvZGU9cGF5bG9hZC5lcnJvci5jb2RlO2Vycm9yLmRhdGE9cGF5bG9hZC5lcnJvci5kYXRhO3Rocm93IGVycm9yfXJldHVybiBwYXlsb2FkLnJlc3VsdH1mdW5jdGlvbiBnZXRMb3dlckNhc2UodmFsdWUpe2lmKHZhbHVlKXtyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKX1yZXR1cm4gdmFsdWV9dmFyIF9jb25zdHJ1Y3Rvckd1YXJkPXt9O3ZhciBKc29uUnBjU2lnbmVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEpzb25ScGNTaWduZXIsX3N1cGVyKTtmdW5jdGlvbiBKc29uUnBjU2lnbmVyKGNvbnN0cnVjdG9yR3VhcmQscHJvdmlkZXIsYWRkcmVzc09ySW5kZXgpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPXRoaXM7bG9nZ2VyLmNoZWNrTmV3KF9uZXdUYXJnZXQsSnNvblJwY1NpZ25lcik7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyl8fHRoaXM7aWYoY29uc3RydWN0b3JHdWFyZCE9PV9jb25zdHJ1Y3Rvckd1YXJkKXt0aHJvdyBuZXcgRXJyb3IoImRvIG5vdCBjYWxsIHRoZSBKc29uUnBjU2lnbmVyIGNvbnN0cnVjdG9yIGRpcmVjdGx5OyB1c2UgcHJvdmlkZXIuZ2V0U2lnbmVyIil9bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsInByb3ZpZGVyIixwcm92aWRlcik7aWYoYWRkcmVzc09ySW5kZXg9PW51bGwpe2FkZHJlc3NPckluZGV4PTB9aWYodHlwZW9mIGFkZHJlc3NPckluZGV4PT09InN0cmluZyIpe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfYWRkcmVzcyIsX3RoaXMucHJvdmlkZXIuZm9ybWF0dGVyLmFkZHJlc3MoYWRkcmVzc09ySW5kZXgpKTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX2luZGV4IixudWxsKX1lbHNlIGlmKHR5cGVvZiBhZGRyZXNzT3JJbmRleD09PSJudW1iZXIiKXtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX2luZGV4IixhZGRyZXNzT3JJbmRleCk7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsIl9hZGRyZXNzIixudWxsKX1lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYWRkcmVzcyBvciBpbmRleCIsImFkZHJlc3NPckluZGV4IixhZGRyZXNzT3JJbmRleCl9cmV0dXJuIF90aGlzfUpzb25ScGNTaWduZXIucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24ocHJvdmlkZXIpe3JldHVybiBsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IGFsdGVyIEpTT04tUlBDIFNpZ25lciBjb25uZWN0aW9uIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiY29ubmVjdCJ9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuY29ubmVjdFVuY2hlY2tlZD1mdW5jdGlvbigpe3JldHVybiBuZXcgVW5jaGVja2VkSnNvblJwY1NpZ25lcihfY29uc3RydWN0b3JHdWFyZCx0aGlzLnByb3ZpZGVyLHRoaXMuX2FkZHJlc3N8fHRoaXMuX2luZGV4KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuZ2V0QWRkcmVzcz1mdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO2lmKHRoaXMuX2FkZHJlc3Mpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYWRkcmVzcyl9cmV0dXJuIHRoaXMucHJvdmlkZXIuc2VuZCgiZXRoX2FjY291bnRzIixbXSkudGhlbihmdW5jdGlvbihhY2NvdW50cyl7aWYoYWNjb3VudHMubGVuZ3RoPD1fdGhpcy5faW5kZXgpe2xvZ2dlci50aHJvd0Vycm9yKCJ1bmtub3duIGFjY291bnQgIyIrX3RoaXMuX2luZGV4LGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJnZXRBZGRyZXNzIn0pfXJldHVybiBfdGhpcy5wcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhhY2NvdW50c1tfdGhpcy5faW5kZXhdKX0pfTtKc29uUnBjU2lnbmVyLnByb3RvdHlwZS5zZW5kVW5jaGVja2VkVHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb24pe3ZhciBfdGhpcz10aGlzO3RyYW5zYWN0aW9uPWxpYiQzLnNoYWxsb3dDb3B5KHRyYW5zYWN0aW9uKTt2YXIgZnJvbUFkZHJlc3M9dGhpcy5nZXRBZGRyZXNzKCkudGhlbihmdW5jdGlvbihhZGRyZXNzKXtpZihhZGRyZXNzKXthZGRyZXNzPWFkZHJlc3MudG9Mb3dlckNhc2UoKX1yZXR1cm4gYWRkcmVzc30pO2lmKHRyYW5zYWN0aW9uLmdhc0xpbWl0PT1udWxsKXt2YXIgZXN0aW1hdGU9bGliJDMuc2hhbGxvd0NvcHkodHJhbnNhY3Rpb24pO2VzdGltYXRlLmZyb209ZnJvbUFkZHJlc3M7dHJhbnNhY3Rpb24uZ2FzTGltaXQ9dGhpcy5wcm92aWRlci5lc3RpbWF0ZUdhcyhlc3RpbWF0ZSl9cmV0dXJuIGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKHt0eDpsaWIkMy5yZXNvbHZlUHJvcGVydGllcyh0cmFuc2FjdGlvbiksc2VuZGVyOmZyb21BZGRyZXNzfSkudGhlbihmdW5jdGlvbihfYSl7dmFyIHR4PV9hLnR4LHNlbmRlcj1fYS5zZW5kZXI7aWYodHguZnJvbSE9bnVsbCl7aWYodHguZnJvbS50b0xvd2VyQ2FzZSgpIT09c2VuZGVyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJmcm9tIGFkZHJlc3MgbWlzbWF0Y2giLCJ0cmFuc2FjdGlvbiIsdHJhbnNhY3Rpb24pfX1lbHNle3R4LmZyb209c2VuZGVyfXZhciBoZXhUeD1fdGhpcy5wcm92aWRlci5jb25zdHJ1Y3Rvci5oZXhsaWZ5VHJhbnNhY3Rpb24odHgse2Zyb206dHJ1ZX0pO3JldHVybiBfdGhpcy5wcm92aWRlci5zZW5kKCJldGhfc2VuZFRyYW5zYWN0aW9uIixbaGV4VHhdKS50aGVuKGZ1bmN0aW9uKGhhc2gpe3JldHVybiBoYXNofSxmdW5jdGlvbihlcnJvcil7cmV0dXJuIGNoZWNrRXJyb3IoInNlbmRUcmFuc2FjdGlvbiIsZXJyb3IsaGV4VHgpfSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoInNpZ25pbmcgdHJhbnNhY3Rpb25zIGlzIHVuc3VwcG9ydGVkIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2lnblRyYW5zYWN0aW9uIn0pfTtKc29uUnBjU2lnbmVyLnByb3RvdHlwZS5zZW5kVHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb24pe3ZhciBfdGhpcz10aGlzO3JldHVybiB0aGlzLnNlbmRVbmNoZWNrZWRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikudGhlbihmdW5jdGlvbihoYXNoKXtyZXR1cm4gbGliJHEucG9sbChmdW5jdGlvbigpe3JldHVybiBfdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvbihoYXNoKS50aGVuKGZ1bmN0aW9uKHR4KXtpZih0eD09PW51bGwpe3JldHVybiB1bmRlZmluZWR9cmV0dXJuIF90aGlzLnByb3ZpZGVyLl93cmFwVHJhbnNhY3Rpb24odHgsaGFzaCl9KX0se29uY2VQb2xsOl90aGlzLnByb3ZpZGVyfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3Ipe2Vycm9yLnRyYW5zYWN0aW9uSGFzaD1oYXNoO3Rocm93IGVycm9yfSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuc2lnbk1lc3NhZ2U9ZnVuY3Rpb24obWVzc2FnZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZGF0YSxhZGRyZXNzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpkYXRhPXR5cGVvZiBtZXNzYWdlPT09InN0cmluZyI/bGliJDgudG9VdGY4Qnl0ZXMobWVzc2FnZSk6bWVzc2FnZTtyZXR1cm5bNCx0aGlzLmdldEFkZHJlc3MoKV07Y2FzZSAxOmFkZHJlc3M9X2Euc2VudCgpO3JldHVybls0LHRoaXMucHJvdmlkZXIuc2VuZCgiZXRoX3NpZ24iLFthZGRyZXNzLnRvTG93ZXJDYXNlKCksbGliJDEuaGV4bGlmeShkYXRhKV0pXTtjYXNlIDI6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtKc29uUnBjU2lnbmVyLnByb3RvdHlwZS5fc2lnblR5cGVkRGF0YT1mdW5jdGlvbihkb21haW4sdHlwZXMsdmFsdWUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBvcHVsYXRlZCxhZGRyZXNzO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxsaWIkOS5fVHlwZWREYXRhRW5jb2Rlci5yZXNvbHZlTmFtZXMoZG9tYWluLHR5cGVzLHZhbHVlLGZ1bmN0aW9uKG5hbWUpe3JldHVybiBfdGhpcy5wcm92aWRlci5yZXNvbHZlTmFtZShuYW1lKX0pXTtjYXNlIDE6cG9wdWxhdGVkPV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLmdldEFkZHJlc3MoKV07Y2FzZSAyOmFkZHJlc3M9X2Euc2VudCgpO3JldHVybls0LHRoaXMucHJvdmlkZXIuc2VuZCgiZXRoX3NpZ25UeXBlZERhdGFfdjQiLFthZGRyZXNzLnRvTG93ZXJDYXNlKCksSlNPTi5zdHJpbmdpZnkobGliJDkuX1R5cGVkRGF0YUVuY29kZXIuZ2V0UGF5bG9hZChwb3B1bGF0ZWQuZG9tYWluLHR5cGVzLHBvcHVsYXRlZC52YWx1ZSkpXSldO2Nhc2UgMzpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9O0pzb25ScGNTaWduZXIucHJvdG90eXBlLnVubG9jaz1mdW5jdGlvbihwYXNzd29yZCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcHJvdmlkZXIsYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cHJvdmlkZXI9dGhpcy5wcm92aWRlcjtyZXR1cm5bNCx0aGlzLmdldEFkZHJlc3MoKV07Y2FzZSAxOmFkZHJlc3M9X2Euc2VudCgpO3JldHVyblsyLHByb3ZpZGVyLnNlbmQoInBlcnNvbmFsX3VubG9ja0FjY291bnQiLFthZGRyZXNzLnRvTG93ZXJDYXNlKCkscGFzc3dvcmQsbnVsbF0pXX19KX0pfTtyZXR1cm4gSnNvblJwY1NpZ25lcn0obGliJGMuU2lnbmVyKTtleHBvcnRzLkpzb25ScGNTaWduZXI9SnNvblJwY1NpZ25lcjt2YXIgVW5jaGVja2VkSnNvblJwY1NpZ25lcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhVbmNoZWNrZWRKc29uUnBjU2lnbmVyLF9zdXBlcik7ZnVuY3Rpb24gVW5jaGVja2VkSnNvblJwY1NpZ25lcigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfVVuY2hlY2tlZEpzb25ScGNTaWduZXIucHJvdG90eXBlLnNlbmRUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbil7dmFyIF90aGlzPXRoaXM7cmV0dXJuIHRoaXMuc2VuZFVuY2hlY2tlZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKS50aGVuKGZ1bmN0aW9uKGhhc2gpe3JldHVybntoYXNoOmhhc2gsbm9uY2U6bnVsbCxnYXNMaW1pdDpudWxsLGdhc1ByaWNlOm51bGwsZGF0YTpudWxsLHZhbHVlOm51bGwsY2hhaW5JZDpudWxsLGNvbmZpcm1hdGlvbnM6MCxmcm9tOm51bGwsd2FpdDpmdW5jdGlvbihjb25maXJtYXRpb25zKXtyZXR1cm4gX3RoaXMucHJvdmlkZXIud2FpdEZvclRyYW5zYWN0aW9uKGhhc2gsY29uZmlybWF0aW9ucyl9fX0pfTtyZXR1cm4gVW5jaGVja2VkSnNvblJwY1NpZ25lcn0oSnNvblJwY1NpZ25lcik7dmFyIGFsbG93ZWRUcmFuc2FjdGlvbktleXM9e2NoYWluSWQ6dHJ1ZSxkYXRhOnRydWUsZ2FzTGltaXQ6dHJ1ZSxnYXNQcmljZTp0cnVlLG5vbmNlOnRydWUsdG86dHJ1ZSx2YWx1ZTp0cnVlLHR5cGU6dHJ1ZSxhY2Nlc3NMaXN0OnRydWV9O3ZhciBKc29uUnBjUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoSnNvblJwY1Byb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gSnNvblJwY1Byb3ZpZGVyKHVybCxuZXR3b3JrKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LEpzb25ScGNQcm92aWRlcik7dmFyIG5ldHdvcmtPclJlYWR5PW5ldHdvcms7aWYobmV0d29ya09yUmVhZHk9PW51bGwpe25ldHdvcmtPclJlYWR5PW5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7X3RoaXMuZGV0ZWN0TmV0d29yaygpLnRoZW4oZnVuY3Rpb24obmV0d29yayl7cmVzb2x2ZShuZXR3b3JrKX0sZnVuY3Rpb24oZXJyb3Ipe3JlamVjdChlcnJvcil9KX0sMCl9KX1fdGhpcz1fc3VwZXIuY2FsbCh0aGlzLG5ldHdvcmtPclJlYWR5KXx8dGhpcztpZighdXJsKXt1cmw9bGliJDMuZ2V0U3RhdGljKF90aGlzLmNvbnN0cnVjdG9yLCJkZWZhdWx0VXJsIikoKX1pZih0eXBlb2YgdXJsPT09InN0cmluZyIpe2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJjb25uZWN0aW9uIixPYmplY3QuZnJlZXplKHt1cmw6dXJsfSkpfWVsc2V7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImNvbm5lY3Rpb24iLE9iamVjdC5mcmVlemUobGliJDMuc2hhbGxvd0NvcHkodXJsKSkpfV90aGlzLl9uZXh0SWQ9NDI7cmV0dXJuIF90aGlzfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLCJfY2FjaGUiLHtnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9ldmVudExvb3BDYWNoZT09bnVsbCl7dGhpcy5fZXZlbnRMb29wQ2FjaGU9e319cmV0dXJuIHRoaXMuX2V2ZW50TG9vcENhY2hlfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7SnNvblJwY1Byb3ZpZGVyLmRlZmF1bHRVcmw9ZnVuY3Rpb24oKXtyZXR1cm4iaHR0cDovL2xvY2FsaG9zdDo4NTQ1In07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5kZXRlY3ROZXR3b3JrPWZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7aWYoIXRoaXMuX2NhY2hlWyJkZXRlY3ROZXR3b3JrIl0pe3RoaXMuX2NhY2hlWyJkZXRlY3ROZXR3b3JrIl09dGhpcy5fdW5jYWNoZWREZXRlY3ROZXR3b3JrKCk7c2V0VGltZW91dChmdW5jdGlvbigpe190aGlzLl9jYWNoZVsiZGV0ZWN0TmV0d29yayJdPW51bGx9LDApfXJldHVybiB0aGlzLl9jYWNoZVsiZGV0ZWN0TmV0d29yayJdfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLl91bmNhY2hlZERldGVjdE5ldHdvcms9ZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBjaGFpbklkLGVycm9yXzEsZXJyb3JfMixnZXROZXR3b3JrO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aW1lcigwKV07Y2FzZSAxOl9hLnNlbnQoKTtjaGFpbklkPW51bGw7X2EubGFiZWw9MjtjYXNlIDI6X2EudHJ5cy5wdXNoKFsyLDQsLDldKTtyZXR1cm5bNCx0aGlzLnNlbmQoImV0aF9jaGFpbklkIixbXSldO2Nhc2UgMzpjaGFpbklkPV9hLnNlbnQoKTtyZXR1cm5bMyw5XTtjYXNlIDQ6ZXJyb3JfMT1fYS5zZW50KCk7X2EubGFiZWw9NTtjYXNlIDU6X2EudHJ5cy5wdXNoKFs1LDcsLDhdKTtyZXR1cm5bNCx0aGlzLnNlbmQoIm5ldF92ZXJzaW9uIixbXSldO2Nhc2UgNjpjaGFpbklkPV9hLnNlbnQoKTtyZXR1cm5bMyw4XTtjYXNlIDc6ZXJyb3JfMj1fYS5zZW50KCk7cmV0dXJuWzMsOF07Y2FzZSA4OnJldHVyblszLDldO2Nhc2UgOTppZihjaGFpbklkIT1udWxsKXtnZXROZXR3b3JrPWxpYiQzLmdldFN0YXRpYyh0aGlzLmNvbnN0cnVjdG9yLCJnZXROZXR3b3JrIik7dHJ5e3JldHVyblsyLGdldE5ldHdvcmsobGliJDIuQmlnTnVtYmVyLmZyb20oY2hhaW5JZCkudG9OdW1iZXIoKSldfWNhdGNoKGVycm9yKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiY291bGQgbm90IGRldGVjdCBuZXR3b3JrIixsaWIuTG9nZ2VyLmVycm9ycy5ORVRXT1JLX0VSUk9SLHtjaGFpbklkOmNoYWluSWQsZXZlbnQ6ImludmFsaWROZXR3b3JrIixzZXJ2ZXJFcnJvcjplcnJvcn0pXX19cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImNvdWxkIG5vdCBkZXRlY3QgbmV0d29yayIsbGliLkxvZ2dlci5lcnJvcnMuTkVUV09SS19FUlJPUix7ZXZlbnQ6Im5vTmV0d29yayJ9KV19fSl9KX07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5nZXRTaWduZXI9ZnVuY3Rpb24oYWRkcmVzc09ySW5kZXgpe3JldHVybiBuZXcgSnNvblJwY1NpZ25lcihfY29uc3RydWN0b3JHdWFyZCx0aGlzLGFkZHJlc3NPckluZGV4KX07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5nZXRVbmNoZWNrZWRTaWduZXI9ZnVuY3Rpb24oYWRkcmVzc09ySW5kZXgpe3JldHVybiB0aGlzLmdldFNpZ25lcihhZGRyZXNzT3JJbmRleCkuY29ubmVjdFVuY2hlY2tlZCgpfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLmxpc3RBY2NvdW50cz1mdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO3JldHVybiB0aGlzLnNlbmQoImV0aF9hY2NvdW50cyIsW10pLnRoZW4oZnVuY3Rpb24oYWNjb3VudHMpe3JldHVybiBhY2NvdW50cy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIF90aGlzLmZvcm1hdHRlci5hZGRyZXNzKGEpfSl9KX07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3ZhciBfdGhpcz10aGlzO3ZhciByZXF1ZXN0PXttZXRob2Q6bWV0aG9kLHBhcmFtczpwYXJhbXMsaWQ6dGhpcy5fbmV4dElkKyssanNvbnJwYzoiMi4wIn07dGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVxdWVzdCIscmVxdWVzdDpsaWIkMy5kZWVwQ29weShyZXF1ZXN0KSxwcm92aWRlcjp0aGlzfSk7dmFyIGNhY2hlPVsiZXRoX2NoYWluSWQiLCJldGhfYmxvY2tOdW1iZXIiXS5pbmRleE9mKG1ldGhvZCk+PTA7aWYoY2FjaGUmJnRoaXMuX2NhY2hlW21ldGhvZF0pe3JldHVybiB0aGlzLl9jYWNoZVttZXRob2RdfXZhciByZXN1bHQ9bGliJHEuZmV0Y2hKc29uKHRoaXMuY29ubmVjdGlvbixKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSxnZXRSZXN1bHQpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLHJlcXVlc3Q6cmVxdWVzdCxyZXNwb25zZTpyZXN1bHQscHJvdmlkZXI6X3RoaXN9KTtyZXR1cm4gcmVzdWx0fSxmdW5jdGlvbihlcnJvcil7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlc3BvbnNlIixlcnJvcjplcnJvcixyZXF1ZXN0OnJlcXVlc3QscHJvdmlkZXI6X3RoaXN9KTt0aHJvdyBlcnJvcn0pO2lmKGNhY2hlKXt0aGlzLl9jYWNoZVttZXRob2RdPXJlc3VsdDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7X3RoaXMuX2NhY2hlW21ldGhvZF09bnVsbH0sMCl9cmV0dXJuIHJlc3VsdH07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5wcmVwYXJlUmVxdWVzdD1mdW5jdGlvbihtZXRob2QscGFyYW1zKXtzd2l0Y2gobWV0aG9kKXtjYXNlImdldEJsb2NrTnVtYmVyIjpyZXR1cm5bImV0aF9ibG9ja051bWJlciIsW11dO2Nhc2UiZ2V0R2FzUHJpY2UiOnJldHVyblsiZXRoX2dhc1ByaWNlIixbXV07Y2FzZSJnZXRCYWxhbmNlIjpyZXR1cm5bImV0aF9nZXRCYWxhbmNlIixbZ2V0TG93ZXJDYXNlKHBhcmFtcy5hZGRyZXNzKSxwYXJhbXMuYmxvY2tUYWddXTtjYXNlImdldFRyYW5zYWN0aW9uQ291bnQiOnJldHVyblsiZXRoX2dldFRyYW5zYWN0aW9uQ291bnQiLFtnZXRMb3dlckNhc2UocGFyYW1zLmFkZHJlc3MpLHBhcmFtcy5ibG9ja1RhZ11dO2Nhc2UiZ2V0Q29kZSI6cmV0dXJuWyJldGhfZ2V0Q29kZSIsW2dldExvd2VyQ2FzZShwYXJhbXMuYWRkcmVzcykscGFyYW1zLmJsb2NrVGFnXV07Y2FzZSJnZXRTdG9yYWdlQXQiOnJldHVyblsiZXRoX2dldFN0b3JhZ2VBdCIsW2dldExvd2VyQ2FzZShwYXJhbXMuYWRkcmVzcykscGFyYW1zLnBvc2l0aW9uLHBhcmFtcy5ibG9ja1RhZ11dO2Nhc2Uic2VuZFRyYW5zYWN0aW9uIjpyZXR1cm5bImV0aF9zZW5kUmF3VHJhbnNhY3Rpb24iLFtwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb25dXTtjYXNlImdldEJsb2NrIjppZihwYXJhbXMuYmxvY2tUYWcpe3JldHVyblsiZXRoX2dldEJsb2NrQnlOdW1iZXIiLFtwYXJhbXMuYmxvY2tUYWcsISFwYXJhbXMuaW5jbHVkZVRyYW5zYWN0aW9uc11dfWVsc2UgaWYocGFyYW1zLmJsb2NrSGFzaCl7cmV0dXJuWyJldGhfZ2V0QmxvY2tCeUhhc2giLFtwYXJhbXMuYmxvY2tIYXNoLCEhcGFyYW1zLmluY2x1ZGVUcmFuc2FjdGlvbnNdXX1yZXR1cm4gbnVsbDtjYXNlImdldFRyYW5zYWN0aW9uIjpyZXR1cm5bImV0aF9nZXRUcmFuc2FjdGlvbkJ5SGFzaCIsW3BhcmFtcy50cmFuc2FjdGlvbkhhc2hdXTtjYXNlImdldFRyYW5zYWN0aW9uUmVjZWlwdCI6cmV0dXJuWyJldGhfZ2V0VHJhbnNhY3Rpb25SZWNlaXB0IixbcGFyYW1zLnRyYW5zYWN0aW9uSGFzaF1dO2Nhc2UiY2FsbCI6e3ZhciBoZXhsaWZ5VHJhbnNhY3Rpb249bGliJDMuZ2V0U3RhdGljKHRoaXMuY29uc3RydWN0b3IsImhleGxpZnlUcmFuc2FjdGlvbiIpO3JldHVyblsiZXRoX2NhbGwiLFtoZXhsaWZ5VHJhbnNhY3Rpb24ocGFyYW1zLnRyYW5zYWN0aW9uLHtmcm9tOnRydWV9KSxwYXJhbXMuYmxvY2tUYWddXX1jYXNlImVzdGltYXRlR2FzIjp7dmFyIGhleGxpZnlUcmFuc2FjdGlvbj1saWIkMy5nZXRTdGF0aWModGhpcy5jb25zdHJ1Y3RvciwiaGV4bGlmeVRyYW5zYWN0aW9uIik7cmV0dXJuWyJldGhfZXN0aW1hdGVHYXMiLFtoZXhsaWZ5VHJhbnNhY3Rpb24ocGFyYW1zLnRyYW5zYWN0aW9uLHtmcm9tOnRydWV9KV1dfWNhc2UiZ2V0TG9ncyI6aWYocGFyYW1zLmZpbHRlciYmcGFyYW1zLmZpbHRlci5hZGRyZXNzIT1udWxsKXtwYXJhbXMuZmlsdGVyLmFkZHJlc3M9Z2V0TG93ZXJDYXNlKHBhcmFtcy5maWx0ZXIuYWRkcmVzcyl9cmV0dXJuWyJldGhfZ2V0TG9ncyIsW3BhcmFtcy5maWx0ZXJdXTtkZWZhdWx0OmJyZWFrfXJldHVybiBudWxsfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLnBlcmZvcm09ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYXJncyxlcnJvcl8zO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDphcmdzPXRoaXMucHJlcGFyZVJlcXVlc3QobWV0aG9kLHBhcmFtcyk7aWYoYXJncz09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IobWV0aG9kKyIgbm90IGltcGxlbWVudGVkIixsaWIuTG9nZ2VyLmVycm9ycy5OT1RfSU1QTEVNRU5URUQse29wZXJhdGlvbjptZXRob2R9KX1fYS5sYWJlbD0xO2Nhc2UgMTpfYS50cnlzLnB1c2goWzEsMywsNF0pO3JldHVybls0LHRoaXMuc2VuZChhcmdzWzBdLGFyZ3NbMV0pXTtjYXNlIDI6cmV0dXJuWzIsX2Euc2VudCgpXTtjYXNlIDM6ZXJyb3JfMz1fYS5zZW50KCk7cmV0dXJuWzIsY2hlY2tFcnJvcihtZXRob2QsZXJyb3JfMyxwYXJhbXMpXTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9O0pzb25ScGNQcm92aWRlci5wcm90b3R5cGUuX3N0YXJ0RXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LnRhZz09PSJwZW5kaW5nIil7dGhpcy5fc3RhcnRQZW5kaW5nKCl9X3N1cGVyLnByb3RvdHlwZS5fc3RhcnRFdmVudC5jYWxsKHRoaXMsZXZlbnQpfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLl9zdGFydFBlbmRpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLl9wZW5kaW5nRmlsdGVyIT1udWxsKXtyZXR1cm59dmFyIHNlbGY9dGhpczt2YXIgcGVuZGluZ0ZpbHRlcj10aGlzLnNlbmQoImV0aF9uZXdQZW5kaW5nVHJhbnNhY3Rpb25GaWx0ZXIiLFtdKTt0aGlzLl9wZW5kaW5nRmlsdGVyPXBlbmRpbmdGaWx0ZXI7cGVuZGluZ0ZpbHRlci50aGVuKGZ1bmN0aW9uKGZpbHRlcklkKXtmdW5jdGlvbiBwb2xsKCl7c2VsZi5zZW5kKCJldGhfZ2V0RmlsdGVyQ2hhbmdlcyIsW2ZpbHRlcklkXSkudGhlbihmdW5jdGlvbihoYXNoZXMpe2lmKHNlbGYuX3BlbmRpbmdGaWx0ZXIhPXBlbmRpbmdGaWx0ZXIpe3JldHVybiBudWxsfXZhciBzZXE9UHJvbWlzZS5yZXNvbHZlKCk7aGFzaGVzLmZvckVhY2goZnVuY3Rpb24oaGFzaCl7c2VsZi5fZW1pdHRlZFsidDoiK2hhc2gudG9Mb3dlckNhc2UoKV09InBlbmRpbmciO3NlcT1zZXEudGhlbihmdW5jdGlvbigpe3JldHVybiBzZWxmLmdldFRyYW5zYWN0aW9uKGhhc2gpLnRoZW4oZnVuY3Rpb24odHgpe3NlbGYuZW1pdCgicGVuZGluZyIsdHgpO3JldHVybiBudWxsfSl9KX0pO3JldHVybiBzZXEudGhlbihmdW5jdGlvbigpe3JldHVybiB0aW1lcigxZTMpfSl9KS50aGVuKGZ1bmN0aW9uKCl7aWYoc2VsZi5fcGVuZGluZ0ZpbHRlciE9cGVuZGluZ0ZpbHRlcil7c2VsZi5zZW5kKCJldGhfdW5pbnN0YWxsRmlsdGVyIixbZmlsdGVySWRdKTtyZXR1cm59c2V0VGltZW91dChmdW5jdGlvbigpe3BvbGwoKX0sMCk7cmV0dXJuIG51bGx9KS5jYXRjaChmdW5jdGlvbihlcnJvcil7fSl9cG9sbCgpO3JldHVybiBmaWx0ZXJJZH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXt9KX07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5fc3RvcEV2ZW50PWZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC50YWc9PT0icGVuZGluZyImJnRoaXMubGlzdGVuZXJDb3VudCgicGVuZGluZyIpPT09MCl7dGhpcy5fcGVuZGluZ0ZpbHRlcj1udWxsfV9zdXBlci5wcm90b3R5cGUuX3N0b3BFdmVudC5jYWxsKHRoaXMsZXZlbnQpfTtKc29uUnBjUHJvdmlkZXIuaGV4bGlmeVRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uLGFsbG93RXh0cmEpe3ZhciBhbGxvd2VkPWxpYiQzLnNoYWxsb3dDb3B5KGFsbG93ZWRUcmFuc2FjdGlvbktleXMpO2lmKGFsbG93RXh0cmEpe2Zvcih2YXIga2V5IGluIGFsbG93RXh0cmEpe2lmKGFsbG93RXh0cmFba2V5XSl7YWxsb3dlZFtrZXldPXRydWV9fX1saWIkMy5jaGVja1Byb3BlcnRpZXModHJhbnNhY3Rpb24sYWxsb3dlZCk7dmFyIHJlc3VsdD17fTtbImdhc0xpbWl0IiwiZ2FzUHJpY2UiLCJ0eXBlIiwibm9uY2UiLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih0cmFuc2FjdGlvbltrZXldPT1udWxsKXtyZXR1cm59dmFyIHZhbHVlPWxpYiQxLmhleFZhbHVlKHRyYW5zYWN0aW9uW2tleV0pO2lmKGtleT09PSJnYXNMaW1pdCIpe2tleT0iZ2FzIn1yZXN1bHRba2V5XT12YWx1ZX0pO1siZnJvbSIsInRvIiwiZGF0YSJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih0cmFuc2FjdGlvbltrZXldPT1udWxsKXtyZXR1cm59cmVzdWx0W2tleV09bGliJDEuaGV4bGlmeSh0cmFuc2FjdGlvbltrZXldKX0pO2lmKHRyYW5zYWN0aW9uLmFjY2Vzc0xpc3Qpe3Jlc3VsdFsiYWNjZXNzTGlzdCJdPWxpYiRlLmFjY2Vzc0xpc3RpZnkodHJhbnNhY3Rpb24uYWNjZXNzTGlzdCl9cmV0dXJuIHJlc3VsdH07cmV0dXJuIEpzb25ScGNQcm92aWRlcn0oYmFzZVByb3ZpZGVyLkJhc2VQcm92aWRlcik7ZXhwb3J0cy5Kc29uUnBjUHJvdmlkZXI9SnNvblJwY1Byb3ZpZGVyfSk7dmFyIGpzb25ScGNQcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGpzb25ScGNQcm92aWRlcik7dmFyIGJyb3dzZXJXcz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuV2ViU29ja2V0PXZvaWQgMDt2YXIgV1M9bnVsbDtleHBvcnRzLldlYlNvY2tldD1XUzt0cnl7ZXhwb3J0cy5XZWJTb2NrZXQ9V1M9V2ViU29ja2V0O2lmKFdTPT1udWxsKXt0aHJvdyBuZXcgRXJyb3IoImluamVjdCBwbGVhc2UiKX19Y2F0Y2goZXJyb3Ipe3ZhciBsb2dnZXJfMj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRJLnZlcnNpb24pO2V4cG9ydHMuV2ViU29ja2V0PVdTPWZ1bmN0aW9uKCl7bG9nZ2VyXzIudGhyb3dFcnJvcigiV2ViU29ja2V0cyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZW52aXJvbm1lbnQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJuZXcgV2ViU29ja2V0KCkifSl9fX0pO3ZhciBicm93c2VyV3MkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhicm93c2VyV3MpO3ZhciB3ZWJzb2NrZXRQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuV2ViU29ja2V0UHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgTmV4dElkPTE7dmFyIFdlYlNvY2tldFByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFdlYlNvY2tldFByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gV2ViU29ja2V0UHJvdmlkZXIodXJsLG5ldHdvcmspe3ZhciBfdGhpcz10aGlzO2lmKG5ldHdvcms9PT0iYW55Iil7bG9nZ2VyLnRocm93RXJyb3IoIldlYlNvY2tldFByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgJ2FueScgbmV0d29yayB5ZXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJuZXR3b3JrOmFueSJ9KX1fdGhpcz1fc3VwZXIuY2FsbCh0aGlzLHVybCxuZXR3b3JrKXx8dGhpcztfdGhpcy5fcG9sbGluZ0ludGVydmFsPS0xO190aGlzLl93c1JlYWR5PWZhbHNlO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfd2Vic29ja2V0IixuZXcgYnJvd3NlcldzLldlYlNvY2tldChfdGhpcy5jb25uZWN0aW9uLnVybCkpO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfcmVxdWVzdHMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX3N1YnMiLHt9KTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywiX3N1YklkcyIse30pO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJfZGV0ZWN0TmV0d29yayIsX3N1cGVyLnByb3RvdHlwZS5kZXRlY3ROZXR3b3JrLmNhbGwoX3RoaXMpKTtfdGhpcy5fd2Vic29ja2V0Lm9ub3Blbj1mdW5jdGlvbigpe190aGlzLl93c1JlYWR5PXRydWU7T2JqZWN0LmtleXMoX3RoaXMuX3JlcXVlc3RzKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXtfdGhpcy5fd2Vic29ja2V0LnNlbmQoX3RoaXMuX3JlcXVlc3RzW2lkXS5wYXlsb2FkKX0pfTtfdGhpcy5fd2Vic29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbihtZXNzYWdlRXZlbnQpe3ZhciBkYXRhPW1lc3NhZ2VFdmVudC5kYXRhO3ZhciByZXN1bHQ9SlNPTi5wYXJzZShkYXRhKTtpZihyZXN1bHQuaWQhPW51bGwpe3ZhciBpZD1TdHJpbmcocmVzdWx0LmlkKTt2YXIgcmVxdWVzdD1fdGhpcy5fcmVxdWVzdHNbaWRdO2RlbGV0ZSBfdGhpcy5fcmVxdWVzdHNbaWRdO2lmKHJlc3VsdC5yZXN1bHQhPT11bmRlZmluZWQpe3JlcXVlc3QuY2FsbGJhY2sobnVsbCxyZXN1bHQucmVzdWx0KTtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLHJlcXVlc3Q6SlNPTi5wYXJzZShyZXF1ZXN0LnBheWxvYWQpLHJlc3BvbnNlOnJlc3VsdC5yZXN1bHQscHJvdmlkZXI6X3RoaXN9KX1lbHNle3ZhciBlcnJvcj1udWxsO2lmKHJlc3VsdC5lcnJvcil7ZXJyb3I9bmV3IEVycm9yKHJlc3VsdC5lcnJvci5tZXNzYWdlfHwidW5rbm93biBlcnJvciIpO2xpYiQzLmRlZmluZVJlYWRPbmx5KGVycm9yLCJjb2RlIixyZXN1bHQuZXJyb3IuY29kZXx8bnVsbCk7bGliJDMuZGVmaW5lUmVhZE9ubHkoZXJyb3IsInJlc3BvbnNlIixkYXRhKX1lbHNle2Vycm9yPW5ldyBFcnJvcigidW5rbm93biBlcnJvciIpfXJlcXVlc3QuY2FsbGJhY2soZXJyb3IsdW5kZWZpbmVkKTtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLGVycm9yOmVycm9yLHJlcXVlc3Q6SlNPTi5wYXJzZShyZXF1ZXN0LnBheWxvYWQpLHByb3ZpZGVyOl90aGlzfSl9fWVsc2UgaWYocmVzdWx0Lm1ldGhvZD09PSJldGhfc3Vic2NyaXB0aW9uIil7dmFyIHN1Yj1fdGhpcy5fc3Vic1tyZXN1bHQucGFyYW1zLnN1YnNjcmlwdGlvbl07aWYoc3ViKXtzdWIucHJvY2Vzc0Z1bmMocmVzdWx0LnBhcmFtcy5yZXN1bHQpfX1lbHNle2NvbnNvbGUud2FybigidGhpcyBzaG91bGQgbm90IGhhcHBlbiIpfX07dmFyIGZhdXhQb2xsPXNldEludGVydmFsKGZ1bmN0aW9uKCl7X3RoaXMuZW1pdCgicG9sbCIpfSwxZTMpO2lmKGZhdXhQb2xsLnVucmVmKXtmYXV4UG9sbC51bnJlZigpfXJldHVybiBfdGhpc31XZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXRlY3ROZXR3b3JrfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLCJwb2xsaW5nSW50ZXJ2YWwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sc2V0OmZ1bmN0aW9uKHZhbHVlKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IHNldCBwb2xsaW5nIGludGVydmFsIG9uIFdlYlNvY2tldFByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2V0UG9sbGluZ0ludGVydmFsIn0pfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7V2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLnJlc2V0RXZlbnRzQmxvY2s9ZnVuY3Rpb24oYmxvY2tOdW1iZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgcmVzZXQgZXZlbnRzIGJsb2NrIG9uIFdlYlNvY2tldFByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoicmVzZXRFdmVudEJsb2NrIn0pfTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUucG9sbD1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLG51bGxdfSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZSwicG9sbGluZyIse3NldDpmdW5jdGlvbih2YWx1ZSl7aWYoIXZhbHVlKXtyZXR1cm59bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBzZXQgcG9sbGluZyBvbiBXZWJTb2NrZXRQcm92aWRlciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InNldFBvbGxpbmcifSl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihtZXRob2QscGFyYW1zKXt2YXIgX3RoaXM9dGhpczt2YXIgcmlkPU5leHRJZCsrO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IscmVzdWx0KXtpZihlcnJvcil7cmV0dXJuIHJlamVjdChlcnJvcil9cmV0dXJuIHJlc29sdmUocmVzdWx0KX12YXIgcGF5bG9hZD1KU09OLnN0cmluZ2lmeSh7bWV0aG9kOm1ldGhvZCxwYXJhbXM6cGFyYW1zLGlkOnJpZCxqc29ucnBjOiIyLjAifSk7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLHJlcXVlc3Q6SlNPTi5wYXJzZShwYXlsb2FkKSxwcm92aWRlcjpfdGhpc30pO190aGlzLl9yZXF1ZXN0c1tTdHJpbmcocmlkKV09e2NhbGxiYWNrOmNhbGxiYWNrLHBheWxvYWQ6cGF5bG9hZH07aWYoX3RoaXMuX3dzUmVhZHkpe190aGlzLl93ZWJzb2NrZXQuc2VuZChwYXlsb2FkKX19KX07V2ViU29ja2V0UHJvdmlkZXIuZGVmYXVsdFVybD1mdW5jdGlvbigpe3JldHVybiJ3czovL2xvY2FsaG9zdDo4NTQ2In07V2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odGFnLHBhcmFtLHByb2Nlc3NGdW5jKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBzdWJJZFByb21pc2Usc3ViSWQ7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnN1YklkUHJvbWlzZT10aGlzLl9zdWJJZHNbdGFnXTtpZihzdWJJZFByb21pc2U9PW51bGwpe3N1YklkUHJvbWlzZT1Qcm9taXNlLmFsbChwYXJhbSkudGhlbihmdW5jdGlvbihwYXJhbSl7cmV0dXJuIF90aGlzLnNlbmQoImV0aF9zdWJzY3JpYmUiLHBhcmFtKX0pO3RoaXMuX3N1Yklkc1t0YWddPXN1YklkUHJvbWlzZX1yZXR1cm5bNCxzdWJJZFByb21pc2VdO2Nhc2UgMTpzdWJJZD1fYS5zZW50KCk7dGhpcy5fc3Vic1tzdWJJZF09e3RhZzp0YWcscHJvY2Vzc0Z1bmM6cHJvY2Vzc0Z1bmN9O3JldHVyblsyXX19KX0pfTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuX3N0YXJ0RXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe3ZhciBfdGhpcz10aGlzO3N3aXRjaChldmVudC50eXBlKXtjYXNlImJsb2NrIjp0aGlzLl9zdWJzY3JpYmUoImJsb2NrIixbIm5ld0hlYWRzIl0sZnVuY3Rpb24ocmVzdWx0KXt2YXIgYmxvY2tOdW1iZXI9bGliJDIuQmlnTnVtYmVyLmZyb20ocmVzdWx0Lm51bWJlcikudG9OdW1iZXIoKTtfdGhpcy5fZW1pdHRlZC5ibG9jaz1ibG9ja051bWJlcjtfdGhpcy5lbWl0KCJibG9jayIsYmxvY2tOdW1iZXIpfSk7YnJlYWs7Y2FzZSJwZW5kaW5nIjp0aGlzLl9zdWJzY3JpYmUoInBlbmRpbmciLFsibmV3UGVuZGluZ1RyYW5zYWN0aW9ucyJdLGZ1bmN0aW9uKHJlc3VsdCl7X3RoaXMuZW1pdCgicGVuZGluZyIscmVzdWx0KX0pO2JyZWFrO2Nhc2UiZmlsdGVyIjp0aGlzLl9zdWJzY3JpYmUoZXZlbnQudGFnLFsibG9ncyIsdGhpcy5fZ2V0RmlsdGVyKGV2ZW50LmZpbHRlcildLGZ1bmN0aW9uKHJlc3VsdCl7aWYocmVzdWx0LnJlbW92ZWQ9PW51bGwpe3Jlc3VsdC5yZW1vdmVkPWZhbHNlfV90aGlzLmVtaXQoZXZlbnQuZmlsdGVyLF90aGlzLmZvcm1hdHRlci5maWx0ZXJMb2cocmVzdWx0KSl9KTticmVhaztjYXNlInR4Ijp7dmFyIGVtaXRSZWNlaXB0XzE9ZnVuY3Rpb24oZXZlbnQpe3ZhciBoYXNoPWV2ZW50Lmhhc2g7X3RoaXMuZ2V0VHJhbnNhY3Rpb25SZWNlaXB0KGhhc2gpLnRoZW4oZnVuY3Rpb24ocmVjZWlwdCl7aWYoIXJlY2VpcHQpe3JldHVybn1fdGhpcy5lbWl0KGhhc2gscmVjZWlwdCl9KX07ZW1pdFJlY2VpcHRfMShldmVudCk7dGhpcy5fc3Vic2NyaWJlKCJ0eCIsWyJuZXdIZWFkcyJdLGZ1bmN0aW9uKHJlc3VsdCl7X3RoaXMuX2V2ZW50cy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJ0eCJ9KS5mb3JFYWNoKGVtaXRSZWNlaXB0XzEpfSk7YnJlYWt9Y2FzZSJkZWJ1ZyI6Y2FzZSJwb2xsIjpjYXNlIndpbGxQb2xsIjpjYXNlImRpZFBvbGwiOmNhc2UiZXJyb3IiOmJyZWFrO2RlZmF1bHQ6Y29uc29sZS5sb2coInVuaGFuZGxlZDoiLGV2ZW50KTticmVha319O1dlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZS5fc3RvcEV2ZW50PWZ1bmN0aW9uKGV2ZW50KXt2YXIgX3RoaXM9dGhpczt2YXIgdGFnPWV2ZW50LnRhZztpZihldmVudC50eXBlPT09InR4Iil7aWYodGhpcy5fZXZlbnRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09InR4In0pLmxlbmd0aCl7cmV0dXJufXRhZz0idHgifWVsc2UgaWYodGhpcy5saXN0ZW5lckNvdW50KGV2ZW50LmV2ZW50KSl7cmV0dXJufXZhciBzdWJJZD10aGlzLl9zdWJJZHNbdGFnXTtpZighc3ViSWQpe3JldHVybn1kZWxldGUgdGhpcy5fc3ViSWRzW3RhZ107c3ViSWQudGhlbihmdW5jdGlvbihzdWJJZCl7aWYoIV90aGlzLl9zdWJzW3N1YklkXSl7cmV0dXJufWRlbGV0ZSBfdGhpcy5fc3Vic1tzdWJJZF07X3RoaXMuc2VuZCgiZXRoX3Vuc3Vic2NyaWJlIixbc3ViSWRdKX0pfTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKCEodGhpcy5fd2Vic29ja2V0LnJlYWR5U3RhdGU9PT1icm93c2VyV3MuV2ViU29ja2V0LkNPTk5FQ1RJTkcpKXJldHVyblszLDJdO3JldHVybls0LG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpe190aGlzLl93ZWJzb2NrZXQub25vcGVuPWZ1bmN0aW9uKCl7cmVzb2x2ZSh0cnVlKX07X3RoaXMuX3dlYnNvY2tldC5vbmVycm9yPWZ1bmN0aW9uKCl7cmVzb2x2ZShmYWxzZSl9fSldO2Nhc2UgMTpfYS5zZW50KCk7X2EubGFiZWw9MjtjYXNlIDI6dGhpcy5fd2Vic29ja2V0LmNsb3NlKDFlMyk7cmV0dXJuWzJdfX0pfSl9O3JldHVybiBXZWJTb2NrZXRQcm92aWRlcn0oanNvblJwY1Byb3ZpZGVyLkpzb25ScGNQcm92aWRlcik7ZXhwb3J0cy5XZWJTb2NrZXRQcm92aWRlcj1XZWJTb2NrZXRQcm92aWRlcn0pO3ZhciB3ZWJzb2NrZXRQcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHdlYnNvY2tldFByb3ZpZGVyKTt2YXIgdXJsSnNvblJwY1Byb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5VcmxKc29uUnBjUHJvdmlkZXI9ZXhwb3J0cy5TdGF0aWNKc29uUnBjUHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgU3RhdGljSnNvblJwY1Byb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFN0YXRpY0pzb25ScGNQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIFN0YXRpY0pzb25ScGNQcm92aWRlcigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfVN0YXRpY0pzb25ScGNQcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5ldHdvcms7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOm5ldHdvcms9dGhpcy5uZXR3b3JrO2lmKCEobmV0d29yaz09bnVsbCkpcmV0dXJuWzMsMl07cmV0dXJuWzQsX3N1cGVyLnByb3RvdHlwZS5kZXRlY3ROZXR3b3JrLmNhbGwodGhpcyldO2Nhc2UgMTpuZXR3b3JrPV9hLnNlbnQoKTtpZighbmV0d29yayl7bG9nZ2VyLnRocm93RXJyb3IoIm5vIG5ldHdvcmsgZGV0ZWN0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1Ise30pfWlmKHRoaXMuX25ldHdvcms9PW51bGwpe2xpYiQzLmRlZmluZVJlYWRPbmx5KHRoaXMsIl9uZXR3b3JrIixuZXR3b3JrKTt0aGlzLmVtaXQoIm5ldHdvcmsiLG5ldHdvcmssbnVsbCl9X2EubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzIsbmV0d29ya119fSl9KX07cmV0dXJuIFN0YXRpY0pzb25ScGNQcm92aWRlcn0oanNvblJwY1Byb3ZpZGVyLkpzb25ScGNQcm92aWRlcik7ZXhwb3J0cy5TdGF0aWNKc29uUnBjUHJvdmlkZXI9U3RhdGljSnNvblJwY1Byb3ZpZGVyO3ZhciBVcmxKc29uUnBjUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVXJsSnNvblJwY1Byb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gVXJsSnNvblJwY1Byb3ZpZGVyKG5ldHdvcmssYXBpS2V5KXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2xvZ2dlci5jaGVja0Fic3RyYWN0KF9uZXdUYXJnZXQsVXJsSnNvblJwY1Byb3ZpZGVyKTtuZXR3b3JrPWxpYiQzLmdldFN0YXRpYyhfbmV3VGFyZ2V0LCJnZXROZXR3b3JrIikobmV0d29yayk7YXBpS2V5PWxpYiQzLmdldFN0YXRpYyhfbmV3VGFyZ2V0LCJnZXRBcGlLZXkiKShhcGlLZXkpO3ZhciBjb25uZWN0aW9uPWxpYiQzLmdldFN0YXRpYyhfbmV3VGFyZ2V0LCJnZXRVcmwiKShuZXR3b3JrLGFwaUtleSk7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxjb25uZWN0aW9uLG5ldHdvcmspfHx0aGlzO2lmKHR5cGVvZiBhcGlLZXk9PT0ic3RyaW5nIil7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsImFwaUtleSIsYXBpS2V5KX1lbHNlIGlmKGFwaUtleSE9bnVsbCl7T2JqZWN0LmtleXMoYXBpS2V5KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsa2V5LGFwaUtleVtrZXldKX0pfXJldHVybiBfdGhpc31VcmxKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLl9zdGFydFBlbmRpbmc9ZnVuY3Rpb24oKXtsb2dnZXIud2FybigiV0FSTklORzogQVBJIHByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgcGVuZGluZyBmaWx0ZXJzIil9O1VybEpzb25ScGNQcm92aWRlci5wcm90b3R5cGUuaXNDb21tdW5pdHlSZXNvdXJjZT1mdW5jdGlvbigpe3JldHVybiBmYWxzZX07VXJsSnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5nZXRTaWduZXI9ZnVuY3Rpb24oYWRkcmVzcyl7cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKCJBUEkgcHJvdmlkZXIgZG9lcyBub3Qgc3VwcG9ydCBzaWduaW5nIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZ2V0U2lnbmVyIn0pfTtVcmxKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLmxpc3RBY2NvdW50cz1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoW10pfTtVcmxKc29uUnBjUHJvdmlkZXIuZ2V0QXBpS2V5PWZ1bmN0aW9uKGFwaUtleSl7cmV0dXJuIGFwaUtleX07VXJsSnNvblJwY1Byb3ZpZGVyLmdldFVybD1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKCJub3QgaW1wbGVtZW50ZWQ7IHN1Yi1jbGFzc2VzIG11c3Qgb3ZlcnJpZGUgZ2V0VXJsIixsaWIuTG9nZ2VyLmVycm9ycy5OT1RfSU1QTEVNRU5URUQse29wZXJhdGlvbjoiZ2V0VXJsIn0pfTtyZXR1cm4gVXJsSnNvblJwY1Byb3ZpZGVyfShTdGF0aWNKc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuVXJsSnNvblJwY1Byb3ZpZGVyPVVybEpzb25ScGNQcm92aWRlcn0pO3ZhciB1cmxKc29uUnBjUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh1cmxKc29uUnBjUHJvdmlkZXIpO3ZhciBhbGNoZW15UHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5BbGNoZW15UHJvdmlkZXI9ZXhwb3J0cy5BbGNoZW15V2ViU29ja2V0UHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgZGVmYXVsdEFwaUtleT0iX2dnN3dTU2kwS01Cc2RLbkdWZkhEdWVxNnhNQjlFa0MiO3ZhciBBbGNoZW15V2ViU29ja2V0UHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KXt2YXIgX3RoaXM9dGhpczt2YXIgcHJvdmlkZXI9bmV3IEFsY2hlbXlQcm92aWRlcihuZXR3b3JrLGFwaUtleSk7dmFyIHVybD1wcm92aWRlci5jb25uZWN0aW9uLnVybC5yZXBsYWNlKC9eaHR0cC9pLCJ3cyIpLnJlcGxhY2UoIi5hbGNoZW15YXBpLiIsIi53cy5hbGNoZW15YXBpLiIpO190aGlzPV9zdXBlci5jYWxsKHRoaXMsdXJsLHByb3ZpZGVyLm5ldHdvcmspfHx0aGlzO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJhcGlLZXkiLHByb3ZpZGVyLmFwaUtleSk7cmV0dXJuIF90aGlzfUFsY2hlbXlXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuaXNDb21tdW5pdHlSZXNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFwaUtleT09PWRlZmF1bHRBcGlLZXl9O3JldHVybiBBbGNoZW15V2ViU29ja2V0UHJvdmlkZXJ9KHdlYnNvY2tldFByb3ZpZGVyLldlYlNvY2tldFByb3ZpZGVyKTtleHBvcnRzLkFsY2hlbXlXZWJTb2NrZXRQcm92aWRlcj1BbGNoZW15V2ViU29ja2V0UHJvdmlkZXI7dmFyIEFsY2hlbXlQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhBbGNoZW15UHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBBbGNoZW15UHJvdmlkZXIoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31BbGNoZW15UHJvdmlkZXIuZ2V0V2ViU29ja2V0UHJvdmlkZXI9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe3JldHVybiBuZXcgQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KX07QWxjaGVteVByb3ZpZGVyLmdldEFwaUtleT1mdW5jdGlvbihhcGlLZXkpe2lmKGFwaUtleT09bnVsbCl7cmV0dXJuIGRlZmF1bHRBcGlLZXl9aWYoYXBpS2V5JiZ0eXBlb2YgYXBpS2V5IT09InN0cmluZyIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYXBpS2V5IiwiYXBpS2V5IixhcGlLZXkpfXJldHVybiBhcGlLZXl9O0FsY2hlbXlQcm92aWRlci5nZXRVcmw9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe3ZhciBob3N0PW51bGw7c3dpdGNoKG5ldHdvcmsubmFtZSl7Y2FzZSJob21lc3RlYWQiOmhvc3Q9ImV0aC1tYWlubmV0LmFsY2hlbXlhcGkuaW8vdjIvIjticmVhaztjYXNlInJvcHN0ZW4iOmhvc3Q9ImV0aC1yb3BzdGVuLmFsY2hlbXlhcGkuaW8vdjIvIjticmVhaztjYXNlInJpbmtlYnkiOmhvc3Q9ImV0aC1yaW5rZWJ5LmFsY2hlbXlhcGkuaW8vdjIvIjticmVhaztjYXNlImdvZXJsaSI6aG9zdD0iZXRoLWdvZXJsaS5hbGNoZW15YXBpLmlvL3YyLyI7YnJlYWs7Y2FzZSJrb3ZhbiI6aG9zdD0iZXRoLWtvdmFuLmFsY2hlbXlhcGkuaW8vdjIvIjticmVhaztkZWZhdWx0OmxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuc3VwcG9ydGVkIG5ldHdvcmsiLCJuZXR3b3JrIixhcmd1bWVudHNbMF0pfXJldHVybnthbGxvd0d6aXA6dHJ1ZSx1cmw6Imh0dHBzOi8iKyIvIitob3N0K2FwaUtleSx0aHJvdHRsZUNhbGxiYWNrOmZ1bmN0aW9uKGF0dGVtcHQsdXJsKXtpZihhcGlLZXk9PT1kZWZhdWx0QXBpS2V5KXtmb3JtYXR0ZXIuc2hvd1Rocm90dGxlTWVzc2FnZSgpfXJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSl9fX07QWxjaGVteVByb3ZpZGVyLnByb3RvdHlwZS5pc0NvbW11bml0eVJlc291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBpS2V5PT09ZGVmYXVsdEFwaUtleX07cmV0dXJuIEFsY2hlbXlQcm92aWRlcn0odXJsSnNvblJwY1Byb3ZpZGVyLlVybEpzb25ScGNQcm92aWRlcik7ZXhwb3J0cy5BbGNoZW15UHJvdmlkZXI9QWxjaGVteVByb3ZpZGVyfSk7dmFyIGFsY2hlbXlQcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFsY2hlbXlQcm92aWRlcik7dmFyIGNsb3VkZmxhcmVQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQ2xvdWRmbGFyZVByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIENsb3VkZmxhcmVQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhDbG91ZGZsYXJlUHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBDbG91ZGZsYXJlUHJvdmlkZXIoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31DbG91ZGZsYXJlUHJvdmlkZXIuZ2V0QXBpS2V5PWZ1bmN0aW9uKGFwaUtleSl7aWYoYXBpS2V5IT1udWxsKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJhcGlLZXkgbm90IHN1cHBvcnRlZCBmb3IgY2xvdWRmbGFyZSIsImFwaUtleSIsYXBpS2V5KX1yZXR1cm4gbnVsbH07Q2xvdWRmbGFyZVByb3ZpZGVyLmdldFVybD1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7dmFyIGhvc3Q9bnVsbDtzd2l0Y2gobmV0d29yay5uYW1lKXtjYXNlImhvbWVzdGVhZCI6aG9zdD0iaHR0cHM6Ly9jbG91ZGZsYXJlLWV0aC5jb20vIjticmVhaztkZWZhdWx0OmxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuc3VwcG9ydGVkIG5ldHdvcmsiLCJuZXR3b3JrIixhcmd1bWVudHNbMF0pfXJldHVybiBob3N0fTtDbG91ZGZsYXJlUHJvdmlkZXIucHJvdG90eXBlLnBlcmZvcm09ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYmxvY2s7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKCEobWV0aG9kPT09ImdldEJsb2NrTnVtYmVyIikpcmV0dXJuWzMsMl07cmV0dXJuWzQsX3N1cGVyLnByb3RvdHlwZS5wZXJmb3JtLmNhbGwodGhpcywiZ2V0QmxvY2siLHtibG9ja1RhZzoibGF0ZXN0In0pXTtjYXNlIDE6YmxvY2s9X2Euc2VudCgpO3JldHVyblsyLGJsb2NrLm51bWJlcl07Y2FzZSAyOnJldHVyblsyLF9zdXBlci5wcm90b3R5cGUucGVyZm9ybS5jYWxsKHRoaXMsbWV0aG9kLHBhcmFtcyldfX0pfSl9O3JldHVybiBDbG91ZGZsYXJlUHJvdmlkZXJ9KHVybEpzb25ScGNQcm92aWRlci5VcmxKc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuQ2xvdWRmbGFyZVByb3ZpZGVyPUNsb3VkZmxhcmVQcm92aWRlcn0pO3ZhciBjbG91ZGZsYXJlUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhjbG91ZGZsYXJlUHJvdmlkZXIpO3ZhciBldGhlcnNjYW5Qcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRXRoZXJzY2FuUHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTtmdW5jdGlvbiBnZXRUcmFuc2FjdGlvblBvc3REYXRhKHRyYW5zYWN0aW9uKXt2YXIgcmVzdWx0PXt9O2Zvcih2YXIga2V5IGluIHRyYW5zYWN0aW9uKXtpZih0cmFuc2FjdGlvbltrZXldPT1udWxsKXtjb250aW51ZX12YXIgdmFsdWU9dHJhbnNhY3Rpb25ba2V5XTtpZih7dHlwZTp0cnVlLGdhc0xpbWl0OnRydWUsZ2FzUHJpY2U6dHJ1ZSxub25jZTp0cnVlLHZhbHVlOnRydWV9W2tleV0pe3ZhbHVlPWxpYiQxLmhleFZhbHVlKGxpYiQxLmhleGxpZnkodmFsdWUpKX1lbHNlIGlmKGtleT09PSJhY2Nlc3NMaXN0Iil7dmFsdWU9IlsiK2xpYiRlLmFjY2Vzc0xpc3RpZnkodmFsdWUpLm1hcChmdW5jdGlvbihzZXQpe3JldHVybid7YWRkcmVzczoiJytzZXQuYWRkcmVzcysnIixzdG9yYWdlS2V5czpbIicrc2V0LnN0b3JhZ2VLZXlzLmpvaW4oJyIsIicpKyciXX0nfSkuam9pbigiLCIpKyJdIn1lbHNle3ZhbHVlPWxpYiQxLmhleGxpZnkodmFsdWUpfXJlc3VsdFtrZXldPXZhbHVlfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gZ2V0UmVzdWx0KHJlc3VsdCl7aWYocmVzdWx0LnN0YXR1cz09MCYmKHJlc3VsdC5tZXNzYWdlPT09Ik5vIHJlY29yZHMgZm91bmQifHxyZXN1bHQubWVzc2FnZT09PSJObyB0cmFuc2FjdGlvbnMgZm91bmQiKSl7cmV0dXJuIHJlc3VsdC5yZXN1bHR9aWYocmVzdWx0LnN0YXR1cyE9MXx8cmVzdWx0Lm1lc3NhZ2UhPSJPSyIpe3ZhciBlcnJvcj1uZXcgRXJyb3IoImludmFsaWQgcmVzcG9uc2UiKTtlcnJvci5yZXN1bHQ9SlNPTi5zdHJpbmdpZnkocmVzdWx0KTtpZigocmVzdWx0LnJlc3VsdHx8IiIpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigicmF0ZSBsaW1pdCIpPj0wKXtlcnJvci50aHJvdHRsZVJldHJ5PXRydWV9dGhyb3cgZXJyb3J9cmV0dXJuIHJlc3VsdC5yZXN1bHR9ZnVuY3Rpb24gZ2V0SnNvblJlc3VsdChyZXN1bHQpe2lmKHJlc3VsdCYmcmVzdWx0LnN0YXR1cz09MCYmcmVzdWx0Lm1lc3NhZ2U9PSJOT1RPSyImJihyZXN1bHQucmVzdWx0fHwiIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJyYXRlIGxpbWl0Iik+PTApe3ZhciBlcnJvcj1uZXcgRXJyb3IoInRocm90dGxlZCByZXNwb25zZSIpO2Vycm9yLnJlc3VsdD1KU09OLnN0cmluZ2lmeShyZXN1bHQpO2Vycm9yLnRocm90dGxlUmV0cnk9dHJ1ZTt0aHJvdyBlcnJvcn1pZihyZXN1bHQuanNvbnJwYyE9IjIuMCIpe3ZhciBlcnJvcj1uZXcgRXJyb3IoImludmFsaWQgcmVzcG9uc2UiKTtlcnJvci5yZXN1bHQ9SlNPTi5zdHJpbmdpZnkocmVzdWx0KTt0aHJvdyBlcnJvcn1pZihyZXN1bHQuZXJyb3Ipe3ZhciBlcnJvcj1uZXcgRXJyb3IocmVzdWx0LmVycm9yLm1lc3NhZ2V8fCJ1bmtub3duIGVycm9yIik7aWYocmVzdWx0LmVycm9yLmNvZGUpe2Vycm9yLmNvZGU9cmVzdWx0LmVycm9yLmNvZGV9aWYocmVzdWx0LmVycm9yLmRhdGEpe2Vycm9yLmRhdGE9cmVzdWx0LmVycm9yLmRhdGF9dGhyb3cgZXJyb3J9cmV0dXJuIHJlc3VsdC5yZXN1bHR9ZnVuY3Rpb24gY2hlY2tMb2dUYWcoYmxvY2tUYWcpe2lmKGJsb2NrVGFnPT09InBlbmRpbmciKXt0aHJvdyBuZXcgRXJyb3IoInBlbmRpbmcgbm90IHN1cHBvcnRlZCIpfWlmKGJsb2NrVGFnPT09ImxhdGVzdCIpe3JldHVybiBibG9ja1RhZ31yZXR1cm4gcGFyc2VJbnQoYmxvY2tUYWcuc3Vic3RyaW5nKDIpLDE2KX12YXIgZGVmYXVsdEFwaUtleT0iOUQxM1pFN1hTQlRKOTROOUJOSjJNQTMzVk1BWTJZUElSQiI7ZnVuY3Rpb24gY2hlY2tFcnJvcihtZXRob2QsZXJyb3IsdHJhbnNhY3Rpb24pe2lmKG1ldGhvZD09PSJjYWxsIiYmZXJyb3IuY29kZT09PWxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUil7dmFyIGU9ZXJyb3IuZXJyb3I7aWYoZSYmZS5tZXNzYWdlLm1hdGNoKCJyZXZlcnRlZCIpJiZsaWIkMS5pc0hleFN0cmluZyhlLmRhdGEpKXtyZXR1cm4gZS5kYXRhfX12YXIgbWVzc2FnZT1lcnJvci5tZXNzYWdlO2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ipe2lmKGVycm9yLmVycm9yJiZ0eXBlb2YgZXJyb3IuZXJyb3IubWVzc2FnZT09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLmVycm9yLm1lc3NhZ2V9ZWxzZSBpZih0eXBlb2YgZXJyb3IuYm9keT09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLmJvZHl9ZWxzZSBpZih0eXBlb2YgZXJyb3IucmVzcG9uc2VUZXh0PT09InN0cmluZyIpe21lc3NhZ2U9ZXJyb3IucmVzcG9uc2VUZXh0fX1tZXNzYWdlPShtZXNzYWdlfHwiIikudG9Mb3dlckNhc2UoKTtpZihtZXNzYWdlLm1hdGNoKC9pbnN1ZmZpY2llbnQgZnVuZHMvKSl7bG9nZ2VyLnRocm93RXJyb3IoImluc3VmZmljaWVudCBmdW5kcyBmb3IgaW50cmluc2ljIHRyYW5zYWN0aW9uIGNvc3QiLGxpYi5Mb2dnZXIuZXJyb3JzLklOU1VGRklDSUVOVF9GVU5EUyx7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfWlmKG1lc3NhZ2UubWF0Y2goL3NhbWUgaGFzaCB3YXMgYWxyZWFkeSBpbXBvcnRlZHx0cmFuc2FjdGlvbiBub25jZSBpcyB0b28gbG93Lykpe2xvZ2dlci50aHJvd0Vycm9yKCJub25jZSBoYXMgYWxyZWFkeSBiZWVuIHVzZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLk5PTkNFX0VYUElSRUQse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX1pZihtZXNzYWdlLm1hdGNoKC9hbm90aGVyIHRyYW5zYWN0aW9uIHdpdGggc2FtZSBub25jZS8pKXtsb2dnZXIudGhyb3dFcnJvcigicmVwbGFjZW1lbnQgZmVlIHRvbyBsb3ciLGxpYi5Mb2dnZXIuZXJyb3JzLlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VELHtlcnJvcjplcnJvcixtZXRob2Q6bWV0aG9kLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9ufSl9aWYobWVzc2FnZS5tYXRjaCgvZXhlY3V0aW9uIGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLykpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgZXN0aW1hdGUgZ2FzOyB0cmFuc2FjdGlvbiBtYXkgZmFpbCBvciBtYXkgcmVxdWlyZSBtYW51YWwgZ2FzIGxpbWl0IixsaWIuTG9nZ2VyLmVycm9ycy5VTlBSRURJQ1RBQkxFX0dBU19MSU1JVCx7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfXRocm93IGVycm9yfXZhciBFdGhlcnNjYW5Qcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhFdGhlcnNjYW5Qcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEV0aGVyc2NhblByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LEV0aGVyc2NhblByb3ZpZGVyKTtfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLG5ldHdvcmspfHx0aGlzO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJiYXNlVXJsIixfdGhpcy5nZXRCYXNlVXJsKCkpO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJhcGlLZXkiLGFwaUtleXx8ZGVmYXVsdEFwaUtleSk7cmV0dXJuIF90aGlzfUV0aGVyc2NhblByb3ZpZGVyLnByb3RvdHlwZS5nZXRCYXNlVXJsPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMubmV0d29yaz90aGlzLm5ldHdvcmsubmFtZToiaW52YWxpZCIpe2Nhc2UiaG9tZXN0ZWFkIjpyZXR1cm4iaHR0cHM6Ly9hcGkuZXRoZXJzY2FuLmlvIjtjYXNlInJvcHN0ZW4iOnJldHVybiJodHRwczovL2FwaS1yb3BzdGVuLmV0aGVyc2Nhbi5pbyI7Y2FzZSJyaW5rZWJ5IjpyZXR1cm4iaHR0cHM6Ly9hcGktcmlua2VieS5ldGhlcnNjYW4uaW8iO2Nhc2Uia292YW4iOnJldHVybiJodHRwczovL2FwaS1rb3Zhbi5ldGhlcnNjYW4uaW8iO2Nhc2UiZ29lcmxpIjpyZXR1cm4iaHR0cHM6Ly9hcGktZ29lcmxpLmV0aGVyc2Nhbi5pbyI7ZGVmYXVsdDp9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuc3VwcG9ydGVkIG5ldHdvcmsiLCJuZXR3b3JrIixuYW1lKX07RXRoZXJzY2FuUHJvdmlkZXIucHJvdG90eXBlLmdldFVybD1mdW5jdGlvbihtb2R1bGUscGFyYW1zKXt2YXIgcXVlcnk9T2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sa2V5KXt2YXIgdmFsdWU9cGFyYW1zW2tleV07aWYodmFsdWUhPW51bGwpe2FjY3VtKz0iJiIra2V5KyI9Iit2YWx1ZX1yZXR1cm4gYWNjdW19LCIiKTt2YXIgYXBpS2V5PXRoaXMuYXBpS2V5PyImYXBpa2V5PSIrdGhpcy5hcGlLZXk6IiI7cmV0dXJuIHRoaXMuYmFzZVVybCsiL2FwaT9tb2R1bGU9Iittb2R1bGUrcXVlcnkrYXBpS2V5fTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0UG9zdFVybD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhc2VVcmwrIi9hcGkifTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0UG9zdERhdGE9ZnVuY3Rpb24obW9kdWxlLHBhcmFtcyl7cGFyYW1zLm1vZHVsZT1tb2R1bGU7cGFyYW1zLmFwaWtleT10aGlzLmFwaUtleTtyZXR1cm4gcGFyYW1zfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZmV0Y2g9ZnVuY3Rpb24obW9kdWxlLHBhcmFtcyxwb3N0KXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB1cmwscGF5bG9hZCxwcm9jRnVuYyxjb25uZWN0aW9uLHBheWxvYWRTdHIscmVzdWx0O3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDp1cmw9cG9zdD90aGlzLmdldFBvc3RVcmwoKTp0aGlzLmdldFVybChtb2R1bGUscGFyYW1zKTtwYXlsb2FkPXBvc3Q/dGhpcy5nZXRQb3N0RGF0YShtb2R1bGUscGFyYW1zKTpudWxsO3Byb2NGdW5jPW1vZHVsZT09PSJwcm94eSI/Z2V0SnNvblJlc3VsdDpnZXRSZXN1bHQ7dGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVxdWVzdCIscmVxdWVzdDp1cmwscHJvdmlkZXI6dGhpc30pO2Nvbm5lY3Rpb249e3VybDp1cmwsdGhyb3R0bGVTbG90SW50ZXJ2YWw6MWUzLHRocm90dGxlQ2FsbGJhY2s6ZnVuY3Rpb24oYXR0ZW1wdCx1cmwpe2lmKF90aGlzLmlzQ29tbXVuaXR5UmVzb3VyY2UoKSl7Zm9ybWF0dGVyLnNob3dUaHJvdHRsZU1lc3NhZ2UoKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpfX07cGF5bG9hZFN0cj1udWxsO2lmKHBheWxvYWQpe2Nvbm5lY3Rpb24uaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCJ9O3BheWxvYWRTdHI9T2JqZWN0LmtleXMocGF5bG9hZCkubWFwKGZ1bmN0aW9uKGtleSl7cmV0dXJuIGtleSsiPSIrcGF5bG9hZFtrZXldfSkuam9pbigiJiIpfXJldHVybls0LGxpYiRxLmZldGNoSnNvbihjb25uZWN0aW9uLHBheWxvYWRTdHIscHJvY0Z1bmN8fGdldEpzb25SZXN1bHQpXTtjYXNlIDE6cmVzdWx0PV9hLnNlbnQoKTt0aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIscmVxdWVzdDp1cmwscmVzcG9uc2U6bGliJDMuZGVlcENvcHkocmVzdWx0KSxwcm92aWRlcjp0aGlzfSk7cmV0dXJuWzIscmVzdWx0XX19KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLHRoaXMubmV0d29ya119KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUucGVyZm9ybT1mdW5jdGlvbihtZXRob2QscGFyYW1zKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBfYSxwb3N0RGF0YSxlcnJvcl8xLHBvc3REYXRhLGVycm9yXzIsYXJncyx0b3BpYzAsbG9ncyxibG9ja3MsaSxsb2csYmxvY2ssX2I7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Mpe3N3aXRjaChfYy5sYWJlbCl7Y2FzZSAwOl9hPW1ldGhvZDtzd2l0Y2goX2Epe2Nhc2UiZ2V0QmxvY2tOdW1iZXIiOnJldHVyblszLDFdO2Nhc2UiZ2V0R2FzUHJpY2UiOnJldHVyblszLDJdO2Nhc2UiZ2V0QmFsYW5jZSI6cmV0dXJuWzMsM107Y2FzZSJnZXRUcmFuc2FjdGlvbkNvdW50IjpyZXR1cm5bMyw0XTtjYXNlImdldENvZGUiOnJldHVyblszLDVdO2Nhc2UiZ2V0U3RvcmFnZUF0IjpyZXR1cm5bMyw2XTtjYXNlInNlbmRUcmFuc2FjdGlvbiI6cmV0dXJuWzMsN107Y2FzZSJnZXRCbG9jayI6cmV0dXJuWzMsOF07Y2FzZSJnZXRUcmFuc2FjdGlvbiI6cmV0dXJuWzMsOV07Y2FzZSJnZXRUcmFuc2FjdGlvblJlY2VpcHQiOnJldHVyblszLDEwXTtjYXNlImNhbGwiOnJldHVyblszLDExXTtjYXNlImVzdGltYXRlR2FzIjpyZXR1cm5bMywxNV07Y2FzZSJnZXRMb2dzIjpyZXR1cm5bMywxOV07Y2FzZSJnZXRFdGhlclByaWNlIjpyZXR1cm5bMywyNl19cmV0dXJuWzMsMjhdO2Nhc2UgMTpyZXR1cm5bMix0aGlzLmZldGNoKCJwcm94eSIse2FjdGlvbjoiZXRoX2Jsb2NrTnVtYmVyIn0pXTtjYXNlIDI6cmV0dXJuWzIsdGhpcy5mZXRjaCgicHJveHkiLHthY3Rpb246ImV0aF9nYXNQcmljZSJ9KV07Y2FzZSAzOnJldHVyblsyLHRoaXMuZmV0Y2goImFjY291bnQiLHthY3Rpb246ImJhbGFuY2UiLGFkZHJlc3M6cGFyYW1zLmFkZHJlc3MsdGFnOnBhcmFtcy5ibG9ja1RhZ30pXTtjYXNlIDQ6cmV0dXJuWzIsdGhpcy5mZXRjaCgicHJveHkiLHthY3Rpb246ImV0aF9nZXRUcmFuc2FjdGlvbkNvdW50IixhZGRyZXNzOnBhcmFtcy5hZGRyZXNzLHRhZzpwYXJhbXMuYmxvY2tUYWd9KV07Y2FzZSA1OnJldHVyblsyLHRoaXMuZmV0Y2goInByb3h5Iix7YWN0aW9uOiJldGhfZ2V0Q29kZSIsYWRkcmVzczpwYXJhbXMuYWRkcmVzcyx0YWc6cGFyYW1zLmJsb2NrVGFnfSldO2Nhc2UgNjpyZXR1cm5bMix0aGlzLmZldGNoKCJwcm94eSIse2FjdGlvbjoiZXRoX2dldFN0b3JhZ2VBdCIsYWRkcmVzczpwYXJhbXMuYWRkcmVzcyxwb3NpdGlvbjpwYXJhbXMucG9zaXRpb24sdGFnOnBhcmFtcy5ibG9ja1RhZ30pXTtjYXNlIDc6cmV0dXJuWzIsdGhpcy5mZXRjaCgicHJveHkiLHthY3Rpb246ImV0aF9zZW5kUmF3VHJhbnNhY3Rpb24iLGhleDpwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb259LHRydWUpLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtyZXR1cm4gY2hlY2tFcnJvcigic2VuZFRyYW5zYWN0aW9uIixlcnJvcixwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb24pfSldO2Nhc2UgODppZihwYXJhbXMuYmxvY2tUYWcpe3JldHVyblsyLHRoaXMuZmV0Y2goInByb3h5Iix7YWN0aW9uOiJldGhfZ2V0QmxvY2tCeU51bWJlciIsdGFnOnBhcmFtcy5ibG9ja1RhZyxib29sZWFuOnBhcmFtcy5pbmNsdWRlVHJhbnNhY3Rpb25zPyJ0cnVlIjoiZmFsc2UifSldfXRocm93IG5ldyBFcnJvcigiZ2V0QmxvY2sgYnkgYmxvY2tIYXNoIG5vdCBpbXBsZW1lbnRlZCIpO2Nhc2UgOTpyZXR1cm5bMix0aGlzLmZldGNoKCJwcm94eSIse2FjdGlvbjoiZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoIix0eGhhc2g6cGFyYW1zLnRyYW5zYWN0aW9uSGFzaH0pXTtjYXNlIDEwOnJldHVyblsyLHRoaXMuZmV0Y2goInByb3h5Iix7YWN0aW9uOiJldGhfZ2V0VHJhbnNhY3Rpb25SZWNlaXB0Iix0eGhhc2g6cGFyYW1zLnRyYW5zYWN0aW9uSGFzaH0pXTtjYXNlIDExOmlmKHBhcmFtcy5ibG9ja1RhZyE9PSJsYXRlc3QiKXt0aHJvdyBuZXcgRXJyb3IoIkV0aGVyc2NhblByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgYmxvY2tUYWcgZm9yIGNhbGwiKX1wb3N0RGF0YT1nZXRUcmFuc2FjdGlvblBvc3REYXRhKHBhcmFtcy50cmFuc2FjdGlvbik7cG9zdERhdGEubW9kdWxlPSJwcm94eSI7cG9zdERhdGEuYWN0aW9uPSJldGhfY2FsbCI7X2MubGFiZWw9MTI7Y2FzZSAxMjpfYy50cnlzLnB1c2goWzEyLDE0LCwxNV0pO3JldHVybls0LHRoaXMuZmV0Y2goInByb3h5Iixwb3N0RGF0YSx0cnVlKV07Y2FzZSAxMzpyZXR1cm5bMixfYy5zZW50KCldO2Nhc2UgMTQ6ZXJyb3JfMT1fYy5zZW50KCk7cmV0dXJuWzIsY2hlY2tFcnJvcigiY2FsbCIsZXJyb3JfMSxwYXJhbXMudHJhbnNhY3Rpb24pXTtjYXNlIDE1OnBvc3REYXRhPWdldFRyYW5zYWN0aW9uUG9zdERhdGEocGFyYW1zLnRyYW5zYWN0aW9uKTtwb3N0RGF0YS5tb2R1bGU9InByb3h5Ijtwb3N0RGF0YS5hY3Rpb249ImV0aF9lc3RpbWF0ZUdhcyI7X2MubGFiZWw9MTY7Y2FzZSAxNjpfYy50cnlzLnB1c2goWzE2LDE4LCwxOV0pO3JldHVybls0LHRoaXMuZmV0Y2goInByb3h5Iixwb3N0RGF0YSx0cnVlKV07Y2FzZSAxNzpyZXR1cm5bMixfYy5zZW50KCldO2Nhc2UgMTg6ZXJyb3JfMj1fYy5zZW50KCk7cmV0dXJuWzIsY2hlY2tFcnJvcigiZXN0aW1hdGVHYXMiLGVycm9yXzIscGFyYW1zLnRyYW5zYWN0aW9uKV07Y2FzZSAxOTphcmdzPXthY3Rpb246ImdldExvZ3MifTtpZihwYXJhbXMuZmlsdGVyLmZyb21CbG9jayl7YXJncy5mcm9tQmxvY2s9Y2hlY2tMb2dUYWcocGFyYW1zLmZpbHRlci5mcm9tQmxvY2spfWlmKHBhcmFtcy5maWx0ZXIudG9CbG9jayl7YXJncy50b0Jsb2NrPWNoZWNrTG9nVGFnKHBhcmFtcy5maWx0ZXIudG9CbG9jayl9aWYocGFyYW1zLmZpbHRlci5hZGRyZXNzKXthcmdzLmFkZHJlc3M9cGFyYW1zLmZpbHRlci5hZGRyZXNzfWlmKHBhcmFtcy5maWx0ZXIudG9waWNzJiZwYXJhbXMuZmlsdGVyLnRvcGljcy5sZW5ndGg+MCl7aWYocGFyYW1zLmZpbHRlci50b3BpY3MubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCB0b3BpYyBjb3VudCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHt0b3BpY3M6cGFyYW1zLmZpbHRlci50b3BpY3N9KX1pZihwYXJhbXMuZmlsdGVyLnRvcGljcy5sZW5ndGg9PT0xKXt0b3BpYzA9cGFyYW1zLmZpbHRlci50b3BpY3NbMF07aWYodHlwZW9mIHRvcGljMCE9PSJzdHJpbmcifHx0b3BpYzAubGVuZ3RoIT09NjYpe2xvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCB0b3BpYyBmb3JtYXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7dG9waWMwOnRvcGljMH0pfWFyZ3MudG9waWMwPXRvcGljMH19cmV0dXJuWzQsdGhpcy5mZXRjaCgibG9ncyIsYXJncyldO2Nhc2UgMjA6bG9ncz1fYy5zZW50KCk7YmxvY2tzPXt9O2k9MDtfYy5sYWJlbD0yMTtjYXNlIDIxOmlmKCEoaTxsb2dzLmxlbmd0aCkpcmV0dXJuWzMsMjVdO2xvZz1sb2dzW2ldO2lmKGxvZy5ibG9ja0hhc2ghPW51bGwpe3JldHVyblszLDI0XX1pZighKGJsb2Nrc1tsb2cuYmxvY2tOdW1iZXJdPT1udWxsKSlyZXR1cm5bMywyM107cmV0dXJuWzQsdGhpcy5nZXRCbG9jayhsb2cuYmxvY2tOdW1iZXIpXTtjYXNlIDIyOmJsb2NrPV9jLnNlbnQoKTtpZihibG9jayl7YmxvY2tzW2xvZy5ibG9ja051bWJlcl09YmxvY2suaGFzaH1fYy5sYWJlbD0yMztjYXNlIDIzOmxvZy5ibG9ja0hhc2g9YmxvY2tzW2xvZy5ibG9ja051bWJlcl07X2MubGFiZWw9MjQ7Y2FzZSAyNDppKys7cmV0dXJuWzMsMjFdO2Nhc2UgMjU6cmV0dXJuWzIsbG9nc107Y2FzZSAyNjppZih0aGlzLm5ldHdvcmsubmFtZSE9PSJob21lc3RlYWQiKXtyZXR1cm5bMiwwXX1fYj1wYXJzZUZsb2F0O3JldHVybls0LHRoaXMuZmV0Y2goInN0YXRzIix7YWN0aW9uOiJldGhwcmljZSJ9KV07Y2FzZSAyNzpyZXR1cm5bMixfYi5hcHBseSh2b2lkIDAsW19jLnNlbnQoKS5ldGh1c2RdKV07Y2FzZSAyODpyZXR1cm5bMywyOV07Y2FzZSAyOTpyZXR1cm5bMixfc3VwZXIucHJvdG90eXBlLnBlcmZvcm0uY2FsbCh0aGlzLG1ldGhvZCxwYXJhbXMpXX19KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0SGlzdG9yeT1mdW5jdGlvbihhZGRyZXNzT3JOYW1lLHN0YXJ0QmxvY2ssZW5kQmxvY2spe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBhcmFtcyxyZXN1bHQ7dmFyIF9hO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpfYT17YWN0aW9uOiJ0eGxpc3QifTtyZXR1cm5bNCx0aGlzLnJlc29sdmVOYW1lKGFkZHJlc3NPck5hbWUpXTtjYXNlIDE6cGFyYW1zPShfYS5hZGRyZXNzPV9iLnNlbnQoKSxfYS5zdGFydGJsb2NrPXN0YXJ0QmxvY2s9PW51bGw/MDpzdGFydEJsb2NrLF9hLmVuZGJsb2NrPWVuZEJsb2NrPT1udWxsPzk5OTk5OTk5OmVuZEJsb2NrLF9hLnNvcnQ9ImFzYyIsX2EpO3JldHVybls0LHRoaXMuZmV0Y2goImFjY291bnQiLHBhcmFtcyldO2Nhc2UgMjpyZXN1bHQ9X2Iuc2VudCgpO3JldHVyblsyLHJlc3VsdC5tYXAoZnVuY3Rpb24odHgpe1siY29udHJhY3RBZGRyZXNzIiwidG8iXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodHhba2V5XT09IiIpe2RlbGV0ZSB0eFtrZXldfX0pO2lmKHR4LmNyZWF0ZXM9PW51bGwmJnR4LmNvbnRyYWN0QWRkcmVzcyE9bnVsbCl7dHguY3JlYXRlcz10eC5jb250cmFjdEFkZHJlc3N9dmFyIGl0ZW09X3RoaXMuZm9ybWF0dGVyLnRyYW5zYWN0aW9uUmVzcG9uc2UodHgpO2lmKHR4LnRpbWVTdGFtcCl7aXRlbS50aW1lc3RhbXA9cGFyc2VJbnQodHgudGltZVN0YW1wKX1yZXR1cm4gaXRlbX0pXX19KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuaXNDb21tdW5pdHlSZXNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFwaUtleT09PWRlZmF1bHRBcGlLZXl9O3JldHVybiBFdGhlcnNjYW5Qcm92aWRlcn0oYmFzZVByb3ZpZGVyLkJhc2VQcm92aWRlcik7ZXhwb3J0cy5FdGhlcnNjYW5Qcm92aWRlcj1FdGhlcnNjYW5Qcm92aWRlcn0pO3ZhciBldGhlcnNjYW5Qcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGV0aGVyc2NhblByb3ZpZGVyKTt2YXIgZmFsbGJhY2tQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRmFsbGJhY2tQcm92aWRlcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRJLnZlcnNpb24pO2Z1bmN0aW9uIG5vdygpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfWZ1bmN0aW9uIGNoZWNrTmV0d29ya3MobmV0d29ya3Mpe3ZhciByZXN1bHQ9bnVsbDtmb3IodmFyIGk9MDtpPG5ldHdvcmtzLmxlbmd0aDtpKyspe3ZhciBuZXR3b3JrPW5ldHdvcmtzW2ldO2lmKG5ldHdvcms9PW51bGwpe3JldHVybiBudWxsfWlmKHJlc3VsdCl7aWYoIShyZXN1bHQubmFtZT09PW5ldHdvcmsubmFtZSYmcmVzdWx0LmNoYWluSWQ9PT1uZXR3b3JrLmNoYWluSWQmJihyZXN1bHQuZW5zQWRkcmVzcz09PW5ldHdvcmsuZW5zQWRkcmVzc3x8cmVzdWx0LmVuc0FkZHJlc3M9PW51bGwmJm5ldHdvcmsuZW5zQWRkcmVzcz09bnVsbCkpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJwcm92aWRlciBtaXNtYXRjaCIsIm5ldHdvcmtzIixuZXR3b3Jrcyl9fWVsc2V7cmVzdWx0PW5ldHdvcmt9fXJldHVybiByZXN1bHR9ZnVuY3Rpb24gbWVkaWFuKHZhbHVlcyxtYXhEZWx0YSl7dmFsdWVzPXZhbHVlcy5zbGljZSgpLnNvcnQoKTt2YXIgbWlkZGxlPU1hdGguZmxvb3IodmFsdWVzLmxlbmd0aC8yKTtpZih2YWx1ZXMubGVuZ3RoJTIpe3JldHVybiB2YWx1ZXNbbWlkZGxlXX12YXIgYT12YWx1ZXNbbWlkZGxlLTFdLGI9dmFsdWVzW21pZGRsZV07aWYobWF4RGVsdGEhPW51bGwmJk1hdGguYWJzKGEtYik+bWF4RGVsdGEpe3JldHVybiBudWxsfXJldHVybihhK2IpLzJ9ZnVuY3Rpb24gc2VyaWFsaXplKHZhbHVlKXtpZih2YWx1ZT09PW51bGwpe3JldHVybiJudWxsIn1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJudW1iZXIifHx0eXBlb2YgdmFsdWU9PT0iYm9vbGVhbiIpe3JldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSl9ZWxzZSBpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIHZhbHVlfWVsc2UgaWYobGliJDIuQmlnTnVtYmVyLmlzQmlnTnVtYmVyKHZhbHVlKSl7cmV0dXJuIHZhbHVlLnRvU3RyaW5nKCl9ZWxzZSBpZihBcnJheS5pc0FycmF5KHZhbHVlKSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gc2VyaWFsaXplKGkpfSkpfWVsc2UgaWYodHlwZW9mIHZhbHVlPT09Im9iamVjdCIpe3ZhciBrZXlzPU9iamVjdC5rZXlzKHZhbHVlKTtrZXlzLnNvcnQoKTtyZXR1cm4ieyIra2V5cy5tYXAoZnVuY3Rpb24oa2V5KXt2YXIgdj12YWx1ZVtrZXldO2lmKHR5cGVvZiB2PT09ImZ1bmN0aW9uIil7dj0iW2Z1bmN0aW9uXSJ9ZWxzZXt2PXNlcmlhbGl6ZSh2KX1yZXR1cm4gSlNPTi5zdHJpbmdpZnkoa2V5KSsiOiIrdn0pLmpvaW4oIiwiKSsifSJ9dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHZhbHVlIHR5cGU6ICIrdHlwZW9mIHZhbHVlKX12YXIgbmV4dFJpZD0xO2Z1bmN0aW9uIHN0YWxsKGR1cmF0aW9uKXt2YXIgY2FuY2VsPW51bGw7dmFyIHRpbWVyPW51bGw7dmFyIHByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSl7Y2FuY2VsPWZ1bmN0aW9uKCl7aWYodGltZXIpe2NsZWFyVGltZW91dCh0aW1lcik7dGltZXI9bnVsbH1yZXNvbHZlKCl9O3RpbWVyPXNldFRpbWVvdXQoY2FuY2VsLGR1cmF0aW9uKX0pO3ZhciB3YWl0PWZ1bmN0aW9uKGZ1bmMpe3Byb21pc2U9cHJvbWlzZS50aGVuKGZ1bmMpO3JldHVybiBwcm9taXNlfTtmdW5jdGlvbiBnZXRQcm9taXNlKCl7cmV0dXJuIHByb21pc2V9cmV0dXJue2NhbmNlbDpjYW5jZWwsZ2V0UHJvbWlzZTpnZXRQcm9taXNlLHdhaXQ6d2FpdH19dmFyIEZvcndhcmRFcnJvcnM9W2xpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLGxpYi5Mb2dnZXIuZXJyb3JzLklOU1VGRklDSUVOVF9GVU5EUyxsaWIuTG9nZ2VyLmVycm9ycy5OT05DRV9FWFBJUkVELGxpYi5Mb2dnZXIuZXJyb3JzLlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VELGxpYi5Mb2dnZXIuZXJyb3JzLlVOUFJFRElDVEFCTEVfR0FTX0xJTUlUXTt2YXIgRm9yd2FyZFByb3BlcnRpZXM9WyJhZGRyZXNzIiwiYXJncyIsImVycm9yQXJncyIsImVycm9yU2lnbmF0dXJlIiwibWV0aG9kIiwidHJhbnNhY3Rpb24iXTtmdW5jdGlvbiBleHBvc2VEZWJ1Z0NvbmZpZyhjb25maWcsbm93KXt2YXIgcmVzdWx0PXt3ZWlnaHQ6Y29uZmlnLndlaWdodH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwicHJvdmlkZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uZmlnLnByb3ZpZGVyfX0pO2lmKGNvbmZpZy5zdGFydCl7cmVzdWx0LnN0YXJ0PWNvbmZpZy5zdGFydH1pZihub3cpe3Jlc3VsdC5kdXJhdGlvbj1ub3ctY29uZmlnLnN0YXJ0fWlmKGNvbmZpZy5kb25lKXtpZihjb25maWcuZXJyb3Ipe3Jlc3VsdC5lcnJvcj1jb25maWcuZXJyb3J9ZWxzZXtyZXN1bHQucmVzdWx0PWNvbmZpZy5yZXN1bHR8fG51bGx9fXJldHVybiByZXN1bHR9ZnVuY3Rpb24gbm9ybWFsaXplZFRhbGx5KG5vcm1hbGl6ZSxxdW9ydW0pe3JldHVybiBmdW5jdGlvbihjb25maWdzKXt2YXIgdGFsbHk9e307Y29uZmlncy5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciB2YWx1ZT1ub3JtYWxpemUoYy5yZXN1bHQpO2lmKCF0YWxseVt2YWx1ZV0pe3RhbGx5W3ZhbHVlXT17Y291bnQ6MCxyZXN1bHQ6Yy5yZXN1bHR9fXRhbGx5W3ZhbHVlXS5jb3VudCsrfSk7dmFyIGtleXM9T2JqZWN0LmtleXModGFsbHkpO2Zvcih2YXIgaT0wO2k8a2V5cy5sZW5ndGg7aSsrKXt2YXIgY2hlY2s9dGFsbHlba2V5c1tpXV07aWYoY2hlY2suY291bnQ+PXF1b3J1bSl7cmV0dXJuIGNoZWNrLnJlc3VsdH19cmV0dXJuIHVuZGVmaW5lZH19ZnVuY3Rpb24gZ2V0UHJvY2Vzc0Z1bmMocHJvdmlkZXIsbWV0aG9kLHBhcmFtcyl7dmFyIG5vcm1hbGl6ZT1zZXJpYWxpemU7c3dpdGNoKG1ldGhvZCl7Y2FzZSJnZXRCbG9ja051bWJlciI6cmV0dXJuIGZ1bmN0aW9uKGNvbmZpZ3Mpe3ZhciB2YWx1ZXM9Y29uZmlncy5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMucmVzdWx0fSk7dmFyIGJsb2NrTnVtYmVyPW1lZGlhbihjb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5yZXN1bHR9KSwyKTtpZihibG9ja051bWJlcj09bnVsbCl7cmV0dXJuIHVuZGVmaW5lZH1ibG9ja051bWJlcj1NYXRoLmNlaWwoYmxvY2tOdW1iZXIpO2lmKHZhbHVlcy5pbmRleE9mKGJsb2NrTnVtYmVyKzEpPj0wKXtibG9ja051bWJlcisrfWlmKGJsb2NrTnVtYmVyPj1wcm92aWRlci5faGlnaGVzdEJsb2NrTnVtYmVyKXtwcm92aWRlci5faGlnaGVzdEJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyfXJldHVybiBwcm92aWRlci5faGlnaGVzdEJsb2NrTnVtYmVyfTtjYXNlImdldEdhc1ByaWNlIjpyZXR1cm4gZnVuY3Rpb24oY29uZmlncyl7dmFyIHZhbHVlcz1jb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5yZXN1bHR9KTt2YWx1ZXMuc29ydCgpO3JldHVybiB2YWx1ZXNbTWF0aC5mbG9vcih2YWx1ZXMubGVuZ3RoLzIpXX07Y2FzZSJnZXRFdGhlclByaWNlIjpyZXR1cm4gZnVuY3Rpb24oY29uZmlncyl7cmV0dXJuIG1lZGlhbihjb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5yZXN1bHR9KSl9O2Nhc2UiZ2V0QmFsYW5jZSI6Y2FzZSJnZXRUcmFuc2FjdGlvbkNvdW50IjpjYXNlImdldENvZGUiOmNhc2UiZ2V0U3RvcmFnZUF0IjpjYXNlImNhbGwiOmNhc2UiZXN0aW1hdGVHYXMiOmNhc2UiZ2V0TG9ncyI6YnJlYWs7Y2FzZSJnZXRUcmFuc2FjdGlvbiI6Y2FzZSJnZXRUcmFuc2FjdGlvblJlY2VpcHQiOm5vcm1hbGl6ZT1mdW5jdGlvbih0eCl7aWYodHg9PW51bGwpe3JldHVybiBudWxsfXR4PWxpYiQzLnNoYWxsb3dDb3B5KHR4KTt0eC5jb25maXJtYXRpb25zPS0xO3JldHVybiBzZXJpYWxpemUodHgpfTticmVhaztjYXNlImdldEJsb2NrIjppZihwYXJhbXMuaW5jbHVkZVRyYW5zYWN0aW9ucyl7bm9ybWFsaXplPWZ1bmN0aW9uKGJsb2NrKXtpZihibG9jaz09bnVsbCl7cmV0dXJuIG51bGx9YmxvY2s9bGliJDMuc2hhbGxvd0NvcHkoYmxvY2spO2Jsb2NrLnRyYW5zYWN0aW9ucz1ibG9jay50cmFuc2FjdGlvbnMubWFwKGZ1bmN0aW9uKHR4KXt0eD1saWIkMy5zaGFsbG93Q29weSh0eCk7dHguY29uZmlybWF0aW9ucz0tMTtyZXR1cm4gdHh9KTtyZXR1cm4gc2VyaWFsaXplKGJsb2NrKX19ZWxzZXtub3JtYWxpemU9ZnVuY3Rpb24oYmxvY2spe2lmKGJsb2NrPT1udWxsKXtyZXR1cm4gbnVsbH1yZXR1cm4gc2VyaWFsaXplKGJsb2NrKX19YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24gbWV0aG9kOiAiK21ldGhvZCl9cmV0dXJuIG5vcm1hbGl6ZWRUYWxseShub3JtYWxpemUscHJvdmlkZXIucXVvcnVtKX1mdW5jdGlvbiB3YWl0Rm9yU3luYyhjb25maWcsYmxvY2tOdW1iZXIpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHByb3ZpZGVyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtwcm92aWRlcj1jb25maWcucHJvdmlkZXI7aWYocHJvdmlkZXIuYmxvY2tOdW1iZXIhPW51bGwmJnByb3ZpZGVyLmJsb2NrTnVtYmVyPj1ibG9ja051bWJlcnx8YmxvY2tOdW1iZXI9PT0tMSl7cmV0dXJuWzIscHJvdmlkZXJdfXJldHVyblsyLGxpYiRxLnBvbGwoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihwcm92aWRlci5ibG9ja051bWJlcj49YmxvY2tOdW1iZXIpe3JldHVybiByZXNvbHZlKHByb3ZpZGVyKX1pZihjb25maWcuY2FuY2VsbGVkKXtyZXR1cm4gcmVzb2x2ZShudWxsKX1yZXR1cm4gcmVzb2x2ZSh1bmRlZmluZWQpfSwwKX0pfSx7b25jZVBvbGw6cHJvdmlkZXJ9KV19KX0pfWZ1bmN0aW9uIGdldFJ1bm5lcihjb25maWcsY3VycmVudEJsb2NrTnVtYmVyLG1ldGhvZCxwYXJhbXMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHByb3ZpZGVyLF9hLGZpbHRlcjtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYil7c3dpdGNoKF9iLmxhYmVsKXtjYXNlIDA6cHJvdmlkZXI9Y29uZmlnLnByb3ZpZGVyO19hPW1ldGhvZDtzd2l0Y2goX2Epe2Nhc2UiZ2V0QmxvY2tOdW1iZXIiOnJldHVyblszLDFdO2Nhc2UiZ2V0R2FzUHJpY2UiOnJldHVyblszLDFdO2Nhc2UiZ2V0RXRoZXJQcmljZSI6cmV0dXJuWzMsMl07Y2FzZSJnZXRCYWxhbmNlIjpyZXR1cm5bMywzXTtjYXNlImdldFRyYW5zYWN0aW9uQ291bnQiOnJldHVyblszLDNdO2Nhc2UiZ2V0Q29kZSI6cmV0dXJuWzMsM107Y2FzZSJnZXRTdG9yYWdlQXQiOnJldHVyblszLDZdO2Nhc2UiZ2V0QmxvY2siOnJldHVyblszLDldO2Nhc2UiY2FsbCI6cmV0dXJuWzMsMTJdO2Nhc2UiZXN0aW1hdGVHYXMiOnJldHVyblszLDEyXTtjYXNlImdldFRyYW5zYWN0aW9uIjpyZXR1cm5bMywxNV07Y2FzZSJnZXRUcmFuc2FjdGlvblJlY2VpcHQiOnJldHVyblszLDE1XTtjYXNlImdldExvZ3MiOnJldHVyblszLDE2XX1yZXR1cm5bMywxOV07Y2FzZSAxOnJldHVyblsyLHByb3ZpZGVyW21ldGhvZF0oKV07Y2FzZSAyOmlmKHByb3ZpZGVyLmdldEV0aGVyUHJpY2Upe3JldHVyblsyLHByb3ZpZGVyLmdldEV0aGVyUHJpY2UoKV19cmV0dXJuWzMsMTldO2Nhc2UgMzppZighKHBhcmFtcy5ibG9ja1RhZyYmbGliJDEuaXNIZXhTdHJpbmcocGFyYW1zLmJsb2NrVGFnKSkpcmV0dXJuWzMsNV07cmV0dXJuWzQsd2FpdEZvclN5bmMoY29uZmlnLGN1cnJlbnRCbG9ja051bWJlcildO2Nhc2UgNDpwcm92aWRlcj1fYi5zZW50KCk7X2IubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzIscHJvdmlkZXJbbWV0aG9kXShwYXJhbXMuYWRkcmVzcyxwYXJhbXMuYmxvY2tUYWd8fCJsYXRlc3QiKV07Y2FzZSA2OmlmKCEocGFyYW1zLmJsb2NrVGFnJiZsaWIkMS5pc0hleFN0cmluZyhwYXJhbXMuYmxvY2tUYWcpKSlyZXR1cm5bMyw4XTtyZXR1cm5bNCx3YWl0Rm9yU3luYyhjb25maWcsY3VycmVudEJsb2NrTnVtYmVyKV07Y2FzZSA3OnByb3ZpZGVyPV9iLnNlbnQoKTtfYi5sYWJlbD04O2Nhc2UgODpyZXR1cm5bMixwcm92aWRlci5nZXRTdG9yYWdlQXQocGFyYW1zLmFkZHJlc3MscGFyYW1zLnBvc2l0aW9uLHBhcmFtcy5ibG9ja1RhZ3x8ImxhdGVzdCIpXTtjYXNlIDk6aWYoIShwYXJhbXMuYmxvY2tUYWcmJmxpYiQxLmlzSGV4U3RyaW5nKHBhcmFtcy5ibG9ja1RhZykpKXJldHVyblszLDExXTtyZXR1cm5bNCx3YWl0Rm9yU3luYyhjb25maWcsY3VycmVudEJsb2NrTnVtYmVyKV07Y2FzZSAxMDpwcm92aWRlcj1fYi5zZW50KCk7X2IubGFiZWw9MTE7Y2FzZSAxMTpyZXR1cm5bMixwcm92aWRlcltwYXJhbXMuaW5jbHVkZVRyYW5zYWN0aW9ucz8iZ2V0QmxvY2tXaXRoVHJhbnNhY3Rpb25zIjoiZ2V0QmxvY2siXShwYXJhbXMuYmxvY2tUYWd8fHBhcmFtcy5ibG9ja0hhc2gpXTtjYXNlIDEyOmlmKCEocGFyYW1zLmJsb2NrVGFnJiZsaWIkMS5pc0hleFN0cmluZyhwYXJhbXMuYmxvY2tUYWcpKSlyZXR1cm5bMywxNF07cmV0dXJuWzQsd2FpdEZvclN5bmMoY29uZmlnLGN1cnJlbnRCbG9ja051bWJlcildO2Nhc2UgMTM6cHJvdmlkZXI9X2Iuc2VudCgpO19iLmxhYmVsPTE0O2Nhc2UgMTQ6cmV0dXJuWzIscHJvdmlkZXJbbWV0aG9kXShwYXJhbXMudHJhbnNhY3Rpb24pXTtjYXNlIDE1OnJldHVyblsyLHByb3ZpZGVyW21ldGhvZF0ocGFyYW1zLnRyYW5zYWN0aW9uSGFzaCldO2Nhc2UgMTY6ZmlsdGVyPXBhcmFtcy5maWx0ZXI7aWYoIShmaWx0ZXIuZnJvbUJsb2NrJiZsaWIkMS5pc0hleFN0cmluZyhmaWx0ZXIuZnJvbUJsb2NrKXx8ZmlsdGVyLnRvQmxvY2smJmxpYiQxLmlzSGV4U3RyaW5nKGZpbHRlci50b0Jsb2NrKSkpcmV0dXJuWzMsMThdO3JldHVybls0LHdhaXRGb3JTeW5jKGNvbmZpZyxjdXJyZW50QmxvY2tOdW1iZXIpXTtjYXNlIDE3OnByb3ZpZGVyPV9iLnNlbnQoKTtfYi5sYWJlbD0xODtjYXNlIDE4OnJldHVyblsyLHByb3ZpZGVyLmdldExvZ3MoZmlsdGVyKV07Y2FzZSAxOTpyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigidW5rbm93biBtZXRob2QgZXJyb3IiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1Ise21ldGhvZDptZXRob2QscGFyYW1zOnBhcmFtc30pXX19KX0pfXZhciBGYWxsYmFja1Byb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZhbGxiYWNrUHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBGYWxsYmFja1Byb3ZpZGVyKHByb3ZpZGVycyxxdW9ydW0pe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPXRoaXM7bG9nZ2VyLmNoZWNrTmV3KF9uZXdUYXJnZXQsRmFsbGJhY2tQcm92aWRlcik7aWYocHJvdmlkZXJzLmxlbmd0aD09PTApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgcHJvdmlkZXJzIiwicHJvdmlkZXJzIixwcm92aWRlcnMpfXZhciBwcm92aWRlckNvbmZpZ3M9cHJvdmlkZXJzLm1hcChmdW5jdGlvbihjb25maWdPclByb3ZpZGVyLGluZGV4KXtpZihsaWIkYi5Qcm92aWRlci5pc1Byb3ZpZGVyKGNvbmZpZ09yUHJvdmlkZXIpKXt2YXIgc3RhbGxUaW1lb3V0PWZvcm1hdHRlci5pc0NvbW11bml0eVJlc291cmNlKGNvbmZpZ09yUHJvdmlkZXIpPzJlMzo3NTA7dmFyIHByaW9yaXR5PTE7cmV0dXJuIE9iamVjdC5mcmVlemUoe3Byb3ZpZGVyOmNvbmZpZ09yUHJvdmlkZXIsd2VpZ2h0OjEsc3RhbGxUaW1lb3V0OnN0YWxsVGltZW91dCxwcmlvcml0eTpwcmlvcml0eX0pfXZhciBjb25maWc9bGliJDMuc2hhbGxvd0NvcHkoY29uZmlnT3JQcm92aWRlcik7aWYoY29uZmlnLnByaW9yaXR5PT1udWxsKXtjb25maWcucHJpb3JpdHk9MX1pZihjb25maWcuc3RhbGxUaW1lb3V0PT1udWxsKXtjb25maWcuc3RhbGxUaW1lb3V0PWZvcm1hdHRlci5pc0NvbW11bml0eVJlc291cmNlKGNvbmZpZ09yUHJvdmlkZXIpPzJlMzo3NTB9aWYoY29uZmlnLndlaWdodD09bnVsbCl7Y29uZmlnLndlaWdodD0xfXZhciB3ZWlnaHQ9Y29uZmlnLndlaWdodDtpZih3ZWlnaHQlMXx8d2VpZ2h0PjUxMnx8d2VpZ2h0PDEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgd2VpZ2h0OyBtdXN0IGJlIGludGVnZXIgaW4gWzEsIDUxMl0iLCJwcm92aWRlcnNbIitpbmRleCsiXS53ZWlnaHQiLHdlaWdodCl9cmV0dXJuIE9iamVjdC5mcmVlemUoY29uZmlnKX0pO3ZhciB0b3RhbD1wcm92aWRlckNvbmZpZ3MucmVkdWNlKGZ1bmN0aW9uKGFjY3VtLGMpe3JldHVybiBhY2N1bStjLndlaWdodH0sMCk7aWYocXVvcnVtPT1udWxsKXtxdW9ydW09dG90YWwvMn1lbHNlIGlmKHF1b3J1bT50b3RhbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigicXVvcnVtIHdpbGwgYWx3YXlzIGZhaWw7IGxhcmdlciB0aGFuIHRvdGFsIHdlaWdodCIsInF1b3J1bSIscXVvcnVtKX12YXIgbmV0d29ya09yUmVhZHk9Y2hlY2tOZXR3b3Jrcyhwcm92aWRlckNvbmZpZ3MubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnByb3ZpZGVyLm5ldHdvcmt9KSk7aWYobmV0d29ya09yUmVhZHk9PW51bGwpe25ldHdvcmtPclJlYWR5PW5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7X3RoaXMuZGV0ZWN0TmV0d29yaygpLnRoZW4ocmVzb2x2ZSxyZWplY3QpfSwwKX0pfV90aGlzPV9zdXBlci5jYWxsKHRoaXMsbmV0d29ya09yUmVhZHkpfHx0aGlzO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJwcm92aWRlckNvbmZpZ3MiLE9iamVjdC5mcmVlemUocHJvdmlkZXJDb25maWdzKSk7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsInF1b3J1bSIscXVvcnVtKTtfdGhpcy5faGlnaGVzdEJsb2NrTnVtYmVyPS0xO3JldHVybiBfdGhpc31GYWxsYmFja1Byb3ZpZGVyLnByb3RvdHlwZS5kZXRlY3ROZXR3b3JrPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmV0d29ya3M7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LFByb21pc2UuYWxsKHRoaXMucHJvdmlkZXJDb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5wcm92aWRlci5nZXROZXR3b3JrKCl9KSldO2Nhc2UgMTpuZXR3b3Jrcz1fYS5zZW50KCk7cmV0dXJuWzIsY2hlY2tOZXR3b3JrcyhuZXR3b3JrcyldfX0pfSl9O0ZhbGxiYWNrUHJvdmlkZXIucHJvdG90eXBlLnBlcmZvcm09ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVzdWx0cyxpXzEscmVzdWx0LHByb2Nlc3NGdW5jLGNvbmZpZ3MsY3VycmVudEJsb2NrTnVtYmVyLGksZmlyc3QsX2xvb3BfMSx0aGlzXzEsc3RhdGVfMTt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoIShtZXRob2Q9PT0ic2VuZFRyYW5zYWN0aW9uIikpcmV0dXJuWzMsMl07cmV0dXJuWzQsUHJvbWlzZS5hbGwodGhpcy5wcm92aWRlckNvbmZpZ3MubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnByb3ZpZGVyLnNlbmRUcmFuc2FjdGlvbihwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb24pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtyZXR1cm4gcmVzdWx0Lmhhc2h9LGZ1bmN0aW9uKGVycm9yKXtyZXR1cm4gZXJyb3J9KX0pKV07Y2FzZSAxOnJlc3VsdHM9X2Euc2VudCgpO2ZvcihpXzE9MDtpXzE8cmVzdWx0cy5sZW5ndGg7aV8xKyspe3Jlc3VsdD1yZXN1bHRzW2lfMV07aWYodHlwZW9mIHJlc3VsdD09PSJzdHJpbmciKXtyZXR1cm5bMixyZXN1bHRdfX10aHJvdyByZXN1bHRzWzBdO2Nhc2UgMjppZighKHRoaXMuX2hpZ2hlc3RCbG9ja051bWJlcj09PS0xJiZtZXRob2QhPT0iZ2V0QmxvY2tOdW1iZXIiKSlyZXR1cm5bMyw0XTtyZXR1cm5bNCx0aGlzLmdldEJsb2NrTnVtYmVyKCldO2Nhc2UgMzpfYS5zZW50KCk7X2EubGFiZWw9NDtjYXNlIDQ6cHJvY2Vzc0Z1bmM9Z2V0UHJvY2Vzc0Z1bmModGhpcyxtZXRob2QscGFyYW1zKTtjb25maWdzPWxpYiRsLnNodWZmbGVkKHRoaXMucHJvdmlkZXJDb25maWdzLm1hcChsaWIkMy5zaGFsbG93Q29weSkpO2NvbmZpZ3Muc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnByaW9yaXR5LWIucHJpb3JpdHl9KTtjdXJyZW50QmxvY2tOdW1iZXI9dGhpcy5faGlnaGVzdEJsb2NrTnVtYmVyO2k9MDtmaXJzdD10cnVlO19sb29wXzE9ZnVuY3Rpb24oKXt2YXIgdDAsaW5mbGlnaHRXZWlnaHQsX2xvb3BfMix3YWl0aW5nLHJlc3VsdHMscmVzdWx0LGVycm9ycztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYil7c3dpdGNoKF9iLmxhYmVsKXtjYXNlIDA6dDA9bm93KCk7aW5mbGlnaHRXZWlnaHQ9Y29uZmlncy5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMucnVubmVyJiZ0MC1jLnN0YXJ0PGMuc3RhbGxUaW1lb3V0fSkucmVkdWNlKGZ1bmN0aW9uKGFjY3VtLGMpe3JldHVybiBhY2N1bStjLndlaWdodH0sMCk7X2xvb3BfMj1mdW5jdGlvbigpe3ZhciBjb25maWc9Y29uZmlnc1tpKytdO3ZhciByaWQ9bmV4dFJpZCsrO2NvbmZpZy5zdGFydD1ub3coKTtjb25maWcuc3RhbGxlcj1zdGFsbChjb25maWcuc3RhbGxUaW1lb3V0KTtjb25maWcuc3RhbGxlci53YWl0KGZ1bmN0aW9uKCl7Y29uZmlnLnN0YWxsZXI9bnVsbH0pO2NvbmZpZy5ydW5uZXI9Z2V0UnVubmVyKGNvbmZpZyxjdXJyZW50QmxvY2tOdW1iZXIsbWV0aG9kLHBhcmFtcykudGhlbihmdW5jdGlvbihyZXN1bHQpe2NvbmZpZy5kb25lPXRydWU7Y29uZmlnLnJlc3VsdD1yZXN1bHQ7aWYoX3RoaXMubGlzdGVuZXJDb3VudCgiZGVidWciKSl7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLHJpZDpyaWQsYmFja2VuZDpleHBvc2VEZWJ1Z0NvbmZpZyhjb25maWcsbm93KCkpLHJlcXVlc3Q6e21ldGhvZDptZXRob2QscGFyYW1zOmxpYiQzLmRlZXBDb3B5KHBhcmFtcyl9LHByb3ZpZGVyOl90aGlzfSl9fSxmdW5jdGlvbihlcnJvcil7Y29uZmlnLmRvbmU9dHJ1ZTtjb25maWcuZXJyb3I9ZXJyb3I7aWYoX3RoaXMubGlzdGVuZXJDb3VudCgiZGVidWciKSl7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLHJpZDpyaWQsYmFja2VuZDpleHBvc2VEZWJ1Z0NvbmZpZyhjb25maWcsbm93KCkpLHJlcXVlc3Q6e21ldGhvZDptZXRob2QscGFyYW1zOmxpYiQzLmRlZXBDb3B5KHBhcmFtcyl9LHByb3ZpZGVyOl90aGlzfSl9fSk7aWYodGhpc18xLmxpc3RlbmVyQ291bnQoImRlYnVnIikpe3RoaXNfMS5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVxdWVzdCIscmlkOnJpZCxiYWNrZW5kOmV4cG9zZURlYnVnQ29uZmlnKGNvbmZpZyxudWxsKSxyZXF1ZXN0OnttZXRob2Q6bWV0aG9kLHBhcmFtczpsaWIkMy5kZWVwQ29weShwYXJhbXMpfSxwcm92aWRlcjp0aGlzXzF9KX1pbmZsaWdodFdlaWdodCs9Y29uZmlnLndlaWdodH07d2hpbGUoaW5mbGlnaHRXZWlnaHQ8dGhpc18xLnF1b3J1bSYmaTxjb25maWdzLmxlbmd0aCl7X2xvb3BfMigpfXdhaXRpbmc9W107Y29uZmlncy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGMuZG9uZXx8IWMucnVubmVyKXtyZXR1cm59d2FpdGluZy5wdXNoKGMucnVubmVyKTtpZihjLnN0YWxsZXIpe3dhaXRpbmcucHVzaChjLnN0YWxsZXIuZ2V0UHJvbWlzZSgpKX19KTtpZighd2FpdGluZy5sZW5ndGgpcmV0dXJuWzMsMl07cmV0dXJuWzQsUHJvbWlzZS5yYWNlKHdhaXRpbmcpXTtjYXNlIDE6X2Iuc2VudCgpO19iLmxhYmVsPTI7Y2FzZSAyOnJlc3VsdHM9Y29uZmlncy5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMuZG9uZSYmYy5lcnJvcj09bnVsbH0pO2lmKCEocmVzdWx0cy5sZW5ndGg+PXRoaXNfMS5xdW9ydW0pKXJldHVyblszLDVdO3Jlc3VsdD1wcm9jZXNzRnVuYyhyZXN1bHRzKTtpZihyZXN1bHQhPT11bmRlZmluZWQpe2NvbmZpZ3MuZm9yRWFjaChmdW5jdGlvbihjKXtpZihjLnN0YWxsZXIpe2Muc3RhbGxlci5jYW5jZWwoKX1jLmNhbmNlbGxlZD10cnVlfSk7cmV0dXJuWzIse3ZhbHVlOnJlc3VsdH1dfWlmKCEhZmlyc3QpcmV0dXJuWzMsNF07cmV0dXJuWzQsc3RhbGwoMTAwKS5nZXRQcm9taXNlKCldO2Nhc2UgMzpfYi5zZW50KCk7X2IubGFiZWw9NDtjYXNlIDQ6Zmlyc3Q9ZmFsc2U7X2IubGFiZWw9NTtjYXNlIDU6ZXJyb3JzPWNvbmZpZ3MucmVkdWNlKGZ1bmN0aW9uKGFjY3VtLGMpe2lmKCFjLmRvbmV8fGMuZXJyb3I9PW51bGwpe3JldHVybiBhY2N1bX12YXIgY29kZT1jLmVycm9yLmNvZGU7aWYoRm9yd2FyZEVycm9ycy5pbmRleE9mKGNvZGUpPj0wKXtpZighYWNjdW1bY29kZV0pe2FjY3VtW2NvZGVdPXtlcnJvcjpjLmVycm9yLHdlaWdodDowfX1hY2N1bVtjb2RlXS53ZWlnaHQrPWMud2VpZ2h0fXJldHVybiBhY2N1bX0se30pO09iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChmdW5jdGlvbihlcnJvckNvZGUpe3ZhciB0YWxseT1lcnJvcnNbZXJyb3JDb2RlXTtpZih0YWxseS53ZWlnaHQ8X3RoaXMucXVvcnVtKXtyZXR1cm59Y29uZmlncy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGMuc3RhbGxlcil7Yy5zdGFsbGVyLmNhbmNlbCgpfWMuY2FuY2VsbGVkPXRydWV9KTt2YXIgZT10YWxseS5lcnJvcjt2YXIgcHJvcHM9e307Rm9yd2FyZFByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbihuYW1lKXtpZihlW25hbWVdPT1udWxsKXtyZXR1cm59cHJvcHNbbmFtZV09ZVtuYW1lXX0pO2xvZ2dlci50aHJvd0Vycm9yKGUucmVhc29ufHxlLm1lc3NhZ2UsZXJyb3JDb2RlLHByb3BzKX0pO2lmKGNvbmZpZ3MuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiFjLmRvbmV9KS5sZW5ndGg9PT0wKXtyZXR1cm5bMiwiYnJlYWsiXX1yZXR1cm5bMl19fSl9O3RoaXNfMT10aGlzO19hLmxhYmVsPTU7Y2FzZSA1OmlmKCF0cnVlKXJldHVyblszLDddO3JldHVybls1LF9sb29wXzEoKV07Y2FzZSA2OnN0YXRlXzE9X2Euc2VudCgpO2lmKHR5cGVvZiBzdGF0ZV8xPT09Im9iamVjdCIpcmV0dXJuWzIsc3RhdGVfMS52YWx1ZV07aWYoc3RhdGVfMT09PSJicmVhayIpcmV0dXJuWzMsN107cmV0dXJuWzMsNV07Y2FzZSA3OmNvbmZpZ3MuZm9yRWFjaChmdW5jdGlvbihjKXtpZihjLnN0YWxsZXIpe2Muc3RhbGxlci5jYW5jZWwoKX1jLmNhbmNlbGxlZD10cnVlfSk7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImZhaWxlZCB0byBtZWV0IHF1b3J1bSIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHttZXRob2Q6bWV0aG9kLHBhcmFtczpwYXJhbXMscmVzdWx0czpjb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gZXhwb3NlRGVidWdDb25maWcoYyl9KSxwcm92aWRlcjp0aGlzfSldfX0pfSl9O3JldHVybiBGYWxsYmFja1Byb3ZpZGVyfShiYXNlUHJvdmlkZXIuQmFzZVByb3ZpZGVyKTtleHBvcnRzLkZhbGxiYWNrUHJvdmlkZXI9RmFsbGJhY2tQcm92aWRlcn0pO3ZhciBmYWxsYmFja1Byb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZmFsbGJhY2tQcm92aWRlcik7dmFyIGJyb3dzZXJJcGNQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuSXBjUHJvdmlkZXI9dm9pZCAwO3ZhciBJcGNQcm92aWRlcj1udWxsO2V4cG9ydHMuSXBjUHJvdmlkZXI9SXBjUHJvdmlkZXJ9KTt2YXIgYnJvd3NlcklwY1Byb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnJvd3NlcklwY1Byb3ZpZGVyKTt2YXIgaW5mdXJhUHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5JbmZ1cmFQcm92aWRlcj1leHBvcnRzLkluZnVyYVdlYlNvY2tldFByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIGRlZmF1bHRQcm9qZWN0SWQ9Ijg0ODQyMDc4YjA5OTQ2NjM4YzAzMTU3ZjgzNDA1MjEzIjt2YXIgSW5mdXJhV2ViU29ja2V0UHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoSW5mdXJhV2ViU29ja2V0UHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBJbmZ1cmFXZWJTb2NrZXRQcm92aWRlcihuZXR3b3JrLGFwaUtleSl7dmFyIF90aGlzPXRoaXM7dmFyIHByb3ZpZGVyPW5ldyBJbmZ1cmFQcm92aWRlcihuZXR3b3JrLGFwaUtleSk7dmFyIGNvbm5lY3Rpb249cHJvdmlkZXIuY29ubmVjdGlvbjtpZihjb25uZWN0aW9uLnBhc3N3b3JkKXtsb2dnZXIudGhyb3dFcnJvcigiSU5GVVJBIFdlYlNvY2tldCBwcm9qZWN0IHNlY3JldHMgdW5zdXBwb3J0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJJbmZ1cmFQcm92aWRlci5nZXRXZWJTb2NrZXRQcm92aWRlcigpIn0pfXZhciB1cmw9Y29ubmVjdGlvbi51cmwucmVwbGFjZSgvXmh0dHAvaSwid3MiKS5yZXBsYWNlKCIvdjMvIiwiL3dzL3YzLyIpO190aGlzPV9zdXBlci5jYWxsKHRoaXMsdXJsLG5ldHdvcmspfHx0aGlzO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJhcGlLZXkiLHByb3ZpZGVyLnByb2plY3RJZCk7bGliJDMuZGVmaW5lUmVhZE9ubHkoX3RoaXMsInByb2plY3RJZCIscHJvdmlkZXIucHJvamVjdElkKTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywicHJvamVjdFNlY3JldCIscHJvdmlkZXIucHJvamVjdFNlY3JldCk7cmV0dXJuIF90aGlzfUluZnVyYVdlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZS5pc0NvbW11bml0eVJlc291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvamVjdElkPT09ZGVmYXVsdFByb2plY3RJZH07cmV0dXJuIEluZnVyYVdlYlNvY2tldFByb3ZpZGVyfSh3ZWJzb2NrZXRQcm92aWRlci5XZWJTb2NrZXRQcm92aWRlcik7ZXhwb3J0cy5JbmZ1cmFXZWJTb2NrZXRQcm92aWRlcj1JbmZ1cmFXZWJTb2NrZXRQcm92aWRlcjt2YXIgSW5mdXJhUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoSW5mdXJhUHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBJbmZ1cmFQcm92aWRlcigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUluZnVyYVByb3ZpZGVyLmdldFdlYlNvY2tldFByb3ZpZGVyPWZ1bmN0aW9uKG5ldHdvcmssYXBpS2V5KXtyZXR1cm4gbmV3IEluZnVyYVdlYlNvY2tldFByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KX07SW5mdXJhUHJvdmlkZXIuZ2V0QXBpS2V5PWZ1bmN0aW9uKGFwaUtleSl7dmFyIGFwaUtleU9iaj17YXBpS2V5OmRlZmF1bHRQcm9qZWN0SWQscHJvamVjdElkOmRlZmF1bHRQcm9qZWN0SWQscHJvamVjdFNlY3JldDpudWxsfTtpZihhcGlLZXk9PW51bGwpe3JldHVybiBhcGlLZXlPYmp9aWYodHlwZW9mIGFwaUtleT09PSJzdHJpbmciKXthcGlLZXlPYmoucHJvamVjdElkPWFwaUtleX1lbHNlIGlmKGFwaUtleS5wcm9qZWN0U2VjcmV0IT1udWxsKXtsb2dnZXIuYXNzZXJ0QXJndW1lbnQodHlwZW9mIGFwaUtleS5wcm9qZWN0SWQ9PT0ic3RyaW5nIiwicHJvamVjdFNlY3JldCByZXF1aXJlcyBhIHByb2plY3RJZCIsInByb2plY3RJZCIsYXBpS2V5LnByb2plY3RJZCk7bG9nZ2VyLmFzc2VydEFyZ3VtZW50KHR5cGVvZiBhcGlLZXkucHJvamVjdFNlY3JldD09PSJzdHJpbmciLCJpbnZhbGlkIHByb2plY3RTZWNyZXQiLCJwcm9qZWN0U2VjcmV0IiwiW1JFREFDVEVEXSIpO2FwaUtleU9iai5wcm9qZWN0SWQ9YXBpS2V5LnByb2plY3RJZDthcGlLZXlPYmoucHJvamVjdFNlY3JldD1hcGlLZXkucHJvamVjdFNlY3JldH1lbHNlIGlmKGFwaUtleS5wcm9qZWN0SWQpe2FwaUtleU9iai5wcm9qZWN0SWQ9YXBpS2V5LnByb2plY3RJZH1hcGlLZXlPYmouYXBpS2V5PWFwaUtleU9iai5wcm9qZWN0SWQ7cmV0dXJuIGFwaUtleU9ian07SW5mdXJhUHJvdmlkZXIuZ2V0VXJsPWZ1bmN0aW9uKG5ldHdvcmssYXBpS2V5KXt2YXIgaG9zdD1udWxsO3N3aXRjaChuZXR3b3JrP25ldHdvcmsubmFtZToidW5rbm93biIpe2Nhc2UiaG9tZXN0ZWFkIjpob3N0PSJtYWlubmV0LmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJyb3BzdGVuIjpob3N0PSJyb3BzdGVuLmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJyaW5rZWJ5Ijpob3N0PSJyaW5rZWJ5LmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJrb3ZhbiI6aG9zdD0ia292YW4uaW5mdXJhLmlvIjticmVhaztjYXNlImdvZXJsaSI6aG9zdD0iZ29lcmxpLmluZnVyYS5pbyI7YnJlYWs7ZGVmYXVsdDpsb2dnZXIudGhyb3dFcnJvcigidW5zdXBwb3J0ZWQgbmV0d29yayIsbGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7YXJndW1lbnQ6Im5ldHdvcmsiLHZhbHVlOm5ldHdvcmt9KX12YXIgY29ubmVjdGlvbj17YWxsb3dHemlwOnRydWUsdXJsOiJodHRwczovIisiLyIraG9zdCsiL3YzLyIrYXBpS2V5LnByb2plY3RJZCx0aHJvdHRsZUNhbGxiYWNrOmZ1bmN0aW9uKGF0dGVtcHQsdXJsKXtpZihhcGlLZXkucHJvamVjdElkPT09ZGVmYXVsdFByb2plY3RJZCl7Zm9ybWF0dGVyLnNob3dUaHJvdHRsZU1lc3NhZ2UoKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpfX07aWYoYXBpS2V5LnByb2plY3RTZWNyZXQhPW51bGwpe2Nvbm5lY3Rpb24udXNlcj0iIjtjb25uZWN0aW9uLnBhc3N3b3JkPWFwaUtleS5wcm9qZWN0U2VjcmV0fXJldHVybiBjb25uZWN0aW9ufTtJbmZ1cmFQcm92aWRlci5wcm90b3R5cGUuaXNDb21tdW5pdHlSZXNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb2plY3RJZD09PWRlZmF1bHRQcm9qZWN0SWR9O3JldHVybiBJbmZ1cmFQcm92aWRlcn0odXJsSnNvblJwY1Byb3ZpZGVyLlVybEpzb25ScGNQcm92aWRlcik7ZXhwb3J0cy5JbmZ1cmFQcm92aWRlcj1JbmZ1cmFQcm92aWRlcn0pO3ZhciBpbmZ1cmFQcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGluZnVyYVByb3ZpZGVyKTt2YXIganNvblJwY0JhdGNoUHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5Kc29uUnBjQmF0Y2hQcm92aWRlcj12b2lkIDA7dmFyIEpzb25ScGNCYXRjaFByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEpzb25ScGNCYXRjaFByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gSnNvblJwY0JhdGNoUHJvdmlkZXIoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31Kc29uUnBjQmF0Y2hQcm92aWRlci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihtZXRob2QscGFyYW1zKXt2YXIgX3RoaXM9dGhpczt2YXIgcmVxdWVzdD17bWV0aG9kOm1ldGhvZCxwYXJhbXM6cGFyYW1zLGlkOnRoaXMuX25leHRJZCsrLGpzb25ycGM6IjIuMCJ9O2lmKHRoaXMuX3BlbmRpbmdCYXRjaD09bnVsbCl7dGhpcy5fcGVuZGluZ0JhdGNoPVtdfXZhciBpbmZsaWdodFJlcXVlc3Q9e3JlcXVlc3Q6cmVxdWVzdCxyZXNvbHZlOm51bGwscmVqZWN0Om51bGx9O3ZhciBwcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtpbmZsaWdodFJlcXVlc3QucmVzb2x2ZT1yZXNvbHZlO2luZmxpZ2h0UmVxdWVzdC5yZWplY3Q9cmVqZWN0fSk7dGhpcy5fcGVuZGluZ0JhdGNoLnB1c2goaW5mbGlnaHRSZXF1ZXN0KTtpZighdGhpcy5fcGVuZGluZ0JhdGNoQWdncmVnYXRvcil7dGhpcy5fcGVuZGluZ0JhdGNoQWdncmVnYXRvcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGJhdGNoPV90aGlzLl9wZW5kaW5nQmF0Y2g7X3RoaXMuX3BlbmRpbmdCYXRjaD1udWxsO190aGlzLl9wZW5kaW5nQmF0Y2hBZ2dyZWdhdG9yPW51bGw7dmFyIHJlcXVlc3Q9YmF0Y2gubWFwKGZ1bmN0aW9uKGluZmxpZ2h0KXtyZXR1cm4gaW5mbGlnaHQucmVxdWVzdH0pO190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXF1ZXN0QmF0Y2giLHJlcXVlc3Q6bGliJDMuZGVlcENvcHkocmVxdWVzdCkscHJvdmlkZXI6X3RoaXN9KTtyZXR1cm4gbGliJHEuZmV0Y2hKc29uKF90aGlzLmNvbm5lY3Rpb24sSlNPTi5zdHJpbmdpZnkocmVxdWVzdCkpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLHJlcXVlc3Q6cmVxdWVzdCxyZXNwb25zZTpyZXN1bHQscHJvdmlkZXI6X3RoaXN9KTtiYXRjaC5mb3JFYWNoKGZ1bmN0aW9uKGluZmxpZ2h0UmVxdWVzdCxpbmRleCl7dmFyIHBheWxvYWQ9cmVzdWx0W2luZGV4XTtpZihwYXlsb2FkLmVycm9yKXt2YXIgZXJyb3I9bmV3IEVycm9yKHBheWxvYWQuZXJyb3IubWVzc2FnZSk7ZXJyb3IuY29kZT1wYXlsb2FkLmVycm9yLmNvZGU7ZXJyb3IuZGF0YT1wYXlsb2FkLmVycm9yLmRhdGE7aW5mbGlnaHRSZXF1ZXN0LnJlamVjdChlcnJvcil9ZWxzZXtpbmZsaWdodFJlcXVlc3QucmVzb2x2ZShwYXlsb2FkLnJlc3VsdCl9fSl9LGZ1bmN0aW9uKGVycm9yKXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLGVycm9yOmVycm9yLHJlcXVlc3Q6cmVxdWVzdCxwcm92aWRlcjpfdGhpc30pO2JhdGNoLmZvckVhY2goZnVuY3Rpb24oaW5mbGlnaHRSZXF1ZXN0KXtpbmZsaWdodFJlcXVlc3QucmVqZWN0KGVycm9yKX0pfSl9LDEwKX1yZXR1cm4gcHJvbWlzZX07cmV0dXJuIEpzb25ScGNCYXRjaFByb3ZpZGVyfShqc29uUnBjUHJvdmlkZXIuSnNvblJwY1Byb3ZpZGVyKTtleHBvcnRzLkpzb25ScGNCYXRjaFByb3ZpZGVyPUpzb25ScGNCYXRjaFByb3ZpZGVyfSk7dmFyIGpzb25ScGNCYXRjaFByb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoanNvblJwY0JhdGNoUHJvdmlkZXIpO3ZhciBub2Rlc21pdGhQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLk5vZGVzbWl0aFByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIGRlZmF1bHRBcGlLZXk9IkVUSEVSU19KU19TSEFSRUQiO3ZhciBOb2Rlc21pdGhQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhOb2Rlc21pdGhQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIE5vZGVzbWl0aFByb3ZpZGVyKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9Tm9kZXNtaXRoUHJvdmlkZXIuZ2V0QXBpS2V5PWZ1bmN0aW9uKGFwaUtleSl7aWYoYXBpS2V5JiZ0eXBlb2YgYXBpS2V5IT09InN0cmluZyIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYXBpS2V5IiwiYXBpS2V5IixhcGlLZXkpfXJldHVybiBhcGlLZXl8fGRlZmF1bHRBcGlLZXl9O05vZGVzbWl0aFByb3ZpZGVyLmdldFVybD1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7bG9nZ2VyLndhcm4oIk5vZGVTbWl0aCB3aWxsIGJlIGRpc2NvbnRpbnVlZCBvbiAyMDE5LTEyLTIwOyBwbGVhc2UgbWlncmF0ZSB0byBhbm90aGVyIHBsYXRmb3JtLiIpO3ZhciBob3N0PW51bGw7c3dpdGNoKG5ldHdvcmsubmFtZSl7Y2FzZSJob21lc3RlYWQiOmhvc3Q9Imh0dHBzOi8vZXRoZXJldW0uYXBpLm5vZGVzbWl0aC5pby92MS9tYWlubmV0L2pzb25ycGMiO2JyZWFrO2Nhc2Uicm9wc3RlbiI6aG9zdD0iaHR0cHM6Ly9ldGhlcmV1bS5hcGkubm9kZXNtaXRoLmlvL3YxL3JvcHN0ZW4vanNvbnJwYyI7YnJlYWs7Y2FzZSJyaW5rZWJ5Ijpob3N0PSJodHRwczovL2V0aGVyZXVtLmFwaS5ub2Rlc21pdGguaW8vdjEvcmlua2VieS9qc29ucnBjIjticmVhaztjYXNlImdvZXJsaSI6aG9zdD0iaHR0cHM6Ly9ldGhlcmV1bS5hcGkubm9kZXNtaXRoLmlvL3YxL2dvZXJsaS9qc29ucnBjIjticmVhaztjYXNlImtvdmFuIjpob3N0PSJodHRwczovL2V0aGVyZXVtLmFwaS5ub2Rlc21pdGguaW8vdjEva292YW4vanNvbnJwYyI7YnJlYWs7ZGVmYXVsdDpsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCBuZXR3b3JrIiwibmV0d29yayIsYXJndW1lbnRzWzBdKX1yZXR1cm4gaG9zdCsiP2FwaUtleT0iK2FwaUtleX07cmV0dXJuIE5vZGVzbWl0aFByb3ZpZGVyfSh1cmxKc29uUnBjUHJvdmlkZXIuVXJsSnNvblJwY1Byb3ZpZGVyKTtleHBvcnRzLk5vZGVzbWl0aFByb3ZpZGVyPU5vZGVzbWl0aFByb3ZpZGVyfSk7dmFyIG5vZGVzbWl0aFByb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobm9kZXNtaXRoUHJvdmlkZXIpO3ZhciBwb2NrZXRQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlBvY2tldFByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIGRlZmF1bHRBcHBsaWNhdGlvbklkcz17aG9tZXN0ZWFkOiI2MDA0YmNkMTAwNDAyNjE2MzNhZGU5OTAiLHJvcHN0ZW46IjYwMDRiZDRkMDA0MDI2MTYzM2FkZTk5MSIscmlua2VieToiNjAwNGJkYTIwMDQwMjYxNjMzYWRlOTk0Iixnb2VybGk6IjYwMDRiZDg2MDA0MDI2MTYzM2FkZTk5MiJ9O3ZhciBQb2NrZXRQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhQb2NrZXRQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIFBvY2tldFByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2lmKGFwaUtleT09bnVsbCl7dmFyIG49bGliJDMuZ2V0U3RhdGljKF9uZXdUYXJnZXQsImdldE5ldHdvcmsiKShuZXR3b3JrKTtpZihuKXt2YXIgYXBwbGljYXRpb25JZD1kZWZhdWx0QXBwbGljYXRpb25JZHNbbi5uYW1lXTtpZihhcHBsaWNhdGlvbklkKXthcGlLZXk9e2FwcGxpY2F0aW9uSWQ6YXBwbGljYXRpb25JZCxsb2FkQmFsYW5jZXI6dHJ1ZX19fWlmKGFwaUtleT09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIG5ldHdvcmsiLGxpYi5Mb2dnZXIuZXJyb3JzLklOVkFMSURfQVJHVU1FTlQse2FyZ3VtZW50OiJuZXR3b3JrIix2YWx1ZTpuZXR3b3JrfSl9fV90aGlzPV9zdXBlci5jYWxsKHRoaXMsbmV0d29yayxhcGlLZXkpfHx0aGlzO3JldHVybiBfdGhpc31Qb2NrZXRQcm92aWRlci5nZXRBcGlLZXk9ZnVuY3Rpb24oYXBpS2V5KXtpZihhcGlLZXk9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIlBvY2tldFByb3ZpZGVyLmdldEFwaUtleSBkb2VzIG5vdCBzdXBwb3J0IG51bGwgYXBpS2V5IiwiYXBpS2V5IixhcGlLZXkpfXZhciBhcGlLZXlPYmo9e2FwcGxpY2F0aW9uSWQ6bnVsbCxsb2FkQmFsYW5jZXI6ZmFsc2UsYXBwbGljYXRpb25TZWNyZXRLZXk6bnVsbH07aWYodHlwZW9mIGFwaUtleT09PSJzdHJpbmciKXthcGlLZXlPYmouYXBwbGljYXRpb25JZD1hcGlLZXl9ZWxzZSBpZihhcGlLZXkuYXBwbGljYXRpb25TZWNyZXRLZXkhPW51bGwpe2xvZ2dlci5hc3NlcnRBcmd1bWVudCh0eXBlb2YgYXBpS2V5LmFwcGxpY2F0aW9uSWQ9PT0ic3RyaW5nIiwiYXBwbGljYXRpb25TZWNyZXRLZXkgcmVxdWlyZXMgYW4gYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uSWQiLGFwaUtleS5hcHBsaWNhdGlvbklkKTtsb2dnZXIuYXNzZXJ0QXJndW1lbnQodHlwZW9mIGFwaUtleS5hcHBsaWNhdGlvblNlY3JldEtleT09PSJzdHJpbmciLCJpbnZhbGlkIGFwcGxpY2F0aW9uU2VjcmV0S2V5IiwiYXBwbGljYXRpb25TZWNyZXRLZXkiLCJbUkVEQUNURURdIik7YXBpS2V5T2JqLmFwcGxpY2F0aW9uSWQ9YXBpS2V5LmFwcGxpY2F0aW9uSWQ7YXBpS2V5T2JqLmFwcGxpY2F0aW9uU2VjcmV0S2V5PWFwaUtleS5hcHBsaWNhdGlvblNlY3JldEtleTthcGlLZXlPYmoubG9hZEJhbGFuY2VyPSEhYXBpS2V5LmxvYWRCYWxhbmNlcn1lbHNlIGlmKGFwaUtleS5hcHBsaWNhdGlvbklkKXtsb2dnZXIuYXNzZXJ0QXJndW1lbnQodHlwZW9mIGFwaUtleS5hcHBsaWNhdGlvbklkPT09InN0cmluZyIsImFwaUtleS5hcHBsaWNhdGlvbklkIG11c3QgYmUgYSBzdHJpbmciLCJhcGlLZXkuYXBwbGljYXRpb25JZCIsYXBpS2V5LmFwcGxpY2F0aW9uSWQpO2FwaUtleU9iai5hcHBsaWNhdGlvbklkPWFwaUtleS5hcHBsaWNhdGlvbklkO2FwaUtleU9iai5sb2FkQmFsYW5jZXI9ISFhcGlLZXkubG9hZEJhbGFuY2VyfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgUG9ja2V0UHJvdmlkZXIgYXBpS2V5IiwiYXBpS2V5IixhcGlLZXkpfXJldHVybiBhcGlLZXlPYmp9O1BvY2tldFByb3ZpZGVyLmdldFVybD1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7dmFyIGhvc3Q9bnVsbDtzd2l0Y2gobmV0d29yaz9uZXR3b3JrLm5hbWU6InVua25vd24iKXtjYXNlImhvbWVzdGVhZCI6aG9zdD0iZXRoLW1haW5uZXQuZ2F0ZXdheS5wb2t0Lm5ldHdvcmsiO2JyZWFrO2Nhc2Uicm9wc3RlbiI6aG9zdD0iZXRoLXJvcHN0ZW4uZ2F0ZXdheS5wb2t0Lm5ldHdvcmsiO2JyZWFrO2Nhc2Uicmlua2VieSI6aG9zdD0iZXRoLXJpbmtlYnkuZ2F0ZXdheS5wb2t0Lm5ldHdvcmsiO2JyZWFrO2Nhc2UiZ29lcmxpIjpob3N0PSJldGgtZ29lcmxpLmdhdGV3YXkucG9rdC5uZXR3b3JrIjticmVhaztkZWZhdWx0OmxvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCBuZXR3b3JrIixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoibmV0d29yayIsdmFsdWU6bmV0d29ya30pfXZhciB1cmw9bnVsbDtpZihhcGlLZXkubG9hZEJhbGFuY2VyKXt1cmw9Imh0dHBzOi8vIitob3N0KyIvdjEvbGIvIithcGlLZXkuYXBwbGljYXRpb25JZH1lbHNle3VybD0iaHR0cHM6Ly8iK2hvc3QrIi92MS8iK2FwaUtleS5hcHBsaWNhdGlvbklkfXZhciBjb25uZWN0aW9uPXt1cmw6dXJsfTtjb25uZWN0aW9uLmhlYWRlcnM9e307aWYoYXBpS2V5LmFwcGxpY2F0aW9uU2VjcmV0S2V5IT1udWxsKXtjb25uZWN0aW9uLnVzZXI9IiI7Y29ubmVjdGlvbi5wYXNzd29yZD1hcGlLZXkuYXBwbGljYXRpb25TZWNyZXRLZXl9cmV0dXJuIGNvbm5lY3Rpb259O1BvY2tldFByb3ZpZGVyLnByb3RvdHlwZS5pc0NvbW11bml0eVJlc291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwbGljYXRpb25JZD09PWRlZmF1bHRBcHBsaWNhdGlvbklkc1t0aGlzLm5ldHdvcmsubmFtZV19O3JldHVybiBQb2NrZXRQcm92aWRlcn0odXJsSnNvblJwY1Byb3ZpZGVyLlVybEpzb25ScGNQcm92aWRlcik7ZXhwb3J0cy5Qb2NrZXRQcm92aWRlcj1Qb2NrZXRQcm92aWRlcn0pO3ZhciBwb2NrZXRQcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHBvY2tldFByb3ZpZGVyKTt2YXIgd2ViM1Byb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuV2ViM1Byb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIF9uZXh0SWQ9MTtmdW5jdGlvbiBidWlsZFdlYjNMZWdhY3lGZXRjaGVyKHByb3ZpZGVyLHNlbmRGdW5jKXt2YXIgZmV0Y2hlcj0iV2ViM0xlZ2FjeUZldGNoZXIiO3JldHVybiBmdW5jdGlvbihtZXRob2QscGFyYW1zKXt2YXIgX3RoaXM9dGhpcztpZihtZXRob2Q9PSJldGhfc2lnbiImJihwcm92aWRlci5pc01ldGFNYXNrfHxwcm92aWRlci5pc1N0YXR1cykpe21ldGhvZD0icGVyc29uYWxfc2lnbiI7cGFyYW1zPVtwYXJhbXNbMV0scGFyYW1zWzBdXX12YXIgcmVxdWVzdD17bWV0aG9kOm1ldGhvZCxwYXJhbXM6cGFyYW1zLGlkOl9uZXh0SWQrKyxqc29ucnBjOiIyLjAifTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXF1ZXN0IixmZXRjaGVyOmZldGNoZXIscmVxdWVzdDpsaWIkMy5kZWVwQ29weShyZXF1ZXN0KSxwcm92aWRlcjpfdGhpc30pO3NlbmRGdW5jKHJlcXVlc3QsZnVuY3Rpb24oZXJyb3IscmVzcG9uc2Upe2lmKGVycm9yKXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLGZldGNoZXI6ZmV0Y2hlcixlcnJvcjplcnJvcixyZXF1ZXN0OnJlcXVlc3QscHJvdmlkZXI6X3RoaXN9KTtyZXR1cm4gcmVqZWN0KGVycm9yKX1fdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLGZldGNoZXI6ZmV0Y2hlcixyZXF1ZXN0OnJlcXVlc3QscmVzcG9uc2U6cmVzcG9uc2UscHJvdmlkZXI6X3RoaXN9KTtpZihyZXNwb25zZS5lcnJvcil7dmFyIGVycm9yXzE9bmV3IEVycm9yKHJlc3BvbnNlLmVycm9yLm1lc3NhZ2UpO2Vycm9yXzEuY29kZT1yZXNwb25zZS5lcnJvci5jb2RlO2Vycm9yXzEuZGF0YT1yZXNwb25zZS5lcnJvci5kYXRhO3JldHVybiByZWplY3QoZXJyb3JfMSl9cmVzb2x2ZShyZXNwb25zZS5yZXN1bHQpfSl9KX19ZnVuY3Rpb24gYnVpbGRFaXAxMTkzRmV0Y2hlcihwcm92aWRlcil7cmV0dXJuIGZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3ZhciBfdGhpcz10aGlzO2lmKHBhcmFtcz09bnVsbCl7cGFyYW1zPVtdfWlmKG1ldGhvZD09ImV0aF9zaWduIiYmKHByb3ZpZGVyLmlzTWV0YU1hc2t8fHByb3ZpZGVyLmlzU3RhdHVzKSl7bWV0aG9kPSJwZXJzb25hbF9zaWduIjtwYXJhbXM9W3BhcmFtc1sxXSxwYXJhbXNbMF1dfXZhciByZXF1ZXN0PXttZXRob2Q6bWV0aG9kLHBhcmFtczpwYXJhbXN9O3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLGZldGNoZXI6IkVpcDExOTNGZXRjaGVyIixyZXF1ZXN0OmxpYiQzLmRlZXBDb3B5KHJlcXVlc3QpLHByb3ZpZGVyOnRoaXN9KTtyZXR1cm4gcHJvdmlkZXIucmVxdWVzdChyZXF1ZXN0KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLGZldGNoZXI6IkVpcDExOTNGZXRjaGVyIixyZXF1ZXN0OnJlcXVlc3QscmVzcG9uc2U6cmVzcG9uc2UscHJvdmlkZXI6X3RoaXN9KTtyZXR1cm4gcmVzcG9uc2V9LGZ1bmN0aW9uKGVycm9yKXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLGZldGNoZXI6IkVpcDExOTNGZXRjaGVyIixyZXF1ZXN0OnJlcXVlc3QsZXJyb3I6ZXJyb3IscHJvdmlkZXI6X3RoaXN9KTt0aHJvdyBlcnJvcn0pfX12YXIgV2ViM1Byb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFdlYjNQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIFdlYjNQcm92aWRlcihwcm92aWRlcixuZXR3b3JrKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO2xvZ2dlci5jaGVja05ldyhfbmV3VGFyZ2V0LFdlYjNQcm92aWRlcik7aWYocHJvdmlkZXI9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgcHJvdmlkZXIiLCJwcm92aWRlciIscHJvdmlkZXIpfXZhciBwYXRoPW51bGw7dmFyIGpzb25ScGNGZXRjaEZ1bmM9bnVsbDt2YXIgc3VicHJvdmlkZXI9bnVsbDtpZih0eXBlb2YgcHJvdmlkZXI9PT0iZnVuY3Rpb24iKXtwYXRoPSJ1bmtub3duOiI7anNvblJwY0ZldGNoRnVuYz1wcm92aWRlcn1lbHNle3BhdGg9cHJvdmlkZXIuaG9zdHx8cHJvdmlkZXIucGF0aHx8IiI7aWYoIXBhdGgmJnByb3ZpZGVyLmlzTWV0YU1hc2spe3BhdGg9Im1ldGFtYXNrIn1zdWJwcm92aWRlcj1wcm92aWRlcjtpZihwcm92aWRlci5yZXF1ZXN0KXtpZihwYXRoPT09IiIpe3BhdGg9ImVpcC0xMTkzOiJ9anNvblJwY0ZldGNoRnVuYz1idWlsZEVpcDExOTNGZXRjaGVyKHByb3ZpZGVyKX1lbHNlIGlmKHByb3ZpZGVyLnNlbmRBc3luYyl7anNvblJwY0ZldGNoRnVuYz1idWlsZFdlYjNMZWdhY3lGZXRjaGVyKHByb3ZpZGVyLHByb3ZpZGVyLnNlbmRBc3luYy5iaW5kKHByb3ZpZGVyKSl9ZWxzZSBpZihwcm92aWRlci5zZW5kKXtqc29uUnBjRmV0Y2hGdW5jPWJ1aWxkV2ViM0xlZ2FjeUZldGNoZXIocHJvdmlkZXIscHJvdmlkZXIuc2VuZC5iaW5kKHByb3ZpZGVyKSl9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCBwcm92aWRlciIsInByb3ZpZGVyIixwcm92aWRlcil9aWYoIXBhdGgpe3BhdGg9InVua25vd246In19X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxwYXRoLG5ldHdvcmspfHx0aGlzO2xpYiQzLmRlZmluZVJlYWRPbmx5KF90aGlzLCJqc29uUnBjRmV0Y2hGdW5jIixqc29uUnBjRmV0Y2hGdW5jKTtsaWIkMy5kZWZpbmVSZWFkT25seShfdGhpcywicHJvdmlkZXIiLHN1YnByb3ZpZGVyKTtyZXR1cm4gX3RoaXN9V2ViM1Byb3ZpZGVyLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3JldHVybiB0aGlzLmpzb25ScGNGZXRjaEZ1bmMobWV0aG9kLHBhcmFtcyl9O3JldHVybiBXZWIzUHJvdmlkZXJ9KGpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuV2ViM1Byb3ZpZGVyPVdlYjNQcm92aWRlcn0pO3ZhciB3ZWIzUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh3ZWIzUHJvdmlkZXIpO3ZhciBsaWIkcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRm9ybWF0dGVyPWV4cG9ydHMuc2hvd1Rocm90dGxlTWVzc2FnZT1leHBvcnRzLmlzQ29tbXVuaXR5UmVzb3VyY2FibGU9ZXhwb3J0cy5pc0NvbW11bml0eVJlc291cmNlPWV4cG9ydHMuZ2V0TmV0d29yaz1leHBvcnRzLmdldERlZmF1bHRQcm92aWRlcj1leHBvcnRzLkpzb25ScGNTaWduZXI9ZXhwb3J0cy5JcGNQcm92aWRlcj1leHBvcnRzLldlYlNvY2tldFByb3ZpZGVyPWV4cG9ydHMuV2ViM1Byb3ZpZGVyPWV4cG9ydHMuU3RhdGljSnNvblJwY1Byb3ZpZGVyPWV4cG9ydHMuUG9ja2V0UHJvdmlkZXI9ZXhwb3J0cy5Ob2Rlc21pdGhQcm92aWRlcj1leHBvcnRzLkpzb25ScGNCYXRjaFByb3ZpZGVyPWV4cG9ydHMuSnNvblJwY1Byb3ZpZGVyPWV4cG9ydHMuSW5mdXJhV2ViU29ja2V0UHJvdmlkZXI9ZXhwb3J0cy5JbmZ1cmFQcm92aWRlcj1leHBvcnRzLkV0aGVyc2NhblByb3ZpZGVyPWV4cG9ydHMuQ2xvdWRmbGFyZVByb3ZpZGVyPWV4cG9ydHMuQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyPWV4cG9ydHMuQWxjaGVteVByb3ZpZGVyPWV4cG9ydHMuRmFsbGJhY2tQcm92aWRlcj1leHBvcnRzLlVybEpzb25ScGNQcm92aWRlcj1leHBvcnRzLlJlc29sdmVyPWV4cG9ydHMuQmFzZVByb3ZpZGVyPWV4cG9ydHMuUHJvdmlkZXI9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGIuUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldE5ldHdvcmsiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRvLmdldE5ldHdvcmt9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkJhc2VQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYmFzZVByb3ZpZGVyLkJhc2VQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiUmVzb2x2ZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJhc2VQcm92aWRlci5SZXNvbHZlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQWxjaGVteVByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBhbGNoZW15UHJvdmlkZXIuQWxjaGVteVByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJBbGNoZW15V2ViU29ja2V0UHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFsY2hlbXlQcm92aWRlci5BbGNoZW15V2ViU29ja2V0UHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkNsb3VkZmxhcmVQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY2xvdWRmbGFyZVByb3ZpZGVyLkNsb3VkZmxhcmVQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRXRoZXJzY2FuUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc2NhblByb3ZpZGVyLkV0aGVyc2NhblByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGYWxsYmFja1Byb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmYWxsYmFja1Byb3ZpZGVyLkZhbGxiYWNrUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIklwY1Byb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VySXBjUHJvdmlkZXIuSXBjUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkluZnVyYVByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpbmZ1cmFQcm92aWRlci5JbmZ1cmFQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSW5mdXJhV2ViU29ja2V0UHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGluZnVyYVByb3ZpZGVyLkluZnVyYVdlYlNvY2tldFByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJKc29uUnBjUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkpzb25ScGNTaWduZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGpzb25ScGNQcm92aWRlci5Kc29uUnBjU2lnbmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJKc29uUnBjQmF0Y2hQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ganNvblJwY0JhdGNoUHJvdmlkZXIuSnNvblJwY0JhdGNoUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIk5vZGVzbWl0aFByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBub2Rlc21pdGhQcm92aWRlci5Ob2Rlc21pdGhQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiUG9ja2V0UHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHBvY2tldFByb3ZpZGVyLlBvY2tldFByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJTdGF0aWNKc29uUnBjUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHVybEpzb25ScGNQcm92aWRlci5TdGF0aWNKc29uUnBjUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlVybEpzb25ScGNQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXJsSnNvblJwY1Byb3ZpZGVyLlVybEpzb25ScGNQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiV2ViM1Byb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB3ZWIzUHJvdmlkZXIuV2ViM1Byb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJXZWJTb2NrZXRQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd2Vic29ja2V0UHJvdmlkZXIuV2ViU29ja2V0UHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkZvcm1hdHRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZm9ybWF0dGVyLkZvcm1hdHRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNDb21tdW5pdHlSZXNvdXJjYWJsZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZm9ybWF0dGVyLmlzQ29tbXVuaXR5UmVzb3VyY2FibGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlzQ29tbXVuaXR5UmVzb3VyY2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZvcm1hdHRlci5pc0NvbW11bml0eVJlc291cmNlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzaG93VGhyb3R0bGVNZXNzYWdlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmb3JtYXR0ZXIuc2hvd1Rocm90dGxlTWVzc2FnZX19KTt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7ZnVuY3Rpb24gZ2V0RGVmYXVsdFByb3ZpZGVyKG5ldHdvcmssb3B0aW9ucyl7aWYobmV0d29yaz09bnVsbCl7bmV0d29yaz0iaG9tZXN0ZWFkIn1pZih0eXBlb2YgbmV0d29yaz09PSJzdHJpbmciKXt2YXIgbWF0Y2g9bmV0d29yay5tYXRjaCgvXih3c3xodHRwKXM/Oi9pKTtpZihtYXRjaCl7c3dpdGNoKG1hdGNoWzFdKXtjYXNlImh0dHAiOnJldHVybiBuZXcganNvblJwY1Byb3ZpZGVyLkpzb25ScGNQcm92aWRlcihuZXR3b3JrKTtjYXNlIndzIjpyZXR1cm4gbmV3IHdlYnNvY2tldFByb3ZpZGVyLldlYlNvY2tldFByb3ZpZGVyKG5ldHdvcmspO2RlZmF1bHQ6bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgVVJMIHNjaGVtZSIsIm5ldHdvcmsiLG5ldHdvcmspfX19dmFyIG49bGliJG8uZ2V0TmV0d29yayhuZXR3b3JrKTtpZighbnx8IW4uX2RlZmF1bHRQcm92aWRlcil7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIGdldERlZmF1bHRQcm92aWRlciBuZXR3b3JrIixsaWIuTG9nZ2VyLmVycm9ycy5ORVRXT1JLX0VSUk9SLHtvcGVyYXRpb246ImdldERlZmF1bHRQcm92aWRlciIsbmV0d29yazpuZXR3b3JrfSl9cmV0dXJuIG4uX2RlZmF1bHRQcm92aWRlcih7RmFsbGJhY2tQcm92aWRlcjpmYWxsYmFja1Byb3ZpZGVyLkZhbGxiYWNrUHJvdmlkZXIsQWxjaGVteVByb3ZpZGVyOmFsY2hlbXlQcm92aWRlci5BbGNoZW15UHJvdmlkZXIsQ2xvdWRmbGFyZVByb3ZpZGVyOmNsb3VkZmxhcmVQcm92aWRlci5DbG91ZGZsYXJlUHJvdmlkZXIsRXRoZXJzY2FuUHJvdmlkZXI6ZXRoZXJzY2FuUHJvdmlkZXIuRXRoZXJzY2FuUHJvdmlkZXIsSW5mdXJhUHJvdmlkZXI6aW5mdXJhUHJvdmlkZXIuSW5mdXJhUHJvdmlkZXIsSnNvblJwY1Byb3ZpZGVyOmpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIsTm9kZXNtaXRoUHJvdmlkZXI6bm9kZXNtaXRoUHJvdmlkZXIuTm9kZXNtaXRoUHJvdmlkZXIsUG9ja2V0UHJvdmlkZXI6cG9ja2V0UHJvdmlkZXIuUG9ja2V0UHJvdmlkZXIsV2ViM1Byb3ZpZGVyOndlYjNQcm92aWRlci5XZWIzUHJvdmlkZXIsSXBjUHJvdmlkZXI6YnJvd3NlcklwY1Byb3ZpZGVyLklwY1Byb3ZpZGVyfSxvcHRpb25zKX1leHBvcnRzLmdldERlZmF1bHRQcm92aWRlcj1nZXREZWZhdWx0UHJvdmlkZXJ9KTt2YXIgaW5kZXgkcj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkcik7dmFyIGxpYiRzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5zaGEyNTY9ZXhwb3J0cy5rZWNjYWsyNTY9ZXhwb3J0cy5wYWNrPXZvaWQgMDt2YXIgcmVnZXhCeXRlcz1uZXcgUmVnRXhwKCJeYnl0ZXMoWzAtOV0rKSQiKTt2YXIgcmVnZXhOdW1iZXI9bmV3IFJlZ0V4cCgiXih1P2ludCkoWzAtOV0qKSQiKTt2YXIgcmVnZXhBcnJheT1uZXcgUmVnRXhwKCJeKC4qKVxcWyhbMC05XSopXFxdJCIpO3ZhciBaZXJvcz0iMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7ZnVuY3Rpb24gX3BhY2sodHlwZSx2YWx1ZSxpc0FycmF5KXtzd2l0Y2godHlwZSl7Y2FzZSJhZGRyZXNzIjppZihpc0FycmF5KXtyZXR1cm4gbGliJDEuemVyb1BhZCh2YWx1ZSwzMil9cmV0dXJuIGxpYiQxLmFycmF5aWZ5KHZhbHVlKTtjYXNlInN0cmluZyI6cmV0dXJuIGxpYiQ4LnRvVXRmOEJ5dGVzKHZhbHVlKTtjYXNlImJ5dGVzIjpyZXR1cm4gbGliJDEuYXJyYXlpZnkodmFsdWUpO2Nhc2UiYm9vbCI6dmFsdWU9dmFsdWU/IjB4MDEiOiIweDAwIjtpZihpc0FycmF5KXtyZXR1cm4gbGliJDEuemVyb1BhZCh2YWx1ZSwzMil9cmV0dXJuIGxpYiQxLmFycmF5aWZ5KHZhbHVlKX12YXIgbWF0Y2g9dHlwZS5tYXRjaChyZWdleE51bWJlcik7aWYobWF0Y2gpe3ZhciBzaXplPXBhcnNlSW50KG1hdGNoWzJdfHwiMjU2Iik7aWYobWF0Y2hbMl0mJlN0cmluZyhzaXplKSE9PW1hdGNoWzJdfHxzaXplJTghPT0wfHxzaXplPT09MHx8c2l6ZT4yNTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBudW1iZXIgdHlwZSAtICIrdHlwZSl9aWYoaXNBcnJheSl7c2l6ZT0yNTZ9dmFsdWU9bGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUpLnRvVHdvcyhzaXplKTtyZXR1cm4gbGliJDEuemVyb1BhZCh2YWx1ZSxzaXplLzgpfW1hdGNoPXR5cGUubWF0Y2gocmVnZXhCeXRlcyk7aWYobWF0Y2gpe3ZhciBzaXplPXBhcnNlSW50KG1hdGNoWzFdKTtpZihTdHJpbmcoc2l6ZSkhPT1tYXRjaFsxXXx8c2l6ZT09PTB8fHNpemU+MzIpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBieXRlcyB0eXBlIC0gIit0eXBlKX1pZihsaWIkMS5hcnJheWlmeSh2YWx1ZSkuYnl0ZUxlbmd0aCE9PXNpemUpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgIit0eXBlKX1pZihpc0FycmF5KXtyZXR1cm4gbGliJDEuYXJyYXlpZnkoKHZhbHVlK1plcm9zKS5zdWJzdHJpbmcoMCw2NikpfXJldHVybiB2YWx1ZX1tYXRjaD10eXBlLm1hdGNoKHJlZ2V4QXJyYXkpO2lmKG1hdGNoJiZBcnJheS5pc0FycmF5KHZhbHVlKSl7dmFyIGJhc2VUeXBlXzE9bWF0Y2hbMV07dmFyIGNvdW50PXBhcnNlSW50KG1hdGNoWzJdfHxTdHJpbmcodmFsdWUubGVuZ3RoKSk7aWYoY291bnQhPXZhbHVlLmxlbmd0aCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHZhbHVlIGZvciAiK3R5cGUpfXZhciByZXN1bHRfMT1bXTt2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtyZXN1bHRfMS5wdXNoKF9wYWNrKGJhc2VUeXBlXzEsdmFsdWUsdHJ1ZSkpfSk7cmV0dXJuIGxpYiQxLmNvbmNhdChyZXN1bHRfMSl9dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHR5cGUgLSAiK3R5cGUpfWZ1bmN0aW9uIHBhY2sodHlwZXMsdmFsdWVzKXtpZih0eXBlcy5sZW5ndGghPXZhbHVlcy5sZW5ndGgpe3Rocm93IG5ldyBFcnJvcigidHlwZS92YWx1ZSBjb3VudCBtaXNtYXRjaCIpfXZhciB0aWdodD1bXTt0eXBlcy5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsaW5kZXgpe3RpZ2h0LnB1c2goX3BhY2sodHlwZSx2YWx1ZXNbaW5kZXhdKSl9KTtyZXR1cm4gbGliJDEuaGV4bGlmeShsaWIkMS5jb25jYXQodGlnaHQpKX1leHBvcnRzLnBhY2s9cGFjaztmdW5jdGlvbiBrZWNjYWsyNTYodHlwZXMsdmFsdWVzKXtyZXR1cm4gbGliJDQua2VjY2FrMjU2KHBhY2sodHlwZXMsdmFsdWVzKSl9ZXhwb3J0cy5rZWNjYWsyNTY9a2VjY2FrMjU2O2Z1bmN0aW9uIHNoYTI1Nih0eXBlcyx2YWx1ZXMpe3JldHVybiBsaWIkaC5zaGEyNTYocGFjayh0eXBlcyx2YWx1ZXMpKX1leHBvcnRzLnNoYTI1Nj1zaGEyNTZ9KTt2YXIgaW5kZXgkcz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkcyk7dmFyIF92ZXJzaW9uJEs9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0idW5pdHMvNS4yLjAifSk7dmFyIF92ZXJzaW9uJEw9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kSyk7dmFyIGxpYiR0PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5wYXJzZUV0aGVyPWV4cG9ydHMuZm9ybWF0RXRoZXI9ZXhwb3J0cy5wYXJzZVVuaXRzPWV4cG9ydHMuZm9ybWF0VW5pdHM9ZXhwb3J0cy5jb21taWZ5PXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEsudmVyc2lvbik7dmFyIG5hbWVzPVsid2VpIiwia3dlaSIsIm13ZWkiLCJnd2VpIiwic3phYm8iLCJmaW5uZXkiLCJldGhlciJdO2Z1bmN0aW9uIGNvbW1pZnkodmFsdWUpe3ZhciBjb21wcz1TdHJpbmcodmFsdWUpLnNwbGl0KCIuIik7aWYoY29tcHMubGVuZ3RoPjJ8fCFjb21wc1swXS5tYXRjaCgvXi0/WzAtOV0qJC8pfHxjb21wc1sxXSYmIWNvbXBzWzFdLm1hdGNoKC9eWzAtOV0qJC8pfHx2YWx1ZT09PSIuInx8dmFsdWU9PT0iLS4iKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHZhbHVlIiwidmFsdWUiLHZhbHVlKX12YXIgd2hvbGU9Y29tcHNbMF07dmFyIG5lZ2F0aXZlPSIiO2lmKHdob2xlLnN1YnN0cmluZygwLDEpPT09Ii0iKXtuZWdhdGl2ZT0iLSI7d2hvbGU9d2hvbGUuc3Vic3RyaW5nKDEpfXdoaWxlKHdob2xlLnN1YnN0cmluZygwLDEpPT09IjAiKXt3aG9sZT13aG9sZS5zdWJzdHJpbmcoMSl9aWYod2hvbGU9PT0iIil7d2hvbGU9IjAifXZhciBzdWZmaXg9IiI7aWYoY29tcHMubGVuZ3RoPT09Mil7c3VmZml4PSIuIisoY29tcHNbMV18fCIwIil9d2hpbGUoc3VmZml4Lmxlbmd0aD4yJiZzdWZmaXhbc3VmZml4Lmxlbmd0aC0xXT09PSIwIil7c3VmZml4PXN1ZmZpeC5zdWJzdHJpbmcoMCxzdWZmaXgubGVuZ3RoLTEpfXZhciBmb3JtYXR0ZWQ9W107d2hpbGUod2hvbGUubGVuZ3RoKXtpZih3aG9sZS5sZW5ndGg8PTMpe2Zvcm1hdHRlZC51bnNoaWZ0KHdob2xlKTticmVha31lbHNle3ZhciBpbmRleD13aG9sZS5sZW5ndGgtMztmb3JtYXR0ZWQudW5zaGlmdCh3aG9sZS5zdWJzdHJpbmcoaW5kZXgpKTt3aG9sZT13aG9sZS5zdWJzdHJpbmcoMCxpbmRleCl9fXJldHVybiBuZWdhdGl2ZStmb3JtYXR0ZWQuam9pbigiLCIpK3N1ZmZpeH1leHBvcnRzLmNvbW1pZnk9Y29tbWlmeTtmdW5jdGlvbiBmb3JtYXRVbml0cyh2YWx1ZSx1bml0TmFtZSl7aWYodHlwZW9mIHVuaXROYW1lPT09InN0cmluZyIpe3ZhciBpbmRleD1uYW1lcy5pbmRleE9mKHVuaXROYW1lKTtpZihpbmRleCE9PS0xKXt1bml0TmFtZT0zKmluZGV4fX1yZXR1cm4gbGliJDIuZm9ybWF0Rml4ZWQodmFsdWUsdW5pdE5hbWUhPW51bGw/dW5pdE5hbWU6MTgpfWV4cG9ydHMuZm9ybWF0VW5pdHM9Zm9ybWF0VW5pdHM7ZnVuY3Rpb24gcGFyc2VVbml0cyh2YWx1ZSx1bml0TmFtZSl7aWYodHlwZW9mIHZhbHVlIT09InN0cmluZyIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInZhbHVlIG11c3QgYmUgYSBzdHJpbmciLCJ2YWx1ZSIsdmFsdWUpfWlmKHR5cGVvZiB1bml0TmFtZT09PSJzdHJpbmciKXt2YXIgaW5kZXg9bmFtZXMuaW5kZXhPZih1bml0TmFtZSk7aWYoaW5kZXghPT0tMSl7dW5pdE5hbWU9MyppbmRleH19cmV0dXJuIGxpYiQyLnBhcnNlRml4ZWQodmFsdWUsdW5pdE5hbWUhPW51bGw/dW5pdE5hbWU6MTgpfWV4cG9ydHMucGFyc2VVbml0cz1wYXJzZVVuaXRzO2Z1bmN0aW9uIGZvcm1hdEV0aGVyKHdlaSl7cmV0dXJuIGZvcm1hdFVuaXRzKHdlaSwxOCl9ZXhwb3J0cy5mb3JtYXRFdGhlcj1mb3JtYXRFdGhlcjtmdW5jdGlvbiBwYXJzZUV0aGVyKGV0aGVyKXtyZXR1cm4gcGFyc2VVbml0cyhldGhlciwxOCl9ZXhwb3J0cy5wYXJzZUV0aGVyPXBhcnNlRXRoZXJ9KTt2YXIgaW5kZXgkdD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkdCk7dmFyIHV0aWxzJDM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19jcmVhdGVCaW5kaW5nPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG8sbSxrLGsyKXtpZihrMj09PXVuZGVmaW5lZClrMj1rO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLGsyLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG1ba119fSl9OmZ1bmN0aW9uKG8sbSxrLGsyKXtpZihrMj09PXVuZGVmaW5lZClrMj1rO29bazJdPW1ba119KTt2YXIgX19zZXRNb2R1bGVEZWZhdWx0PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG8sdil7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImRlZmF1bHQiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dn0pfTpmdW5jdGlvbihvLHYpe29bImRlZmF1bHQiXT12fSk7dmFyIF9faW1wb3J0U3Rhcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihtb2Qpe2lmKG1vZCYmbW9kLl9fZXNNb2R1bGUpcmV0dXJuIG1vZDt2YXIgcmVzdWx0PXt9O2lmKG1vZCE9bnVsbClmb3IodmFyIGsgaW4gbW9kKWlmKGshPT0iZGVmYXVsdCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsaykpX19jcmVhdGVCaW5kaW5nKHJlc3VsdCxtb2Qsayk7X19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCxtb2QpO3JldHVybiByZXN1bHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPWV4cG9ydHMuZm9ybWF0Qnl0ZXMzMlN0cmluZz1leHBvcnRzLlV0ZjhFcnJvckZ1bmNzPWV4cG9ydHMudG9VdGY4U3RyaW5nPWV4cG9ydHMudG9VdGY4Q29kZVBvaW50cz1leHBvcnRzLnRvVXRmOEJ5dGVzPWV4cG9ydHMuX3RvRXNjYXBlZFV0ZjhTdHJpbmc9ZXhwb3J0cy5uYW1lcHJlcD1leHBvcnRzLmhleERhdGFTbGljZT1leHBvcnRzLmhleERhdGFMZW5ndGg9ZXhwb3J0cy5oZXhaZXJvUGFkPWV4cG9ydHMuaGV4VmFsdWU9ZXhwb3J0cy5oZXhTdHJpcFplcm9zPWV4cG9ydHMuaGV4Q29uY2F0PWV4cG9ydHMuaXNIZXhTdHJpbmc9ZXhwb3J0cy5oZXhsaWZ5PWV4cG9ydHMuYmFzZTY0PWV4cG9ydHMuYmFzZTU4PWV4cG9ydHMuVHJhbnNhY3Rpb25EZXNjcmlwdGlvbj1leHBvcnRzLkxvZ0Rlc2NyaXB0aW9uPWV4cG9ydHMuSW50ZXJmYWNlPWV4cG9ydHMuU2lnbmluZ0tleT1leHBvcnRzLkhETm9kZT1leHBvcnRzLmRlZmF1bHRQYXRoPWV4cG9ydHMuaXNCeXRlc0xpa2U9ZXhwb3J0cy5pc0J5dGVzPWV4cG9ydHMuemVyb1BhZD1leHBvcnRzLnN0cmlwWmVyb3M9ZXhwb3J0cy5jb25jYXQ9ZXhwb3J0cy5hcnJheWlmeT1leHBvcnRzLnNoYWxsb3dDb3B5PWV4cG9ydHMucmVzb2x2ZVByb3BlcnRpZXM9ZXhwb3J0cy5nZXRTdGF0aWM9ZXhwb3J0cy5kZWZpbmVSZWFkT25seT1leHBvcnRzLmRlZXBDb3B5PWV4cG9ydHMuY2hlY2tQcm9wZXJ0aWVzPWV4cG9ydHMucG9sbD1leHBvcnRzLmZldGNoSnNvbj1leHBvcnRzLl9mZXRjaERhdGE9ZXhwb3J0cy5STFA9ZXhwb3J0cy5Mb2dnZXI9ZXhwb3J0cy5jaGVja1Jlc3VsdEVycm9ycz1leHBvcnRzLkZvcm1hdFR5cGVzPWV4cG9ydHMuUGFyYW1UeXBlPWV4cG9ydHMuRnVuY3Rpb25GcmFnbWVudD1leHBvcnRzLkV2ZW50RnJhZ21lbnQ9ZXhwb3J0cy5FcnJvckZyYWdtZW50PWV4cG9ydHMuRnJhZ21lbnQ9ZXhwb3J0cy5kZWZhdWx0QWJpQ29kZXI9ZXhwb3J0cy5BYmlDb2Rlcj12b2lkIDA7ZXhwb3J0cy5JbmRleGVkPWV4cG9ydHMuVXRmOEVycm9yUmVhc29uPWV4cG9ydHMuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtPWV4cG9ydHMuU3VwcG9ydGVkQWxnb3JpdGhtPWV4cG9ydHMubW5lbW9uaWNUb1NlZWQ9ZXhwb3J0cy5pc1ZhbGlkTW5lbW9uaWM9ZXhwb3J0cy5lbnRyb3B5VG9NbmVtb25pYz1leHBvcnRzLm1uZW1vbmljVG9FbnRyb3B5PWV4cG9ydHMuZ2V0QWNjb3VudFBhdGg9ZXhwb3J0cy52ZXJpZnlUeXBlZERhdGE9ZXhwb3J0cy52ZXJpZnlNZXNzYWdlPWV4cG9ydHMucmVjb3ZlclB1YmxpY0tleT1leHBvcnRzLmNvbXB1dGVQdWJsaWNLZXk9ZXhwb3J0cy5yZWNvdmVyQWRkcmVzcz1leHBvcnRzLmNvbXB1dGVBZGRyZXNzPWV4cG9ydHMuZ2V0SnNvbldhbGxldEFkZHJlc3M9ZXhwb3J0cy5zZXJpYWxpemVUcmFuc2FjdGlvbj1leHBvcnRzLnBhcnNlVHJhbnNhY3Rpb249ZXhwb3J0cy5hY2Nlc3NMaXN0aWZ5PWV4cG9ydHMuam9pblNpZ25hdHVyZT1leHBvcnRzLnNwbGl0U2lnbmF0dXJlPWV4cG9ydHMuc29saWRpdHlTaGEyNTY9ZXhwb3J0cy5zb2xpZGl0eUtlY2NhazI1Nj1leHBvcnRzLnNvbGlkaXR5UGFjaz1leHBvcnRzLnNodWZmbGVkPWV4cG9ydHMucmFuZG9tQnl0ZXM9ZXhwb3J0cy5zaGE1MTI9ZXhwb3J0cy5zaGEyNTY9ZXhwb3J0cy5yaXBlbWQxNjA9ZXhwb3J0cy5rZWNjYWsyNTY9ZXhwb3J0cy5jb21wdXRlSG1hYz1leHBvcnRzLmNvbW1pZnk9ZXhwb3J0cy5wYXJzZVVuaXRzPWV4cG9ydHMuZm9ybWF0VW5pdHM9ZXhwb3J0cy5wYXJzZUV0aGVyPWV4cG9ydHMuZm9ybWF0RXRoZXI9ZXhwb3J0cy5pc0FkZHJlc3M9ZXhwb3J0cy5nZXRDcmVhdGUyQWRkcmVzcz1leHBvcnRzLmdldENvbnRyYWN0QWRkcmVzcz1leHBvcnRzLmdldEljYXBBZGRyZXNzPWV4cG9ydHMuZ2V0QWRkcmVzcz1leHBvcnRzLl9UeXBlZERhdGFFbmNvZGVyPWV4cG9ydHMuaWQ9ZXhwb3J0cy5pc1ZhbGlkTmFtZT1leHBvcnRzLm5hbWVoYXNoPWV4cG9ydHMuaGFzaE1lc3NhZ2U9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJBYmlDb2RlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGEuQWJpQ29kZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNoZWNrUmVzdWx0RXJyb3JzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYS5jaGVja1Jlc3VsdEVycm9yc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZGVmYXVsdEFiaUNvZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYS5kZWZhdWx0QWJpQ29kZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkVycm9yRnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRhLkVycm9yRnJhZ21lbnR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkV2ZW50RnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRhLkV2ZW50RnJhZ21lbnR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkZvcm1hdFR5cGVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYS5Gb3JtYXRUeXBlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRhLkZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGdW5jdGlvbkZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYS5GdW5jdGlvbkZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJJbmRleGVkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYS5JbmRleGVkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJJbnRlcmZhY2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRhLkludGVyZmFjZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiTG9nRGVzY3JpcHRpb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRhLkxvZ0Rlc2NyaXB0aW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJQYXJhbVR5cGUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRhLlBhcmFtVHlwZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVHJhbnNhY3Rpb25EZXNjcmlwdGlvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGEuVHJhbnNhY3Rpb25EZXNjcmlwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZ2V0QWRkcmVzcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDYuZ2V0QWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZ2V0Q3JlYXRlMkFkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ2LmdldENyZWF0ZTJBZGRyZXNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXRDb250cmFjdEFkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ2LmdldENvbnRyYWN0QWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZ2V0SWNhcEFkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ2LmdldEljYXBBZGRyZXNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc0FkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ2LmlzQWRkcmVzc319KTt2YXIgYmFzZTY0PV9faW1wb3J0U3RhcihsaWIkcCk7ZXhwb3J0cy5iYXNlNjQ9YmFzZTY0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJiYXNlNTgiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRnLkJhc2U1OH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiYXJyYXlpZnkiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmFycmF5aWZ5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjb25jYXQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmNvbmNhdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaGV4Q29uY2F0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5oZXhDb25jYXR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImhleERhdGFTbGljZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4RGF0YVNsaWNlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoZXhEYXRhTGVuZ3RoIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5oZXhEYXRhTGVuZ3RofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoZXhsaWZ5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5oZXhsaWZ5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoZXhTdHJpcFplcm9zIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5oZXhTdHJpcFplcm9zfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoZXhWYWx1ZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4VmFsdWV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImhleFplcm9QYWQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmhleFplcm9QYWR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlzQnl0ZXMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmlzQnl0ZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlzQnl0ZXNMaWtlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5pc0J5dGVzTGlrZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNIZXhTdHJpbmciLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmlzSGV4U3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJqb2luU2lnbmF0dXJlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5qb2luU2lnbmF0dXJlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ6ZXJvUGFkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS56ZXJvUGFkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzcGxpdFNpZ25hdHVyZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuc3BsaXRTaWduYXR1cmV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInN0cmlwWmVyb3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLnN0cmlwWmVyb3N9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9UeXBlZERhdGFFbmNvZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkOS5fVHlwZWREYXRhRW5jb2Rlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaGFzaE1lc3NhZ2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ5Lmhhc2hNZXNzYWdlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDkuaWR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlzVmFsaWROYW1lIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkOS5pc1ZhbGlkTmFtZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibmFtZWhhc2giLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ5Lm5hbWVoYXNofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkZWZhdWx0UGF0aCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGsuZGVmYXVsdFBhdGh9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImVudHJvcHlUb01uZW1vbmljIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkay5lbnRyb3B5VG9NbmVtb25pY319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZ2V0QWNjb3VudFBhdGgiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRrLmdldEFjY291bnRQYXRofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJIRE5vZGUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRrLkhETm9kZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNWYWxpZE1uZW1vbmljIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkay5pc1ZhbGlkTW5lbW9uaWN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIm1uZW1vbmljVG9FbnRyb3B5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkay5tbmVtb25pY1RvRW50cm9weX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibW5lbW9uaWNUb1NlZWQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRrLm1uZW1vbmljVG9TZWVkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXRKc29uV2FsbGV0QWRkcmVzcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG0uZ2V0SnNvbldhbGxldEFkZHJlc3N9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImtlY2NhazI1NiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDQua2VjY2FrMjU2fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJMb2dnZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYi5Mb2dnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNvbXB1dGVIbWFjIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkaC5jb21wdXRlSG1hY319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicmlwZW1kMTYwIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkaC5yaXBlbWQxNjB9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNoYTI1NiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGguc2hhMjU2fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzaGE1MTIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRoLnNoYTUxMn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic29saWRpdHlLZWNjYWsyNTYiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRzLmtlY2NhazI1Nn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic29saWRpdHlQYWNrIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkcy5wYWNrfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzb2xpZGl0eVNoYTI1NiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHMuc2hhMjU2fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJyYW5kb21CeXRlcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGwucmFuZG9tQnl0ZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNodWZmbGVkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkbC5zaHVmZmxlZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY2hlY2tQcm9wZXJ0aWVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMy5jaGVja1Byb3BlcnRpZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRlZXBDb3B5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMy5kZWVwQ29weX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZGVmaW5lUmVhZE9ubHkiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQzLmRlZmluZVJlYWRPbmx5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXRTdGF0aWMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQzLmdldFN0YXRpY319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicmVzb2x2ZVByb3BlcnRpZXMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzaGFsbG93Q29weSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDMuc2hhbGxvd0NvcHl9fSk7dmFyIFJMUD1fX2ltcG9ydFN0YXIobGliJDUpO2V4cG9ydHMuUkxQPVJMUDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY29tcHV0ZVB1YmxpY0tleSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuY29tcHV0ZVB1YmxpY0tleX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicmVjb3ZlclB1YmxpY0tleSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQucmVjb3ZlclB1YmxpY0tleX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiU2lnbmluZ0tleSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuU2lnbmluZ0tleX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZm9ybWF0Qnl0ZXMzMlN0cmluZyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDguZm9ybWF0Qnl0ZXMzMlN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibmFtZXByZXAiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ4Lm5hbWVwcmVwfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwYXJzZUJ5dGVzMzJTdHJpbmciLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ4LnBhcnNlQnl0ZXMzMlN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX3RvRXNjYXBlZFV0ZjhTdHJpbmciLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ4Ll90b0VzY2FwZWRVdGY4U3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ0b1V0ZjhCeXRlcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDgudG9VdGY4Qnl0ZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInRvVXRmOENvZGVQb2ludHMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ4LnRvVXRmOENvZGVQb2ludHN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInRvVXRmOFN0cmluZyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDgudG9VdGY4U3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJVdGY4RXJyb3JGdW5jcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDguVXRmOEVycm9yRnVuY3N9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImFjY2Vzc0xpc3RpZnkiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRlLmFjY2Vzc0xpc3RpZnl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNvbXB1dGVBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZS5jb21wdXRlQWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicGFyc2VUcmFuc2FjdGlvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGUucGFyc2V9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInJlY292ZXJBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZS5yZWNvdmVyQWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic2VyaWFsaXplVHJhbnNhY3Rpb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRlLnNlcmlhbGl6ZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY29tbWlmeSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHQuY29tbWlmeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZm9ybWF0RXRoZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiR0LmZvcm1hdEV0aGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwYXJzZUV0aGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkdC5wYXJzZUV0aGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJmb3JtYXRVbml0cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHQuZm9ybWF0VW5pdHN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInBhcnNlVW5pdHMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiR0LnBhcnNlVW5pdHN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInZlcmlmeU1lc3NhZ2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRuLnZlcmlmeU1lc3NhZ2V9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInZlcmlmeVR5cGVkRGF0YSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG4udmVyaWZ5VHlwZWREYXRhfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfZmV0Y2hEYXRhIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkcS5fZmV0Y2hEYXRhfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJmZXRjaEpzb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRxLmZldGNoSnNvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicG9sbCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHEucG9sbH19KTt2YXIgc2hhMl8yPWxpYiRoO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJTdXBwb3J0ZWRBbGdvcml0aG0iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHNoYTJfMi5TdXBwb3J0ZWRBbGdvcml0aG19fSk7dmFyIHN0cmluZ3NfMj1saWIkODtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzdHJpbmdzXzIuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJVdGY4RXJyb3JSZWFzb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN0cmluZ3NfMi5VdGY4RXJyb3JSZWFzb259fSl9KTt2YXIgdXRpbHMkND1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh1dGlscyQzKTt2YXIgX3ZlcnNpb24kTT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJldGhlcnMvNS4yLjAifSk7dmFyIF92ZXJzaW9uJE49Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kTSk7dmFyIGV0aGVycz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2NyZWF0ZUJpbmRpbmc9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sazIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbVtrXX19KX06ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7b1trMl09bVtrXX0pO3ZhciBfX3NldE1vZHVsZURlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyx2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiZGVmYXVsdCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp2fSl9OmZ1bmN0aW9uKG8sdil7b1siZGVmYXVsdCJdPXZ9KTt2YXIgX19pbXBvcnRTdGFyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKG1vZCl7aWYobW9kJiZtb2QuX19lc01vZHVsZSlyZXR1cm4gbW9kO3ZhciByZXN1bHQ9e307aWYobW9kIT1udWxsKWZvcih2YXIgayBpbiBtb2QpaWYoayE9PSJkZWZhdWx0IiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCxrKSlfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LG1vZCxrKTtfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LG1vZCk7cmV0dXJuIHJlc3VsdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5Xb3JkbGlzdD1leHBvcnRzLnZlcnNpb249ZXhwb3J0cy53b3JkbGlzdHM9ZXhwb3J0cy51dGlscz1leHBvcnRzLmxvZ2dlcj1leHBvcnRzLmVycm9ycz1leHBvcnRzLmNvbnN0YW50cz1leHBvcnRzLkZpeGVkTnVtYmVyPWV4cG9ydHMuQmlnTnVtYmVyPWV4cG9ydHMuQ29udHJhY3RGYWN0b3J5PWV4cG9ydHMuQ29udHJhY3Q9ZXhwb3J0cy5CYXNlQ29udHJhY3Q9ZXhwb3J0cy5wcm92aWRlcnM9ZXhwb3J0cy5nZXREZWZhdWx0UHJvdmlkZXI9ZXhwb3J0cy5Wb2lkU2lnbmVyPWV4cG9ydHMuV2FsbGV0PWV4cG9ydHMuU2lnbmVyPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQmFzZUNvbnRyYWN0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZi5CYXNlQ29udHJhY3R9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkNvbnRyYWN0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZi5Db250cmFjdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQ29udHJhY3RGYWN0b3J5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZi5Db250cmFjdEZhY3Rvcnl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkJpZ051bWJlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDIuQmlnTnVtYmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGaXhlZE51bWJlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDIuRml4ZWROdW1iZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlNpZ25lciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGMuU2lnbmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJWb2lkU2lnbmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYy5Wb2lkU2lnbmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJXYWxsZXQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRuLldhbGxldH19KTt2YXIgY29uc3RhbnRzPV9faW1wb3J0U3RhcihsaWIkNyk7ZXhwb3J0cy5jb25zdGFudHM9Y29uc3RhbnRzO3ZhciBwcm92aWRlcnM9X19pbXBvcnRTdGFyKGxpYiRyKTtleHBvcnRzLnByb3ZpZGVycz1wcm92aWRlcnM7dmFyIHByb3ZpZGVyc18xPWxpYiRyO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXREZWZhdWx0UHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHByb3ZpZGVyc18xLmdldERlZmF1bHRQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiV29yZGxpc3QiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRqLldvcmRsaXN0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ3b3JkbGlzdHMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRqLndvcmRsaXN0c319KTt2YXIgdXRpbHM9X19pbXBvcnRTdGFyKHV0aWxzJDMpO2V4cG9ydHMudXRpbHM9dXRpbHM7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImVycm9ycyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliLkVycm9yQ29kZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidmVyc2lvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX3ZlcnNpb24kTS52ZXJzaW9ufX0pO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kTS52ZXJzaW9uKTtleHBvcnRzLmxvZ2dlcj1sb2dnZXJ9KTt2YXIgZXRoZXJzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZXRoZXJzKTt2YXIgbGliJHU9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19jcmVhdGVCaW5kaW5nPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG8sbSxrLGsyKXtpZihrMj09PXVuZGVmaW5lZClrMj1rO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLGsyLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG1ba119fSl9OmZ1bmN0aW9uKG8sbSxrLGsyKXtpZihrMj09PXVuZGVmaW5lZClrMj1rO29bazJdPW1ba119KTt2YXIgX19zZXRNb2R1bGVEZWZhdWx0PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG8sdil7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImRlZmF1bHQiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dn0pfTpmdW5jdGlvbihvLHYpe29bImRlZmF1bHQiXT12fSk7dmFyIF9faW1wb3J0U3Rhcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihtb2Qpe2lmKG1vZCYmbW9kLl9fZXNNb2R1bGUpcmV0dXJuIG1vZDt2YXIgcmVzdWx0PXt9O2lmKG1vZCE9bnVsbClmb3IodmFyIGsgaW4gbW9kKWlmKGshPT0iZGVmYXVsdCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsaykpX19jcmVhdGVCaW5kaW5nKHJlc3VsdCxtb2Qsayk7X19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCxtb2QpO3JldHVybiByZXN1bHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuV29yZGxpc3Q9ZXhwb3J0cy52ZXJzaW9uPWV4cG9ydHMud29yZGxpc3RzPWV4cG9ydHMudXRpbHM9ZXhwb3J0cy5sb2dnZXI9ZXhwb3J0cy5lcnJvcnM9ZXhwb3J0cy5jb25zdGFudHM9ZXhwb3J0cy5GaXhlZE51bWJlcj1leHBvcnRzLkJpZ051bWJlcj1leHBvcnRzLkNvbnRyYWN0RmFjdG9yeT1leHBvcnRzLkNvbnRyYWN0PWV4cG9ydHMuQmFzZUNvbnRyYWN0PWV4cG9ydHMucHJvdmlkZXJzPWV4cG9ydHMuZ2V0RGVmYXVsdFByb3ZpZGVyPWV4cG9ydHMuVm9pZFNpZ25lcj1leHBvcnRzLldhbGxldD1leHBvcnRzLlNpZ25lcj1leHBvcnRzLmV0aGVycz12b2lkIDA7dmFyIGV0aGVycyQxPV9faW1wb3J0U3RhcihldGhlcnMpO2V4cG9ydHMuZXRoZXJzPWV0aGVycyQxO3RyeXt2YXIgYW55R2xvYmFsPXdpbmRvdztpZihhbnlHbG9iYWwuX2V0aGVycz09bnVsbCl7YW55R2xvYmFsLl9ldGhlcnM9ZXRoZXJzJDF9fWNhdGNoKGVycm9yKXt9dmFyIGV0aGVyc18xPWV0aGVycztPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiU2lnbmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5TaWduZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIldhbGxldCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuV2FsbGV0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJWb2lkU2lnbmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5Wb2lkU2lnbmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXREZWZhdWx0UHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLmdldERlZmF1bHRQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicHJvdmlkZXJzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5wcm92aWRlcnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkJhc2VDb250cmFjdCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuQmFzZUNvbnRyYWN0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJDb250cmFjdCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuQ29udHJhY3R9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkNvbnRyYWN0RmFjdG9yeSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuQ29udHJhY3RGYWN0b3J5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJCaWdOdW1iZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLkJpZ051bWJlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRml4ZWROdW1iZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLkZpeGVkTnVtYmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjb25zdGFudHMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLmNvbnN0YW50c319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZXJyb3JzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5lcnJvcnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImxvZ2dlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEubG9nZ2VyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ1dGlscyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEudXRpbHN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIndvcmRsaXN0cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEud29yZGxpc3RzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ2ZXJzaW9uIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS52ZXJzaW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJXb3JkbGlzdCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuV29yZGxpc3R9fSl9KTt2YXIgaW5kZXgkdT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkdSk7cmV0dXJuIGluZGV4JHV9KTs="}},"time_used":203,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":198,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/fullscreen/jquery.fullscreen-min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.343Z","timestamp":1785150870343,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/fullscreen/jquery.fullscreen-min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-621\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=CVq10%2F6RTpxUmxNvi93RaNEueMDMuw90QRgwgL4u%2Br6cVdNREoz4z9znisF8xN6lTnnVFfg2fBC65bhfVGw6ywujAbJoOMLXE5VjxkCgHK23pZjxOJiC2DB%2FLQ%3D%3D\"}]}\r\ncf-ray: a21b388babd856a2-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"]}],"data":{"size":1569,"size_decoded":1407,"mime_type":"application/javascript; charset=utf-8","magic":"ASCII text, with very long lines (501)","md5":"c8c06428e2a353df826ceff29af00054","sha1":"9935946f475fb2574a18b4b5e0d8e99c647260fc","sha256":"f320af55c2dfe9a14413b54dd951b594605f7602e5196b749e334fde3ef08dd3","sha512":"e1a154705e5e684815687c4b55f4395aa41cc4e2f771307b2237bd35dfda4a74f7898f76f9b9e5ad1635128a481e7ba97978a98362232be543aeca6dfe455f53","ssdeep":"","tlshash":"f83137ffd18790e1e8f62e9ff96fa9efa03697957405f017a02d48b01821f589b24970","first_seen":"2023-03-10T15:57:30Z","last_seen":"2026-07-27T11:25:33.539557Z","times_seen":33,"resource_available":true,"data":"LyoKIGpxdWVyeS5mdWxsc2NyZWVuIDEuMS41CiBodHRwczovL2dpdGh1Yi5jb20va2F5YWhyL2pxdWVyeS1mdWxsc2NyZWVuLXBsdWdpbgogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgS2xhdXMgUmVpbWVyIDxrQGFpbGlzLmRlPgogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAoU2VlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UpCiovCmZ1bmN0aW9uIGQoYyl7dmFyIGIsYTtpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7Yj10aGlzWzBdO2Iub3duZXJEb2N1bWVudD9hPWIub3duZXJEb2N1bWVudDooYT1iLGI9YS5kb2N1bWVudEVsZW1lbnQpO2lmKG51bGw9PWMpe2lmKCFhLmV4aXRGdWxsc2NyZWVuJiYhYS53ZWJraXRFeGl0RnVsbHNjcmVlbiYmIWEud2Via2l0Q2FuY2VsRnVsbFNjcmVlbiYmIWEubXNFeGl0RnVsbHNjcmVlbiYmIWEubW96Q2FuY2VsRnVsbFNjcmVlbilyZXR1cm4gbnVsbDtjPSEhYS5mdWxsc2NyZWVuRWxlbWVudHx8ISFhLm1zRnVsbHNjcmVlbkVsZW1lbnR8fCEhYS53ZWJraXRJc0Z1bGxTY3JlZW58fCEhYS5tb3pGdWxsU2NyZWVuO3JldHVybiFjP2M6YS5mdWxsc2NyZWVuRWxlbWVudHx8YS53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8YS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnR8fGEubXNGdWxsc2NyZWVuRWxlbWVudHx8YS5tb3pGdWxsU2NyZWVuRWxlbWVudHx8Y31jPyhjPQpiLnJlcXVlc3RGdWxsc2NyZWVufHxiLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVufHxiLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVufHxiLm1zUmVxdWVzdEZ1bGxzY3JlZW58fGIubW96UmVxdWVzdEZ1bGxTY3JlZW4pJiZjLmNhbGwoYik6KGM9YS5leGl0RnVsbHNjcmVlbnx8YS53ZWJraXRFeGl0RnVsbHNjcmVlbnx8YS53ZWJraXRDYW5jZWxGdWxsU2NyZWVufHxhLm1zRXhpdEZ1bGxzY3JlZW58fGEubW96Q2FuY2VsRnVsbFNjcmVlbikmJmMuY2FsbChhKTtyZXR1cm4gdGhpc31qUXVlcnkuZm4uZnVsbFNjcmVlbj1kO2pRdWVyeS5mbi50b2dnbGVGdWxsU2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuIGQuY2FsbCh0aGlzLCFkLmNhbGwodGhpcykpfTt2YXIgZSxmLGc7ZT1kb2N1bWVudDsKZS53ZWJraXRDYW5jZWxGdWxsU2NyZWVuPyhmPSJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIixnPSJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiKTplLm1zRXhpdEZ1bGxzY3JlZW4/KGY9Ik1TRnVsbHNjcmVlbkNoYW5nZSIsZz0iTVNGdWxsc2NyZWVuRXJyb3IiKTplLm1vekNhbmNlbEZ1bGxTY3JlZW4/KGY9Im1vemZ1bGxzY3JlZW5jaGFuZ2UiLGc9Im1vemZ1bGxzY3JlZW5lcnJvciIpOihmPSJmdWxsc2NyZWVuY2hhbmdlIixnPSJmdWxsc2NyZWVuZXJyb3IiKTtqUXVlcnkoZG9jdW1lbnQpLmJpbmQoZixmdW5jdGlvbigpe2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcihuZXcgalF1ZXJ5LkV2ZW50KCJmdWxsc2NyZWVuY2hhbmdlIikpfSk7alF1ZXJ5KGRvY3VtZW50KS5iaW5kKGcsZnVuY3Rpb24oKXtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIobmV3IGpRdWVyeS5FdmVudCgiZnVsbHNjcmVlbmVycm9yIikpfSk7"}},"time_used":198,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":198,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/scripts/chart.chartist.init.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.351Z","timestamp":1785150870351,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/scripts/chart.chartist.init.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-21a4\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=9FvpBR3OFSYm0XlAjp1VHHu5lMXwj78GUqBBx37Pi5GUMNMILigigr5lObTo2HrGAEIjpJnUd7CgKFZedSzftR4cQR5mRrK0quFiO2xf5XmBKYiNrOAA25c6zA%3D%3D\"}]}\r\ncf-ray: a21b388bbbdb56a2-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"]}],"data":{"size":8612,"size_decoded":2973,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (8611)","md5":"c87e07d0094b43d9019f3c7ef1cfb011","sha1":"22e6bcd90a30e9fa30b16f5985ee30c683fcd10b","sha256":"77f2b89df756356ba7a51fcbd557a88bfb82f2d430e6b89b88c120c0804916ac","sha512":"cc51fa194326606b60ad232a2a23a175e281c10a9dde5a18c53a86a8f990d97703602c811147fe56273d5e2d30f699994c38047dcb0e062ba17d5e9b3ca31cba","ssdeep":"96:a+dXncnDcfDyF1XOlY59pU6C4M/+sSWflBR7J1UsJ1TsHiEYFfHKPh:t81hdCacf/UrYIJ","tlshash":"6e02414aed57a323436b32b3016b9609f7b8146a1d5c5010f2b6e465ad3fa0ac337f27","first_seen":"2025-12-16T06:43:19.468291Z","last_seen":"2026-07-27T11:25:33.565322Z","times_seen":16,"resource_available":true,"data":"IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgYT17fTtlKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe3JldHVybiBlKCIjYXJlYS1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5hcmVhKCksZSgiI2Jhci1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5iYXIoKSxlKCIjYmktcG9sYXItYXJlYS1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5iaVBvbGFyQXJlYSgpLGUoIiNiaS1wb2xhci1iYXItY2hhcnRpc3QtY2hhcnQiKS5sZW5ndGgmJmEuYmlQb2xhckJhcigpLGUoIiNkb251dC1iYXItY2hhcnRpc3QtY2hhcnQiKS5sZW5ndGgmJmEuZG9udXQoKSxlKCIjZG9udXQtYW5pbWF0aW9uLWJhci1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5kb251dEFuaW1hdGlvbigpLGUoIiNnYXVnZS1iYXItY2hhcnRpc3QtY2hhcnQiKS5sZW5ndGgmJmEuZ2F1Z2UoKSxlKCIjaG9yaXpvbnRhbC1iYXItY2hhcnRpc3QtY2hhcnQiKS5sZW5ndGgmJmEuaG9yaXpvbnRhbEJhcigpLGUoIiNsaW5lLWNoYXJ0aXN0LWNoYXJ0IikubGVuZ3RoJiZhLmxpbmUoKSxlKCIjcGllLWJhci1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5waWUoKSxlKCIjc2NhdHRlci1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5zY2F0dGVyKCksZSgiI3NtaWwtYW5pbWF0aW9uLWNoYXJ0aXN0LWNoYXJ0IikubGVuZ3RoJiZhLnNtaWxBbmltYXRpb24oKSxlKCIjc21pbC1hbmltYXRpb24taW5kZXgtY2hhcnRpc3QtY2hhcnQiKS5sZW5ndGgmJmEuc21pbEFuaW1hdGlvbkluZGV4KCksZSgiI3N0YWNrZWQtYmFyLWNoYXJ0aXN0LWNoYXJ0IikubGVuZ3RoJiZhLnN0YWNrZWRCYXIoKSxlKCIjc3ZnLWFuaW1hdGlvbi1jaGFydGlzdC1jaGFydCIpLmxlbmd0aCYmYS5zdmdBbmltYXRpb24oKSwhMX0pLGE9e2FyZWE6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENoYXJ0aXN0LkxpbmUoIiNhcmVhLWNoYXJ0aXN0LWNoYXJ0Iix7bGFiZWxzOlsxLDIsMyw0LDUsNiw3LDhdLHNlcmllczpbWzUsOSw3LDgsNSwzLDUsNF1dfSx7bG93OjAsc2hvd0FyZWE6ITAsZnVsbFdpZHRoOiEwLGF4aXNZOntvZmZzZXQ6MTB9fSksITF9LGJhcjpmdW5jdGlvbigpe3JldHVybiBuZXcgQ2hhcnRpc3QuQmFyKCIjYmFyLWNoYXJ0aXN0LWNoYXJ0Iix7bGFiZWxzOlsiUXVhcnRlciAxIiwiUXVhcnRlciAyIiwiUXVhcnRlciAzIiwiUXVhcnRlciA0Il0sc2VyaWVzOltbNSw0LDMsN10sWzMsMiw5LDVdLFsxLDUsOCw0XSxbMiwzLDQsNl0sWzQsMSwyLDFdXX0se3N0YWNrQmFyczohMCxheGlzWDp7bGFiZWxJbnRlcnBvbGF0aW9uRm5jOmZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KC9ccysvKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF19KS5qb2luKCIiKX19LGF4aXNZOntvZmZzZXQ6MTB9fSxbWyJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwMHB4KSIse3JldmVyc2VEYXRhOiEwLGhvcml6b250YWxCYXJzOiEwLGF4aXNYOntsYWJlbEludGVycG9sYXRpb25GbmM6Q2hhcnRpc3Qubm9vcH0sYXhpc1k6e29mZnNldDoyMH19XSxbInNjcmVlbiBhbmQgKG1pbi13aWR0aDogODAwcHgpIix7c3RhY2tCYXJzOiExLHNlcmllc0JhckRpc3RhbmNlOjEwfV0sWyJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDBweCkiLHtyZXZlcnNlRGF0YTohMSxob3Jpem9udGFsQmFyczohMSxzZXJpZXNCYXJEaXN0YW5jZToxNX1dXSksITF9LGJpUG9sYXJBcmVhOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDaGFydGlzdC5MaW5lKCIjYmktcG9sYXItYXJlYS1jaGFydGlzdC1jaGFydCIse2xhYmVsczpbMSwyLDMsNCw1LDYsNyw4XSxzZXJpZXM6W1sxLDIsMywxLC0yLDAsMSwwXSxbLTIsLTEsLTIsLTEsLTIuNSwtMSwtMiwtMV0sWzAsMCwwLDEsMiwyLjUsMiwxXSxbMi41LDIsMSwuNSwxLC41LC0xLC0yLjVdXX0se2hpZ2g6Myxsb3c6LTMsc2hvd0FyZWE6ITAsc2hvd0xpbmU6ITEsc2hvd1BvaW50OiExLGZ1bGxXaWR0aDohMCxheGlzWTp7b2Zmc2V0OjIwfSxheGlzWDp7c2hvd0xhYmVsOiExLHNob3dHcmlkOiExfX0pLCExfSxiaVBvbGFyQmFyOmZ1bmN0aW9uKCl7dmFyIGU9e2xhYmVsczpbIlcxIiwiVzIiLCJXMyIsIlc0IiwiVzUiLCJXNiIsIlc3IiwiVzgiLCJXOSIsIlcxMCJdLHNlcmllczpbWzEsMiw0LDgsNiwtMiwtMSwtNCwtNiwtMl1dfSxhPXtoaWdoOjEwLGxvdzotMTAsYXhpc1g6e2xhYmVsSW50ZXJwb2xhdGlvbkZuYzpmdW5jdGlvbihlLGEpe3JldHVybiBhJTI9PT0wP2U6bnVsbH19LGZ1bGxXaWR0aDohMCxheGlzWTp7b2Zmc2V0OjEwfX07cmV0dXJuIG5ldyBDaGFydGlzdC5CYXIoIiNiaS1wb2xhci1iYXItY2hhcnRpc3QtY2hhcnQiLGUsYSksITF9LGRvbnV0OmZ1bmN0aW9uKCl7dmFyIGU9e3NlcmllczpbMjAsMTAsMzAsNDBdfSxhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGUrYX07cmV0dXJuIG5ldyBDaGFydGlzdC5QaWUoIiNkb251dC1iYXItY2hhcnRpc3QtY2hhcnQiLGUse2xhYmVsSW50ZXJwb2xhdGlvbkZuYzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0L2Uuc2VyaWVzLnJlZHVjZShhKSoxMDApKyIlIn0sZG9udXQ6ITAsZG9udXRXaWR0aDo4MCxzdGFydEFuZ2xlOjI3MH0pLCExfSxkb251dEFuaW1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyBDaGFydGlzdC5QaWUoIiNkb251dC1hbmltYXRpb24tYmFyLWNoYXJ0aXN0LWNoYXJ0Iix7c2VyaWVzOlsxMCwyMCw1MCwyMCw1LDUwLDE1XSxsYWJlbHM6WzEsMiwzLDQsNSw2LDddfSx7ZG9udXQ6ITAsc2hvd0xhYmVsOiExfSk7cmV0dXJuIGUub24oImRyYXciLGZ1bmN0aW9uKGUpe2lmKCJzbGljZSI9PT1lLnR5cGUpe3ZhciBhPWUuZWxlbWVudC5fbm9kZS5nZXRUb3RhbExlbmd0aCgpO2UuZWxlbWVudC5hdHRyKHsic3Ryb2tlLWRhc2hhcnJheSI6YSsicHggIithKyJweCJ9KTt2YXIgdD17InN0cm9rZS1kYXNob2Zmc2V0Ijp7aWQ6ImFuaW0iK2UuaW5kZXgsZHVyOjFlMyxmcm9tOi1hKyJweCIsdG86IjBweCIsZWFzaW5nOkNoYXJ0aXN0LlN2Zy5FYXNpbmcuZWFzZU91dFF1aW50LGZpbGw6ImZyZWV6ZSJ9fTswIT09ZS5pbmRleCYmKHRbInN0cm9rZS1kYXNob2Zmc2V0Il0uYmVnaW49ImFuaW0iKyhlLmluZGV4LTEpKyIuZW5kIiksZS5lbGVtZW50LmF0dHIoeyJzdHJva2UtZGFzaG9mZnNldCI6LWErInB4In0pLGUuZWxlbWVudC5hbmltYXRlKHQsITEpfX0pLGUub24oImNyZWF0ZWQiLGZ1bmN0aW9uKCl7d2luZG93Ll9fYW5pbTIxMjc4OTA3MTI0JiYoY2xlYXJUaW1lb3V0KHdpbmRvdy5fX2FuaW0yMTI3ODkwNzEyNCksd2luZG93Ll9fYW5pbTIxMjc4OTA3MTI0PW51bGwpLHdpbmRvdy5fX2FuaW0yMTI3ODkwNzEyND1zZXRUaW1lb3V0KGUudXBkYXRlLmJpbmQoZSksMWU0KX0pLCExfSxnYXVnZTpmdW5jdGlvbigpe3JldHVybiBuZXcgQ2hhcnRpc3QuUGllKCIjZ2F1Z2UtYmFyLWNoYXJ0aXN0LWNoYXJ0Iix7c2VyaWVzOlsyMCwxMCwzMCw0MF19LHtkb251dDohMCxkb251dFdpZHRoOjYwLHN0YXJ0QW5nbGU6MjcwLHRvdGFsOjIwMCxzaG93TGFiZWw6ITF9KSwhMX0saG9yaXpvbnRhbEJhcjpmdW5jdGlvbigpe3JldHVybiBuZXcgQ2hhcnRpc3QuQmFyKCIjaG9yaXpvbnRhbC1iYXItY2hhcnRpc3QtY2hhcnQiLHtsYWJlbHM6WyJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSIsIlN1bmRheSJdLHNlcmllczpbWzUsNCwzLDcsNSwxMCwzXSxbMywyLDksNSw0LDYsNF1dfSx7c2VyaWVzQmFyRGlzdGFuY2U6MTAscmV2ZXJzZURhdGE6ITAsaG9yaXpvbnRhbEJhcnM6ITAsYXhpc1k6e29mZnNldDo3MH19KSwhMX0sbGluZTpmdW5jdGlvbigpe3JldHVybiBuZXcgQ2hhcnRpc3QuTGluZSgiI2xpbmUtY2hhcnRpc3QtY2hhcnQiLHtsYWJlbHM6WyIxIiwiMiIsIjMiLCI0IiwiNSJdLHNlcmllczpbWzEyLDksNyw4LDVdLFsyLDEsMy41LDcsM10sWzEsMyw0LDUsNl1dfSx7ZnVsbFdpZHRoOiEwLGF4aXNZOntvZmZzZXQ6MTB9LGNoYXJ0UGFkZGluZzp7cmlnaHQ6MzB9fSksITF9LHBpZTpmdW5jdGlvbigpe3ZhciBlPXtzZXJpZXM6WzUsMyw0XX0sYT1mdW5jdGlvbihlLGEpe3JldHVybiBlK2F9O3JldHVybiBuZXcgQ2hhcnRpc3QuUGllKCIjcGllLWJhci1jaGFydGlzdC1jaGFydCIsZSx7bGFiZWxJbnRlcnBvbGF0aW9uRm5jOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQvZS5zZXJpZXMucmVkdWNlKGEpKjEwMCkrIiUifX0pLCExfSxzY2F0dGVyOmZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmFwcGx5KG51bGwsbmV3IEFycmF5KGUpKX0sYT1lKDUyKS5tYXAoTWF0aC5yYW5kb20pLnJlZHVjZShmdW5jdGlvbihlLGEsdCl7cmV0dXJuIGUubGFiZWxzLnB1c2godCsxKSxlLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucHVzaCgxMDAqTWF0aC5yYW5kb20oKSl9KSxlfSx7bGFiZWxzOltdLHNlcmllczplKDQpLm1hcChmdW5jdGlvbigpe3JldHVybiBuZXcgQXJyYXl9KX0pLHQ9e3Nob3dMaW5lOiExLGF4aXNYOntsYWJlbEludGVycG9sYXRpb25GbmM6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gYSUxMz09PTA/IlciK2U6bnVsbH19LGZ1bGxXaWR0aDohMCxheGlzWTp7b2Zmc2V0OjIwfX0scj1bWyJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSIse2F4aXNYOntsYWJlbEludGVycG9sYXRpb25GbmM6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gYSU0PT09MD8iVyIrZTpudWxsfX19XV07cmV0dXJuIG5ldyBDaGFydGlzdC5MaW5lKCIjc2NhdHRlci1jaGFydGlzdC1jaGFydCIsYSx0LHIpLCExfSxzbWlsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IENoYXJ0aXN0LkxpbmUoIiNzbWlsLWFuaW1hdGlvbi1jaGFydGlzdC1jaGFydCIse2xhYmVsczpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLHNlcmllczpbWzEyLDksNyw4LDUsNCw2LDIsMywzLDQsNl0sWzQsNSwzLDcsMyw1LDUsMyw0LDQsNSw1XSxbNSwzLDQsNSw2LDMsMyw0LDUsNiwzLDRdLFszLDQsNSw2LDcsNiw0LDUsNiw3LDYsM11dfSx7bG93OjB9KSxhPTAsdD04MCxyPTUwMDtyZXR1cm4gZS5vbigiY3JlYXRlZCIsZnVuY3Rpb24oKXthPTB9KSxlLm9uKCJkcmF3IixmdW5jdGlvbihlKXtpZihhKyssImxpbmUiPT09ZS50eXBlKWUuZWxlbWVudC5hbmltYXRlKHtvcGFjaXR5OntiZWdpbjphKnQrMWUzLGR1cjpyLGZyb206MCx0bzoxfX0pO2Vsc2UgaWYoImxhYmVsIj09PWUudHlwZSYmIngiPT09ZS5heGlzKWUuZWxlbWVudC5hbmltYXRlKHt5OntiZWdpbjphKnQsZHVyOnIsZnJvbTplLnkrMTAwLHRvOmUueSxlYXNpbmc6ImVhc2VPdXRRdWFydCJ9fSk7ZWxzZSBpZigibGFiZWwiPT09ZS50eXBlJiYieSI9PT1lLmF4aXMpZS5lbGVtZW50LmFuaW1hdGUoe3g6e2JlZ2luOmEqdCxkdXI6cixmcm9tOmUueC0xMDAsdG86ZS54LGVhc2luZzoiZWFzZU91dFF1YXJ0In19KTtlbHNlIGlmKCJwb2ludCI9PT1lLnR5cGUpZS5lbGVtZW50LmFuaW1hdGUoe3gxOntiZWdpbjphKnQsZHVyOnIsZnJvbTplLngtMTAsdG86ZS54LGVhc2luZzoiZWFzZU91dFF1YXJ0In0seDI6e2JlZ2luOmEqdCxkdXI6cixmcm9tOmUueC0xMCx0bzplLngsZWFzaW5nOiJlYXNlT3V0UXVhcnQifSxvcGFjaXR5OntiZWdpbjphKnQsZHVyOnIsZnJvbTowLHRvOjEsZWFzaW5nOiJlYXNlT3V0UXVhcnQifX0pO2Vsc2UgaWYoImdyaWQiPT09ZS50eXBlKXt2YXIgaT17YmVnaW46YSp0LGR1cjpyLGZyb206ZVtlLmF4aXMudW5pdHMucG9zKyIxIl0tMzAsdG86ZVtlLmF4aXMudW5pdHMucG9zKyIxIl0sZWFzaW5nOiJlYXNlT3V0UXVhcnQifSxuPXtiZWdpbjphKnQsZHVyOnIsZnJvbTplW2UuYXhpcy51bml0cy5wb3MrIjIiXS0xMDAsdG86ZVtlLmF4aXMudW5pdHMucG9zKyIyIl0sZWFzaW5nOiJlYXNlT3V0UXVhcnQifSxvPXt9O29bZS5heGlzLnVuaXRzLnBvcysiMSJdPWksb1tlLmF4aXMudW5pdHMucG9zKyIyIl09bixvLm9wYWNpdHk9e2JlZ2luOmEqdCxkdXI6cixmcm9tOjAsdG86MSxlYXNpbmc6ImVhc2VPdXRRdWFydCJ9LGUuZWxlbWVudC5hbmltYXRlKG8pfX0pLGUub24oImNyZWF0ZWQiLGZ1bmN0aW9uKCl7d2luZG93Ll9fZXhhbXBsZUFuaW1hdGVUaW1lb3V0JiYoY2xlYXJUaW1lb3V0KHdpbmRvdy5fX2V4YW1wbGVBbmltYXRlVGltZW91dCksd2luZG93Ll9fZXhhbXBsZUFuaW1hdGVUaW1lb3V0PW51bGwpLHdpbmRvdy5fX2V4YW1wbGVBbmltYXRlVGltZW91dD1zZXRUaW1lb3V0KGUudXBkYXRlLmJpbmQoZSksMTJlMyl9KSwhMX0sc21pbEFuaW1hdGlvbkluZGV4OmZ1bmN0aW9uKCl7dmFyIGU9bmV3IENoYXJ0aXN0LkxpbmUoIiNzbWlsLWFuaW1hdGlvbi1pbmRleC1jaGFydGlzdC1jaGFydCIse2xhYmVsczpbIjIwMDgiLCIyMDA5IiwiMjAxMCIsIjIwMTEiLCIyMDEyIiwiMjAxMyIsIjIwMTQiLCIyMDE1IiwiMjAxNiJdLHNlcmllczpbWzgsNSw0LDYsMiwzLDMsNCw2XSxbNywzLDUsNSwzLDQsNCw1LDVdXX0se2xvdzowLGZ1bGxXaWR0aDohMCxjaGFydFBhZGRpbmc6e3JpZ2h0OjMwfX0pLGE9MCx0PTgwLHI9NTAwO3JldHVybiBlLm9uKCJjcmVhdGVkIixmdW5jdGlvbigpe2E9MH0pLGUub24oImRyYXciLGZ1bmN0aW9uKGUpe2lmKGErKywibGluZSI9PT1lLnR5cGUpZS5lbGVtZW50LmFuaW1hdGUoe29wYWNpdHk6e2JlZ2luOmEqdCsxZTMsZHVyOnIsZnJvbTowLHRvOjF9fSk7ZWxzZSBpZigibGFiZWwiPT09ZS50eXBlJiYieCI9PT1lLmF4aXMpZS5lbGVtZW50LmFuaW1hdGUoe3k6e2JlZ2luOmEqdCxkdXI6cixmcm9tOmUueSsxMDAsdG86ZS55LGVhc2luZzoiZWFzZU91dFF1YXJ0In19KTtlbHNlIGlmKCJsYWJlbCI9PT1lLnR5cGUmJiJ5Ij09PWUuYXhpcyllLmVsZW1lbnQuYW5pbWF0ZSh7eDp7YmVnaW46YSp0LGR1cjpyLGZyb206ZS54LTEwMCx0bzplLngsZWFzaW5nOiJlYXNlT3V0UXVhcnQifX0pO2Vsc2UgaWYoInBvaW50Ij09PWUudHlwZSllLmVsZW1lbnQuYW5pbWF0ZSh7eDE6e2JlZ2luOmEqdCxkdXI6cixmcm9tOmUueC0xMCx0bzplLngsZWFzaW5nOiJlYXNlT3V0UXVhcnQifSx4Mjp7YmVnaW46YSp0LGR1cjpyLGZyb206ZS54LTEwLHRvOmUueCxlYXNpbmc6ImVhc2VPdXRRdWFydCJ9LG9wYWNpdHk6e2JlZ2luOmEqdCxkdXI6cixmcm9tOjAsdG86MSxlYXNpbmc6ImVhc2VPdXRRdWFydCJ9fSk7ZWxzZSBpZigiZ3JpZCI9PT1lLnR5cGUpe3ZhciBpPXtiZWdpbjphKnQsZHVyOnIsZnJvbTplW2UuYXhpcy51bml0cy5wb3MrIjEiXS0zMCx0bzplW2UuYXhpcy51bml0cy5wb3MrIjEiXSxlYXNpbmc6ImVhc2VPdXRRdWFydCJ9LG49e2JlZ2luOmEqdCxkdXI6cixmcm9tOmVbZS5heGlzLnVuaXRzLnBvcysiMiJdLTEwMCx0bzplW2UuYXhpcy51bml0cy5wb3MrIjIiXSxlYXNpbmc6ImVhc2VPdXRRdWFydCJ9LG89e307b1tlLmF4aXMudW5pdHMucG9zKyIxIl09aSxvW2UuYXhpcy51bml0cy5wb3MrIjIiXT1uLG8ub3BhY2l0eT17YmVnaW46YSp0LGR1cjpyLGZyb206MCx0bzoxLGVhc2luZzoiZWFzZU91dFF1YXJ0In0sZS5lbGVtZW50LmFuaW1hdGUobyl9fSksZS5vbigiY3JlYXRlZCIsZnVuY3Rpb24oKXt3aW5kb3cuX19leGFtcGxlQW5pbWF0ZVRpbWVvdXQmJihjbGVhclRpbWVvdXQod2luZG93Ll9fZXhhbXBsZUFuaW1hdGVUaW1lb3V0KSx3aW5kb3cuX19leGFtcGxlQW5pbWF0ZVRpbWVvdXQ9bnVsbCksd2luZG93Ll9fZXhhbXBsZUFuaW1hdGVUaW1lb3V0PXNldFRpbWVvdXQoZS51cGRhdGUuYmluZChlKSwxMmUzKX0pLCExfSxzdGFja2VkQmFyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDaGFydGlzdC5CYXIoIiNzdGFja2VkLWJhci1jaGFydGlzdC1jaGFydCIse2xhYmVsczpbIlExIiwiUTIiLCJRMyIsIlE0Il0sc2VyaWVzOltbOGU1LDEyZTUsMTRlNSwxM2U1XSxbMmU1LDRlNSw1ZTUsM2U1XSxbMWU1LDJlNSw0ZTUsNmU1XV19LHtzdGFja0JhcnM6ITAsYXhpc1k6e2xhYmVsSW50ZXJwb2xhdGlvbkZuYzpmdW5jdGlvbihlKXtyZXR1cm4gZS8xZTMrImsifX19KS5vbigiZHJhdyIsZnVuY3Rpb24oZSl7ImJhciI9PT1lLnR5cGUmJmUuZWxlbWVudC5hdHRyKHtzdHlsZToic3Ryb2tlLXdpZHRoOiAzMHB4In0pfSksITF9LHN2Z0FuaW1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPW5ldyBDaGFydGlzdC5MaW5lKCIjc3ZnLWFuaW1hdGlvbi1jaGFydGlzdC1jaGFydCIse2xhYmVsczpbIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLHNlcmllczpbWzEsNSwyLDUsNCwzXSxbMiwzLDQsOCwxLDJdLFs1LDQsMywyLDEsLjVdXX0se2xvdzowLHNob3dBcmVhOiEwLHNob3dQb2ludDohMSxmdWxsV2lkdGg6ITAsYXhpc1k6e29mZnNldDoxMH19KTtyZXR1cm4gZS5vbigiZHJhdyIsZnVuY3Rpb24oZSl7KCJsaW5lIj09PWUudHlwZXx8ImFyZWEiPT09ZS50eXBlKSYmZS5lbGVtZW50LmFuaW1hdGUoe2Q6e2JlZ2luOjJlMyplLmluZGV4LGR1cjoyZTMsZnJvbTplLnBhdGguY2xvbmUoKS5zY2FsZSgxLDApLnRyYW5zbGF0ZSgwLGUuY2hhcnRSZWN0LmhlaWdodCgpKS5zdHJpbmdpZnkoKSx0bzplLnBhdGguY2xvbmUoKS5zdHJpbmdpZnkoKSxlYXNpbmc6Q2hhcnRpc3QuU3ZnLkVhc2luZy5lYXNlT3V0UXVpbnR9fSl9KSwhMX19fShqUXVlcnkpOwo="}},"time_used":194,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":194,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0031.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.383Z","timestamp":1785150870383,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0031.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-11c\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=OERlu%2FTxd%2BmNif%2BQPf15KAn163au%2FonknN0SIlL%2FFElgO%2BgOiY1wjdBZP9SxMR9BlcQfoDcjgfAy9fZw2Pr2%2Fl5WxpL5GpiP8QT17JJRE331l2b10Ec8YTjnzA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bebed56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 284\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"]}],"data":{"size":284,"size_decoded":1066,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"e03116fd27f2e2cb5b38d5aa424eed8f","sha1":"653e1b4ec46a98763e5c170ebeb4624570986c01","sha256":"cba78984113a232fd62881b760b7a28ab23caf85c8bb08dedf6f363b854ea166","sha512":"227a345ae5ccef8cc5e81f095c9211764bc1b406feef7bf798e7bfcdffb13622ee19ef5f638ae5ac995d6674f3e08f678a869064519e4051084c9861ee377acd","ssdeep":"","tlshash":"e3d02b24b485dc26de1c697c4a498e02e6c5d474883a6a2584ac10a6050a95cd001ba3","first_seen":"2026-05-13T03:42:55.486632Z","last_seen":"2026-07-27T11:15:13.760096Z","times_seen":3,"resource_available":false,"data":"R0lGODlhIAAgALMAAAAAACYmJjE1Pj0+c0ZLVVVvtVZJPWtXRW1mkYQ0NY2Xy5eQsblJU/Pz8wAAAAAAACH5BAUKAAAALAAAAAAgACAAAATJEMhJqw3B6r0DYxknAliJJV84agHhvkGSqGvVvjhG0DWJ/7Ae5QbT7TDCCXF3aGKcSQkx0KxWebWpk/rErgICF9V6jZLCzIPBoGZ7R2CBYNyg1g9vEbjUbDQOfnhme2xkZVGEhodJewGFY4uMc4V4T4JmJI6KeVmUkZiObiWYNmsGnIimqIyqpEMlqqOIGAoBCwuOtri1SFkKvwoIusMIwLW+wAjCAcvKxqskycrT1MW/0AHS1dbWx1/a1b/d2AUFA+fo6OXn5V4RADs="}},"time_used":199,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":199,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Poppins:300,400,500,600,700","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.577Z","timestamp":1785150870577,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:27 GMT","end":"Mon, 21 Sep 2026 08:39:26 GMT"},"fingerprint":{"sha1":"50:37:CF:61:33:A1:EE:47:D9:3D:A6:5E:07:BA:4C:FF:F7:25:9F:76","sha256":"7D:4D:21:06:63:E2:5E:F0:8C:59:8E:EB:B7:94:2B:81:70:11:D3:F4:C0:A0:81:A6:1B:E7:27:FD:56:10:1A:11"}}},"request":{"raw":"GET /css?family=Poppins:300,400,500,600,700 HTTP/1.1\r\nHost: fonts.googleapis.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://punks.my/\r\nSec-Fetch-Dest: style\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":"HTTP/3 200 \r\ncontent-type: text/css; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\naccess-control-allow-origin: *\r\ntiming-allow-origin: *\r\nlink: \u003chttps://fonts.gstatic.com\u003e; rel=preconnect; crossorigin\r\nstrict-transport-security: max-age=31536000\r\nexpires: Mon, 27 Jul 2026 11:14:30 GMT\r\ndate: Mon, 27 Jul 2026 11:14:30 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin-allow-popups\r\ncontent-encoding: gzip\r\nserver: ESF\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\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"]}],"data":{"size":5663,"size_decoded":1213,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"f82781add8b0a30e4fc3d646c380c9c4","sha1":"1dd46a231da58ae125e566896e0ec58ef53ffa9e","sha256":"d16359174cd8f614201a13089e8ada35bb31aa1b17a2ec2883f58b947e11adcd","sha512":"16f463da69105b6cea278bb4b05b7686601e6be1c9423a0764cac0506bde6e65cef8206a8b6c984f8b0e65cee0a666cb9cbbb04025bfc52415feec29f31ff8a9","ssdeep":"96:SOWrOWTJc+ukOWaN3OLnOLCJc+ukOLuN3Og3OgvJc+ukOgON3OxTcOxTUJc+ukO1:KjH/dCKSe1rV3HwwVzzbZ","tlshash":"a0c18bd2087be41467831cc222ce7d36ef0ea244b450e574abfe0c98ada7c69537272d","first_seen":"2025-09-17T09:41:57.591734Z","last_seen":"2026-07-27T12:05:18.321876Z","times_seen":6513,"resource_available":false,"data":"LyogZGV2YW5hZ2FyaSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1BvcHBpbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9wb3BwaW5zL3YyNC9weGlCeXA4a3Y4SkhnRlZyTER6OFoxMWxGYy1LLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswOTAwLTA5N0YsIFUrMUNEMC0xQ0Y5LCBVKzIwMEMtMjAwRCwgVSsyMEE4LCBVKzIwQjksIFUrMjBGMCwgVSsyNUNDLCBVK0E4MzAtQTgzOSwgVStBOEUwLUE4RkYsIFUrMTFCMDAtMTFCMDk7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3BvcHBpbnMvdjI0L3B4aUJ5cDhrdjhKSGdGVnJMRHo4WjFKbEZjLUsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1BvcHBpbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9wb3BwaW5zL3YyNC9weGlCeXA4a3Y4SkhnRlZyTER6OFoxeGxGUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGRldmFuYWdhcmkgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvcG9wcGlucy92MjQvcHhpRXlwOGt2OEpIZ0ZWckpKYmVjbU5FLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswOTAwLTA5N0YsIFUrMUNEMC0xQ0Y5LCBVKzIwMEMtMjAwRCwgVSsyMEE4LCBVKzIwQjksIFUrMjBGMCwgVSsyNUNDLCBVK0E4MzAtQTgzOSwgVStBOEUwLUE4RkYsIFUrMTFCMDAtMTFCMDk7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3BvcHBpbnMvdjI0L3B4aUV5cDhrdjhKSGdGVnJKSm5lY21ORS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3BvcHBpbnMvdjI0L3B4aUV5cDhrdjhKSGdGVnJKSmZlY2cud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBkZXZhbmFnYXJpICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3BvcHBpbnMvdjI0L3B4aUJ5cDhrdjhKSGdGVnJMR1Q5WjExbEZjLUsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA5MDAtMDk3RiwgVSsxQ0QwLTFDRjksIFUrMjAwQy0yMDBELCBVKzIwQTgsIFUrMjBCOSwgVSsyMEYwLCBVKzI1Q0MsIFUrQTgzMC1BODM5LCBVK0E4RTAtQThGRiwgVSsxMUIwMC0xMUIwOTsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvcG9wcGlucy92MjQvcHhpQnlwOGt2OEpIZ0ZWckxHVDlaMUpsRmMtSy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3BvcHBpbnMvdjI0L3B4aUJ5cDhrdjhKSGdGVnJMR1Q5WjF4bEZRLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogZGV2YW5hZ2FyaSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1BvcHBpbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9wb3BwaW5zL3YyNC9weGlCeXA4a3Y4SkhnRlZyTEVqNloxMWxGYy1LLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswOTAwLTA5N0YsIFUrMUNEMC0xQ0Y5LCBVKzIwMEMtMjAwRCwgVSsyMEE4LCBVKzIwQjksIFUrMjBGMCwgVSsyNUNDLCBVK0E4MzAtQTgzOSwgVStBOEUwLUE4RkYsIFUrMTFCMDAtMTFCMDk7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3BvcHBpbnMvdjI0L3B4aUJ5cDhrdjhKSGdGVnJMRWo2WjFKbEZjLUsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1BvcHBpbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9wb3BwaW5zL3YyNC9weGlCeXA4a3Y4SkhnRlZyTEVqNloxeGxGUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGRldmFuYWdhcmkgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvcG9wcGlucy92MjQvcHhpQnlwOGt2OEpIZ0ZWckxDejdaMTFsRmMtSy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDkwMC0wOTdGLCBVKzFDRDAtMUNGOSwgVSsyMDBDLTIwMEQsIFUrMjBBOCwgVSsyMEI5LCBVKzIwRjAsIFUrMjVDQywgVStBODMwLUE4MzksIFUrQThFMC1BOEZGLCBVKzExQjAwLTExQjA5Owp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1BvcHBpbnMnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9wb3BwaW5zL3YyNC9weGlCeXA4a3Y4SkhnRlZyTEN6N1oxSmxGYy1LLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvcG9wcGlucy92MjQvcHhpQnlwOGt2OEpIZ0ZWckxDejdaMXhsRlEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQo="}},"time_used":35,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":35,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/chart/chartist/chartist.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.318Z","timestamp":1785150870318,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/chart/chartist/chartist.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-2a7e\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=C9pmXuygZKlN%2F725mM%2FA0Cf8J%2FYmnGQEqCTlcwUsm8bZPw8CBfh2P4K9utpSPIuGweFUXTNIbrqX7hYaoU0J5kZjBMRuQW760S2UCRLpLmp1%2BzR1kzsFFJIOxA%3D%3D\"}]}\r\ncf-ray: a21b388b7bcb56a2-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"]}],"data":{"size":10878,"size_decoded":2200,"mime_type":"text/css","magic":"ASCII text, with very long lines (10878), with no line terminators","md5":"b9a91a1e35ddaa5c9f333d725fdf91cf","sha1":"41b31cb8f7b72ad8a79a09cf8cf19e702f2bb0dd","sha256":"1c1f3b2ee30ca23edbf201b90da76e5763067c24d8eae953b57f82c170ad451e","sha512":"45674316bd465c2e3af8adf675be8c6ff85da2e4817ad4c34a24df6cb84b5ee5638dbc1d66cd8eafc0f762d54860b9424363045ed9f881b7f7d3d6ae561be22a","ssdeep":"192:wb1qfqAdGb1qClq/qB1qsqdGeVhmZrNvxjJftjzjF7FLbz:xhmZrNvxjJftjzjF7FLn","tlshash":"4222e007ed10df4fd923d808ed4c6feb50a1f0a1ea5316d6c2c155352adf68e89a26ce","first_seen":"2023-05-03T14:16:25Z","last_seen":"2026-07-27T11:25:33.543243Z","times_seen":85,"resource_available":false,"data":"LmN0LWRvdWJsZS1vY3RhdmU6YWZ0ZXIsLmN0LW1ham9yLWVsZXZlbnRoOmFmdGVyLC5jdC1tYWpvci1zZWNvbmQ6YWZ0ZXIsLmN0LW1ham9yLXNldmVudGg6YWZ0ZXIsLmN0LW1ham9yLXNpeHRoOmFmdGVyLC5jdC1tYWpvci10ZW50aDphZnRlciwuY3QtbWFqb3ItdGhpcmQ6YWZ0ZXIsLmN0LW1ham9yLXR3ZWxmdGg6YWZ0ZXIsLmN0LW1pbm9yLXNlY29uZDphZnRlciwuY3QtbWlub3Itc2V2ZW50aDphZnRlciwuY3QtbWlub3Itc2l4dGg6YWZ0ZXIsLmN0LW1pbm9yLXRoaXJkOmFmdGVyLC5jdC1vY3RhdmU6YWZ0ZXIsLmN0LXBlcmZlY3QtZmlmdGg6YWZ0ZXIsLmN0LXBlcmZlY3QtZm91cnRoOmFmdGVyLC5jdC1zcXVhcmU6YWZ0ZXJ7Y29udGVudDoiIjtjbGVhcjpib3RofS5jdC1sYWJlbHtmaWxsOnJnYmEoMCwwLDAsLjQpO2NvbG9yOnJnYmEoMCwwLDAsLjQpO2ZvbnQtc2l6ZTouNzVyZW07bGluZS1oZWlnaHQ6MX0uY3QtY2hhcnQtYmFyIC5jdC1sYWJlbCwuY3QtY2hhcnQtbGluZSAuY3QtbGFiZWx7ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXh9LmN0LWxhYmVsLmN0LWhvcml6b250YWwuY3Qtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246ZmxleC1lbmQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LWVuZDstbXMtZmxleC1hbGlnbjpmbGV4LWVuZDthbGlnbi1pdGVtczpmbGV4LWVuZDstd2Via2l0LWJveC1wYWNrOmZsZXgtc3RhcnQ7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDstbXMtZmxleC1wYWNrOmZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7dGV4dC1hbGlnbjpsZWZ0O3RleHQtYW5jaG9yOnN0YXJ0fS5jdC1sYWJlbC5jdC1ob3Jpem9udGFsLmN0LWVuZHstd2Via2l0LWJveC1hbGlnbjpmbGV4LXN0YXJ0Oy13ZWJraXQtYWxpZ24taXRlbXM6ZmxleC1zdGFydDstbXMtZmxleC1hbGlnbjpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtcGFjazpmbGV4LXN0YXJ0Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7LW1zLWZsZXgtcGFjazpmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O3RleHQtYWxpZ246bGVmdDt0ZXh0LWFuY2hvcjpzdGFydH0uY3QtbGFiZWwuY3QtdmVydGljYWwuY3Qtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246ZmxleC1lbmQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LWVuZDstbXMtZmxleC1hbGlnbjpmbGV4LWVuZDthbGlnbi1pdGVtczpmbGV4LWVuZDstd2Via2l0LWJveC1wYWNrOmZsZXgtZW5kOy13ZWJraXQtanVzdGlmeS1jb250ZW50OmZsZXgtZW5kOy1tcy1mbGV4LXBhY2s6ZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3RleHQtYWxpZ246cmlnaHQ7dGV4dC1hbmNob3I6ZW5kfS5jdC1sYWJlbC5jdC12ZXJ0aWNhbC5jdC1lbmR7LXdlYmtpdC1ib3gtYWxpZ246ZmxleC1lbmQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LWVuZDstbXMtZmxleC1hbGlnbjpmbGV4LWVuZDthbGlnbi1pdGVtczpmbGV4LWVuZDstd2Via2l0LWJveC1wYWNrOmZsZXgtc3RhcnQ7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDstbXMtZmxleC1wYWNrOmZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7dGV4dC1hbGlnbjpsZWZ0O3RleHQtYW5jaG9yOnN0YXJ0fS5jdC1jaGFydC1iYXIgLmN0LWxhYmVsLmN0LWhvcml6b250YWwuY3Qtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246ZmxleC1lbmQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LWVuZDstbXMtZmxleC1hbGlnbjpmbGV4LWVuZDthbGlnbi1pdGVtczpmbGV4LWVuZDstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWFuY2hvcjpzdGFydH0uY3QtY2hhcnQtYmFyIC5jdC1sYWJlbC5jdC1ob3Jpem9udGFsLmN0LWVuZHstd2Via2l0LWJveC1hbGlnbjpmbGV4LXN0YXJ0Oy13ZWJraXQtYWxpZ24taXRlbXM6ZmxleC1zdGFydDstbXMtZmxleC1hbGlnbjpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1hbmNob3I6c3RhcnR9LmN0LWNoYXJ0LWJhci5jdC1ob3Jpem9udGFsLWJhcnMgLmN0LWxhYmVsLmN0LWhvcml6b250YWwuY3Qtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246ZmxleC1lbmQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LWVuZDstbXMtZmxleC1hbGlnbjpmbGV4LWVuZDthbGlnbi1pdGVtczpmbGV4LWVuZDstd2Via2l0LWJveC1wYWNrOmZsZXgtc3RhcnQ7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDstbXMtZmxleC1wYWNrOmZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7dGV4dC1hbGlnbjpsZWZ0O3RleHQtYW5jaG9yOnN0YXJ0fS5jdC1jaGFydC1iYXIuY3QtaG9yaXpvbnRhbC1iYXJzIC5jdC1sYWJlbC5jdC1ob3Jpem9udGFsLmN0LWVuZHstd2Via2l0LWJveC1hbGlnbjpmbGV4LXN0YXJ0Oy13ZWJraXQtYWxpZ24taXRlbXM6ZmxleC1zdGFydDstbXMtZmxleC1hbGlnbjpmbGV4LXN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LXdlYmtpdC1ib3gtcGFjazpmbGV4LXN0YXJ0Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7LW1zLWZsZXgtcGFjazpmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O3RleHQtYWxpZ246bGVmdDt0ZXh0LWFuY2hvcjpzdGFydH0uY3QtY2hhcnQtYmFyLmN0LWhvcml6b250YWwtYmFycyAuY3QtbGFiZWwuY3QtdmVydGljYWwuY3Qtc3RhcnR7LXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyOy13ZWJraXQtYWxpZ24taXRlbXM6Y2VudGVyOy1tcy1mbGV4LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC1ib3gtcGFjazpmbGV4LWVuZDstd2Via2l0LWp1c3RpZnktY29udGVudDpmbGV4LWVuZDstbXMtZmxleC1wYWNrOmZsZXgtZW5kO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtYW5jaG9yOmVuZH0uY3QtY2hhcnQtYmFyLmN0LWhvcml6b250YWwtYmFycyAuY3QtbGFiZWwuY3QtdmVydGljYWwuY3QtZW5key13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtYm94LXBhY2s6ZmxleC1zdGFydDstd2Via2l0LWp1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0Oy1tcy1mbGV4LXBhY2s6ZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1hbmNob3I6ZW5kfS5jdC1ncmlke3N0cm9rZTpyZ2JhKDAsMCwwLC4yKTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1kYXNoYXJyYXk6MnB4fS5jdC1wb2ludHtzdHJva2Utd2lkdGg6MTBweDtzdHJva2UtbGluZWNhcDpyb3VuZH0uY3QtbGluZXtmaWxsOm5vbmU7c3Ryb2tlLXdpZHRoOjRweH0uY3QtYXJlYXtzdHJva2U6bm9uZTtmaWxsLW9wYWNpdHk6LjF9LmN0LWJhcntmaWxsOm5vbmU7c3Ryb2tlLXdpZHRoOjEwcHh9LmN0LXNsaWNlLWRvbnV0e2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6NjBweH0uY3Qtc2VyaWVzLWEgLmN0LWJhciwuY3Qtc2VyaWVzLWEgLmN0LWxpbmUsLmN0LXNlcmllcy1hIC5jdC1wb2ludCwuY3Qtc2VyaWVzLWEgLmN0LXNsaWNlLWRvbnV0e3N0cm9rZTojZDcwMjA2fS5jdC1zZXJpZXMtYSAuY3QtYXJlYSwuY3Qtc2VyaWVzLWEgLmN0LXNsaWNlLXBpZXtmaWxsOiNkNzAyMDZ9LmN0LXNlcmllcy1iIC5jdC1iYXIsLmN0LXNlcmllcy1iIC5jdC1saW5lLC5jdC1zZXJpZXMtYiAuY3QtcG9pbnQsLmN0LXNlcmllcy1iIC5jdC1zbGljZS1kb251dHtzdHJva2U6I2YwNWI0Zn0uY3Qtc2VyaWVzLWIgLmN0LWFyZWEsLmN0LXNlcmllcy1iIC5jdC1zbGljZS1waWV7ZmlsbDojZjA1YjRmfS5jdC1zZXJpZXMtYyAuY3QtYmFyLC5jdC1zZXJpZXMtYyAuY3QtbGluZSwuY3Qtc2VyaWVzLWMgLmN0LXBvaW50LC5jdC1zZXJpZXMtYyAuY3Qtc2xpY2UtZG9udXR7c3Ryb2tlOiNmNGM2M2R9LmN0LXNlcmllcy1jIC5jdC1hcmVhLC5jdC1zZXJpZXMtYyAuY3Qtc2xpY2UtcGlle2ZpbGw6I2Y0YzYzZH0uY3Qtc2VyaWVzLWQgLmN0LWJhciwuY3Qtc2VyaWVzLWQgLmN0LWxpbmUsLmN0LXNlcmllcy1kIC5jdC1wb2ludCwuY3Qtc2VyaWVzLWQgLmN0LXNsaWNlLWRvbnV0e3N0cm9rZTojZDE3OTA1fS5jdC1zZXJpZXMtZCAuY3QtYXJlYSwuY3Qtc2VyaWVzLWQgLmN0LXNsaWNlLXBpZXtmaWxsOiNkMTc5MDV9LmN0LXNlcmllcy1lIC5jdC1iYXIsLmN0LXNlcmllcy1lIC5jdC1saW5lLC5jdC1zZXJpZXMtZSAuY3QtcG9pbnQsLmN0LXNlcmllcy1lIC5jdC1zbGljZS1kb251dHtzdHJva2U6IzQ1M2QzZn0uY3Qtc2VyaWVzLWUgLmN0LWFyZWEsLmN0LXNlcmllcy1lIC5jdC1zbGljZS1waWV7ZmlsbDojNDUzZDNmfS5jdC1zZXJpZXMtZiAuY3QtYmFyLC5jdC1zZXJpZXMtZiAuY3QtbGluZSwuY3Qtc2VyaWVzLWYgLmN0LXBvaW50LC5jdC1zZXJpZXMtZiAuY3Qtc2xpY2UtZG9udXR7c3Ryb2tlOiM1OTkyMmJ9LmN0LXNlcmllcy1mIC5jdC1hcmVhLC5jdC1zZXJpZXMtZiAuY3Qtc2xpY2UtcGlle2ZpbGw6IzU5OTIyYn0uY3Qtc2VyaWVzLWcgLmN0LWJhciwuY3Qtc2VyaWVzLWcgLmN0LWxpbmUsLmN0LXNlcmllcy1nIC5jdC1wb2ludCwuY3Qtc2VyaWVzLWcgLmN0LXNsaWNlLWRvbnV0e3N0cm9rZTojMDU0NGQzfS5jdC1zZXJpZXMtZyAuY3QtYXJlYSwuY3Qtc2VyaWVzLWcgLmN0LXNsaWNlLXBpZXtmaWxsOiMwNTQ0ZDN9LmN0LXNlcmllcy1oIC5jdC1iYXIsLmN0LXNlcmllcy1oIC5jdC1saW5lLC5jdC1zZXJpZXMtaCAuY3QtcG9pbnQsLmN0LXNlcmllcy1oIC5jdC1zbGljZS1kb251dHtzdHJva2U6IzZiMDM5Mn0uY3Qtc2VyaWVzLWggLmN0LWFyZWEsLmN0LXNlcmllcy1oIC5jdC1zbGljZS1waWV7ZmlsbDojNmIwMzkyfS5jdC1zZXJpZXMtaSAuY3QtYmFyLC5jdC1zZXJpZXMtaSAuY3QtbGluZSwuY3Qtc2VyaWVzLWkgLmN0LXBvaW50LC5jdC1zZXJpZXMtaSAuY3Qtc2xpY2UtZG9udXR7c3Ryb2tlOiNmMDViNGZ9LmN0LXNlcmllcy1pIC5jdC1hcmVhLC5jdC1zZXJpZXMtaSAuY3Qtc2xpY2UtcGlle2ZpbGw6I2YwNWI0Zn0uY3Qtc2VyaWVzLWogLmN0LWJhciwuY3Qtc2VyaWVzLWogLmN0LWxpbmUsLmN0LXNlcmllcy1qIC5jdC1wb2ludCwuY3Qtc2VyaWVzLWogLmN0LXNsaWNlLWRvbnV0e3N0cm9rZTojZGRhNDU4fS5jdC1zZXJpZXMtaiAuY3QtYXJlYSwuY3Qtc2VyaWVzLWogLmN0LXNsaWNlLXBpZXtmaWxsOiNkZGE0NTh9LmN0LXNlcmllcy1rIC5jdC1iYXIsLmN0LXNlcmllcy1rIC5jdC1saW5lLC5jdC1zZXJpZXMtayAuY3QtcG9pbnQsLmN0LXNlcmllcy1rIC5jdC1zbGljZS1kb251dHtzdHJva2U6I2VhY2Y3ZH0uY3Qtc2VyaWVzLWsgLmN0LWFyZWEsLmN0LXNlcmllcy1rIC5jdC1zbGljZS1waWV7ZmlsbDojZWFjZjdkfS5jdC1zZXJpZXMtbCAuY3QtYmFyLC5jdC1zZXJpZXMtbCAuY3QtbGluZSwuY3Qtc2VyaWVzLWwgLmN0LXBvaW50LC5jdC1zZXJpZXMtbCAuY3Qtc2xpY2UtZG9udXR7c3Ryb2tlOiM4Njc5N2R9LmN0LXNlcmllcy1sIC5jdC1hcmVhLC5jdC1zZXJpZXMtbCAuY3Qtc2xpY2UtcGlle2ZpbGw6Izg2Nzk3ZH0uY3Qtc2VyaWVzLW0gLmN0LWJhciwuY3Qtc2VyaWVzLW0gLmN0LWxpbmUsLmN0LXNlcmllcy1tIC5jdC1wb2ludCwuY3Qtc2VyaWVzLW0gLmN0LXNsaWNlLWRvbnV0e3N0cm9rZTojYjJjMzI2fS5jdC1zZXJpZXMtbSAuY3QtYXJlYSwuY3Qtc2VyaWVzLW0gLmN0LXNsaWNlLXBpZXtmaWxsOiNiMmMzMjZ9LmN0LXNlcmllcy1uIC5jdC1iYXIsLmN0LXNlcmllcy1uIC5jdC1saW5lLC5jdC1zZXJpZXMtbiAuY3QtcG9pbnQsLmN0LXNlcmllcy1uIC5jdC1zbGljZS1kb251dHtzdHJva2U6IzYxODhlMn0uY3Qtc2VyaWVzLW4gLmN0LWFyZWEsLmN0LXNlcmllcy1uIC5jdC1zbGljZS1waWV7ZmlsbDojNjE4OGUyfS5jdC1zZXJpZXMtbyAuY3QtYmFyLC5jdC1zZXJpZXMtbyAuY3QtbGluZSwuY3Qtc2VyaWVzLW8gLmN0LXBvaW50LC5jdC1zZXJpZXMtbyAuY3Qtc2xpY2UtZG9udXR7c3Ryb2tlOiNhNzQ4Y2F9LmN0LXNlcmllcy1vIC5jdC1hcmVhLC5jdC1zZXJpZXMtbyAuY3Qtc2xpY2UtcGlle2ZpbGw6I2E3NDhjYX0uY3Qtc3F1YXJle2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uY3Qtc3F1YXJlOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjEwMCV9LmN0LXNxdWFyZTphZnRlcntkaXNwbGF5OnRhYmxlfS5jdC1zcXVhcmU+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1taW5vci1zZWNvbmR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5jdC1taW5vci1zZWNvbmQ6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7cGFkZGluZy1ib3R0b206OTMuNzUlfS5jdC1taW5vci1zZWNvbmQ6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWlub3Itc2Vjb25kPnN2Z3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY3QtbWFqb3Itc2Vjb25ke2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uY3QtbWFqb3Itc2Vjb25kOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjg4Ljg4ODg4ODg4ODklfS5jdC1tYWpvci1zZWNvbmQ6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWFqb3Itc2Vjb25kPnN2Z3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY3QtbWlub3ItdGhpcmR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5jdC1taW5vci10aGlyZDpiZWZvcmV7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtwYWRkaW5nLWJvdHRvbTo4My4zMzMzMzMzMzMzJX0uY3QtbWlub3ItdGhpcmQ6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWlub3ItdGhpcmQ+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1tYWpvci10aGlyZHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LW1ham9yLXRoaXJkOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjgwJX0uY3QtbWFqb3ItdGhpcmQ6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWFqb3ItdGhpcmQ+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1wZXJmZWN0LWZvdXJ0aHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LXBlcmZlY3QtZm91cnRoOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjc1JX0uY3QtcGVyZmVjdC1mb3VydGg6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtcGVyZmVjdC1mb3VydGg+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1wZXJmZWN0LWZpZnRoe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uY3QtcGVyZmVjdC1maWZ0aDpiZWZvcmV7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtwYWRkaW5nLWJvdHRvbTo2Ni42NjY2NjY2NjY3JX0uY3QtcGVyZmVjdC1maWZ0aDphZnRlcntkaXNwbGF5OnRhYmxlfS5jdC1wZXJmZWN0LWZpZnRoPnN2Z3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY3QtbWlub3Itc2l4dGh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5jdC1taW5vci1zaXh0aDpiZWZvcmV7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtwYWRkaW5nLWJvdHRvbTo2Mi41JX0uY3QtbWlub3Itc2l4dGg6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWlub3Itc2l4dGg+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1nb2xkZW4tc2VjdGlvbntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LWdvbGRlbi1zZWN0aW9uOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjYxLjgwNDY5NzE1NyV9LmN0LWdvbGRlbi1zZWN0aW9uOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtjbGVhcjpib3RofS5jdC1nb2xkZW4tc2VjdGlvbj5zdmd7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmN0LW1ham9yLXNpeHRoe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uY3QtbWFqb3Itc2l4dGg6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7cGFkZGluZy1ib3R0b206NjAlfS5jdC1tYWpvci1zaXh0aDphZnRlcntkaXNwbGF5OnRhYmxlfS5jdC1tYWpvci1zaXh0aD5zdmd7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmN0LW1pbm9yLXNldmVudGh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5jdC1taW5vci1zZXZlbnRoOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjU2LjI1JX0uY3QtbWlub3Itc2V2ZW50aDphZnRlcntkaXNwbGF5OnRhYmxlfS5jdC1taW5vci1zZXZlbnRoPnN2Z3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0uY3QtbWFqb3Itc2V2ZW50aHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LW1ham9yLXNldmVudGg6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7cGFkZGluZy1ib3R0b206NTMuMzMzMzMzMzMzMyV9LmN0LW1ham9yLXNldmVudGg6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWFqb3Itc2V2ZW50aD5zdmd7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmN0LW9jdGF2ZXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LW9jdGF2ZTpiZWZvcmV7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtwYWRkaW5nLWJvdHRvbTo1MCV9LmN0LW9jdGF2ZTphZnRlcntkaXNwbGF5OnRhYmxlfS5jdC1vY3RhdmU+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1tYWpvci10ZW50aHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LW1ham9yLXRlbnRoOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjQwJX0uY3QtbWFqb3ItdGVudGg6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtbWFqb3ItdGVudGg+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1tYWpvci1lbGV2ZW50aHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmN0LW1ham9yLWVsZXZlbnRoOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjM3LjUlfS5jdC1tYWpvci1lbGV2ZW50aDphZnRlcntkaXNwbGF5OnRhYmxlfS5jdC1tYWpvci1lbGV2ZW50aD5zdmd7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9LmN0LW1ham9yLXR3ZWxmdGh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5jdC1tYWpvci10d2VsZnRoOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO3BhZGRpbmctYm90dG9tOjMzLjMzMzMzMzMzMzMlfS5jdC1tYWpvci10d2VsZnRoOmFmdGVye2Rpc3BsYXk6dGFibGV9LmN0LW1ham9yLXR3ZWxmdGg+c3Zne2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5jdC1kb3VibGUtb2N0YXZle2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0uY3QtZG91YmxlLW9jdGF2ZTpiZWZvcmV7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtwYWRkaW5nLWJvdHRvbToyNSV9LmN0LWRvdWJsZS1vY3RhdmU6YWZ0ZXJ7ZGlzcGxheTp0YWJsZX0uY3QtZG91YmxlLW9jdGF2ZT5zdmd7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9"}},"time_used":192,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":192,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.864Z","timestamp":1785150870864,"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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/poppins/v24/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://punks.my\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 7748\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 03:05:43 GMT\r\nexpires: Fri, 23 Jul 2027 03:05:43 GMT\r\ncache-control: public, max-age=31536000\r\nage: 374927\r\nlast-modified: Mon, 15 Sep 2025 16:36:26 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":7748,"size_decoded":8560,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 7748, version 1.0","md5":"a09f2fccfee35b7247b08a1a266f0328","sha1":"0da2d17e738f46d2a09e6fb7969da451719a9820","sha256":"cd36de204aca2d5fa263a731f7c20009b5e3d754ba1f1e03c33e93a48f3e7446","sha512":"5e3f9a298003b84250ec6801e08ad2a4ff8845d4c3e13ea61bec37da24d26ede13b436257882124cc0c27e9a323ba92e7d23c6ad3f48a7b75535f5ed98813a0e","ssdeep":"96:0g6vAF/FXh6MmoI56TEwosGU/DbVF/QBT1gaHEYT6u/w3hXLbJPAS772+6haAftj:zp6x6TYpoDYBJg8TRkbJPAS/2+CzQa7","tlshash":"f3f19de65d1e5e8980f0102f6f6efce767950d88141dadf9a9e72f884c6ba1b04c90cd","first_seen":"2023-04-05T13:48:05Z","last_seen":"2026-07-27T12:59:07.136121Z","times_seen":268469,"resource_available":true,"data":"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"}},"time_used":41,"timings":{"blocked":19,"dns":0,"connect":0,"send":0,"wait":22,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/percircle/css/percircle.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.316Z","timestamp":1785150870316,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/percircle/css/percircle.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-1fa8\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ypc3V%2B3i5bvAF0vqtDS5nc8wPiYYcv7PmwOSLHZBKID%2F2l5AWAYyfJz2ZDKGzOFPBpmvvZslQOYRbGA9%2BPbelZfgids1xTVQgwXvEPCbon2%2Bo%2Bjg%2BB5g6xMCPw%3D%3D\"}]}\r\ncf-ray: a21b388b7bca56a2-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"]}],"data":{"size":8104,"size_decoded":2304,"mime_type":"text/css","magic":"ASCII text, with very long lines (1963)","md5":"c3767d0d5ad642565df23c3c71699ccb","sha1":"6f6925bb240d5841ceee5d6f190d81f371be968c","sha256":"045af52a7637c835048e6c92a2a5d93059fe1fab01f60ee39ee30c3c36ba0eea","sha512":"dcd99ba2637c79c8b6e44e8f6954e177f31476928d2cea639fd4d0692b83647c48a958cf8e44887f8269a01e738d6e2bf7f1ecb5846935882ebe8a8dba4d49d5","ssdeep":"96:7KXYDW4drZtPVnGgGepF0L75BtydVm4gxlkIYbtNZt0TUVYX8:GXYDW4drZttRHpwVBtyXh+mZ6TMYX8","tlshash":"62f17e7452a6034e7317c1bafef649cff22d7c7c18dbc6647f85272389aa1281427a85","first_seen":"2025-12-16T06:43:19.342923Z","last_seen":"2026-07-27T11:25:33.540494Z","times_seen":16,"resource_available":false,"data":"LnJlY3QtYXV0bywgLmMxMDAucDUxIC5zbGljZSwgLmMxMDAucDUyIC5zbGljZSwgLmMxMDAucDUzIC5zbGljZSwgLmMxMDAucDU0IC5zbGljZSwgLmMxMDAucDU1IC5zbGljZSwgLmMxMDAucDU2IC5zbGljZSwgLmMxMDAucDU3IC5zbGljZSwgLmMxMDAucDU4IC5zbGljZSwgLmMxMDAucDU5IC5zbGljZSwgLmMxMDAucDYwIC5zbGljZSwgLmMxMDAucDYxIC5zbGljZSwgLmMxMDAucDYyIC5zbGljZSwgLmMxMDAucDYzIC5zbGljZSwgLmMxMDAucDY0IC5zbGljZSwgLmMxMDAucDY1IC5zbGljZSwgLmMxMDAucDY2IC5zbGljZSwgLmMxMDAucDY3IC5zbGljZSwgLmMxMDAucDY4IC5zbGljZSwgLmMxMDAucDY5IC5zbGljZSwgLmMxMDAucDcwIC5zbGljZSwgLmMxMDAucDcxIC5zbGljZSwgLmMxMDAucDcyIC5zbGljZSwgLmMxMDAucDczIC5zbGljZSwgLmMxMDAucDc0IC5zbGljZSwgLmMxMDAucDc1IC5zbGljZSwgLmMxMDAucDc2IC5zbGljZSwgLmMxMDAucDc3IC5zbGljZSwgLmMxMDAucDc4IC5zbGljZSwgLmMxMDAucDc5IC5zbGljZSwgLmMxMDAucDgwIC5zbGljZSwgLmMxMDAucDgxIC5zbGljZSwgLmMxMDAucDgyIC5zbGljZSwgLmMxMDAucDgzIC5zbGljZSwgLmMxMDAucDg0IC5zbGljZSwgLmMxMDAucDg1IC5zbGljZSwgLmMxMDAucDg2IC5zbGljZSwgLmMxMDAucDg3IC5zbGljZSwgLmMxMDAucDg4IC5zbGljZSwgLmMxMDAucDg5IC5zbGljZSwgLmMxMDAucDkwIC5zbGljZSwgLmMxMDAucDkxIC5zbGljZSwgLmMxMDAucDkyIC5zbGljZSwgLmMxMDAucDkzIC5zbGljZSwgLmMxMDAucDk0IC5zbGljZSwgLmMxMDAucDk1IC5zbGljZSwgLmMxMDAucDk2IC5zbGljZSwgLmMxMDAucDk3IC5zbGljZSwgLmMxMDAucDk4IC5zbGljZSwgLmMxMDAucDk5IC5zbGljZSwgLmMxMDAucDEwMCAuc2xpY2UgewogIGNsaXA6IHJlY3QoYXV0bywgYXV0bywgYXV0bywgYXV0byk7Cn0KCi5waWUsIC5jMTAwIC5iYXIsIC5jMTAwLnA1MSAuZmlsbCwgLmMxMDAucDUyIC5maWxsLCAuYzEwMC5wNTMgLmZpbGwsIC5jMTAwLnA1NCAuZmlsbCwgLmMxMDAucDU1IC5maWxsLCAuYzEwMC5wNTYgLmZpbGwsIC5jMTAwLnA1NyAuZmlsbCwgLmMxMDAucDU4IC5maWxsLCAuYzEwMC5wNTkgLmZpbGwsIC5jMTAwLnA2MCAuZmlsbCwgLmMxMDAucDYxIC5maWxsLCAuYzEwMC5wNjIgLmZpbGwsIC5jMTAwLnA2MyAuZmlsbCwgLmMxMDAucDY0IC5maWxsLCAuYzEwMC5wNjUgLmZpbGwsIC5jMTAwLnA2NiAuZmlsbCwgLmMxMDAucDY3IC5maWxsLCAuYzEwMC5wNjggLmZpbGwsIC5jMTAwLnA2OSAuZmlsbCwgLmMxMDAucDcwIC5maWxsLCAuYzEwMC5wNzEgLmZpbGwsIC5jMTAwLnA3MiAuZmlsbCwgLmMxMDAucDczIC5maWxsLCAuYzEwMC5wNzQgLmZpbGwsIC5jMTAwLnA3NSAuZmlsbCwgLmMxMDAucDc2IC5maWxsLCAuYzEwMC5wNzcgLmZpbGwsIC5jMTAwLnA3OCAuZmlsbCwgLmMxMDAucDc5IC5maWxsLCAuYzEwMC5wODAgLmZpbGwsIC5jMTAwLnA4MSAuZmlsbCwgLmMxMDAucDgyIC5maWxsLCAuYzEwMC5wODMgLmZpbGwsIC5jMTAwLnA4NCAuZmlsbCwgLmMxMDAucDg1IC5maWxsLCAuYzEwMC5wODYgLmZpbGwsIC5jMTAwLnA4NyAuZmlsbCwgLmMxMDAucDg4IC5maWxsLCAuYzEwMC5wODkgLmZpbGwsIC5jMTAwLnA5MCAuZmlsbCwgLmMxMDAucDkxIC5maWxsLCAuYzEwMC5wOTIgLmZpbGwsIC5jMTAwLnA5MyAuZmlsbCwgLmMxMDAucDk0IC5maWxsLCAuYzEwMC5wOTUgLmZpbGwsIC5jMTAwLnA5NiAuZmlsbCwgLmMxMDAucDk3IC5maWxsLCAuYzEwMC5wOTggLmZpbGwsIC5jMTAwLnA5OSAuZmlsbCwgLmMxMDAucDEwMCAuZmlsbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlcjogMC4wOGVtIHNvbGlkICMzMDRmZmU7CiAgd2lkdGg6IDAuODRlbTsKICBoZWlnaHQ6IDAuODRlbTsKICBjbGlwOiByZWN0KDBlbSwgMC41ZW0sIDFlbSwgMGVtKTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAtby10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKfQoKLnBpZS1maWxsLCAuYzEwMC5wNTEgLmJhcjphZnRlciwgLmMxMDAucDUxIC5maWxsLCAuYzEwMC5wNTIgLmJhcjphZnRlciwgLmMxMDAucDUyIC5maWxsLCAuYzEwMC5wNTMgLmJhcjphZnRlciwgLmMxMDAucDUzIC5maWxsLCAuYzEwMC5wNTQgLmJhcjphZnRlciwgLmMxMDAucDU0IC5maWxsLCAuYzEwMC5wNTUgLmJhcjphZnRlciwgLmMxMDAucDU1IC5maWxsLCAuYzEwMC5wNTYgLmJhcjphZnRlciwgLmMxMDAucDU2IC5maWxsLCAuYzEwMC5wNTcgLmJhcjphZnRlciwgLmMxMDAucDU3IC5maWxsLCAuYzEwMC5wNTggLmJhcjphZnRlciwgLmMxMDAucDU4IC5maWxsLCAuYzEwMC5wNTkgLmJhcjphZnRlciwgLmMxMDAucDU5IC5maWxsLCAuYzEwMC5wNjAgLmJhcjphZnRlciwgLmMxMDAucDYwIC5maWxsLCAuYzEwMC5wNjEgLmJhcjphZnRlciwgLmMxMDAucDYxIC5maWxsLCAuYzEwMC5wNjIgLmJhcjphZnRlciwgLmMxMDAucDYyIC5maWxsLCAuYzEwMC5wNjMgLmJhcjphZnRlciwgLmMxMDAucDYzIC5maWxsLCAuYzEwMC5wNjQgLmJhcjphZnRlciwgLmMxMDAucDY0IC5maWxsLCAuYzEwMC5wNjUgLmJhcjphZnRlciwgLmMxMDAucDY1IC5maWxsLCAuYzEwMC5wNjYgLmJhcjphZnRlciwgLmMxMDAucDY2IC5maWxsLCAuYzEwMC5wNjcgLmJhcjphZnRlciwgLmMxMDAucDY3IC5maWxsLCAuYzEwMC5wNjggLmJhcjphZnRlciwgLmMxMDAucDY4IC5maWxsLCAuYzEwMC5wNjkgLmJhcjphZnRlciwgLmMxMDAucDY5IC5maWxsLCAuYzEwMC5wNzAgLmJhcjphZnRlciwgLmMxMDAucDcwIC5maWxsLCAuYzEwMC5wNzEgLmJhcjphZnRlciwgLmMxMDAucDcxIC5maWxsLCAuYzEwMC5wNzIgLmJhcjphZnRlciwgLmMxMDAucDcyIC5maWxsLCAuYzEwMC5wNzMgLmJhcjphZnRlciwgLmMxMDAucDczIC5maWxsLCAuYzEwMC5wNzQgLmJhcjphZnRlciwgLmMxMDAucDc0IC5maWxsLCAuYzEwMC5wNzUgLmJhcjphZnRlciwgLmMxMDAucDc1IC5maWxsLCAuYzEwMC5wNzYgLmJhcjphZnRlciwgLmMxMDAucDc2IC5maWxsLCAuYzEwMC5wNzcgLmJhcjphZnRlciwgLmMxMDAucDc3IC5maWxsLCAuYzEwMC5wNzggLmJhcjphZnRlciwgLmMxMDAucDc4IC5maWxsLCAuYzEwMC5wNzkgLmJhcjphZnRlciwgLmMxMDAucDc5IC5maWxsLCAuYzEwMC5wODAgLmJhcjphZnRlciwgLmMxMDAucDgwIC5maWxsLCAuYzEwMC5wODEgLmJhcjphZnRlciwgLmMxMDAucDgxIC5maWxsLCAuYzEwMC5wODIgLmJhcjphZnRlciwgLmMxMDAucDgyIC5maWxsLCAuYzEwMC5wODMgLmJhcjphZnRlciwgLmMxMDAucDgzIC5maWxsLCAuYzEwMC5wODQgLmJhcjphZnRlciwgLmMxMDAucDg0IC5maWxsLCAuYzEwMC5wODUgLmJhcjphZnRlciwgLmMxMDAucDg1IC5maWxsLCAuYzEwMC5wODYgLmJhcjphZnRlciwgLmMxMDAucDg2IC5maWxsLCAuYzEwMC5wODcgLmJhcjphZnRlciwgLmMxMDAucDg3IC5maWxsLCAuYzEwMC5wODggLmJhcjphZnRlciwgLmMxMDAucDg4IC5maWxsLCAuYzEwMC5wODkgLmJhcjphZnRlciwgLmMxMDAucDg5IC5maWxsLCAuYzEwMC5wOTAgLmJhcjphZnRlciwgLmMxMDAucDkwIC5maWxsLCAuYzEwMC5wOTEgLmJhcjphZnRlciwgLmMxMDAucDkxIC5maWxsLCAuYzEwMC5wOTIgLmJhcjphZnRlciwgLmMxMDAucDkyIC5maWxsLCAuYzEwMC5wOTMgLmJhcjphZnRlciwgLmMxMDAucDkzIC5maWxsLCAuYzEwMC5wOTQgLmJhcjphZnRlciwgLmMxMDAucDk0IC5maWxsLCAuYzEwMC5wOTUgLmJhcjphZnRlciwgLmMxMDAucDk1IC5maWxsLCAuYzEwMC5wOTYgLmJhcjphZnRlciwgLmMxMDAucDk2IC5maWxsLCAuYzEwMC5wOTcgLmJhcjphZnRlciwgLmMxMDAucDk3IC5maWxsLCAuYzEwMC5wOTggLmJhcjphZnRlciwgLmMxMDAucDk4IC5maWxsLCAuYzEwMC5wOTkgLmJhcjphZnRlciwgLmMxMDAucDk5IC5maWxsLCAuYzEwMC5wMTAwIC5iYXI6YWZ0ZXIsIC5jMTAwLnAxMDAgLmZpbGwgewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwp9CgouYzEwMCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZvbnQtc2l6ZTogMTIwcHg7CiAgd2lkdGg6IDFlbTsKICBoZWlnaHQ6IDFlbTsKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTsKICAtbXMtYm9yZGVyLXJhZGl1czogNTAlOwogIC1vLWJvcmRlci1yYWRpdXM6IDUwJTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luOiAwIDAuMWVtIDAuMWVtIDA7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0OCw3OSwyNTQsMC4yKTsKfQouYzEwMCAqLCAuYzEwMCAqOmJlZm9yZSwgLmMxMDAgKjphZnRlciB7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9Ci5jMTAwLmNlbnRlciB7CiAgZmxvYXQ6IG5vbmU7CiAgbWFyZ2luOiAwIGF1dG87Cn0KLmMxMDAuYmlnIHsKICBmb250LXNpemU6IDI0MHB4Owp9Ci5jMTAwLnNtYWxsIHsKICBmb250LXNpemU6IDgwcHg7Cn0KLmMxMDAuYmx1ZXsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ4LDc5LDI1NCwwLjIpOwp9Ci5jMTAwLmdyZWVuewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwyMTAsODcsMC4yKTsKfQouYzEwMC5vcmFuZ2V7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjEsMTU3LDM0LDAuMik7Cn0KLmMxMDAucGlua3sKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwxNDIsMTQyLDAuMik7Cn0KLmMxMDAgPiBzcGFuIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDEwMCU7CiAgei1pbmRleDogMTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICB3aWR0aDogNWVtOwogIGxpbmUtaGVpZ2h0OiA1ZW07CiAgZm9udC1zaXplOiAwLjJlbTsKICBjb2xvcjogI2NjY2NjYzsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDsKICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDsKICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsOwogIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4yczsKICAtbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7CiAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4yczsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzOwogIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIC1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7Cn0KLmMxMDA6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDAuMDhlbTsKICBsZWZ0OiAwLjA4ZW07CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiAiOwogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlOwogIC1tb3otYm9yZGVyLXJhZGl1czogNTAlOwogIC1tcy1ib3JkZXItcmFkaXVzOiA1MCU7CiAgLW8tYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlOwogIHdpZHRoOiAwLjg0ZW07CiAgaGVpZ2h0OiAwLjg0ZW07CiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7CiAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7CiAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsOwogIHRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDsKICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7CiAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzOwogIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4yczsKICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogIC1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47Cn0KLmMxMDAgLnNsaWNlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDFlbTsKICBoZWlnaHQ6IDFlbTsKICBjbGlwOiByZWN0KDBlbSwgMWVtLCAxZW0sIDAuNWVtKTsKfQoKLmMxMDA6aG92ZXIgewogIGN1cnNvcjogZGVmYXVsdDsKfQouYzEwMCA+IHNwYW57CiAgY29sb3I6ICMzMDRmZmU7Cn0KLmMxMDA6aG92ZXIgPiBzcGFuIHsKICB3aWR0aDogMy4zM2VtOwogIGxpbmUtaGVpZ2h0OiAzLjMzZW07CiAgZm9udC1zaXplOiAwLjNlbTsKICAKfQouYzEwMDpob3ZlcjphZnRlciB7CiAgdG9wOiAwLjA0ZW07CiAgbGVmdDogMC4wNGVtOwogIHdpZHRoOiAwLjkyZW07CiAgaGVpZ2h0OiAwLjkyZW07Cn0KLmMxMDAuZGFyayB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzc3Nzc3NzsKfQouYzEwMC5kYXJrIC5iYXIsCi5jMTAwLmRhcmsgLmZpbGwgewogIGJvcmRlci1jb2xvcjogI2M2ZmYwMCAhaW1wb3J0YW50Owp9Ci5jMTAwLmRhcmsgPiBzcGFuIHsKICBjb2xvcjogIzc3Nzc3NzsKfQouYzEwMC5kYXJrOmFmdGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NjY2Owp9Ci5jMTAwLmRhcmsgPiBzcGFuIHsKICBjb2xvcjogI2M2ZmYwMDsKfQouYzEwMC5ncmVlbiAuYmFyLCAuYzEwMC5ncmVlbiAuZmlsbCB7CiAgYm9yZGVyLWNvbG9yOiAjMDBkMjU3IWltcG9ydGFudDsKfQouYzEwMC5ncmVlbiA+IHNwYW4gewogIGNvbG9yOiAjMDBkMjU3Owp9Ci5jMTAwLmdyZWVuLmRhcmsgLmJhciwgLmMxMDAuZ3JlZW4uZGFyayAuZmlsbCB7CiAgYm9yZGVyLWNvbG9yOiAjNWZkNDAwICFpbXBvcnRhbnQ7Cn0KLmMxMDAuZ3JlZW4uZGFyazpob3ZlciA+IHNwYW4gewogIGNvbG9yOiAjNWZkNDAwOwp9Ci5jMTAwLm9yYW5nZSAuYmFyLCAuYzEwMC5vcmFuZ2UgLmZpbGwgewogIGJvcmRlci1jb2xvcjogI2RkOWQyMiAhaW1wb3J0YW50Owp9Ci5jMTAwLm9yYW5nZSA+IHNwYW4gewogIGNvbG9yOiAjZGQ5ZDIyOwp9Ci5jMTAwLm9yYW5nZS5kYXJrIC5iYXIsIC5jMTAwLm9yYW5nZS5kYXJrIC5maWxsIHsKICBib3JkZXItY29sb3I6ICNlMDg4MzMgIWltcG9ydGFudDsKfQouYzEwMC5vcmFuZ2UuZGFyayA+IHNwYW4gewogIGNvbG9yOiAjZTA4ODMzOwp9CgouYzEwMC5waW5rIC5iYXIsIC5jMTAwLnBpbmsgLmZpbGwgewogIGJvcmRlci1jb2xvcjogI2ZmOGU4ZSAhaW1wb3J0YW50Owp9Ci5jMTAwLnBpbmsgPiBzcGFuIHsKICBjb2xvcjogI2ZmOGU4ZTsKfQouYzEwMC5waW5rLmRhcmsgLmJhciwgLmMxMDAucGluay5kYXJrIC5maWxsIHsKICBib3JkZXItY29sb3I6ICNmZjhlOGUgIWltcG9ydGFudDsKfQouYzEwMC5waW5rLmRhcmsgPiBzcGFuIHsKICBjb2xvcjogI2ZmOGU4ZTsKfQoKLmRhcmstYXJlYSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNjY2OwoJcGFkZGluZzogNDBweDsKCW1hcmdpbjogMCAtNDBweCAyMHB4IC00MHB4OwoJY2xlYXI6IGJvdGg7Cn0KCi5jbGVhcmZpeDpiZWZvcmUsLmNsZWFyZml4OmFmdGVyIHtjb250ZW50OiAiICI7IGRpc3BsYXk6IHRhYmxlO30KLmNsZWFyZml4OmFmdGVyIHtjbGVhcjogYm90aDt9Ci5jbGVhcmZpeCB7Knpvb206IDE7fQ=="}},"time_used":196,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":196,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0083.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.378Z","timestamp":1785150870378,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0083.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-172\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=5Ca3SVDI4X7qUIOKuerJwrVO%2FcvQXbqJQiIN0Iz2Rm07MVa1gIYcfBcOPeAc8BXejGm%2B1pvx1RtLsHLJ6aNFnLSRIya4dNdiHRxrULabFMgIS%2FlZxPmaGEElbg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe956a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 370\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"]}],"data":{"size":370,"size_decoded":1144,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"c32745deb35d3735cd83a8202e5c066e","sha1":"5eb65988b49b037eccb3f16e9d2bfcf808dcaf15","sha256":"825bda89de8b21b1d281a8653a197174ef4f0b9e39bcee2b0aec3fe41c935eed","sha512":"1a27795aedf4164851b1aa31eec2e5803780db236c2c9bd16d9439d99f9397f0e088285837c89a6eb169cc2e6f0c9359038fda58f1ee85090fc27cc0a1e66e06","ssdeep":"","tlshash":"33e07d1ae461c5cfd201fb7845a51e22d206a1d452a4fdeac0fa505b24bfb3dc4961a1","first_seen":"2026-07-27T11:15:13.772454Z","last_seen":"2026-07-27T11:15:13.772454Z","times_seen":1,"resource_available":false,"data":"R0lGODlhIAAgAMQAAAAAACYmJjMzM0FBQW2TyHtqTn/O9ICnzIQ0NZa73qyUbbXr+7lJU73X8NCeednZ2d+6nvPz8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAAXvICCOJBmcKFqurIgqcBwHbQ0EhazP9orvikIgiBP2Rj9ZDiYkGo+3JbNYEFZxNCi1eu1as9BbajwOm7joNNhMbq/DAYE84Kjb62/tYB+AQE5/fXlHAXsDfX6JfoM9hXyJiIJmSHICiH+Lf5MuloCKkJs3lnWfoJtxdA6lkqedqouejI2jpYuhLqmrt0h2Zbsuvb8jCcSpDgHECbfIDQ0JxszOsiwBCwnNCREoEdfOC9MmC9bYEeXl3Qni4C7i6Obn2Opa7eQM9tzx3/PjzhEM/vi86SNEr9+9gOkGNjJgIAEBAgceIJD44MDDBAwHhQAAOw=="}},"time_used":193,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":193,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0049.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.384Z","timestamp":1785150870384,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0049.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-188\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Nmj%2Bpjf1VcJku0aHkahEuP8pqjlSd3AxaOPMokiIryBkejJHPIhD%2BJzLUPWKDax5kGR8I8LjVBhESW4bFcGf9pMtiivKIKfcpIfYC0UML5RKTtmlAyE%2FvMlhOQ%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bebee56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 392\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"]}],"data":{"size":392,"size_decoded":1166,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"48114d2ff7a4de9edc9e588b8cb2318a","sha1":"7ed98661a5be32fe72c8089fac45682902414678","sha256":"2396fd30497da531dad2ea2bc0804fb5d53cef42f4ce375c319b609afd8944d1","sha512":"f73bbdc965cb115bc0d89f1c70f44142dd991d6fe031443820cd27ed0f821fa70cc185f10afaca31c5ec3368357bddb4993c121ce31b312c02b0d59180384a4e","ssdeep":"","tlshash":"14e0c017c81d9ccef1098f352c4daa22c52c1f85c6ba2889245856b5d006d5ecf6aa13","first_seen":"2025-12-16T06:43:19.45857Z","last_seen":"2026-07-27T11:15:13.775623Z","times_seen":2,"resource_available":false,"data":"R0lGODlhIAAgAMQAAAAAAAAvcwBHnQwMDCckJCYmJjMzMzcxMU1NTWQxAmdSP4Q0NYprTo2NjY9ZKqeJbblJU7+/v////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAAX/ICCOJFkUZaquY4EgJxvNbOm+74mSc1+3uCCM14v8RAWD8GXYiXzHk2FKre5oR0BymtTpmk9jFMd9mM8xALR2y53fD+d61YbB0cRfvXA3O596VgODAw+EA2phgYcDDQSEjogjYmwGA1wHBI8PmY+TWVs6nYWjWSZcCgqGhWaDf5SVBQyptLV/plqyqXFvCihetywntHE6vloOycHCs7txDjsFyQnLdAzNtNIn09XW117I3LhI1wy34ONa5d3jOutp6bkFEgsLsub1Ou0C/AL09gXqSejHzkY/fhICBIAAYSBBXAUO+lPI0CG/giYkSmCocCCEixA1cgzg8SPGFhopBTY8WC0EADs="}},"time_used":196,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":196,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/bootstrap/fonts/glyphicons-halflings-regular.woff2","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.867Z","timestamp":1785150870867,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/bootstrap/fonts/glyphicons-halflings-regular.woff2 HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://punks.my/assets/plugin/bootstrap/css/bootstrap.min.css\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: 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 11:14:30 GMT\r\ncontent-type: font/woff2\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\npriority: u=3,i=?0\r\netag: \"65fffca9-466c\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\nage: 6999\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=j8RAXIehyb8FpuGl20dRkNSrF8Fg85eBxo3CVu9nlHdaJJdBHh5QYaZC9SmcIw0mAviEGh4pMhfv7EtO14WPVhzxXN%2BLzXosTNnx1nOkza%2Fvb8415eaTj3suYg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388eec0b56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 18028\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"]}],"data":{"size":18028,"size_decoded":18818,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 18028, version 1.589","md5":"448c34a56d699c29117adc64c43affeb","sha1":"ca35b697d99cae4d1b60f2d60fcd37771987eb07","sha256":"fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c","sha512":"3811804f56ec3c82f0bef35de0a9250e546a1e357fb59e2784f610d638fec355a27b480e3f796243c0e3d3743be3eadda8f9064c2b5b49577e16b7e40efcdb83","ssdeep":"384:Y22oezK7jlf4flnEPn9+1z2DIH6r3lEsNgV:Y22oeKjlCnm9+1y8gA","tlshash":"d082d0f4ea92999085b01c37d19acb48dc87b9cef5a4d01611e4e13eb5ff8ad684c6c8","first_seen":"2023-04-05T16:42:51Z","last_seen":"2026-07-27T11:31:32.766773Z","times_seen":51030,"resource_available":false,"data":"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"}},"time_used":11,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":11,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T11:14:29.799Z","timestamp":1785150869799,"http_version":"HTTP/2","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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: punks.my\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\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/2 200 \r\ndate: Mon, 27 Jul 2026 11:14:30 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nserver: cloudflare\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nvary: Accept-Encoding\r\ncache-control: no-cache, private\r\nset-cookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; expires=Mon, 27 Jul 2026 13:14:29 GMT; Max-Age=7200; path=/; samesite=lax\nlaravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D; expires=Mon, 27 Jul 2026 13:14:29 GMT; Max-Age=7200; path=/; httponly; samesite=lax\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=vWfxbEbStTme4f4mafspXqkjHjMEj%2F3RV1PAbGmAZ1p1RHa9cl9GyRXJeW6JTixen%2BuIjqVkoSJ7WtknWfZ5idVmTWxU1Dk3mqbpeflrQ9LnLzP%2FBU4zH1QPww%3D%3D\"}]}\r\ncf-cache-status: DYNAMIC\r\ncontent-encoding: zstd\r\ncf-ray: a21b388889e25696-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"SweetAlert","description":"SweetAlert is a JavaScript library that provides alternative alert and modal dialog boxes for web applications, with customisable features, aiming to improve the user interface of the default browser dialogs.","website":"https://sweetalert.js.org","common_platform_enumeration":"","icon":"SweetAlert.png","categories":["JavaScript libraries"]},{"name":"Moment.js","description":"Moment.js is a free and open-source JavaScript library that removes the need to use the native JavaScript Date object directly.","website":"https://momentjs.com","common_platform_enumeration":"cpe:2.3:a:momentjs:moment:*:*:*:*:*:*:*:*","icon":"Moment.js.svg","categories":["JavaScript libraries"]},{"name":"TypeScript","description":"TypeScript is an open-source language which builds on JavaScript  by adding static type definitions.","website":"https://www.typescriptlang.org","common_platform_enumeration":"","icon":"TypeScript.svg","categories":["Programming languages"]},{"name":"FullCalendar","description":"FullCalendar is a full-sized drag and drop JavaScript event calendar.","website":"https://fullcalendar.io","common_platform_enumeration":"","icon":"FullCalendar.png","categories":["Widgets"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Modernizr","description":"Modernizr is a JavaScript library that detects the features available in a user's browser.","website":"https://modernizr.com","common_platform_enumeration":"","icon":"Modernizr.svg","categories":["JavaScript libraries"]},{"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":"jQuery","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]}],"data":{"size":17530,"size_decoded":5936,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, ASCII text","md5":"96b3f567ecbd4146248d40380888cbc1","sha1":"d779c0b985f0e7d3ff3240145f3e072e81b4f38c","sha256":"cbeae133caff3e8a3bad7cd9f5f9f82fd2259d19cb8febc5117d3ba01f2ac316","sha512":"57614f0368bafc68da9c49952fcda4407aacf5340edc47e0a6b5ad17890517ebf248153c20c6cd33b312063a79d7602672167113687685d3af2ba60130d43922","ssdeep":"192:w6QjmWEnwA5tMCmKeJNxOEdU9O3yVJjCV7T8Ch3yfPrH6MP50dxqjMa27ECFjQNx:Jqs5tM7xhdmC+LgxqjMa2ICFjQNM997W","tlshash":"de7284b24ce62233026295c0a936ffdcb8d3442fda5e9501b2fc56496fd2e96cf43619","first_seen":"2026-07-27T11:15:13.778187Z","last_seen":"2026-07-27T11:15:13.778187Z","times_seen":1,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIiPgoKICAgIDx0aXRsZT5QVU5LUy5NWSAtIE1hbGF5c2lhJ3MgSGlzdG9yaWNhbCBORlQ8L3RpdGxlPgoKICAgIAogICAgPCEtLSBtQ3VzdG9tU2Nyb2xsYmFyIC0tPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3B1bmtzLm15L2Fzc2V0cy9wbHVnaW4vbUN1c3RvbVNjcm9sbGJhci9qcXVlcnkubUN1c3RvbVNjcm9sbGJhci5taW4uY3NzIj4KCiAgICA8IS0tIFdhdmVzIEVmZmVjdCAtLT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvcGx1Z2luL3dhdmVzL3dhdmVzLm1pbi5jc3MiPgoKICAgIDwhLS0gU3dlZXQgQWxlcnQgLS0+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9zd2VldC1hbGVydC9zd2VldGFsZXJ0LmNzcyI+CiAgICAKICAgIDwhLS0gUGVyY2VudCBDaXJjbGUgLS0+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9wZXJjaXJjbGUvY3NzL3BlcmNpcmNsZS5jc3MiPgoKICAgIDwhLS0gQ2hhcnRpc3QgQ2hhcnQgLS0+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9jaGFydC9jaGFydGlzdC9jaGFydGlzdC5taW4uY3NzIj4KCiAgICA8IS0tIEZ1bGxDYWxlbmRhciAtLT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvcGx1Z2luL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIubWluLmNzcyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9mdWxsY2FsZW5kYXIvZnVsbGNhbGVuZGFyLnByaW50LmNzcyIgbWVkaWE9J3ByaW50Jz4KCiAgICA8IS0tIE1haW4gU3R5bGVzIC0tPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3B1bmtzLm15L2Fzc2V0cy9zdHlsZXMvc3R5bGUuY3NzIj4KICAgIDxsaW5rIGlkPSJjdXN0b20tY29sb3ItdGhlbWVzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9hc3NldHMvc3R5bGVzL2NvbG9yL3JlZC5taW4uY3NzIj4KCiAgICA8IS0tIEZvbnRzIC0tPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIj4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVByZXNzK1N0YXJ0KzJQJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KCiAgICA8IS0tIEFwcCBDU1MgT3ZlcnJpZGUgLS0+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9jc3MvYXBwLmNzcyI+CgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvanMvZXRoZXJzLTUuMi51bWQubWluLmpzIiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4gICAgICAgIAo8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InVzZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLXdyYXAganNfX2Ryb3BfZG93biI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biBqc19fZHJvcF9kb3duX2J1dHRvbiI+PC9pPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWl0ZW0iPjxhIGhyZWY9IiMiPjxpIGNsYXNzPSJmYSBmYS11c2VyIj48L2k+IFByb2ZpbGU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1pdGVtIj48YSBocmVmPSIjIj48aSBjbGFzcz0iZmEgZmEtZ2VhciI+PC9pPiBTZXR0aW5nczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWl0ZW0iPjxhIGhyZWY9IiMiPjxpIGNsYXNzPSJmYSBmYS1zaWduLW91dCI+PC9pPiBMb2cgb3V0PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8IS0tIC8uY29udHJvbC1saXN0IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPCEtLSAvLmNvbnRyb2wtd3JhcCAtLT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8IS0tIC8udXNlciAtLT4KICAgIDwvaGVhZGVyPgogICAgPCEtLSAvLmhlYWRlciAtLT4KPGRpdiBjbGFzcz0ibWFpbi1tZW51Ij4KICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGEgaHJlZj0iLyIgY2xhc3M9ImxvZ28iIHN0eWxlPSJmb250LWZhbWlseTpQb3BwaW5zO2ZvbnQtd2VpZ2h0OmJvbGRlcjtmb250LXNpemU6MzZweDsiPjxpbWcgc3JjPSIvaW1nL3B1bmtzbXktd2hpdGUucG5nIiB3aWR0aD0iODAlIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo1cHgiPjwvYT4KCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidXR0b24tY2xvc2UgZmEgZmEtdGltZXMganNfX21lbnVfY2xvc2UiPjwvYnV0dG9uPgogICAgICAgIDxkaXYgY2xhc3M9InVzZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImF2YXRhciIgIG9uY2xpY2s9InNpZ25NZXRhbWFzaygpIj48aW1nIHNyYz0iL2ltZy9tZXRhbWFzay53ZWJwIiBhbHQ9IiI+PHNwYW4gY2xhc3M9IiI+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0ibmFtZSI+PGEgaHJlZj0iIyIgb25jbGljaz0ic2lnbk1ldGFtYXNrKCkiPkNvbm5lY3Q8L2E+PC9oNT4KICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0icG9zaXRpb24iPnRvIE1ldGFtYXNrPC9oNT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gLy5uYW1lIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIC8uY29udHJvbC13cmFwIC0tPgogICAgICAgIDwvZGl2PgogICAgICAgIDwhLS0gLy51c2VyIC0tPgogICAgPC9oZWFkZXI+CiAgICA8IS0tIC8uaGVhZGVyIC0tPgogICAgPGRpdiBjbGFzcz0iY29udGVudCI+CgogICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb24iPgogICAgICAgICAgICA8aDUgY2xhc3M9InRpdGxlIj5NYWluPC9oNT4KICAgICAgICAgICAgPCEtLSAvLnRpdGxlIC0tPgogICAgICAgICAgICA8dWwgY2xhc3M9Im1lbnUganNfX2FjY29yZGlvbiI+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IndhdmVzLWVmZmVjdCBhY3RpdmUiIGhyZWY9Ii8iPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtaW5mby1jaXJjbGUiPjwvaT48c3Bhbj5BYm91dDwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QgIiBocmVmPSIvaG9tZSI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS1ob21lIj48L2k+PHNwYW4+RGFzaGJvYXJkPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IndhdmVzLWVmZmVjdCBwYXJlbnQtaXRlbSBqc19fY29udHJvbCIgaHJlZj0iIyI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS1ib29rIj48L2k+PHNwYW4+UHVua3MgQ29sbGVjdGlvbjwvc3Bhbj48c3BhbiBjbGFzcz0ibWVudS1hcnJvdyBmYSBmYS1hbmdsZS1kb3duIj48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ic3ViLW1lbnUganNfX2NvbnRlbnQiICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibW9ubyI+PGEgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9wdW5rcy8xMDAiPjAwMDEtMDEwMCA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtb25vIj48YSBocmVmPSJodHRwczovL3B1bmtzLm15L3B1bmtzLzIwMCI+MDEwMS0wMjAwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibW9ubyI+PGEgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9wdW5rcy8zMDAiPjAyMDEtMDMwMDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im1vbm8iPjxhIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvcHVua3MvNDAwIj4wMzAxLTA0MDA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtb25vIj48YSBocmVmPSJodHRwczovL3B1bmtzLm15L3B1bmtzLzUwMCI+MDQwMS0wNTAwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibW9ubyI+PGEgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9wdW5rcy82MDAiPjA1MDEtMDYwMDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im1vbm8iPjxhIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvcHVua3MvNzAwIj4wNjAxLTA3MDA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtb25vIj48YSBocmVmPSJodHRwczovL3B1bmtzLm15L3B1bmtzLzgwMCI+MDcwMS0wODAwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibW9ubyI+PGEgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9wdW5rcy85MDAiPjA4MDEtMDkwMDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im1vbm8iPjxhIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvcHVua3MvMTAwMCI+MDkwMS0xMDAwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibW9ubyI+PGEgaHJlZj0iL2FsbCI+QUxMPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8IS0tIC8uc3ViLW1lbnUganNfX2NvbnRlbnQgLS0+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8IS0tIC8ubWVudSBqc19fYWNjb3JkaW9uIC0tPgogICAgICAgICAgICA8aDUgY2xhc3M9InRpdGxlIj5GaWx0ZXJzPC9oNT4KICAgICAgICAgICAgPHVsIGNsYXNzPSJtZW51IGpzX19hY2NvcmRpb24iPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QgIiBocmVmPSJodHRwczovL3B1bmtzLm15L3B1bmtzLWZpbHRlcmVkL3NvbGQiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtc3RhciI+PC9pPjxzcGFuPlNvbGQ8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0ICIgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9wdW5rcy1maWx0ZXJlZC91bnNvbGQiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtZ2F2ZWwiPjwvaT48c3Bhbj5VbnNvbGQ8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0ICIgaHJlZj0iaHR0cHM6Ly9wdW5rcy5teS9wdW5rcy1maWx0ZXJlZC9jaGVhcGVzdCI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS1zb3J0LWFtb3VudC1hc2MiPjwvaT48c3Bhbj5DaGVhcGVzdDwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L2xpPgoKCiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8aDUgY2xhc3M9InRpdGxlIj5TdGF0aXN0aWNzPC9oNT4KICAgICAgICAgICAgPHVsIGNsYXNzPSJtZW51IGpzX19hY2NvcmRpb24iPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QgIiBocmVmPSJodHRwczovL3B1bmtzLm15L3RvcC1jb2xsZWN0b3JzIj48aSBjbGFzcz0ibWVudS1pY29uIGZhIGZhLXRyb3BoeSI+PC9pPjxzcGFuPkxlYWRlcmJvYXJkPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IndhdmVzLWVmZmVjdCAiIGhyZWY9Imh0dHBzOi8vcHVua3MubXkvaGlnaGVzdC12aWV3cyI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS1hcmVhLWNoYXJ0Ij48L2k+PHNwYW4+SGlnaGVzdCBWaWV3czwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QgIiBocmVmPSJodHRwczovL3B1bmtzLm15L21vc3QtZXhwZW5zaXZlIiBocmVmPSJodHRwOi8vcHVua3MubXkvbW9zdC1leHBlbnNpdmUiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtbW9uZXkiPjwvaT48c3Bhbj5Nb3N0IEV4cGVuc2l2ZTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPGg1IGNsYXNzPSJ0aXRsZSI+T3BlblNlYTwvaDU+CiAgICAgICAgICAgIDx1bCBjbGFzcz0ibWVudSBqc19fYWNjb3JkaW9uIj4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0IiBocmVmPSJodHRwczovL29wZW5zZWEuaW8vY29sbGVjdGlvbi9wdW5rcy1tYWxheXNpYSIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtc2hpcCI+PC9pPjxzcGFuPk9wZW5TZWEgQ29sbGVjdGlvbjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QiIGhyZWY9Imh0dHBzOi8vb3BlbnNlYS5pby9jb2xsZWN0aW9uL3B1bmtzLW1hbGF5c2lhP3NlYXJjaFt0b2dnbGVzXVswXT1JU19MSVNURUQiIHRhcmdldD0iX2JsYW5rIj48aSBjbGFzcz0ibWVudS1pY29uIGZhIGZhLXNob3BwaW5nLWNhcnQiPjwvaT48c3Bhbj5MaXN0ZWQgRm9yIFNhbGU8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0IiBocmVmPSJodHRwczovL29wZW5zZWEuaW8vY29sbGVjdGlvbi9wdW5rcy1tYWxheXNpYT9zZWFyY2hbc29ydEFzY2VuZGluZ109ZmFsc2Umc2VhcmNoW3RvZ2dsZXNdWzBdPUlTX0xJU1RFRCIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtc29ydC1hbW91bnQtZGVzYyI+PC9pPjxzcGFuPkhpZ2ggdG8gTG93PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IndhdmVzLWVmZmVjdCIgaHJlZj0iaHR0cHM6Ly9vcGVuc2VhLmlvL2NvbGxlY3Rpb24vcHVua3MtbWFsYXlzaWEvYWN0aXZpdHkiIHRhcmdldD0iX2JsYW5rIj48aSBjbGFzcz0ibWVudS1pY29uIGZhIGZhLWFsaWduLWNlbnRlciI+PC9pPjxzcGFuPkFjdGl2aXR5PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICA8L3VsPiAgICAgICAgICAgIAoKICAgICAgICAgICAgPGg1IGNsYXNzPSJ0aXRsZSI+RXRoZXJzY2FuPC9oNT4KICAgICAgICAgICAgPHVsIGNsYXNzPSJtZW51IGpzX19hY2NvcmRpb24iPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QiIGhyZWY9Imh0dHBzOi8vZXRoZXJzY2FuLmlvL3Rva2VuLzB4ODU4ZWIyODk4Zjc1NDY5NDA0NGI1YWYwNTYyNTYzOTliYTMyN2FmMyNjb2RlIiB0YXJnZXQ9Il9ibGFuayI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS1lZGl0Ij48L2k+PHNwYW4+UHVua3MgQ29udHJhY3Q8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0IiBocmVmPSJodHRwczovL2V0aGVyc2Nhbi5pby90b2tlbi8weDg1OGViMjg5OGY3NTQ2OTQwNDRiNWFmMDU2MjU2Mzk5YmEzMjdhZjMjYmFsYW5jZXMiIHRhcmdldD0iX2JsYW5rIj48aSBjbGFzcz0ibWVudS1pY29uIGZhIGZhLXJvY2tldCI+PC9pPjxzcGFuPkhvZGxlcnM8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0IiBocmVmPSJodHRwczovL2V0aGVyc2Nhbi5pby90b2tlbi8weDg1OGViMjg5OGY3NTQ2OTQwNDRiNWFmMDU2MjU2Mzk5YmEzMjdhZjMjaW52ZW50b3J5IiB0YXJnZXQ9Il9ibGFuayI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS10YXNrcyI+PC9pPjxzcGFuPkludmVudG9yaWVzPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJ3YXZlcy1lZmZlY3QiIGhyZWY9Imh0dHBzOi8vZXRoZXJzY2FuLmlvL3Rva2VuLzB4ODU4ZWIyODk4Zjc1NDY5NDA0NGI1YWYwNTYyNTYzOTliYTMyN2FmMyN0b2tlbk5GVFRyYWRlIj48aSBjbGFzcz0ibWVudS1pY29uIGZhIGZhLWhpc3RvcnkiPjwvaT48c3Bhbj5TYWxlcyBIaXN0b3J5PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L3VsPiAgICAgICAgCgogICAgICAgICAgICA8aDUgY2xhc3M9InRpdGxlIj5GdW48L2g1PgogICAgICAgICAgICA8dWwgY2xhc3M9Im1lbnUganNfX2FjY29yZGlvbiI+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IndhdmVzLWVmZmVjdCIgaHJlZj0iL2FsbCI+PGkgY2xhc3M9Im1lbnUtaWNvbiBmYSBmYS1idWlsZGluZyI+PC9pPjxzcGFuPkFsbCBQdW5rczwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ3YXZlcy1lZmZlY3QiIGhyZWY9Ii9hbGw/bmF0aXZlPTEiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtYnVpbGRpbmciPjwvaT48c3Bhbj5BbGwgUHVua3MgKE5hdGl2ZSk8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0id2F2ZXMtZWZmZWN0IiBocmVmPSIvZ2FjaGEiPjxpIGNsYXNzPSJtZW51LWljb24gZmEgZmEtcmFuZG9tIj48L2k+PHNwYW4+R2FjaGEgUHVua3M8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4gICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgICA8IS0tIC8ubmF2aWdhdGlvbiAtLT4KICAgICAgICAKICAgIDwvZGl2PgogICAgPCEtLSAvLmNvbnRlbnQgLS0+CjwvZGl2Pgo8IS0tIC8ubWFpbi1tZW51IC0tPgoKPGRpdiBjbGFzcz0iZml4ZWQtbmF2YmFyICI+CiAgICA8ZGl2IGNsYXNzPSJwdWxsLWxlZnQiPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibWVudS1tb2JpbGUtYnV0dG9uIGdseXBoaWNvbiBnbHlwaGljb24tbWVudS1oYW1idXJnZXIganNfX21lbnVfbW9iaWxlIj48L2J1dHRvbj4KICAgICAgICA8aDEgY2xhc3M9InBhZ2UtdGl0bGUiPjwvaDE+CiAgICAgICAgPCEtLSAvLnBhZ2UtdGl0bGUgLS0+CiAgICA8L2Rpdj4KICAgIDwhLS0gLy5wdWxsLWxlZnQgLS0+ICAgIAo8L2Rpdj4KPCEtLSAvLmZpeGVkLW5hdmJhciAtLT4KPGRpdiBpZD0id3JhcHBlciI+CiAgICA8ZGl2IGNsYXNzPSJtYWluLWNvbnRlbnQiPiAgICAgICAgICAgIAogICAgPGRpdiBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0iL2ltZy9wdW5rc215LnBuZyIgd2lkdGg9IjkwJSIgc3R5bGU9Im1hcmdpbi1ib3R0b206MjBweCI+PC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb2wtbGctNCBjb2wtbWQtNiBjb2wteHMtMTIiPgoJPGRpdiBjbGFzcz0iYm94LWNvbnRlbnQiPgoJCTxoNCBjbGFzcz0iYm94LXRpdGxlIj5PcmlnaW5hbDwvaDQ+CgkJPCEtLSAvLmJveC10aXRsZSAtLT4KCQk8aW1nIHNyYz0iL2ltZy8xMDBwdW5rcy8wMDAwLmdpZiIgd2lkdGg9IjMzJSIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWQ7ZmxvYXQ6cmlnaHQiIGNsYXNzPSJmbGlwIj4KCQk8cD5UaGUgbGVnZW5kYXJ5IGNvbGxlY3Rpb24gb2YgQHB1bmtzbWFsYXlzaWEgd2lsbCBiZSB0YWxrZWQgYWJvdXQgaW4gdGhlIGhpc3Rvcnkgb2YgTWFsYXlzaWEncyBORlQgc2NlbmUuIERlc2lnbmVkIGFuZCBkcmF3biBjdXN0b20gb25lIGJ5IG9uZSBpZiAxMDAwIGljb25pYyBmaWd1cmVzIGluIE1hbGF5c2lhLjwvcD4KCTwvZGl2PgoJPCEtLSAvLmJveC1jb250ZW50IC0tPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbC1sZy00IGNvbC1tZC02IGNvbC14cy0xMiI+Cgk8ZGl2IGNsYXNzPSJib3gtY29udGVudCI+CgkJPGg0IGNsYXNzPSJib3gtdGl0bGUiPkhpc3RvcmljYWw8L2g0PgoJCTwhLS0gLy5ib3gtdGl0bGUgLS0+CgkJPGltZyBzcmM9Ii9pbWcvMTAwcHVua3MvMDAxMC5naWYiIHdpZHRoPSIzMyUiIHN0eWxlPSJpbWFnZS1yZW5kZXJpbmc6cGl4ZWxhdGVkO2Zsb2F0OnJpZ2h0IiBjbGFzcz0iZmxpcCI+CgkJPHA+VGhlIDFzdCBORlQgcHJvamVjdHMgd2l0aCBhIHB1YmxpYyBiaWxsIGJvYXJkIGV4cG9zdXJlIGluIE1hbGF5c2lhIGZvciAxIHllYXIgZHVyaW5nIHRoZSBORlQgY3JhemUuIEFsbW9zdCBldmVyeW9uZSBzYXcgdGhlIGJpbGxib2FyZC48L3A+Cgk8L2Rpdj4KCTwhLS0gLy5ib3gtY29udGVudCAtLT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb2wtbGctNCBjb2wtbWQtNiBjb2wteHMtMTIiPgoJPGRpdiBjbGFzcz0iYm94LWNvbnRlbnQiPgoJCTxoNCBjbGFzcz0iYm94LXRpdGxlIj5Db250cm92ZXJzaWFsPC9oND4KCQk8IS0tIC8uYm94LXRpdGxlIC0tPgoJCTxpbWcgc3JjPSIvaW1nLzEwMHB1bmtzLzAwMzguZ2lmIiB3aWR0aD0iMzMlIiBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZDtmbG9hdDpyaWdodCIgY2xhc3M9ImZsaXAiPgoJCTxwPlB1bmtzIGhhcyBiZWVuIHJpZGljdWxlLCBidWxsaWVkLCBhbmQgcGxhZ2lyaXNlZCBieSBhIGxvdCBvZiBoYXRlcnMuIFBlbnRhcyBoYXMgYmFubmVkIG91ciBCTkItQ2hhaW4gY29sbGVjdGlvbiBmb3IgdGhlaXIgb3duIGJlbmVmaXQuIEhlbmNlIHdlIG1vdmVkIHRvIEVUSCBibG9ja2NoYWluIGJlY29taW5nIGluZGVwZW5kYW50IG9mIGNlbnRyYWxpemF0aW9uLjwvcD4KCTwvZGl2PgoJPCEtLSAvLmJveC1jb250ZW50IC0tPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbC1sZy00IGNvbC1tZC02IGNvbC14cy0xMiI+Cgk8ZGl2IGNsYXNzPSJib3gtY29udGVudCI+CgkJPGg0IGNsYXNzPSJib3gtdGl0bGUiPk9uLUNoYWluIFNWRzwvaDQ+CgkJPCEtLSAvLmJveC10aXRsZSAtLT4KCQk8aW1nIHNyYz0iL2ltZy8xMDBwdW5rcy8wMDgzLmdpZiIgd2lkdGg9IjMzJSIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWQ7ZmxvYXQ6cmlnaHQiIGNsYXNzPSJmbGlwIj4KCQk8cD5ObyBtb3JlIHdvcnJ5aW5nIGFib3V0IGxvb3NpbmcgeW91ciBORlQuIE9uLWNoYWluIG1ldGFkYXRhIGFuZCBpbWFnZSBhcmUgc3RvcmVkIG9uIHRoZSBibG9ja2NoYWluIGZvciBldGVybml0eS48L3A+Cgk8L2Rpdj4KCTwhLS0gLy5ib3gtY29udGVudCAtLT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb2wtbGctNCBjb2wtbWQtNiBjb2wteHMtMTIiPgoJPGRpdiBjbGFzcz0iYm94LWNvbnRlbnQiPgoJCTxoNCBjbGFzcz0iYm94LXRpdGxlIj5PcHRpbWl6ZWQgUGl4ZWwgQ29kaW5nPC9oND4KCQk8IS0tIC8uYm94LXRpdGxlIC0tPgoJCTxpbWcgc3JjPSIvaW1nLzEwMHB1bmtzLzAwODIuZ2lmIiB3aWR0aD0iMzMlIiBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZDtmbG9hdDpyaWdodCIgY2xhc3M9ImZsaXAiPgoJCTxwPkVhY2ggcGl4ZWwgd2lsbCBiZSBjYXJlZnVsbHkgb3B0aW16ZWQgaW4gdGhlIFNWRyBtYXJrdXAgbWluaW1pemluZyBzdG9yYWdlIG9uIHRoZSBibG9ja2NoYWluLiBJdCdzIGEgY29kZXIgYXJ0aXN0J3MgYXJ0ICZhbXA7IGl0J3MgZ3JlZW4hIFdlJ3JlIHNhdmluZyBzcGFjZSE8L3A+Cgk8L2Rpdj4KCTwhLS0gLy5ib3gtY29udGVudCAtLT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb2wtbGctNCBjb2wtbWQtNiBjb2wteHMtMTIiPgoJPGRpdiBjbGFzcz0iYm94LWNvbnRlbnQiPgoJCTxoNCBjbGFzcz0iYm94LXRpdGxlIj5FdGhlcmV1bSBCbG9ja2NoYWluPC9oND4KCQk8IS0tIC8uYm94LXRpdGxlIC0tPgoJCTxpbWcgc3JjPSIvaW1nLzEwMHB1bmtzLzAwMjEuZ2lmIiB3aWR0aD0iMzMlIiBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZDtmbG9hdDpyaWdodCIgY2xhc3M9ImZsaXAiPgoJCTxwPlVubGlrZSBpbW1pdGF0aW9uIGJsb2NrY2hhaW4gb3IgMm5kIGxheWVyIHRlbXBvcmFsIHNvbHV0aW9uIGRlc2lnbmVkIGZvciBEZUZpIGhpZ2ggZnJlcXVlbmN5IFRYLCB3ZSBiZWxpZXZlIFJFQUwgTkZUIHNob3VsZCBiZSBpbiB0aGUgY2hhaW4gd2hlcmUgbG9uZ2V2aXR5IGlzIGFzc3VyZWQuPC9wPgoJPC9kaXY+Cgk8IS0tIC8uYm94LWNvbnRlbnQgLS0+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY29sLWxnLTQgY29sLW1kLTYgY29sLXhzLTEyIj4KCTxkaXYgY2xhc3M9ImJveC1jb250ZW50Ij4KCQk8aDQgY2xhc3M9ImJveC10aXRsZSI+RnV0dXJlIFBlcmtzPC9oND4KCQk8IS0tIC8uYm94LXRpdGxlIC0tPgoJCTxpbWcgc3JjPSIvaW1nLzEwMHB1bmtzLzAwMjQuZ2lmIiB3aWR0aD0iMzMlIiBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZDtmbG9hdDpyaWdodCIgY2xhc3M9ImZsaXAiPgoJCTxwPk93bmluZyBvdXIgcHVua3MgZ2l2ZXMgZ3JlYXQgYmVuZWZpdHMgZm9yIGZ1dHVyZSBwcm9qZWN0cyBhbmQgb3VyIGxvbmcgdGVybSBkZWRpY2F0aW9uIHRvIHRoZSBORlQgc2NlbmUgYW5kIHByaXZhdGUgYWNjZXNzLjwvcD4KCTwvZGl2PgoJPCEtLSAvLmJveC1jb250ZW50IC0tPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbC1sZy00IGNvbC1tZC02IGNvbC14cy0xMiI+Cgk8ZGl2IGNsYXNzPSJib3gtY29udGVudCI+CgkJPGg0IGNsYXNzPSJib3gtdGl0bGUiPlByb2plY3QgUm9hZG1hcDwvaDQ+CgkJPCEtLSAvLmJveC10aXRsZSAtLT4KCQk8aW1nIHNyYz0iL2ltZy8xMDBwdW5rcy8wMDMxLmdpZiIgd2lkdGg9IjMzJSIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWQ7ZmxvYXQ6cmlnaHQiIGNsYXNzPSJmbGlwIj4KCQk8cD48bGk+T3JpZ2luYWwgUHVua3MgTWFsYXlzaWE8L2xpPjwvcD4KCQk8cD48bGk+R2FjaGEgUHVua3MgVW5saW1pdGVkPC9saT48L3A+CgkJPHA+PGxpPk5GVC5NWSBNYXJrZXRwbGFjZTwvbGk+PC9wPgoJCTxwPjxsaT5LQlNNIENvbGxlY3Rpb248L2xpPjwvcD4KCTwvZGl2PgoJPCEtLSAvLmJveC1jb250ZW50IC0tPgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbC1sZy00IGNvbC1tZC02IGNvbC14cy0xMiI+Cgk8ZGl2IGNsYXNzPSJib3gtY29udGVudCI+CgkJPGg0IGNsYXNzPSJib3gtdGl0bGUiPjIwMjQgUmVzdXJyZWN0aW9uPC9oND4KCQk8IS0tIC8uYm94LXRpdGxlIC0tPgoJCTxpbWcgc3JjPSIvaW1nLzEwMHB1bmtzLzAwNDkuZ2lmIiB3aWR0aD0iMzMlIiBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZDtmbG9hdDpyaWdodCIgY2xhc3M9ImZsaXAiPgoJCVdlIGFyZSBwcm91ZCB0byBzdGlsbCBiZSB3b3JraW5nIG9uIHRoaXMgTkZUIGNvbGxlY3Rpb24gZm9yIHRoZSBmdXR1cmUgb2YgTkZUIHNjZW5lLiBXaXRoIHRoZSBORlQgc2NlbmUgcXVpZXRpbmcgcmlnaHQgbm93LCB3ZSBzdGlsbCBzdHJpdmUgdG8ga2VlcCB0aGlzIGNvbGxlY3Rpb24gYWxpdmUuIEZ1dHVyZSBwZXJrcyB3aWxsIGJlIGNvbWluZyB0byBQdW5rIGhvZGxlcnMuCgk8L2Rpdj4KCTwhLS0gLy5ib3gtY29udGVudCAtLT4KPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIEhUTUw1IHNoaW0gYW5kIFJlc3BvbmQuanMgZm9yIElFOCBzdXBwb3J0IG9mIEhUTUw1IGVsZW1lbnRzIGFuZCBtZWRpYSBxdWVyaWVzIC0tPgo8IS0tW2lmIGx0IElFIDldPgo8c2NyaXB0IHNyYz0iYXNzZXRzL3NjcmlwdC9odG1sNXNoaXYubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9ImFzc2V0cy9zY3JpcHQvcmVzcG9uZC5taW4uanMiPjwvc2NyaXB0Pgo8IVtlbmRpZl0tLT4KPCEtLSAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CjwhLS0gUGxhY2VkIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50IHNvIHRoZSBwYWdlcyBsb2FkIGZhc3RlciAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3NjcmlwdHMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3B1bmtzLm15L2Fzc2V0cy9zY3JpcHRzL21vZGVybml6ci5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvcGx1Z2luL2Jvb3RzdHJhcC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9tQ3VzdG9tU2Nyb2xsYmFyL2pxdWVyeS5tQ3VzdG9tU2Nyb2xsYmFyLmNvbmNhdC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvcGx1Z2luL25wcm9ncmVzcy9ucHJvZ3Jlc3MuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvcGx1Z2luL3N3ZWV0LWFsZXJ0L3N3ZWV0YWxlcnQubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi93YXZlcy93YXZlcy5taW4uanMiPjwvc2NyaXB0Pgo8IS0tIEZ1bGwgU2NyZWVuIFBsdWdpbiAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9mdWxsc2NyZWVuL2pxdWVyeS5mdWxsc2NyZWVuLW1pbi5qcyI+PC9zY3JpcHQ+Cgo8IS0tIFBlcmNlbnQgQ2lyY2xlIC0tPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvcGx1Z2luL3BlcmNpcmNsZS9qcy9wZXJjaXJjbGUuanMiPjwvc2NyaXB0PgoKPCEtLSBHb29nbGUgQ2hhcnQgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2NoYXJ0cy9sb2FkZXIuanMiPjwvc2NyaXB0PgoKPCEtLSBDaGFydGlzdCBDaGFydCAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9jaGFydC9jaGFydGlzdC9jaGFydGlzdC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9wdW5rcy5teS9hc3NldHMvc2NyaXB0cy9jaGFydC5jaGFydGlzdC5pbml0Lm1pbi5qcyI+PC9zY3JpcHQ+Cgo8IS0tIEZ1bGxDYWxlbmRhciAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9tb21lbnQvbW9tZW50LmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vcHVua3MubXkvYXNzZXRzL3BsdWdpbi9mdWxsY2FsZW5kYXIvZnVsbGNhbGVuZGFyLm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3B1bmtzLm15L2Fzc2V0cy9zY3JpcHRzL2Z1bGxjYWxlbmRhci5pbml0LmpzIj48L3NjcmlwdD4KCjxzY3JpcHQgc3JjPSJodHRwczovL3B1bmtzLm15L2Fzc2V0cy9zY3JpcHRzL21haW4ubWluLmpzIj48L3NjcmlwdD4KCjxzY3JpcHQ+CmFzeW5jIGZ1bmN0aW9uIHNpZ25NZXRhbWFzaygpIHsKICAgIGlmICh0eXBlb2Ygd2luZG93LmV0aGVyZXVtID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgYWxlcnQoIlBsZWFzZSBpbnN0YWxsIE1ldGFtYXNrIik7CgkJcmV0dXJuIGZhbHNlOwogICAgfTsKCiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBldGhlcnMucHJvdmlkZXJzLldlYjNQcm92aWRlcih3aW5kb3cuZXRoZXJldW0pCiAgICBjb25zdCBzaWduZXIgPSBwcm92aWRlci5nZXRTaWduZXIoKQogICAgY29uc3QgYWNjdHMgPSBhd2FpdCBldGhlcmV1bS5yZXF1ZXN0KHsKICAgICAgICBtZXRob2Q6ICdldGhfcmVxdWVzdEFjY291bnRzJwogICAgfSk7CiAgICBjb25zdCBjdXJyZW50QWRkcmVzcyA9IGFjY3RzWzBdOwogICAgbm9uY2UgPSBnZXRSYW5kb21JbnQoKTsKICAgIG1lc3NhZ2UgPSAncHVua3MubXk6JyArIG5vbmNlOwogICAgY29uc29sZS5sb2coY3VycmVudEFkZHJlc3MpOwogICAgc2lnbmF0dXJlID0gYXdhaXQgc2lnbmVyLnNpZ25NZXNzYWdlKG1lc3NhZ2UpOwogICAgY29uc29sZS5sb2coc2lnbmF0dXJlKTsKICAgIHdpbmRvdy5sb2NhdGlvbiA9ICgnL3ZlcmlmeS8nICsgY3VycmVudEFkZHJlc3MgKyAnLycgKyBzaWduYXR1cmUgKyAnLycgKyBub25jZSk7Cn0KCmZ1bmN0aW9uIGdldFJhbmRvbUludCgpIHsKICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5OTk5OTk5KTsKfQoKZnVuY3Rpb24gcmFuZG9tSW50ZWdlcihtaW4sIG1heCkgewogICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47Cn0KPC9zY3JpcHQ+Cgo8IS0tIEdsb2JhbCBzaXRlIHRhZyAoZ3RhZy5qcykgLSBHb29nbGUgQW5hbHl0aWNzIC0tPgo8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLU0zNzRKRjQzNEoiPjwvc2NyaXB0Pgo8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwoKICBndGFnKCdjb25maWcnLCAnRy1NMzc0SkY0MzRKJyk7Cjwvc2NyaXB0PjwvYm9keT4KPC9odG1sPg=="}},"time_used":282,"timings":{"blocked":-1,"dns":34,"connect":1,"send":0,"wait":236,"receive":0,"ssl":11},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.306Z","timestamp":1785150870306,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-a6b5\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=nWIEH7qsrM7RbSn2T%2BQ5YDEpwGoy%2Bu%2FiZMFqVHZJ5WwO8qpy2rYxZvJ1Ijh42uZgDk%2FRQPwhp7%2FVeOHouuIfMugs2I16sv0oX7hF7O2ClnE9wMqZQ66o4Twnsw%3D%3D\"}]}\r\ncf-ray: a21b388b6bc756a2-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"]}],"data":{"size":42677,"size_decoded":5051,"mime_type":"text/css","magic":"ASCII text, with very long lines (42677), with no line terminators","md5":"20209b8ff8b93b0b37c131a6a696075e","sha1":"0de6a56ecfe0dc27a32abbce2f16b4ab7879e9c3","sha256":"a6ac937a414d99b0850634da047fa930670368a2b2d69425d97c76b278a01266","sha512":"182503f378c2ff2d4d9e2efb88106be0a4b548358840aa269e1b766a35043881c388f94c7e570a467c970a26d17522745807db75e9d28d23e2e00a0480e4e198","ssdeep":"768:h2tDRbNWmYd7Z1t6vw7R01rnk6BcxL+zhRNxA5l2ng7ytcKaWDxQ:h2tDRsmYd7Z1t6+R9","tlshash":"4813179a2a4336dffa4f447dbb81379a01fc37835552166cb0d75ca4ab88bf7a439402","first_seen":"2025-10-23T00:01:03.669233Z","last_seen":"2026-07-27T11:25:33.519017Z","times_seen":31,"resource_available":false,"data":"Lm1DdXN0b21TY3JvbGxiYXJ7LW1zLXRvdWNoLWFjdGlvbjpwaW5jaC16b29tO3RvdWNoLWFjdGlvbjpwaW5jaC16b29tfS5tQ3VzdG9tU2Nyb2xsYmFyLm1DU19ub19zY3JvbGxiYXIsLm1DdXN0b21TY3JvbGxiYXIubUNTX3RvdWNoX2FjdGlvbnstbXMtdG91Y2gtYWN0aW9uOmF1dG87dG91Y2gtYWN0aW9uOmF1dG99Lm1DdXN0b21TY3JvbGxCb3h7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxMDAlO21heC13aWR0aDoxMDAlO291dGxpbmU6MDtkaXJlY3Rpb246bHRyfS5tQ1NCX2NvbnRhaW5lcntvdmVyZmxvdzpoaWRkZW47d2lkdGg6YXV0bztoZWlnaHQ6YXV0b30ubUNTQl9pbnNpZGU+Lm1DU0JfY29udGFpbmVyey8qIG1hcmdpbi1yaWdodDozMHB4ICovfS5tQ1NCX2NvbnRhaW5lci5tQ1Nfbm9fc2Nyb2xsYmFyX3kubUNTX3lfaGlkZGVue21hcmdpbi1yaWdodDowfS5tQ1MtZGlyLXJ0bD4ubUNTQl9pbnNpZGU+Lm1DU0JfY29udGFpbmVye21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjMwcHh9Lm1DUy1kaXItcnRsPi5tQ1NCX2luc2lkZT4ubUNTQl9jb250YWluZXIubUNTX25vX3Njcm9sbGJhcl95Lm1DU195X2hpZGRlbnttYXJnaW4tbGVmdDowfS5tQ1NCX3Njcm9sbFRvb2xze3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOiAxMHB4O2hlaWdodDphdXRvO2xlZnQ6YXV0bzt0b3A6MDtyaWdodDowO2JvdHRvbTowO29wYWNpdHk6Ljc1O2ZpbHRlcjoiYWxwaGEob3BhY2l0eT03NSkiOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9NzUpIjt9Lm1DU0Jfb3V0c2lkZSsubUNTQl9zY3JvbGxUb29sc3tyaWdodDotMjZweH0ubUNTLWRpci1ydGw+Lm1DU0JfaW5zaWRlPi5tQ1NCX3Njcm9sbFRvb2xzLC5tQ1MtZGlyLXJ0bD4ubUNTQl9vdXRzaWRlKy5tQ1NCX3Njcm9sbFRvb2xze3JpZ2h0OmF1dG87bGVmdDowfS5tQ1MtZGlyLXJ0bD4ubUNTQl9vdXRzaWRlKy5tQ1NCX3Njcm9sbFRvb2xze2xlZnQ6LTI2cHh9Lm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlckNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDtoZWlnaHQ6YXV0b30ubUNTQl9zY3JvbGxUb29scyBhKy5tQ1NCX2RyYWdnZXJDb250YWluZXJ7bWFyZ2luOjIwcHggMH0ubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHt3aWR0aDoycHg7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgYXV0bzstd2Via2l0LWJvcmRlci1yYWRpdXM6MTZweDstbW96LWJvcmRlci1yYWRpdXM6MTZweDtib3JkZXItcmFkaXVzOjE2cHh9Lm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcntjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO2hlaWdodDozMHB4O3otaW5kZXg6MX0ubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjRweDtoZWlnaHQ6MTAwJTttYXJnaW46MCBhdXRvOy13ZWJraXQtYm9yZGVyLXJhZGl1czoxNnB4Oy1tb3otYm9yZGVyLXJhZGl1czoxNnB4O2JvcmRlci1yYWRpdXM6MTZweDt0ZXh0LWFsaWduOmNlbnRlcn0ubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnX2V4cGFuZGVkIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7d2lkdGg6MTJweH0ubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnX2V4cGFuZGVkKy5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjhweH0ubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3duLC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjIwcHg7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47bWFyZ2luOjAgYXV0bztjdXJzb3I6cG9pbnRlcn0ubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JvdHRvbTowfS5tQ1NCX2hvcml6b250YWwubUNTQl9pbnNpZGU+Lm1DU0JfY29udGFpbmVye21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206MzBweH0ubUNTQl9ob3Jpem9udGFsLm1DU0Jfb3V0c2lkZT4ubUNTQl9jb250YWluZXJ7bWluLWhlaWdodDoxMDAlfS5tQ1NCX2hvcml6b250YWw+Lm1DU0JfY29udGFpbmVyLm1DU19ub19zY3JvbGxiYXJfeC5tQ1NfeF9oaWRkZW57bWFyZ2luLWJvdHRvbTowfS5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbHt3aWR0aDphdXRvO2hlaWdodDoxNnB4O3RvcDphdXRvO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowfS5tQ3VzdG9tU2Nyb2xsQm94Ky5tQ1NCX3Njcm9sbFRvb2xzKy5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCwubUN1c3RvbVNjcm9sbEJveCsubUNTQl9zY3JvbGxUb29scy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWx7Ym90dG9tOi0yNnB4fS5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCBhKy5tQ1NCX2RyYWdnZXJDb250YWluZXJ7bWFyZ2luOjAgMjBweH0ubUNTQl9zY3JvbGxUb29scy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWx7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O21hcmdpbjo3cHggMH0ubUNTQl9zY3JvbGxUb29scy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlcnt3aWR0aDozMHB4O2hlaWdodDoxMDAlO2xlZnQ6MH0ubUNTQl9zY3JvbGxUb29scy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnt3aWR0aDoxMDAlO2hlaWdodDo0cHg7bWFyZ2luOjZweCBhdXRvfS5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZ19leHBhbmRlZCAubUNTQl9kcmFnZ2VyX2JhciwubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7aGVpZ2h0OjEycHg7bWFyZ2luOjJweCBhdXRvfS5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZ19leHBhbmRlZCsubUNTQl9kcmFnZ2VyUmFpbCwubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlse2hlaWdodDo4cHg7bWFyZ2luOjRweCAwfS5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9idXR0b25MZWZ0LC5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9idXR0b25SaWdodHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwcHg7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowIGF1dG87Y3Vyc29yOnBvaW50ZXJ9Lm1DU0Jfc2Nyb2xsVG9vbHMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2J1dHRvbkxlZnR7bGVmdDowfS5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9idXR0b25SaWdodHtyaWdodDowfS5tQ1NCX2NvbnRhaW5lcl93cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDphdXRvO3dpZHRoOmF1dG87b3ZlcmZsb3c6aGlkZGVuO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO21hcmdpbi1yaWdodDozMHB4O21hcmdpbi1ib3R0b206MzBweH0ubUNTQl9jb250YWluZXJfd3JhcHBlcj4ubUNTQl9jb250YWluZXJ7cGFkZGluZy1yaWdodDozMHB4O3BhZGRpbmctYm90dG9tOjMwcHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5tQ1NCX3ZlcnRpY2FsX2hvcml6b250YWw+Lm1DU0Jfc2Nyb2xsVG9vbHMubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbHtib3R0b206MjBweH0ubUNTQl92ZXJ0aWNhbF9ob3Jpem9udGFsPi5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbHtyaWdodDoyMHB4fS5tQ1NCX2NvbnRhaW5lcl93cmFwcGVyLm1DU19ub19zY3JvbGxiYXJfeC5tQ1NfeF9oaWRkZW4rLm1DU0Jfc2Nyb2xsVG9vbHMubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbHtib3R0b206MH0ubUNTLWRpci1ydGw+Lm1DdXN0b21TY3JvbGxCb3gubUNTQl92ZXJ0aWNhbF9ob3Jpem9udGFsLm1DU0JfaW5zaWRlPi5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCwubUNTQl9jb250YWluZXJfd3JhcHBlci5tQ1Nfbm9fc2Nyb2xsYmFyX3kubUNTX3lfaGlkZGVuKy5tQ1NCX3Njcm9sbFRvb2xzfi5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbHtyaWdodDowfS5tQ1MtZGlyLXJ0bD4ubUN1c3RvbVNjcm9sbEJveC5tQ1NCX3ZlcnRpY2FsX2hvcml6b250YWwubUNTQl9pbnNpZGU+Lm1DU0Jfc2Nyb2xsVG9vbHMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFse2xlZnQ6MjBweH0ubUNTLWRpci1ydGw+Lm1DdXN0b21TY3JvbGxCb3gubUNTQl92ZXJ0aWNhbF9ob3Jpem9udGFsLm1DU0JfaW5zaWRlPi5tQ1NCX2NvbnRhaW5lcl93cmFwcGVyLm1DU19ub19zY3JvbGxiYXJfeS5tQ1NfeV9oaWRkZW4rLm1DU0Jfc2Nyb2xsVG9vbHN+Lm1DU0Jfc2Nyb2xsVG9vbHMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFse2xlZnQ6MH0ubUNTLWRpci1ydGw+Lm1DU0JfaW5zaWRlPi5tQ1NCX2NvbnRhaW5lcl93cmFwcGVye21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjMwcHh9Lm1DU0JfY29udGFpbmVyX3dyYXBwZXIubUNTX25vX3Njcm9sbGJhcl95Lm1DU195X2hpZGRlbj4ubUNTQl9jb250YWluZXJ7cGFkZGluZy1yaWdodDowfS5tQ1NCX2NvbnRhaW5lcl93cmFwcGVyLm1DU19ub19zY3JvbGxiYXJfeC5tQ1NfeF9oaWRkZW4+Lm1DU0JfY29udGFpbmVye3BhZGRpbmctYm90dG9tOjB9Lm1DdXN0b21TY3JvbGxCb3gubUNTQl92ZXJ0aWNhbF9ob3Jpem9udGFsLm1DU0JfaW5zaWRlPi5tQ1NCX2NvbnRhaW5lcl93cmFwcGVyLm1DU19ub19zY3JvbGxiYXJfeS5tQ1NfeV9oaWRkZW57bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MH0ubUN1c3RvbVNjcm9sbEJveC5tQ1NCX3ZlcnRpY2FsX2hvcml6b250YWwubUNTQl9pbnNpZGU+Lm1DU0JfY29udGFpbmVyX3dyYXBwZXIubUNTX25vX3Njcm9sbGJhcl94Lm1DU194X2hpZGRlbnttYXJnaW4tYm90dG9tOjB9Lm1DU0Jfc2Nyb2xsVG9vbHMsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uRG93biwubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0LC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0LC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwLC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjJzIGVhc2UtaW4tb3V0Oy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlLWluLW91dDstby10cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjJzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZS1pbi1vdXQsYmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZS1pbi1vdXR9Lm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlclJhaWwsLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyX2Jhcnstd2Via2l0LXRyYW5zaXRpb246d2lkdGggLjJzIGVhc2Utb3V0IC4ycyxoZWlnaHQgLjJzIGVhc2Utb3V0IC4ycyxtYXJnaW4tbGVmdCAuMnMgZWFzZS1vdXQgLjJzLG1hcmdpbi1yaWdodCAuMnMgZWFzZS1vdXQgLjJzLG1hcmdpbi10b3AgLjJzIGVhc2Utb3V0IC4ycyxtYXJnaW4tYm90dG9tIC4ycyBlYXNlLW91dCAuMnMsb3BhY2l0eSAuMnMgZWFzZS1pbi1vdXQsYmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZS1pbi1vdXQ7LW1vei10cmFuc2l0aW9uOndpZHRoIC4ycyBlYXNlLW91dCAuMnMsaGVpZ2h0IC4ycyBlYXNlLW91dCAuMnMsbWFyZ2luLWxlZnQgLjJzIGVhc2Utb3V0IC4ycyxtYXJnaW4tcmlnaHQgLjJzIGVhc2Utb3V0IC4ycyxtYXJnaW4tdG9wIC4ycyBlYXNlLW91dCAuMnMsbWFyZ2luLWJvdHRvbSAuMnMgZWFzZS1vdXQgLjJzLG9wYWNpdHkgLjJzIGVhc2UtaW4tb3V0LGJhY2tncm91bmQtY29sb3IgLjJzIGVhc2UtaW4tb3V0Oy1vLXRyYW5zaXRpb246d2lkdGggLjJzIGVhc2Utb3V0IC4ycyxoZWlnaHQgLjJzIGVhc2Utb3V0IC4ycyxtYXJnaW4tbGVmdCAuMnMgZWFzZS1vdXQgLjJzLG1hcmdpbi1yaWdodCAuMnMgZWFzZS1vdXQgLjJzLG1hcmdpbi10b3AgLjJzIGVhc2Utb3V0IC4ycyxtYXJnaW4tYm90dG9tIC4ycyBlYXNlLW91dCAuMnMsb3BhY2l0eSAuMnMgZWFzZS1pbi1vdXQsYmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjp3aWR0aCAuMnMgZWFzZS1vdXQgLjJzLGhlaWdodCAuMnMgZWFzZS1vdXQgLjJzLG1hcmdpbi1sZWZ0IC4ycyBlYXNlLW91dCAuMnMsbWFyZ2luLXJpZ2h0IC4ycyBlYXNlLW91dCAuMnMsbWFyZ2luLXRvcCAuMnMgZWFzZS1vdXQgLjJzLG1hcmdpbi1ib3R0b20gLjJzIGVhc2Utb3V0IC4ycyxvcGFjaXR5IC4ycyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlLWluLW91dH0ubUNTLWF1dG9IaWRlPi5tQ3VzdG9tU2Nyb2xsQm94Pi5tQ1NCX3Njcm9sbFRvb2xzLC5tQ1MtYXV0b0hpZGU+Lm1DdXN0b21TY3JvbGxCb3h+Lm1DU0Jfc2Nyb2xsVG9vbHN7b3BhY2l0eTowO2ZpbHRlcjoiYWxwaGEob3BhY2l0eT0wKSI7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0wKSJ9Lm1DUy1hdXRvSGlkZTpob3Zlcj4ubUN1c3RvbVNjcm9sbEJveD4ubUNTQl9zY3JvbGxUb29scywubUNTLWF1dG9IaWRlOmhvdmVyPi5tQ3VzdG9tU2Nyb2xsQm94fi5tQ1NCX3Njcm9sbFRvb2xzLC5tQ3VzdG9tU2Nyb2xsQm94OmhvdmVyPi5tQ1NCX3Njcm9sbFRvb2xzLC5tQ3VzdG9tU2Nyb2xsQm94OmhvdmVyfi5tQ1NCX3Njcm9sbFRvb2xzLC5tQ3VzdG9tU2Nyb2xsYmFyPi5tQ3VzdG9tU2Nyb2xsQm94Pi5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnLC5tQ3VzdG9tU2Nyb2xsYmFyPi5tQ3VzdG9tU2Nyb2xsQm94fi5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFne29wYWNpdHk6MTtmaWx0ZXI6ImFscGhhKG9wYWNpdHk9MTAwKSI7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0xMDApIn0ubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHsvKiBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7ICovLyogYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40KTsgKi9maWx0ZXI6ImFscGhhKG9wYWNpdHk9NDApIjstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTQwKSI7fS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7LyogYmFja2dyb3VuZC1jb2xvcjojZmZmOyAqL2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjMwLDIzMCwyMzAsLjcpO29wYWNpdHk6IDA7fS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6aG92ZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IHJnYigyMzAsMjMwLDIzMCk7fS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmFjdGl2ZSAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMwLDIzMCwyMzApO30ubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3duLC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnQsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHQsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1pbWFnZTp1cmwobUNTQl9idXR0b25zLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O29wYWNpdHk6LjQ7ZmlsdGVyOiJhbHBoYShvcGFjaXR5PTQwKSI7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT00MCkifS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246MCAwfS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMHB4fS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC00MHB4fS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246MCAtNTZweH0ubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3duOmhvdmVyLC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnQ6aG92ZXIsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHQ6aG92ZXIsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXA6aG92ZXJ7b3BhY2l0eTouNzU7ZmlsdGVyOiJhbHBoYShvcGFjaXR5PTc1KSI7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT03NSkifS5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd246YWN0aXZlLC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnQ6YWN0aXZlLC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0OmFjdGl2ZSwubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcDphY3RpdmV7b3BhY2l0eTouOTtmaWx0ZXI6ImFscGhhKG9wYWNpdHk9OTApIjstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTkwKSJ9Lm1DUy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTUpfS5tQ1MtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNzUpfS5tQ1MtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6aG92ZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44NSl9Lm1DUy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuOSl9Lm1DUy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS5tQ1MtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjBweH0ubUNTLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTQwcHh9Lm1DUy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNTZweH0ubUNTLWRhcmstMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtbGlnaHQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKTstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4Oy1tb3otYm9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyLXJhZGl1czoxcHh9Lm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbGlnaHQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7d2lkdGg6NHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjc1KTstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4Oy1tb3otYm9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyLXJhZGl1czoxcHh9Lm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtbGlnaHQtMi5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWxpZ2h0LTIubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjEwMCU7aGVpZ2h0OjRweDttYXJnaW46NnB4IGF1dG99Lm1DUy1saWdodC0yLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC44NSl9Lm1DUy1saWdodC0yLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbGlnaHQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpfS5tQ1MtbGlnaHQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0ubUNTLWxpZ2h0LTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIwcHh9Lm1DUy1saWdodC0yLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MHB4IC00MHB4fS5tQ1MtbGlnaHQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTU2cHh9Lm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4Oy1tb3otYm9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyLXJhZGl1czoxcHh9Lm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjc1KTstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4Oy1tb3otYm9yZGVyLXJhZGl1czoxcHg7Ym9yZGVyLXJhZGl1czoxcHh9Lm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmhvdmVyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg1KX0ubUNTLWRhcmstMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWRhcmstMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjkpfS5tQ1MtZGFyay0yLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggMH0ubUNTLWRhcmstMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTIwcHh9Lm1DUy1kYXJrLTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC00MHB4fS5tQ1MtZGFyay0yLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTU2cHh9Lm1DUy1kYXJrLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1saWdodC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKTstd2Via2l0LWJvcmRlci1yYWRpdXM6MnB4Oy1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHh9Lm1DUy1kYXJrLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWxpZ2h0LXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnt3aWR0aDo2cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNzUpOy13ZWJraXQtYm9yZGVyLXJhZGl1czoycHg7LW1vei1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweH0ubUNTLWRhcmstdGhpY2subUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtbGlnaHQtdGhpY2subUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjEwMCU7aGVpZ2h0OjRweDttYXJnaW46NnB4IDB9Lm1DUy1kYXJrLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbGlnaHQtdGhpY2subUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7d2lkdGg6MTAwJTtoZWlnaHQ6NnB4O21hcmdpbjo1cHggYXV0b30ubUNTLWxpZ2h0LXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC44NSl9Lm1DUy1saWdodC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWxpZ2h0LXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjphY3RpdmUgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSl9Lm1DUy1saWdodC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggMH0ubUNTLWxpZ2h0LXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uRG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0yMHB4fS5tQ1MtbGlnaHQtdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTIwcHggLTQwcHh9Lm1DUy1saWdodC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTIwcHggLTU2cHh9Lm1DUy1kYXJrLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSk7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4fS5tQ1MtZGFyay10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNzUpOy13ZWJraXQtYm9yZGVyLXJhZGl1czoycHg7LW1vei1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweH0ubUNTLWRhcmstdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmhvdmVyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg1KX0ubUNTLWRhcmstdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWcgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1kYXJrLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjphY3RpdmUgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuOSl9Lm1DUy1kYXJrLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAwfS5tQ1MtZGFyay10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMjBweH0ubUNTLWRhcmstdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTEwMHB4IC00MHB4fS5tQ1MtZGFyay10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTEwMHB4IC01NnB4fS5tQ1MtbGlnaHQtdGhpbi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWxpZ2h0LXRoaW4ubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye3dpZHRoOjJweH0ubUNTLWRhcmstdGhpbi5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1saWdodC10aGluLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbHt3aWR0aDoxMDAlfS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbGlnaHQtdGhpbi5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnt3aWR0aDoxMDAlO2hlaWdodDoycHg7bWFyZ2luOjdweCBhdXRvfS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTUpfS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC43NSl9Lm1DUy1kYXJrLXRoaW4ubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmhvdmVyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg1KX0ubUNTLWRhcmstdGhpbi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWRhcmstdGhpbi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjkpfS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uRG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMHB4fS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC00MHB4fS5tQ1MtZGFyay10aGluLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNTZweH0ubUNTLXJvdW5kZWQubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyLC5tQ1Mtcm91bmRlZC1kb3RzLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyLC5tQ1Mtcm91bmRlZC1kb3RzLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciwubUNTLXJvdW5kZWQubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2Vye2hlaWdodDoxNHB4fS5tQ1Mtcm91bmRlZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLXJvdW5kZWQtZG90cy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnt3aWR0aDoxNHB4O21hcmdpbjowIDFweH0ubUNTLXJvdW5kZWQtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciwubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyLC5tQ1Mtcm91bmRlZC1kb3RzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyLC5tQ1Mtcm91bmRlZC5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlcnt3aWR0aDoxNHB4fS5tQ1Mtcm91bmRlZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1Mtcm91bmRlZC1kb3RzLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLWRvdHMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye2hlaWdodDoxNHB4O21hcmdpbjoxcHggMH0ubUNTLXJvdW5kZWQtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWdfZXhwYW5kZWQgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlckNvbnRhaW5lcjpob3ZlciAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1Mtcm91bmRlZC5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWdfZXhwYW5kZWQgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXJDb250YWluZXI6aG92ZXIgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O21hcmdpbjotMXB4IDB9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnX2V4cGFuZGVkKy5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1Mtcm91bmRlZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXJDb250YWluZXI6aG92ZXIgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1yb3VuZGVkLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZ19leHBhbmRlZCsubUNTQl9kcmFnZ2VyUmFpbCwubUNTLXJvdW5kZWQubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlckNvbnRhaW5lcjpob3ZlciAubUNTQl9kcmFnZ2VyUmFpbHt3aWR0aDo0cHh9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWdfZXhwYW5kZWQgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnX2V4cGFuZGVkIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1Mtcm91bmRlZC5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXJDb250YWluZXI6aG92ZXIgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhcntoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O21hcmdpbjowIC0xcHh9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWdfZXhwYW5kZWQrLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1Mtcm91bmRlZC5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZ19leHBhbmRlZCsubUNTQl9kcmFnZ2VyUmFpbCwubUNTLXJvdW5kZWQubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlse2hlaWdodDo0cHg7bWFyZ2luOjZweCAwfS5tQ1Mtcm91bmRlZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246MCAtNzJweH0ubUNTLXJvdW5kZWQubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246MCAtOTJweH0ubUNTLXJvdW5kZWQubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTEycHh9Lm1DUy1yb3VuZGVkLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjhweH0ubUNTLXJvdW5kZWQtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLWRvdHMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNzUpfS5tQ1Mtcm91bmRlZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTUpfS5tQ1Mtcm91bmRlZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44NSl9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWcgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmFjdGl2ZSAubUNTQl9kcmFnZ2VyX2JhciwubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1Mtcm91bmRlZC1kb3RzLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmFjdGl2ZSAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC45KX0ubUNTLXJvdW5kZWQtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTcycHh9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTkycHh9Lm1DUy1yb3VuZGVkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTExMnB4fS5tQ1Mtcm91bmRlZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTI4cHh9Lm1DUy1yb3VuZGVkLWRvdHMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1Mtcm91bmRlZC1kb3RzLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwgLm1DU0JfZHJhZ2dlclJhaWx7d2lkdGg6NHB4fS5tQ1Mtcm91bmRlZC1kb3RzLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLXJvdW5kZWQtZG90cy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1Mtcm91bmRlZC1kb3RzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyfS5tQ1Mtcm91bmRlZC1kb3RzLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLXJvdW5kZWQtZG90cy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWdBQUFBSUNBWUFBQURFRDc2TEFBQUFORWxFUVZRWVYyTmtJQUFZaVZidy8vOS9ZNkRpTTFBTkpveU1qR2RCYkxnSlFBWC9rVTBES2dETGthUUF2eFc0SEV2UUZ3Q1JjeElKSzFYem5BQUFBQUJKUlU1RXJrSmdnZz09KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteTtvcGFjaXR5Oi4zO2ZpbHRlcjoiYWxwaGEob3BhY2l0eT0zMCkiOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MzApIn0ubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLXJvdW5kZWQtZG90cy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWx7aGVpZ2h0OjRweDttYXJnaW46NnB4IDA7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1DUy1yb3VuZGVkLWRvdHMubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC03MnB4fS5tQ1Mtcm91bmRlZC1kb3RzLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uRG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC05MnB4fS5tQ1Mtcm91bmRlZC1kb3RzLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMHB4IC0xMTJweH0ubUNTLXJvdW5kZWQtZG90cy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTIwcHggLTEyOHB4fS5tQ1Mtcm91bmRlZC1kb3RzLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFnQUFBQUlDQVlBQUFERUQ3NkxBQUFBTEVsRVFWUVlWMk5rSUFBWVNWRmdERlI4QnFyQkJFaWZCYkdSVGZpUFpocFlqaVFGQkszQTZsNkN2Z0FBRTlrR0NkMW12Z0VBQUFBQVNVVk9SSzVDWUlJPSl9Lm1DUy1yb3VuZGVkLWRvdHMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTcycHh9Lm1DUy1yb3VuZGVkLWRvdHMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtOTJweH0ubUNTLXJvdW5kZWQtZG90cy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMDBweCAtMTEycHh9Lm1DUy1yb3VuZGVkLWRvdHMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTEwMHB4IC0xMjhweH0ubUNTLTNkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsLjUpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLHJpZ2h0IHRvcCxjb2xvci1zdG9wKDAscmdiYSgyNTUsMjU1LDI1NSwuNSkpLGNvbG9yLXN0b3AoMTAwJSxyZ2JhKDI1NSwyNTUsMjU1LDApKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsLjUpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsLjUpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQobGVmdCxyZ2JhKDI1NSwyNTUsMjU1LC41KSAwLHJnYmEoMjU1LDI1NSwyNTUsMCkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQscmdiYSgyNTUsMjU1LDI1NSwuNSkgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpfS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC10aGljay5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLHJnYmEoMjU1LDI1NSwyNTUsLjUpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGNvbG9yLXN0b3AoMCxyZ2JhKDI1NSwyNTUsMjU1LC41KSksY29sb3Itc3RvcCgxMDAlLHJnYmEoMjU1LDI1NSwyNTUsMCkpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCxyZ2JhKDI1NSwyNTUsMjU1LC41KSAwLHJnYmEoMjU1LDI1NSwyNTUsMCkgMTAwJSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLHJnYmEoMjU1LDI1NSwyNTUsLjUpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLHJnYmEoMjU1LDI1NSwyNTUsLjUpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgyNTUsMjU1LDI1NSwuNSkgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpfS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsIC5tQ1NCX2RyYWdnZXIsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsIC5tQ1NCX2RyYWdnZXJ7aGVpZ2h0OjcwcHh9Lm1DUy0zZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyLC5tQ1MtM2QubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJ7d2lkdGg6NzBweH0ubUNTLTNkLWRhcmsubUNTQl9zY3JvbGxUb29scywubUNTLTNkLm1DU0Jfc2Nyb2xsVG9vbHN7b3BhY2l0eToxO2ZpbHRlcjoiYWxwaGEob3BhY2l0eT0zMCkiOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MzApIn0ubUNTLTNkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtM2QubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHstd2Via2l0LWJvcmRlci1yYWRpdXM6MTZweDstbW96LWJvcmRlci1yYWRpdXM6MTZweDtib3JkZXItcmFkaXVzOjE2cHh9Lm1DUy0zZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjhweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yKTtib3gtc2hhZG93Omluc2V0IDFweCAwIDFweCByZ2JhKDAsMCwwLC41KSxpbnNldCAtMXB4IDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjIpfS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6aG92ZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjphY3RpdmUgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6aG92ZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojNTU1fS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7d2lkdGg6OHB4fS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWx7d2lkdGg6MTAwJTtoZWlnaHQ6OHB4O21hcmdpbjo0cHggMDtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC41KSxpbnNldCAwIC0xcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjIpfS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye3dpZHRoOjEwMCU7aGVpZ2h0OjhweDttYXJnaW46NHB4IGF1dG99Lm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwe2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTcycHh9Lm1DUy0zZC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTJweH0ubUNTLTNkLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MHB4IC0xMTJweH0ubUNTLTNkLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDBweCAtMTI4cHh9Lm1DUy0zZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSk7Ym94LXNoYWRvdzppbnNldCAxcHggMCAxcHggcmdiYSgwLDAsMCwuMSl9Lm1DUy0zZC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbHtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKX0ubUNTLTNkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNzJweH0ubUNTLTNkLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05MnB4fS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTExMnB4fS5tQ1MtM2QtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0xMjhweH0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29scywubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHN7b3BhY2l0eToxO2ZpbHRlcjoiYWxwaGEob3BhY2l0eT0zMCkiOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MzApIn0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29scywubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyQ29udGFpbmVyLC5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29scywubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlckNvbnRhaW5lcnstd2Via2l0LWJvcmRlci1yYWRpdXM6N3B4Oy1tb3otYm9yZGVyLXJhZGl1czo3cHg7Ym9yZGVyLXJhZGl1czo3cHh9Lm1DU0JfaW5zaWRlKy5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLC5tQ1NCX2luc2lkZSsubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWx7cmlnaHQ6MXB4fS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLC5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbHtib3gtc2hhZG93Omluc2V0IDFweCAwIDFweCByZ2JhKDAsMCwwLC4xKSxpbnNldCAwIDAgMTRweCByZ2JhKDAsMCwwLC41KX0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLC5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFse2JvdHRvbToxcHg7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMSksaW5zZXQgMCAwIDE0cHggcmdiYSgwLDAsMCwuNSl9Lm1DUy0zZC10aGljay1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnstd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4Oy1tb3otYm9yZGVyLXJhZGl1czo1cHg7Ym9yZGVyLXJhZGl1czo1cHg7Ym94LXNoYWRvdzppbnNldCAxcHggMCAwIHJnYmEoMjU1LDI1NSwyNTUsLjQpO3dpZHRoOjEycHg7bWFyZ2luOjJweDtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6YXV0bzt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MH0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC10aGljay5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcntib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuNCk7aGVpZ2h0OjEycHg7d2lkdGg6YXV0b30ubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmFjdGl2ZSAubUNTQl9kcmFnZ2VyX2JhciwubUNTLTNkLXRoaWNrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiM1NTV9Lm1DUy0zZC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJDb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6aW5zZXQgMXB4IDFweCAxNnB4IHJnYmEoMCwwLDAsLjEpfS5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC03MnB4fS5tQ1MtM2QtdGhpY2subUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTkycHh9Lm1DUy0zZC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDBweCAtMTEycHh9Lm1DUy0zZC10aGljay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTEyOHB4fS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xze2JveC1zaGFkb3c6aW5zZXQgMCAwIDE0cHggcmdiYSgwLDAsMCwuMil9Lm1DUy0zZC10aGljay1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbHtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKSxpbnNldCAwIDAgMTRweCByZ2JhKDAsMCwwLC4yKX0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye2JveC1zaGFkb3c6aW5zZXQgMXB4IDAgMCByZ2JhKDI1NSwyNTUsMjU1LC40KSxpbnNldCAtMXB4IDAgMCByZ2JhKDAsMCwwLC4yKX0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjQpLGluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjIpfS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy0zZC10aGljay1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6aG92ZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojNzc3fS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJDb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6aW5zZXQgMXB4IDFweCAxNnB4IHJnYmEoMCwwLDAsLjEpfS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtbWluaW1hbC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1taW5pbWFsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNzJweH0ubUNTLTNkLXRoaWNrLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05MnB4fS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTExMnB4fS5tQ1MtM2QtdGhpY2stZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0xMjhweH0ubUNTQl9vdXRzaWRlKy5tQ1MtbWluaW1hbC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwsLm1DU0Jfb3V0c2lkZSsubUNTLW1pbmltYWwubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbHtyaWdodDowO21hcmdpbjoxMnB4IDB9Lm1DdXN0b21TY3JvbGxCb3gubUNTLW1pbmltYWwrLm1DU0Jfc2Nyb2xsVG9vbHMrLm1DU0Jfc2Nyb2xsVG9vbHMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLC5tQ3VzdG9tU2Nyb2xsQm94Lm1DUy1taW5pbWFsKy5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCwubUN1c3RvbVNjcm9sbEJveC5tQ1MtbWluaW1hbC1kYXJrKy5tQ1NCX3Njcm9sbFRvb2xzKy5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCwubUN1c3RvbVNjcm9sbEJveC5tQ1MtbWluaW1hbC1kYXJrKy5tQ1NCX3Njcm9sbFRvb2xzLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbHtib3R0b206MDttYXJnaW46MCAxMnB4fS5tQ1MtZGlyLXJ0bD4ubUNTQl9vdXRzaWRlKy5tQ1MtbWluaW1hbC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwsLm1DUy1kaXItcnRsPi5tQ1NCX291dHNpZGUrLm1DUy1taW5pbWFsLm1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWx7bGVmdDowO3JpZ2h0OmF1dG99Lm1DUy1taW5pbWFsLWRhcmsubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbCAubUNTQl9kcmFnZ2VyLC5tQ1MtbWluaW1hbC5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsIC5tQ1NCX2RyYWdnZXJ7aGVpZ2h0OjUwcHh9Lm1DUy1taW5pbWFsLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIsLm1DUy1taW5pbWFsLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2Vye3dpZHRoOjUwcHh9Lm1DUy1taW5pbWFsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yKTtmaWx0ZXI6ImFscGhhKG9wYWNpdHk9MjApIjstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTIwKSJ9Lm1DUy1taW5pbWFsLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbWluaW1hbC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpO2ZpbHRlcjoiYWxwaGEob3BhY2l0eT01MCkiOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9NTApIn0ubUNTLW1pbmltYWwtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMik7ZmlsdGVyOiJhbHBoYShvcGFjaXR5PTIwKSI7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0yMCkifS5tQ1MtbWluaW1hbC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbWluaW1hbC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjphY3RpdmUgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSk7ZmlsdGVyOiJhbHBoYShvcGFjaXR5PTUwKSI7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT01MCkifS5tQ1MtZGFyay0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1saWdodC0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7d2lkdGg6NnB4O2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjIpfS5tQ1MtZGFyay0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWxpZ2h0LTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFye3dpZHRoOjZweH0ubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1saWdodC0zLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtbGlnaHQtMy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWx7d2lkdGg6MTAwJTtoZWlnaHQ6NnB4O21hcmdpbjo1cHggMH0ubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWdfZXhwYW5kZWQrLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1kYXJrLTMubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlckNvbnRhaW5lcjpob3ZlciAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLWxpZ2h0LTMubUNTQl9zY3JvbGxUb29sc192ZXJ0aWNhbC5tQ1NCX3Njcm9sbFRvb2xzX29uRHJhZ19leHBhbmQgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnX2V4cGFuZGVkKy5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtbGlnaHQtMy5tQ1NCX3Njcm9sbFRvb2xzX3ZlcnRpY2FsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjEycHh9Lm1DUy1kYXJrLTMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWdfZXhwYW5kZWQrLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1kYXJrLTMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtbGlnaHQtMy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwubUNTQl9zY3JvbGxUb29sc19vbkRyYWdfZXhwYW5kIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZ19leHBhbmRlZCsubUNTQl9kcmFnZ2VyUmFpbCwubUNTLWxpZ2h0LTMubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsLm1DU0Jfc2Nyb2xsVG9vbHNfb25EcmFnX2V4cGFuZCAubUNTQl9kcmFnZ2VyQ29udGFpbmVyOmhvdmVyIC5tQ1NCX2RyYWdnZXJSYWlse2hlaWdodDoxMnB4O21hcmdpbjoycHggMH0ubUNTLWxpZ2h0LTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC03MnB4fS5tQ1MtbGlnaHQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTJweH0ubUNTLWxpZ2h0LTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTExMnB4fS5tQ1MtbGlnaHQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTEyOHB4fS5tQ1MtZGFyay0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC43NSl9Lm1DUy1kYXJrLTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmhvdmVyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg1KX0ubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjkpfS5tQ1MtZGFyay0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWx7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1DUy1kYXJrLTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNzJweH0ubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTkycHh9Lm1DUy1kYXJrLTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0xMTJweH0ubUNTLWRhcmstMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0xMjhweH0ubUNTLWluc2V0LTItZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtaW5zZXQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1pbnNldC0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1pbnNldC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse3dpZHRoOjEycHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMil9Lm1DUy1pbnNldC0yLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC0zLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWluc2V0Lm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2Jhcnt3aWR0aDo2cHg7bWFyZ2luOjNweCA1cHg7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OmF1dG87dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjB9Lm1DUy1pbnNldC0yLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC0yLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWluc2V0LWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhcntoZWlnaHQ6NnB4O21hcmdpbjo1cHggM3B4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOmF1dG87dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjB9Lm1DUy1pbnNldC0yLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtaW5zZXQtMi5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1pbnNldC0zLWRhcmsubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzX2hvcml6b250YWwgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLWluc2V0Lm1DU0Jfc2Nyb2xsVG9vbHNfaG9yaXpvbnRhbCAubUNTQl9kcmFnZ2VyUmFpbHt3aWR0aDoxMDAlO2hlaWdodDoxMnB4O21hcmdpbjoycHggMH0ubUNTLWluc2V0LTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcCwubUNTLWluc2V0LTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25VcCwubUNTLWluc2V0Lm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNzJweH0ubUNTLWluc2V0LTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3duLC5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd24sLm1DUy1pbnNldC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTJweH0ubUNTLWluc2V0LTIubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25MZWZ0LC5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnQsLm1DUy1pbnNldC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDBweCAtMTEycHh9Lm1DUy1pbnNldC0yLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHQsLm1DUy1pbnNldC0zLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uUmlnaHQsLm1DUy1pbnNldC5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTEyOHB4fS5tQ1MtaW5zZXQtMi1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWluc2V0LTMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC43NSl9Lm1DUy1pbnNldC0yLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmhvdmVyIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWluc2V0LWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmhvdmVyIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg1KX0ubUNTLWluc2V0LTItZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWluc2V0LTItZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjphY3RpdmUgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlci5tQ1NCX2RyYWdnZXJfb25EcmFnIC5tQ1NCX2RyYWdnZXJfYmFyLC5tQ1MtaW5zZXQtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6YWN0aXZlIC5tQ1NCX2RyYWdnZXJfYmFye2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjkpfS5tQ1MtaW5zZXQtMi1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlclJhaWwsLm1DUy1pbnNldC0zLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbCwubUNTLWluc2V0LWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubUNTLWluc2V0LTItZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblVwLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXAsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uVXB7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTcycHh9Lm1DUy1pbnNldC0yLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3duLC5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uRG93biwubUNTLWluc2V0LWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25Eb3due2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05MnB4fS5tQ1MtaW5zZXQtMi1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdCwubUNTLWluc2V0LTMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvbkxlZnQsLm1DUy1pbnNldC1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfYnV0dG9uTGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtMTEycHh9Lm1DUy1pbnNldC0yLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9idXR0b25SaWdodCwubUNTLWluc2V0LTMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0LC5tQ1MtaW5zZXQtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2J1dHRvblJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0xMjhweH0ubUNTLWluc2V0LTItZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlsLC5tQ1MtaW5zZXQtMi5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjIpOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubUNTLWluc2V0LTItZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse2JvcmRlci1jb2xvcjojMDAwO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yKX0ubUNTLWluc2V0LTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyUmFpbHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC42KX0ubUNTLWluc2V0LTMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXJSYWlse2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNzUpfS5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXI6aG92ZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODUpfS5tQ1MtaW5zZXQtMy5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIubUNTQl9kcmFnZ2VyX29uRHJhZyAubUNTQl9kcmFnZ2VyX2JhciwubUNTLWluc2V0LTMubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmFjdGl2ZSAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC45KX0ubUNTLWluc2V0LTMtZGFyay5tQ1NCX3Njcm9sbFRvb2xzIC5tQ1NCX2RyYWdnZXIgLm1DU0JfZHJhZ2dlcl9iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNzUpfS5tQ1MtaW5zZXQtMy1kYXJrLm1DU0Jfc2Nyb2xsVG9vbHMgLm1DU0JfZHJhZ2dlcjpob3ZlciAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC44NSl9Lm1DUy1pbnNldC0zLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyLm1DU0JfZHJhZ2dlcl9vbkRyYWcgLm1DU0JfZHJhZ2dlcl9iYXIsLm1DUy1pbnNldC0zLWRhcmsubUNTQl9zY3JvbGxUb29scyAubUNTQl9kcmFnZ2VyOmFjdGl2ZSAubUNTQl9kcmFnZ2VyX2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KX0="}},"time_used":207,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":207,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/fullcalendar/fullcalendar.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.320Z","timestamp":1785150870320,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/fullcalendar/fullcalendar.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-3b52\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ys21Tc9PfpsUaXic2cgmnn%2FQm%2FTuJ4gaBf4ZrOrMq95pS5u9LeDRChF9nw3jTPCt7NH8Qfk3dn7sayKrWHCPXmCHpPVJMfPlADf7xZUWODiBUT2jOImnnuNWdg%3D%3D\"}]}\r\ncf-ray: a21b388b8bcc56a2-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"]}],"data":{"size":15186,"size_decoded":4287,"mime_type":"text/css","magic":"ASCII text, with very long lines (15083)","md5":"f461f5f4dc6c61c1ad6242666d285daa","sha1":"360ebc54d596ba4ce9395fb8ac3737752b542aec","sha256":"a47d25c807118502d5ccec393fb84546f0e38dc911083a6509b9c3ba50390a42","sha512":"485badc915643453f3122945065d2edc24f3e895762f2bfedbcbbd6f03d3deec472db2f0d98861edfdf4e8d55c829363b6b543086b7b6833fe2645a8bc77b96a","ssdeep":"192:O/4+v+IdOWvwKKBr9CCIoaPRmrSZzq/uLHB7:ohTxJrZX7","tlshash":"88625075b60e2179a32bc369b560beccf33ae393e913d98df054aa54cac90dc381d641","first_seen":"2023-06-12T15:01:30Z","last_seen":"2026-07-27T11:25:33.563118Z","times_seen":53,"resource_available":false,"data":"LyohCiAqIEZ1bGxDYWxlbmRhciB2My4wLjEgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTYgQWRhbSBTaGF3CiAqLy5mYy1pY29uLGJvZHkgLmZje2ZvbnQtc2l6ZToxZW19LmZjLWJ1dHRvbi1ncm91cCwuZmMtaWNvbntkaXNwbGF5OmlubGluZS1ibG9ja30uZmMtYmcsLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiwuZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b257Ym90dG9tOjB9LmZjLWljb24sLmZjLXVuc2VsZWN0YWJsZXsta2h0bWwtdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZX0uZmN7ZGlyZWN0aW9uOmx0cjt0ZXh0LWFsaWduOmxlZnR9LmZjLXJ0bHt0ZXh0LWFsaWduOnJpZ2h0fS5mYyB0aCwuZmMtYmFzaWMtdmlldyB0ZC5mYy13ZWVrLW51bWJlciwuZmMtaWNvbiwuZmMtdG9vbGJhcnt0ZXh0LWFsaWduOmNlbnRlcn0uZmMtdW50aGVtZWQgLmZjLWNvbnRlbnQsLmZjLXVudGhlbWVkIC5mYy1kaXZpZGVyLC5mYy11bnRoZW1lZCAuZmMtbGlzdC1oZWFkaW5nIHRkLC5mYy11bnRoZW1lZCAuZmMtbGlzdC12aWV3LC5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciwuZmMtdW50aGVtZWQgLmZjLXJvdywuZmMtdW50aGVtZWQgdGJvZHksLmZjLXVudGhlbWVkIHRkLC5mYy11bnRoZW1lZCB0aCwuZmMtdW50aGVtZWQgdGhlYWR7Ym9yZGVyLWNvbG9yOiNkZGR9LmZjLXVudGhlbWVkIC5mYy1wb3BvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZn0uZmMtdW50aGVtZWQgLmZjLWRpdmlkZXIsLmZjLXVudGhlbWVkIC5mYy1saXN0LWhlYWRpbmcgdGQsLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXJ7YmFja2dyb3VuZDojZWVlfS5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZXtjb2xvcjojNjY2fS5mYy11bnRoZW1lZCAuZmMtdG9kYXl7YmFja2dyb3VuZDojZmNmOGUzfS5mYy1oaWdobGlnaHR7YmFja2dyb3VuZDojYmNlOGYxO29wYWNpdHk6LjN9LmZjLWJnZXZlbnR7YmFja2dyb3VuZDojOGZkZjgyO29wYWNpdHk6LjN9LmZjLW5vbmJ1c2luZXNze2JhY2tncm91bmQ6I2Q3ZDdkN30uZmMtaWNvbntoZWlnaHQ6MWVtO2xpbmUtaGVpZ2h0OjFlbTtvdmVyZmxvdzpoaWRkZW47Zm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IixDb3VyaWVyLG1vbm9zcGFjZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmZjLWljb246YWZ0ZXJ7cG9zaXRpb246cmVsYXRpdmV9LmZjLWljb24tbGVmdC1zaW5nbGUtYXJyb3c6YWZ0ZXJ7Y29udGVudDoiXDAyMDM5Ijtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIwMCU7dG9wOi03JX0uZmMtaWNvbi1yaWdodC1zaW5nbGUtYXJyb3c6YWZ0ZXJ7Y29udGVudDoiXDAyMDNBIjtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIwMCU7dG9wOi03JX0uZmMtaWNvbi1sZWZ0LWRvdWJsZS1hcnJvdzphZnRlcntjb250ZW50OiJcMDAwQUIiO2ZvbnQtc2l6ZToxNjAlO3RvcDotNyV9LmZjLWljb24tcmlnaHQtZG91YmxlLWFycm93OmFmdGVye2NvbnRlbnQ6IlwwMDBCQiI7Zm9udC1zaXplOjE2MCU7dG9wOi03JX0uZmMtaWNvbi1sZWZ0LXRyaWFuZ2xlOmFmdGVye2NvbnRlbnQ6IlwyNUM0Ijtmb250LXNpemU6MTI1JTt0b3A6MyV9LmZjLWljb24tcmlnaHQtdHJpYW5nbGU6YWZ0ZXJ7Y29udGVudDoiXDI1QkEiO2ZvbnQtc2l6ZToxMjUlO3RvcDozJX0uZmMtaWNvbi1kb3duLXRyaWFuZ2xlOmFmdGVye2NvbnRlbnQ6IlwyNUJDIjtmb250LXNpemU6MTI1JTt0b3A6MiV9LmZjLWljb24teDphZnRlcntjb250ZW50OiJcMDAwRDciO2ZvbnQtc2l6ZToyMDAlO3RvcDo2JX0uZmMgYnV0dG9uey1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MDtoZWlnaHQ6Mi4xZW07cGFkZGluZzowIC42ZW07Zm9udC1zaXplOjFlbTt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXJ9LmZjIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcnttYXJnaW46MDtwYWRkaW5nOjB9LmZjLXN0YXRlLWRlZmF1bHR7Ym9yZGVyOjFweCBzb2xpZDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2ZmZiwjZTZlNmU2KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLDAgMCwwIDEwMCUsZnJvbSgjZmZmKSx0bygjZTZlNmU2KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2ZmZiwjZTZlNmU2KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2ZmZiwjZTZlNmU2KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sI2ZmZiwjZTZlNmU2KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6I2U2ZTZlNiAjZTZlNmU2ICNiZmJmYmY7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjI1KTtjb2xvcjojMzMzO3RleHQtc2hhZG93OjAgMXB4IDFweCByZ2JhKDI1NSwyNTUsMjU1LC43NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjIpLDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNSl9LmZjLXN0YXRlLWRlZmF1bHQuZmMtY29ybmVyLWxlZnR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHh9LmZjLXN0YXRlLWRlZmF1bHQuZmMtY29ybmVyLXJpZ2h0e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHh9LmZjIGJ1dHRvbiAuZmMtaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LS4wNWVtO21hcmdpbjowIC4yZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5mYy1zdGF0ZS1hY3RpdmUsLmZjLXN0YXRlLWRpc2FibGVkLC5mYy1zdGF0ZS1kb3duLC5mYy1zdGF0ZS1ob3Zlcntjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0uZmMtc3RhdGUtaG92ZXJ7Y29sb3I6IzMzMzt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE1cHg7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gLjFzIGxpbmVhcjstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAuMXMgbGluZWFyOy1vLXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAuMXMgbGluZWFyO3RyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAuMXMgbGluZWFyfS5mYy1zdGF0ZS1hY3RpdmUsLmZjLXN0YXRlLWRvd257YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3gtc2hhZG93Omluc2V0IDAgMnB4IDRweCByZ2JhKDAsMCwwLC4xNSksMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KX0uZmMtc3RhdGUtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1pbWFnZTpub25lO29wYWNpdHk6LjY1O2JveC1zaGFkb3c6bm9uZX0uZmMtZXZlbnQuZmMtZHJhZ2dhYmxlLC5mYy1ldmVudFtocmVmXSwuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSxhW2RhdGEtZ290b117Y3Vyc29yOnBvaW50ZXJ9LmZjIC5mYy1idXR0b24tZ3JvdXA+KntmbG9hdDpsZWZ0O21hcmdpbjowIDAgMCAtMXB4fS5mYyAuZmMtYnV0dG9uLWdyb3VwPjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowfS5mYy1wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaGFkb3c6MCAycHggNnB4IHJnYmEoMCwwLDAsLjE1KX0uZmMtcG9wb3ZlciAuZmMtaGVhZGVye3BhZGRpbmc6MnB4IDRweH0uZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZXttYXJnaW46MCAycHh9LmZjLWx0ciAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZSwuZmMtcnRsIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3Nle2Zsb2F0OmxlZnR9LmZjLWx0ciAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSwuZmMtcnRsIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLXRpdGxle2Zsb2F0OnJpZ2h0fS5mYy11bnRoZW1lZCAuZmMtcG9wb3Zlcntib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0uZmMtdW50aGVtZWQgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2V7Zm9udC1zaXplOi45ZW07bWFyZ2luLXRvcDoycHh9LmZjLXBvcG92ZXI+LnVpLXdpZGdldC1oZWFkZXIrLnVpLXdpZGdldC1jb250ZW50e2JvcmRlci10b3A6MH0uZmMtZGl2aWRlcntib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweH1oci5mYy1kaXZpZGVye2hlaWdodDowO21hcmdpbjowO3BhZGRpbmc6MCAwIDJweDtib3JkZXItd2lkdGg6MXB4IDB9LmZjLWJnIHRhYmxlLC5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24gdGFibGUsLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHRhYmxle2hlaWdodDoxMDAlfS5mYy1jbGVhcntjbGVhcjpib3RofS5mYy1iZywuZmMtYmdldmVudC1za2VsZXRvbiwuZmMtaGVscGVyLXNrZWxldG9uLC5mYy1oaWdobGlnaHQtc2tlbGV0b257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjB9LmZjIHRhYmxle3dpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O3RhYmxlLWxheW91dDpmaXhlZDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MDtmb250LXNpemU6MWVtfS5mYyB0ZCwuZmMgdGh7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7cGFkZGluZzowO3ZlcnRpY2FsLWFsaWduOnRvcH0uZmMgdGQuZmMtdG9kYXl7Ym9yZGVyLXN0eWxlOmRvdWJsZX1hW2RhdGEtZ290b106aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uZmMgLmZjLXJvd3tib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjB9LmZjLXJvdyB0YWJsZXtib3JkZXItbGVmdDowIGhpZGRlbiB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6MCBoaWRkZW4gdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTowIGhpZGRlbiB0cmFuc3BhcmVudH0uZmMtcm93OmZpcnN0LWNoaWxkIHRhYmxle2JvcmRlci10b3A6MCBoaWRkZW4gdHJhbnNwYXJlbnR9LmZjLXJvd3twb3NpdGlvbjpyZWxhdGl2ZX0uZmMtcm93IC5mYy1iZ3t6LWluZGV4OjF9LmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0ZCwuZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gdGR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b257ei1pbmRleDoyfS5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbnt6LWluZGV4OjN9LmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjQ7cGFkZGluZy1ib3R0b206MnB4fS5mYy1yb3cgLmZjLWhlbHBlci1za2VsZXRvbnt6LWluZGV4OjV9LmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB0ZCwuZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGR7YmFja2dyb3VuZDowIDA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MH0uZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IHRkLC5mYy1yb3cgLmZjLWhlbHBlci1za2VsZXRvbiB0Ym9keSB0ZHtib3JkZXItdG9wOjB9LmZjLXNjcm9sbGVyey13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5mYy1yb3cuZmMtcmlnaWQsLmZjLXRpbWUtZ3JpZC1ldmVudHtvdmVyZmxvdzpoaWRkZW59LmZjLXNjcm9sbGVyPi5mYy1kYXktZ3JpZCwuZmMtc2Nyb2xsZXI+LmZjLXRpbWUtZ3JpZHtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5mYy1ldmVudHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTouODVlbTtsaW5lLWhlaWdodDoxLjM7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjM2E4N2FkO2ZvbnQtd2VpZ2h0OjQwMH0uZmMtZXZlbnQsLmZjLWV2ZW50LWRvdHtiYWNrZ3JvdW5kLWNvbG9yOiMzYTg3YWR9LmZjLWV2ZW50LC5mYy1ldmVudDpob3ZlciwudWktd2lkZ2V0IC5mYy1ldmVudHtjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lfS5mYy1ub3QtYWxsb3dlZCwuZmMtbm90LWFsbG93ZWQgLmZjLWV2ZW50e2N1cnNvcjpub3QtYWxsb3dlZH0uZmMtZXZlbnQgLmZjLWJne3otaW5kZXg6MTtiYWNrZ3JvdW5kOiNmZmY7b3BhY2l0eTouMjV9LmZjLWV2ZW50IC5mYy1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mn0uZmMtZXZlbnQgLmZjLXJlc2l6ZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo0O2Rpc3BsYXk6bm9uZX0uZmMtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1yZXNpemVyLC5mYy1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplcntkaXNwbGF5OmJsb2NrfS5mYy1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk5OTk7dG9wOjUwJTtsZWZ0OjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbi1sZWZ0Oi0yMHB4O21hcmdpbi10b3A6LTIwcHh9LmZjLWV2ZW50LmZjLXNlbGVjdGVke3otaW5kZXg6OTk5OSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDJweCA1cHggcmdiYSgwLDAsMCwuMil9LmZjLWV2ZW50LmZjLXNlbGVjdGVkLmZjLWRyYWdnaW5ne2JveC1zaGFkb3c6MCAycHggN3B4IHJnYmEoMCwwLDAsLjMpfS5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mzt0b3A6LTEwcHg7Ym90dG9tOi0xMHB4O2xlZnQ6MDtyaWdodDowfS5mYy1sdHIgLmZjLWgtZXZlbnQuZmMtbm90LXN0YXJ0LC5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtbm90LWVuZHttYXJnaW4tbGVmdDowO2JvcmRlci1sZWZ0LXdpZHRoOjA7cGFkZGluZy1sZWZ0OjFweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5mYy1sdHIgLmZjLWgtZXZlbnQuZmMtbm90LWVuZCwuZmMtcnRsIC5mYy1oLWV2ZW50LmZjLW5vdC1zdGFydHttYXJnaW4tcmlnaHQ6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtwYWRkaW5nLXJpZ2h0OjFweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmZjLWx0ciAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplciwuZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplcntjdXJzb3I6dy1yZXNpemU7bGVmdDotMXB4fS5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyLC5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLXN0YXJ0LXJlc2l6ZXJ7Y3Vyc29yOmUtcmVzaXplO3JpZ2h0Oi0xcHh9LmZjLWgtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1yZXNpemVye3dpZHRoOjdweDt0b3A6LTFweDtib3R0b206LTFweH0uZmMtaC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplcntib3JkZXItcmFkaXVzOjRweDtib3JkZXItd2lkdGg6MXB4O3dpZHRoOjZweDtoZWlnaHQ6NnB4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOiNmZmY7dG9wOjUwJTttYXJnaW4tdG9wOi00cHh9LmZjLWx0ciAuZmMtaC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtc3RhcnQtcmVzaXplciwuZmMtcnRsIC5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1lbmQtcmVzaXplcnttYXJnaW4tbGVmdDotNHB4fS5mYy1sdHIgLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLWVuZC1yZXNpemVyLC5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLXN0YXJ0LXJlc2l6ZXJ7bWFyZ2luLXJpZ2h0Oi00cHh9LmZjLWRheS1ncmlkLWV2ZW50e21hcmdpbjoxcHggMnB4IDA7cGFkZGluZzowIDFweH10cjpmaXJzdC1jaGlsZD50ZD4uZmMtZGF5LWdyaWQtZXZlbnR7bWFyZ2luLXRvcDoycHh9LmZjLWRheS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVkOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RvcDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHg7bGVmdDotMXB4O2JhY2tncm91bmQ6IzAwMDtvcGFjaXR5Oi4yNX0uZmMtZGF5LWdyaWQtZXZlbnQgLmZjLWNvbnRlbnR7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbn0uZmMtZGF5LWdyaWQtZXZlbnQgLmZjLXRpbWV7Zm9udC13ZWlnaHQ6NzAwfS5mYy1sdHIgLmZjLWRheS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtc3RhcnQtcmVzaXplciwuZmMtcnRsIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLWVuZC1yZXNpemVye21hcmdpbi1sZWZ0Oi0ycHh9LmZjLWx0ciAuZmMtZGF5LWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1lbmQtcmVzaXplciwuZmMtcnRsIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXN0YXJ0LXJlc2l6ZXJ7bWFyZ2luLXJpZ2h0Oi0ycHh9YS5mYy1tb3Jle21hcmdpbjoxcHggM3B4O2ZvbnQtc2l6ZTouODVlbTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZX1hLmZjLW1vcmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uZmMtbGltaXRlZHtkaXNwbGF5Om5vbmV9LmZjLWRheS1ncmlkIC5mYy1yb3d7ei1pbmRleDoxfS5mYy1tb3JlLXBvcG92ZXJ7ei1pbmRleDoyO3dpZHRoOjIyMHB4fS5mYy1tb3JlLXBvcG92ZXIgLmZjLWV2ZW50LWNvbnRhaW5lcntwYWRkaW5nOjEwcHh9LmZjLW5vdy1pbmRpY2F0b3J7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjAgc29saWQgcmVkfS5mYy11bnNlbGVjdGFibGV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uZmMtdG9vbGJhcnttYXJnaW4tYm90dG9tOjFlbX0uZmMtdG9vbGJhciAuZmMtbGVmdHtmbG9hdDpsZWZ0fS5mYy10b29sYmFyIC5mYy1yaWdodHtmbG9hdDpyaWdodH0uZmMtdG9vbGJhciAuZmMtY2VudGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mYyAuZmMtdG9vbGJhcj4qPip7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDouNzVlbX0uZmMgLmZjLXRvb2xiYXI+Kj46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0uZmMtdG9vbGJhciBoMnttYXJnaW46MH0uZmMtdG9vbGJhciBidXR0b257cG9zaXRpb246cmVsYXRpdmV9LmZjLXRvb2xiYXIgLmZjLXN0YXRlLWhvdmVyLC5mYy10b29sYmFyIC51aS1zdGF0ZS1ob3Zlcnt6LWluZGV4OjJ9LmZjLXRvb2xiYXIgLmZjLXN0YXRlLWRvd257ei1pbmRleDozfS5mYy10b29sYmFyIC5mYy1zdGF0ZS1hY3RpdmUsLmZjLXRvb2xiYXIgLnVpLXN0YXRlLWFjdGl2ZXt6LWluZGV4OjR9LmZjLXRvb2xiYXIgYnV0dG9uOmZvY3Vze3otaW5kZXg6NX0uZmMtdmlldy1jb250YWluZXIgKiwuZmMtdmlldy1jb250YWluZXIgOmFmdGVyLC5mYy12aWV3LWNvbnRhaW5lciA6YmVmb3Jley13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveH0uZmMtdmlldywuZmMtdmlldz50YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LmZjLWJhc2ljRGF5LXZpZXcgLmZjLWNvbnRlbnQtc2tlbGV0b24sLmZjLWJhc2ljV2Vlay12aWV3IC5mYy1jb250ZW50LXNrZWxldG9ue3BhZGRpbmctYm90dG9tOjFlbX0uZmMtYmFzaWMtdmlldyAuZmMtYm9keSAuZmMtcm93e21pbi1oZWlnaHQ6NGVtfS5mYy1yb3cuZmMtcmlnaWQgLmZjLWNvbnRlbnQtc2tlbGV0b257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjB9LmZjLWRheS10b3AuZmMtb3RoZXItbW9udGh7b3BhY2l0eTouM30uZmMtYmFzaWMtdmlldyAuZmMtZGF5LW51bWJlciwuZmMtYmFzaWMtdmlldyAuZmMtd2Vlay1udW1iZXJ7cGFkZGluZzoycHh9LmZjLWJhc2ljLXZpZXcgdGguZmMtZGF5LW51bWJlciwuZmMtYmFzaWMtdmlldyB0aC5mYy13ZWVrLW51bWJlcntwYWRkaW5nOjAgMnB4fS5mYy1sdHIgLmZjLWJhc2ljLXZpZXcgLmZjLWRheS10b3AgLmZjLWRheS1udW1iZXJ7ZmxvYXQ6cmlnaHR9LmZjLXJ0bCAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtZGF5LW51bWJlcntmbG9hdDpsZWZ0fS5mYy1sdHIgLmZjLWJhc2ljLXZpZXcgLmZjLWRheS10b3AgLmZjLXdlZWstbnVtYmVye2Zsb2F0OmxlZnQ7Ym9yZGVyLXJhZGl1czowIDAgM3B4fS5mYy1ydGwgLmZjLWJhc2ljLXZpZXcgLmZjLWRheS10b3AgLmZjLXdlZWstbnVtYmVye2Zsb2F0OnJpZ2h0O2JvcmRlci1yYWRpdXM6MCAwIDAgM3B4fS5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy13ZWVrLW51bWJlcnttaW4td2lkdGg6MS41ZW07dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOmdyZXl9LmZjLWJhc2ljLXZpZXcgdGQuZmMtd2Vlay1udW1iZXI+KntkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MS4yNWVtfS5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvd3ttaW4taGVpZ2h0OjNlbX0uZmMtYWdlbmRhLXZpZXcgLmZjLWRheS1ncmlkIC5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b257cGFkZGluZy1ib3R0b206MWVtfS5mYyAuZmMtYXhpc3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZzowIDRweDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZjLWx0ciAuZmMtYXhpc3t0ZXh0LWFsaWduOnJpZ2h0fS5mYy1ydGwgLmZjLWF4aXN7dGV4dC1hbGlnbjpsZWZ0fS51aS13aWRnZXQgdGQuZmMtYXhpc3tmb250LXdlaWdodDo0MDB9LmZjLXRpbWUtZ3JpZCwuZmMtdGltZS1ncmlkLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LmZjLXRpbWUtZ3JpZHttaW4taGVpZ2h0OjEwMCV9LmZjLXRpbWUtZ3JpZCB0YWJsZXtib3JkZXI6MCBoaWRkZW4gdHJhbnNwYXJlbnR9LmZjLXRpbWUtZ3JpZD4uZmMtYmd7ei1pbmRleDoxfS5mYy10aW1lLWdyaWQgLmZjLXNsYXRzLC5mYy10aW1lLWdyaWQ+aHJ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtY29se3Bvc2l0aW9uOnJlbGF0aXZlfS5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b257cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDozO3RvcDowO2xlZnQ6MDtyaWdodDowfS5mYy10aW1lLWdyaWQgLmZjLWJ1c2luZXNzLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudC1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodC1jb250YWluZXJ7ei1pbmRleDozO3Bvc2l0aW9uOnJlbGF0aXZlfS5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjR9LmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1saW5le3otaW5kZXg6NX0uZmMtdGltZS1ncmlkIC5mYy1oZWxwZXItY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Nn0uZmMtdGltZS1ncmlkIC5mYy1zbGF0cyB0ZHtoZWlnaHQ6MS41ZW07Ym9yZGVyLWJvdHRvbTowfS5mYy10aW1lLWdyaWQgLmZjLXNsYXRzIC5mYy1taW5vciB0ZHtib3JkZXItdG9wLXN0eWxlOmRvdHRlZH0uZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAudWktd2lkZ2V0LWNvbnRlbnR7YmFja2dyb3VuZDowIDB9LmZjLXRpbWUtZ3JpZCAuZmMtaGlnaGxpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowfS5mYy1sdHIgLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVye21hcmdpbjowIDIuNSUgMCAycHh9LmZjLXJ0bCAuZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXJ7bWFyZ2luOjAgMnB4IDAgMi41JX0uZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50LC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MX0uZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50e2xlZnQ6MDtyaWdodDowfS5mYy12LWV2ZW50LmZjLW5vdC1zdGFydHtib3JkZXItdG9wLXdpZHRoOjA7cGFkZGluZy10b3A6MXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5mYy12LWV2ZW50LmZjLW5vdC1lbmR7Ym9yZGVyLWJvdHRvbS13aWR0aDowO3BhZGRpbmctYm90dG9tOjFweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVke292ZXJmbG93OnZpc2libGV9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtYmd7ZGlzcGxheTpub25lfS5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLWNvbnRlbnR7b3ZlcmZsb3c6aGlkZGVufS5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWUsLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGl0bGV7cGFkZGluZzowIDFweH0uZmMtdGltZS1ncmlkLWV2ZW50IC5mYy10aW1le2ZvbnQtc2l6ZTouODVlbTt3aGl0ZS1zcGFjZTpub3dyYXB9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXB9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZSwuZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aXRsZXtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZSBzcGFue2Rpc3BsYXk6bm9uZX0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lOmJlZm9yZXtjb250ZW50OmF0dHIoZGF0YS1zdGFydCl9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZTphZnRlcntjb250ZW50OiJcMDAwQTAtXDAwMEEwIn0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aXRsZXtmb250LXNpemU6Ljg1ZW07cGFkZGluZzowfS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1yZXNpemVye2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2hlaWdodDo4cHg7b3ZlcmZsb3c6aGlkZGVuO2xpbmUtaGVpZ2h0OjhweDtmb250LXNpemU6MTFweDtmb250LWZhbWlseTptb25vc3BhY2U7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnMtcmVzaXplfS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1yZXNpemVyOmFmdGVye2NvbnRlbnQ6Ij0ifS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLXJlc2l6ZXJ7Ym9yZGVyLXJhZGl1czo1cHg7Ym9yZGVyLXdpZHRoOjFweDt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDojZmZmO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym90dG9tOi01cHh9LmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1saW5le2JvcmRlci10b3Atd2lkdGg6MXB4O2xlZnQ6MDtyaWdodDowfS5mYy10aW1lLWdyaWQgLmZjLW5vdy1pbmRpY2F0b3ItYXJyb3d7bWFyZ2luLXRvcDotNXB4fS5mYy1sdHIgLmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1hcnJvd3tsZWZ0OjA7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCA2cHg7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS5mYy1ydGwgLmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1hcnJvd3tyaWdodDowO2JvcmRlci13aWR0aDo1cHggNnB4IDVweCAwO2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudH0uZmMtZXZlbnQtZG90e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7Ym9yZGVyLXJhZGl1czo1cHh9LmZjLXJ0bCAuZmMtbGlzdC12aWV3e2RpcmVjdGlvbjpydGx9LmZjLWxpc3Qtdmlld3tib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0uZmMgLmZjLWxpc3QtdGFibGV7dGFibGUtbGF5b3V0OmF1dG99LmZjLWxpc3QtdGFibGUgdGR7Ym9yZGVyLXdpZHRoOjFweCAwIDA7cGFkZGluZzo4cHggMTRweH0uZmMtbGlzdC10YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wLXdpZHRoOjB9LmZjLWxpc3QtaGVhZGluZ3tib3JkZXItYm90dG9tLXdpZHRoOjFweH0uZmMtbGlzdC1oZWFkaW5nIHRke2ZvbnQtd2VpZ2h0OjcwMH0uZmMtbHRyIC5mYy1saXN0LWhlYWRpbmctbWFpbntmbG9hdDpsZWZ0fS5mYy1sdHIgLmZjLWxpc3QtaGVhZGluZy1hbHQsLmZjLXJ0bCAuZmMtbGlzdC1oZWFkaW5nLW1haW57ZmxvYXQ6cmlnaHR9LmZjLXJ0bCAuZmMtbGlzdC1oZWFkaW5nLWFsdHtmbG9hdDpsZWZ0fS5mYy1saXN0LWl0ZW0uZmMtaGFzLXVybHtjdXJzb3I6cG9pbnRlcn0uZmMtbGlzdC1pdGVtOmhvdmVyIHRke2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0uZmMtbGlzdC1pdGVtLW1hcmtlciwuZmMtbGlzdC1pdGVtLXRpbWV7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjFweH0uZmMtbHRyIC5mYy1saXN0LWl0ZW0tbWFya2Vye3BhZGRpbmctcmlnaHQ6MH0uZmMtcnRsIC5mYy1saXN0LWl0ZW0tbWFya2Vye3BhZGRpbmctbGVmdDowfS5mYy1saXN0LWl0ZW0tdGl0bGUgYXt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjppbmhlcml0fS5mYy1saXN0LWl0ZW0tdGl0bGUgYVtocmVmXTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5mYy1saXN0LWVtcHR5LXdyYXAye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowfS5mYy1saXN0LWVtcHR5LXdyYXAxe3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTp0YWJsZX0uZmMtbGlzdC1lbXB0eXtkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlO3RleHQtYWxpZ246Y2VudGVyfS5mYy11bnRoZW1lZCAuZmMtbGlzdC1lbXB0eXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9"}},"time_used":193,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":193,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/styles/color/red.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.323Z","timestamp":1785150870323,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/styles/color/red.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-fa0\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=NITcntwM68nOz1Xl5plGNeNnG2qVyGpUcZwlu2lnDxIMu38EO2UdORj8uFltoTrtMxHr3aUjC%2FBtlyCPnp8zoY5q%2F4H3TghzZ0G2lq%2BPyQ4Wey7gbeDxIH7Z8A%3D%3D\"}]}\r\ncf-ray: a21b388b8bce56a2-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"]}],"data":{"size":4000,"size_decoded":1666,"mime_type":"text/css","magic":"ASCII text, with very long lines (4000), with no line terminators","md5":"128482f60a24318d4678e95ef2e2973f","sha1":"47bcfe97c0287b77ba1a08023bdb8a258a82bb8e","sha256":"3aad4626fe33e05265f17f3b31642b6410f98547a0b2753a302d6fa38d6c69f0","sha512":"c75888dceb1b46e76103ddfd984cb7249ca9e42b6ca116dc3a63cc13c9f6cb87f7e7c58fc9884f44e2f73f1df65e065c518044c9533ea2dc140fa89acac93e39","ssdeep":"","tlshash":"9e81694cc69a06ab6077c1bf4072fe744719d5c8a6e2277e703bb96426864c893e7706","first_seen":"2025-12-16T06:43:19.430661Z","last_seen":"2026-07-27T11:25:33.53046Z","times_seen":16,"resource_available":false,"data":"YXtjb2xvcjojZjQ0MzM2fWE6YWN0aXZlLGE6Zm9jdXMsYTpob3Zlcntjb2xvcjojY2QwMDAwfS5mYS1ob3Zlcjpob3ZlcntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZmZmZn0uZmEtaG92ZXI6aG92ZXIgLmZhLC5mYS1ob3Zlcjpob3ZlciAuaWNve2NvbG9yOiNmZmZmZmZ9LmhlYWRlciAubG9nb3tjb2xvcjojZmZmZmZmO2JhY2tncm91bmQ6I2NkMDAwMH0udXNlciAuY29udHJvbC1saXN0IGF7Y29sb3I6IzQzNTk2Nn0udXNlciAuY29udHJvbC1saXN0IGE6aG92ZXJ7Y29sb3I6I2Y0NDMzNn0udXNlciAubmFtZSBhe2NvbG9yOiM0MzU5NjZ9LnVzZXIgLm5hbWUgYTpob3Zlcntjb2xvcjojZjQ0MzM2fUBtZWRpYSAobWluLXdpZHRoOjEwMjVweCl7Lm5hdmlnYXRpb24gLm1lbnUgYTpob3Zlcntjb2xvcjojZjQ0MzM2fS5uYXZpZ2F0aW9uIC5tZW51IGE6aG92ZXIgaXtjb2xvcjojZjQ0MzM2fX0ubmF2aWdhdGlvbiAubWVudSBhLmFjdGl2ZSwubmF2aWdhdGlvbiAubWVudSBhLmN1cnJlbnR7Y29sb3I6I2Y0NDMzNn0ubmF2aWdhdGlvbiAubWVudT5saS5jdXJyZW50PmF7YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZmZmZ9Lm5hdmlnYXRpb24gLm1lbnU+bGkuY3VycmVudD5hPml7Y29sb3I6I2ZmZmZmZn0ubmF2aWdhdGlvbiAubWVudT5saS5jdXJyZW50IC5jdXJyZW50PmF7Y29sb3I6I2Y0NDMzNn0ubmF2aWdhdGlvbiAubWVudSAud2F2ZXMtcmlwcGxle2JhY2tncm91bmQ6LXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQocmdiYSgyNDQsIDY3LCA1NCwgMC4yKSAwLCByZ2JhKDI0NCwgNjcsIDU0LCAwLjMpIDQwJSwgcmdiYSgyNDQsIDY3LCA1NCwgMC40KSA1MCUsIHJnYmEoMjQ0LCA2NywgNTQsIDAuNSkgNjAlLCByZ2JhKDI0NCwgNjcsIDU0LCAwKSA3MCUpO2JhY2tncm91bmQ6LW8tcmFkaWFsLWdyYWRpZW50KHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgMCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4zKSA0MCUsIHJnYmEoMjQ0LCA2NywgNTQsIDAuNCkgNTAlLCByZ2JhKDI0NCwgNjcsIDU0LCAwLjUpIDYwJSwgcmdiYSgyNDQsIDY3LCA1NCwgMCkgNzAlKTtiYWNrZ3JvdW5kOi1tb3otcmFkaWFsLWdyYWRpZW50KHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgMCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4zKSA0MCUsIHJnYmEoMjQ0LCA2NywgNTQsIDAuNCkgNTAlLCByZ2JhKDI0NCwgNjcsIDU0LCAwLjUpIDYwJSwgcmdiYSgyNDQsIDY3LCA1NCwgMCkgNzAlKTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChyZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDAsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMykgNDAlLCByZ2JhKDI0NCwgNjcsIDU0LCAwLjQpIDUwJSwgcmdiYSgyNDQsIDY3LCA1NCwgMC41KSA2MCUsIHJnYmEoMjQ0LCA2NywgNTQsIDApIDcwJSl9QG1lZGlhIChtaW4td2lkdGg6ODAwcHgpey5tZW51LWFjdGl2ZSAuaGVhZGVyIC5sb2dve2NvbG9yOiNjZDAwMDB9Lm1lbnUtYWN0aXZlIC5oZWFkZXIgLmxvZ286YmVmb3Jle2JhY2tncm91bmQ6I2NkMDAwMH0ubWVudS1hY3RpdmUgLmhlYWRlciAubG9nbzphZnRlcntiYWNrZ3JvdW5kOiNmZmZmZmZ9Lm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC5tZW51PmxpOmhvdmVyPmF7YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZmZmZ9Lm1lbnUtYWN0aXZlIC5uYXZpZ2F0aW9uIC5tZW51PmxpOmhvdmVyPmEgaXtjb2xvcjojZmZmZmZmfX0uZml4ZWQtbmF2YmFye2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmZmZmfS5maXhlZC1uYXZiYXIgLmljby1pdGVte2NvbG9yOiNmZmZmZmZ9QG1lZGlhIChtaW4td2lkdGg6MTAyNXB4KXsuZml4ZWQtbmF2YmFyIC5pY28taXRlbTpob3Zlcntjb2xvcjojZmZmZmZmfX0uZm9vdGVye2NvbG9yOnJnYmEoMCwgMCwgMCwgMC43KX0uZm9vdGVyIGF7Y29sb3I6cmdiYSgwLCAwLCAwLCAwLjcpfUBtZWRpYSAobWluLXdpZHRoOjEwMjVweCl7LmZvb3RlciBhOmhvdmVye2NvbG9yOiNmNDQzMzZ9fS5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93biAuc3ViLW1lbnV7YmFja2dyb3VuZDojZmZmZmZmfS5ib3gtY29udGVudCAuZHJvcGRvd24uanNfX2Ryb3BfZG93biAuc3ViLW1lbnUgYXtjb2xvcjojNDM1OTY2fUBtZWRpYSAobWluLXdpZHRoOjEwMjVweCl7LmJveC1jb250ZW50IC5kcm9wZG93bi5qc19fZHJvcF9kb3duIC5zdWItbWVudSBhOmhvdmVye2NvbG9yOiNmNDQzMzZ9fS5kYXRhVGFibGVzX3dyYXBwZXIgLmRhdGFUYWJsZSAuZ3JvdXB7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2IWltcG9ydGFudDtjb2xvcjojZmZmZmZmIWltcG9ydGFudH10YWJsZS5mb2N1cy1vbiB0Ym9keSB0ci5mb2N1c2VkIHRkLHRhYmxlLmZvY3VzLW9uIHRib2R5IHRyLmZvY3VzZWQgdGh7YmFja2dyb3VuZDojZjQ0MzM2IWltcG9ydGFudDtjb2xvcjojZmZmZmZmIWltcG9ydGFudH0uaW5ib3gtbGlzdCAubmFtZXtjb2xvcjojZjQ0MzM2fUBtZWRpYSAobWluLXdpZHRoOjEwMjVweCl7LmluYm94LWxpc3QgLm5hbWU6aG92ZXJ7Y29sb3I6I2NkMDAwMH19Lm1lbnUtbW9iaWxlLWJ1dHRvbntjb2xvcjojZmZmZmZmO2JhY2tncm91bmQ6I2ZhNTg0Y30ubm90aWNlLWxpc3QgLm5hbWV7Y29sb3I6IzIxMjEyMX1AbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpey5ub3RpY2UtbGlzdCAubmFtZTpob3Zlcntjb2xvcjojZjQ0MzM2fX0ubm90aWNlLXBvcHVwe2JhY2tncm91bmQ6I2ZmZmZmZn0ubm90aWNlLXBvcHVwIC5ub3RpY2UtcmVhZC1tb3Jle2NvbG9yOiMyMTIxMjF9Lm5vdGljZS1wb3B1cCAubm90aWNlLXJlYWQtbW9yZTpob3Zlcntjb2xvcjojZjQ0MzM2fUBtZWRpYSAobWluLXdpZHRoOjEwMjVweCl7LnNlYXJjaGZvcm0gLmJ1dHRvbi1zZWFyY2g6aG92ZXJ7Y29sb3I6I2Y0NDMzNn19LmJveC1ib2R5IC5uYXYgbGkuYWN0aXZlIGF7YmFja2dyb3VuZDojZmZmZmZmO2NvbG9yOiNmNDQzMzZ9LmJveC1ib2R5IC5uYXYgYXtjb2xvcjojMjEyMTIxfS5ib3gtYm9keSAubmF2IGE6aG92ZXJ7YmFja2dyb3VuZDojZmZmZmZmO2NvbG9yOiNmNDQzMzZ9Lm1haWxib3gtbWVzc2FnZXMgLnVucmVhZD50ZDpmaXJzdC1vZi10eXBle2JvcmRlci1sZWZ0LWNvbG9yOiNmNDQzMzZ9LmZybS1zaW5nbGUgLmZybS1pbnB1dCAuZnJtLWlucDpmb2N1c3tib3JkZXItY29sb3I6I2Y0NDMzNn0uZnJtLXNpbmdsZSAuZnJtLXN1Ym1pdHtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZmZmZn1AbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpey5mcm0tc2luZ2xlIC5mcm0tc3VibWl0OmhvdmVye2JhY2tncm91bmQ6I2NkMDAwMH19LnByaWNpbmctdGFibGUgLnRoZWFke2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5wcmljaW5nLXRhYmxlIC50aGVhZC5iZy1tYWluLTJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5wcmljaW5nLXRhYmxlIC50aGVhZC5iZy1ibHVlLTF7YmFja2dyb3VuZC1jb2xvcjojMjQ0NGY5fS5wcmljaW5nLXRhYmxlIC50aGVhZC5iZy1ibHVlLTJ7YmFja2dyb3VuZC1jb2xvcjojMWUzZGVmfS5wcmljaW5nLXRhYmxlIC50aGVhZC5iZy1ibHVlLTN7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5wcmljaW5nLXRhYmxlIC50ZCAuZmEtY2hlY2t7Y29sb3I6I2Y0NDMzNn0ucHJpY2luZy10YWJsZSAuY29sLWZlYXR1cmVkIC50ZCAuYnRuLW9yZGVye2JhY2tncm91bmQ6I2Y0NDMzNn1AbWVkaWEgKG1pbi13aWR0aDoxMDI1cHgpey5wcmljaW5nLXRhYmxlIC50ZCAuYnRuLW9yZGVyOmhvdmVye2JhY2tncm91bmQ6I2Y0NDMzNn19Lmlzb3RvcGUtZmlsdGVyIC5maWx0ZXItY29udHJvbHMgYXtjb2xvcjojNDM1OTY2fUBtZWRpYSAobWluLXdpZHRoOjEwMjVweCl7Lmlzb3RvcGUtZmlsdGVyIC5maWx0ZXItY29udHJvbHMgYTpob3Zlcntjb2xvcjojZjQ0MzM2fX0uaXNvdG9wZS1maWx0ZXIgLmZpbHRlci1jb250cm9scyAuanNfX2FjdGl2ZXtjb2xvcjojZjQ0MzM2fS51c2VyLWluZm8gYXtjb2xvcjojZjQ0MzM2fS51c2VyLWluZm8gYTpob3Zlcntjb2xvcjojY2QwMDAwfQ=="}},"time_used":193,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":193,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/bootstrap/js/bootstrap.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.335Z","timestamp":1785150870335,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/bootstrap/js/bootstrap.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-90b5\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=2nQfRGOQlYyLvPzmMvb2kb%2FRxx%2Fc4cCEGKEOcf0xGU78fetarzAH1HVcOXhbCOYBWbWdnW6Lan7BxW9sLiop10PQnDaSBNdf08RVWn7NOQsy6DNR8FDAKb6oqw%3D%3D\"}]}\r\ncf-ray: a21b388b9bd356a2-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"]}],"data":{"size":37045,"size_decoded":10733,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (32033)","md5":"5869c96cc8f19086aee625d670d741f9","sha1":"430a443d74830fe9be26efca431f448c1b3740f9","sha256":"53964478a7c634e8dad34ecc303dd8048d00dce4993906de1bacf67f663486ef","sha512":"8b3b64a1bb2f9e329f02d4cd7479065630184ebaed942ee61a9ff9e1ce34c28c0eecb854458977815cf3704a8697fa8a5d096d2761f032b74b70d51da3e37f45","ssdeep":"768:o2rGy27UwlNqMl95qNmCFejhqs8snmi+CSFXfbx8Gf3Zq7Q:Jg73zhq0GvbJ3ZKQ","tlshash":"b6f28606b23031a147efb1e1525b020e7239696ee906907c78b99af53db9c48717bf3d","first_seen":"2023-03-07T01:02:54Z","last_seen":"2026-07-27T12:55:51.310764Z","times_seen":96680,"resource_available":true,"data":"LyohCiAqIEJvb3RzdHJhcCB2My4zLjcgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE2IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MXx8YlswXT4zKXRocm93IG5ldyBFcnJvcigiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkgdmVyc2lvbiAxLjkuMSBvciBoaWdoZXIsIGJ1dCBsb3dlciB0aGFuIHZlcnNpb24gNCIpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYigpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvb3RzdHJhcCIpLGI9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O2Zvcih2YXIgYyBpbiBiKWlmKHZvaWQgMCE9PWEuc3R5bGVbY10pcmV0dXJue2VuZDpiW2NdfTtyZXR1cm4hMX1hLmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGIpe3ZhciBjPSExLGQ9dGhpczthKHRoaXMpLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmdW5jdGlvbigpe2M9ITB9KTt2YXIgZT1mdW5jdGlvbigpe2N8fGEoZCkudHJpZ2dlcihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpfTtyZXR1cm4gc2V0VGltZW91dChlLGIpLHRoaXN9LGEoZnVuY3Rpb24oKXthLnN1cHBvcnQudHJhbnNpdGlvbj1iKCksYS5zdXBwb3J0LnRyYW5zaXRpb24mJihhLmV2ZW50LnNwZWNpYWwuYnNUcmFuc2l0aW9uRW5kPXtiaW5kVHlwZTphLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZGVsZWdhdGVUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxoYW5kbGU6ZnVuY3Rpb24oYil7aWYoYShiLnRhcmdldCkuaXModGhpcykpcmV0dXJuIGIuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjciLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YSgiIyI9PT1mP1tdOmYpO2ImJmIucHJldmVudERlZmF1bHQoKSxnLmxlbmd0aHx8KGc9ZS5jbG9zZXN0KCIuYWxlcnQiKSksZy50cmlnZ2VyKGI9YS5FdmVudCgiY2xvc2UuYnMuYWxlcnQiKSksYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KGcucmVtb3ZlQ2xhc3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJmcuaGFzQ2xhc3MoImZhZGUiKT9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixjKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmMoKSl9O3ZhciBlPWEuZm4uYWxlcnQ7YS5mbi5hbGVydD1iLGEuZm4uYWxlcnQuQ29uc3RydWN0b3I9ZCxhLmZuLmFsZXJ0Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5hbGVydD1lLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5hbGVydC5kYXRhLWFwaSIsYyxkLnByb3RvdHlwZS5jbG9zZSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5idXR0b24iKSxmPSJvYmplY3QiPT10eXBlb2YgYiYmYjtlfHxkLmRhdGEoImJzLmJ1dHRvbiIsZT1uZXcgYyh0aGlzLGYpKSwidG9nZ2xlIj09Yj9lLnRvZ2dsZSgpOmImJmUuc2V0U3RhdGUoYil9KX12YXIgYz1mdW5jdGlvbihiLGQpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYy5ERUZBVUxUUyxkKSx0aGlzLmlzTG9hZGluZz0hMX07Yy5WRVJTSU9OPSIzLjMuNyIsYy5ERUZBVUxUUz17bG9hZGluZ1RleHQ6ImxvYWRpbmcuLi4ifSxjLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihiKXt2YXIgYz0iZGlzYWJsZWQiLGQ9dGhpcy4kZWxlbWVudCxlPWQuaXMoImlucHV0Iik/InZhbCI6Imh0bWwiLGY9ZC5kYXRhKCk7Yis9IlRleHQiLG51bGw9PWYucmVzZXRUZXh0JiZkLmRhdGEoInJlc2V0VGV4dCIsZFtlXSgpKSxzZXRUaW1lb3V0KGEucHJveHkoZnVuY3Rpb24oKXtkW2VdKG51bGw9PWZbYl0/dGhpcy5vcHRpb25zW2JdOmZbYl0pLCJsb2FkaW5nVGV4dCI9PWI/KHRoaXMuaXNMb2FkaW5nPSEwLGQuYWRkQ2xhc3MoYykuYXR0cihjLGMpLnByb3AoYywhMCkpOnRoaXMuaXNMb2FkaW5nJiYodGhpcy5pc0xvYWRpbmc9ITEsZC5yZW1vdmVDbGFzcyhjKS5yZW1vdmVBdHRyKGMpLnByb3AoYywhMSkpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KS5jbG9zZXN0KCIuYnRuIik7Yi5jYWxsKGQsInRvZ2dsZSIpLGEoYy50YXJnZXQpLmlzKCdpbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdJyl8fChjLnByZXZlbnREZWZhdWx0KCksZC5pcygiaW5wdXQsYnV0dG9uIik/ZC50cmlnZ2VyKCJmb2N1cyIpOmQuZmluZCgiaW5wdXQ6dmlzaWJsZSxidXR0b246dmlzaWJsZSIpLmZpcnN0KCkudHJpZ2dlcigiZm9jdXMiKSl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjciLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO2lmKCEoYT50aGlzLiRpdGVtcy5sZW5ndGgtMXx8YTwwKSlyZXR1cm4gdGhpcy5zbGlkaW5nP3RoaXMuJGVsZW1lbnQub25lKCJzbGlkLmJzLmNhcm91c2VsIixmdW5jdGlvbigpe2IudG8oYSl9KTpjPT1hP3RoaXMucGF1c2UoKS5jeWNsZSgpOnRoaXMuc2xpZGUoYT5jPyJuZXh0IjoicHJldiIsdGhpcy4kaXRlbXMuZXEoYSkpfSxjLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSEwKSx0aGlzLiRlbGVtZW50LmZpbmQoIi5uZXh0LCAucHJldiIpLmxlbmd0aCYmYS5zdXBwb3J0LnRyYW5zaXRpb24mJih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSx0aGlzLmN5Y2xlKCEwKSksdGhpcy5pbnRlcnZhbD1jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXN9LGMucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtpZighdGhpcy5zbGlkaW5nKXJldHVybiB0aGlzLnNsaWRlKCJuZXh0Iil9LGMucHJvdG90eXBlLnByZXY9ZnVuY3Rpb24oKXtpZighdGhpcy5zbGlkaW5nKXJldHVybiB0aGlzLnNsaWRlKCJwcmV2Iil9LGMucHJvdG90eXBlLnNsaWRlPWZ1bmN0aW9uKGIsZCl7dmFyIGU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSxmPWR8fHRoaXMuZ2V0SXRlbUZvckRpcmVjdGlvbihiLGUpLGc9dGhpcy5pbnRlcnZhbCxoPSJuZXh0Ij09Yj8ibGVmdCI6InJpZ2h0IixpPXRoaXM7aWYoZi5oYXNDbGFzcygiYWN0aXZlIikpcmV0dXJuIHRoaXMuc2xpZGluZz0hMTt2YXIgaj1mWzBdLGs9YS5FdmVudCgic2xpZGUuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmosZGlyZWN0aW9uOmh9KTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoayksIWsuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKHRoaXMuc2xpZGluZz0hMCxnJiZ0aGlzLnBhdXNlKCksdGhpcy4kaW5kaWNhdG9ycy5sZW5ndGgpe3RoaXMuJGluZGljYXRvcnMuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgbD1hKHRoaXMuJGluZGljYXRvcnMuY2hpbGRyZW4oKVt0aGlzLmdldEl0ZW1JbmRleChmKV0pO2wmJmwuYWRkQ2xhc3MoImFjdGl2ZSIpfXZhciBtPWEuRXZlbnQoInNsaWQuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmosZGlyZWN0aW9uOmh9KTtyZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoInNsaWRlIik/KGYuYWRkQ2xhc3MoYiksZlswXS5vZmZzZXRXaWR0aCxlLmFkZENsYXNzKGgpLGYuYWRkQ2xhc3MoaCksZS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtmLnJlbW92ZUNsYXNzKFtiLGhdLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLGUucmVtb3ZlQ2xhc3MoWyJhY3RpdmUiLGhdLmpvaW4oIiAiKSksaS5zbGlkaW5nPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLiRlbGVtZW50LnRyaWdnZXIobSl9LDApfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKSk6KGUucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGYuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuc2xpZGluZz0hMSx0aGlzLiRlbGVtZW50LnRyaWdnZXIobSkpLGcmJnRoaXMuY3ljbGUoKSx0aGlzfX07dmFyIGQ9YS5mbi5jYXJvdXNlbDthLmZuLmNhcm91c2VsPWIsYS5mbi5jYXJvdXNlbC5Db25zdHJ1Y3Rvcj1jLGEuZm4uY2Fyb3VzZWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNhcm91c2VsPWQsdGhpc307dmFyIGU9ZnVuY3Rpb24oYyl7dmFyIGQsZT1hKHRoaXMpLGY9YShlLmF0dHIoImRhdGEtdGFyZ2V0Iil8fChkPWUuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKTtpZihmLmhhc0NsYXNzKCJjYXJvdXNlbCIpKXt2YXIgZz1hLmV4dGVuZCh7fSxmLmRhdGEoKSxlLmRhdGEoKSksaD1lLmF0dHIoImRhdGEtc2xpZGUtdG8iKTtoJiYoZy5pbnRlcnZhbD0hMSksYi5jYWxsKGYsZyksaCYmZi5kYXRhKCJicy5jYXJvdXNlbCIpLnRvKGgpLGMucHJldmVudERlZmF1bHQoKX19O2EoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSIsZSkub24oImNsaWNrLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwiW2RhdGEtc2xpZGUtdG9dIixlKSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpO2IuY2FsbChjLGMuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjLGQ9Yi5hdHRyKCJkYXRhLXRhcmdldCIpfHwoYz1iLmF0dHIoImhyZWYiKSkmJmMucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKTtyZXR1cm4gYShkKX1mdW5jdGlvbiBjKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5jb2xsYXBzZSIpLGY9YS5leHRlbmQoe30sZC5ERUZBVUxUUyxjLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpOyFlJiZmLnRvZ2dsZSYmL3Nob3d8aGlkZS8udGVzdChiKSYmKGYudG9nZ2xlPSExKSxlfHxjLmRhdGEoImJzLmNvbGxhcHNlIixlPW5ldyBkKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXSgpfSl9dmFyIGQ9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYyksdGhpcy4kdHJpZ2dlcj1hKCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1baHJlZj0iIycrYi5pZCsnIl0sW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtdGFyZ2V0PSIjJytiLmlkKyciXScpLHRoaXMudHJhbnNpdGlvbmluZz1udWxsLHRoaXMub3B0aW9ucy5wYXJlbnQ/dGhpcy4kcGFyZW50PXRoaXMuZ2V0UGFyZW50KCk6dGhpcy5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy4kZWxlbWVudCx0aGlzLiR0cmlnZ2VyKSx0aGlzLm9wdGlvbnMudG9nZ2xlJiZ0aGlzLnRvZ2dsZSgpfTtkLlZFUlNJT049IjMuMy43IixkLlRSQU5TSVRJT05fRFVSQVRJT049MzUwLGQuREVGQVVMVFM9e3RvZ2dsZTohMH0sZC5wcm90b3R5cGUuZGltZW5zaW9uPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudC5oYXNDbGFzcygid2lkdGgiKTtyZXR1cm4gYT8id2lkdGgiOiJoZWlnaHQifSxkLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7aWYoIXRoaXMudHJhbnNpdGlvbmluZyYmIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiLGU9dGhpcy4kcGFyZW50JiZ0aGlzLiRwYXJlbnQuY2hpbGRyZW4oIi5wYW5lbCIpLmNoaWxkcmVuKCIuaW4sIC5jb2xsYXBzaW5nIik7aWYoIShlJiZlLmxlbmd0aCYmKGI9ZS5kYXRhKCJicy5jb2xsYXBzZSIpLGImJmIudHJhbnNpdGlvbmluZykpKXt2YXIgZj1hLkV2ZW50KCJzaG93LmJzLmNvbGxhcHNlIik7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGYpLCFmLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtlJiZlLmxlbmd0aCYmKGMuY2FsbChlLCJoaWRlIiksYnx8ZS5kYXRhKCJicy5jb2xsYXBzZSIsbnVsbCkpO3ZhciBnPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2UiKS5hZGRDbGFzcygiY29sbGFwc2luZyIpW2ddKDApLmF0dHIoImFyaWEtZXhwYW5kZWQiLCEwKSx0aGlzLiR0cmlnZ2VyLnJlbW92ZUNsYXNzKCJjb2xsYXBzZWQiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy50cmFuc2l0aW9uaW5nPTE7dmFyIGg9ZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzaW5nIikuYWRkQ2xhc3MoImNvbGxhcHNlIGluIilbZ10oIiIpLHRoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuY29sbGFwc2UiKX07aWYoIWEuc3VwcG9ydC50cmFuc2l0aW9uKXJldHVybiBoLmNhbGwodGhpcyk7dmFyIGk9YS5jYW1lbENhc2UoWyJzY3JvbGwiLGddLmpvaW4oIi0iKSk7dGhpcy4kZWxlbWVudC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShoLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pW2ddKHRoaXMuJGVsZW1lbnRbMF1baV0pfX19fSxkLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMudHJhbnNpdGlvbmluZyYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKSl7dmFyIGI9YS5FdmVudCgiaGlkZS5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSwhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGM9dGhpcy5kaW1lbnNpb24oKTt0aGlzLiRlbGVtZW50W2NdKHRoaXMuJGVsZW1lbnRbY10oKSlbMF0ub2Zmc2V0SGVpZ2h0LHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3MoImNvbGxhcHNpbmciKS5yZW1vdmVDbGFzcygiY29sbGFwc2UgaW4iKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSksdGhpcy4kdHJpZ2dlci5hZGRDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBlPWZ1bmN0aW9uKCl7dGhpcy50cmFuc2l0aW9uaW5nPTAsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSIpLnRyaWdnZXIoImhpZGRlbi5icy5jb2xsYXBzZSIpfTtyZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24/dm9pZCB0aGlzLiRlbGVtZW50W2NdKDApLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixhLnByb3h5KGUsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGQuVFJBTlNJVElPTl9EVVJBVElPTik6ZS5jYWxsKHRoaXMpfX19LGQucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3RoaXNbdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKT8iaGlkZSI6InNob3ciXSgpfSxkLnByb3RvdHlwZS5nZXRQYXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLm9wdGlvbnMucGFyZW50KS5maW5kKCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl1bZGF0YS1wYXJlbnQ9IicrdGhpcy5vcHRpb25zLnBhcmVudCsnIl0nKS5lYWNoKGEucHJveHkoZnVuY3Rpb24oYyxkKXt2YXIgZT1hKGQpO3RoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKGIoZSksZSl9LHRoaXMpKS5lbmQoKX0sZC5wcm90b3R5cGUuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5oYXNDbGFzcygiaW4iKTthLmF0dHIoImFyaWEtZXhwYW5kZWQiLGMpLGIudG9nZ2xlQ2xhc3MoImNvbGxhcHNlZCIsIWMpLmF0dHIoImFyaWEtZXhwYW5kZWQiLGMpfTt2YXIgZT1hLmZuLmNvbGxhcHNlO2EuZm4uY29sbGFwc2U9YyxhLmZuLmNvbGxhcHNlLkNvbnN0cnVjdG9yPWQsYS5mbi5jb2xsYXBzZS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uY29sbGFwc2U9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY29sbGFwc2UuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl0nLGZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7ZS5hdHRyKCJkYXRhLXRhcmdldCIpfHxkLnByZXZlbnREZWZhdWx0KCk7dmFyIGY9YihlKSxnPWYuZGF0YSgiYnMuY29sbGFwc2UiKSxoPWc/InRvZ2dsZSI6ZS5kYXRhKCk7Yy5jYWxsKGYsaCl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7dmFyIGM9Yi5hdHRyKCJkYXRhLXRhcmdldCIpO2N8fChjPWIuYXR0cigiaHJlZiIpLGM9YyYmLyNbQS1aYS16XS8udGVzdChjKSYmYy5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKTt2YXIgZD1jJiZhKGMpO3JldHVybiBkJiZkLmxlbmd0aD9kOmIucGFyZW50KCl9ZnVuY3Rpb24gYyhjKXtjJiYzPT09Yy53aGljaHx8KGEoZSkucmVtb3ZlKCksYShmKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWIoZCksZj17cmVsYXRlZFRhcmdldDp0aGlzfTtlLmhhc0NsYXNzKCJvcGVuIikmJihjJiYiY2xpY2siPT1jLnR5cGUmJi9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoYy50YXJnZXQudGFnTmFtZSkmJmEuY29udGFpbnMoZVswXSxjLnRhcmdldCl8fChlLnRyaWdnZXIoYz1hLkV2ZW50KCJoaWRlLmJzLmRyb3Bkb3duIixmKSksYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KGQuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIiksZS5yZW1vdmVDbGFzcygib3BlbiIpLnRyaWdnZXIoYS5FdmVudCgiaGlkZGVuLmJzLmRyb3Bkb3duIixmKSkpKSl9KSl9ZnVuY3Rpb24gZChiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxkPWMuZGF0YSgiYnMuZHJvcGRvd24iKTtkfHxjLmRhdGEoImJzLmRyb3Bkb3duIixkPW5ldyBnKHRoaXMpKSwic3RyaW5nIj09dHlwZW9mIGImJmRbYl0uY2FsbChjKX0pfXZhciBlPSIuZHJvcGRvd24tYmFja2Ryb3AiLGY9J1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsZz1mdW5jdGlvbihiKXthKGIpLm9uKCJjbGljay5icy5kcm9wZG93biIsdGhpcy50b2dnbGUpfTtnLlZFUlNJT049IjMuMy43IixnLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oZCl7dmFyIGU9YSh0aGlzKTtpZighZS5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGY9YihlKSxnPWYuaGFzQ2xhc3MoIm9wZW4iKTtpZihjKCksIWcpeyJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYhZi5jbG9zZXN0KCIubmF2YmFyLW5hdiIpLmxlbmd0aCYmYShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuYWRkQ2xhc3MoImRyb3Bkb3duLWJhY2tkcm9wIikuaW5zZXJ0QWZ0ZXIoYSh0aGlzKSkub24oImNsaWNrIixjKTt2YXIgaD17cmVsYXRlZFRhcmdldDp0aGlzfTtpZihmLnRyaWdnZXIoZD1hLkV2ZW50KCJzaG93LmJzLmRyb3Bkb3duIixoKSksZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47ZS50cmlnZ2VyKCJmb2N1cyIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIiksZi50b2dnbGVDbGFzcygib3BlbiIpLnRyaWdnZXIoYS5FdmVudCgic2hvd24uYnMuZHJvcGRvd24iLGgpKX1yZXR1cm4hMX19LGcucHJvdG90eXBlLmtleWRvd249ZnVuY3Rpb24oYyl7aWYoLygzOHw0MHwyN3wzMikvLnRlc3QoYy53aGljaCkmJiEvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpKXt2YXIgZD1hKHRoaXMpO2lmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpLCFkLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKXt2YXIgZT1iKGQpLGc9ZS5oYXNDbGFzcygib3BlbiIpO2lmKCFnJiYyNyE9Yy53aGljaHx8ZyYmMjc9PWMud2hpY2gpcmV0dXJuIDI3PT1jLndoaWNoJiZlLmZpbmQoZikudHJpZ2dlcigiZm9jdXMiKSxkLnRyaWdnZXIoImNsaWNrIik7dmFyIGg9IiBsaTpub3QoLmRpc2FibGVkKTp2aXNpYmxlIGEiLGk9ZS5maW5kKCIuZHJvcGRvd24tbWVudSIraCk7aWYoaS5sZW5ndGgpe3ZhciBqPWkuaW5kZXgoYy50YXJnZXQpOzM4PT1jLndoaWNoJiZqPjAmJmotLSw0MD09Yy53aGljaCYmajxpLmxlbmd0aC0xJiZqKyssfmp8fChqPTApLGkuZXEoaikudHJpZ2dlcigiZm9jdXMiKX19fX07dmFyIGg9YS5mbi5kcm9wZG93bjthLmZuLmRyb3Bkb3duPWQsYS5mbi5kcm9wZG93bi5Db25zdHJ1Y3Rvcj1nLGEuZm4uZHJvcGRvd24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmRyb3Bkb3duPWgsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIixjKS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLCIuZHJvcGRvd24gZm9ybSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS50b2dnbGUpLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIixmLGcucHJvdG90eXBlLmtleWRvd24pLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duLW1lbnUiLGcucHJvdG90eXBlLmtleWRvd24pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiLGQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1hKHRoaXMpLGY9ZS5kYXRhKCJicy5tb2RhbCIpLGc9YS5leHRlbmQoe30sYy5ERUZBVUxUUyxlLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpO2Z8fGUuZGF0YSgiYnMubW9kYWwiLGY9bmV3IGModGhpcyxnKSksInN0cmluZyI9PXR5cGVvZiBiP2ZbYl0oZCk6Zy5zaG93JiZmLnNob3coZCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMub3B0aW9ucz1jLHRoaXMuJGJvZHk9YShkb2N1bWVudC5ib2R5KSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy4kZGlhbG9nPXRoaXMuJGVsZW1lbnQuZmluZCgiLm1vZGFsLWRpYWxvZyIpLHRoaXMuJGJhY2tkcm9wPW51bGwsdGhpcy5pc1Nob3duPW51bGwsdGhpcy5vcmlnaW5hbEJvZHlQYWQ9bnVsbCx0aGlzLnNjcm9sbGJhcldpZHRoPTAsdGhpcy5pZ25vcmVCYWNrZHJvcENsaWNrPSExLHRoaXMub3B0aW9ucy5yZW1vdGUmJnRoaXMuJGVsZW1lbnQuZmluZCgiLm1vZGFsLWNvbnRlbnQiKS5sb2FkKHRoaXMub3B0aW9ucy5yZW1vdGUsYS5wcm94eShmdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQudHJpZ2dlcigibG9hZGVkLmJzLm1vZGFsIil9LHRoaXMpKX07Yy5WRVJTSU9OPSIzLjMuNyIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTMwMCxjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2JhY2tkcm9wOiEwLGtleWJvYXJkOiEwLHNob3c6ITB9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Nob3duP3RoaXMuaGlkZSgpOnRoaXMuc2hvdyhhKX0sYy5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbihiKXt2YXIgZD10aGlzLGU9YS5FdmVudCgic2hvdy5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO3RoaXMuJGVsZW1lbnQudHJpZ2dlcihlKSx0aGlzLmlzU2hvd258fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0aGlzLmlzU2hvd249ITAsdGhpcy5jaGVja1Njcm9sbGJhcigpLHRoaXMuc2V0U2Nyb2xsYmFyKCksdGhpcy4kYm9keS5hZGRDbGFzcygibW9kYWwtb3BlbiIpLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIiwnW2RhdGEtZGlzbWlzcz0ibW9kYWwiXScsYS5wcm94eSh0aGlzLmhpZGUsdGhpcykpLHRoaXMuJGRpYWxvZy5vbigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKCl7ZC4kZWxlbWVudC5vbmUoIm1vdXNldXAuZGlzbWlzcy5icy5tb2RhbCIsZnVuY3Rpb24oYil7YShiLnRhcmdldCkuaXMoZC4kZWxlbWVudCkmJihkLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITApfSl9KSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7dmFyIGU9YS5zdXBwb3J0LnRyYW5zaXRpb24mJmQuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKTtkLiRlbGVtZW50LnBhcmVudCgpLmxlbmd0aHx8ZC4kZWxlbWVudC5hcHBlbmRUbyhkLiRib2R5KSxkLiRlbGVtZW50LnNob3coKS5zY3JvbGxUb3AoMCksZC5hZGp1c3REaWFsb2coKSxlJiZkLiRlbGVtZW50WzBdLm9mZnNldFdpZHRoLGQuJGVsZW1lbnQuYWRkQ2xhc3MoImluIiksZC5lbmZvcmNlRm9jdXMoKTt2YXIgZj1hLkV2ZW50KCJzaG93bi5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO2U/ZC4kZGlhbG9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmdW5jdGlvbigpe2QuJGVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKS50cmlnZ2VyKGYpfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pKX0sYy5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbihiKXtiJiZiLnByZXZlbnREZWZhdWx0KCksYj1hLkV2ZW50KCJoaWRlLmJzLm1vZGFsIiksdGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpLHRoaXMuaXNTaG93biYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJih0aGlzLmlzU2hvd249ITEsdGhpcy5lc2NhcGUoKSx0aGlzLnJlc2l6ZSgpLGEoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImluIikub2ZmKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIikub2ZmKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiKSx0aGlzLiRkaWFsb2cub2ZmKCJtb3VzZWRvd24uZGlzbWlzcy5icy5tb2RhbCIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kZWxlbWVudC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eSh0aGlzLmhpZGVNb2RhbCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTp0aGlzLmhpZGVNb2RhbCgpKX0sYy5wcm90b3R5cGUuZW5mb3JjZUZvY3VzPWZ1bmN0aW9uKCl7YShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIikub24oImZvY3VzaW4uYnMubW9kYWwiLGEucHJveHkoZnVuY3Rpb24oYSl7ZG9jdW1lbnQ9PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudFswXT09PWEudGFyZ2V0fHx0aGlzLiRlbGVtZW50LmhhcyhhLnRhcmdldCkubGVuZ3RofHx0aGlzLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIil9LHRoaXMpKX0sYy5wcm90b3R5cGUuZXNjYXBlPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMua2V5Ym9hcmQ/dGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpezI3PT1hLndoaWNoJiZ0aGlzLmhpZGUoKX0sdGhpcykpOnRoaXMuaXNTaG93bnx8dGhpcy4kZWxlbWVudC5vZmYoImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oKXt0aGlzLmlzU2hvd24/YSh3aW5kb3cpLm9uKCJyZXNpemUuYnMubW9kYWwiLGEucHJveHkodGhpcy5oYW5kbGVVcGRhdGUsdGhpcykpOmEod2luZG93KS5vZmYoInJlc2l6ZS5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5oaWRlTW9kYWw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuJGVsZW1lbnQuaGlkZSgpLHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24oKXthLiRib2R5LnJlbW92ZUNsYXNzKCJtb2RhbC1vcGVuIiksYS5yZXNldEFkanVzdG1lbnRzKCksYS5yZXNldFNjcm9sbGJhcigpLGEuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuLmJzLm1vZGFsIil9KX0sYy5wcm90b3R5cGUucmVtb3ZlQmFja2Ryb3A9ZnVuY3Rpb24oKXt0aGlzLiRiYWNrZHJvcCYmdGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFja2Ryb3A9bnVsbH0sYy5wcm90b3R5cGUuYmFja2Ryb3A9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT8iZmFkZSI6IiI7aWYodGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMuYmFja2Ryb3Ape3ZhciBmPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZlO2lmKHRoaXMuJGJhY2tkcm9wPWEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJtb2RhbC1iYWNrZHJvcCAiK2UpLmFwcGVuZFRvKHRoaXMuJGJvZHkpLHRoaXMuJGVsZW1lbnQub24oImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLGEucHJveHkoZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz92b2lkKHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSk6dm9pZChhLnRhcmdldD09PWEuY3VycmVudFRhcmdldCYmKCJzdGF0aWMiPT10aGlzLm9wdGlvbnMuYmFja2Ryb3A/dGhpcy4kZWxlbWVudFswXS5mb2N1cygpOnRoaXMuaGlkZSgpKSl9LHRoaXMpKSxmJiZ0aGlzLiRiYWNrZHJvcFswXS5vZmZzZXRXaWR0aCx0aGlzLiRiYWNrZHJvcC5hZGRDbGFzcygiaW4iKSwhYilyZXR1cm47Zj90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYikuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpiKCl9ZWxzZSBpZighdGhpcy5pc1Nob3duJiZ0aGlzLiRiYWNrZHJvcCl7dGhpcy4kYmFja2Ryb3AucmVtb3ZlQ2xhc3MoImluIik7dmFyIGc9ZnVuY3Rpb24oKXtkLnJlbW92ZUJhY2tkcm9wKCksYiYmYigpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGJhY2tkcm9wLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixnKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT04pOmcoKX1lbHNlIGImJmIoKX0sYy5wcm90b3R5cGUuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5hZGp1c3REaWFsb2coKX0sYy5wcm90b3R5cGUuYWRqdXN0RGlhbG9nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudFswXS5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDt0aGlzLiRlbGVtZW50LmNzcyh7cGFkZGluZ0xlZnQ6IXRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJmE/dGhpcy5zY3JvbGxiYXJXaWR0aDoiIixwYWRkaW5nUmlnaHQ6dGhpcy5ib2R5SXNPdmVyZmxvd2luZyYmIWE/dGhpcy5zY3JvbGxiYXJXaWR0aDoiIn0pfSxjLnByb3RvdHlwZS5yZXNldEFkanVzdG1lbnRzPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiIiLHBhZGRpbmdSaWdodDoiIn0pfSxjLnByb3RvdHlwZS5jaGVja1Njcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5pbm5lcldpZHRoO2lmKCFhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YT1iLnJpZ2h0LU1hdGguYWJzKGIubGVmdCl9dGhpcy5ib2R5SXNPdmVyZmxvd2luZz1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoPGEsdGhpcy5zY3JvbGxiYXJXaWR0aD10aGlzLm1lYXN1cmVTY3JvbGxiYXIoKX0sYy5wcm90b3R5cGUuc2V0U2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9cGFyc2VJbnQodGhpcy4kYm9keS5jc3MoInBhZGRpbmctcmlnaHQiKXx8MCwxMCk7dGhpcy5vcmlnaW5hbEJvZHlQYWQ9ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHR8fCIiLHRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJnRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IixhK3RoaXMuc2Nyb2xsYmFyV2lkdGgpfSxjLnByb3RvdHlwZS5yZXNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3RoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iix0aGlzLm9yaWdpbmFsQm9keVBhZCl9LGMucHJvdG90eXBlLm1lYXN1cmVTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0ibW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUiLHRoaXMuJGJvZHkuYXBwZW5kKGEpO3ZhciBiPWEub2Zmc2V0V2lkdGgtYS5jbGllbnRXaWR0aDtyZXR1cm4gdGhpcy4kYm9keVswXS5yZW1vdmVDaGlsZChhKSxifTt2YXIgZD1hLmZuLm1vZGFsO2EuZm4ubW9kYWw9YixhLmZuLm1vZGFsLkNvbnN0cnVjdG9yPWMsYS5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ubW9kYWw9ZCx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMubW9kYWwuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsIl0nLGZ1bmN0aW9uKGMpe3ZhciBkPWEodGhpcyksZT1kLmF0dHIoImhyZWYiKSxmPWEoZC5hdHRyKCJkYXRhLXRhcmdldCIpfHxlJiZlLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGc9Zi5kYXRhKCJicy5tb2RhbCIpPyJ0b2dnbGUiOmEuZXh0ZW5kKHtyZW1vdGU6IS8jLy50ZXN0KGUpJiZlfSxmLmRhdGEoKSxkLmRhdGEoKSk7ZC5pcygiYSIpJiZjLnByZXZlbnREZWZhdWx0KCksZi5vbmUoInNob3cuYnMubW9kYWwiLGZ1bmN0aW9uKGEpe2EuaXNEZWZhdWx0UHJldmVudGVkKCl8fGYub25lKCJoaWRkZW4uYnMubW9kYWwiLGZ1bmN0aW9uKCl7ZC5pcygiOnZpc2libGUiKSYmZC50cmlnZ2VyKCJmb2N1cyIpfSl9KSxiLmNhbGwoZixnLHRoaXMpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50b29sdGlwIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7IWUmJi9kZXN0cm95fGhpZGUvLnRlc3QoYil8fChlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy43IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO2lmKGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c291dCI9PWIudHlwZT8iZm9jdXMiOiJob3ZlciJdPSExKSwhYy5pc0luU3RhdGVUcnVlKCkpcmV0dXJuIGNsZWFyVGltZW91dChjLnRpbWVvdXQpLGMuaG92ZXJTdGF0ZT0ib3V0IixjLm9wdGlvbnMuZGVsYXkmJmMub3B0aW9ucy5kZWxheS5oaWRlP3ZvaWQoYy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXsib3V0Ij09Yy5ob3ZlclN0YXRlJiZjLmhpZGUoKX0sYy5vcHRpb25zLmRlbGF5LmhpZGUpKTpjLmhpZGUoKX0sYy5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3ZhciBiPWEuRXZlbnQoInNob3cuYnMuIit0aGlzLnR5cGUpO2lmKHRoaXMuaGFzQ29udGVudCgpJiZ0aGlzLmVuYWJsZWQpe3RoaXMuJGVsZW1lbnQudHJpZ2dlcihiKTt2YXIgZD1hLmNvbnRhaW5zKHRoaXMuJGVsZW1lbnRbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy4kZWxlbWVudFswXSk7aWYoYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8IWQpcmV0dXJuO3ZhciBlPXRoaXMsZj10aGlzLnRpcCgpLGc9dGhpcy5nZXRVSUQodGhpcy50eXBlKTt0aGlzLnNldENvbnRlbnQoKSxmLmF0dHIoImlkIixnKSx0aGlzLiRlbGVtZW50LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGcpLHRoaXMub3B0aW9ucy5hbmltYXRpb24mJmYuYWRkQ2xhc3MoImZhZGUiKTt2YXIgaD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnBsYWNlbWVudD90aGlzLm9wdGlvbnMucGxhY2VtZW50LmNhbGwodGhpcyxmWzBdLHRoaXMuJGVsZW1lbnRbMF0pOnRoaXMub3B0aW9ucy5wbGFjZW1lbnQsaT0vXHM/YXV0bz9ccz8vaSxqPWkudGVzdChoKTtqJiYoaD1oLnJlcGxhY2UoaSwiIil8fCJ0b3AiKSxmLmRldGFjaCgpLmNzcyh7dG9wOjAsbGVmdDowLGRpc3BsYXk6ImJsb2NrIn0pLmFkZENsYXNzKGgpLmRhdGEoImJzLiIrdGhpcy50eXBlLHRoaXMpLHRoaXMub3B0aW9ucy5jb250YWluZXI/Zi5hcHBlbmRUbyh0aGlzLm9wdGlvbnMuY29udGFpbmVyKTpmLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5zZXJ0ZWQuYnMuIit0aGlzLnR5cGUpO3ZhciBrPXRoaXMuZ2V0UG9zaXRpb24oKSxsPWZbMF0ub2Zmc2V0V2lkdGgsbT1mWzBdLm9mZnNldEhlaWdodDtpZihqKXt2YXIgbj1oLG89dGhpcy5nZXRQb3NpdGlvbih0aGlzLiR2aWV3cG9ydCk7aD0iYm90dG9tIj09aCYmay5ib3R0b20rbT5vLmJvdHRvbT8idG9wIjoidG9wIj09aCYmay50b3AtbTxvLnRvcD8iYm90dG9tIjoicmlnaHQiPT1oJiZrLnJpZ2h0K2w+by53aWR0aD8ibGVmdCI6ImxlZnQiPT1oJiZrLmxlZnQtbDxvLmxlZnQ/InJpZ2h0IjpoLGYucmVtb3ZlQ2xhc3MobikuYWRkQ2xhc3MoaCl9dmFyIHA9dGhpcy5nZXRDYWxjdWxhdGVkT2Zmc2V0KGgsayxsLG0pO3RoaXMuYXBwbHlQbGFjZW1lbnQocCxoKTt2YXIgcT1mdW5jdGlvbigpe3ZhciBhPWUuaG92ZXJTdGF0ZTtlLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLiIrZS50eXBlKSxlLmhvdmVyU3RhdGU9bnVsbCwib3V0Ij09YSYmZS5sZWF2ZShlKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJHRpcC5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLHEpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6cSgpfX0sYy5wcm90b3R5cGUuYXBwbHlQbGFjZW1lbnQ9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLnRpcCgpLGU9ZFswXS5vZmZzZXRXaWR0aCxmPWRbMF0ub2Zmc2V0SGVpZ2h0LGc9cGFyc2VJbnQoZC5jc3MoIm1hcmdpbi10b3AiKSwxMCksaD1wYXJzZUludChkLmNzcygibWFyZ2luLWxlZnQiKSwxMCk7aXNOYU4oZykmJihnPTApLGlzTmFOKGgpJiYoaD0wKSxiLnRvcCs9ZyxiLmxlZnQrPWgsYS5vZmZzZXQuc2V0T2Zmc2V0KGRbMF0sYS5leHRlbmQoe3VzaW5nOmZ1bmN0aW9uKGEpe2QuY3NzKHt0b3A6TWF0aC5yb3VuZChhLnRvcCksbGVmdDpNYXRoLnJvdW5kKGEubGVmdCl9KX19LGIpLDApLGQuYWRkQ2xhc3MoImluIik7dmFyIGk9ZFswXS5vZmZzZXRXaWR0aCxqPWRbMF0ub2Zmc2V0SGVpZ2h0OyJ0b3AiPT1jJiZqIT1mJiYoYi50b3A9Yi50b3ArZi1qKTt2YXIgaz10aGlzLmdldFZpZXdwb3J0QWRqdXN0ZWREZWx0YShjLGIsaSxqKTtrLmxlZnQ/Yi5sZWZ0Kz1rLmxlZnQ6Yi50b3ArPWsudG9wO3ZhciBsPS90b3B8Ym90dG9tLy50ZXN0KGMpLG09bD8yKmsubGVmdC1lK2k6MiprLnRvcC1mK2osbj1sPyJvZmZzZXRXaWR0aCI6Im9mZnNldEhlaWdodCI7ZC5vZmZzZXQoYiksdGhpcy5yZXBsYWNlQXJyb3cobSxkWzBdW25dLGwpfSxjLnByb3RvdHlwZS5yZXBsYWNlQXJyb3c9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYXJyb3coKS5jc3MoYz8ibGVmdCI6InRvcCIsNTAqKDEtYS9iKSsiJSIpLmNzcyhjPyJ0b3AiOiJsZWZ0IiwiIil9LGMucHJvdG90eXBlLnNldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRpcCgpLGI9dGhpcy5nZXRUaXRsZSgpO2EuZmluZCgiLnRvb2x0aXAtaW5uZXIiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLnJlbW92ZUNsYXNzKCJmYWRlIGluIHRvcCBib3R0b20gbGVmdCByaWdodCIpfSxjLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoKXsiaW4iIT1lLmhvdmVyU3RhdGUmJmYuZGV0YWNoKCksZS4kZWxlbWVudCYmZS4kZWxlbWVudC5yZW1vdmVBdHRyKCJhcmlhLWRlc2NyaWJlZGJ5IikudHJpZ2dlcigiaGlkZGVuLmJzLiIrZS50eXBlKSxiJiZiKCl9dmFyIGU9dGhpcyxmPWEodGhpcy4kdGlwKSxnPWEuRXZlbnQoImhpZGUuYnMuIit0aGlzLnR5cGUpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSwhZy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4gZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXN9LGMucHJvdG90eXBlLmZpeFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudDsoYS5hdHRyKCJ0aXRsZSIpfHwic3RyaW5nIiE9dHlwZW9mIGEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpKSYmYS5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIixhLmF0dHIoInRpdGxlIil8fCIiKS5hdHRyKCJ0aXRsZSIsIiIpfSxjLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKX0sYy5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oYil7Yj1ifHx0aGlzLiRlbGVtZW50O3ZhciBjPWJbMF0sZD0iQk9EWSI9PWMudGFnTmFtZSxlPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bnVsbD09ZS53aWR0aCYmKGU9YS5leHRlbmQoe30sZSx7d2lkdGg6ZS5yaWdodC1lLmxlZnQsaGVpZ2h0OmUuYm90dG9tLWUudG9wfSkpO3ZhciBmPXdpbmRvdy5TVkdFbGVtZW50JiZjIGluc3RhbmNlb2Ygd2luZG93LlNWR0VsZW1lbnQsZz1kP3t0b3A6MCxsZWZ0OjB9OmY/bnVsbDpiLm9mZnNldCgpLGg9e3Njcm9sbDpkP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOmIuc2Nyb2xsVG9wKCl9LGk9ZD97d2lkdGg6YSh3aW5kb3cpLndpZHRoKCksaGVpZ2h0OmEod2luZG93KS5oZWlnaHQoKX06bnVsbDtyZXR1cm4gYS5leHRlbmQoe30sZSxoLGksZyl9LGMucHJvdG90eXBlLmdldENhbGN1bGF0ZWRPZmZzZXQ9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuImJvdHRvbSI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToidG9wIj09YT97dG9wOmIudG9wLWQsbGVmdDpiLmxlZnQrYi53aWR0aC8yLWMvMn06ImxlZnQiPT1hP3t0b3A6Yi50b3ArYi5oZWlnaHQvMi1kLzIsbGVmdDpiLmxlZnQtY306e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdCtiLndpZHRofX0sYy5wcm90b3R5cGUuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXt0b3A6MCxsZWZ0OjB9O2lmKCF0aGlzLiR2aWV3cG9ydClyZXR1cm4gZTt2YXIgZj10aGlzLm9wdGlvbnMudmlld3BvcnQmJnRoaXMub3B0aW9ucy52aWV3cG9ydC5wYWRkaW5nfHwwLGc9dGhpcy5nZXRQb3NpdGlvbih0aGlzLiR2aWV3cG9ydCk7aWYoL3JpZ2h0fGxlZnQvLnRlc3QoYSkpe3ZhciBoPWIudG9wLWYtZy5zY3JvbGwsaT1iLnRvcCtmLWcuc2Nyb2xsK2Q7aDxnLnRvcD9lLnRvcD1nLnRvcC1oOmk+Zy50b3ArZy5oZWlnaHQmJihlLnRvcD1nLnRvcCtnLmhlaWdodC1pKX1lbHNle3ZhciBqPWIubGVmdC1mLGs9Yi5sZWZ0K2YrYztqPGcubGVmdD9lLmxlZnQ9Zy5sZWZ0LWo6az5nLnJpZ2h0JiYoZS5sZWZ0PWcubGVmdCtnLndpZHRoLWspfXJldHVybiBlfSxjLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kZWxlbWVudCxjPXRoaXMub3B0aW9ucztyZXR1cm4gYT1iLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBjLnRpdGxlP2MudGl0bGUuY2FsbChiWzBdKTpjLnRpdGxlKX0sYy5wcm90b3R5cGUuZ2V0VUlEPWZ1bmN0aW9uKGEpe2RvIGErPX5+KDFlNipNYXRoLnJhbmRvbSgpKTt3aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSk7cmV0dXJuIGF9LGMucHJvdG90eXBlLnRpcD1mdW5jdGlvbigpe2lmKCF0aGlzLiR0aXAmJih0aGlzLiR0aXA9YSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpLDEhPXRoaXMuJHRpcC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiBgdGVtcGxhdGVgIG9wdGlvbiBtdXN0IGNvbnNpc3Qgb2YgZXhhY3RseSAxIHRvcC1sZXZlbCBlbGVtZW50ISIpO3JldHVybiB0aGlzLiR0aXB9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi50b29sdGlwLWFycm93Iil9LGMucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMH0sYy5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMX0sYy5wcm90b3R5cGUudG9nZ2xlRW5hYmxlZD1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hdGhpcy5lbmFibGVkfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcztiJiYoYz1hKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpLGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpKSxiPyhjLmluU3RhdGUuY2xpY2s9IWMuaW5TdGF0ZS5jbGljayxjLmlzSW5TdGF0ZVRydWUoKT9jLmVudGVyKGMpOmMubGVhdmUoYykpOmMudGlwKCkuaGFzQ2xhc3MoImluIik/Yy5sZWF2ZShjKTpjLmVudGVyKGMpfSxjLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLmhpZGUoZnVuY3Rpb24oKXthLiRlbGVtZW50Lm9mZigiLiIrYS50eXBlKS5yZW1vdmVEYXRhKCJicy4iK2EudHlwZSksYS4kdGlwJiZhLiR0aXAuZGV0YWNoKCksYS4kdGlwPW51bGwsYS4kYXJyb3c9bnVsbCxhLiR2aWV3cG9ydD1udWxsLGEuJGVsZW1lbnQ9bnVsbH0pfTt2YXIgZD1hLmZuLnRvb2x0aXA7YS5mbi50b29sdGlwPWIsYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yPWMsYS5mbi50b29sdGlwLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi50b29sdGlwPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5wb3BvdmVyIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7IWUmJi9kZXN0cm95fGhpZGUvLnRlc3QoYil8fChlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy43IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNyIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpewp0aGlzLmFjdGl2ZVRhcmdldD1iLHRoaXMuY2xlYXIoKTt2YXIgYz10aGlzLnNlbGVjdG9yKydbZGF0YS10YXJnZXQ9IicrYisnIl0sJyt0aGlzLnNlbGVjdG9yKydbaHJlZj0iJytiKyciXScsZD1hKGMpLnBhcmVudHMoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSIpO2QucGFyZW50KCIuZHJvcGRvd24tbWVudSIpLmxlbmd0aCYmKGQ9ZC5jbG9zZXN0KCJsaS5kcm9wZG93biIpLmFkZENsYXNzKCJhY3RpdmUiKSksZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNyIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjciLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gZTxjJiYidG9wIjtpZigiYm90dG9tIj09dGhpcy5hZmZpeGVkKXJldHVybiBudWxsIT1jPyEoZSt0aGlzLnVucGluPD1mLnRvcCkmJiJib3R0b20iOiEoZStnPD1hLWQpJiYiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmZTw9Yz8idG9wIjpudWxsIT1kJiZpK2o+PWEtZCYmImJvdHRvbSJ9LGMucHJvdG90eXBlLmdldFBpbm5lZE9mZnNldD1mdW5jdGlvbigpe2lmKHRoaXMucGlubmVkT2Zmc2V0KXJldHVybiB0aGlzLnBpbm5lZE9mZnNldDt0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKGMuUkVTRVQpLmFkZENsYXNzKCJhZmZpeCIpO3ZhciBhPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxiPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCk7cmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0PWIudG9wLWF9LGMucHJvdG90eXBlLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wPWZ1bmN0aW9uKCl7c2V0VGltZW91dChhLnByb3h5KHRoaXMuY2hlY2tQb3NpdGlvbix0aGlzKSwxKX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuJGVsZW1lbnQuaXMoIjp2aXNpYmxlIikpe3ZhciBiPXRoaXMuJGVsZW1lbnQuaGVpZ2h0KCksZD10aGlzLm9wdGlvbnMub2Zmc2V0LGU9ZC50b3AsZj1kLmJvdHRvbSxnPU1hdGgubWF4KGEoZG9jdW1lbnQpLmhlaWdodCgpLGEoZG9jdW1lbnQuYm9keSkuaGVpZ2h0KCkpOyJvYmplY3QiIT10eXBlb2YgZCYmKGY9ZT1kKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmKGU9ZC50b3AodGhpcy4kZWxlbWVudCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoZj1kLmJvdHRvbSh0aGlzLiRlbGVtZW50KSk7dmFyIGg9dGhpcy5nZXRTdGF0ZShnLGIsZSxmKTtpZih0aGlzLmFmZml4ZWQhPWgpe251bGwhPXRoaXMudW5waW4mJnRoaXMuJGVsZW1lbnQuY3NzKCJ0b3AiLCIiKTt2YXIgaT0iYWZmaXgiKyhoPyItIitoOiIiKSxqPWEuRXZlbnQoaSsiLmJzLmFmZml4Iik7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGopLGouaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO3RoaXMuYWZmaXhlZD1oLHRoaXMudW5waW49ImJvdHRvbSI9PWg/dGhpcy5nZXRQaW5uZWRPZmZzZXQoKTpudWxsLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoaSkudHJpZ2dlcihpLnJlcGxhY2UoImFmZml4IiwiYWZmaXhlZCIpKyIuYnMuYWZmaXgiKX0iYm90dG9tIj09aCYmdGhpcy4kZWxlbWVudC5vZmZzZXQoe3RvcDpnLWItZn0pfX07dmFyIGQ9YS5mbi5hZmZpeDthLmZuLmFmZml4PWIsYS5mbi5hZmZpeC5Db25zdHJ1Y3Rvcj1jLGEuZm4uYWZmaXgubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmFmZml4PWQsdGhpc30sYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXNweT0iYWZmaXgiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGQ9Yy5kYXRhKCk7ZC5vZmZzZXQ9ZC5vZmZzZXR8fHt9LG51bGwhPWQub2Zmc2V0Qm90dG9tJiYoZC5vZmZzZXQuYm90dG9tPWQub2Zmc2V0Qm90dG9tKSxudWxsIT1kLm9mZnNldFRvcCYmKGQub2Zmc2V0LnRvcD1kLm9mZnNldFRvcCksYi5jYWxsKGMsZCl9KX0pfShqUXVlcnkpOw=="}},"time_used":204,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":204,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/chart/chartist/chartist.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.349Z","timestamp":1785150870349,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/chart/chartist/chartist.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-9506\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Ve4plLJ%2F0tkz6tDXtxnrkbcssY%2F37lPmvWKJPb%2FwNeZX5yiG9g1ZBDwCwvInFCIpDOvbc0PtL9v5bXNBQGf9m6PL8VBUsJLoxLNh6SX0tr20koVNOQFNEy7Fyw%3D%3D\"}]}\r\ncf-ray: a21b388bbbda56a2-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"]}],"data":{"size":38150,"size_decoded":12566,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (32061)","md5":"7b14465306edff3606bebf8ddfd4c11f","sha1":"3f8edaf284826b1a5b1d5e164225e5b4b2f79aa0","sha256":"d75de3ba1937e95e7136c360f68a0d01747164c82843f64c66cf717bcf02f3a6","sha512":"97b7dd48727a84a975b783ad9c46e9346589718f88519bf60289197791bc6a4dcc2fbb3a340321218471697828b4f7e1f6123cbb41d51321cd7af5cf5fbf82f9","ssdeep":"768:bmbkWSGO6KBcEAjOsc3cRZHLXtTwfy2rRB04rcBba6GUFetnEb0shwQAzvz4U66q:bZGOmjOuZHLXtTwfy2rRB04rcBba6GUX","tlshash":"a503ea88f6567a16869362b6403f010ff171b4eda4499ca8e49ce8d0bd78d79127bf38","first_seen":"2024-07-26T18:42:12Z","last_seen":"2026-07-27T11:25:33.563848Z","times_seen":24,"resource_available":true,"data":"LyogQ2hhcnRpc3QuanMgMC45LjgKICogQ29weXJpZ2h0IMKpIDIwMTYgR2lvbiBLdW56CiAqIEZyZWUgdG8gdXNlIHVuZGVyIGVpdGhlciB0aGUgV1RGUEwgbGljZW5zZSBvciB0aGUgTUlUIGxpY2Vuc2UuCiAqIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9naW9ua3Vuei9jaGFydGlzdC1qcy9tYXN0ZXIvTElDRU5TRS1XVEZQTAogKiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZ2lvbmt1bnovY2hhcnRpc3QtanMvbWFzdGVyL0xJQ0VOU0UtTUlUCiAqLwoKIWZ1bmN0aW9uKGEsYil7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gYS5DaGFydGlzdD1iKCl9KToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YigpOmEuQ2hhcnRpc3Q9YigpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIGE9e3ZlcnNpb246IjAuOS44In07cmV0dXJuIGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yy5uYW1lc3BhY2VzPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsY3Q6Imh0dHA6Ly9naW9ua3Vuei5naXRodWIuY29tL2NoYXJ0aXN0LWpzL2N0In0sYy5ub29wPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxjLmFscGhhTnVtZXJhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcrYSUyNil9LGMuZXh0ZW5kPWZ1bmN0aW9uKGEpe2E9YXx8e307dmFyIGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBiLmZvckVhY2goZnVuY3Rpb24oYil7Zm9yKHZhciBkIGluIGIpIm9iamVjdCIhPXR5cGVvZiBiW2RdfHxudWxsPT09YltkXXx8YltkXWluc3RhbmNlb2YgQXJyYXk/YVtkXT1iW2RdOmFkXT1jLmV4dGVuZCh7fSxhW2RdLGJbZF0pfSksYX0sYy5yZXBsYWNlQWxsPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoYiwiZyIpLGMpfSxjLmVuc3VyZVVuaXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGEmJihhKz1iKSxhfSxjLnF1YW50aXR5PWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSl7dmFyIGI9L14oXGQrKVxzKiguKikkL2cuZXhlYyhhKTtyZXR1cm57dmFsdWU6K2JbMV0sdW5pdDpiWzJdfHx2b2lkIDB9fXJldHVybnt2YWx1ZTphfX0sYy5xdWVyeVNlbGVjdG9yPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgTm9kZT9hOmIucXVlcnlTZWxlY3RvcihhKX0sYy50aW1lcz1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuYXBwbHkobnVsbCxuZXcgQXJyYXkoYSkpfSxjLnN1bT1mdW5jdGlvbihhLGIpe3JldHVybiBhKyhiP2I6MCl9LGMubWFwTXVsdGlwbHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBiKmF9fSxjLm1hcEFkZD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGIrYX19LGMuc2VyaWFsTWFwPWZ1bmN0aW9uKGEsYil7dmFyIGQ9W10sZT1NYXRoLm1heC5hcHBseShudWxsLGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0pKTtyZXR1cm4gYy50aW1lcyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGMsZSl7dmFyIGY9YS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGFbZV19KTtkW2VdPWIuYXBwbHkobnVsbCxmKX0pLGR9LGMucm91bmRXaXRoUHJlY2lzaW9uPWZ1bmN0aW9uKGEsYil7dmFyIGQ9TWF0aC5wb3coMTAsYnx8Yy5wcmVjaXNpb24pO3JldHVybiBNYXRoLnJvdW5kKGEqZCkvZH0sYy5wcmVjaXNpb249OCxjLmVzY2FwaW5nTWFwPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMwMzk7In0sYy5zZXJpYWxpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hfHx2b2lkIDA9PT1hP2E6KCJudW1iZXIiPT10eXBlb2YgYT9hPSIiK2E6Im9iamVjdCI9PXR5cGVvZiBhJiYoYT1KU09OLnN0cmluZ2lmeSh7ZGF0YTphfSkpLE9iamVjdC5rZXlzKGMuZXNjYXBpbmdNYXApLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBjLnJlcGxhY2VBbGwoYSxiLGMuZXNjYXBpbmdNYXBbYl0pfSxhKSl9LGMuZGVzZXJpYWxpemU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBhO2E9T2JqZWN0LmtleXMoYy5lc2NhcGluZ01hcCkucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGMucmVwbGFjZUFsbChhLGMuZXNjYXBpbmdNYXBbYl0sYil9LGEpO3RyeXthPUpTT04ucGFyc2UoYSksYT12b2lkIDAhPT1hLmRhdGE/YS5kYXRhOmF9Y2F0Y2goYil7fXJldHVybiBhfSxjLmNyZWF0ZVN2Zz1mdW5jdGlvbihhLGIsZCxlKXt2YXIgZjtyZXR1cm4gYj1ifHwiMTAwJSIsZD1kfHwiMTAwJSIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYS5xdWVyeVNlbGVjdG9yQWxsKCJzdmciKSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZU5TKGMubmFtZXNwYWNlcy54bWxucywiY3QiKX0pLmZvckVhY2goZnVuY3Rpb24oYil7YS5yZW1vdmVDaGlsZChiKX0pLGY9bmV3IGMuU3ZnKCJzdmciKS5hdHRyKHt3aWR0aDpiLGhlaWdodDpkfSkuYWRkQ2xhc3MoZSkuYXR0cih7c3R5bGU6IndpZHRoOiAiK2IrIjsgaGVpZ2h0OiAiK2QrIjsifSksYS5hcHBlbmRDaGlsZChmLl9ub2RlKSxmfSxjLm5vcm1hbGl6ZURhdGE9ZnVuY3Rpb24oYSl7aWYoYT1hfHx7c2VyaWVzOltdLGxhYmVsczpbXX0sYS5zZXJpZXM9YS5zZXJpZXN8fFtdLGEubGFiZWxzPWEubGFiZWxzfHxbXSxhLnNlcmllcy5sZW5ndGg+MCYmMD09PWEubGFiZWxzLmxlbmd0aCl7dmFyIGIsZD1jLmdldERhdGFBcnJheShhKTtiPWQuZXZlcnkoZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBBcnJheX0pP01hdGgubWF4LmFwcGx5KG51bGwsZC5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofSkpOmQubGVuZ3RoLGEubGFiZWxzPWMudGltZXMoYikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIiJ9KX1yZXR1cm4gYX0sYy5yZXZlcnNlRGF0YT1mdW5jdGlvbihhKXthLmxhYmVscy5yZXZlcnNlKCksYS5zZXJpZXMucmV2ZXJzZSgpO2Zvcih2YXIgYj0wO2I8YS5zZXJpZXMubGVuZ3RoO2IrKykib2JqZWN0Ij09dHlwZW9mIGEuc2VyaWVzW2JdJiZ2b2lkIDAhPT1hLnNlcmllc1tiXS5kYXRhP2Euc2VyaWVzW2JdLmRhdGEucmV2ZXJzZSgpOmEuc2VyaWVzW2JdaW5zdGFuY2VvZiBBcnJheSYmYS5zZXJpZXNbYl0ucmV2ZXJzZSgpfSxjLmdldERhdGFBcnJheT1mdW5jdGlvbihhLGIsZCl7ZnVuY3Rpb24gZShhKXtpZighYy5pc0ZhbHNleUJ1dFplcm8oYSkpe2lmKChhLmRhdGF8fGEpaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4oYS5kYXRhfHxhKS5tYXAoZSk7aWYoYS5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKSlyZXR1cm4gZShhLnZhbHVlKTtpZihkKXt2YXIgYj17fTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGQ/YltkXT1jLmdldE51bWJlck9yVW5kZWZpbmVkKGEpOmIueT1jLmdldE51bWJlck9yVW5kZWZpbmVkKGEpLGIueD1hLmhhc093blByb3BlcnR5KCJ4Iik/Yy5nZXROdW1iZXJPclVuZGVmaW5lZChhLngpOmIueCxiLnk9YS5oYXNPd25Qcm9wZXJ0eSgieSIpP2MuZ2V0TnVtYmVyT3JVbmRlZmluZWQoYS55KTpiLnksYn1yZXR1cm4gYy5nZXROdW1iZXJPclVuZGVmaW5lZChhKX19cmV0dXJuKGImJiFhLnJldmVyc2VkfHwhYiYmYS5yZXZlcnNlZCkmJihjLnJldmVyc2VEYXRhKGEpLGEucmV2ZXJzZWQ9IWEucmV2ZXJzZWQpLGEuc2VyaWVzLm1hcChlKX0sYy5ub3JtYWxpemVQYWRkaW5nPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9Ynx8MCwibnVtYmVyIj09dHlwZW9mIGE/e3RvcDphLHJpZ2h0OmEsYm90dG9tOmEsbGVmdDphfTp7dG9wOiJudW1iZXIiPT10eXBlb2YgYS50b3A/YS50b3A6YixyaWdodDoibnVtYmVyIj09dHlwZW9mIGEucmlnaHQ/YS5yaWdodDpiLGJvdHRvbToibnVtYmVyIj09dHlwZW9mIGEuYm90dG9tP2EuYm90dG9tOmIsbGVmdDoibnVtYmVyIj09dHlwZW9mIGEubGVmdD9hLmxlZnQ6Yn19LGMuZ2V0TWV0YURhdGE9ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLmRhdGE/YS5kYXRhW2JdOmFbYl07cmV0dXJuIGQ/Yy5zZXJpYWxpemUoZC5tZXRhKTp2b2lkIDB9LGMub3JkZXJPZk1hZ25pdHVkZT1mdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZyhNYXRoLmFicyhhKSkvTWF0aC5MTjEwKX0sYy5wcm9qZWN0TGVuZ3RoPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYi9jLnJhbmdlKmF9LGMuZ2V0QXZhaWxhYmxlSGVpZ2h0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hdGgubWF4KChjLnF1YW50aXR5KGIuaGVpZ2h0KS52YWx1ZXx8YS5oZWlnaHQoKSktKGIuY2hhcnRQYWRkaW5nLnRvcCtiLmNoYXJ0UGFkZGluZy5ib3R0b20pLWIuYXhpc1gub2Zmc2V0LDApfSxjLmdldEhpZ2hMb3c9ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0aW9uIGUoYSl7aWYodm9pZCAwIT09YSlpZihhIGluc3RhbmNlb2YgQXJyYXkpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspZShhW2JdKTtlbHNle3ZhciBjPWQ/K2FbZF06K2E7ZyYmYz5mLmhpZ2gmJihmLmhpZ2g9YyksaCYmYzxmLmxvdyYmKGYubG93PWMpfX1iPWMuZXh0ZW5kKHt9LGIsZD9iWyJheGlzIitkLnRvVXBwZXJDYXNlKCldOnt9KTt2YXIgZj17aGlnaDp2b2lkIDA9PT1iLmhpZ2g/LU51bWJlci5NQVhfVkFMVUU6K2IuaGlnaCxsb3c6dm9pZCAwPT09Yi5sb3c/TnVtYmVyLk1BWF9WQUxVRTorYi5sb3d9LGc9dm9pZCAwPT09Yi5oaWdoLGg9dm9pZCAwPT09Yi5sb3c7cmV0dXJuKGd8fGgpJiZlKGEpLChiLnJlZmVyZW5jZVZhbHVlfHwwPT09Yi5yZWZlcmVuY2VWYWx1ZSkmJihmLmhpZ2g9TWF0aC5tYXgoYi5yZWZlcmVuY2VWYWx1ZSxmLmhpZ2gpLGYubG93PU1hdGgubWluKGIucmVmZXJlbmNlVmFsdWUsZi5sb3cpKSxmLmhpZ2g8PWYubG93JiYoMD09PWYubG93P2YuaGlnaD0xOmYubG93PDA/Zi5oaWdoPTA6Zi5oaWdoPjA/Zi5sb3c9MDooZi5oaWdoPTEsZi5sb3c9MCkpLGZ9LGMuaXNOdW09ZnVuY3Rpb24oYSl7cmV0dXJuIWlzTmFOKGEpJiZpc0Zpbml0ZShhKX0sYy5pc0ZhbHNleUJ1dFplcm89ZnVuY3Rpb24oYSl7cmV0dXJuIWEmJjAhPT1hfSxjLmdldE51bWJlck9yVW5kZWZpbmVkPWZ1bmN0aW9uKGEpe3JldHVybiBpc05hTigrYSk/dm9pZCAwOithfSxjLmdldE11bHRpVmFsdWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy5pc051bShhKT8rYTphP2FbYnx8InkiXXx8MDowfSxjLnJobz1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYyl7cmV0dXJuIGElYz09PTA/YzpiKGMsYSVjKX1mdW5jdGlvbiBjKGEpe3JldHVybiBhKmErMX1pZigxPT09YSlyZXR1cm4gYTt2YXIgZCxlPTIsZj0yO2lmKGElMj09PTApcmV0dXJuIDI7ZG8gZT1jKGUpJWEsZj1jKGMoZikpJWEsZD1iKE1hdGguYWJzKGUtZiksYSk7d2hpbGUoMT09PWQpO3JldHVybiBkfSxjLmdldEJvdW5kcz1mdW5jdGlvbihhLGIsZCxlKXt2YXIgZixnLGgsaT0wLGo9e2hpZ2g6Yi5oaWdoLGxvdzpiLmxvd307ai52YWx1ZVJhbmdlPWouaGlnaC1qLmxvdyxqLm9vbT1jLm9yZGVyT2ZNYWduaXR1ZGUoai52YWx1ZVJhbmdlKSxqLnN0ZXA9TWF0aC5wb3coMTAsai5vb20pLGoubWluPU1hdGguZmxvb3Ioai5sb3cvai5zdGVwKSpqLnN0ZXAsai5tYXg9TWF0aC5jZWlsKGouaGlnaC9qLnN0ZXApKmouc3RlcCxqLnJhbmdlPWoubWF4LWoubWluLGoubnVtYmVyT2ZTdGVwcz1NYXRoLnJvdW5kKGoucmFuZ2Uvai5zdGVwKTt2YXIgaz1jLnByb2plY3RMZW5ndGgoYSxqLnN0ZXAsaiksbD1rPGQsbT1lP2MucmhvKGoucmFuZ2UpOjA7aWYoZSYmYy5wcm9qZWN0TGVuZ3RoKGEsMSxqKT49ZClqLnN0ZXA9MTtlbHNlIGlmKGUmJm08ai5zdGVwJiZjLnByb2plY3RMZW5ndGgoYSxtLGopPj1kKWouc3RlcD1tO2Vsc2UgZm9yKDs7KXtpZihsJiZjLnByb2plY3RMZW5ndGgoYSxqLnN0ZXAsaik8PWQpai5zdGVwKj0yO2Vsc2V7aWYobHx8IShjLnByb2plY3RMZW5ndGgoYSxqLnN0ZXAvMixqKT49ZCkpYnJlYWs7aWYoai5zdGVwLz0yLGUmJmouc3RlcCUxIT09MCl7ai5zdGVwKj0yO2JyZWFrfX1pZihpKys+MWUzKXRocm93IG5ldyBFcnJvcigiRXhjZWVkZWQgbWF4aW11bSBudW1iZXIgb2YgaXRlcmF0aW9ucyB3aGlsZSBvcHRpbWl6aW5nIHNjYWxlIHN0ZXAhIil9dmFyIG49Mi4yMjFlLTE2O2ZvcihqLnN0ZXA9TWF0aC5tYXgoai5zdGVwLG4pLGc9ai5taW4saD1qLm1heDtnK2ouc3RlcDw9ai5sb3c7KWcrPWouc3RlcDtmb3IoO2gtai5zdGVwPj1qLmhpZ2g7KWgtPWouc3RlcDtqLm1pbj1nLGoubWF4PWgsai5yYW5nZT1qLm1heC1qLm1pbjt2YXIgbz1bXTtmb3IoZj1qLm1pbjtmPD1qLm1heDtmKz1qLnN0ZXApe3ZhciBwPWMucm91bmRXaXRoUHJlY2lzaW9uKGYpO3AhPT1vW28ubGVuZ3RoLTFdJiZvLnB1c2goZil9cmV0dXJuIGoudmFsdWVzPW8san0sYy5wb2xhclRvQ2FydGVzaWFuPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPShkLTkwKSpNYXRoLlBJLzE4MDtyZXR1cm57eDphK2MqTWF0aC5jb3MoZSkseTpiK2MqTWF0aC5zaW4oZSl9fSxjLmNyZWF0ZUNoYXJ0UmVjdD1mdW5jdGlvbihhLGIsZCl7dmFyIGU9ISghYi5heGlzWCYmIWIuYXhpc1kpLGY9ZT9iLmF4aXNZLm9mZnNldDowLGc9ZT9iLmF4aXNYLm9mZnNldDowLGg9YS53aWR0aCgpfHxjLnF1YW50aXR5KGIud2lkdGgpLnZhbHVlfHwwLGk9YS5oZWlnaHQoKXx8Yy5xdWFudGl0eShiLmhlaWdodCkudmFsdWV8fDAsaj1jLm5vcm1hbGl6ZVBhZGRpbmcoYi5jaGFydFBhZGRpbmcsZCk7aD1NYXRoLm1heChoLGYrai5sZWZ0K2oucmlnaHQpLGk9TWF0aC5tYXgoaSxnK2oudG9wK2ouYm90dG9tKTt2YXIgaz17cGFkZGluZzpqLHdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueDItdGhpcy54MX0saGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueTEtdGhpcy55Mn19O3JldHVybiBlPygic3RhcnQiPT09Yi5heGlzWC5wb3NpdGlvbj8oay55Mj1qLnRvcCtnLGsueTE9TWF0aC5tYXgoaS1qLmJvdHRvbSxrLnkyKzEpKTooay55Mj1qLnRvcCxrLnkxPU1hdGgubWF4KGktai5ib3R0b20tZyxrLnkyKzEpKSwic3RhcnQiPT09Yi5heGlzWS5wb3NpdGlvbj8oay54MT1qLmxlZnQrZixrLngyPU1hdGgubWF4KGgtai5yaWdodCxrLngxKzEpKTooay54MT1qLmxlZnQsay54Mj1NYXRoLm1heChoLWoucmlnaHQtZixrLngxKzEpKSk6KGsueDE9ai5sZWZ0LGsueDI9TWF0aC5tYXgoaC1qLnJpZ2h0LGsueDErMSksay55Mj1qLnRvcCxrLnkxPU1hdGgubWF4KGktai5ib3R0b20say55MisxKSksa30sYy5jcmVhdGVHcmlkPWZ1bmN0aW9uKGEsYixkLGUsZixnLGgsaSl7dmFyIGo9e307altkLnVuaXRzLnBvcysiMSJdPWEsaltkLnVuaXRzLnBvcysiMiJdPWEsaltkLmNvdW50ZXJVbml0cy5wb3MrIjEiXT1lLGpbZC5jb3VudGVyVW5pdHMucG9zKyIyIl09ZStmO3ZhciBrPWcuZWxlbSgibGluZSIsaixoLmpvaW4oIiAiKSk7aS5lbWl0KCJkcmF3IixjLmV4dGVuZCh7dHlwZToiZ3JpZCIsYXhpczpkLGluZGV4OmIsZ3JvdXA6ZyxlbGVtZW50Omt9LGopKX0sYy5jcmVhdGVMYWJlbD1mdW5jdGlvbihhLGIsZCxlLGYsZyxoLGksaixrLGwpe3ZhciBtLG49e307aWYobltmLnVuaXRzLnBvc109YStoW2YudW5pdHMucG9zXSxuW2YuY291bnRlclVuaXRzLnBvc109aFtmLmNvdW50ZXJVbml0cy5wb3NdLG5bZi51bml0cy5sZW5dPWIsbltmLmNvdW50ZXJVbml0cy5sZW5dPU1hdGgubWF4KDAsZy0xMCksayl7dmFyIG89JzxzcGFuIGNsYXNzPSInK2ouam9pbigiICIpKyciIHN0eWxlPSInK2YudW5pdHMubGVuKyI6ICIrTWF0aC5yb3VuZChuW2YudW5pdHMubGVuXSkrInB4OyAiK2YuY291bnRlclVuaXRzLmxlbisiOiAiK01hdGgucm91bmQobltmLmNvdW50ZXJVbml0cy5sZW5dKSsncHgiPicrZVtkXSsiPC9zcGFuPiI7bT1pLmZvcmVpZ25PYmplY3QobyxjLmV4dGVuZCh7c3R5bGU6Im92ZXJmbG93OiB2aXNpYmxlOyJ9LG4pKX1lbHNlIG09aS5lbGVtKCJ0ZXh0IixuLGouam9pbigiICIpKS50ZXh0KGVbZF0pO2wuZW1pdCgiZHJhdyIsYy5leHRlbmQoe3R5cGU6ImxhYmVsIixheGlzOmYsaW5kZXg6ZCxncm91cDppLGVsZW1lbnQ6bSx0ZXh0OmVbZF19LG4pKX0sYy5nZXRTZXJpZXNPcHRpb249ZnVuY3Rpb24oYSxiLGMpe2lmKGEubmFtZSYmYi5zZXJpZXMmJmIuc2VyaWVzW2EubmFtZV0pe3ZhciBkPWIuc2VyaWVzW2EubmFtZV07cmV0dXJuIGQuaGFzT3duUHJvcGVydHkoYyk/ZFtjXTpiW2NdfXJldHVybiBiW2NdfSxjLm9wdGlvbnNQcm92aWRlcj1mdW5jdGlvbihiLGQsZSl7ZnVuY3Rpb24gZihiKXt2YXIgZj1oO2lmKGg9Yy5leHRlbmQoe30saiksZClmb3IoaT0wO2k8ZC5sZW5ndGg7aSsrKXt2YXIgZz1hLm1hdGNoTWVkaWEoZFtpXVswXSk7Zy5tYXRjaGVzJiYoaD1jLmV4dGVuZChoLGRbaV1bMV0pKX1lJiZiJiZlLmVtaXQoIm9wdGlvbnNDaGFuZ2VkIix7cHJldmlvdXNPcHRpb25zOmYsY3VycmVudE9wdGlvbnM6aH0pfWZ1bmN0aW9uIGcoKXtrLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZW1vdmVMaXN0ZW5lcihmKX0pfXZhciBoLGksaj1jLmV4dGVuZCh7fSxiKSxrPVtdO2lmKCFhLm1hdGNoTWVkaWEpdGhyb3cid2luZG93Lm1hdGNoTWVkaWEgbm90IGZvdW5kISBNYWtlIHN1cmUgeW91J3JlIHVzaW5nIGEgcG9seWZpbGwuIjtpZihkKWZvcihpPTA7aTxkLmxlbmd0aDtpKyspe3ZhciBsPWEubWF0Y2hNZWRpYShkW2ldWzBdKTtsLmFkZExpc3RlbmVyKGYpLGsucHVzaChsKX1yZXR1cm4gZigpLHtyZW1vdmVNZWRpYVF1ZXJ5TGlzdGVuZXJzOmcsZ2V0Q3VycmVudE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gYy5leHRlbmQoe30saCl9fX0sYy5zcGxpdEludG9TZWdtZW50cz1mdW5jdGlvbihhLGIsZCl7dmFyIGU9e2luY3JlYXNpbmdYOiExLGZpbGxIb2xlczohMX07ZD1jLmV4dGVuZCh7fSxlLGQpO2Zvcih2YXIgZj1bXSxnPSEwLGg9MDtoPGEubGVuZ3RoO2grPTIpdm9pZCAwPT09YltoLzJdLnZhbHVlP2QuZmlsbEhvbGVzfHwoZz0hMCk6KGQuaW5jcmVhc2luZ1gmJmg+PTImJmFbaF08PWFbaC0yXSYmKGc9ITApLGcmJihmLnB1c2goe3BhdGhDb29yZGluYXRlczpbXSx2YWx1ZURhdGE6W119KSxnPSExKSxmW2YubGVuZ3RoLTFdLnBhdGhDb29yZGluYXRlcy5wdXNoKGFbaF0sYVtoKzFdKSxmW2YubGVuZ3RoLTFdLnZhbHVlRGF0YS5wdXNoKGJbaC8yXSkpO3JldHVybiBmfX0od2luZG93LGRvY3VtZW50LGEpLGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yy5JbnRlcnBvbGF0aW9uPXt9LGMuSW50ZXJwb2xhdGlvbi5ub25lPWZ1bmN0aW9uKGEpe3ZhciBiPXtmaWxsSG9sZXM6ITF9O3JldHVybiBhPWMuZXh0ZW5kKHt9LGIsYSksZnVuY3Rpb24oYixkKXtmb3IodmFyIGU9bmV3IGMuU3ZnLlBhdGgsZj0hMCxnPTA7ZzxiLmxlbmd0aDtnKz0yKXt2YXIgaD1iW2ddLGk9YltnKzFdLGo9ZFtnLzJdO3ZvaWQgMCE9PWoudmFsdWU/KGY/ZS5tb3ZlKGgsaSwhMSxqKTplLmxpbmUoaCxpLCExLGopLGY9ITEpOmEuZmlsbEhvbGVzfHwoZj0hMCl9cmV0dXJuIGV9fSxjLkludGVycG9sYXRpb24uc2ltcGxlPWZ1bmN0aW9uKGEpe3ZhciBiPXtkaXZpc29yOjIsZmlsbEhvbGVzOiExfTthPWMuZXh0ZW5kKHt9LGIsYSk7dmFyIGQ9MS9NYXRoLm1heCgxLGEuZGl2aXNvcik7cmV0dXJuIGZ1bmN0aW9uKGIsZSl7Zm9yKHZhciBmLGcsaCxpPW5ldyBjLlN2Zy5QYXRoLGo9MDtqPGIubGVuZ3RoO2orPTIpe3ZhciBrPWJbal0sbD1iW2orMV0sbT0oay1mKSpkLG49ZVtqLzJdO3ZvaWQgMCE9PW4udmFsdWU/KHZvaWQgMD09PWg/aS5tb3ZlKGssbCwhMSxuKTppLmN1cnZlKGYrbSxnLGstbSxsLGssbCwhMSxuKSxmPWssZz1sLGg9bik6YS5maWxsSG9sZXN8fChmPWs9aD12b2lkIDApfXJldHVybiBpfX0sYy5JbnRlcnBvbGF0aW9uLmNhcmRpbmFsPWZ1bmN0aW9uKGEpe3ZhciBiPXt0ZW5zaW9uOjEsZmlsbEhvbGVzOiExfTthPWMuZXh0ZW5kKHt9LGIsYSk7dmFyIGQ9TWF0aC5taW4oMSxNYXRoLm1heCgwLGEudGVuc2lvbikpLGU9MS1kO3JldHVybiBmdW5jdGlvbiBmKGIsZyl7dmFyIGg9Yy5zcGxpdEludG9TZWdtZW50cyhiLGcse2ZpbGxIb2xlczphLmZpbGxIb2xlc30pO2lmKGgubGVuZ3RoKXtpZihoLmxlbmd0aD4xKXt2YXIgaT1bXTtyZXR1cm4gaC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2kucHVzaChmKGEucGF0aENvb3JkaW5hdGVzLGEudmFsdWVEYXRhKSl9KSxjLlN2Zy5QYXRoLmpvaW4oaSl9aWYoYj1oWzBdLnBhdGhDb29yZGluYXRlcyxnPWhbMF0udmFsdWVEYXRhLGIubGVuZ3RoPD00KXJldHVybiBjLkludGVycG9sYXRpb24ubm9uZSgpKGIsZyk7Zm9yKHZhciBqLGs9KG5ldyBjLlN2Zy5QYXRoKS5tb3ZlKGJbMF0sYlsxXSwhMSxnWzBdKSxsPTAsbT1iLmxlbmd0aDttLTIqIWo+bDtsKz0yKXt2YXIgbj1be3g6K2JbbC0yXSx5OitiW2wtMV19LHt4OitiW2xdLHk6K2JbbCsxXX0se3g6K2JbbCsyXSx5OitiW2wrM119LHt4OitiW2wrNF0seTorYltsKzVdfV07aj9sP20tND09PWw/blszXT17eDorYlswXSx5OitiWzFdfTptLTI9PT1sJiYoblsyXT17eDorYlswXSx5OitiWzFdfSxuWzNdPXt4OitiWzJdLHk6K2JbM119KTpuWzBdPXt4OitiW20tMl0seTorYlttLTFdfTptLTQ9PT1sP25bM109blsyXTpsfHwoblswXT17eDorYltsXSx5OitiW2wrMV19KSxrLmN1cnZlKGQqKC1uWzBdLngrNipuWzFdLngrblsyXS54KS82K2UqblsyXS54LGQqKC1uWzBdLnkrNipuWzFdLnkrblsyXS55KS82K2UqblsyXS55LGQqKG5bMV0ueCs2Km5bMl0ueC1uWzNdLngpLzYrZSpuWzJdLngsZCooblsxXS55KzYqblsyXS55LW5bM10ueSkvNitlKm5bMl0ueSxuWzJdLngsblsyXS55LCExLGdbKGwrMikvMl0pfXJldHVybiBrfXJldHVybiBjLkludGVycG9sYXRpb24ubm9uZSgpKFtdKX19LGMuSW50ZXJwb2xhdGlvbi5tb25vdG9uZUN1YmljPWZ1bmN0aW9uKGEpe3ZhciBiPXtmaWxsSG9sZXM6ITF9O3JldHVybiBhPWMuZXh0ZW5kKHt9LGIsYSksZnVuY3Rpb24gZChiLGUpe3ZhciBmPWMuc3BsaXRJbnRvU2VnbWVudHMoYixlLHtmaWxsSG9sZXM6YS5maWxsSG9sZXMsaW5jcmVhc2luZ1g6ITB9KTtpZihmLmxlbmd0aCl7aWYoZi5sZW5ndGg+MSl7dmFyIGc9W107cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihhKXtnLnB1c2goZChhLnBhdGhDb29yZGluYXRlcyxhLnZhbHVlRGF0YSkpfSksYy5TdmcuUGF0aC5qb2luKGcpfWlmKGI9ZlswXS5wYXRoQ29vcmRpbmF0ZXMsZT1mWzBdLnZhbHVlRGF0YSxiLmxlbmd0aDw9NClyZXR1cm4gYy5JbnRlcnBvbGF0aW9uLm5vbmUoKShiLGUpO3ZhciBoLGksaj1bXSxrPVtdLGw9Yi5sZW5ndGgvMixtPVtdLG49W10sbz1bXSxwPVtdO2ZvcihoPTA7aDxsO2grKylqW2hdPWJbMipoXSxrW2hdPWJbMipoKzFdO2ZvcihoPTA7aDxsLTE7aCsrKW9baF09a1toKzFdLWtbaF0scFtoXT1qW2grMV0taltoXSxuW2hdPW9baF0vcFtoXTtmb3IobVswXT1uWzBdLG1bbC0xXT1uW2wtMl0saD0xO2g8bC0xO2grKykwPT09bltoXXx8MD09PW5baC0xXXx8bltoLTFdPjAhPW5baF0+MD9tW2hdPTA6KG1baF09MyoocFtoLTFdK3BbaF0pLygoMipwW2hdK3BbaC0xXSkvbltoLTFdKyhwW2hdKzIqcFtoLTFdKS9uW2hdKSxpc0Zpbml0ZShtW2hdKXx8KG1baF09MCkpO2ZvcihpPShuZXcgYy5TdmcuUGF0aCkubW92ZShqWzBdLGtbMF0sITEsZVswXSksaD0wO2g8bC0xO2grKylpLmN1cnZlKGpbaF0rcFtoXS8zLGtbaF0rbVtoXSpwW2hdLzMsaltoKzFdLXBbaF0vMyxrW2grMV0tbVtoKzFdKnBbaF0vMyxqW2grMV0sa1toKzFdLCExLGVbaCsxXSk7cmV0dXJuIGl9cmV0dXJuIGMuSW50ZXJwb2xhdGlvbi5ub25lKCkoW10pfX0sYy5JbnRlcnBvbGF0aW9uLnN0ZXA9ZnVuY3Rpb24oYSl7dmFyIGI9e3Bvc3Rwb25lOiEwLGZpbGxIb2xlczohMX07cmV0dXJuIGE9Yy5leHRlbmQoe30sYixhKSxmdW5jdGlvbihiLGQpe2Zvcih2YXIgZSxmLGcsaD1uZXcgYy5TdmcuUGF0aCxpPTA7aTxiLmxlbmd0aDtpKz0yKXt2YXIgaj1iW2ldLGs9YltpKzFdLGw9ZFtpLzJdO3ZvaWQgMCE9PWwudmFsdWU/KHZvaWQgMD09PWc/aC5tb3ZlKGosaywhMSxsKTooYS5wb3N0cG9uZT9oLmxpbmUoaixmLCExLGcpOmgubGluZShlLGssITEsbCksaC5saW5lKGosaywhMSxsKSksZT1qLGY9ayxnPWwpOmEuZmlsbEhvbGVzfHwoZT1mPWc9dm9pZCAwKX1yZXR1cm4gaH19fSh3aW5kb3csZG9jdW1lbnQsYSksZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtjLkV2ZW50RW1pdHRlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiKXtkW2FdPWRbYV18fFtdLGRbYV0ucHVzaChiKX1mdW5jdGlvbiBiKGEsYil7ZFthXSYmKGI/KGRbYV0uc3BsaWNlKGRbYV0uaW5kZXhPZihiKSwxKSwwPT09ZFthXS5sZW5ndGgmJmRlbGV0ZSBkW2FdKTpkZWxldGUgZFthXSl9ZnVuY3Rpb24gYyhhLGIpe2RbYV0mJmRbYV0uZm9yRWFjaChmdW5jdGlvbihhKXthKGIpfSksZFsiKiJdJiZkWyIqIl0uZm9yRWFjaChmdW5jdGlvbihjKXtjKGEsYil9KX12YXIgZD1bXTtyZXR1cm57YWRkRXZlbnRIYW5kbGVyOmEscmVtb3ZlRXZlbnRIYW5kbGVyOmIsZW1pdDpjfX19KHdpbmRvdyxkb2N1bWVudCxhKSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7dmFyIGI9W107aWYoYS5sZW5ndGgpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKGFbY10pO3JldHVybiBifWZ1bmN0aW9uIGUoYSxiKXt2YXIgZD1ifHx0aGlzLnByb3RvdHlwZXx8Yy5DbGFzcyxlPU9iamVjdC5jcmVhdGUoZCk7Yy5DbGFzcy5jbG9uZURlZmluaXRpb25zKGUsYSk7dmFyIGY9ZnVuY3Rpb24oKXt2YXIgYSxiPWUuY29uc3RydWN0b3J8fGZ1bmN0aW9uKCl7fTtyZXR1cm4gYT10aGlzPT09Yz9PYmplY3QuY3JlYXRlKGUpOnRoaXMsYi5hcHBseShhLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSksYX07cmV0dXJuIGYucHJvdG90eXBlPWUsZlsic3VwZXIiXT1kLGYuZXh0ZW5kPXRoaXMuZXh0ZW5kLGZ9ZnVuY3Rpb24gZigpe3ZhciBhPWQoYXJndW1lbnRzKSxiPWFbMF07cmV0dXJuIGEuc3BsaWNlKDEsYS5sZW5ndGgtMSkuZm9yRWFjaChmdW5jdGlvbihhKXtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2RlbGV0ZSBiW2NdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLGMsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGMpKX0pfSksYn1jLkNsYXNzPXtleHRlbmQ6ZSxjbG9uZURlZmluaXRpb25zOmZ9fSh3aW5kb3csZG9jdW1lbnQsYSksZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsYixkKXtyZXR1cm4gYSYmKHRoaXMuZGF0YT1hLHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoImRhdGEiLHt0eXBlOiJ1cGRhdGUiLGRhdGE6dGhpcy5kYXRhfSkpLGImJih0aGlzLm9wdGlvbnM9Yy5leHRlbmQoe30sZD90aGlzLm9wdGlvbnM6dGhpcy5kZWZhdWx0T3B0aW9ucyxiKSx0aGlzLmluaXRpYWxpemVUaW1lb3V0SWR8fCh0aGlzLm9wdGlvbnNQcm92aWRlci5yZW1vdmVNZWRpYVF1ZXJ5TGlzdGVuZXJzKCksdGhpcy5vcHRpb25zUHJvdmlkZXI9Yy5vcHRpb25zUHJvdmlkZXIodGhpcy5vcHRpb25zLHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMsdGhpcy5ldmVudEVtaXR0ZXIpKSksdGhpcy5pbml0aWFsaXplVGltZW91dElkfHx0aGlzLmNyZWF0ZUNoYXJ0KHRoaXMub3B0aW9uc1Byb3ZpZGVyLmdldEN1cnJlbnRPcHRpb25zKCkpLHRoaXN9ZnVuY3Rpb24gZSgpe3JldHVybiB0aGlzLmluaXRpYWxpemVUaW1lb3V0SWQ/YS5jbGVhclRpbWVvdXQodGhpcy5pbml0aWFsaXplVGltZW91dElkKTooYS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVzaXplTGlzdGVuZXIpLHRoaXMub3B0aW9uc1Byb3ZpZGVyLnJlbW92ZU1lZGlhUXVlcnlMaXN0ZW5lcnMoKSksdGhpc31mdW5jdGlvbiBmKGEsYil7cmV0dXJuIHRoaXMuZXZlbnRFbWl0dGVyLmFkZEV2ZW50SGFuZGxlcihhLGIpLHRoaXN9ZnVuY3Rpb24gZyhhLGIpe3JldHVybiB0aGlzLmV2ZW50RW1pdHRlci5yZW1vdmVFdmVudEhhbmRsZXIoYSxiKSx0aGlzfWZ1bmN0aW9uIGgoKXthLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5yZXNpemVMaXN0ZW5lciksdGhpcy5vcHRpb25zUHJvdmlkZXI9Yy5vcHRpb25zUHJvdmlkZXIodGhpcy5vcHRpb25zLHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMsdGhpcy5ldmVudEVtaXR0ZXIpLHRoaXMuZXZlbnRFbWl0dGVyLmFkZEV2ZW50SGFuZGxlcigib3B0aW9uc0NoYW5nZWQiLGZ1bmN0aW9uKCl7dGhpcy51cGRhdGUoKX0uYmluZCh0aGlzKSksdGhpcy5vcHRpb25zLnBsdWdpbnMmJnRoaXMub3B0aW9ucy5wbHVnaW5zLmZvckVhY2goZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIEFycmF5P2FbMF0odGhpcyxhWzFdKTphKHRoaXMpfS5iaW5kKHRoaXMpKSx0aGlzLmV2ZW50RW1pdHRlci5lbWl0KCJkYXRhIix7dHlwZToiaW5pdGlhbCIsZGF0YTp0aGlzLmRhdGF9KSx0aGlzLmNyZWF0ZUNoYXJ0KHRoaXMub3B0aW9uc1Byb3ZpZGVyLmdldEN1cnJlbnRPcHRpb25zKCkpLHRoaXMuaW5pdGlhbGl6ZVRpbWVvdXRJZD12b2lkIDB9ZnVuY3Rpb24gaShhLGIsZCxlLGYpe3RoaXMuY29udGFpbmVyPWMucXVlcnlTZWxlY3RvcihhKSx0aGlzLmRhdGE9Yix0aGlzLmRlZmF1bHRPcHRpb25zPWQsdGhpcy5vcHRpb25zPWUsdGhpcy5yZXNwb25zaXZlT3B0aW9ucz1mLHRoaXMuZXZlbnRFbWl0dGVyPWMuRXZlbnRFbWl0dGVyKCksdGhpcy5zdXBwb3J0c0ZvcmVpZ25PYmplY3Q9Yy5TdmcuaXNTdXBwb3J0ZWQoIkV4dGVuc2liaWxpdHkiKSx0aGlzLnN1cHBvcnRzQW5pbWF0aW9ucz1jLlN2Zy5pc1N1cHBvcnRlZCgiQW5pbWF0aW9uRXZlbnRzQXR0cmlidXRlIiksdGhpcy5yZXNpemVMaXN0ZW5lcj1mdW5jdGlvbigpe3RoaXMudXBkYXRlKCl9LmJpbmQodGhpcyksdGhpcy5jb250YWluZXImJih0aGlzLmNvbnRhaW5lci5fX2NoYXJ0aXN0X18mJnRoaXMuY29udGFpbmVyLl9fY2hhcnRpc3RfXy5kZXRhY2goKSx0aGlzLmNvbnRhaW5lci5fX2NoYXJ0aXN0X189dGhpcyksdGhpcy5pbml0aWFsaXplVGltZW91dElkPXNldFRpbWVvdXQoaC5iaW5kKHRoaXMpLDApfWMuQmFzZT1jLkNsYXNzLmV4dGVuZCh7Y29uc3RydWN0b3I6aSxvcHRpb25zUHJvdmlkZXI6dm9pZCAwLGNvbnRhaW5lcjp2b2lkIDAsc3ZnOnZvaWQgMCxldmVudEVtaXR0ZXI6dm9pZCAwLGNyZWF0ZUNoYXJ0OmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJCYXNlIGNoYXJ0IHR5cGUgY2FuJ3QgYmUgaW5zdGFudGlhdGVkISIpfSx1cGRhdGU6ZCxkZXRhY2g6ZSxvbjpmLG9mZjpnLHZlcnNpb246Yy52ZXJzaW9uLHN1cHBvcnRzRm9yZWlnbk9iamVjdDohMX0pfSh3aW5kb3csZG9jdW1lbnQsYSksZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsZCxlLGYsZyl7YSBpbnN0YW5jZW9mIEVsZW1lbnQ/dGhpcy5fbm9kZT1hOih0aGlzLl9ub2RlPWIuY3JlYXRlRWxlbWVudE5TKGMubmFtZXNwYWNlcy5zdmcsYSksInN2ZyI9PT1hJiZ0aGlzLmF0dHIoeyJ4bWxuczpjdCI6Yy5uYW1lc3BhY2VzLmN0fSkpLGQmJnRoaXMuYXR0cihkKSxlJiZ0aGlzLmFkZENsYXNzKGUpLGYmJihnJiZmLl9ub2RlLmZpcnN0Q2hpbGQ/Zi5fbm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fbm9kZSxmLl9ub2RlLmZpcnN0Q2hpbGQpOmYuX25vZGUuYXBwZW5kQ2hpbGQodGhpcy5fbm9kZSkpfWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/Yj90aGlzLl9ub2RlLmdldEF0dHJpYnV0ZU5TKGIsYSk6dGhpcy5fbm9kZS5nZXRBdHRyaWJ1dGUoYSk6KE9iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oYil7aWYodm9pZCAwIT09YVtiXSlpZihiLmluZGV4T2YoIjoiKSE9PS0xKXt2YXIgZD1iLnNwbGl0KCI6Iik7dGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGVOUyhjLm5hbWVzcGFjZXNbZFswXV0sYixhW2JdKX1lbHNlIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKGIsYVtiXSl9LmJpbmQodGhpcykpLHRoaXMpfWZ1bmN0aW9uIGYoYSxiLGQsZSl7cmV0dXJuIG5ldyBjLlN2ZyhhLGIsZCx0aGlzLGUpfWZ1bmN0aW9uIGcoKXtyZXR1cm4gdGhpcy5fbm9kZS5wYXJlbnROb2RlIGluc3RhbmNlb2YgU1ZHRWxlbWVudD9uZXcgYy5TdmcodGhpcy5fbm9kZS5wYXJlbnROb2RlKTpudWxsfWZ1bmN0aW9uIGgoKXtmb3IodmFyIGE9dGhpcy5fbm9kZTsic3ZnIiE9PWEubm9kZU5hbWU7KWE9YS5wYXJlbnROb2RlO3JldHVybiBuZXcgYy5TdmcoYSl9ZnVuY3Rpb24gaShhKXt2YXIgYj10aGlzLl9ub2RlLnF1ZXJ5U2VsZWN0b3IoYSk7cmV0dXJuIGI/bmV3IGMuU3ZnKGIpOm51bGx9ZnVuY3Rpb24gaihhKXt2YXIgYj10aGlzLl9ub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYSk7cmV0dXJuIGIubGVuZ3RoP25ldyBjLlN2Zy5MaXN0KGIpOm51bGx9ZnVuY3Rpb24gayhhLGQsZSxmKXtpZigic3RyaW5nIj09dHlwZW9mIGEpe3ZhciBnPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zy5pbm5lckhUTUw9YSxhPWcuZmlyc3RDaGlsZH1hLnNldEF0dHJpYnV0ZSgieG1sbnMiLGMubmFtZXNwYWNlcy54bWxucyk7dmFyIGg9dGhpcy5lbGVtKCJmb3JlaWduT2JqZWN0IixkLGUsZik7cmV0dXJuIGguX25vZGUuYXBwZW5kQ2hpbGQoYSksaH1mdW5jdGlvbiBsKGEpe3JldHVybiB0aGlzLl9ub2RlLmFwcGVuZENoaWxkKGIuY3JlYXRlVGV4dE5vZGUoYSkpLHRoaXN9ZnVuY3Rpb24gbSgpe2Zvcig7dGhpcy5fbm9kZS5maXJzdENoaWxkOyl0aGlzLl9ub2RlLnJlbW92ZUNoaWxkKHRoaXMuX25vZGUuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gbigpe3JldHVybiB0aGlzLl9ub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fbm9kZSksdGhpcy5wYXJlbnQoKX1mdW5jdGlvbiBvKGEpe3JldHVybiB0aGlzLl9ub2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGEuX25vZGUsdGhpcy5fbm9kZSksYX1mdW5jdGlvbiBwKGEsYil7cmV0dXJuIGImJnRoaXMuX25vZGUuZmlyc3RDaGlsZD90aGlzLl9ub2RlLmluc2VydEJlZm9yZShhLl9ub2RlLHRoaXMuX25vZGUuZmlyc3RDaGlsZCk6dGhpcy5fbm9kZS5hcHBlbmRDaGlsZChhLl9ub2RlKSx0aGlzfWZ1bmN0aW9uIHEoKXtyZXR1cm4gdGhpcy5fbm9kZS5nZXRBdHRyaWJ1dGUoImNsYXNzIik/dGhpcy5fbm9kZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikudHJpbSgpLnNwbGl0KC9ccysvKTpbXX1mdW5jdGlvbiByKGEpe3JldHVybiB0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuY2xhc3Nlcyh0aGlzLl9ub2RlKS5jb25jYXQoYS50cmltKCkuc3BsaXQoL1xzKy8pKS5maWx0ZXIoZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjLmluZGV4T2YoYSk9PT1ifSkuam9pbigiICIpKSx0aGlzfWZ1bmN0aW9uIHMoYSl7dmFyIGI9YS50cmltKCkuc3BsaXQoL1xzKy8pO3JldHVybiB0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuY2xhc3Nlcyh0aGlzLl9ub2RlKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGIuaW5kZXhPZihhKT09PS0xfSkuam9pbigiICIpKSx0aGlzfWZ1bmN0aW9uIHQoKXtyZXR1cm4gdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiIiksdGhpc31mdW5jdGlvbiB1KCl7cmV0dXJuIHRoaXMuX25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdGhpcy5fbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1mdW5jdGlvbiB3KGEsYixkKXtyZXR1cm4gdm9pZCAwPT09YiYmKGI9ITApLE9iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gZihhLGIpe3ZhciBmLGcsaCxpPXt9O2EuZWFzaW5nJiYoaD1hLmVhc2luZyBpbnN0YW5jZW9mIEFycmF5P2EuZWFzaW5nOmMuU3ZnLkVhc2luZ1thLmVhc2luZ10sZGVsZXRlIGEuZWFzaW5nKSxhLmJlZ2luPWMuZW5zdXJlVW5pdChhLmJlZ2luLCJtcyIpLGEuZHVyPWMuZW5zdXJlVW5pdChhLmR1ciwibXMiKSxoJiYoYS5jYWxjTW9kZT0ic3BsaW5lIixhLmtleVNwbGluZXM9aC5qb2luKCIgIiksYS5rZXlUaW1lcz0iMDsxIiksYiYmKGEuZmlsbD0iZnJlZXplIixpW2VdPWEuZnJvbSx0aGlzLmF0dHIoaSksZz1jLnF1YW50aXR5KGEuYmVnaW58fDApLnZhbHVlLGEuYmVnaW49ImluZGVmaW5pdGUiKSxmPXRoaXMuZWxlbSgiYW5pbWF0ZSIsYy5leHRlbmQoe2F0dHJpYnV0ZU5hbWU6ZX0sYSkpLGImJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0cnl7Zi5fbm9kZS5iZWdpbkVsZW1lbnQoKX1jYXRjaChiKXtpW2VdPWEudG8sdGhpcy5hdHRyKGkpLGYucmVtb3ZlKCl9fS5iaW5kKHRoaXMpLGcpLGQmJmYuX25vZGUuYWRkRXZlbnRMaXN0ZW5lcigiYmVnaW5FdmVudCIsZnVuY3Rpb24oKXtkLmVtaXQoImFuaW1hdGlvbkJlZ2luIix7ZWxlbWVudDp0aGlzLGFuaW1hdGU6Zi5fbm9kZSxwYXJhbXM6YX0pfS5iaW5kKHRoaXMpKSxmLl9ub2RlLmFkZEV2ZW50TGlzdGVuZXIoImVuZEV2ZW50IixmdW5jdGlvbigpe2QmJmQuZW1pdCgiYW5pbWF0aW9uRW5kIix7ZWxlbWVudDp0aGlzLGFuaW1hdGU6Zi5fbm9kZSxwYXJhbXM6YX0pLGImJihpW2VdPWEudG8sdGhpcy5hdHRyKGkpLGYucmVtb3ZlKCkpfS5iaW5kKHRoaXMpKX1hW2VdaW5zdGFuY2VvZiBBcnJheT9hW2VdLmZvckVhY2goZnVuY3Rpb24oYSl7Zi5iaW5kKHRoaXMpKGEsITEpfS5iaW5kKHRoaXMpKTpmLmJpbmQodGhpcykoYVtlXSxiKX0uYmluZCh0aGlzKSksdGhpc31mdW5jdGlvbiB4KGEpe3ZhciBiPXRoaXM7dGhpcy5zdmdFbGVtZW50cz1bXTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl0aGlzLnN2Z0VsZW1lbnRzLnB1c2gobmV3IGMuU3ZnKGFbZF0pKTtPYmplY3Qua2V5cyhjLlN2Zy5wcm90b3R5cGUpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm5bImNvbnN0cnVjdG9yIiwicGFyZW50IiwicXVlcnlTZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJyZXBsYWNlIiwiYXBwZW5kIiwiY2xhc3NlcyIsImhlaWdodCIsIndpZHRoIl0uaW5kZXhPZihhKT09PS0xfSkuZm9yRWFjaChmdW5jdGlvbihhKXtiW2FdPWZ1bmN0aW9uKCl7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBiLnN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oYil7Yy5TdmcucHJvdG90eXBlW2FdLmFwcGx5KGIsZCl9KSxifX0pfWMuU3ZnPWMuQ2xhc3MuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpkLGF0dHI6ZSxlbGVtOmYscGFyZW50Omcscm9vdDpoLHF1ZXJ5U2VsZWN0b3I6aSxxdWVyeVNlbGVjdG9yQWxsOmosZm9yZWlnbk9iamVjdDprLHRleHQ6bCxlbXB0eTptLHJlbW92ZTpuLHJlcGxhY2U6byxhcHBlbmQ6cCxjbGFzc2VzOnEsYWRkQ2xhc3M6cixyZW1vdmVDbGFzczpzLHJlbW92ZUFsbENsYXNzZXM6dCxoZWlnaHQ6dSx3aWR0aDp2LGFuaW1hdGU6d30pLGMuU3ZnLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKGEpe3JldHVybiBiLmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjIithLCIxLjEiKX07dmFyIHk9e2Vhc2VJblNpbmU6Wy40NywwLC43NDUsLjcxNV0sZWFzZU91dFNpbmU6Wy4zOSwuNTc1LC41NjUsMV0sZWFzZUluT3V0U2luZTpbLjQ0NSwuMDUsLjU1LC45NV0sZWFzZUluUXVhZDpbLjU1LC4wODUsLjY4LC41M10sZWFzZU91dFF1YWQ6Wy4yNSwuNDYsLjQ1LC45NF0sZWFzZUluT3V0UXVhZDpbLjQ1NSwuMDMsLjUxNSwuOTU1XSxlYXNlSW5DdWJpYzpbLjU1LC4wNTUsLjY3NSwuMTldLGVhc2VPdXRDdWJpYzpbLjIxNSwuNjEsLjM1NSwxXSxlYXNlSW5PdXRDdWJpYzpbLjY0NSwuMDQ1LC4zNTUsMV0sZWFzZUluUXVhcnQ6Wy44OTUsLjAzLC42ODUsLjIyXSxlYXNlT3V0UXVhcnQ6Wy4xNjUsLjg0LC40NCwxXSxlYXNlSW5PdXRRdWFydDpbLjc3LDAsLjE3NSwxXSxlYXNlSW5RdWludDpbLjc1NSwuMDUsLjg1NSwuMDZdLGVhc2VPdXRRdWludDpbLjIzLDEsLjMyLDFdLGVhc2VJbk91dFF1aW50OlsuODYsMCwuMDcsMV0sZWFzZUluRXhwbzpbLjk1LC4wNSwuNzk1LC4wMzVdLGVhc2VPdXRFeHBvOlsuMTksMSwuMjIsMV0sZWFzZUluT3V0RXhwbzpbMSwwLDAsMV0sZWFzZUluQ2lyYzpbLjYsLjA0LC45OCwuMzM1XSxlYXNlT3V0Q2lyYzpbLjA3NSwuODIsLjE2NSwxXSxlYXNlSW5PdXRDaXJjOlsuNzg1LC4xMzUsLjE1LC44Nl0sZWFzZUluQmFjazpbLjYsLS4yOCwuNzM1LC4wNDVdLGVhc2VPdXRCYWNrOlsuMTc1LC44ODUsLjMyLDEuMjc1XSxlYXNlSW5PdXRCYWNrOlsuNjgsLS41NSwuMjY1LDEuNTVdfTtjLlN2Zy5FYXNpbmc9eSxjLlN2Zy5MaXN0PWMuQ2xhc3MuZXh0ZW5kKHtjb25zdHJ1Y3Rvcjp4fSl9KHdpbmRvdyxkb2N1bWVudCxhKSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiLGQsZSxmLGcpe3ZhciBoPWMuZXh0ZW5kKHtjb21tYW5kOmY/YS50b0xvd2VyQ2FzZSgpOmEudG9VcHBlckNhc2UoKX0sYixnP3tkYXRhOmd9Ont9KTtkLnNwbGljZShlLDAsaCl9ZnVuY3Rpb24gZShhLGIpe2EuZm9yRWFjaChmdW5jdGlvbihjLGQpe3VbYy5jb21tYW5kLnRvTG93ZXJDYXNlKCldLmZvckVhY2goZnVuY3Rpb24oZSxmKXtiKGMsZSxkLGYsYSl9KX0pfWZ1bmN0aW9uIGYoYSxiKXt0aGlzLnBhdGhFbGVtZW50cz1bXSx0aGlzLnBvcz0wLHRoaXMuY2xvc2U9YSx0aGlzLm9wdGlvbnM9Yy5leHRlbmQoe30sdixiKX1mdW5jdGlvbiBnKGEpe3JldHVybiB2b2lkIDAhPT1hPyh0aGlzLnBvcz1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMucGF0aEVsZW1lbnRzLmxlbmd0aCxhKSksdGhpcyk6dGhpcy5wb3N9ZnVuY3Rpb24gaChhKXtyZXR1cm4gdGhpcy5wYXRoRWxlbWVudHMuc3BsaWNlKHRoaXMucG9zLGEpLHRoaXN9ZnVuY3Rpb24gaShhLGIsYyxlKXtyZXR1cm4gZCgiTSIse3g6K2EseTorYn0sdGhpcy5wYXRoRWxlbWVudHMsdGhpcy5wb3MrKyxjLGUpLHRoaXN9ZnVuY3Rpb24gaihhLGIsYyxlKXtyZXR1cm4gZCgiTCIse3g6K2EseTorYn0sdGhpcy5wYXRoRWxlbWVudHMsdGhpcy5wb3MrKyxjLGUpLHRoaXN9ZnVuY3Rpb24gayhhLGIsYyxlLGYsZyxoLGkpe3JldHVybiBkKCJDIix7eDE6K2EseTE6K2IseDI6K2MseTI6K2UseDorZix5OitnfSx0aGlzLnBhdGhFbGVtZW50cyx0aGlzLnBvcysrLGgsaSksdGhpc31mdW5jdGlvbiBsKGEsYixjLGUsZixnLGgsaSxqKXtyZXR1cm4gZCgiQSIse3J4OithLHJ5OitiLHhBcjorYyxsQWY6K2Usc2Y6K2YseDorZyx5OitofSx0aGlzLnBhdGhFbGVtZW50cyx0aGlzLnBvcysrLGksaiksdGhpc31mdW5jdGlvbiBtKGEpe3ZhciBiPWEucmVwbGFjZSgvKFtBLVphLXpdKShbMC05XSkvZywiJDEgJDIiKS5yZXBsYWNlKC8oWzAtOV0pKFtBLVphLXpdKS9nLCIkMSAkMiIpLnNwbGl0KC9bXHMsXSsvKS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5tYXRjaCgvW0EtWmEtel0vKSYmYS5wdXNoKFtdKSxhW2EubGVuZ3RoLTFdLnB1c2goYiksYX0sW10pOyJaIj09PWJbYi5sZW5ndGgtMV1bMF0udG9VcHBlckNhc2UoKSYmYi5wb3AoKTt2YXIgZD1iLm1hcChmdW5jdGlvbihhKXt2YXIgYj1hLnNoaWZ0KCksZD11W2IudG9Mb3dlckNhc2UoKV07cmV0dXJuIGMuZXh0ZW5kKHtjb21tYW5kOmJ9LGQucmVkdWNlKGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYltjXT0rYVtkXSxifSx7fSkpfSksZT1bdGhpcy5wb3MsMF07cmV0dXJuIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUsZCksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseSh0aGlzLnBhdGhFbGVtZW50cyxlKSx0aGlzLnBvcys9ZC5sZW5ndGgsdGhpc31mdW5jdGlvbiBuKCl7dmFyIGE9TWF0aC5wb3coMTAsdGhpcy5vcHRpb25zLmFjY3VyYWN5KTtyZXR1cm4gdGhpcy5wYXRoRWxlbWVudHMucmVkdWNlKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9dVtjLmNvbW1hbmQudG9Mb3dlckNhc2UoKV0ubWFwKGZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLm9wdGlvbnMuYWNjdXJhY3k/TWF0aC5yb3VuZChjW2JdKmEpL2E6Y1tiXX0uYmluZCh0aGlzKSk7cmV0dXJuIGIrYy5jb21tYW5kK2Quam9pbigiLCIpfS5iaW5kKHRoaXMpLCIiKSsodGhpcy5jbG9zZT8iWiI6IiIpfWZ1bmN0aW9uIG8oYSxiKXtyZXR1cm4gZSh0aGlzLnBhdGhFbGVtZW50cyxmdW5jdGlvbihjLGQpe2NbZF0qPSJ4Ij09PWRbMF0/YTpifSksdGhpc31mdW5jdGlvbiBwKGEsYil7cmV0dXJuIGUodGhpcy5wYXRoRWxlbWVudHMsZnVuY3Rpb24oYyxkKXtjW2RdKz0ieCI9PT1kWzBdP2E6Yn0pLHRoaXN9ZnVuY3Rpb24gcShhKXtyZXR1cm4gZSh0aGlzLnBhdGhFbGVtZW50cyxmdW5jdGlvbihiLGMsZCxlLGYpe3ZhciBnPWEoYixjLGQsZSxmKTsoZ3x8MD09PWcpJiYoYltjXT1nKX0pLHRoaXN9ZnVuY3Rpb24gcihhKXt2YXIgYj1uZXcgYy5TdmcuUGF0aChhfHx0aGlzLmNsb3NlKTtyZXR1cm4gYi5wb3M9dGhpcy5wb3MsYi5wYXRoRWxlbWVudHM9dGhpcy5wYXRoRWxlbWVudHMuc2xpY2UoKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGMuZXh0ZW5kKHt9LGEpfSksYi5vcHRpb25zPWMuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyksYn1mdW5jdGlvbiBzKGEpe3ZhciBiPVtuZXcgYy5TdmcuUGF0aF07cmV0dXJuIHRoaXMucGF0aEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5jb21tYW5kPT09YS50b1VwcGVyQ2FzZSgpJiYwIT09YltiLmxlbmd0aC0xXS5wYXRoRWxlbWVudHMubGVuZ3RoJiZiLnB1c2gobmV3IGMuU3ZnLlBhdGgpLGJbYi5sZW5ndGgtMV0ucGF0aEVsZW1lbnRzLnB1c2goZCl9KSxifWZ1bmN0aW9uIHQoYSxiLGQpe2Zvcih2YXIgZT1uZXcgYy5TdmcuUGF0aChiLGQpLGY9MDtmPGEubGVuZ3RoO2YrKylmb3IodmFyIGc9YVtmXSxoPTA7aDxnLnBhdGhFbGVtZW50cy5sZW5ndGg7aCsrKWUucGF0aEVsZW1lbnRzLnB1c2goZy5wYXRoRWxlbWVudHNbaF0pO3JldHVybiBlfXZhciB1PXttOlsieCIsInkiXSxsOlsieCIsInkiXSxjOlsieDEiLCJ5MSIsIngyIiwieTIiLCJ4IiwieSJdLGE6WyJyeCIsInJ5IiwieEFyIiwibEFmIiwic2YiLCJ4IiwieSJdfSx2PXthY2N1cmFjeTozfTtjLlN2Zy5QYXRoPWMuQ2xhc3MuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpmLHBvc2l0aW9uOmcscmVtb3ZlOmgsbW92ZTppLGxpbmU6aixjdXJ2ZTprLGFyYzpsLHNjYWxlOm8sdHJhbnNsYXRlOnAsdHJhbnNmb3JtOnEscGFyc2U6bSxzdHJpbmdpZnk6bixjbG9uZTpyLHNwbGl0QnlDb21tYW5kOnN9KSxjLlN2Zy5QYXRoLmVsZW1lbnREZXNjcmlwdGlvbnM9dSxjLlN2Zy5QYXRoLmpvaW49dH0od2luZG93LGRvY3VtZW50LGEpLGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIsYyxkKXt0aGlzLnVuaXRzPWEsdGhpcy5jb3VudGVyVW5pdHM9YT09PWYueD9mLnk6Zi54LHRoaXMuY2hhcnRSZWN0PWIsdGhpcy5heGlzTGVuZ3RoPWJbYS5yZWN0RW5kXS1iW2EucmVjdFN0YXJ0XSx0aGlzLmdyaWRPZmZzZXQ9YlthLnJlY3RPZmZzZXRdLHRoaXMudGlja3M9Yyx0aGlzLm9wdGlvbnM9ZH1mdW5jdGlvbiBlKGEsYixkLGUsZil7dmFyIGc9ZVsiYXhpcyIrdGhpcy51bml0cy5wb3MudG9VcHBlckNhc2UoKV0saD10aGlzLnRpY2tzLm1hcCh0aGlzLnByb2plY3RWYWx1ZS5iaW5kKHRoaXMpKSxpPXRoaXMudGlja3MubWFwKGcubGFiZWxJbnRlcnBvbGF0aW9uRm5jKTtoLmZvckVhY2goZnVuY3Rpb24oaixrKXt2YXIgbCxtPXt4OjAseTowfTtsPWhbaysxXT9oW2srMV0tajpNYXRoLm1heCh0aGlzLmF4aXNMZW5ndGgtaiwzMCksYy5pc0ZhbHNleUJ1dFplcm8oaVtrXSkmJiIiIT09aVtrXXx8KCJ4Ij09PXRoaXMudW5pdHMucG9zPyhqPXRoaXMuY2hhcnRSZWN0LngxK2osbS54PWUuYXhpc1gubGFiZWxPZmZzZXQueCwic3RhcnQiPT09ZS5heGlzWC5wb3NpdGlvbj9tLnk9dGhpcy5jaGFydFJlY3QucGFkZGluZy50b3ArZS5heGlzWC5sYWJlbE9mZnNldC55KyhkPzU6MjApOm0ueT10aGlzLmNoYXJ0UmVjdC55MStlLmF4aXNYLmxhYmVsT2Zmc2V0LnkrKGQ/NToyMCkpOihqPXRoaXMuY2hhcnRSZWN0LnkxLWosbS55PWUuYXhpc1kubGFiZWxPZmZzZXQueS0oZD9sOjApLCJzdGFydCI9PT1lLmF4aXNZLnBvc2l0aW9uP20ueD1kP3RoaXMuY2hhcnRSZWN0LnBhZGRpbmcubGVmdCtlLmF4aXNZLmxhYmVsT2Zmc2V0Lng6dGhpcy5jaGFydFJlY3QueDEtMTA6bS54PXRoaXMuY2hhcnRSZWN0LngyK2UuYXhpc1kubGFiZWxPZmZzZXQueCsxMCksZy5zaG93R3JpZCYmYy5jcmVhdGVHcmlkKGosayx0aGlzLHRoaXMuZ3JpZE9mZnNldCx0aGlzLmNoYXJ0UmVjdFt0aGlzLmNvdW50ZXJVbml0cy5sZW5dKCksYSxbZS5jbGFzc05hbWVzLmdyaWQsZS5jbGFzc05hbWVzW3RoaXMudW5pdHMuZGlyXV0sZiksZy5zaG93TGFiZWwmJmMuY3JlYXRlTGFiZWwoaixsLGssaSx0aGlzLGcub2Zmc2V0LG0sYixbZS5jbGFzc05hbWVzLmxhYmVsLGUuY2xhc3NOYW1lc1t0aGlzLnVuaXRzLmRpcl0sZS5jbGFzc05hbWVzW2cucG9zaXRpb25dXSxkLGYpKX0uYmluZCh0aGlzKSl9dmFyIGY9e3g6e3BvczoieCIsbGVuOiJ3aWR0aCIsZGlyOiJob3Jpem9udGFsIixyZWN0U3RhcnQ6IngxIixyZWN0RW5kOiJ4MiIscmVjdE9mZnNldDoieTIifSx5Ontwb3M6InkiLGxlbjoiaGVpZ2h0IixkaXI6InZlcnRpY2FsIixyZWN0U3RhcnQ6InkyIixyZWN0RW5kOiJ5MSIscmVjdE9mZnNldDoieDEifX07Yy5BeGlzPWMuQ2xhc3MuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpkLGNyZWF0ZUdyaWRBbmRMYWJlbHM6ZSxwcm9qZWN0VmFsdWU6ZnVuY3Rpb24oYSxiLGMpe3Rocm93IG5ldyBFcnJvcigiQmFzZSBheGlzIGNhbid0IGJlIGluc3RhbnRpYXRlZCEiKX19KSxjLkF4aXMudW5pdHM9Zn0od2luZG93LGRvY3VtZW50LGEpLGZ1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIsZCxlKXt2YXIgZj1lLmhpZ2hMb3d8fGMuZ2V0SGlnaExvdyhiLm5vcm1hbGl6ZWQsZSxhLnBvcyk7dGhpcy5ib3VuZHM9Yy5nZXRCb3VuZHMoZFthLnJlY3RFbmRdLWRbYS5yZWN0U3RhcnRdLGYsZS5zY2FsZU1pblNwYWNlfHwyMCxlLm9ubHlJbnRlZ2VyKSx0aGlzLnJhbmdlPXttaW46dGhpcy5ib3VuZHMubWluLG1heDp0aGlzLmJvdW5kcy5tYXh9LGMuQXV0b1NjYWxlQXhpc1sic3VwZXIiXS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSxkLHRoaXMuYm91bmRzLnZhbHVlcyxlKX1mdW5jdGlvbiBlKGEpe3JldHVybiB0aGlzLmF4aXNMZW5ndGgqKCtjLmdldE11bHRpVmFsdWUoYSx0aGlzLnVuaXRzLnBvcyktdGhpcy5ib3VuZHMubWluKS90aGlzLmJvdW5kcy5yYW5nZX1jLkF1dG9TY2FsZUF4aXM9Yy5BeGlzLmV4dGVuZCh7Y29uc3RydWN0b3I6ZCxwcm9qZWN0VmFsdWU6ZX0pfSh3aW5kb3csZG9jdW1lbnQsYSksZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsYixkLGUpe3ZhciBmPWUuaGlnaExvd3x8Yy5nZXRIaWdoTG93KGIubm9ybWFsaXplZCxlLGEucG9zKTt0aGlzLmRpdmlzb3I9ZS5kaXZpc29yfHwxLHRoaXMudGlja3M9ZS50aWNrc3x8Yy50aW1lcyh0aGlzLmRpdmlzb3IpLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBmLmxvdysoZi5oaWdoLWYubG93KS90aGlzLmRpdmlzb3IqYn0uYmluZCh0aGlzKSksdGhpcy50aWNrcy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEtYn0pLHRoaXMucmFuZ2U9e21pbjpmLmxvdyxtYXg6Zi5oaWdofSxjLkZpeGVkU2NhbGVBeGlzWyJzdXBlciJdLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLGQsdGhpcy50aWNrcyxlKSx0aGlzLnN0ZXBMZW5ndGg9dGhpcy5heGlzTGVuZ3RoL3RoaXMuZGl2aXNvcn1mdW5jdGlvbiBlKGEpe3JldHVybiB0aGlzLmF4aXNMZW5ndGgqKCtjLmdldE11bHRpVmFsdWUoYSx0aGlzLnVuaXRzLnBvcyktdGhpcy5yYW5nZS5taW4pLyh0aGlzLnJhbmdlLm1heC10aGlzLnJhbmdlLm1pbil9Yy5GaXhlZFNjYWxlQXhpcz1jLkF4aXMuZXh0ZW5kKHtjb25zdHJ1Y3RvcjpkLHByb2plY3RWYWx1ZTplfSl9KHdpbmRvdyxkb2N1bWVudCxhKSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiLGQsZSl7Yy5TdGVwQXhpc1sic3VwZXIiXS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSxkLGUudGlja3MsZSksdGhpcy5zdGVwTGVuZ3RoPXRoaXMuYXhpc0xlbmd0aC8oZS50aWNrcy5sZW5ndGgtKGUuc3RyZXRjaD8xOjApKX1mdW5jdGlvbiBlKGEsYil7cmV0dXJuIHRoaXMuc3RlcExlbmd0aCpifWMuU3RlcEF4aXM9Yy5BeGlzLmV4dGVuZCh7Y29uc3RydWN0b3I6ZCxwcm9qZWN0VmFsdWU6ZX0pfSh3aW5kb3csZG9jdW1lbnQsYSksZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3RoaXMuZGF0YT1jLm5vcm1hbGl6ZURhdGEodGhpcy5kYXRhKTt2YXIgYj17cmF3OnRoaXMuZGF0YSxub3JtYWxpemVkOmMuZ2V0RGF0YUFycmF5KHRoaXMuZGF0YSxhLnJldmVyc2VEYXRhLCEwKX07dGhpcy5zdmc9Yy5jcmVhdGVTdmcodGhpcy5jb250YWluZXIsYS53aWR0aCxhLmhlaWdodCxhLmNsYXNzTmFtZXMuY2hhcnQpO3ZhciBkLGUsZz10aGlzLnN2Zy5lbGVtKCJnIikuYWRkQ2xhc3MoYS5jbGFzc05hbWVzLmdyaWRHcm91cCksaD10aGlzLnN2Zy5lbGVtKCJnIiksaT10aGlzLnN2Zy5lbGVtKCJnIikuYWRkQ2xhc3MoYS5jbGFzc05hbWVzLmxhYmVsR3JvdXApLGo9Yy5jcmVhdGVDaGFydFJlY3QodGhpcy5zdmcsYSxmLnBhZGRpbmcpO2Q9dm9pZCAwPT09YS5heGlzWC50eXBlP25ldyBjLlN0ZXBBeGlzKGMuQXhpcy51bml0cy54LGIsaixjLmV4dGVuZCh7fSxhLmF4aXNYLHt0aWNrczpiLnJhdy5sYWJlbHMsc3RyZXRjaDphLmZ1bGxXaWR0aH0pKTphLmF4aXNYLnR5cGUuY2FsbChjLGMuQXhpcy51bml0cy54LGIsaixhLmF4aXNYKSxlPXZvaWQgMD09PWEuYXhpc1kudHlwZT9uZXcgYy5BdXRvU2NhbGVBeGlzKGMuQXhpcy51bml0cy55LGIsaixjLmV4dGVuZCh7fSxhLmF4aXNZLHtoaWdoOmMuaXNOdW0oYS5oaWdoKT9hLmhpZ2g6YS5heGlzWS5oaWdoLGxvdzpjLmlzTnVtKGEubG93KT9hLmxvdzphLmF4aXNZLmxvd30pKTphLmF4aXNZLnR5cGUuY2FsbChjLGMuQXhpcy51bml0cy55LGIsaixhLmF4aXNZKSxkLmNyZWF0ZUdyaWRBbmRMYWJlbHMoZyxpLHRoaXMuc3VwcG9ydHNGb3JlaWduT2JqZWN0LGEsdGhpcy5ldmVudEVtaXR0ZXIpLGUuY3JlYXRlR3JpZEFuZExhYmVscyhnLGksdGhpcy5zdXBwb3J0c0ZvcmVpZ25PYmplY3QsYSx0aGlzLmV2ZW50RW1pdHRlciksYi5yYXcuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZixnKXt2YXIgaT1oLmVsZW0oImciKTtpLmF0dHIoeyJjdDpzZXJpZXMtbmFtZSI6Zi5uYW1lLCJjdDptZXRhIjpjLnNlcmlhbGl6ZShmLm1ldGEpfSksaS5hZGRDbGFzcyhbYS5jbGFzc05hbWVzLnNlcmllcyxmLmNsYXNzTmFtZXx8YS5jbGFzc05hbWVzLnNlcmllcysiLSIrYy5hbHBoYU51bWVyYXRlKGcpXS5qb2luKCIgIikpO3ZhciBrPVtdLGw9W107Yi5ub3JtYWxpemVkW2ddLmZvckVhY2goZnVuY3Rpb24oYSxoKXt2YXIgaT17eDpqLngxK2QucHJvamVjdFZhbHVlKGEsaCxiLm5vcm1hbGl6ZWRbZ10pLHk6ai55MS1lLnByb2plY3RWYWx1ZShhLGgsYi5ub3JtYWxpemVkW2ddKX07ay5wdXNoKGkueCxpLnkpLGwucHVzaCh7dmFsdWU6YSx2YWx1ZUluZGV4OmgsbWV0YTpjLmdldE1ldGFEYXRhKGYsaCl9KX0uYmluZCh0aGlzKSk7dmFyIG09e2xpbmVTbW9vdGg6Yy5nZXRTZXJpZXNPcHRpb24oZixhLCJsaW5lU21vb3RoIiksc2hvd1BvaW50OmMuZ2V0U2VyaWVzT3B0aW9uKGYsYSwic2hvd1BvaW50Iiksc2hvd0xpbmU6Yy5nZXRTZXJpZXNPcHRpb24oZixhLCJzaG93TGluZSIpLHNob3dBcmVhOmMuZ2V0U2VyaWVzT3B0aW9uKGYsYSwic2hvd0FyZWEiKSxhcmVhQmFzZTpjLmdldFNlcmllc09wdGlvbihmLGEsImFyZWFCYXNlIil9LG49ImZ1bmN0aW9uIj09dHlwZW9mIG0ubGluZVNtb290aD9tLmxpbmVTbW9vdGg6bS5saW5lU21vb3RoP2MuSW50ZXJwb2xhdGlvbi5tb25vdG9uZUN1YmljKCk6Yy5JbnRlcnBvbGF0aW9uLm5vbmUoKSxvPW4oayxsKTtpZihtLnNob3dQb2ludCYmby5wYXRoRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgaD1pLmVsZW0oImxpbmUiLHt4MTpiLngseTE6Yi55LHgyOmIueCsuMDEseTI6Yi55fSxhLmNsYXNzTmFtZXMucG9pbnQpLmF0dHIoeyJjdDp2YWx1ZSI6W2IuZGF0YS52YWx1ZS54LGIuZGF0YS52YWx1ZS55XS5maWx0ZXIoYy5pc051bSkuam9pbigiLCIpLCJjdDptZXRhIjpiLmRhdGEubWV0YX0pO3RoaXMuZXZlbnRFbWl0dGVyLmVtaXQoImRyYXciLHt0eXBlOiJwb2ludCIsdmFsdWU6Yi5kYXRhLnZhbHVlLGluZGV4OmIuZGF0YS52YWx1ZUluZGV4LG1ldGE6Yi5kYXRhLm1ldGEsc2VyaWVzOmYsc2VyaWVzSW5kZXg6ZyxheGlzWDpkLGF4aXNZOmUsZ3JvdXA6aSxlbGVtZW50OmgseDpiLngseTpiLnl9KX0uYmluZCh0aGlzKSksbS5zaG93TGluZSl7dmFyIHA9aS5lbGVtKCJwYXRoIix7ZDpvLnN0cmluZ2lmeSgpfSxhLmNsYXNzTmFtZXMubGluZSwhMCk7dGhpcy5ldmVudEVtaXR0ZXIuZW1pdCgiZHJhdyIse3R5cGU6ImxpbmUiLHZhbHVlczpiLm5vcm1hbGl6ZWRbZ10scGF0aDpvLmNsb25lKCksY2hhcnRSZWN0OmosaW5kZXg6ZyxzZXJpZXM6ZixzZXJpZXNJbmRleDpnLGF4aXNYOmQsYXhpc1k6ZSxncm91cDppLGVsZW1lbnQ6cH0pfWlmKG0uc2hvd0FyZWEmJmUucmFuZ2Upe3ZhciBxPU1hdGgubWF4KE1hdGgubWluKG0uYXJlYUJhc2UsZS5yYW5nZS5tYXgpLGUucmFuZ2UubWluKSxyPWoueTEtZS5wcm9qZWN0VmFsdWUocSk7by5zcGxpdEJ5Q29tbWFuZCgiTSIpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXRoRWxlbWVudHMubGVuZ3RoPjF9KS5tYXAoZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXRoRWxlbWVudHNbMF0sYz1hLnBhdGhFbGVtZW50c1thLnBhdGhFbGVtZW50cy5sZW5ndGgtMV07cmV0dXJuIGEuY2xvbmUoITApLnBvc2l0aW9uKDApLnJlbW92ZSgxKS5tb3ZlKGIueCxyKS5saW5lKGIueCxiLnkpLnBvc2l0aW9uKGEucGF0aEVsZW1lbnRzLmxlbmd0aCsxKS5saW5lKGMueCxyKX0pLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGg9aS5lbGVtKCJwYXRoIix7ZDpjLnN0cmluZ2lmeSgpfSxhLmNsYXNzTmFtZXMuYXJlYSwhMCk7dGhpcy5ldmVudEVtaXR0ZXIuZW1pdCgiZHJhdyIse3R5cGU6ImFyZWEiLHZhbHVlczpiLm5vcm1hbGl6ZWRbZ10scGF0aDpjLmNsb25lKCksc2VyaWVzOmYsc2VyaWVzSW5kZXg6ZyxheGlzWDpkLGF4aXNZOmUsY2hhcnRSZWN0OmosaW5kZXg6Zyxncm91cDppLGVsZW1lbnQ6aH0pfS5iaW5kKHRoaXMpKX19LmJpbmQodGhpcykpLHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoImNyZWF0ZWQiLHtib3VuZHM6ZS5ib3VuZHMsY2hhcnRSZWN0OmosYXhpc1g6ZCxheGlzWTplLHN2Zzp0aGlzLnN2ZyxvcHRpb25zOmF9KX1mdW5jdGlvbiBlKGEsYixkLGUpe2MuTGluZVsic3VwZXIiXS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYSxiLGYsYy5leHRlbmQoe30sZixkKSxlKX12YXIgZj17YXhpc1g6e29mZnNldDozMCxwb3NpdGlvbjoiZW5kIixsYWJlbE9mZnNldDp7eDowLHk6MH0sc2hvd0xhYmVsOiEwLHNob3dHcmlkOiEwLGxhYmVsSW50ZXJwb2xhdGlvbkZuYzpjLm5vb3AsdHlwZTp2b2lkIDB9LGF4aXNZOntvZmZzZXQ6NDAscG9zaXRpb246InN0YXJ0IixsYWJlbE9mZnNldDp7eDowLHk6MH0sc2hvd0xhYmVsOiEwLHNob3dHcmlkOiEwLGxhYmVsSW50ZXJwb2xhdGlvbkZuYzpjLm5vb3AsdHlwZTp2b2lkIDAsc2NhbGVNaW5TcGFjZToyMCxvbmx5SW50ZWdlcjohMX0sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsc2hvd0xpbmU6ITAsc2hvd1BvaW50OiEwLHNob3dBcmVhOiExLGFyZWFCYXNlOjAsbGluZVNtb290aDohMCxsb3c6dm9pZCAwLGhpZ2g6dm9pZCAwLGNoYXJ0UGFkZGluZzp7dG9wOjE1LHJpZ2h0OjE1LGJvdHRvbTo1LGxlZnQ6MTB9LGZ1bGxXaWR0aDohMSxyZXZlcnNlRGF0YTohMSxjbGFzc05hbWVzOntjaGFydDoiY3QtY2hhcnQtbGluZSIsbGFiZWw6ImN0LWxhYmVsIixsYWJlbEdyb3VwOiJjdC1sYWJlbHMiLHNlcmllczoiY3Qtc2VyaWVzIixsaW5lOiJjdC1saW5lIixwb2ludDoiY3QtcG9pbnQiLGFyZWE6ImN0LWFyZWEiLGdyaWQ6ImN0LWdyaWQiLGdyaWRHcm91cDoiY3QtZ3JpZHMiLHZlcnRpY2FsOiJjdC12ZXJ0aWNhbCIsaG9yaXpvbnRhbDoiY3QtaG9yaXpvbnRhbCIsc3RhcnQ6ImN0LXN0YXJ0IixlbmQ6ImN0LWVuZCJ9fTtjLkxpbmU9Yy5CYXNlLmV4dGVuZCh7Y29uc3RydWN0b3I6ZSxjcmVhdGVDaGFydDpkfSl9KHdpbmRvdyxkb2N1bWVudCxhKSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7dGhpcy5kYXRhPWMubm9ybWFsaXplRGF0YSh0aGlzLmRhdGEpO3ZhciBiLGQ9e3Jhdzp0aGlzLmRhdGEsbm9ybWFsaXplZDphLmRpc3RyaWJ1dGVTZXJpZXM/Yy5nZXREYXRhQXJyYXkodGhpcy5kYXRhLGEucmV2ZXJzZURhdGEsYS5ob3Jpem9udGFsQmFycz8ieCI6InkiKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuW2FdfSk6Yy5nZXREYXRhQXJyYXkodGhpcy5kYXRhLGEucmV2ZXJzZURhdGEsYS5ob3Jpem9udGFsQmFycz8ieCI6InkiKX07dGhpcy5zdmc9Yy5jcmVhdGVTdmcodGhpcy5jb250YWluZXIsYS53aWR0aCxhLmhlaWdodCxhLmNsYXNzTmFtZXMuY2hhcnQrKGEuaG9yaXpvbnRhbEJhcnM/IiAiK2EuY2xhc3NOYW1lcy5ob3Jpem9udGFsQmFyczoiIikpO3ZhciBlPXRoaXMuc3ZnLmVsZW0oImciKS5hZGRDbGFzcyhhLmNsYXNzTmFtZXMuZ3JpZEdyb3VwKSxnPXRoaXMuc3ZnLmVsZW0oImciKSxoPXRoaXMuc3ZnLmVsZW0oImciKS5hZGRDbGFzcyhhLmNsYXNzTmFtZXMubGFiZWxHcm91cCk7aWYoYS5zdGFja0JhcnMmJjAhPT1kLm5vcm1hbGl6ZWQubGVuZ3RoKXt2YXIgaT1jLnNlcmlhbE1hcChkLm5vcm1hbGl6ZWQsZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGF9KS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm57eDphLngrKGImJmIueCl8fDAseTphLnkrKGImJmIueSl8fDB9fSx7eDowLHk6MH0pfSk7Yj1jLmdldEhpZ2hMb3coW2ldLGMuZXh0ZW5kKHt9LGEse3JlZmVyZW5jZVZhbHVlOjB9KSxhLmhvcml6b250YWxCYXJzPyJ4IjoieSIpfWVsc2UgYj1jLmdldEhpZ2hMb3coZC5ub3JtYWxpemVkLGMuZXh0ZW5kKHt9LGEse3JlZmVyZW5jZVZhbHVlOjB9KSxhLmhvcml6b250YWxCYXJzPyJ4IjoieSIpO2IuaGlnaD0rYS5oaWdofHwoMD09PWEuaGlnaD8wOmIuaGlnaCksYi5sb3c9K2EubG93fHwoMD09PWEubG93PzA6Yi5sb3cpO3ZhciBqLGssbCxtLG4sbz1jLmNyZWF0ZUNoYXJ0UmVjdCh0aGlzLnN2ZyxhLGYucGFkZGluZyk7az1hLmRpc3RyaWJ1dGVTZXJpZXMmJmEuc3RhY2tCYXJzP2QucmF3LmxhYmVscy5zbGljZSgwLDEpOmQucmF3LmxhYmVscyxhLmhvcml6b250YWxCYXJzPyhqPW09dm9pZCAwPT09YS5heGlzWC50eXBlP25ldyBjLkF1dG9TY2FsZUF4aXMoYy5BeGlzLnVuaXRzLngsZCxvLGMuZXh0ZW5kKHt9LGEuYXhpc1gse2hpZ2hMb3c6YixyZWZlcmVuY2VWYWx1ZTowfSkpOmEuYXhpc1gudHlwZS5jYWxsKGMsYy5BeGlzLnVuaXRzLngsZCxvLGMuZXh0ZW5kKHt9LGEuYXhpc1gse2hpZ2hMb3c6YixyZWZlcmVuY2VWYWx1ZTowfSkpLGw9bj12b2lkIDA9PT1hLmF4aXNZLnR5cGU/bmV3IGMuU3RlcEF4aXMoYy5BeGlzLnVuaXRzLnksZCxvLHt0aWNrczprfSk6YS5heGlzWS50eXBlLmNhbGwoYyxjLkF4aXMudW5pdHMueSxkLG8sYS5heGlzWSkpOihsPW09dm9pZCAwPT09YS5heGlzWC50eXBlP25ldyBjLlN0ZXBBeGlzKGMuQXhpcy51bml0cy54LGQsbyx7dGlja3M6a30pOmEuYXhpc1gudHlwZS5jYWxsKGMsYy5BeGlzLnVuaXRzLngsZCxvLGEuYXhpc1gpLGo9bj12b2lkIDA9PT1hLmF4aXNZLnR5cGU/bmV3IGMuQXV0b1NjYWxlQXhpcyhjLkF4aXMudW5pdHMueSxkLG8sYy5leHRlbmQoe30sYS5heGlzWSx7aGlnaExvdzpiLHJlZmVyZW5jZVZhbHVlOjB9KSk6YS5heGlzWS50eXBlLmNhbGwoYyxjLkF4aXMudW5pdHMueSxkLG8sYy5leHRlbmQoe30sYS5heGlzWSx7aGlnaExvdzpiLHJlZmVyZW5jZVZhbHVlOjB9KSkpO3ZhciBwPWEuaG9yaXpvbnRhbEJhcnM/by54MStqLnByb2plY3RWYWx1ZSgwKTpvLnkxLWoucHJvamVjdFZhbHVlKDApLHE9W107CmwuY3JlYXRlR3JpZEFuZExhYmVscyhlLGgsdGhpcy5zdXBwb3J0c0ZvcmVpZ25PYmplY3QsYSx0aGlzLmV2ZW50RW1pdHRlciksai5jcmVhdGVHcmlkQW5kTGFiZWxzKGUsaCx0aGlzLnN1cHBvcnRzRm9yZWlnbk9iamVjdCxhLHRoaXMuZXZlbnRFbWl0dGVyKSxkLnJhdy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiLGUpe3ZhciBmLGgsaT1lLShkLnJhdy5zZXJpZXMubGVuZ3RoLTEpLzI7Zj1hLmRpc3RyaWJ1dGVTZXJpZXMmJiFhLnN0YWNrQmFycz9sLmF4aXNMZW5ndGgvZC5ub3JtYWxpemVkLmxlbmd0aC8yOmEuZGlzdHJpYnV0ZVNlcmllcyYmYS5zdGFja0JhcnM/bC5heGlzTGVuZ3RoLzI6bC5heGlzTGVuZ3RoL2Qubm9ybWFsaXplZFtlXS5sZW5ndGgvMixoPWcuZWxlbSgiZyIpLGguYXR0cih7ImN0OnNlcmllcy1uYW1lIjpiLm5hbWUsImN0Om1ldGEiOmMuc2VyaWFsaXplKGIubWV0YSl9KSxoLmFkZENsYXNzKFthLmNsYXNzTmFtZXMuc2VyaWVzLGIuY2xhc3NOYW1lfHxhLmNsYXNzTmFtZXMuc2VyaWVzKyItIitjLmFscGhhTnVtZXJhdGUoZSldLmpvaW4oIiAiKSksZC5ub3JtYWxpemVkW2VdLmZvckVhY2goZnVuY3Rpb24oZyxrKXt2YXIgcixzLHQsdTtpZih1PWEuZGlzdHJpYnV0ZVNlcmllcyYmIWEuc3RhY2tCYXJzP2U6YS5kaXN0cmlidXRlU2VyaWVzJiZhLnN0YWNrQmFycz8wOmsscj1hLmhvcml6b250YWxCYXJzP3t4Om8ueDErai5wcm9qZWN0VmFsdWUoZyYmZy54P2cueDowLGssZC5ub3JtYWxpemVkW2VdKSx5Om8ueTEtbC5wcm9qZWN0VmFsdWUoZyYmZy55P2cueTowLHUsZC5ub3JtYWxpemVkW2VdKX06e3g6by54MStsLnByb2plY3RWYWx1ZShnJiZnLng/Zy54OjAsdSxkLm5vcm1hbGl6ZWRbZV0pLHk6by55MS1qLnByb2plY3RWYWx1ZShnJiZnLnk/Zy55OjAsayxkLm5vcm1hbGl6ZWRbZV0pfSxsIGluc3RhbmNlb2YgYy5TdGVwQXhpcyYmKGwub3B0aW9ucy5zdHJldGNofHwocltsLnVuaXRzLnBvc10rPWYqKGEuaG9yaXpvbnRhbEJhcnM/LTE6MSkpLHJbbC51bml0cy5wb3NdKz1hLnN0YWNrQmFyc3x8YS5kaXN0cmlidXRlU2VyaWVzPzA6aSphLnNlcmllc0JhckRpc3RhbmNlKihhLmhvcml6b250YWxCYXJzPy0xOjEpKSx0PXFba118fHAscVtrXT10LShwLXJbbC5jb3VudGVyVW5pdHMucG9zXSksdm9pZCAwIT09Zyl7dmFyIHY9e307dltsLnVuaXRzLnBvcysiMSJdPXJbbC51bml0cy5wb3NdLHZbbC51bml0cy5wb3MrIjIiXT1yW2wudW5pdHMucG9zXSwhYS5zdGFja0JhcnN8fCJhY2N1bXVsYXRlIiE9PWEuc3RhY2tNb2RlJiZhLnN0YWNrTW9kZT8odltsLmNvdW50ZXJVbml0cy5wb3MrIjEiXT1wLHZbbC5jb3VudGVyVW5pdHMucG9zKyIyIl09cltsLmNvdW50ZXJVbml0cy5wb3NdKToodltsLmNvdW50ZXJVbml0cy5wb3MrIjEiXT10LHZbbC5jb3VudGVyVW5pdHMucG9zKyIyIl09cVtrXSksdi54MT1NYXRoLm1pbihNYXRoLm1heCh2LngxLG8ueDEpLG8ueDIpLHYueDI9TWF0aC5taW4oTWF0aC5tYXgodi54MixvLngxKSxvLngyKSx2LnkxPU1hdGgubWluKE1hdGgubWF4KHYueTEsby55Miksby55MSksdi55Mj1NYXRoLm1pbihNYXRoLm1heCh2LnkyLG8ueTIpLG8ueTEpLHM9aC5lbGVtKCJsaW5lIix2LGEuY2xhc3NOYW1lcy5iYXIpLmF0dHIoeyJjdDp2YWx1ZSI6W2cueCxnLnldLmZpbHRlcihjLmlzTnVtKS5qb2luKCIsIiksImN0Om1ldGEiOmMuZ2V0TWV0YURhdGEoYixrKX0pLHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoImRyYXciLGMuZXh0ZW5kKHt0eXBlOiJiYXIiLHZhbHVlOmcsaW5kZXg6ayxtZXRhOmMuZ2V0TWV0YURhdGEoYixrKSxzZXJpZXM6YixzZXJpZXNJbmRleDplLGF4aXNYOm0sYXhpc1k6bixjaGFydFJlY3Q6byxncm91cDpoLGVsZW1lbnQ6c30sdikpfX0uYmluZCh0aGlzKSl9LmJpbmQodGhpcykpLHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoImNyZWF0ZWQiLHtib3VuZHM6ai5ib3VuZHMsY2hhcnRSZWN0Om8sYXhpc1g6bSxheGlzWTpuLHN2Zzp0aGlzLnN2ZyxvcHRpb25zOmF9KX1mdW5jdGlvbiBlKGEsYixkLGUpe2MuQmFyWyJzdXBlciJdLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLGIsZixjLmV4dGVuZCh7fSxmLGQpLGUpfXZhciBmPXtheGlzWDp7b2Zmc2V0OjMwLHBvc2l0aW9uOiJlbmQiLGxhYmVsT2Zmc2V0Ont4OjAseTowfSxzaG93TGFiZWw6ITAsc2hvd0dyaWQ6ITAsbGFiZWxJbnRlcnBvbGF0aW9uRm5jOmMubm9vcCxzY2FsZU1pblNwYWNlOjMwLG9ubHlJbnRlZ2VyOiExfSxheGlzWTp7b2Zmc2V0OjQwLHBvc2l0aW9uOiJzdGFydCIsbGFiZWxPZmZzZXQ6e3g6MCx5OjB9LHNob3dMYWJlbDohMCxzaG93R3JpZDohMCxsYWJlbEludGVycG9sYXRpb25GbmM6Yy5ub29wLHNjYWxlTWluU3BhY2U6MjAsb25seUludGVnZXI6ITF9LHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGhpZ2g6dm9pZCAwLGxvdzp2b2lkIDAsY2hhcnRQYWRkaW5nOnt0b3A6MTUscmlnaHQ6MTUsYm90dG9tOjUsbGVmdDoxMH0sc2VyaWVzQmFyRGlzdGFuY2U6MTUsc3RhY2tCYXJzOiExLHN0YWNrTW9kZToiYWNjdW11bGF0ZSIsaG9yaXpvbnRhbEJhcnM6ITEsZGlzdHJpYnV0ZVNlcmllczohMSxyZXZlcnNlRGF0YTohMSxjbGFzc05hbWVzOntjaGFydDoiY3QtY2hhcnQtYmFyIixob3Jpem9udGFsQmFyczoiY3QtaG9yaXpvbnRhbC1iYXJzIixsYWJlbDoiY3QtbGFiZWwiLGxhYmVsR3JvdXA6ImN0LWxhYmVscyIsc2VyaWVzOiJjdC1zZXJpZXMiLGJhcjoiY3QtYmFyIixncmlkOiJjdC1ncmlkIixncmlkR3JvdXA6ImN0LWdyaWRzIix2ZXJ0aWNhbDoiY3QtdmVydGljYWwiLGhvcml6b250YWw6ImN0LWhvcml6b250YWwiLHN0YXJ0OiJjdC1zdGFydCIsZW5kOiJjdC1lbmQifX07Yy5CYXI9Yy5CYXNlLmV4dGVuZCh7Y29uc3RydWN0b3I6ZSxjcmVhdGVDaGFydDpkfSl9KHdpbmRvdyxkb2N1bWVudCxhKSxmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiLGMpe3ZhciBkPWIueD5hLng7cmV0dXJuIGQmJiJleHBsb2RlIj09PWN8fCFkJiYiaW1wbG9kZSI9PT1jPyJzdGFydCI6ZCYmImltcGxvZGUiPT09Y3x8IWQmJiJleHBsb2RlIj09PWM/ImVuZCI6Im1pZGRsZSJ9ZnVuY3Rpb24gZShhKXt0aGlzLmRhdGE9Yy5ub3JtYWxpemVEYXRhKHRoaXMuZGF0YSk7dmFyIGIsZSxmLGgsaSxqPVtdLGs9YS5zdGFydEFuZ2xlLGw9Yy5nZXREYXRhQXJyYXkodGhpcy5kYXRhLGEucmV2ZXJzZURhdGEpO3RoaXMuc3ZnPWMuY3JlYXRlU3ZnKHRoaXMuY29udGFpbmVyLGEud2lkdGgsYS5oZWlnaHQsYS5kb251dD9hLmNsYXNzTmFtZXMuY2hhcnREb251dDphLmNsYXNzTmFtZXMuY2hhcnRQaWUpLGU9Yy5jcmVhdGVDaGFydFJlY3QodGhpcy5zdmcsYSxnLnBhZGRpbmcpLGY9TWF0aC5taW4oZS53aWR0aCgpLzIsZS5oZWlnaHQoKS8yKSxpPWEudG90YWx8fGwucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0sMCk7dmFyIG09Yy5xdWFudGl0eShhLmRvbnV0V2lkdGgpOyIlIj09PW0udW5pdCYmKG0udmFsdWUqPWYvMTAwKSxmLT1hLmRvbnV0P20udmFsdWUvMjowLGg9Im91dHNpZGUiPT09YS5sYWJlbFBvc2l0aW9ufHxhLmRvbnV0P2Y6ImNlbnRlciI9PT1hLmxhYmVsUG9zaXRpb24/MDpmLzIsaCs9YS5sYWJlbE9mZnNldDt2YXIgbj17eDplLngxK2Uud2lkdGgoKS8yLHk6ZS55MitlLmhlaWdodCgpLzJ9LG89MT09PXRoaXMuZGF0YS5zZXJpZXMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpPzAhPT1hLnZhbHVlOjAhPT1hfSkubGVuZ3RoO2Euc2hvd0xhYmVsJiYoYj10aGlzLnN2Zy5lbGVtKCJnIixudWxsLG51bGwsITApKTtmb3IodmFyIHA9MDtwPHRoaXMuZGF0YS5zZXJpZXMubGVuZ3RoO3ArKylpZigwIT09bFtwXXx8IWEuaWdub3JlRW1wdHlWYWx1ZXMpe3ZhciBxPXRoaXMuZGF0YS5zZXJpZXNbcF07altwXT10aGlzLnN2Zy5lbGVtKCJnIixudWxsLG51bGwsITApLGpbcF0uYXR0cih7ImN0OnNlcmllcy1uYW1lIjpxLm5hbWV9KSxqW3BdLmFkZENsYXNzKFthLmNsYXNzTmFtZXMuc2VyaWVzLHEuY2xhc3NOYW1lfHxhLmNsYXNzTmFtZXMuc2VyaWVzKyItIitjLmFscGhhTnVtZXJhdGUocCldLmpvaW4oIiAiKSk7dmFyIHI9aytsW3BdL2kqMzYwLHM9TWF0aC5tYXgoMCxrLSgwPT09cHx8bz8wOi4yKSk7ci1zPj0zNTkuOTkmJihyPXMrMzU5Ljk5KTt2YXIgdD1jLnBvbGFyVG9DYXJ0ZXNpYW4obi54LG4ueSxmLHMpLHU9Yy5wb2xhclRvQ2FydGVzaWFuKG4ueCxuLnksZixyKSx2PW5ldyBjLlN2Zy5QYXRoKCghYS5kb251dCkpLm1vdmUodS54LHUueSkuYXJjKGYsZiwwLHItaz4xODAsMCx0LngsdC55KTthLmRvbnV0fHx2LmxpbmUobi54LG4ueSk7dmFyIHc9altwXS5lbGVtKCJwYXRoIix7ZDp2LnN0cmluZ2lmeSgpfSxhLmRvbnV0P2EuY2xhc3NOYW1lcy5zbGljZURvbnV0OmEuY2xhc3NOYW1lcy5zbGljZVBpZSk7aWYody5hdHRyKHsiY3Q6dmFsdWUiOmxbcF0sImN0Om1ldGEiOmMuc2VyaWFsaXplKHEubWV0YSl9KSxhLmRvbnV0JiZ3LmF0dHIoe3N0eWxlOiJzdHJva2Utd2lkdGg6ICIrbS52YWx1ZSsicHgifSksdGhpcy5ldmVudEVtaXR0ZXIuZW1pdCgiZHJhdyIse3R5cGU6InNsaWNlIix2YWx1ZTpsW3BdLHRvdGFsRGF0YVN1bTppLGluZGV4OnAsbWV0YTpxLm1ldGEsc2VyaWVzOnEsZ3JvdXA6altwXSxlbGVtZW50OncscGF0aDp2LmNsb25lKCksY2VudGVyOm4scmFkaXVzOmYsc3RhcnRBbmdsZTprLGVuZEFuZ2xlOnJ9KSxhLnNob3dMYWJlbCl7dmFyIHg9Yy5wb2xhclRvQ2FydGVzaWFuKG4ueCxuLnksaCxrKyhyLWspLzIpLHk9YS5sYWJlbEludGVycG9sYXRpb25GbmModGhpcy5kYXRhLmxhYmVscyYmIWMuaXNGYWxzZXlCdXRaZXJvKHRoaXMuZGF0YS5sYWJlbHNbcF0pP3RoaXMuZGF0YS5sYWJlbHNbcF06bFtwXSxwKTtpZih5fHwwPT09eSl7dmFyIHo9Yi5lbGVtKCJ0ZXh0Iix7ZHg6eC54LGR5OngueSwidGV4dC1hbmNob3IiOmQobix4LGEubGFiZWxEaXJlY3Rpb24pfSxhLmNsYXNzTmFtZXMubGFiZWwpLnRleHQoIiIreSk7dGhpcy5ldmVudEVtaXR0ZXIuZW1pdCgiZHJhdyIse3R5cGU6ImxhYmVsIixpbmRleDpwLGdyb3VwOmIsZWxlbWVudDp6LHRleHQ6IiIreSx4OngueCx5OngueX0pfX1rPXJ9dGhpcy5ldmVudEVtaXR0ZXIuZW1pdCgiY3JlYXRlZCIse2NoYXJ0UmVjdDplLHN2Zzp0aGlzLnN2ZyxvcHRpb25zOmF9KX1mdW5jdGlvbiBmKGEsYixkLGUpe2MuUGllWyJzdXBlciJdLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLGIsZyxjLmV4dGVuZCh7fSxnLGQpLGUpfXZhciBnPXt3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxjaGFydFBhZGRpbmc6NSxjbGFzc05hbWVzOntjaGFydFBpZToiY3QtY2hhcnQtcGllIixjaGFydERvbnV0OiJjdC1jaGFydC1kb251dCIsc2VyaWVzOiJjdC1zZXJpZXMiLHNsaWNlUGllOiJjdC1zbGljZS1waWUiLHNsaWNlRG9udXQ6ImN0LXNsaWNlLWRvbnV0IixsYWJlbDoiY3QtbGFiZWwifSxzdGFydEFuZ2xlOjAsdG90YWw6dm9pZCAwLGRvbnV0OiExLGRvbnV0V2lkdGg6NjAsc2hvd0xhYmVsOiEwLGxhYmVsT2Zmc2V0OjAsbGFiZWxQb3NpdGlvbjoiaW5zaWRlIixsYWJlbEludGVycG9sYXRpb25GbmM6Yy5ub29wLGxhYmVsRGlyZWN0aW9uOiJuZXV0cmFsIixyZXZlcnNlRGF0YTohMSxpZ25vcmVFbXB0eVZhbHVlczohMX07Yy5QaWU9Yy5CYXNlLmV4dGVuZCh7Y29uc3RydWN0b3I6ZixjcmVhdGVDaGFydDplLGRldGVybWluZUFuY2hvclBvc2l0aW9uOmR9KX0od2luZG93LGRvY3VtZW50LGEpLGF9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2hhcnRpc3QubWluLmpzLm1hcA=="}},"time_used":190,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":190,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/metamask.webp","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.370Z","timestamp":1785150870370,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/metamask.webp HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/webp\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:22 GMT\r\npriority: u=5,i\r\netag: \"66007e9a-b6c0\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=g3N%2FSMCn8tA%2BvlyCWsFC9VzUY%2BF1JVo%2BFbS6V959%2BXf14WqNH7nUZHuBgKu717I1RtyuAcRzb0MV6hMzDM8rwbsElJ%2BiybAnFG7rLqLkkQRlW7NXdyt6bUClpw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe456a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 46784\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"]}],"data":{"size":46784,"size_decoded":47568,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image","md5":"165ac1b6010894bc2664b58efb964f1e","sha1":"79f7774b9017700da97962d98217b4fcbad4ed08","sha256":"57efcf6f4991e661143f21823a898d8b09db6ccc16f84acbb5fd8932930342e3","sha512":"9ffeee996ee9c01733213b554c16b18c1648a69fc7dafa250315da34428aa017b9651149ac4bb1698a579c8e7a96d6d38178ab546c2d94e4bc34df372b60609f","ssdeep":"768:sgYjkwkwrAIFuQzPWfuqKHEXyqubBB16wqke8srCsIKbPyWHPYfZH1pyLMWU:sgY1TFusMhKgyq2BBEwqkGCsIKTCZVp7","tlshash":"5b23f1b050df28b21501fa27e9007020f63149a3d89c6e425d63ebd55af831a9cfe7ad","first_seen":"2025-12-16T06:43:19.373514Z","last_seen":"2026-07-27T11:25:33.573076Z","times_seen":17,"resource_available":false,"data":"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"}},"time_used":200,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":199,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/poppins/v24/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.865Z","timestamp":1785150870865,"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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/poppins/v24/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://punks.my\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 7816\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Tue, 21 Jul 2026 23:00:27 GMT\r\nexpires: Wed, 21 Jul 2027 23:00:27 GMT\r\ncache-control: public, max-age=31536000\r\nage: 476043\r\nlast-modified: Mon, 15 Sep 2025 16:35:07 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":7816,"size_decoded":8628,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 7816, version 1.0","md5":"25b0e113ca7cce3770d542736db26368","sha1":"cb726212d5d525021752a1d8470a0fb593e0c49e","sha256":"9338e65fc077355c7a87ae0d64cc101e23b9bf8ad78ae65f0f319c857311b526","sha512":"a0d331e62ab4727f49ca286a1ee7fb81cddc5bb9edf71ef84f4bd4fa1552069af1a82752011ba88fae80862d034135926b7e99d70e59d626d66d4ede90e94c30","ssdeep":"192:Agw5ksLwlyK8F2BXU96Fc575OI3+ga534SlEFwTG4ovej9be:Al5y8FSUMS5VOq1KISlvS4ov+4","tlshash":"a3f1af19d5de5a73f80032b45b6911ba7e42fa83bc68bbedf8046a10ad542cb467cc91","first_seen":"2023-04-05T13:48:05Z","last_seen":"2026-07-27T12:59:07.159117Z","times_seen":288813,"resource_available":true,"data":"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"}},"time_used":41,"timings":{"blocked":19,"dns":0,"connect":0,"send":0,"wait":18,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css2?family=Press+Start+2P\u0026display=swap","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.326Z","timestamp":1785150870326,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:27 GMT","end":"Mon, 21 Sep 2026 08:39:26 GMT"},"fingerprint":{"sha1":"50:37:CF:61:33:A1:EE:47:D9:3D:A6:5E:07:BA:4C:FF:F7:25:9F:76","sha256":"7D:4D:21:06:63:E2:5E:F0:8C:59:8E:EB:B7:94:2B:81:70:11:D3:F4:C0:A0:81:A6:1B:E7:27:FD:56:10:1A:11"}}},"request":{"raw":"GET /css2?family=Press+Start+2P\u0026display=swap HTTP/1.1\r\nHost: fonts.googleapis.com\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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://punks.my/\r\nSec-Fetch-Dest: style\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":"HTTP/2 200 \r\ncontent-type: text/css; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\naccess-control-allow-origin: *\r\ntiming-allow-origin: *\r\nlink: \u003chttps://fonts.gstatic.com\u003e; rel=preconnect; crossorigin\r\nstrict-transport-security: max-age=31536000\r\nexpires: Mon, 27 Jul 2026 11:14:30 GMT\r\ndate: Mon, 27 Jul 2026 11:14:30 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-opener-policy: same-origin-allow-popups\r\ncross-origin-resource-policy: cross-origin\r\ncontent-encoding: gzip\r\nserver: ESF\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":1860,"size_decoded":1216,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"b7cad844ac5ba76f2eaa0a5f19927973","sha1":"0f619ace2a91abd4ba25e81b02b34e50708501aa","sha256":"c432858c887f02896894b1e44507b18fa1d22287d3bac0c1da9883849c63a118","sha512":"1056d64979f32cc0013a2564c64a6142439088d81b298c3da42cbd73ac308a5e0622cb5fee52c560d6e993e35eaaaea05d10226b42c65379b22a5c4252d1e632","ssdeep":"","tlshash":"043167e6052b94409b931cd373cf7e36de0e2125649184699efe1c84acbaca60391b5e","first_seen":"2025-09-17T02:54:26.564123Z","last_seen":"2026-07-27T11:25:33.571548Z","times_seen":1471,"resource_available":false,"data":"LyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUHJlc3MgU3RhcnQgMlAnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvcHJlc3NzdGFydDJwL3YxNi9lM3Q0ZXVPOFQtMjY3b0lBUUF1NmpEUXlLM25ZaXZOMDR3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdQcmVzcyBTdGFydCAyUCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9wcmVzc3N0YXJ0MnAvdjE2L2UzdDRldU84VC0yNjdvSUFRQXU2akRReUszblJpdk4wNHcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1ByZXNzIFN0YXJ0IDJQJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3ByZXNzc3RhcnQycC92MTYvZTN0NGV1TzhULTI2N29JQVFBdTZqRFF5SzNuV2l2TjA0dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1ByZXNzIFN0YXJ0IDJQJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3ByZXNzc3RhcnQycC92MTYvZTN0NGV1TzhULTI2N29JQVFBdTZqRFF5SzNuYml2TjA0dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUHJlc3MgU3RhcnQgMlAnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvcHJlc3NzdGFydDJwL3YxNi9lM3Q0ZXVPOFQtMjY3b0lBUUF1NmpEUXlLM25WaXZNLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0K"}},"time_used":83,"timings":{"blocked":-1,"dns":0,"connect":15,"send":0,"wait":33,"receive":0,"ssl":34},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/nprogress/nprogress.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.338Z","timestamp":1785150870338,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/nprogress/nprogress.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-2f20\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=s%2FNAOh6E3RKxWZj4N4C3%2F%2BpQThu4EP6He%2FWsGqD8TOstpaPRfguoRJFLRbudY2b9KQTDglzgSlNEBT6oVMtpNcGYiqrbeHPVqlq%2FgnWlrOycOxfjAZnRY3Tk6g%3D%3D\"}]}\r\ncf-ray: a21b388b9bd556a2-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"]}],"data":{"size":12064,"size_decoded":4523,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text","md5":"094e662d40f0e2a40698a857178a5f01","sha1":"d866a6b884629f0be81de48c1b41486673cc06c3","sha256":"93ee6b1a9d4a60aec30364ed836f62c40f7a67f2d5037afc4339ee4a05cafbe3","sha512":"1373b25cc388b1c0d9be176f3347d3cdfdbb79bfe59cb334ae65a8a522cef61bc35669fddb80b072e6fd4e036bd63af2dae93e5ae538afc2d8341ee917d0ff0c","ssdeep":"192:GFSXevTO4eKaC5UWFc3rI6Q1aIX0xVY42+iDSujtm9X7i814wDHzHQX7qZtncclb:GoXebQC5VEEHUiFkOmHz8alKyEd6","tlshash":"7342416cbce220aa4057797e97df5148b2394007255fda107cad1268afa0f7446fafec","first_seen":"2023-03-07T14:58:13Z","last_seen":"2026-07-27T11:25:33.54564Z","times_seen":882,"resource_available":true,"data":"LyogTlByb2dyZXNzLCAoYykgMjAxMywgMjAxNCBSaWNvIFN0YS4gQ3J1eiAtIGh0dHA6Ly9yaWNvc3RhY3J1ei5jb20vbnByb2dyZXNzCiAqIEBsaWNlbnNlIE1JVCAqLwoKOyhmdW5jdGlvbihyb290LCBmYWN0b3J5KSB7CgogIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgIGRlZmluZShmYWN0b3J5KTsKICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CiAgfSBlbHNlIHsKICAgIHJvb3QuTlByb2dyZXNzID0gZmFjdG9yeSgpOwogIH0KCn0pKHRoaXMsIGZ1bmN0aW9uKCkgewogIHZhciBOUHJvZ3Jlc3MgPSB7fTsKCiAgTlByb2dyZXNzLnZlcnNpb24gPSAnMC4yLjAnOwoKICB2YXIgU2V0dGluZ3MgPSBOUHJvZ3Jlc3Muc2V0dGluZ3MgPSB7CiAgICBtaW5pbXVtOiAwLjA4LAogICAgZWFzaW5nOiAnbGluZWFyJywKICAgIHBvc2l0aW9uVXNpbmc6ICcnLAogICAgc3BlZWQ6IDM1MCwKICAgIHRyaWNrbGU6IHRydWUsCiAgICB0cmlja2xlU3BlZWQ6IDI1MCwKICAgIHNob3dTcGlubmVyOiB0cnVlLAogICAgYmFyU2VsZWN0b3I6ICdbcm9sZT0iYmFyIl0nLAogICAgc3Bpbm5lclNlbGVjdG9yOiAnW3JvbGU9InNwaW5uZXIiXScsCiAgICBwYXJlbnQ6ICdib2R5JywKICAgIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz0iYmFyIiByb2xlPSJiYXIiPjxkaXYgY2xhc3M9InBlZyI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ic3Bpbm5lciIgcm9sZT0ic3Bpbm5lciI+PGRpdiBjbGFzcz0ic3Bpbm5lci1pY29uIj48L2Rpdj48L2Rpdj4nCiAgfTsKCiAgLyoqCiAgICogVXBkYXRlcyBjb25maWd1cmF0aW9uLgogICAqCiAgICogICAgIE5Qcm9ncmVzcy5jb25maWd1cmUoewogICAqICAgICAgIG1pbmltdW06IDAuMQogICAqICAgICB9KTsKICAgKi8KICBOUHJvZ3Jlc3MuY29uZmlndXJlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgdmFyIGtleSwgdmFsdWU7CiAgICBmb3IgKGtleSBpbiBvcHRpb25zKSB7CiAgICAgIHZhbHVlID0gb3B0aW9uc1trZXldOwogICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmhhc093blByb3BlcnR5KGtleSkpIFNldHRpbmdzW2tleV0gPSB2YWx1ZTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9OwoKICAvKioKICAgKiBMYXN0IG51bWJlci4KICAgKi8KCiAgTlByb2dyZXNzLnN0YXR1cyA9IG51bGw7CgogIC8qKgogICAqIFNldHMgdGhlIHByb2dyZXNzIGJhciBzdGF0dXMsIHdoZXJlIGBuYCBpcyBhIG51bWJlciBmcm9tIGAwLjBgIHRvIGAxLjBgLgogICAqCiAgICogICAgIE5Qcm9ncmVzcy5zZXQoMC40KTsKICAgKiAgICAgTlByb2dyZXNzLnNldCgxLjApOwogICAqLwoKICBOUHJvZ3Jlc3Muc2V0ID0gZnVuY3Rpb24obikgewogICAgdmFyIHN0YXJ0ZWQgPSBOUHJvZ3Jlc3MuaXNTdGFydGVkKCk7CgogICAgbiA9IGNsYW1wKG4sIFNldHRpbmdzLm1pbmltdW0sIDEpOwogICAgTlByb2dyZXNzLnN0YXR1cyA9IChuID09PSAxID8gbnVsbCA6IG4pOwoKICAgIHZhciBwcm9ncmVzcyA9IE5Qcm9ncmVzcy5yZW5kZXIoIXN0YXJ0ZWQpLAogICAgICAgIGJhciAgICAgID0gcHJvZ3Jlc3MucXVlcnlTZWxlY3RvcihTZXR0aW5ncy5iYXJTZWxlY3RvciksCiAgICAgICAgc3BlZWQgICAgPSBTZXR0aW5ncy5zcGVlZCwKICAgICAgICBlYXNlICAgICA9IFNldHRpbmdzLmVhc2luZzsKCiAgICBwcm9ncmVzcy5vZmZzZXRXaWR0aDsgLyogUmVwYWludCAqLwoKICAgIHF1ZXVlKGZ1bmN0aW9uKG5leHQpIHsKICAgICAgLy8gU2V0IHBvc2l0aW9uVXNpbmcgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBzZXQKICAgICAgaWYgKFNldHRpbmdzLnBvc2l0aW9uVXNpbmcgPT09ICcnKSBTZXR0aW5ncy5wb3NpdGlvblVzaW5nID0gTlByb2dyZXNzLmdldFBvc2l0aW9uaW5nQ1NTKCk7CgogICAgICAvLyBBZGQgdHJhbnNpdGlvbgogICAgICBjc3MoYmFyLCBiYXJQb3NpdGlvbkNTUyhuLCBzcGVlZCwgZWFzZSkpOwoKICAgICAgaWYgKG4gPT09IDEpIHsKICAgICAgICAvLyBGYWRlIG91dAogICAgICAgIGNzcyhwcm9ncmVzcywgewogICAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLAogICAgICAgICAgb3BhY2l0eTogMQogICAgICAgIH0pOwogICAgICAgIHByb2dyZXNzLm9mZnNldFdpZHRoOyAvKiBSZXBhaW50ICovCgogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBjc3MocHJvZ3Jlc3MsIHsKICAgICAgICAgICAgdHJhbnNpdGlvbjogJ2FsbCAnICsgc3BlZWQgKyAnbXMgbGluZWFyJywKICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgfSk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICBOUHJvZ3Jlc3MucmVtb3ZlKCk7CiAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgIH0sIHNwZWVkKTsKICAgICAgICB9LCBzcGVlZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc2V0VGltZW91dChuZXh0LCBzcGVlZCk7CiAgICAgIH0KICAgIH0pOwoKICAgIHJldHVybiB0aGlzOwogIH07CgogIE5Qcm9ncmVzcy5pc1N0YXJ0ZWQgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0eXBlb2YgTlByb2dyZXNzLnN0YXR1cyA9PT0gJ251bWJlcic7CiAgfTsKCiAgLyoqCiAgICogU2hvd3MgdGhlIHByb2dyZXNzIGJhci4KICAgKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgdGhlIHN0YXR1cyB0byAwJSwgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBnbyBiYWNrd2FyZHMuCiAgICoKICAgKiAgICAgTlByb2dyZXNzLnN0YXJ0KCk7CiAgICoKICAgKi8KICBOUHJvZ3Jlc3Muc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIGlmICghTlByb2dyZXNzLnN0YXR1cykgTlByb2dyZXNzLnNldCgwKTsKCiAgICB2YXIgd29yayA9IGZ1bmN0aW9uKCkgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghTlByb2dyZXNzLnN0YXR1cykgcmV0dXJuOwogICAgICAgIE5Qcm9ncmVzcy50cmlja2xlKCk7CiAgICAgICAgd29yaygpOwogICAgICB9LCBTZXR0aW5ncy50cmlja2xlU3BlZWQpOwogICAgfTsKCiAgICBpZiAoU2V0dGluZ3MudHJpY2tsZSkgd29yaygpOwoKICAgIHJldHVybiB0aGlzOwogIH07CgogIC8qKgogICAqIEhpZGVzIHRoZSBwcm9ncmVzcyBiYXIuCiAgICogVGhpcyBpcyB0aGUgKnNvcnQgb2YqIHRoZSBzYW1lIGFzIHNldHRpbmcgdGhlIHN0YXR1cyB0byAxMDAlLCB3aXRoIHRoZQogICAqIGRpZmZlcmVuY2UgYmVpbmcgYGRvbmUoKWAgbWFrZXMgc29tZSBwbGFjZWJvIGVmZmVjdCBvZiBzb21lIHJlYWxpc3RpYyBtb3Rpb24uCiAgICoKICAgKiAgICAgTlByb2dyZXNzLmRvbmUoKTsKICAgKgogICAqIElmIGB0cnVlYCBpcyBwYXNzZWQsIGl0IHdpbGwgc2hvdyB0aGUgcHJvZ3Jlc3MgYmFyIGV2ZW4gaWYgaXRzIGhpZGRlbi4KICAgKgogICAqICAgICBOUHJvZ3Jlc3MuZG9uZSh0cnVlKTsKICAgKi8KCiAgTlByb2dyZXNzLmRvbmUgPSBmdW5jdGlvbihmb3JjZSkgewogICAgaWYgKCFmb3JjZSAmJiAhTlByb2dyZXNzLnN0YXR1cykgcmV0dXJuIHRoaXM7CgogICAgcmV0dXJuIE5Qcm9ncmVzcy5pbmMoMC4zICsgMC41ICogTWF0aC5yYW5kb20oKSkuc2V0KDEpOwogIH07CgogIC8qKgogICAqIEluY3JlbWVudHMgYnkgYSByYW5kb20gYW1vdW50LgogICAqLwoKICBOUHJvZ3Jlc3MuaW5jID0gZnVuY3Rpb24oYW1vdW50KSB7CiAgICB2YXIgbiA9IE5Qcm9ncmVzcy5zdGF0dXM7CgogICAgaWYgKCFuKSB7CiAgICAgIHJldHVybiBOUHJvZ3Jlc3Muc3RhcnQoKTsKICAgIH0gZWxzZSBpZihuID4gMSkgewogICAgICByZXR1cm47CiAgICB9IGVsc2UgewogICAgICBpZiAodHlwZW9mIGFtb3VudCAhPT0gJ251bWJlcicpIHsKICAgICAgICBpZiAobiA+PSAwICYmIG4gPCAwLjI1KSB7CiAgICAgICAgICAvLyBTdGFydCBvdXQgYmV0d2VlbiAzIC0gNiUgaW5jcmVtZW50cwogICAgICAgICAgYW1vdW50ID0gKE1hdGgucmFuZG9tKCkgKiAoNSAtIDMgKyAxKSArIDMpIC8gMTAwOwogICAgICAgIH0gZWxzZSBpZiAobiA+PSAwLjI1ICYmIG4gPCAwLjY1KSB7CiAgICAgICAgICAvLyBpbmNyZW1lbnQgYmV0d2VlbiAwIC0gMyUKICAgICAgICAgIGFtb3VudCA9IChNYXRoLnJhbmRvbSgpICogMykgLyAxMDA7CiAgICAgICAgfSBlbHNlIGlmIChuID49IDAuNjUgJiYgbiA8IDAuOSkgewogICAgICAgICAgLy8gaW5jcmVtZW50IGJldHdlZW4gMCAtIDIlCiAgICAgICAgICBhbW91bnQgPSAoTWF0aC5yYW5kb20oKSAqIDIpIC8gMTAwOwogICAgICAgIH0gZWxzZSBpZiAobiA+PSAwLjkgJiYgbiA8IDAuOTkpIHsKICAgICAgICAgIC8vIGZpbmFsbHksIGluY3JlbWVudCBpdCAuNSAlCiAgICAgICAgICBhbW91bnQgPSAwLjAwNTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gYWZ0ZXIgOTklLCBkb24ndCBpbmNyZW1lbnQ6CiAgICAgICAgICBhbW91bnQgPSAwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgbiA9IGNsYW1wKG4gKyBhbW91bnQsIDAsIDAuOTk0KTsKICAgICAgcmV0dXJuIE5Qcm9ncmVzcy5zZXQobik7CiAgICB9CiAgfTsKCiAgTlByb2dyZXNzLnRyaWNrbGUgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiBOUHJvZ3Jlc3MuaW5jKCk7CiAgfTsKCiAgLyoqCiAgICogV2FpdHMgZm9yIGFsbCBzdXBwbGllZCBqUXVlcnkgcHJvbWlzZXMgYW5kCiAgICogaW5jcmVhc2VzIHRoZSBwcm9ncmVzcyBhcyB0aGUgcHJvbWlzZXMgcmVzb2x2ZS4KICAgKgogICAqIEBwYXJhbSAkcHJvbWlzZSBqUVVlcnkgUHJvbWlzZQogICAqLwogIChmdW5jdGlvbigpIHsKICAgIHZhciBpbml0aWFsID0gMCwgY3VycmVudCA9IDA7CgogICAgTlByb2dyZXNzLnByb21pc2UgPSBmdW5jdGlvbigkcHJvbWlzZSkgewogICAgICBpZiAoISRwcm9taXNlIHx8ICRwcm9taXNlLnN0YXRlKCkgPT09ICJyZXNvbHZlZCIpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnQgPT09IDApIHsKICAgICAgICBOUHJvZ3Jlc3Muc3RhcnQoKTsKICAgICAgfQoKICAgICAgaW5pdGlhbCsrOwogICAgICBjdXJyZW50Kys7CgogICAgICAkcHJvbWlzZS5hbHdheXMoZnVuY3Rpb24oKSB7CiAgICAgICAgY3VycmVudC0tOwogICAgICAgIGlmIChjdXJyZW50ID09PSAwKSB7CiAgICAgICAgICAgIGluaXRpYWwgPSAwOwogICAgICAgICAgICBOUHJvZ3Jlc3MuZG9uZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIE5Qcm9ncmVzcy5zZXQoKGluaXRpYWwgLSBjdXJyZW50KSAvIGluaXRpYWwpOwogICAgICAgIH0KICAgICAgfSk7CgogICAgICByZXR1cm4gdGhpczsKICAgIH07CgogIH0pKCk7CgogIC8qKgogICAqIChJbnRlcm5hbCkgcmVuZGVycyB0aGUgcHJvZ3Jlc3MgYmFyIG1hcmt1cCBiYXNlZCBvbiB0aGUgYHRlbXBsYXRlYAogICAqIHNldHRpbmcuCiAgICovCgogIE5Qcm9ncmVzcy5yZW5kZXIgPSBmdW5jdGlvbihmcm9tU3RhcnQpIHsKICAgIGlmIChOUHJvZ3Jlc3MuaXNSZW5kZXJlZCgpKSByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25wcm9ncmVzcycpOwoKICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ25wcm9ncmVzcy1idXN5Jyk7CgogICAgdmFyIHByb2dyZXNzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBwcm9ncmVzcy5pZCA9ICducHJvZ3Jlc3MnOwogICAgcHJvZ3Jlc3MuaW5uZXJIVE1MID0gU2V0dGluZ3MudGVtcGxhdGU7CgogICAgdmFyIGJhciAgICAgID0gcHJvZ3Jlc3MucXVlcnlTZWxlY3RvcihTZXR0aW5ncy5iYXJTZWxlY3RvciksCiAgICAgICAgcGVyYyAgICAgPSBmcm9tU3RhcnQgPyAnLTEwMCcgOiB0b0JhclBlcmMoTlByb2dyZXNzLnN0YXR1cyB8fCAwKSwKICAgICAgICBwYXJlbnQgICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoU2V0dGluZ3MucGFyZW50KSwKICAgICAgICBzcGlubmVyOwoKICAgIGNzcyhiYXIsIHsKICAgICAgdHJhbnNpdGlvbjogJ2FsbCAwIGxpbmVhcicsCiAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKCcgKyBwZXJjICsgJyUsMCwwKScKICAgIH0pOwoKICAgIGlmICghU2V0dGluZ3Muc2hvd1NwaW5uZXIpIHsKICAgICAgc3Bpbm5lciA9IHByb2dyZXNzLnF1ZXJ5U2VsZWN0b3IoU2V0dGluZ3Muc3Bpbm5lclNlbGVjdG9yKTsKICAgICAgc3Bpbm5lciAmJiByZW1vdmVFbGVtZW50KHNwaW5uZXIpOwogICAgfQoKICAgIGlmIChwYXJlbnQgIT0gZG9jdW1lbnQuYm9keSkgewogICAgICBhZGRDbGFzcyhwYXJlbnQsICducHJvZ3Jlc3MtY3VzdG9tLXBhcmVudCcpOwogICAgfQoKICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9ncmVzcyk7CiAgICByZXR1cm4gcHJvZ3Jlc3M7CiAgfTsKCiAgLyoqCiAgICogUmVtb3ZlcyB0aGUgZWxlbWVudC4gT3Bwb3NpdGUgb2YgcmVuZGVyKCkuCiAgICovCgogIE5Qcm9ncmVzcy5yZW1vdmUgPSBmdW5jdGlvbigpIHsKICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ25wcm9ncmVzcy1idXN5Jyk7CiAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFNldHRpbmdzLnBhcmVudCksICducHJvZ3Jlc3MtY3VzdG9tLXBhcmVudCcpOwogICAgdmFyIHByb2dyZXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25wcm9ncmVzcycpOwogICAgcHJvZ3Jlc3MgJiYgcmVtb3ZlRWxlbWVudChwcm9ncmVzcyk7CiAgfTsKCiAgLyoqCiAgICogQ2hlY2tzIGlmIHRoZSBwcm9ncmVzcyBiYXIgaXMgcmVuZGVyZWQuCiAgICovCgogIE5Qcm9ncmVzcy5pc1JlbmRlcmVkID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnByb2dyZXNzJyk7CiAgfTsKCiAgLyoqCiAgICogRGV0ZXJtaW5lIHdoaWNoIHBvc2l0aW9uaW5nIENTUyBydWxlIHRvIHVzZS4KICAgKi8KCiAgTlByb2dyZXNzLmdldFBvc2l0aW9uaW5nQ1NTID0gZnVuY3Rpb24oKSB7CiAgICAvLyBTbmlmZiBvbiBkb2N1bWVudC5ib2R5LnN0eWxlCiAgICB2YXIgYm9keVN0eWxlID0gZG9jdW1lbnQuYm9keS5zdHlsZTsKCiAgICAvLyBTbmlmZiBwcmVmaXhlcwogICAgdmFyIHZlbmRvclByZWZpeCA9ICgnV2Via2l0VHJhbnNmb3JtJyBpbiBib2R5U3R5bGUpID8gJ1dlYmtpdCcgOgogICAgICAgICAgICAgICAgICAgICAgICgnTW96VHJhbnNmb3JtJyBpbiBib2R5U3R5bGUpID8gJ01veicgOgogICAgICAgICAgICAgICAgICAgICAgICgnbXNUcmFuc2Zvcm0nIGluIGJvZHlTdHlsZSkgPyAnbXMnIDoKICAgICAgICAgICAgICAgICAgICAgICAoJ09UcmFuc2Zvcm0nIGluIGJvZHlTdHlsZSkgPyAnTycgOiAnJzsKCiAgICBpZiAodmVuZG9yUHJlZml4ICsgJ1BlcnNwZWN0aXZlJyBpbiBib2R5U3R5bGUpIHsKICAgICAgLy8gTW9kZXJuIGJyb3dzZXJzIHdpdGggM0Qgc3VwcG9ydCwgZS5nLiBXZWJraXQsIElFMTAKICAgICAgcmV0dXJuICd0cmFuc2xhdGUzZCc7CiAgICB9IGVsc2UgaWYgKHZlbmRvclByZWZpeCArICdUcmFuc2Zvcm0nIGluIGJvZHlTdHlsZSkgewogICAgICAvLyBCcm93c2VycyB3aXRob3V0IDNEIHN1cHBvcnQsIGUuZy4gSUU5CiAgICAgIHJldHVybiAndHJhbnNsYXRlJzsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEJyb3dzZXJzIHdpdGhvdXQgdHJhbnNsYXRlKCkgc3VwcG9ydCwgZS5nLiBJRTctOAogICAgICByZXR1cm4gJ21hcmdpbic7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogSGVscGVycwogICAqLwoKICBmdW5jdGlvbiBjbGFtcChuLCBtaW4sIG1heCkgewogICAgaWYgKG4gPCBtaW4pIHJldHVybiBtaW47CiAgICBpZiAobiA+IG1heCkgcmV0dXJuIG1heDsKICAgIHJldHVybiBuOwogIH0KCiAgLyoqCiAgICogKEludGVybmFsKSBjb252ZXJ0cyBhIHBlcmNlbnRhZ2UgKGAwLi4xYCkgdG8gYSBiYXIgdHJhbnNsYXRlWAogICAqIHBlcmNlbnRhZ2UgKGAtMTAwJS4uMCVgKS4KICAgKi8KCiAgZnVuY3Rpb24gdG9CYXJQZXJjKG4pIHsKICAgIHJldHVybiAoLTEgKyBuKSAqIDEwMDsKICB9CgoKICAvKioKICAgKiAoSW50ZXJuYWwpIHJldHVybnMgdGhlIGNvcnJlY3QgQ1NTIGZvciBjaGFuZ2luZyB0aGUgYmFyJ3MKICAgKiBwb3NpdGlvbiBnaXZlbiBhbiBuIHBlcmNlbnRhZ2UsIGFuZCBzcGVlZCBhbmQgZWFzZSBmcm9tIFNldHRpbmdzCiAgICovCgogIGZ1bmN0aW9uIGJhclBvc2l0aW9uQ1NTKG4sIHNwZWVkLCBlYXNlKSB7CiAgICB2YXIgYmFyQ1NTOwoKICAgIGlmIChTZXR0aW5ncy5wb3NpdGlvblVzaW5nID09PSAndHJhbnNsYXRlM2QnKSB7CiAgICAgIGJhckNTUyA9IHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoJyt0b0JhclBlcmMobikrJyUsMCwwKScgfTsKICAgIH0gZWxzZSBpZiAoU2V0dGluZ3MucG9zaXRpb25Vc2luZyA9PT0gJ3RyYW5zbGF0ZScpIHsKICAgICAgYmFyQ1NTID0geyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoJyt0b0JhclBlcmMobikrJyUsMCknIH07CiAgICB9IGVsc2UgewogICAgICBiYXJDU1MgPSB7ICdtYXJnaW4tbGVmdCc6IHRvQmFyUGVyYyhuKSsnJScgfTsKICAgIH0KCiAgICBiYXJDU1MudHJhbnNpdGlvbiA9ICdhbGwgJytzcGVlZCsnbXMgJytlYXNlOwoKICAgIHJldHVybiBiYXJDU1M7CiAgfQoKICAvKioKICAgKiAoSW50ZXJuYWwpIFF1ZXVlcyBhIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkLgogICAqLwoKICB2YXIgcXVldWUgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgcGVuZGluZyA9IFtdOwoKICAgIGZ1bmN0aW9uIG5leHQoKSB7CiAgICAgIHZhciBmbiA9IHBlbmRpbmcuc2hpZnQoKTsKICAgICAgaWYgKGZuKSB7CiAgICAgICAgZm4obmV4dCk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oZm4pIHsKICAgICAgcGVuZGluZy5wdXNoKGZuKTsKICAgICAgaWYgKHBlbmRpbmcubGVuZ3RoID09IDEpIG5leHQoKTsKICAgIH07CiAgfSkoKTsKCiAgLyoqCiAgICogKEludGVybmFsKSBBcHBsaWVzIGNzcyBwcm9wZXJ0aWVzIHRvIGFuIGVsZW1lbnQsIHNpbWlsYXIgdG8gdGhlIGpRdWVyeQogICAqIGNzcyBtZXRob2QuCiAgICoKICAgKiBXaGlsZSB0aGlzIGhlbHBlciBkb2VzIGFzc2lzdCB3aXRoIHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcywgaXQKICAgKiBkb2VzIG5vdCBwZXJmb3JtIGFueSBtYW5pcHVsYXRpb24gb2YgdmFsdWVzIHByaW9yIHRvIHNldHRpbmcgc3R5bGVzLgogICAqLwoKICB2YXIgY3NzID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGNzc1ByZWZpeGVzID0gWyAnV2Via2l0JywgJ08nLCAnTW96JywgJ21zJyBdLAogICAgICAgIGNzc1Byb3BzICAgID0ge307CgogICAgZnVuY3Rpb24gY2FtZWxDYXNlKHN0cmluZykgewogICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL14tbXMtLywgJ21zLScpLnJlcGxhY2UoLy0oW1xkYS16XSkvZ2ksIGZ1bmN0aW9uKG1hdGNoLCBsZXR0ZXIpIHsKICAgICAgICByZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7CiAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFZlbmRvclByb3AobmFtZSkgewogICAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5ib2R5LnN0eWxlOwogICAgICBpZiAobmFtZSBpbiBzdHlsZSkgcmV0dXJuIG5hbWU7CgogICAgICB2YXIgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aCwKICAgICAgICAgIGNhcE5hbWUgPSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSwKICAgICAgICAgIHZlbmRvck5hbWU7CiAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICB2ZW5kb3JOYW1lID0gY3NzUHJlZml4ZXNbaV0gKyBjYXBOYW1lOwogICAgICAgIGlmICh2ZW5kb3JOYW1lIGluIHN0eWxlKSByZXR1cm4gdmVuZG9yTmFtZTsKICAgICAgfQoKICAgICAgcmV0dXJuIG5hbWU7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U3R5bGVQcm9wKG5hbWUpIHsKICAgICAgbmFtZSA9IGNhbWVsQ2FzZShuYW1lKTsKICAgICAgcmV0dXJuIGNzc1Byb3BzW25hbWVdIHx8IChjc3NQcm9wc1tuYW1lXSA9IGdldFZlbmRvclByb3AobmFtZSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGFwcGx5Q3NzKGVsZW1lbnQsIHByb3AsIHZhbHVlKSB7CiAgICAgIHByb3AgPSBnZXRTdHlsZVByb3AocHJvcCk7CiAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcF0gPSB2YWx1ZTsKICAgIH0KCiAgICByZXR1cm4gZnVuY3Rpb24oZWxlbWVudCwgcHJvcGVydGllcykgewogICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cywKICAgICAgICAgIHByb3AsCiAgICAgICAgICB2YWx1ZTsKCiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7CiAgICAgICAgZm9yIChwcm9wIGluIHByb3BlcnRpZXMpIHsKICAgICAgICAgIHZhbHVlID0gcHJvcGVydGllc1twcm9wXTsKICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocHJvcCkpIGFwcGx5Q3NzKGVsZW1lbnQsIHByb3AsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYXBwbHlDc3MoZWxlbWVudCwgYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgIH0KICAgIH0KICB9KSgpOwoKICAvKioKICAgKiAoSW50ZXJuYWwpIERldGVybWluZXMgaWYgYW4gZWxlbWVudCBvciBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBjbGFzcyBuYW1lcyBjb250YWlucyBhIGNsYXNzIG5hbWUuCiAgICovCgogIGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIG5hbWUpIHsKICAgIHZhciBsaXN0ID0gdHlwZW9mIGVsZW1lbnQgPT0gJ3N0cmluZycgPyBlbGVtZW50IDogY2xhc3NMaXN0KGVsZW1lbnQpOwogICAgcmV0dXJuIGxpc3QuaW5kZXhPZignICcgKyBuYW1lICsgJyAnKSA+PSAwOwogIH0KCiAgLyoqCiAgICogKEludGVybmFsKSBBZGRzIGEgY2xhc3MgdG8gYW4gZWxlbWVudC4KICAgKi8KCiAgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgbmFtZSkgewogICAgdmFyIG9sZExpc3QgPSBjbGFzc0xpc3QoZWxlbWVudCksCiAgICAgICAgbmV3TGlzdCA9IG9sZExpc3QgKyBuYW1lOwoKICAgIGlmIChoYXNDbGFzcyhvbGRMaXN0LCBuYW1lKSkgcmV0dXJuOwoKICAgIC8vIFRyaW0gdGhlIG9wZW5pbmcgc3BhY2UuCiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IG5ld0xpc3Quc3Vic3RyaW5nKDEpOwogIH0KCiAgLyoqCiAgICogKEludGVybmFsKSBSZW1vdmVzIGEgY2xhc3MgZnJvbSBhbiBlbGVtZW50LgogICAqLwoKICBmdW5jdGlvbiByZW1vdmVDbGFzcyhlbGVtZW50LCBuYW1lKSB7CiAgICB2YXIgb2xkTGlzdCA9IGNsYXNzTGlzdChlbGVtZW50KSwKICAgICAgICBuZXdMaXN0OwoKICAgIGlmICghaGFzQ2xhc3MoZWxlbWVudCwgbmFtZSkpIHJldHVybjsKCiAgICAvLyBSZXBsYWNlIHRoZSBjbGFzcyBuYW1lLgogICAgbmV3TGlzdCA9IG9sZExpc3QucmVwbGFjZSgnICcgKyBuYW1lICsgJyAnLCAnICcpOwoKICAgIC8vIFRyaW0gdGhlIG9wZW5pbmcgYW5kIGNsb3Npbmcgc3BhY2VzLgogICAgZWxlbWVudC5jbGFzc05hbWUgPSBuZXdMaXN0LnN1YnN0cmluZygxLCBuZXdMaXN0Lmxlbmd0aCAtIDEpOwogIH0KCiAgLyoqCiAgICogKEludGVybmFsKSBHZXRzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNsYXNzIG5hbWVzIG9uIHRoZSBlbGVtZW50LgogICAqIFRoZSBsaXN0IGlzIHdyYXBwZWQgd2l0aCBhIHNpbmdsZSBzcGFjZSBvbiBlYWNoIGVuZCB0byBmYWNpbGl0YXRlIGZpbmRpbmcKICAgKiBtYXRjaGVzIHdpdGhpbiB0aGUgbGlzdC4KICAgKi8KCiAgZnVuY3Rpb24gY2xhc3NMaXN0KGVsZW1lbnQpIHsKICAgIHJldHVybiAoJyAnICsgKGVsZW1lbnQgJiYgZWxlbWVudC5jbGFzc05hbWUgfHwgJycpICsgJyAnKS5yZXBsYWNlKC9ccysvZ2ksICcgJyk7CiAgfQoKICAvKioKICAgKiAoSW50ZXJuYWwpIFJlbW92ZXMgYW4gZWxlbWVudCBmcm9tIHRoZSBET00uCiAgICovCgogIGZ1bmN0aW9uIHJlbW92ZUVsZW1lbnQoZWxlbWVudCkgewogICAgZWxlbWVudCAmJiBlbGVtZW50LnBhcmVudE5vZGUgJiYgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogIH0KCiAgcmV0dXJuIE5Qcm9ncmVzczsKfSk7Cg=="}},"time_used":189,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":189,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/fullcalendar/fullcalendar.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.354Z","timestamp":1785150870354,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/fullcalendar/fullcalendar.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-1e7a7\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=AtIQjGSPi1olz80iOequj9%2Fm%2B%2B%2FqiFpw8r5DhBn4TYaEsWaGdzHXWyGhveMBKQF6xhP0FoEy3je3T%2BSB%2F6riBRGks85EqlfE%2BZ1WqKL7uKFePQAUs9TgnRyjdw%3D%3D\"}]}\r\ncf-ray: a21b388bbbdd56a2-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"]}],"data":{"size":124839,"size_decoded":36506,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (32007)","md5":"a53fe55bda201b764da81aa7070e34fa","sha1":"8899940f6e50e29fc20e344268a1b6eaee657a76","sha256":"8eb96e11ab6f1e8af4d9e368eb4af250f021191697d15ab0d2f17dc993906002","sha512":"d3b8670725217d4e8b3a944fafaea9572bc33330b961b1b4668bc9cbdb06ee3445bb2ca8993812f4dfdc56c99be77e254f23f9b4d6e7280cb34c384052890bbe","ssdeep":"1536:Qei9iYVeIi2m1ZbWhu48/CgGgTSquhvSl4D15n3UZpfbYsd:GBVeIi2m1FWMT2S","tlshash":"b4c3c799b281741646ef61b5c22f260a6237158a680f449cba7dfdd7ac78d2c113bf3c","first_seen":"2023-03-11T11:22:48Z","last_seen":"2026-07-27T11:25:33.560843Z","times_seen":41,"resource_available":true,"data":"LyohCiAqIEZ1bGxDYWxlbmRhciB2My4wLjEKICogRG9jcyAmIExpY2Vuc2U6IGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE2IEFkYW0gU2hhdwogKi8KIWZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPXQocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOnQoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gcSh0LHF0KX1mdW5jdGlvbiBpKHQsZSl7ZS5sZWZ0JiZ0LmNzcyh7ImJvcmRlci1sZWZ0LXdpZHRoIjoxLCJtYXJnaW4tbGVmdCI6ZS5sZWZ0LTF9KSxlLnJpZ2h0JiZ0LmNzcyh7ImJvcmRlci1yaWdodC13aWR0aCI6MSwibWFyZ2luLXJpZ2h0IjplLnJpZ2h0LTF9KX1mdW5jdGlvbiByKHQpe3QuY3NzKHsibWFyZ2luLWxlZnQiOiIiLCJtYXJnaW4tcmlnaHQiOiIiLCJib3JkZXItbGVmdC13aWR0aCI6IiIsImJvcmRlci1yaWdodC13aWR0aCI6IiJ9KX1mdW5jdGlvbiBzKCl7dCgiYm9keSIpLmFkZENsYXNzKCJmYy1ub3QtYWxsb3dlZCIpfWZ1bmN0aW9uIG8oKXt0KCJib2R5IikucmVtb3ZlQ2xhc3MoImZjLW5vdC1hbGxvd2VkIil9ZnVuY3Rpb24gbChlLG4saSl7dmFyIHI9TWF0aC5mbG9vcihuL2UubGVuZ3RoKSxzPU1hdGguZmxvb3Iobi1yKihlLmxlbmd0aC0xKSksbz1bXSxsPVtdLHU9W10sZD0wO2EoZSksZS5lYWNoKGZ1bmN0aW9uKG4saSl7dmFyIGE9bj09PWUubGVuZ3RoLTE/czpyLGM9dChpKS5vdXRlckhlaWdodCghMCk7YzxhPyhvLnB1c2goaSksbC5wdXNoKGMpLHUucHVzaCh0KGkpLmhlaWdodCgpKSk6ZCs9Y30pLGkmJihuLT1kLHI9TWF0aC5mbG9vcihuL28ubGVuZ3RoKSxzPU1hdGguZmxvb3Iobi1yKihvLmxlbmd0aC0xKSkpLHQobykuZWFjaChmdW5jdGlvbihlLG4pe3ZhciBpPWU9PT1vLmxlbmd0aC0xP3M6cixhPWxbZV0sZD11W2VdLGM9aS0oYS1kKTthPGkmJnQobikuaGVpZ2h0KGMpfSl9ZnVuY3Rpb24gYSh0KXt0LmhlaWdodCgiIil9ZnVuY3Rpb24gdShlKXt2YXIgbj0wO3JldHVybiBlLmZpbmQoIj4gKiIpLmVhY2goZnVuY3Rpb24oZSxpKXt2YXIgcj10KGkpLm91dGVyV2lkdGgoKTtyPm4mJihuPXIpfSksbisrLGUud2lkdGgobiksbn1mdW5jdGlvbiBkKHQsZSl7dmFyIG4saT10LmFkZChlKTtyZXR1cm4gaS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsbGVmdDotMX0pLG49dC5vdXRlckhlaWdodCgpLWUub3V0ZXJIZWlnaHQoKSxpLmNzcyh7cG9zaXRpb246IiIsbGVmdDoiIn0pLG59ZnVuY3Rpb24gYyhlKXt2YXIgbj1lLmNzcygicG9zaXRpb24iKSxpPWUucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuLyhhdXRvfHNjcm9sbCkvLnRlc3QoZS5jc3MoIm92ZXJmbG93IikrZS5jc3MoIm92ZXJmbG93LXkiKStlLmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1uJiZpLmxlbmd0aD9pOnQoZVswXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPXQub2Zmc2V0KCksaT1uLmxlZnQtKGU/ZS5sZWZ0OjApLHI9bi50b3AtKGU/ZS50b3A6MCk7cmV0dXJue2xlZnQ6aSxyaWdodDppK3Qub3V0ZXJXaWR0aCgpLHRvcDpyLGJvdHRvbTpyK3Qub3V0ZXJIZWlnaHQoKX19ZnVuY3Rpb24gZih0LGUpe3ZhciBuPXQub2Zmc2V0KCksaT1wKHQpLHI9bi5sZWZ0K3kodCwiYm9yZGVyLWxlZnQtd2lkdGgiKStpLmxlZnQtKGU/ZS5sZWZ0OjApLHM9bi50b3AreSh0LCJib3JkZXItdG9wLXdpZHRoIikraS50b3AtKGU/ZS50b3A6MCk7cmV0dXJue2xlZnQ6cixyaWdodDpyK3RbMF0uY2xpZW50V2lkdGgsdG9wOnMsYm90dG9tOnMrdFswXS5jbGllbnRIZWlnaHR9fWZ1bmN0aW9uIGcodCxlKXt2YXIgbj10Lm9mZnNldCgpLGk9bi5sZWZ0K3kodCwiYm9yZGVyLWxlZnQtd2lkdGgiKSt5KHQsInBhZGRpbmctbGVmdCIpLShlP2UubGVmdDowKSxyPW4udG9wK3kodCwiYm9yZGVyLXRvcC13aWR0aCIpK3kodCwicGFkZGluZy10b3AiKS0oZT9lLnRvcDowKTtyZXR1cm57bGVmdDppLHJpZ2h0OmkrdC53aWR0aCgpLHRvcDpyLGJvdHRvbTpyK3QuaGVpZ2h0KCl9fWZ1bmN0aW9uIHAodCl7dmFyIGU9dC5pbm5lcldpZHRoKCktdFswXS5jbGllbnRXaWR0aCxuPXtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206dC5pbm5lckhlaWdodCgpLXRbMF0uY2xpZW50SGVpZ2h0fTtyZXR1cm4gdigpJiYicnRsIj09dC5jc3MoImRpcmVjdGlvbiIpP24ubGVmdD1lOm4ucmlnaHQ9ZSxufWZ1bmN0aW9uIHYoKXtyZXR1cm4gbnVsbD09PVp0JiYoWnQ9bSgpKSxadH1mdW5jdGlvbiBtKCl7dmFyIGU9dCgiPGRpdj48ZGl2Lz48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOi0xZTMsbGVmdDowLGJvcmRlcjowLHBhZGRpbmc6MCxvdmVyZmxvdzoic2Nyb2xsIixkaXJlY3Rpb246InJ0bCJ9KS5hcHBlbmRUbygiYm9keSIpLG49ZS5jaGlsZHJlbigpLGk9bi5vZmZzZXQoKS5sZWZ0PmUub2Zmc2V0KCkubGVmdDtyZXR1cm4gZS5yZW1vdmUoKSxpfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LmNzcyhlKSl8fDB9ZnVuY3Rpb24gUyh0KXtyZXR1cm4gMT09dC53aGljaCYmIXQuY3RybEtleX1mdW5jdGlvbiB3KHQpe2lmKHZvaWQgMCE9PXQucGFnZVgpcmV0dXJuIHQucGFnZVg7dmFyIGU9dC5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7cmV0dXJuIGU/ZVswXS5wYWdlWDp2b2lkIDB9ZnVuY3Rpb24gRSh0KXtpZih2b2lkIDAhPT10LnBhZ2VZKXJldHVybiB0LnBhZ2VZO3ZhciBlPXQub3JpZ2luYWxFdmVudC50b3VjaGVzO3JldHVybiBlP2VbMF0ucGFnZVk6dm9pZCAwfWZ1bmN0aW9uIEQodCl7cmV0dXJuL150b3VjaC8udGVzdCh0LnR5cGUpfWZ1bmN0aW9uIGIodCl7dC5hZGRDbGFzcygiZmMtdW5zZWxlY3RhYmxlIikub24oInNlbGVjdHN0YXJ0IixDKX1mdW5jdGlvbiBDKHQpe3QucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBIKHQpe3JldHVybiEhd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0LCEwKSwhMCl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4hIXdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdCwhMCksITApfWZ1bmN0aW9uIHgodCxlKXt2YXIgbj17bGVmdDpNYXRoLm1heCh0LmxlZnQsZS5sZWZ0KSxyaWdodDpNYXRoLm1pbih0LnJpZ2h0LGUucmlnaHQpLHRvcDpNYXRoLm1heCh0LnRvcCxlLnRvcCksYm90dG9tOk1hdGgubWluKHQuYm90dG9tLGUuYm90dG9tKX07cmV0dXJuIG4ubGVmdDxuLnJpZ2h0JiZuLnRvcDxuLmJvdHRvbSYmbn1mdW5jdGlvbiBSKHQsZSl7cmV0dXJue2xlZnQ6TWF0aC5taW4oTWF0aC5tYXgodC5sZWZ0LGUubGVmdCksZS5yaWdodCksdG9wOk1hdGgubWluKE1hdGgubWF4KHQudG9wLGUudG9wKSxlLmJvdHRvbSl9fWZ1bmN0aW9uIEkodCl7cmV0dXJue2xlZnQ6KHQubGVmdCt0LnJpZ2h0KS8yLHRvcDoodC50b3ArdC5ib3R0b20pLzJ9fWZ1bmN0aW9uIGsodCxlKXtyZXR1cm57bGVmdDp0LmxlZnQtZS5sZWZ0LHRvcDp0LnRvcC1lLnRvcH19ZnVuY3Rpb24gTShlKXt2YXIgbixpLHI9W10scz1bXTtmb3IoInN0cmluZyI9PXR5cGVvZiBlP3M9ZS5zcGxpdCgvXHMqLFxzKi8pOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3M9W2VdOnQuaXNBcnJheShlKSYmKHM9ZSksbj0wO248cy5sZW5ndGg7bisrKWk9c1tuXSwic3RyaW5nIj09dHlwZW9mIGk/ci5wdXNoKCItIj09aS5jaGFyQXQoMCk/e2ZpZWxkOmkuc3Vic3RyaW5nKDEpLG9yZGVyOi0xfTp7ZmllbGQ6aSxvcmRlcjoxfSk6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJnIucHVzaCh7ZnVuYzppfSk7cmV0dXJuIHJ9ZnVuY3Rpb24gTCh0LGUsbil7dmFyIGkscjtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKWlmKHI9Qih0LGUsbltpXSkpcmV0dXJuIHI7cmV0dXJuIDB9ZnVuY3Rpb24gQih0LGUsbil7cmV0dXJuIG4uZnVuYz9uLmZ1bmModCxlKTp6KHRbbi5maWVsZF0sZVtuLmZpZWxkXSkqKG4ub3JkZXJ8fDEpfWZ1bmN0aW9uIHooZSxuKXtyZXR1cm4gZXx8bj9udWxsPT1uPy0xOm51bGw9PWU/MToic3RyaW5nIj09PXQudHlwZShlKXx8InN0cmluZyI9PT10LnR5cGUobik/U3RyaW5nKGUpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKG4pKTplLW46MH1mdW5jdGlvbiBGKHQsZSl7dmFyIG4saSxyLHMsbz10LnN0YXJ0LGw9dC5lbmQsYT1lLnN0YXJ0LHU9ZS5lbmQ7aWYobD5hJiZvPHUpcmV0dXJuIG8+PWE/KG49by5jbG9uZSgpLHI9ITApOihuPWEuY2xvbmUoKSxyPSExKSxsPD11PyhpPWwuY2xvbmUoKSxzPSEwKTooaT11LmNsb25lKCkscz0hMSkse3N0YXJ0Om4sZW5kOmksaXNTdGFydDpyLGlzRW5kOnN9fWZ1bmN0aW9uIE4odCxuKXtyZXR1cm4gZS5kdXJhdGlvbih7ZGF5czp0LmNsb25lKCkuc3RyaXBUaW1lKCkuZGlmZihuLmNsb25lKCkuc3RyaXBUaW1lKCksImRheXMiKSxtczp0LnRpbWUoKS1uLnRpbWUoKX0pfWZ1bmN0aW9uIEcodCxuKXtyZXR1cm4gZS5kdXJhdGlvbih7ZGF5czp0LmNsb25lKCkuc3RyaXBUaW1lKCkuZGlmZihuLmNsb25lKCkuc3RyaXBUaW1lKCksImRheXMiKX0pfWZ1bmN0aW9uIEEodCxuLGkpe3JldHVybiBlLmR1cmF0aW9uKE1hdGgucm91bmQodC5kaWZmKG4saSwhMCkpLGkpfWZ1bmN0aW9uIE8odCxlKXt2YXIgbixpLHI7Zm9yKG49MDtuPFh0Lmxlbmd0aCYmKGk9WHRbbl0scj1WKGksdCxlKSwhKHI+PTEmJm90KHIpKSk7bisrKTtyZXR1cm4gaX1mdW5jdGlvbiBWKHQsbixpKXtyZXR1cm4gbnVsbCE9aT9pLmRpZmYobix0LCEwKTplLmlzRHVyYXRpb24obik/bi5hcyh0KTpuLmVuZC5kaWZmKG4uc3RhcnQsdCwhMCl9ZnVuY3Rpb24gUCh0LGUsbil7dmFyIGk7cmV0dXJuIFcobik/KGUtdCkvbjooaT1uLmFzTW9udGhzKCksTWF0aC5hYnMoaSk+PTEmJm90KGkpP2UuZGlmZih0LCJtb250aHMiLCEwKS9pOmUuZGlmZih0LCJkYXlzIiwhMCkvbi5hc0RheXMoKSl9ZnVuY3Rpb24gXyh0LGUpe3ZhciBuLGk7cmV0dXJuIFcodCl8fFcoZSk/dC9lOihuPXQuYXNNb250aHMoKSxpPWUuYXNNb250aHMoKSxNYXRoLmFicyhuKT49MSYmb3QobikmJk1hdGguYWJzKGkpPj0xJiZvdChpKT9uL2k6dC5hc0RheXMoKS9lLmFzRGF5cygpKX1mdW5jdGlvbiBZKHQsbil7dmFyIGk7cmV0dXJuIFcodCk/ZS5kdXJhdGlvbih0Km4pOihpPXQuYXNNb250aHMoKSxNYXRoLmFicyhpKT49MSYmb3QoaSk/ZS5kdXJhdGlvbih7bW9udGhzOmkqbn0pOmUuZHVyYXRpb24oe2RheXM6dC5hc0RheXMoKSpufSkpfWZ1bmN0aW9uIFcodCl7cmV0dXJuIEJvb2xlYW4odC5ob3VycygpfHx0Lm1pbnV0ZXMoKXx8dC5zZWNvbmRzKCl8fHQubWlsbGlzZWNvbmRzKCkpfWZ1bmN0aW9uIGoodCl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfHx0IGluc3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiBVKHQpe3JldHVybi9eXGQrXDpcZCsoPzpcOlxkK1wuPyg/OlxkezN9KT8pPyQvLnRlc3QodCl9ZnVuY3Rpb24gcSh0LGUpe3ZhciBuLGkscixzLG8sbCxhPXt9O2lmKGUpZm9yKG49MDtuPGUubGVuZ3RoO24rKyl7Zm9yKGk9ZVtuXSxyPVtdLHM9dC5sZW5ndGgtMTtzPj0wO3MtLSlpZihvPXRbc11baV0sIm9iamVjdCI9PXR5cGVvZiBvKXIudW5zaGlmdChvKTtlbHNlIGlmKHZvaWQgMCE9PW8pe2FbaV09bzticmVha31yLmxlbmd0aCYmKGFbaV09cShyKSl9Zm9yKG49dC5sZW5ndGgtMTtuPj0wO24tLSl7bD10W25dO2ZvcihpIGluIGwpaSBpbiBhfHwoYVtpXT1sW2ldKX1yZXR1cm4gYX1mdW5jdGlvbiBaKHQpe3ZhciBlPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZS5wcm90b3R5cGU9dCxuZXcgZX1mdW5jdGlvbiAkKHQsZSl7Zm9yKHZhciBuIGluIHQpWCh0LG4pJiYoZVtuXT10W25dKX1mdW5jdGlvbiBYKHQsZSl7cmV0dXJuIEt0LmNhbGwodCxlKX1mdW5jdGlvbiBLKGUpe3JldHVybi91bmRlZmluZWR8bnVsbHxib29sZWFufG51bWJlcnxzdHJpbmcvLnRlc3QodC50eXBlKGUpKX1mdW5jdGlvbiBRKGUsbixpKXtpZih0LmlzRnVuY3Rpb24oZSkmJihlPVtlXSksZSl7dmFyIHIscztmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXM9ZVtyXS5hcHBseShuLGkpfHxzO3JldHVybiBzfX1mdW5jdGlvbiBKKCl7Zm9yKHZhciB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylpZih2b2lkIDAhPT1hcmd1bWVudHNbdF0pcmV0dXJuIGFyZ3VtZW50c1t0XX1mdW5jdGlvbiB0dCh0KXtyZXR1cm4odCsiIikucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLycvZywiJiMwMzk7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC9cbi9nLCI8YnIgLz4iKX1mdW5jdGlvbiBldCh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mLio/Oy9nLCIiKX1mdW5jdGlvbiBudChlKXt2YXIgbj1bXTtyZXR1cm4gdC5lYWNoKGUsZnVuY3Rpb24odCxlKXtudWxsIT1lJiZuLnB1c2godCsiOiIrZSl9KSxuLmpvaW4oIjsiKX1mdW5jdGlvbiBpdChlKXt2YXIgbj1bXTtyZXR1cm4gdC5lYWNoKGUsZnVuY3Rpb24odCxlKXtudWxsIT1lJiZuLnB1c2godCsnPSInK3R0KGUpKyciJyl9KSxuLmpvaW4oIiAiKX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfWZ1bmN0aW9uIHN0KHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiBvdCh0KXtyZXR1cm4gdCUxPT09MH1mdW5jdGlvbiBsdCh0LGUpe3ZhciBuPXRbZV07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBhdCh0LGUsbil7dmFyIGkscixzLG8sbCxhPWZ1bmN0aW9uKCl7dmFyIHU9K25ldyBEYXRlLW87dTxlP2k9c2V0VGltZW91dChhLGUtdSk6KGk9bnVsbCxufHwobD10LmFwcGx5KHMscikscz1yPW51bGwpKX07cmV0dXJuIGZ1bmN0aW9uKCl7cz10aGlzLHI9YXJndW1lbnRzLG89K25ldyBEYXRlO3ZhciB1PW4mJiFpO3JldHVybiBpfHwoaT1zZXRUaW1lb3V0KGEsZSkpLHUmJihsPXQuYXBwbHkocyxyKSxzPXI9bnVsbCksbH19ZnVuY3Rpb24gdXQoZSxuKXtyZXR1cm4gZSYmZS50aGVuJiYicmVzb2x2ZWQiIT09ZS5zdGF0ZSgpP24/ZS50aGVuKG4pOnZvaWQgMDp0LndoZW4obigpKX1mdW5jdGlvbiBkdChuLGkscil7dmFyIHMsbyxsLGEsdT1uWzBdLGQ9MT09bi5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgdTtyZXR1cm4gZS5pc01vbWVudCh1KXx8aih1KXx8dm9pZCAwPT09dT9hPWUuYXBwbHkobnVsbCxuKToocz0hMSxvPSExLGQ/UXQudGVzdCh1KT8odSs9Ii0wMSIsbj1bdV0scz0hMCxvPSEwKToobD1KdC5leGVjKHUpKSYmKHM9IWxbNV0sbz0hMCk6dC5pc0FycmF5KHUpJiYobz0hMCksYT1pfHxzP2UudXRjLmFwcGx5KGUsbik6ZS5hcHBseShudWxsLG4pLHM/KGEuX2FtYmlnVGltZT0hMCxhLl9hbWJpZ1pvbmU9ITApOnImJihvP2EuX2FtYmlnWm9uZT0hMDpkJiZhLnV0Y09mZnNldCh1KSkpLGEuX2Z1bGxDYWxlbmRhcj0hMCxhfWZ1bmN0aW9uIGN0KHQsZSl7cmV0dXJuIGVlLmZvcm1hdC5jYWxsKHQsZSl9ZnVuY3Rpb24gaHQodCxlKXtyZXR1cm4gZnQodCx5dChlKSl9ZnVuY3Rpb24gZnQodCxlKXt2YXIgbixpPSIiO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaSs9Z3QodCxlW25dKTtyZXR1cm4gaX1mdW5jdGlvbiBndCh0LGUpe3ZhciBuLGk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6KG49ZS50b2tlbik/aWVbbl0/aWVbbl0odCk6Y3QodCxuKTplLm1heWJlJiYoaT1mdCh0LGUubWF5YmUpLGkubWF0Y2goL1sxLTldLykpP2k6IiJ9ZnVuY3Rpb24gcHQodCxlLG4saSxyKXt2YXIgcztyZXR1cm4gdD1qdC5tb21lbnQucGFyc2Vab25lKHQpLGU9anQubW9tZW50LnBhcnNlWm9uZShlKSxzPXQubG9jYWxlRGF0YSgpLG49cy5sb25nRGF0ZUZvcm1hdChuKXx8bixpPWl8fCIgLSAiLHZ0KHQsZSx5dChuKSxpLHIpfWZ1bmN0aW9uIHZ0KHQsZSxuLGkscil7dmFyIHMsbyxsLGEsdT10LmNsb25lKCkuc3RyaXBab25lKCksZD1lLmNsb25lKCkuc3RyaXBab25lKCksYz0iIixoPSIiLGY9IiIsZz0iIixwPSIiO2ZvcihvPTA7bzxuLmxlbmd0aCYmKHM9bXQodCxlLHUsZCxuW29dKSxzIT09ITEpO28rKyljKz1zO2ZvcihsPW4ubGVuZ3RoLTE7bD5vJiYocz1tdCh0LGUsdSxkLG5bbF0pLHMhPT0hMSk7bC0tKWg9cytoO2ZvcihhPW87YTw9bDthKyspZis9Z3QodCxuW2FdKSxnKz1ndChlLG5bYV0pO3JldHVybihmfHxnKSYmKHA9cj9nK2krZjpmK2krZyksYytwK2h9ZnVuY3Rpb24gbXQodCxlLG4saSxyKXt2YXIgcyxvO3JldHVybiJzdHJpbmciPT10eXBlb2Ygcj9yOiEhKChzPXIudG9rZW4pJiYobz1yZVtzLmNoYXJBdCgwKV0sbyYmbi5pc1NhbWUoaSxvKSkpJiZjdCh0LHMpfWZ1bmN0aW9uIHl0KHQpe3JldHVybiB0IGluIHNlP3NlW3RdOnNlW3RdPVN0KHQpfWZ1bmN0aW9uIFN0KHQpe2Zvcih2YXIgZSxuPVtdLGk9L1xbKFteXF1dKilcXXxcKChbXlwpXSopXCl8KExUU3xMVHwoXHcpXDQqbz8pfChbXlx3XFtcKF0rKS9nO2U9aS5leGVjKHQpOyllWzFdP24ucHVzaChlWzFdKTplWzJdP24ucHVzaCh7bWF5YmU6U3QoZVsyXSl9KTplWzNdP24ucHVzaCh7dG9rZW46ZVszXX0pOmVbNV0mJm4ucHVzaChlWzVdKTtyZXR1cm4gbn1mdW5jdGlvbiB3dCgpe31mdW5jdGlvbiBFdCh0LGUpe3ZhciBuO3JldHVybiBYKGUsImNvbnN0cnVjdG9yIikmJihuPWUuY29uc3RydWN0b3IpLCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1lLmNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxuLnByb3RvdHlwZT1aKHQucHJvdG90eXBlKSwkKGUsbi5wcm90b3R5cGUpLCQodCxuKSxufWZ1bmN0aW9uIER0KHQsZSl7JChlLHQucHJvdG90eXBlKX1mdW5jdGlvbiBidCh0LGUpe3JldHVybiF0JiYhZXx8ISghdHx8IWUpJiYodC5jb21wb25lbnQ9PT1lLmNvbXBvbmVudCYmQ3QodCxlKSYmQ3QoZSx0KSl9ZnVuY3Rpb24gQ3QodCxlKXtmb3IodmFyIG4gaW4gdClpZighL14oY29tcG9uZW50fGxlZnR8cmlnaHR8dG9wfGJvdHRvbSkkLy50ZXN0KG4pJiZ0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBIdCh0KXtyZXR1cm57c3RhcnQ6dC5zdGFydC5jbG9uZSgpLGVuZDp0LmVuZD90LmVuZC5jbG9uZSgpOm51bGwsYWxsRGF5OnQuYWxsRGF5fX1mdW5jdGlvbiBUdCh0KXt2YXIgZT1SdCh0KTtyZXR1cm4iYmFja2dyb3VuZCI9PT1lfHwiaW52ZXJzZS1iYWNrZ3JvdW5kIj09PWV9ZnVuY3Rpb24geHQodCl7cmV0dXJuImludmVyc2UtYmFja2dyb3VuZCI9PT1SdCh0KX1mdW5jdGlvbiBSdCh0KXtyZXR1cm4gSigodC5zb3VyY2V8fHt9KS5yZW5kZXJpbmcsdC5yZW5kZXJpbmcpfWZ1bmN0aW9uIEl0KHQpe3ZhciBlLG4saT17fTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW49dFtlXSwoaVtuLl9pZF18fChpW24uX2lkXT1bXSkpLnB1c2gobik7cmV0dXJuIGl9ZnVuY3Rpb24ga3QodCxlKXtyZXR1cm4gdC5zdGFydC1lLnN0YXJ0fWZ1bmN0aW9uIE10KG4pe3ZhciBpLHIscyxvLGw9anQuZGF0YUF0dHJQcmVmaXg7cmV0dXJuIGwmJihsKz0iLSIpLGk9bi5kYXRhKGwrImV2ZW50Iil8fG51bGwsaSYmKGk9Im9iamVjdCI9PXR5cGVvZiBpP3QuZXh0ZW5kKHt9LGkpOnt9LHI9aS5zdGFydCxudWxsPT1yJiYocj1pLnRpbWUpLHM9aS5kdXJhdGlvbixvPWkuc3RpY2ssZGVsZXRlIGkuc3RhcnQsZGVsZXRlIGkudGltZSxkZWxldGUgaS5kdXJhdGlvbixkZWxldGUgaS5zdGljayksbnVsbD09ciYmKHI9bi5kYXRhKGwrInN0YXJ0IikpLG51bGw9PXImJihyPW4uZGF0YShsKyJ0aW1lIikpLG51bGw9PXMmJihzPW4uZGF0YShsKyJkdXJhdGlvbiIpKSxudWxsPT1vJiYobz1uLmRhdGEobCsic3RpY2siKSkscj1udWxsIT1yP2UuZHVyYXRpb24ocik6bnVsbCxzPW51bGwhPXM/ZS5kdXJhdGlvbihzKTpudWxsLG89Qm9vbGVhbihvKSx7ZXZlbnRQcm9wczppLHN0YXJ0VGltZTpyLGR1cmF0aW9uOnMsc3RpY2s6b319ZnVuY3Rpb24gTHQodCxlKXt2YXIgbixpO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaWYoaT1lW25dLGkubGVmdENvbDw9dC5yaWdodENvbCYmaS5yaWdodENvbD49dC5sZWZ0Q29sKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEJ0KHQsZSl7cmV0dXJuIHQubGVmdENvbC1lLmxlZnRDb2x9ZnVuY3Rpb24genQodCl7dmFyIGUsbixpLHI9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl7Zm9yKG49dFtlXSxpPTA7aTxyLmxlbmd0aCYmR3QobixyW2ldKS5sZW5ndGg7aSsrKTtuLmxldmVsPWksKHJbaV18fChyW2ldPVtdKSkucHVzaChuKX1yZXR1cm4gcn1mdW5jdGlvbiBGdCh0KXt2YXIgZSxuLGkscixzO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspZm9yKG49dFtlXSxpPTA7aTxuLmxlbmd0aDtpKyspZm9yKHI9bltpXSxyLmZvcndhcmRTZWdzPVtdLHM9ZSsxO3M8dC5sZW5ndGg7cysrKUd0KHIsdFtzXSxyLmZvcndhcmRTZWdzKX1mdW5jdGlvbiBOdCh0KXt2YXIgZSxuLGk9dC5mb3J3YXJkU2VncyxyPTA7aWYodm9pZCAwPT09dC5mb3J3YXJkUHJlc3N1cmUpe2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspbj1pW2VdLE50KG4pLHI9TWF0aC5tYXgociwxK24uZm9yd2FyZFByZXNzdXJlKTt0LmZvcndhcmRQcmVzc3VyZT1yfX1mdW5jdGlvbiBHdCh0LGUsbil7bj1ufHxbXTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylBdCh0LGVbaV0pJiZuLnB1c2goZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gQXQodCxlKXtyZXR1cm4gdC5ib3R0b20+ZS50b3AmJnQudG9wPGUuYm90dG9tfWZ1bmN0aW9uIE90KG4saSl7ZnVuY3Rpb24gcih0KXt0Ll9sb2NhbGU9VX1mdW5jdGlvbiBzKCl7JD91KCkmJihnKCksZCgpKTpvKCl9ZnVuY3Rpb24gbygpe24uYWRkQ2xhc3MoImZjIiksbi5vbigiY2xpY2suZmMiLCJhW2RhdGEtZ290b10iLGZ1bmN0aW9uKGUpe3ZhciBuPXQodGhpcyksaT1uLmRhdGEoImdvdG8iKSxyPWoubW9tZW50KGkuZGF0ZSkscz1pLnR5cGUsbz1LLm9wdCgibmF2TGluayIrcnQocykrIkNsaWNrIik7ImZ1bmN0aW9uIj09dHlwZW9mIG8/byhyLGUpOigic3RyaW5nIj09dHlwZW9mIG8mJihzPW8pLE4ocixzKSl9KSxqLmJpbmRPcHRpb24oInRoZW1lIixmdW5jdGlvbih0KXtYPXQ/InVpIjoiZmMiLG4udG9nZ2xlQ2xhc3MoInVpLXdpZGdldCIsdCksbi50b2dnbGVDbGFzcygiZmMtdW50aGVtZWQiLCF0KX0pLGouYmluZE9wdGlvbnMoWyJpc1JUTCIsImxvY2FsZSJdLGZ1bmN0aW9uKHQpe24udG9nZ2xlQ2xhc3MoImZjLWx0ciIsIXQpLG4udG9nZ2xlQ2xhc3MoImZjLXJ0bCIsdCl9KSwkPXQoIjxkaXYgY2xhc3M9J2ZjLXZpZXctY29udGFpbmVyJy8+IikucHJlcGVuZFRvKG4pLHE9ai5oZWFkZXI9bmV3IF90KGopLGwoKSxkKGoub3B0aW9ucy5kZWZhdWx0Vmlldyksai5vcHRpb25zLmhhbmRsZVdpbmRvd1Jlc2l6ZSYmKEo9YXQobSxqLm9wdGlvbnMud2luZG93UmVzaXplRGVsYXkpLHQod2luZG93KS5yZXNpemUoSikpfWZ1bmN0aW9uIGwoKXtxLnJlbmRlcigpLHEuZWwmJm4ucHJlcGVuZChxLmVsKX1mdW5jdGlvbiBhKCl7SyYmSy5yZW1vdmVFbGVtZW50KCkscS5yZW1vdmVFbGVtZW50KCksJC5yZW1vdmUoKSxuLnJlbW92ZUNsYXNzKCJmYyBmYy1sdHIgZmMtcnRsIGZjLXVudGhlbWVkIHVpLXdpZGdldCIpLG4ub2ZmKCIuZmMiKSxKJiZ0KHdpbmRvdykudW5iaW5kKCJyZXNpemUiLEopfWZ1bmN0aW9uIHUoKXtyZXR1cm4gbi5pcygiOnZpc2libGUiKX1mdW5jdGlvbiBkKGUsbil7bHQrKyxLJiZlJiZLLnR5cGUhPT1lJiYoQSgpLGMoKSksIUsmJmUmJihLPWoudmlldz1vdFtlXXx8KG90W2VdPWouaW5zdGFudGlhdGVWaWV3KGUpKSxLLnNldEVsZW1lbnQodCgiPGRpdiBjbGFzcz0nZmMtdmlldyBmYy0iK2UrIi12aWV3JyAvPiIpLmFwcGVuZFRvKCQpKSxxLmFjdGl2YXRlQnV0dG9uKGUpKSxLJiYodHQ9Sy5tYXNzYWdlQ3VycmVudERhdGUodHQpLEsuZGlzcGxheWluZyYmdHQ+PUsuaW50ZXJ2YWxTdGFydCYmdHQ8Sy5pbnRlcnZhbEVuZHx8dSgpJiYoSy5kaXNwbGF5KHR0LG4pLE8oKSxIKCksVCgpLEUoKSkpLE8oKSxsdC0tfWZ1bmN0aW9uIGMoKXtxLmRlYWN0aXZhdGVCdXR0b24oSy50eXBlKSxLLnJlbW92ZUVsZW1lbnQoKSxLPWoudmlldz1udWxsfWZ1bmN0aW9uIGgoKXtsdCsrLEEoKTt2YXIgdD1LLnR5cGUsZT1LLnF1ZXJ5U2Nyb2xsKCk7YygpLGQodCxlKSxPKCksbHQtLX1mdW5jdGlvbiBmKHQpe2lmKHUoKSlyZXR1cm4gdCYmcCgpLGx0KyssSy51cGRhdGVTaXplKCEwKSxsdC0tLCEwfWZ1bmN0aW9uIGcoKXt1KCkmJnAoKX1mdW5jdGlvbiBwKCl7dmFyIHQ9ai5vcHRpb25zLmNvbnRlbnRIZWlnaHQsZT1qLm9wdGlvbnMuaGVpZ2h0O1E9Im51bWJlciI9PXR5cGVvZiB0P3Q6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCgpOiJudW1iZXIiPT10eXBlb2YgZT9lLXYoKToiZnVuY3Rpb24iPT10eXBlb2YgZT9lKCktdigpOiJwYXJlbnQiPT09ZT9uLnBhcmVudCgpLmhlaWdodCgpLXYoKTpNYXRoLnJvdW5kKCQud2lkdGgoKS9NYXRoLm1heChqLm9wdGlvbnMuYXNwZWN0UmF0aW8sLjUpKX1mdW5jdGlvbiB2KCl7cmV0dXJuIHEuZWw/cS5lbC5vdXRlckhlaWdodCghMCk6MH1mdW5jdGlvbiBtKHQpeyFsdCYmdC50YXJnZXQ9PT13aW5kb3cmJksuc3RhcnQmJmYoITApJiZLLnRyaWdnZXIoIndpbmRvd1Jlc2l6ZSIsc3QpfWZ1bmN0aW9uIHkoKXtEKCl9ZnVuY3Rpb24gUyh0KXtpdChqLmdldEV2ZW50U291cmNlc0J5TWF0Y2hBcnJheSh0KSl9ZnVuY3Rpb24gdygpe3UoKSYmKEEoKSxLLmRpc3BsYXlFdmVudHModXQpLE8oKSl9ZnVuY3Rpb24gRSgpeyFqLm9wdGlvbnMubGF6eUZldGNoaW5nfHxldChLLnN0YXJ0LEsuZW5kKT9EKCk6dygpfWZ1bmN0aW9uIEQoKXtudChLLnN0YXJ0LEsuZW5kKX1mdW5jdGlvbiBiKHQpe3V0PXQsdygpfWZ1bmN0aW9uIEMoKXt3KCl9ZnVuY3Rpb24gSCgpe3EudXBkYXRlVGl0bGUoSy50aXRsZSl9ZnVuY3Rpb24gVCgpe3ZhciB0PWouZ2V0Tm93KCk7dD49Sy5pbnRlcnZhbFN0YXJ0JiZ0PEsuaW50ZXJ2YWxFbmQ/cS5kaXNhYmxlQnV0dG9uKCJ0b2RheSIpOnEuZW5hYmxlQnV0dG9uKCJ0b2RheSIpfWZ1bmN0aW9uIHgodCxlKXtLLnNlbGVjdChqLmJ1aWxkU2VsZWN0U3Bhbi5hcHBseShqLGFyZ3VtZW50cykpfWZ1bmN0aW9uIFIoKXtLJiZLLnVuc2VsZWN0KCl9ZnVuY3Rpb24gSSgpe3R0PUsuY29tcHV0ZVByZXZEYXRlKHR0KSxkKCl9ZnVuY3Rpb24gaygpe3R0PUsuY29tcHV0ZU5leHREYXRlKHR0KSxkKCl9ZnVuY3Rpb24gTSgpe3R0LmFkZCgtMSwieWVhcnMiKSxkKCl9ZnVuY3Rpb24gTCgpe3R0LmFkZCgxLCJ5ZWFycyIpLGQoKX1mdW5jdGlvbiBCKCl7dHQ9ai5nZXROb3coKSxkKCl9ZnVuY3Rpb24geih0KXt0dD1qLm1vbWVudCh0KS5zdHJpcFpvbmUoKSxkKCl9ZnVuY3Rpb24gRih0KXt0dC5hZGQoZS5kdXJhdGlvbih0KSksZCgpfWZ1bmN0aW9uIE4odCxlKXt2YXIgbjtlPWV8fCJkYXkiLG49ai5nZXRWaWV3U3BlYyhlKXx8ai5nZXRVbml0Vmlld1NwZWMoZSksdHQ9dC5jbG9uZSgpLGQobj9uLnR5cGU6bnVsbCl9ZnVuY3Rpb24gRygpe3JldHVybiBqLmFwcGx5VGltZXpvbmUodHQpfWZ1bmN0aW9uIEEoKXskLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDokLmhlaWdodCgpLG92ZXJmbG93OiJoaWRkZW4ifSl9ZnVuY3Rpb24gTygpeyQuY3NzKHt3aWR0aDoiIixoZWlnaHQ6IiIsb3ZlcmZsb3c6IiJ9KX1mdW5jdGlvbiBWKCl7cmV0dXJuIGp9ZnVuY3Rpb24gUCgpe3JldHVybiBLfWZ1bmN0aW9uIF8odCxlKXt2YXIgbjtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWUpcmV0dXJuIGoub3B0aW9uc1t0XTtuPXt9LG5bdF09ZSxZKG4pfWVsc2Uib2JqZWN0Ij09dHlwZW9mIHQmJlkodCl9ZnVuY3Rpb24gWSh0KXt2YXIgZSxuPTA7Zm9yKGUgaW4gdClqLmR5bmFtaWNPdmVycmlkZXNbZV09dFtlXTtqLnZpZXdTcGVjQ2FjaGU9e30sai5wb3B1bGF0ZU9wdGlvbnNIYXNoKCk7Zm9yKGUgaW4gdClqLnRyaWdnZXJPcHRpb25IYW5kbGVycyhlKSxuKys7aWYoMT09PW4pe2lmKCJoZWlnaHQiPT09ZXx8ImNvbnRlbnRIZWlnaHQiPT09ZXx8ImFzcGVjdFJhdGlvIj09PWUpcmV0dXJuIHZvaWQgZighMCk7aWYoImRlZmF1bHREYXRlIj09PWUpcmV0dXJuO2lmKCJidXNpbmVzc0hvdXJzIj09PWUpcmV0dXJuIHZvaWQoSyYmKEsudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCksSy5yZW5kZXJCdXNpbmVzc0hvdXJzKCkpKTtpZigidGltZXpvbmUiPT09ZSlyZXR1cm4gai5yZXpvbmVBcnJheUV2ZW50U291cmNlcygpLHZvaWQgeSgpfWwoKSxvdD17fSxoKCl9ZnVuY3Rpb24gVyh0LGUpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtpZihlPWV8fHN0LHRoaXMudHJpZ2dlcldpdGgodCxlLG4pLGoub3B0aW9uc1t0XSlyZXR1cm4gai5vcHRpb25zW3RdLmFwcGx5KGUsbil9dmFyIGo9dGhpcztqLnJlbmRlcj1zLGouZGVzdHJveT1hLGoucmVmZXRjaEV2ZW50cz15LGoucmVmZXRjaEV2ZW50U291cmNlcz1TLGoucmVwb3J0RXZlbnRzPWIsai5yZXBvcnRFdmVudENoYW5nZT1DLGoucmVyZW5kZXJFdmVudHM9dyxqLmNoYW5nZVZpZXc9ZCxqLnNlbGVjdD14LGoudW5zZWxlY3Q9UixqLnByZXY9SSxqLm5leHQ9ayxqLnByZXZZZWFyPU0sai5uZXh0WWVhcj1MLGoudG9kYXk9QixqLmdvdG9EYXRlPXosai5pbmNyZW1lbnREYXRlPUYsai56b29tVG89TixqLmdldERhdGU9RyxqLmdldENhbGVuZGFyPVYsai5nZXRWaWV3PVAsai5vcHRpb249XyxqLnRyaWdnZXI9VyxqLmR5bmFtaWNPdmVycmlkZXM9e30sai52aWV3U3BlY0NhY2hlPXt9LGoub3B0aW9uSGFuZGxlcnM9e30sai5vdmVycmlkZXM9dC5leHRlbmQoe30saSksai5wb3B1bGF0ZU9wdGlvbnNIYXNoKCk7dmFyIFU7ai5iaW5kT3B0aW9ucyhbImxvY2FsZSIsIm1vbnRoTmFtZXMiLCJtb250aE5hbWVzU2hvcnQiLCJkYXlOYW1lcyIsImRheU5hbWVzU2hvcnQiLCJmaXJzdERheSIsIndlZWtOdW1iZXJDYWxjdWxhdGlvbiJdLGZ1bmN0aW9uKHQsZSxuLGkscyxvLGwpe2lmKCJpc28iPT09bCYmKGw9IklTTyIpLFU9WihQdCh0KSksZSYmKFUuX21vbnRocz1lKSxuJiYoVS5fbW9udGhzU2hvcnQ9biksaSYmKFUuX3dlZWtkYXlzPWkpLHMmJihVLl93ZWVrZGF5c1Nob3J0PXMpLG51bGw9PW8mJiJJU08iPT09bCYmKG89MSksbnVsbCE9byl7dmFyIGE9WihVLl93ZWVrKTthLmRvdz1vLFUuX3dlZWs9YX0iSVNPIiE9PWwmJiJsb2NhbCIhPT1sJiYiZnVuY3Rpb24iIT10eXBlb2YgbHx8KFUuX2Z1bGxDYWxlbmRhcl93ZWVrQ2FsYz1sKSx0dCYmcih0dCl9KSxqLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uPWUuZHVyYXRpb24oai5vcHRpb25zLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uKSxqLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb249ZS5kdXJhdGlvbihqLm9wdGlvbnMuZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbiksai5tb21lbnQ9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4ibG9jYWwiPT09ai5vcHRpb25zLnRpbWV6b25lPyh0PWp0Lm1vbWVudC5hcHBseShudWxsLGFyZ3VtZW50cyksdC5oYXNUaW1lKCkmJnQubG9jYWwoKSk6dD0iVVRDIj09PWoub3B0aW9ucy50aW1lem9uZT9qdC5tb21lbnQudXRjLmFwcGx5KG51bGwsYXJndW1lbnRzKTpqdC5tb21lbnQucGFyc2Vab25lLmFwcGx5KG51bGwsYXJndW1lbnRzKSxyKHQpLHR9LGoubG9jYWxpemVNb21lbnQ9cixqLmdldElzQW1iaWdUaW1lem9uZT1mdW5jdGlvbigpe3JldHVybiJsb2NhbCIhPT1qLm9wdGlvbnMudGltZXpvbmUmJiJVVEMiIT09ai5vcHRpb25zLnRpbWV6b25lfSxqLmFwcGx5VGltZXpvbmU9ZnVuY3Rpb24odCl7aWYoIXQuaGFzVGltZSgpKXJldHVybiB0LmNsb25lKCk7dmFyIGUsbj1qLm1vbWVudCh0LnRvQXJyYXkoKSksaT10LnRpbWUoKS1uLnRpbWUoKTtyZXR1cm4gaSYmKGU9bi5jbG9uZSgpLmFkZChpKSx0LnRpbWUoKS1lLnRpbWUoKT09PTAmJihuPWUpKSxufSxqLmdldE5vdz1mdW5jdGlvbigpe3ZhciB0PWoub3B0aW9ucy5ub3c7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQoKSksai5tb21lbnQodCkuc3RyaXBab25lKCl9LGouZ2V0RXZlbnRFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZW5kP3QuZW5kLmNsb25lKCk6ai5nZXREZWZhdWx0RXZlbnRFbmQodC5hbGxEYXksdC5zdGFydCl9LGouZ2V0RGVmYXVsdEV2ZW50RW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5jbG9uZSgpO3JldHVybiB0P24uc3RyaXBUaW1lKCkuYWRkKGouZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb24pOm4uYWRkKGouZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbiksai5nZXRJc0FtYmlnVGltZXpvbmUoKSYmbi5zdHJpcFpvbmUoKSxufSxqLmh1bWFuaXplRHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHQubG9jYWxlKGoub3B0aW9ucy5sb2NhbGUpLmh1bWFuaXplKCl9LFl0LmNhbGwoaik7dmFyIHEsJCxYLEssUSxKLHR0LGV0PWouaXNGZXRjaE5lZWRlZCxudD1qLmZldGNoRXZlbnRzLGl0PWouZmV0Y2hFdmVudFNvdXJjZXMsc3Q9blswXSxvdD17fSxsdD0wLHV0PVtdO3R0PW51bGwhPWoub3B0aW9ucy5kZWZhdWx0RGF0ZT9qLm1vbWVudChqLm9wdGlvbnMuZGVmYXVsdERhdGUpLnN0cmlwWm9uZSgpOmouZ2V0Tm93KCksai5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PVEmJmcoKSxRfSxqLmlzSGVpZ2h0QXV0bz1mdW5jdGlvbigpe3JldHVybiJhdXRvIj09PWoub3B0aW9ucy5jb250ZW50SGVpZ2h0fHwiYXV0byI9PT1qLm9wdGlvbnMuaGVpZ2h0fSxqLmZyZWV6ZUNvbnRlbnRIZWlnaHQ9QSxqLnVuZnJlZXplQ29udGVudEhlaWdodD1PLGouaW5pdGlhbGl6ZSgpfWZ1bmN0aW9uIFZ0KGUpe3QuZWFjaChIZSxmdW5jdGlvbih0LG4pe251bGw9PWVbdF0mJihlW3RdPW4oZSkpfSl9ZnVuY3Rpb24gUHQodCl7cmV0dXJuIGUubG9jYWxlRGF0YSh0KXx8ZS5sb2NhbGVEYXRhKCJlbiIpfWZ1bmN0aW9uIF90KGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj1lLm9wdGlvbnMscz1uLmhlYWRlcjtmPW4udGhlbWU/InVpIjoiZmMiLHM/KGg/aC5lbXB0eSgpOmg9dGhpcy5lbD10KCI8ZGl2IGNsYXNzPSdmYy10b29sYmFyJy8+IiksaC5hcHBlbmQocigibGVmdCIpKS5hcHBlbmQocigicmlnaHQiKSkuYXBwZW5kKHIoImNlbnRlciIpKS5hcHBlbmQoJzxkaXYgY2xhc3M9ImZjLWNsZWFyIi8+JykpOmkoKX1mdW5jdGlvbiBpKCl7aCYmKGgucmVtb3ZlKCksaD1jLmVsPW51bGwpfWZ1bmN0aW9uIHIobil7dmFyIGk9dCgnPGRpdiBjbGFzcz0iZmMtJytuKyciLz4nKSxyPWUub3B0aW9ucyxzPXIuaGVhZGVyW25dO3JldHVybiBzJiZ0LmVhY2gocy5zcGxpdCgiICIpLGZ1bmN0aW9uKG4pe3ZhciBzLG89dCgpLGw9ITA7dC5lYWNoKHRoaXMuc3BsaXQoIiwiKSxmdW5jdGlvbihuLGkpe3ZhciBzLGEsdSxkLGMsaCxwLHYsbSx5OyJ0aXRsZSI9PWk/KG89by5hZGQodCgiPGgyPiZuYnNwOzwvaDI+IikpLGw9ITEpOigocz0oci5jdXN0b21CdXR0b25zfHx7fSlbaV0pPyh1PWZ1bmN0aW9uKHQpe3MuY2xpY2smJnMuY2xpY2suY2FsbCh5WzBdLHQpfSxkPSIiLGM9cy50ZXh0KTooYT1lLmdldFZpZXdTcGVjKGkpKT8odT1mdW5jdGlvbigpe2UuY2hhbmdlVmlldyhpKX0sZy5wdXNoKGkpLGQ9YS5idXR0b25UZXh0T3ZlcnJpZGUsYz1hLmJ1dHRvblRleHREZWZhdWx0KTplW2ldJiYodT1mdW5jdGlvbigpe2VbaV0oKX0sZD0oZS5vdmVycmlkZXMuYnV0dG9uVGV4dHx8e30pW2ldLGM9ci5idXR0b25UZXh0W2ldKSx1JiYoaD1zP3MudGhlbWVJY29uOnIudGhlbWVCdXR0b25JY29uc1tpXSxwPXM/cy5pY29uOnIuYnV0dG9uSWNvbnNbaV0sdj1kP3R0KGQpOmgmJnIudGhlbWU/IjxzcGFuIGNsYXNzPSd1aS1pY29uIHVpLWljb24tIitoKyInPjwvc3Bhbj4iOnAmJiFyLnRoZW1lPyI8c3BhbiBjbGFzcz0nZmMtaWNvbiBmYy1pY29uLSIrcCsiJz48L3NwYW4+Ijp0dChjKSxtPVsiZmMtIitpKyItYnV0dG9uIixmKyItYnV0dG9uIixmKyItc3RhdGUtZGVmYXVsdCJdLHk9dCgnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInK20uam9pbigiICIpKyciPicrdisiPC9idXR0b24+IikuY2xpY2soZnVuY3Rpb24odCl7eS5oYXNDbGFzcyhmKyItc3RhdGUtZGlzYWJsZWQiKXx8KHUodCksKHkuaGFzQ2xhc3MoZisiLXN0YXRlLWFjdGl2ZSIpfHx5Lmhhc0NsYXNzKGYrIi1zdGF0ZS1kaXNhYmxlZCIpKSYmeS5yZW1vdmVDbGFzcyhmKyItc3RhdGUtaG92ZXIiKSl9KS5tb3VzZWRvd24oZnVuY3Rpb24oKXt5Lm5vdCgiLiIrZisiLXN0YXRlLWFjdGl2ZSIpLm5vdCgiLiIrZisiLXN0YXRlLWRpc2FibGVkIikuYWRkQ2xhc3MoZisiLXN0YXRlLWRvd24iKX0pLm1vdXNldXAoZnVuY3Rpb24oKXt5LnJlbW92ZUNsYXNzKGYrIi1zdGF0ZS1kb3duIil9KS5ob3ZlcihmdW5jdGlvbigpe3kubm90KCIuIitmKyItc3RhdGUtYWN0aXZlIikubm90KCIuIitmKyItc3RhdGUtZGlzYWJsZWQiKS5hZGRDbGFzcyhmKyItc3RhdGUtaG92ZXIiKX0sZnVuY3Rpb24oKXt5LnJlbW92ZUNsYXNzKGYrIi1zdGF0ZS1ob3ZlciIpLnJlbW92ZUNsYXNzKGYrIi1zdGF0ZS1kb3duIil9KSxvPW8uYWRkKHkpKSl9KSxsJiZvLmZpcnN0KCkuYWRkQ2xhc3MoZisiLWNvcm5lci1sZWZ0IikuZW5kKCkubGFzdCgpLmFkZENsYXNzKGYrIi1jb3JuZXItcmlnaHQiKS5lbmQoKSxvLmxlbmd0aD4xPyhzPXQoIjxkaXYvPiIpLGwmJnMuYWRkQ2xhc3MoImZjLWJ1dHRvbi1ncm91cCIpLHMuYXBwZW5kKG8pLGkuYXBwZW5kKHMpKTppLmFwcGVuZChvKX0pLGl9ZnVuY3Rpb24gcyh0KXtoJiZoLmZpbmQoImgyIikudGV4dCh0KX1mdW5jdGlvbiBvKHQpe2gmJmguZmluZCgiLmZjLSIrdCsiLWJ1dHRvbiIpLmFkZENsYXNzKGYrIi1zdGF0ZS1hY3RpdmUiKX1mdW5jdGlvbiBsKHQpe2gmJmguZmluZCgiLmZjLSIrdCsiLWJ1dHRvbiIpLnJlbW92ZUNsYXNzKGYrIi1zdGF0ZS1hY3RpdmUiKX1mdW5jdGlvbiBhKHQpe2gmJmguZmluZCgiLmZjLSIrdCsiLWJ1dHRvbiIpLnByb3AoImRpc2FibGVkIiwhMCkuYWRkQ2xhc3MoZisiLXN0YXRlLWRpc2FibGVkIil9ZnVuY3Rpb24gdSh0KXtoJiZoLmZpbmQoIi5mYy0iK3QrIi1idXR0b24iKS5wcm9wKCJkaXNhYmxlZCIsITEpLnJlbW92ZUNsYXNzKGYrIi1zdGF0ZS1kaXNhYmxlZCIpfWZ1bmN0aW9uIGQoKXtyZXR1cm4gZ312YXIgYz10aGlzO2MucmVuZGVyPW4sYy5yZW1vdmVFbGVtZW50PWksYy51cGRhdGVUaXRsZT1zLGMuYWN0aXZhdGVCdXR0b249byxjLmRlYWN0aXZhdGVCdXR0b249bCxjLmRpc2FibGVCdXR0b249YSxjLmVuYWJsZUJ1dHRvbj11LGMuZ2V0Vmlld3NXaXRoQnV0dG9ucz1kLGMuZWw9bnVsbDt2YXIgaCxmLGc9W119ZnVuY3Rpb24gWXQoKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIU98fHQ8T3x8ZT5WfWZ1bmN0aW9uIGkodCxlKXtPPXQsVj1lLHIoWSwicmVzZXQiKX1mdW5jdGlvbiByKHQsZSl7dmFyIG4saTtmb3IoInJlc2V0Ij09PWU/aj1bXToiYWRkIiE9PWUmJihqPXcoaix0KSksbj0wO248dC5sZW5ndGg7bisrKWk9dFtuXSwicGVuZGluZyIhPT1pLl9zdGF0dXMmJlcrKyxpLl9mZXRjaElkPShpLl9mZXRjaElkfHwwKSsxLGkuX3N0YXR1cz0icGVuZGluZyI7Zm9yKG49MDtuPHQubGVuZ3RoO24rKylpPXRbbl0scyhpLGkuX2ZldGNoSWQpfWZ1bmN0aW9uIHMoZSxuKXthKGUsZnVuY3Rpb24oaSl7dmFyIHIscyxvLGE9dC5pc0FycmF5KGUuZXZlbnRzKTtpZihuPT09ZS5fZmV0Y2hJZCYmInJlamVjdGVkIiE9PWUuX3N0YXR1cyl7aWYoZS5fc3RhdHVzPSJyZXNvbHZlZCIsaSlmb3Iocj0wO3I8aS5sZW5ndGg7cisrKXM9aVtyXSxvPWE/czpSKHMsZSksbyYmai5wdXNoLmFwcGx5KGosTChvKSk7bCgpfX0pfWZ1bmN0aW9uIG8odCl7dmFyIGU9InBlbmRpbmciPT09dC5fc3RhdHVzO3QuX3N0YXR1cz0icmVqZWN0ZWQiLGUmJmwoKX1mdW5jdGlvbiBsKCl7Vy0tLFd8fFAoail9ZnVuY3Rpb24gYShlLG4pe3ZhciBpLHIscz1qdC5zb3VyY2VGZXRjaGVycztmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXtpZihyPXNbaV0uY2FsbChGLGUsTy5jbG9uZSgpLFYuY2xvbmUoKSxGLm9wdGlvbnMudGltZXpvbmUsbikscj09PSEwKXJldHVybjtpZigib2JqZWN0Ij09dHlwZW9mIHIpcmV0dXJuIHZvaWQgYShyLG4pfXZhciBvPWUuZXZlbnRzO2lmKG8pdC5pc0Z1bmN0aW9uKG8pPyhGLnB1c2hMb2FkaW5nKCksby5jYWxsKEYsTy5jbG9uZSgpLFYuY2xvbmUoKSxGLm9wdGlvbnMudGltZXpvbmUsZnVuY3Rpb24odCl7bih0KSxGLnBvcExvYWRpbmcoKX0pKTp0LmlzQXJyYXkobyk/bihvKTpuKCk7ZWxzZXt2YXIgbD1lLnVybDtpZihsKXt2YXIgdSxkPWUuc3VjY2VzcyxjPWUuZXJyb3IsaD1lLmNvbXBsZXRlO3U9dC5pc0Z1bmN0aW9uKGUuZGF0YSk/ZS5kYXRhKCk6ZS5kYXRhO3ZhciBmPXQuZXh0ZW5kKHt9LHV8fHt9KSxnPUooZS5zdGFydFBhcmFtLEYub3B0aW9ucy5zdGFydFBhcmFtKSxwPUooZS5lbmRQYXJhbSxGLm9wdGlvbnMuZW5kUGFyYW0pLHY9SihlLnRpbWV6b25lUGFyYW0sRi5vcHRpb25zLnRpbWV6b25lUGFyYW0pO2cmJihmW2ddPU8uZm9ybWF0KCkpLHAmJihmW3BdPVYuZm9ybWF0KCkpLEYub3B0aW9ucy50aW1lem9uZSYmImxvY2FsIiE9Ri5vcHRpb25zLnRpbWV6b25lJiYoZlt2XT1GLm9wdGlvbnMudGltZXpvbmUpLEYucHVzaExvYWRpbmcoKSx0LmFqYXgodC5leHRlbmQoe30sVGUsZSx7ZGF0YTpmLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7ZT1lfHxbXTt2YXIgaT1RKGQsdGhpcyxhcmd1bWVudHMpO3QuaXNBcnJheShpKSYmKGU9aSksbihlKX0sZXJyb3I6ZnVuY3Rpb24oKXtRKGMsdGhpcyxhcmd1bWVudHMpLG4oKX0sY29tcGxldGU6ZnVuY3Rpb24oKXtRKGgsdGhpcyxhcmd1bWVudHMpLEYucG9wTG9hZGluZygpfX0pKX1lbHNlIG4oKX19ZnVuY3Rpb24gdSh0KXt2YXIgZT1kKHQpO2UmJihZLnB1c2goZSkscihbZV0sImFkZCIpKX1mdW5jdGlvbiBkKGUpe3ZhciBuLGkscj1qdC5zb3VyY2VOb3JtYWxpemVycztpZih0LmlzRnVuY3Rpb24oZSl8fHQuaXNBcnJheShlKT9uPXtldmVudHM6ZX06InN0cmluZyI9PXR5cGVvZiBlP249e3VybDplfToib2JqZWN0Ij09dHlwZW9mIGUmJihuPXQuZXh0ZW5kKHt9LGUpKSxuKXtmb3Iobi5jbGFzc05hbWU/InN0cmluZyI9PXR5cGVvZiBuLmNsYXNzTmFtZSYmKG4uY2xhc3NOYW1lPW4uY2xhc3NOYW1lLnNwbGl0KC9ccysvKSk6bi5jbGFzc05hbWU9W10sdC5pc0FycmF5KG4uZXZlbnRzKSYmKG4ub3JpZ0FycmF5PW4uZXZlbnRzLG4uZXZlbnRzPXQubWFwKG4uZXZlbnRzLGZ1bmN0aW9uKHQpe3JldHVybiBSKHQsbil9KSksaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV0uY2FsbChGLG4pO3JldHVybiBufX1mdW5jdGlvbiBjKHQpe2YobSh0KSl9ZnVuY3Rpb24gaCh0KXtudWxsPT10P2YoWSwhMCk6Zih2KHQpKX1mdW5jdGlvbiBmKGUsbil7dmFyIGk7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylvKGVbaV0pO24/KFk9W10saj1bXSk6KFk9dC5ncmVwKFksZnVuY3Rpb24odCl7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylpZih0PT09ZVtpXSlyZXR1cm4hMTtyZXR1cm4hMH0pLGo9dyhqLGUpKSxQKGopfWZ1bmN0aW9uIGcoKXtyZXR1cm4gWS5zbGljZSgxKX1mdW5jdGlvbiBwKGUpe3JldHVybiB0LmdyZXAoWSxmdW5jdGlvbih0KXtyZXR1cm4gdC5pZCYmdC5pZD09PWV9KVswXX1mdW5jdGlvbiB2KGUpe2U/dC5pc0FycmF5KGUpfHwoZT1bZV0pOmU9W107dmFyIG4saT1bXTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKWkucHVzaC5hcHBseShpLG0oZVtuXSkpO3JldHVybiBpfWZ1bmN0aW9uIG0oZSl7dmFyIG4saTtmb3Iobj0wO248WS5sZW5ndGg7bisrKWlmKGk9WVtuXSxpPT09ZSlyZXR1cm5baV07cmV0dXJuIGk9cChlKSxpP1tpXTp0LmdyZXAoWSxmdW5jdGlvbih0KXtyZXR1cm4geShlLHQpfSl9ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0JiZlJiZTKHQpPT1TKGUpfWZ1bmN0aW9uIFModCl7cmV0dXJuKCJvYmplY3QiPT10eXBlb2YgdD90Lm9yaWdBcnJheXx8dC5nb29nbGVDYWxlbmRhcklkfHx0LnVybHx8dC5ldmVudHM6bnVsbCl8fHR9ZnVuY3Rpb24gdyhlLG4pe3JldHVybiB0LmdyZXAoZSxmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoO2UrKylpZih0LnNvdXJjZT09PW5bZV0pcmV0dXJuITE7cmV0dXJuITB9KX1mdW5jdGlvbiBFKHQpe3Quc3RhcnQ9Ri5tb21lbnQodC5zdGFydCksdC5lbmQ/dC5lbmQ9Ri5tb21lbnQodC5lbmQpOnQuZW5kPW51bGwsQih0LEQodCkpLFAoail9ZnVuY3Rpb24gRChlKXt2YXIgbj17fTtyZXR1cm4gdC5lYWNoKGUsZnVuY3Rpb24odCxlKXtiKHQpJiZ2b2lkIDAhPT1lJiZLKGUpJiYoblt0XT1lKX0pLG59ZnVuY3Rpb24gYih0KXtyZXR1cm4hL15ffF4oaWR8YWxsRGF5fHN0YXJ0fGVuZCkkLy50ZXN0KHQpfWZ1bmN0aW9uIEModCxlKXt2YXIgbixpLHIscz1SKHQpO2lmKHMpe2ZvcihuPUwocyksaT0wO2k8bi5sZW5ndGg7aSsrKXI9bltpXSxyLnNvdXJjZXx8KGUmJihfLmV2ZW50cy5wdXNoKHIpLHIuc291cmNlPV8pLGoucHVzaChyKSk7cmV0dXJuIFAoaiksbn1yZXR1cm5bXX1mdW5jdGlvbiBIKGUpe3ZhciBuLGk7Zm9yKG51bGw9PWU/ZT1mdW5jdGlvbigpe3JldHVybiEwfTp0LmlzRnVuY3Rpb24oZSl8fChuPWUrIiIsZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5faWQ9PW59KSxqPXQuZ3JlcChqLGUsITApLGk9MDtpPFkubGVuZ3RoO2krKyl0LmlzQXJyYXkoWVtpXS5ldmVudHMpJiYoWVtpXS5ldmVudHM9dC5ncmVwKFlbaV0uZXZlbnRzLGUsITApKTtQKGopfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIHQuaXNGdW5jdGlvbihlKT90LmdyZXAoaixlKTpudWxsIT1lPyhlKz0iIix0LmdyZXAoaixmdW5jdGlvbih0KXtyZXR1cm4gdC5faWQ9PWV9KSk6an1mdW5jdGlvbiB4KHQpe3Quc3RhcnQ9Ri5tb21lbnQodC5zdGFydCksdC5lbmQmJih0LmVuZD1GLm1vbWVudCh0LmVuZCkpLFd0KHQpfWZ1bmN0aW9uIFIobixpKXt2YXIgcixzLG8sbD17fTtpZihGLm9wdGlvbnMuZXZlbnREYXRhVHJhbnNmb3JtJiYobj1GLm9wdGlvbnMuZXZlbnREYXRhVHJhbnNmb3JtKG4pKSxpJiZpLmV2ZW50RGF0YVRyYW5zZm9ybSYmKG49aS5ldmVudERhdGFUcmFuc2Zvcm0obikpLHQuZXh0ZW5kKGwsbiksaSYmKGwuc291cmNlPWkpLGwuX2lkPW4uX2lkfHwodm9pZCAwPT09bi5pZD8iX2ZjIit4ZSsrOm4uaWQrIiIpLG4uY2xhc3NOYW1lPyJzdHJpbmciPT10eXBlb2Ygbi5jbGFzc05hbWU/bC5jbGFzc05hbWU9bi5jbGFzc05hbWUuc3BsaXQoL1xzKy8pOmwuY2xhc3NOYW1lPW4uY2xhc3NOYW1lOmwuY2xhc3NOYW1lPVtdLHI9bi5zdGFydHx8bi5kYXRlLHM9bi5lbmQsVShyKSYmKHI9ZS5kdXJhdGlvbihyKSksVShzKSYmKHM9ZS5kdXJhdGlvbihzKSksbi5kb3d8fGUuaXNEdXJhdGlvbihyKXx8ZS5pc0R1cmF0aW9uKHMpKWwuc3RhcnQ9cj9lLmR1cmF0aW9uKHIpOm51bGwsbC5lbmQ9cz9lLmR1cmF0aW9uKHMpOm51bGwsbC5fcmVjdXJyaW5nPSEwO2Vsc2V7aWYociYmKHI9Ri5tb21lbnQociksIXIuaXNWYWxpZCgpKSlyZXR1cm4hMTtzJiYocz1GLm1vbWVudChzKSxzLmlzVmFsaWQoKXx8KHM9bnVsbCkpLG89bi5hbGxEYXksdm9pZCAwPT09byYmKG89SihpP2kuYWxsRGF5RGVmYXVsdDp2b2lkIDAsRi5vcHRpb25zLmFsbERheURlZmF1bHQpKSxJKHIscyxvLGwpfXJldHVybiBGLm5vcm1hbGl6ZUV2ZW50KGwpLGx9ZnVuY3Rpb24gSSh0LGUsbixpKXtpLnN0YXJ0PXQsaS5lbmQ9ZSxpLmFsbERheT1uLGsoaSksV3QoaSl9ZnVuY3Rpb24gayh0KXtNKHQpLHQuZW5kJiYhdC5lbmQuaXNBZnRlcih0LnN0YXJ0KSYmKHQuZW5kPW51bGwpLHQuZW5kfHwoRi5vcHRpb25zLmZvcmNlRXZlbnREdXJhdGlvbj90LmVuZD1GLmdldERlZmF1bHRFdmVudEVuZCh0LmFsbERheSx0LnN0YXJ0KTp0LmVuZD1udWxsKX1mdW5jdGlvbiBNKHQpe251bGw9PXQuYWxsRGF5JiYodC5hbGxEYXk9ISh0LnN0YXJ0Lmhhc1RpbWUoKXx8dC5lbmQmJnQuZW5kLmhhc1RpbWUoKSkpLHQuYWxsRGF5Pyh0LnN0YXJ0LnN0cmlwVGltZSgpLHQuZW5kJiZ0LmVuZC5zdHJpcFRpbWUoKSk6KHQuc3RhcnQuaGFzVGltZSgpfHwodC5zdGFydD1GLmFwcGx5VGltZXpvbmUodC5zdGFydC50aW1lKDApKSksdC5lbmQmJiF0LmVuZC5oYXNUaW1lKCkmJih0LmVuZD1GLmFwcGx5VGltZXpvbmUodC5lbmQudGltZSgwKSkpKX1mdW5jdGlvbiBMKGUsbixpKXt2YXIgcixzLG8sbCxhLHUsZCxjLGgsZj1bXTtpZihuPW58fE8saT1pfHxWLGUpaWYoZS5fcmVjdXJyaW5nKXtpZihzPWUuZG93KWZvcihyPXt9LG89MDtvPHMubGVuZ3RoO28rKylyW3Nbb11dPSEwO2ZvcihsPW4uY2xvbmUoKS5zdHJpcFRpbWUoKTtsLmlzQmVmb3JlKGkpOylyJiYhcltsLmRheSgpXXx8KGE9ZS5zdGFydCx1PWUuZW5kLGQ9bC5jbG9uZSgpLGM9bnVsbCxhJiYoZD1kLnRpbWUoYSkpLHUmJihjPWwuY2xvbmUoKS50aW1lKHUpKSxoPXQuZXh0ZW5kKHt9LGUpLEkoZCxjLCFhJiYhdSxoKSxmLnB1c2goaCkpLGwuYWRkKDEsImRheXMiKX1lbHNlIGYucHVzaChlKTtyZXR1cm4gZn1mdW5jdGlvbiBCKGUsbixpKXtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIGk/QSh0LGUsaSk6bi5hbGxEYXk/Ryh0LGUpOk4odCxlKX12YXIgcyxvLGwsYSx1LGQsYz17fTtyZXR1cm4gbj1ufHx7fSxuLnN0YXJ0fHwobi5zdGFydD1lLnN0YXJ0LmNsb25lKCkpLHZvaWQgMD09PW4uZW5kJiYobi5lbmQ9ZS5lbmQ/ZS5lbmQuY2xvbmUoKTpudWxsKSxudWxsPT1uLmFsbERheSYmKG4uYWxsRGF5PWUuYWxsRGF5KSxrKG4pLHM9e3N0YXJ0OmUuX3N0YXJ0LmNsb25lKCksZW5kOmUuX2VuZD9lLl9lbmQuY2xvbmUoKTpGLmdldERlZmF1bHRFdmVudEVuZChlLl9hbGxEYXksZS5fc3RhcnQpLGFsbERheTpuLmFsbERheX0sayhzKSxvPW51bGwhPT1lLl9lbmQmJm51bGw9PT1uLmVuZCxsPXIobi5zdGFydCxzLnN0YXJ0KSxuLmVuZD8oYT1yKG4uZW5kLHMuZW5kKSx1PWEuc3VidHJhY3QobCkpOnU9bnVsbCx0LmVhY2gobixmdW5jdGlvbih0LGUpe2IodCkmJnZvaWQgMCE9PWUmJihjW3RdPWUpfSksZD16KFQoZS5faWQpLG8sbi5hbGxEYXksbCx1LGMpLHtkYXRlRGVsdGE6bCxkdXJhdGlvbkRlbHRhOnUsdW5kbzpkfX1mdW5jdGlvbiB6KGUsbixpLHIscyxvKXt2YXIgbD1GLmdldElzQW1iaWdUaW1lem9uZSgpLGE9W107cmV0dXJuIHImJiFyLnZhbHVlT2YoKSYmKHI9bnVsbCkscyYmIXMudmFsdWVPZigpJiYocz1udWxsKSx0LmVhY2goZSxmdW5jdGlvbihlLHUpe3ZhciBkLGM7ZD17c3RhcnQ6dS5zdGFydC5jbG9uZSgpLGVuZDp1LmVuZD91LmVuZC5jbG9uZSgpOm51bGwsYWxsRGF5OnUuYWxsRGF5fSx0LmVhY2gobyxmdW5jdGlvbih0KXtkW3RdPXVbdF19KSxjPXtzdGFydDp1Ll9zdGFydCxlbmQ6dS5fZW5kLGFsbERheTppfSxrKGMpLG4/Yy5lbmQ9bnVsbDpzJiYhYy5lbmQmJihjLmVuZD1GLmdldERlZmF1bHRFdmVudEVuZChjLmFsbERheSxjLnN0YXJ0KSksciYmKGMuc3RhcnQuYWRkKHIpLGMuZW5kJiZjLmVuZC5hZGQocikpLHMmJmMuZW5kLmFkZChzKSxsJiYhYy5hbGxEYXkmJihyfHxzKSYmKGMuc3RhcnQuc3RyaXBab25lKCksYy5lbmQmJmMuZW5kLnN0cmlwWm9uZSgpKSx0LmV4dGVuZCh1LG8sYyksV3QodSksYS5wdXNoKGZ1bmN0aW9uKCl7dC5leHRlbmQodSxkKSxXdCh1KX0pfSksZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PGEubGVuZ3RoO3QrKylhW3RdKCl9fXZhciBGPXRoaXM7Ri5pc0ZldGNoTmVlZGVkPW4sRi5mZXRjaEV2ZW50cz1pLEYuZmV0Y2hFdmVudFNvdXJjZXM9cixGLmdldEV2ZW50U291cmNlcz1nLEYuZ2V0RXZlbnRTb3VyY2VCeUlkPXAsRi5nZXRFdmVudFNvdXJjZXNCeU1hdGNoQXJyYXk9dixGLmdldEV2ZW50U291cmNlc0J5TWF0Y2g9bSxGLmFkZEV2ZW50U291cmNlPXUsRi5yZW1vdmVFdmVudFNvdXJjZT1jLEYucmVtb3ZlRXZlbnRTb3VyY2VzPWgsRi51cGRhdGVFdmVudD1FLEYucmVuZGVyRXZlbnQ9QyxGLnJlbW92ZUV2ZW50cz1ILEYuY2xpZW50RXZlbnRzPVQsRi5tdXRhdGVFdmVudD1CLEYubm9ybWFsaXplRXZlbnREYXRlcz1rLEYubm9ybWFsaXplRXZlbnRUaW1lcz1NO3ZhciBPLFYsUD1GLnJlcG9ydEV2ZW50cyxfPXtldmVudHM6W119LFk9W19dLFc9MCxqPVtdO3QuZWFjaCgoRi5vcHRpb25zLmV2ZW50cz9bRi5vcHRpb25zLmV2ZW50c106W10pLmNvbmNhdChGLm9wdGlvbnMuZXZlbnRTb3VyY2VzfHxbXSksZnVuY3Rpb24odCxlKXt2YXIgbj1kKGUpO24mJlkucHVzaChuKX0pLEYucmV6b25lQXJyYXlFdmVudFNvdXJjZXM9ZnVuY3Rpb24oKXt2YXIgZSxuLGk7Zm9yKGU9MDtlPFkubGVuZ3RoO2UrKylpZihuPVlbZV0uZXZlbnRzLHQuaXNBcnJheShuKSlmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKXgobltpXSl9LEYuYnVpbGRFdmVudEZyb21JbnB1dD1SLEYuZXhwYW5kRXZlbnQ9TCxGLmdldEV2ZW50Q2FjaGU9ZnVuY3Rpb24oKXtyZXR1cm4gan19ZnVuY3Rpb24gV3QodCl7dC5fYWxsRGF5PXQuYWxsRGF5LHQuX3N0YXJ0PXQuc3RhcnQuY2xvbmUoKSx0Ll9lbmQ9dC5lbmQ/dC5lbmQuY2xvbmUoKTpudWxsfXZhciBqdD10LmZ1bGxDYWxlbmRhcj17dmVyc2lvbjoiMy4wLjEiLGludGVybmFsQXBpVmVyc2lvbjo2fSxVdD1qdC52aWV3cz17fTt0LmZuLmZ1bGxDYWxlbmRhcj1mdW5jdGlvbihlKXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT10aGlzO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24ocixzKXt2YXIgbyxsPXQocyksYT1sLmRhdGEoImZ1bGxDYWxlbmRhciIpOyJzdHJpbmciPT10eXBlb2YgZT9hJiZ0LmlzRnVuY3Rpb24oYVtlXSkmJihvPWFbZV0uYXBwbHkoYSxuKSxyfHwoaT1vKSwiZGVzdHJveSI9PT1lJiZsLnJlbW92ZURhdGEoImZ1bGxDYWxlbmRhciIpKTphfHwoYT1uZXcgRWUobCxlKSxsLmRhdGEoImZ1bGxDYWxlbmRhciIsYSksYS5yZW5kZXIoKSl9KSxpfTt2YXIgcXQ9WyJoZWFkZXIiLCJidXR0b25UZXh0IiwiYnV0dG9uSWNvbnMiLCJ0aGVtZUJ1dHRvbkljb25zIl07anQuaW50ZXJzZWN0UmFuZ2VzPUYsanQuYXBwbHlBbGw9USxqdC5kZWJvdW5jZT1hdCxqdC5pc0ludD1vdCxqdC5odG1sRXNjYXBlPXR0LGp0LmNzc1RvU3RyPW50LGp0LnByb3h5PWx0LGp0LmNhcGl0YWxpc2VGaXJzdExldHRlcj1ydCxqdC5nZXRPdXRlclJlY3Q9aCxqdC5nZXRDbGllbnRSZWN0PWYsanQuZ2V0Q29udGVudFJlY3Q9ZyxqdC5nZXRTY3JvbGxiYXJXaWR0aHM9cDt2YXIgWnQ9bnVsbDtqdC5wcmV2ZW50RGVmYXVsdD1DLGp0LmludGVyc2VjdFJlY3RzPXgsanQucGFyc2VGaWVsZFNwZWNzPU0sanQuY29tcGFyZUJ5RmllbGRTcGVjcz1MLGp0LmNvbXBhcmVCeUZpZWxkU3BlYz1CLGp0LmZsZXhpYmxlQ29tcGFyZT16LGp0LmNvbXB1dGVJbnRlcnZhbFVuaXQ9TyxqdC5kaXZpZGVSYW5nZUJ5RHVyYXRpb249UCxqdC5kaXZpZGVEdXJhdGlvbkJ5RHVyYXRpb249XyxqdC5tdWx0aXBseUR1cmF0aW9uPVksanQuZHVyYXRpb25IYXNUaW1lPVc7dmFyICR0PVsic3VuIiwibW9uIiwidHVlIiwid2VkIiwidGh1IiwiZnJpIiwic2F0Il0sWHQ9WyJ5ZWFyIiwibW9udGgiLCJ3ZWVrIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIl07anQubG9nPWZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93LmNvbnNvbGU7aWYodCYmdC5sb2cpcmV0dXJuIHQubG9nLmFwcGx5KHQsYXJndW1lbnRzKX0sanQud2Fybj1mdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5jb25zb2xlO3JldHVybiB0JiZ0Lndhcm4/dC53YXJuLmFwcGx5KHQsYXJndW1lbnRzKTpqdC5sb2cuYXBwbHkoanQsYXJndW1lbnRzKX07dmFyIEt0PXt9Lmhhc093blByb3BlcnR5LFF0PS9eXHMqXGR7NH0tXGRcZCQvLEp0PS9eXHMqXGR7NH0tKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KT8kLyx0ZT1lLmZuLGVlPXQuZXh0ZW5kKHt9LHRlKSxuZT1lLm1vbWVudFByb3BlcnRpZXM7bmUucHVzaCgiX2Z1bGxDYWxlbmRhciIpLG5lLnB1c2goIl9hbWJpZ1RpbWUiKSxuZS5wdXNoKCJfYW1iaWdab25lIiksanQubW9tZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGR0KGFyZ3VtZW50cyl9LGp0Lm1vbWVudC51dGM9ZnVuY3Rpb24oKXt2YXIgdD1kdChhcmd1bWVudHMsITApO3JldHVybiB0Lmhhc1RpbWUoKSYmdC51dGMoKSx0fSxqdC5tb21lbnQucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIGR0KGFyZ3VtZW50cywhMCwhMCl9LHRlLndlZWs9dGUud2Vla3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbG9jYWxlLl9mdWxsQ2FsZW5kYXJfd2Vla0NhbGM7cmV0dXJuIG51bGw9PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodGhpcyk6IklTTyI9PT1lP2VlLmlzb1dlZWsuYXBwbHkodGhpcyxhcmd1bWVudHMpOmVlLndlZWsuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZS50aW1lPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9mdWxsQ2FsZW5kYXIpcmV0dXJuIGVlLnRpbWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PXQpcmV0dXJuIGUuZHVyYXRpb24oe2hvdXJzOnRoaXMuaG91cnMoKSxtaW51dGVzOnRoaXMubWludXRlcygpLHNlY29uZHM6dGhpcy5zZWNvbmRzKCksbWlsbGlzZWNvbmRzOnRoaXMubWlsbGlzZWNvbmRzKCl9KTt0aGlzLl9hbWJpZ1RpbWU9ITEsZS5pc0R1cmF0aW9uKHQpfHxlLmlzTW9tZW50KHQpfHwodD1lLmR1cmF0aW9uKHQpKTt2YXIgbj0wO3JldHVybiBlLmlzRHVyYXRpb24odCkmJihuPTI0Kk1hdGguZmxvb3IodC5hc0RheXMoKSkpLHRoaXMuaG91cnMobit0LmhvdXJzKCkpLm1pbnV0ZXModC5taW51dGVzKCkpLnNlY29uZHModC5zZWNvbmRzKCkpLm1pbGxpc2Vjb25kcyh0Lm1pbGxpc2Vjb25kcygpKX0sdGUuc3RyaXBUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FtYmlnVGltZXx8KHRoaXMudXRjKCEwKSx0aGlzLnNldCh7aG91cnM6MCxtaW51dGVzOjAsc2Vjb25kczowLG1zOjB9KSx0aGlzLl9hbWJpZ1RpbWU9ITAsdGhpcy5fYW1iaWdab25lPSEwKSx0aGlzfSx0ZS5oYXNUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2FtYmlnVGltZX0sdGUuc3RyaXBab25lPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuX2FtYmlnWm9uZXx8KHQ9dGhpcy5fYW1iaWdUaW1lLHRoaXMudXRjKCEwKSx0aGlzLl9hbWJpZ1RpbWU9dHx8ITEsdGhpcy5fYW1iaWdab25lPSEwKSx0aGlzfSx0ZS5oYXNab25lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2FtYmlnWm9uZX0sdGUubG9jYWw9ZnVuY3Rpb24odCl7cmV0dXJuIGVlLmxvY2FsLmNhbGwodGhpcyx0aGlzLl9hbWJpZ1pvbmV8fHQpLHRoaXMuX2FtYmlnVGltZT0hMSx0aGlzLl9hbWJpZ1pvbmU9ITEsdGhpc30sdGUudXRjPWZ1bmN0aW9uKHQpe3JldHVybiBlZS51dGMuY2FsbCh0aGlzLHQpLHRoaXMuX2FtYmlnVGltZT0hMSx0aGlzLl9hbWJpZ1pvbmU9ITEsdGhpc30sdGUudXRjT2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYodGhpcy5fYW1iaWdUaW1lPSExLHRoaXMuX2FtYmlnWm9uZT0hMSksZWUudXRjT2Zmc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGUuZm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1bGxDYWxlbmRhciYmYXJndW1lbnRzWzBdP2h0KHRoaXMsYXJndW1lbnRzWzBdKTp0aGlzLl9hbWJpZ1RpbWU/Y3QodGhpcywiWVlZWS1NTS1ERCIpOnRoaXMuX2FtYmlnWm9uZT9jdCh0aGlzLCJZWVlZLU1NLUREW1RdSEg6bW06c3MiKTplZS5mb3JtYXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbWJpZ1RpbWU/Y3QodGhpcywiWVlZWS1NTS1ERCIpOnRoaXMuX2FtYmlnWm9uZT9jdCh0aGlzLCJZWVlZLU1NLUREW1RdSEg6bW06c3MiKTplZS50b0lTT1N0cmluZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBpZT17dDpmdW5jdGlvbih0KXtyZXR1cm4gY3QodCwiYSIpLmNoYXJBdCgwKX0sVDpmdW5jdGlvbih0KXtyZXR1cm4gY3QodCwiQSIpLmNoYXJBdCgwKX19O2p0LmZvcm1hdFJhbmdlPXB0O3ZhciByZT17WToieWVhciIsTToibW9udGgiLEQ6ImRheSIsZDoiZGF5IixBOiJzZWNvbmQiLGE6InNlY29uZCIsVDoic2Vjb25kIix0OiJzZWNvbmQiLEg6InNlY29uZCIsaDoic2Vjb25kIixtOiJzZWNvbmQiLHM6InNlY29uZCJ9LHNlPXt9LG9lPXtZOnt2YWx1ZToxLHVuaXQ6InllYXIifSxNOnt2YWx1ZToyLHVuaXQ6Im1vbnRoIn0sVzp7dmFsdWU6Myx1bml0OiJ3ZWVrIn0sdzp7dmFsdWU6Myx1bml0OiJ3ZWVrIn0sRDp7dmFsdWU6NCx1bml0OiJkYXkifSxkOnt2YWx1ZTo0LHVuaXQ6ImRheSJ9fTtqdC5xdWVyeU1vc3RHcmFudWxhckZvcm1hdFVuaXQ9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIscz15dCh0KTtmb3IoZT0wO2U8cy5sZW5ndGg7ZSsrKW49c1tlXSxuLnRva2VuJiYoaT1vZVtuLnRva2VuLmNoYXJBdCgwKV0saSYmKCFyfHxpLnZhbHVlPnIudmFsdWUpJiYocj1pKSk7cmV0dXJuIHI/ci51bml0Om51bGx9LGp0LkNsYXNzPXd0LHd0LmV4dGVuZD1mdW5jdGlvbigpe3ZhciB0LGUsbj1hcmd1bWVudHMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyllPWFyZ3VtZW50c1t0XSx0PG4tMSYmRHQodGhpcyxlKTtyZXR1cm4gRXQodGhpcyxlfHx7fSl9LHd0Lm1peGluPWZ1bmN0aW9uKHQpe0R0KHRoaXMsdCl9O3ZhciBsZT1qdC5FbWl0dGVyTWl4aW49e29uOmZ1bmN0aW9uKGUsbil7dmFyIGk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5hcHBseShlLmNvbnRleHR8fHRoaXMsZS5hcmdzfHxbXSl9O3JldHVybiBuLmd1aWR8fChuLmd1aWQ9dC5ndWlkKyspLGkuZ3VpZD1uLmd1aWQsdCh0aGlzKS5vbihlLGkpLHRoaXN9LG9mZjpmdW5jdGlvbihlLG4pe3JldHVybiB0KHRoaXMpLm9mZihlLG4pLHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24oZSl7dmFyIG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiB0KHRoaXMpLnRyaWdnZXJIYW5kbGVyKGUse2FyZ3M6bn0pLHRoaXN9LHRyaWdnZXJXaXRoOmZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdCh0aGlzKS50cmlnZ2VySGFuZGxlcihlLHtjb250ZXh0Om4sYXJnczppfSksdGhpc319LGFlPWp0Lkxpc3RlbmVyTWl4aW49ZnVuY3Rpb24oKXt2YXIgZT0wLG49e2xpc3RlbmVySWQ6bnVsbCxsaXN0ZW5UbzpmdW5jdGlvbihlLG4saSl7aWYoIm9iamVjdCI9PXR5cGVvZiBuKWZvcih2YXIgciBpbiBuKW4uaGFzT3duUHJvcGVydHkocikmJnRoaXMubGlzdGVuVG8oZSxyLG5bcl0pO2Vsc2Uic3RyaW5nIj09dHlwZW9mIG4mJmUub24obisiLiIrdGhpcy5nZXRMaXN0ZW5lck5hbWVzcGFjZSgpLHQucHJveHkoaSx0aGlzKSl9LHN0b3BMaXN0ZW5pbmdUbzpmdW5jdGlvbih0LGUpe3Qub2ZmKChlfHwiIikrIi4iK3RoaXMuZ2V0TGlzdGVuZXJOYW1lc3BhY2UoKSl9LGdldExpc3RlbmVyTmFtZXNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMubGlzdGVuZXJJZCYmKHRoaXMubGlzdGVuZXJJZD1lKyspLCJfbGlzdGVuZXIiK3RoaXMubGlzdGVuZXJJZH19O3JldHVybiBufSgpLHVlPXtpc0lnbm9yaW5nTW91c2U6ITEsZGVsYXlVbmlnbm9yZU1vdXNlOm51bGwsaW5pdE1vdXNlSWdub3Jpbmc6ZnVuY3Rpb24odCl7dGhpcy5kZWxheVVuaWdub3JlTW91c2U9YXQobHQodGhpcywidW5pZ25vcmVNb3VzZSIpLHR8fDFlMyl9LHRlbXBJZ25vcmVNb3VzZTpmdW5jdGlvbigpe3RoaXMuaXNJZ25vcmluZ01vdXNlPSEwLHRoaXMuZGVsYXlVbmlnbm9yZU1vdXNlKCl9LHVuaWdub3JlTW91c2U6ZnVuY3Rpb24oKXt0aGlzLmlzSWdub3JpbmdNb3VzZT0hMX19LGRlPXd0LmV4dGVuZChhZSx7aXNIaWRkZW46ITAsb3B0aW9uczpudWxsLGVsOm51bGwsbWFyZ2luOjEwLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz10fHx7fX0sc2hvdzpmdW5jdGlvbigpewp0aGlzLmlzSGlkZGVuJiYodGhpcy5lbHx8dGhpcy5yZW5kZXIoKSx0aGlzLmVsLnNob3coKSx0aGlzLnBvc2l0aW9uKCksdGhpcy5pc0hpZGRlbj0hMSx0aGlzLnRyaWdnZXIoInNob3ciKSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVufHwodGhpcy5lbC5oaWRlKCksdGhpcy5pc0hpZGRlbj0hMCx0aGlzLnRyaWdnZXIoImhpZGUiKSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10aGlzLm9wdGlvbnM7dGhpcy5lbD10KCc8ZGl2IGNsYXNzPSJmYy1wb3BvdmVyIi8+JykuYWRkQ2xhc3Mobi5jbGFzc05hbWV8fCIiKS5jc3Moe3RvcDowLGxlZnQ6MH0pLmFwcGVuZChuLmNvbnRlbnQpLmFwcGVuZFRvKG4ucGFyZW50RWwpLHRoaXMuZWwub24oImNsaWNrIiwiLmZjLWNsb3NlIixmdW5jdGlvbigpe2UuaGlkZSgpfSksbi5hdXRvSGlkZSYmdGhpcy5saXN0ZW5Ubyh0KGRvY3VtZW50KSwibW91c2Vkb3duIix0aGlzLmRvY3VtZW50TW91c2Vkb3duKX0sZG9jdW1lbnRNb3VzZWRvd246ZnVuY3Rpb24oZSl7dGhpcy5lbCYmIXQoZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbCkubGVuZ3RoJiZ0aGlzLmhpZGUoKX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuaGlkZSgpLHRoaXMuZWwmJih0aGlzLmVsLnJlbW92ZSgpLHRoaXMuZWw9bnVsbCksdGhpcy5zdG9wTGlzdGVuaW5nVG8odChkb2N1bWVudCksIm1vdXNlZG93biIpfSxwb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBlLG4saSxyLHMsbz10aGlzLm9wdGlvbnMsbD10aGlzLmVsLm9mZnNldFBhcmVudCgpLm9mZnNldCgpLGE9dGhpcy5lbC5vdXRlcldpZHRoKCksdT10aGlzLmVsLm91dGVySGVpZ2h0KCksZD10KHdpbmRvdyksaD1jKHRoaXMuZWwpO3I9by50b3B8fDAscz12b2lkIDAhPT1vLmxlZnQ/by5sZWZ0OnZvaWQgMCE9PW8ucmlnaHQ/by5yaWdodC1hOjAsaC5pcyh3aW5kb3cpfHxoLmlzKGRvY3VtZW50KT8oaD1kLGU9MCxuPTApOihpPWgub2Zmc2V0KCksZT1pLnRvcCxuPWkubGVmdCksZSs9ZC5zY3JvbGxUb3AoKSxuKz1kLnNjcm9sbExlZnQoKSxvLnZpZXdwb3J0Q29uc3RyYWluIT09ITEmJihyPU1hdGgubWluKHIsZStoLm91dGVySGVpZ2h0KCktdS10aGlzLm1hcmdpbikscj1NYXRoLm1heChyLGUrdGhpcy5tYXJnaW4pLHM9TWF0aC5taW4ocyxuK2gub3V0ZXJXaWR0aCgpLWEtdGhpcy5tYXJnaW4pLHM9TWF0aC5tYXgocyxuK3RoaXMubWFyZ2luKSksdGhpcy5lbC5jc3Moe3RvcDpyLWwudG9wLGxlZnQ6cy1sLmxlZnR9KX0sdHJpZ2dlcjpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnNbdF0mJnRoaXMub3B0aW9uc1t0XS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9fSksY2U9anQuQ29vcmRDYWNoZT13dC5leHRlbmQoe2VsczpudWxsLGZvcmNlZE9mZnNldFBhcmVudEVsOm51bGwsb3JpZ2luOm51bGwsYm91bmRpbmdSZWN0Om51bGwsaXNIb3Jpem9udGFsOiExLGlzVmVydGljYWw6ITEsbGVmdHM6bnVsbCxyaWdodHM6bnVsbCx0b3BzOm51bGwsYm90dG9tczpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe3RoaXMuZWxzPXQoZS5lbHMpLHRoaXMuaXNIb3Jpem9udGFsPWUuaXNIb3Jpem9udGFsLHRoaXMuaXNWZXJ0aWNhbD1lLmlzVmVydGljYWwsdGhpcy5mb3JjZWRPZmZzZXRQYXJlbnRFbD1lLm9mZnNldFBhcmVudD90KGUub2Zmc2V0UGFyZW50KTpudWxsfSxidWlsZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZm9yY2VkT2Zmc2V0UGFyZW50RWx8fHRoaXMuZWxzLmVxKDApLm9mZnNldFBhcmVudCgpO3RoaXMub3JpZ2luPXQub2Zmc2V0KCksdGhpcy5ib3VuZGluZ1JlY3Q9dGhpcy5xdWVyeUJvdW5kaW5nUmVjdCgpLHRoaXMuaXNIb3Jpem9udGFsJiZ0aGlzLmJ1aWxkRWxIb3Jpem9udGFscygpLHRoaXMuaXNWZXJ0aWNhbCYmdGhpcy5idWlsZEVsVmVydGljYWxzKCl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW49bnVsbCx0aGlzLmJvdW5kaW5nUmVjdD1udWxsLHRoaXMubGVmdHM9bnVsbCx0aGlzLnJpZ2h0cz1udWxsLHRoaXMudG9wcz1udWxsLHRoaXMuYm90dG9tcz1udWxsfSxlbnN1cmVCdWlsdDpmdW5jdGlvbigpe3RoaXMub3JpZ2lufHx0aGlzLmJ1aWxkKCl9LGJ1aWxkRWxIb3Jpem9udGFsczpmdW5jdGlvbigpe3ZhciBlPVtdLG49W107dGhpcy5lbHMuZWFjaChmdW5jdGlvbihpLHIpe3ZhciBzPXQociksbz1zLm9mZnNldCgpLmxlZnQsbD1zLm91dGVyV2lkdGgoKTtlLnB1c2gobyksbi5wdXNoKG8rbCl9KSx0aGlzLmxlZnRzPWUsdGhpcy5yaWdodHM9bn0sYnVpbGRFbFZlcnRpY2FsczpmdW5jdGlvbigpe3ZhciBlPVtdLG49W107dGhpcy5lbHMuZWFjaChmdW5jdGlvbihpLHIpe3ZhciBzPXQociksbz1zLm9mZnNldCgpLnRvcCxsPXMub3V0ZXJIZWlnaHQoKTtlLnB1c2gobyksbi5wdXNoKG8rbCl9KSx0aGlzLnRvcHM9ZSx0aGlzLmJvdHRvbXM9bn0sZ2V0SG9yaXpvbnRhbEluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuZW5zdXJlQnVpbHQoKTt2YXIgZSxuPXRoaXMubGVmdHMsaT10aGlzLnJpZ2h0cyxyPW4ubGVuZ3RoO2ZvcihlPTA7ZTxyO2UrKylpZih0Pj1uW2VdJiZ0PGlbZV0pcmV0dXJuIGV9LGdldFZlcnRpY2FsSW5kZXg6ZnVuY3Rpb24odCl7dGhpcy5lbnN1cmVCdWlsdCgpO3ZhciBlLG49dGhpcy50b3BzLGk9dGhpcy5ib3R0b21zLHI9bi5sZW5ndGg7Zm9yKGU9MDtlPHI7ZSsrKWlmKHQ+PW5bZV0mJnQ8aVtlXSlyZXR1cm4gZX0sZ2V0TGVmdE9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMubGVmdHNbdF19LGdldExlZnRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMubGVmdHNbdF0tdGhpcy5vcmlnaW4ubGVmdH0sZ2V0UmlnaHRPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW5zdXJlQnVpbHQoKSx0aGlzLnJpZ2h0c1t0XX0sZ2V0UmlnaHRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMucmlnaHRzW3RdLXRoaXMub3JpZ2luLmxlZnR9LGdldFdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVuc3VyZUJ1aWx0KCksdGhpcy5yaWdodHNbdF0tdGhpcy5sZWZ0c1t0XX0sZ2V0VG9wT2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVuc3VyZUJ1aWx0KCksdGhpcy50b3BzW3RdfSxnZXRUb3BQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMudG9wc1t0XS10aGlzLm9yaWdpbi50b3B9LGdldEJvdHRvbU9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMuYm90dG9tc1t0XX0sZ2V0Qm90dG9tUG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW5zdXJlQnVpbHQoKSx0aGlzLmJvdHRvbXNbdF0tdGhpcy5vcmlnaW4udG9wfSxnZXRIZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW5zdXJlQnVpbHQoKSx0aGlzLmJvdHRvbXNbdF0tdGhpcy50b3BzW3RdfSxxdWVyeUJvdW5kaW5nUmVjdDpmdW5jdGlvbigpe3ZhciB0PWModGhpcy5lbHMuZXEoMCkpO2lmKCF0LmlzKGRvY3VtZW50KSlyZXR1cm4gZih0KX0saXNQb2ludEluQm91bmRzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaXNMZWZ0SW5Cb3VuZHModCkmJnRoaXMuaXNUb3BJbkJvdW5kcyhlKX0saXNMZWZ0SW5Cb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuYm91bmRpbmdSZWN0fHx0Pj10aGlzLmJvdW5kaW5nUmVjdC5sZWZ0JiZ0PHRoaXMuYm91bmRpbmdSZWN0LnJpZ2h0fSxpc1RvcEluQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLmJvdW5kaW5nUmVjdHx8dD49dGhpcy5ib3VuZGluZ1JlY3QudG9wJiZ0PHRoaXMuYm91bmRpbmdSZWN0LmJvdHRvbX19KSxoZT1qdC5EcmFnTGlzdGVuZXI9d3QuZXh0ZW5kKGFlLHVlLHtvcHRpb25zOm51bGwsc3ViamVjdEVsOm51bGwsb3JpZ2luWDpudWxsLG9yaWdpblk6bnVsbCxzY3JvbGxFbDpudWxsLGlzSW50ZXJhY3Rpbmc6ITEsaXNEaXN0YW5jZVN1cnBhc3NlZDohMSxpc0RlbGF5RW5kZWQ6ITEsaXNEcmFnZ2luZzohMSxpc1RvdWNoOiExLGRlbGF5Om51bGwsZGVsYXlUaW1lb3V0SWQ6bnVsbCxtaW5EaXN0YW5jZTpudWxsLGhhbmRsZVRvdWNoU2Nyb2xsUHJveHk6bnVsbCxjb25zdHJ1Y3RvcjpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dHx8e30sdGhpcy5oYW5kbGVUb3VjaFNjcm9sbFByb3h5PWx0KHRoaXMsImhhbmRsZVRvdWNoU2Nyb2xsIiksdGhpcy5pbml0TW91c2VJZ25vcmluZyg1MDApfSxzdGFydEludGVyYWN0aW9uOmZ1bmN0aW9uKGUsbil7dmFyIGk9RChlKTtpZigibW91c2Vkb3duIj09PWUudHlwZSl7aWYodGhpcy5pc0lnbm9yaW5nTW91c2UpcmV0dXJuO2lmKCFTKGUpKXJldHVybjtlLnByZXZlbnREZWZhdWx0KCl9dGhpcy5pc0ludGVyYWN0aW5nfHwobj1ufHx7fSx0aGlzLmRlbGF5PUoobi5kZWxheSx0aGlzLm9wdGlvbnMuZGVsYXksMCksdGhpcy5taW5EaXN0YW5jZT1KKG4uZGlzdGFuY2UsdGhpcy5vcHRpb25zLmRpc3RhbmNlLDApLHRoaXMuc3ViamVjdEVsPXRoaXMub3B0aW9ucy5zdWJqZWN0RWwsdGhpcy5pc0ludGVyYWN0aW5nPSEwLHRoaXMuaXNUb3VjaD1pLHRoaXMuaXNEZWxheUVuZGVkPSExLHRoaXMuaXNEaXN0YW5jZVN1cnBhc3NlZD0hMSx0aGlzLm9yaWdpblg9dyhlKSx0aGlzLm9yaWdpblk9RShlKSx0aGlzLnNjcm9sbEVsPWModChlLnRhcmdldCkpLHRoaXMuYmluZEhhbmRsZXJzKCksdGhpcy5pbml0QXV0b1Njcm9sbCgpLHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25TdGFydChlKSx0aGlzLnN0YXJ0RGVsYXkoZSksdGhpcy5taW5EaXN0YW5jZXx8dGhpcy5oYW5kbGVEaXN0YW5jZVN1cnBhc3NlZChlKSl9LGhhbmRsZUludGVyYWN0aW9uU3RhcnQ6ZnVuY3Rpb24odCl7dGhpcy50cmlnZ2VyKCJpbnRlcmFjdGlvblN0YXJ0Iix0KX0sZW5kSW50ZXJhY3Rpb246ZnVuY3Rpb24odCxlKXt0aGlzLmlzSW50ZXJhY3RpbmcmJih0aGlzLmVuZERyYWcodCksdGhpcy5kZWxheVRpbWVvdXRJZCYmKGNsZWFyVGltZW91dCh0aGlzLmRlbGF5VGltZW91dElkKSx0aGlzLmRlbGF5VGltZW91dElkPW51bGwpLHRoaXMuZGVzdHJveUF1dG9TY3JvbGwoKSx0aGlzLnVuYmluZEhhbmRsZXJzKCksdGhpcy5pc0ludGVyYWN0aW5nPSExLHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQodCxlKSx0aGlzLmlzVG91Y2gmJnRoaXMudGVtcElnbm9yZU1vdXNlKCkpfSxoYW5kbGVJbnRlcmFjdGlvbkVuZDpmdW5jdGlvbih0LGUpe3RoaXMudHJpZ2dlcigiaW50ZXJhY3Rpb25FbmQiLHQsZXx8ITEpfSxiaW5kSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49MTt0aGlzLmlzVG91Y2g/KHRoaXMubGlzdGVuVG8odChkb2N1bWVudCkse3RvdWNobW92ZTp0aGlzLmhhbmRsZVRvdWNoTW92ZSx0b3VjaGVuZDp0aGlzLmVuZEludGVyYWN0aW9uLHRvdWNoY2FuY2VsOnRoaXMuZW5kSW50ZXJhY3Rpb24sdG91Y2hzdGFydDpmdW5jdGlvbih0KXtuP24tLTplLmVuZEludGVyYWN0aW9uKHQsITApfX0pLCFIKHRoaXMuaGFuZGxlVG91Y2hTY3JvbGxQcm94eSkmJnRoaXMuc2Nyb2xsRWwmJnRoaXMubGlzdGVuVG8odGhpcy5zY3JvbGxFbCwic2Nyb2xsIix0aGlzLmhhbmRsZVRvdWNoU2Nyb2xsKSk6dGhpcy5saXN0ZW5Ubyh0KGRvY3VtZW50KSx7bW91c2Vtb3ZlOnRoaXMuaGFuZGxlTW91c2VNb3ZlLG1vdXNldXA6dGhpcy5lbmRJbnRlcmFjdGlvbn0pLHRoaXMubGlzdGVuVG8odChkb2N1bWVudCkse3NlbGVjdHN0YXJ0OkMsY29udGV4dG1lbnU6Q30pfSx1bmJpbmRIYW5kbGVyczpmdW5jdGlvbigpe3RoaXMuc3RvcExpc3RlbmluZ1RvKHQoZG9jdW1lbnQpKSxUKHRoaXMuaGFuZGxlVG91Y2hTY3JvbGxQcm94eSksdGhpcy5zY3JvbGxFbCYmdGhpcy5zdG9wTGlzdGVuaW5nVG8odGhpcy5zY3JvbGxFbCwic2Nyb2xsIil9LHN0YXJ0RHJhZzpmdW5jdGlvbih0LGUpe3RoaXMuc3RhcnRJbnRlcmFjdGlvbih0LGUpLHRoaXMuaXNEcmFnZ2luZ3x8KHRoaXMuaXNEcmFnZ2luZz0hMCx0aGlzLmhhbmRsZURyYWdTdGFydCh0KSl9LGhhbmRsZURyYWdTdGFydDpmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoImRyYWdTdGFydCIsdCl9LGhhbmRsZU1vdmU6ZnVuY3Rpb24odCl7dmFyIGUsbj13KHQpLXRoaXMub3JpZ2luWCxpPUUodCktdGhpcy5vcmlnaW5ZLHI9dGhpcy5taW5EaXN0YW5jZTt0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWR8fChlPW4qbitpKmksZT49cipyJiZ0aGlzLmhhbmRsZURpc3RhbmNlU3VycGFzc2VkKHQpKSx0aGlzLmlzRHJhZ2dpbmcmJnRoaXMuaGFuZGxlRHJhZyhuLGksdCl9LGhhbmRsZURyYWc6ZnVuY3Rpb24odCxlLG4pe3RoaXMudHJpZ2dlcigiZHJhZyIsdCxlLG4pLHRoaXMudXBkYXRlQXV0b1Njcm9sbChuKX0sZW5kRHJhZzpmdW5jdGlvbih0KXt0aGlzLmlzRHJhZ2dpbmcmJih0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5oYW5kbGVEcmFnRW5kKHQpKX0saGFuZGxlRHJhZ0VuZDpmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoImRyYWdFbmQiLHQpfSxzdGFydERlbGF5OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5kZWxheT90aGlzLmRlbGF5VGltZW91dElkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmhhbmRsZURlbGF5RW5kKHQpfSx0aGlzLmRlbGF5KTp0aGlzLmhhbmRsZURlbGF5RW5kKHQpfSxoYW5kbGVEZWxheUVuZDpmdW5jdGlvbih0KXt0aGlzLmlzRGVsYXlFbmRlZD0hMCx0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWQmJnRoaXMuc3RhcnREcmFnKHQpfSxoYW5kbGVEaXN0YW5jZVN1cnBhc3NlZDpmdW5jdGlvbih0KXt0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWQ9ITAsdGhpcy5pc0RlbGF5RW5kZWQmJnRoaXMuc3RhcnREcmFnKHQpfSxoYW5kbGVUb3VjaE1vdmU6ZnVuY3Rpb24odCl7dGhpcy5pc0RyYWdnaW5nJiZ0LnByZXZlbnREZWZhdWx0KCksdGhpcy5oYW5kbGVNb3ZlKHQpfSxoYW5kbGVNb3VzZU1vdmU6ZnVuY3Rpb24odCl7dGhpcy5oYW5kbGVNb3ZlKHQpfSxoYW5kbGVUb3VjaFNjcm9sbDpmdW5jdGlvbih0KXt0aGlzLmlzRHJhZ2dpbmd8fHRoaXMuZW5kSW50ZXJhY3Rpb24odCwhMCl9LHRyaWdnZXI6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zW3RdJiZ0aGlzLm9wdGlvbnNbdF0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpLHRoaXNbIl8iK3RdJiZ0aGlzWyJfIit0XS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9fSk7aGUubWl4aW4oe2lzQXV0b1Njcm9sbDohMSxzY3JvbGxCb3VuZHM6bnVsbCxzY3JvbGxUb3BWZWw6bnVsbCxzY3JvbGxMZWZ0VmVsOm51bGwsc2Nyb2xsSW50ZXJ2YWxJZDpudWxsLHNjcm9sbFNlbnNpdGl2aXR5OjMwLHNjcm9sbFNwZWVkOjIwMCxzY3JvbGxJbnRlcnZhbE1zOjUwLGluaXRBdXRvU2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zY3JvbGxFbDt0aGlzLmlzQXV0b1Njcm9sbD10aGlzLm9wdGlvbnMuc2Nyb2xsJiZ0JiYhdC5pcyh3aW5kb3cpJiYhdC5pcyhkb2N1bWVudCksdGhpcy5pc0F1dG9TY3JvbGwmJnRoaXMubGlzdGVuVG8odCwic2Nyb2xsIixhdCh0aGlzLmhhbmRsZURlYm91bmNlZFNjcm9sbCwxMDApKX0sZGVzdHJveUF1dG9TY3JvbGw6ZnVuY3Rpb24oKXt0aGlzLmVuZEF1dG9TY3JvbGwoKSx0aGlzLmlzQXV0b1Njcm9sbCYmdGhpcy5zdG9wTGlzdGVuaW5nVG8odGhpcy5zY3JvbGxFbCwic2Nyb2xsIil9LGNvbXB1dGVTY3JvbGxCb3VuZHM6ZnVuY3Rpb24oKXt0aGlzLmlzQXV0b1Njcm9sbCYmKHRoaXMuc2Nyb2xsQm91bmRzPWgodGhpcy5zY3JvbGxFbCkpfSx1cGRhdGVBdXRvU2Nyb2xsOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLHM9dGhpcy5zY3JvbGxTZW5zaXRpdml0eSxvPXRoaXMuc2Nyb2xsQm91bmRzLGw9MCxhPTA7byYmKGU9KHMtKEUodCktby50b3ApKS9zLG49KHMtKG8uYm90dG9tLUUodCkpKS9zLGk9KHMtKHcodCktby5sZWZ0KSkvcyxyPShzLShvLnJpZ2h0LXcodCkpKS9zLGU+PTAmJmU8PTE/bD1lKnRoaXMuc2Nyb2xsU3BlZWQqLTE6bj49MCYmbjw9MSYmKGw9bip0aGlzLnNjcm9sbFNwZWVkKSxpPj0wJiZpPD0xP2E9aSp0aGlzLnNjcm9sbFNwZWVkKi0xOnI+PTAmJnI8PTEmJihhPXIqdGhpcy5zY3JvbGxTcGVlZCkpLHRoaXMuc2V0U2Nyb2xsVmVsKGwsYSl9LHNldFNjcm9sbFZlbDpmdW5jdGlvbih0LGUpe3RoaXMuc2Nyb2xsVG9wVmVsPXQsdGhpcy5zY3JvbGxMZWZ0VmVsPWUsdGhpcy5jb25zdHJhaW5TY3JvbGxWZWwoKSwhdGhpcy5zY3JvbGxUb3BWZWwmJiF0aGlzLnNjcm9sbExlZnRWZWx8fHRoaXMuc2Nyb2xsSW50ZXJ2YWxJZHx8KHRoaXMuc2Nyb2xsSW50ZXJ2YWxJZD1zZXRJbnRlcnZhbChsdCh0aGlzLCJzY3JvbGxJbnRlcnZhbEZ1bmMiKSx0aGlzLnNjcm9sbEludGVydmFsTXMpKX0sY29uc3RyYWluU2Nyb2xsVmVsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zY3JvbGxFbDt0aGlzLnNjcm9sbFRvcFZlbDwwP3Quc2Nyb2xsVG9wKCk8PTAmJih0aGlzLnNjcm9sbFRvcFZlbD0wKTp0aGlzLnNjcm9sbFRvcFZlbD4wJiZ0LnNjcm9sbFRvcCgpK3RbMF0uY2xpZW50SGVpZ2h0Pj10WzBdLnNjcm9sbEhlaWdodCYmKHRoaXMuc2Nyb2xsVG9wVmVsPTApLHRoaXMuc2Nyb2xsTGVmdFZlbDwwP3Quc2Nyb2xsTGVmdCgpPD0wJiYodGhpcy5zY3JvbGxMZWZ0VmVsPTApOnRoaXMuc2Nyb2xsTGVmdFZlbD4wJiZ0LnNjcm9sbExlZnQoKSt0WzBdLmNsaWVudFdpZHRoPj10WzBdLnNjcm9sbFdpZHRoJiYodGhpcy5zY3JvbGxMZWZ0VmVsPTApfSxzY3JvbGxJbnRlcnZhbEZ1bmM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNjcm9sbEVsLGU9dGhpcy5zY3JvbGxJbnRlcnZhbE1zLzFlMzt0aGlzLnNjcm9sbFRvcFZlbCYmdC5zY3JvbGxUb3AodC5zY3JvbGxUb3AoKSt0aGlzLnNjcm9sbFRvcFZlbCplKSx0aGlzLnNjcm9sbExlZnRWZWwmJnQuc2Nyb2xsTGVmdCh0LnNjcm9sbExlZnQoKSt0aGlzLnNjcm9sbExlZnRWZWwqZSksdGhpcy5jb25zdHJhaW5TY3JvbGxWZWwoKSx0aGlzLnNjcm9sbFRvcFZlbHx8dGhpcy5zY3JvbGxMZWZ0VmVsfHx0aGlzLmVuZEF1dG9TY3JvbGwoKX0sZW5kQXV0b1Njcm9sbDpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSW50ZXJ2YWxJZCYmKGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbElkKSx0aGlzLnNjcm9sbEludGVydmFsSWQ9bnVsbCx0aGlzLmhhbmRsZVNjcm9sbEVuZCgpKX0saGFuZGxlRGVib3VuY2VkU2Nyb2xsOmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxJbnRlcnZhbElkfHx0aGlzLmhhbmRsZVNjcm9sbEVuZCgpfSxoYW5kbGVTY3JvbGxFbmQ6ZnVuY3Rpb24oKXt9fSk7dmFyIGZlPWhlLmV4dGVuZCh7Y29tcG9uZW50Om51bGwsb3JpZ0hpdDpudWxsLGhpdDpudWxsLGNvb3JkQWRqdXN0Om51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24odCxlKXtoZS5jYWxsKHRoaXMsZSksdGhpcy5jb21wb25lbnQ9dH0saGFuZGxlSW50ZXJhY3Rpb25TdGFydDpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj10aGlzLnN1YmplY3RFbDt0aGlzLmNvbXB1dGVDb29yZHMoKSx0PyhuPXtsZWZ0OncodCksdG9wOkUodCl9LGk9bixyJiYoZT1oKHIpLGk9UihpLGUpKSx0aGlzLm9yaWdIaXQ9dGhpcy5xdWVyeUhpdChpLmxlZnQsaS50b3ApLHImJnRoaXMub3B0aW9ucy5zdWJqZWN0Q2VudGVyJiYodGhpcy5vcmlnSGl0JiYoZT14KHRoaXMub3JpZ0hpdCxlKXx8ZSksaT1JKGUpKSx0aGlzLmNvb3JkQWRqdXN0PWsoaSxuKSk6KHRoaXMub3JpZ0hpdD1udWxsLHRoaXMuY29vcmRBZGp1c3Q9bnVsbCksaGUucHJvdG90eXBlLmhhbmRsZUludGVyYWN0aW9uU3RhcnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjb21wdXRlQ29vcmRzOmZ1bmN0aW9uKCl7dGhpcy5jb21wb25lbnQucHJlcGFyZUhpdHMoKSx0aGlzLmNvbXB1dGVTY3JvbGxCb3VuZHMoKX0saGFuZGxlRHJhZ1N0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBlO2hlLnByb3RvdHlwZS5oYW5kbGVEcmFnU3RhcnQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGU9dGhpcy5xdWVyeUhpdCh3KHQpLEUodCkpLGUmJnRoaXMuaGFuZGxlSGl0T3ZlcihlKX0saGFuZGxlRHJhZzpmdW5jdGlvbih0LGUsbil7dmFyIGk7aGUucHJvdG90eXBlLmhhbmRsZURyYWcuYXBwbHkodGhpcyxhcmd1bWVudHMpLGk9dGhpcy5xdWVyeUhpdCh3KG4pLEUobikpLGJ0KGksdGhpcy5oaXQpfHwodGhpcy5oaXQmJnRoaXMuaGFuZGxlSGl0T3V0KCksaSYmdGhpcy5oYW5kbGVIaXRPdmVyKGkpKX0saGFuZGxlRHJhZ0VuZDpmdW5jdGlvbigpe3RoaXMuaGFuZGxlSGl0RG9uZSgpLGhlLnByb3RvdHlwZS5oYW5kbGVEcmFnRW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saGFuZGxlSGl0T3ZlcjpmdW5jdGlvbih0KXt2YXIgZT1idCh0LHRoaXMub3JpZ0hpdCk7dGhpcy5oaXQ9dCx0aGlzLnRyaWdnZXIoImhpdE92ZXIiLHRoaXMuaGl0LGUsdGhpcy5vcmlnSGl0KX0saGFuZGxlSGl0T3V0OmZ1bmN0aW9uKCl7dGhpcy5oaXQmJih0aGlzLnRyaWdnZXIoImhpdE91dCIsdGhpcy5oaXQpLHRoaXMuaGFuZGxlSGl0RG9uZSgpLHRoaXMuaGl0PW51bGwpfSxoYW5kbGVIaXREb25lOmZ1bmN0aW9uKCl7dGhpcy5oaXQmJnRoaXMudHJpZ2dlcigiaGl0RG9uZSIsdGhpcy5oaXQpfSxoYW5kbGVJbnRlcmFjdGlvbkVuZDpmdW5jdGlvbigpe2hlLnByb3RvdHlwZS5oYW5kbGVJbnRlcmFjdGlvbkVuZC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5vcmlnSGl0PW51bGwsdGhpcy5oaXQ9bnVsbCx0aGlzLmNvbXBvbmVudC5yZWxlYXNlSGl0cygpfSxoYW5kbGVTY3JvbGxFbmQ6ZnVuY3Rpb24oKXtoZS5wcm90b3R5cGUuaGFuZGxlU2Nyb2xsRW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmNvbXB1dGVDb29yZHMoKX0scXVlcnlIaXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jb29yZEFkanVzdCYmKHQrPXRoaXMuY29vcmRBZGp1c3QubGVmdCxlKz10aGlzLmNvb3JkQWRqdXN0LnRvcCksdGhpcy5jb21wb25lbnQucXVlcnlIaXQodCxlKX19KSxnZT13dC5leHRlbmQoYWUse29wdGlvbnM6bnVsbCxzb3VyY2VFbDpudWxsLGVsOm51bGwscGFyZW50RWw6bnVsbCx0b3AwOm51bGwsbGVmdDA6bnVsbCx5MDpudWxsLHgwOm51bGwsdG9wRGVsdGE6bnVsbCxsZWZ0RGVsdGE6bnVsbCxpc0ZvbGxvd2luZzohMSxpc0hpZGRlbjohMSxpc0FuaW1hdGluZzohMSxjb25zdHJ1Y3RvcjpmdW5jdGlvbihlLG4pe3RoaXMub3B0aW9ucz1uPW58fHt9LHRoaXMuc291cmNlRWw9ZSx0aGlzLnBhcmVudEVsPW4ucGFyZW50RWw/dChuLnBhcmVudEVsKTplLnBhcmVudCgpfSxzdGFydDpmdW5jdGlvbihlKXt0aGlzLmlzRm9sbG93aW5nfHwodGhpcy5pc0ZvbGxvd2luZz0hMCx0aGlzLnkwPUUoZSksdGhpcy54MD13KGUpLHRoaXMudG9wRGVsdGE9MCx0aGlzLmxlZnREZWx0YT0wLHRoaXMuaXNIaWRkZW58fHRoaXMudXBkYXRlUG9zaXRpb24oKSxEKGUpP3RoaXMubGlzdGVuVG8odChkb2N1bWVudCksInRvdWNobW92ZSIsdGhpcy5oYW5kbGVNb3ZlKTp0aGlzLmxpc3RlblRvKHQoZG9jdW1lbnQpLCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW92ZSkpfSxzdG9wOmZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3IuaXNBbmltYXRpbmc9ITEsci5yZW1vdmVFbGVtZW50KCksci50b3AwPXIubGVmdDA9bnVsbCxuJiZuKCl9dmFyIHI9dGhpcyxzPXRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbjt0aGlzLmlzRm9sbG93aW5nJiYhdGhpcy5pc0FuaW1hdGluZyYmKHRoaXMuaXNGb2xsb3dpbmc9ITEsdGhpcy5zdG9wTGlzdGVuaW5nVG8odChkb2N1bWVudCkpLGUmJnMmJiF0aGlzLmlzSGlkZGVuPyh0aGlzLmlzQW5pbWF0aW5nPSEwLHRoaXMuZWwuYW5pbWF0ZSh7dG9wOnRoaXMudG9wMCxsZWZ0OnRoaXMubGVmdDB9LHtkdXJhdGlvbjpzLGNvbXBsZXRlOml9KSk6aSgpKX0sZ2V0RWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsO3JldHVybiB0fHwodD10aGlzLmVsPXRoaXMuc291cmNlRWwuY2xvbmUoKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuYWRkaXRpb25hbENsYXNzfHwiIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6IiIsZGlzcGxheTp0aGlzLmlzSGlkZGVuPyJub25lIjoiIixtYXJnaW46MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIix3aWR0aDp0aGlzLnNvdXJjZUVsLndpZHRoKCksaGVpZ2h0OnRoaXMuc291cmNlRWwuaGVpZ2h0KCksb3BhY2l0eTp0aGlzLm9wdGlvbnMub3BhY2l0eXx8IiIsekluZGV4OnRoaXMub3B0aW9ucy56SW5kZXh9KSx0LmFkZENsYXNzKCJmYy11bnNlbGVjdGFibGUiKSx0LmFwcGVuZFRvKHRoaXMucGFyZW50RWwpKSx0fSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy5lbCYmKHRoaXMuZWwucmVtb3ZlKCksdGhpcy5lbD1udWxsKX0sdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdCxlO3RoaXMuZ2V0RWwoKSxudWxsPT09dGhpcy50b3AwJiYodD10aGlzLnNvdXJjZUVsLm9mZnNldCgpLGU9dGhpcy5lbC5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKSx0aGlzLnRvcDA9dC50b3AtZS50b3AsdGhpcy5sZWZ0MD10LmxlZnQtZS5sZWZ0KSx0aGlzLmVsLmNzcyh7dG9wOnRoaXMudG9wMCt0aGlzLnRvcERlbHRhLGxlZnQ6dGhpcy5sZWZ0MCt0aGlzLmxlZnREZWx0YX0pfSxoYW5kbGVNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMudG9wRGVsdGE9RSh0KS10aGlzLnkwLHRoaXMubGVmdERlbHRhPXcodCktdGhpcy54MCx0aGlzLmlzSGlkZGVufHx0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVufHwodGhpcy5pc0hpZGRlbj0hMCx0aGlzLmVsJiZ0aGlzLmVsLmhpZGUoKSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVuJiYodGhpcy5pc0hpZGRlbj0hMSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5nZXRFbCgpLnNob3coKSl9fSkscGU9anQuR3JpZD13dC5leHRlbmQoYWUsdWUse2hhc0RheUludGVyYWN0aW9uczohMCx2aWV3Om51bGwsaXNSVEw6bnVsbCxzdGFydDpudWxsLGVuZDpudWxsLGVsOm51bGwsZWxzQnlGaWxsOm51bGwsZXZlbnRUaW1lRm9ybWF0Om51bGwsZGlzcGxheUV2ZW50VGltZTpudWxsLGRpc3BsYXlFdmVudEVuZDpudWxsLG1pblJlc2l6ZUR1cmF0aW9uOm51bGwsbGFyZ2VVbml0Om51bGwsZGF5RHJhZ0xpc3RlbmVyOm51bGwsc2VnRHJhZ0xpc3RlbmVyOm51bGwsc2VnUmVzaXplTGlzdGVuZXI6bnVsbCxleHRlcm5hbERyYWdMaXN0ZW5lcjpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQpe3RoaXMudmlldz10LHRoaXMuaXNSVEw9dC5vcHQoImlzUlRMIiksdGhpcy5lbHNCeUZpbGw9e30sdGhpcy5kYXlEcmFnTGlzdGVuZXI9dGhpcy5idWlsZERheURyYWdMaXN0ZW5lcigpLHRoaXMuaW5pdE1vdXNlSWdub3JpbmcoKX0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJzbWFsbFRpbWVGb3JtYXQiKX0sY29tcHV0ZURpc3BsYXlFdmVudFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sY29tcHV0ZURpc3BsYXlFdmVudEVuZDpmdW5jdGlvbigpe3JldHVybiEwfSxzZXRSYW5nZTpmdW5jdGlvbih0KXt0aGlzLnN0YXJ0PXQuc3RhcnQuY2xvbmUoKSx0aGlzLmVuZD10LmVuZC5jbG9uZSgpLHRoaXMucmFuZ2VVcGRhdGVkKCksdGhpcy5wcm9jZXNzUmFuZ2VPcHRpb25zKCl9LHJhbmdlVXBkYXRlZDpmdW5jdGlvbigpe30scHJvY2Vzc1JhbmdlT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLnZpZXc7dGhpcy5ldmVudFRpbWVGb3JtYXQ9bi5vcHQoImV2ZW50VGltZUZvcm1hdCIpfHxuLm9wdCgidGltZUZvcm1hdCIpfHx0aGlzLmNvbXB1dGVFdmVudFRpbWVGb3JtYXQoKSx0PW4ub3B0KCJkaXNwbGF5RXZlbnRUaW1lIiksbnVsbD09dCYmKHQ9dGhpcy5jb21wdXRlRGlzcGxheUV2ZW50VGltZSgpKSxlPW4ub3B0KCJkaXNwbGF5RXZlbnRFbmQiKSxudWxsPT1lJiYoZT10aGlzLmNvbXB1dGVEaXNwbGF5RXZlbnRFbmQoKSksdGhpcy5kaXNwbGF5RXZlbnRUaW1lPXQsdGhpcy5kaXNwbGF5RXZlbnRFbmQ9ZX0sc3BhblRvU2VnczpmdW5jdGlvbih0KXt9LGRpZmZEYXRlczpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmxhcmdlVW5pdD9BKHQsZSx0aGlzLmxhcmdlVW5pdCk6Tih0LGUpfSxwcmVwYXJlSGl0czpmdW5jdGlvbigpe30scmVsZWFzZUhpdHM6ZnVuY3Rpb24oKXt9LHF1ZXJ5SGl0OmZ1bmN0aW9uKHQsZSl7fSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe30sZ2V0SGl0RWw6ZnVuY3Rpb24odCl7fSxzZXRFbGVtZW50OmZ1bmN0aW9uKHQpe3RoaXMuZWw9dCx0aGlzLmhhc0RheUludGVyYWN0aW9ucyYmKGIodCksdGhpcy5iaW5kRGF5SGFuZGxlcigidG91Y2hzdGFydCIsdGhpcy5kYXlUb3VjaFN0YXJ0KSx0aGlzLmJpbmREYXlIYW5kbGVyKCJtb3VzZWRvd24iLHRoaXMuZGF5TW91c2Vkb3duKSksdGhpcy5iaW5kU2VnSGFuZGxlcnMoKSx0aGlzLmJpbmRHbG9iYWxIYW5kbGVycygpfSxiaW5kRGF5SGFuZGxlcjpmdW5jdGlvbihlLG4pe3ZhciBpPXRoaXM7dGhpcy5lbC5vbihlLGZ1bmN0aW9uKGUpe2lmKCF0KGUudGFyZ2V0KS5pcyhpLnNlZ1NlbGVjdG9yKyIsIitpLnNlZ1NlbGVjdG9yKyIgKiwuZmMtbW9yZSxhW2RhdGEtZ290b10iKSlyZXR1cm4gbi5jYWxsKGksZSl9KX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKSx0aGlzLmNsZWFyRHJhZ0xpc3RlbmVycygpLHRoaXMuZWwucmVtb3ZlKCl9LHJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7fSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe30sdW5yZW5kZXJEYXRlczpmdW5jdGlvbigpe30sYmluZEdsb2JhbEhhbmRsZXJzOmZ1bmN0aW9uKCl7dGhpcy5saXN0ZW5Ubyh0KGRvY3VtZW50KSx7ZHJhZ3N0YXJ0OnRoaXMuZXh0ZXJuYWxEcmFnU3RhcnQsc29ydHN0YXJ0OnRoaXMuZXh0ZXJuYWxEcmFnU3RhcnR9KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLnN0b3BMaXN0ZW5pbmdUbyh0KGRvY3VtZW50KSl9LGRheU1vdXNlZG93bjpmdW5jdGlvbih0KXt0aGlzLmlzSWdub3JpbmdNb3VzZXx8dGhpcy5kYXlEcmFnTGlzdGVuZXIuc3RhcnRJbnRlcmFjdGlvbih0LHt9KX0sZGF5VG91Y2hTdGFydDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXc7KGUuaXNTZWxlY3RlZHx8ZS5zZWxlY3RlZEV2ZW50KSYmdGhpcy50ZW1wSWdub3JlTW91c2UoKSx0aGlzLmRheURyYWdMaXN0ZW5lci5zdGFydEludGVyYWN0aW9uKHQse2RlbGF5OnRoaXMudmlldy5vcHQoImxvbmdQcmVzc0RlbGF5Iil9KX0sYnVpbGREYXlEcmFnTGlzdGVuZXI6ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcyxpPXRoaXMudmlldyxyPWkub3B0KCJzZWxlY3RhYmxlIiksbD1uZXcgZmUodGhpcyx7c2Nyb2xsOmkub3B0KCJkcmFnU2Nyb2xsIiksaW50ZXJhY3Rpb25TdGFydDpmdW5jdGlvbigpe3Q9bC5vcmlnSGl0LGU9bnVsbH0sZHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7aS51bnNlbGVjdCgpfSxoaXRPdmVyOmZ1bmN0aW9uKGksbyxsKXtsJiYob3x8KHQ9bnVsbCksciYmKGU9bi5jb21wdXRlU2VsZWN0aW9uKG4uZ2V0SGl0U3BhbihsKSxuLmdldEhpdFNwYW4oaSkpLGU/bi5yZW5kZXJTZWxlY3Rpb24oZSk6ZT09PSExJiZzKCkpKX0saGl0T3V0OmZ1bmN0aW9uKCl7dD1udWxsLGU9bnVsbCxuLnVucmVuZGVyU2VsZWN0aW9uKCl9LGhpdERvbmU6ZnVuY3Rpb24oKXtvKCl9LGludGVyYWN0aW9uRW5kOmZ1bmN0aW9uKHIscyl7c3x8KHQmJiFuLmlzSWdub3JpbmdNb3VzZSYmaS50cmlnZ2VyRGF5Q2xpY2sobi5nZXRIaXRTcGFuKHQpLG4uZ2V0SGl0RWwodCksciksZSYmaS5yZXBvcnRTZWxlY3Rpb24oZSxyKSl9fSk7cmV0dXJuIGx9LGNsZWFyRHJhZ0xpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuZGF5RHJhZ0xpc3RlbmVyLmVuZEludGVyYWN0aW9uKCksdGhpcy5zZWdEcmFnTGlzdGVuZXImJnRoaXMuc2VnRHJhZ0xpc3RlbmVyLmVuZEludGVyYWN0aW9uKCksdGhpcy5zZWdSZXNpemVMaXN0ZW5lciYmdGhpcy5zZWdSZXNpemVMaXN0ZW5lci5lbmRJbnRlcmFjdGlvbigpLHRoaXMuZXh0ZXJuYWxEcmFnTGlzdGVuZXImJnRoaXMuZXh0ZXJuYWxEcmFnTGlzdGVuZXIuZW5kSW50ZXJhY3Rpb24oKX0scmVuZGVyRXZlbnRMb2NhdGlvbkhlbHBlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZmFicmljYXRlSGVscGVyRXZlbnQodCxlKTtyZXR1cm4gdGhpcy5yZW5kZXJIZWxwZXIobixlKX0sZmFicmljYXRlSGVscGVyRXZlbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1lP1ooZS5ldmVudCk6e307cmV0dXJuIG4uc3RhcnQ9dC5zdGFydC5jbG9uZSgpLG4uZW5kPXQuZW5kP3QuZW5kLmNsb25lKCk6bnVsbCxuLmFsbERheT1udWxsLHRoaXMudmlldy5jYWxlbmRhci5ub3JtYWxpemVFdmVudERhdGVzKG4pLG4uY2xhc3NOYW1lPShuLmNsYXNzTmFtZXx8W10pLmNvbmNhdCgiZmMtaGVscGVyIiksZXx8KG4uZWRpdGFibGU9ITEpLG59LHJlbmRlckhlbHBlcjpmdW5jdGlvbih0LGUpe30sdW5yZW5kZXJIZWxwZXI6ZnVuY3Rpb24oKXt9LHJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbih0KXt0aGlzLnJlbmRlckhpZ2hsaWdodCh0KX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCl9LGNvbXB1dGVTZWxlY3Rpb246ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNvbXB1dGVTZWxlY3Rpb25TcGFuKHQsZSk7cmV0dXJuIShuJiYhdGhpcy52aWV3LmNhbGVuZGFyLmlzU2VsZWN0aW9uU3BhbkFsbG93ZWQobikpJiZufSxjb21wdXRlU2VsZWN0aW9uU3BhbjpmdW5jdGlvbih0LGUpe3ZhciBuPVt0LnN0YXJ0LHQuZW5kLGUuc3RhcnQsZS5lbmRdO3JldHVybiBuLnNvcnQoc3QpLHtzdGFydDpuWzBdLmNsb25lKCksZW5kOm5bM10uY2xvbmUoKX19LHJlbmRlckhpZ2hsaWdodDpmdW5jdGlvbih0KXt0aGlzLnJlbmRlckZpbGwoImhpZ2hsaWdodCIsdGhpcy5zcGFuVG9TZWdzKHQpKX0sdW5yZW5kZXJIaWdobGlnaHQ6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyRmlsbCgiaGlnaGxpZ2h0Iil9LGhpZ2hsaWdodFNlZ0NsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm5bImZjLWhpZ2hsaWdodCJdfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7fSx1bnJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt9LGdldE5vd0luZGljYXRvclVuaXQ6ZnVuY3Rpb24oKXt9LHJlbmRlck5vd0luZGljYXRvcjpmdW5jdGlvbih0KXt9LHVucmVuZGVyTm93SW5kaWNhdG9yOmZ1bmN0aW9uKCl7fSxyZW5kZXJGaWxsOmZ1bmN0aW9uKHQsZSl7fSx1bnJlbmRlckZpbGw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbHNCeUZpbGxbdF07ZSYmKGUucmVtb3ZlKCksZGVsZXRlIHRoaXMuZWxzQnlGaWxsW3RdKX0scmVuZGVyRmlsbFNlZ0VsczpmdW5jdGlvbihlLG4pe3ZhciBpLHI9dGhpcyxzPXRoaXNbZSsiU2VnRWwiXSxvPSIiLGw9W107aWYobi5sZW5ndGgpe2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspbys9dGhpcy5maWxsU2VnSHRtbChlLG5baV0pO3QobykuZWFjaChmdW5jdGlvbihlLGkpe3ZhciBvPW5bZV0sYT10KGkpO3MmJihhPXMuY2FsbChyLG8sYSkpLGEmJihhPXQoYSksYS5pcyhyLmZpbGxTZWdUYWcpJiYoby5lbD1hLGwucHVzaChvKSkpfSl9cmV0dXJuIGx9LGZpbGxTZWdUYWc6ImRpdiIsZmlsbFNlZ0h0bWw6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzW3QrIlNlZ0NsYXNzZXMiXSxpPXRoaXNbdCsiU2VnQ3NzIl0scj1uP24uY2FsbCh0aGlzLGUpOltdLHM9bnQoaT9pLmNhbGwodGhpcyxlKTp7fSk7cmV0dXJuIjwiK3RoaXMuZmlsbFNlZ1RhZysoci5sZW5ndGg/JyBjbGFzcz0iJytyLmpvaW4oIiAiKSsnIic6IiIpKyhzPycgc3R5bGU9IicrcysnIic6IiIpKyIgLz4ifSxnZXREYXlDbGFzc2VzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmlldyxuPWUuY2FsZW5kYXIuZ2V0Tm93KCksaT1bImZjLSIrJHRbdC5kYXkoKV1dO3JldHVybiAxPT1lLmludGVydmFsRHVyYXRpb24uYXMoIm1vbnRocyIpJiZ0Lm1vbnRoKCkhPWUuaW50ZXJ2YWxTdGFydC5tb250aCgpJiZpLnB1c2goImZjLW90aGVyLW1vbnRoIiksdC5pc1NhbWUobiwiZGF5Iik/aS5wdXNoKCJmYy10b2RheSIsZS5oaWdobGlnaHRTdGF0ZUNsYXNzKTp0PG4/aS5wdXNoKCJmYy1wYXN0Iik6aS5wdXNoKCJmYy1mdXR1cmUiKSxpfX0pO3BlLm1peGluKHtzZWdTZWxlY3RvcjoiLmZjLWV2ZW50LWNvbnRhaW5lciA+ICoiLG1vdXNlZE92ZXJTZWc6bnVsbCxpc0RyYWdnaW5nU2VnOiExLGlzUmVzaXppbmdTZWc6ITEsaXNEcmFnZ2luZ0V4dGVybmFsOiExLHNlZ3M6bnVsbCxyZW5kZXJFdmVudHM6ZnVuY3Rpb24odCl7dmFyIGUsbj1bXSxpPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspKFR0KHRbZV0pP246aSkucHVzaCh0W2VdKTt0aGlzLnNlZ3M9W10uY29uY2F0KHRoaXMucmVuZGVyQmdFdmVudHMobiksdGhpcy5yZW5kZXJGZ0V2ZW50cyhpKSl9LHJlbmRlckJnRXZlbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZXZlbnRzVG9TZWdzKHQpO3JldHVybiB0aGlzLnJlbmRlckJnU2VncyhlKXx8ZX0scmVuZGVyRmdFdmVudHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVudHNUb1NlZ3ModCk7cmV0dXJuIHRoaXMucmVuZGVyRmdTZWdzKGUpfHxlfSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe3RoaXMuaGFuZGxlU2VnTW91c2VvdXQoKSx0aGlzLmNsZWFyRHJhZ0xpc3RlbmVycygpLHRoaXMudW5yZW5kZXJGZ1NlZ3MoKSx0aGlzLnVucmVuZGVyQmdTZWdzKCksdGhpcy5zZWdzPW51bGx9LGdldEV2ZW50U2VnczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlZ3N8fFtdfSxyZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24odCl7fSx1bnJlbmRlckZnU2VnczpmdW5jdGlvbigpe30scmVuZGVyRmdTZWdFbHM6ZnVuY3Rpb24oZSxuKXt2YXIgaSxyPXRoaXMudmlldyxzPSIiLG89W107aWYoZS5sZW5ndGgpe2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspcys9dGhpcy5mZ1NlZ0h0bWwoZVtpXSxuKTt0KHMpLmVhY2goZnVuY3Rpb24obixpKXt2YXIgcz1lW25dLGw9ci5yZXNvbHZlRXZlbnRFbChzLmV2ZW50LHQoaSkpO2wmJihsLmRhdGEoImZjLXNlZyIscykscy5lbD1sLG8ucHVzaChzKSl9KX1yZXR1cm4gb30sZmdTZWdIdG1sOmZ1bmN0aW9uKHQsZSl7fSxyZW5kZXJCZ1NlZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVuZGVyRmlsbCgiYmdFdmVudCIsdCl9LHVucmVuZGVyQmdTZWdzOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckZpbGwoImJnRXZlbnQiKX0sYmdFdmVudFNlZ0VsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudmlldy5yZXNvbHZlRXZlbnRFbCh0LmV2ZW50LGUpfSxiZ0V2ZW50U2VnQ2xhc3NlczpmdW5jdGlvbih0KXt2YXIgZT10LmV2ZW50LG49ZS5zb3VyY2V8fHt9O3JldHVyblsiZmMtYmdldmVudCJdLmNvbmNhdChlLmNsYXNzTmFtZSxuLmNsYXNzTmFtZXx8W10pfSxiZ0V2ZW50U2VnQ3NzOmZ1bmN0aW9uKHQpe3JldHVybnsiYmFja2dyb3VuZC1jb2xvciI6dGhpcy5nZXRTZWdTa2luQ3NzKHQpWyJiYWNrZ3JvdW5kLWNvbG9yIl19fSxidXNpbmVzc0hvdXJzU2VnQ2xhc3NlczpmdW5jdGlvbih0KXtyZXR1cm5bImZjLW5vbmJ1c2luZXNzIiwiZmMtYmdldmVudCJdfSxidWlsZEJ1c2luZXNzSG91clNlZ3M6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy52aWV3LmNhbGVuZGFyLmdldEN1cnJlbnRCdXNpbmVzc0hvdXJFdmVudHMoZSk7cmV0dXJuIW4ubGVuZ3RoJiZ0aGlzLnZpZXcuY2FsZW5kYXIub3B0aW9ucy5idXNpbmVzc0hvdXJzJiYobj1bdC5leHRlbmQoe30sUmUse3N0YXJ0OnRoaXMudmlldy5lbmQsZW5kOnRoaXMudmlldy5lbmQsZG93Om51bGx9KV0pLHRoaXMuZXZlbnRzVG9TZWdzKG4pfSxiaW5kU2VnSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLmJpbmRTZWdIYW5kbGVyc1RvRWwodGhpcy5lbCl9LGJpbmRTZWdIYW5kbGVyc1RvRWw6ZnVuY3Rpb24odCl7dGhpcy5iaW5kU2VnSGFuZGxlclRvRWwodCwidG91Y2hzdGFydCIsdGhpcy5oYW5kbGVTZWdUb3VjaFN0YXJ0KSx0aGlzLmJpbmRTZWdIYW5kbGVyVG9FbCh0LCJ0b3VjaGVuZCIsdGhpcy5oYW5kbGVTZWdUb3VjaEVuZCksdGhpcy5iaW5kU2VnSGFuZGxlclRvRWwodCwibW91c2VlbnRlciIsdGhpcy5oYW5kbGVTZWdNb3VzZW92ZXIpLHRoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsIm1vdXNlbGVhdmUiLHRoaXMuaGFuZGxlU2VnTW91c2VvdXQpLHRoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsIm1vdXNlZG93biIsdGhpcy5oYW5kbGVTZWdNb3VzZWRvd24pLHRoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsImNsaWNrIix0aGlzLmhhbmRsZVNlZ0NsaWNrKX0sYmluZFNlZ0hhbmRsZXJUb0VsOmZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO2Uub24obix0aGlzLnNlZ1NlbGVjdG9yLGZ1bmN0aW9uKGUpe3ZhciBuPXQodGhpcykuZGF0YSgiZmMtc2VnIik7aWYobiYmIXIuaXNEcmFnZ2luZ1NlZyYmIXIuaXNSZXNpemluZ1NlZylyZXR1cm4gaS5jYWxsKHIsbixlKX0pfSxoYW5kbGVTZWdDbGljazpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMudmlldy50cmlnZ2VyKCJldmVudENsaWNrIix0LmVsWzBdLHQuZXZlbnQsZSk7bj09PSExJiZlLnByZXZlbnREZWZhdWx0KCl9LGhhbmRsZVNlZ01vdXNlb3ZlcjpmdW5jdGlvbih0LGUpe3RoaXMuaXNJZ25vcmluZ01vdXNlfHx0aGlzLm1vdXNlZE92ZXJTZWd8fCh0aGlzLm1vdXNlZE92ZXJTZWc9dCx0aGlzLnZpZXcuaXNFdmVudFJlc2l6YWJsZSh0LmV2ZW50KSYmdC5lbC5hZGRDbGFzcygiZmMtYWxsb3ctbW91c2UtcmVzaXplIiksdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50TW91c2VvdmVyIix0LmVsWzBdLHQuZXZlbnQsZSkpfSxoYW5kbGVTZWdNb3VzZW91dDpmdW5jdGlvbih0LGUpe2U9ZXx8e30sdGhpcy5tb3VzZWRPdmVyU2VnJiYodD10fHx0aGlzLm1vdXNlZE92ZXJTZWcsdGhpcy5tb3VzZWRPdmVyU2VnPW51bGwsdGhpcy52aWV3LmlzRXZlbnRSZXNpemFibGUodC5ldmVudCkmJnQuZWwucmVtb3ZlQ2xhc3MoImZjLWFsbG93LW1vdXNlLXJlc2l6ZSIpLHRoaXMudmlldy50cmlnZ2VyKCJldmVudE1vdXNlb3V0Iix0LmVsWzBdLHQuZXZlbnQsZSkpfSxoYW5kbGVTZWdNb3VzZWRvd246ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnN0YXJ0U2VnUmVzaXplKHQsZSx7ZGlzdGFuY2U6NX0pOyFuJiZ0aGlzLnZpZXcuaXNFdmVudERyYWdnYWJsZSh0LmV2ZW50KSYmdGhpcy5idWlsZFNlZ0RyYWdMaXN0ZW5lcih0KS5zdGFydEludGVyYWN0aW9uKGUse2Rpc3RhbmNlOjV9KX0saGFuZGxlU2VnVG91Y2hTdGFydDpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy52aWV3LHI9dC5ldmVudCxzPWkuaXNFdmVudFNlbGVjdGVkKHIpLG89aS5pc0V2ZW50RHJhZ2dhYmxlKHIpLGw9aS5pc0V2ZW50UmVzaXphYmxlKHIpLGE9ITE7cyYmbCYmKGE9dGhpcy5zdGFydFNlZ1Jlc2l6ZSh0LGUpKSxhfHwhbyYmIWx8fChuPW8/dGhpcy5idWlsZFNlZ0RyYWdMaXN0ZW5lcih0KTp0aGlzLmJ1aWxkU2VnU2VsZWN0TGlzdGVuZXIodCksbi5zdGFydEludGVyYWN0aW9uKGUse2RlbGF5OnM/MDp0aGlzLnZpZXcub3B0KCJsb25nUHJlc3NEZWxheSIpfSkpLHRoaXMudGVtcElnbm9yZU1vdXNlKCl9LGhhbmRsZVNlZ1RvdWNoRW5kOmZ1bmN0aW9uKHQsZSl7dGhpcy50ZW1wSWdub3JlTW91c2UoKX0sc3RhcnRTZWdSZXNpemU6ZnVuY3Rpb24oZSxuLGkpe3JldHVybiEhdChuLnRhcmdldCkuaXMoIi5mYy1yZXNpemVyIikmJih0aGlzLmJ1aWxkU2VnUmVzaXplTGlzdGVuZXIoZSx0KG4udGFyZ2V0KS5pcygiLmZjLXN0YXJ0LXJlc2l6ZXIiKSkuc3RhcnRJbnRlcmFjdGlvbihuLGkpLCEwKX0sYnVpbGRTZWdEcmFnTGlzdGVuZXI6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9dGhpcyxsPXRoaXMudmlldyxhPWwuY2FsZW5kYXIsdT10LmVsLGQ9dC5ldmVudDtpZih0aGlzLnNlZ0RyYWdMaXN0ZW5lcilyZXR1cm4gdGhpcy5zZWdEcmFnTGlzdGVuZXI7dmFyIGM9dGhpcy5zZWdEcmFnTGlzdGVuZXI9bmV3IGZlKGwse3Njcm9sbDpsLm9wdCgiZHJhZ1Njcm9sbCIpLHN1YmplY3RFbDp1LHN1YmplY3RDZW50ZXI6ITAsaW50ZXJhY3Rpb25TdGFydDpmdW5jdGlvbihpKXt0LmNvbXBvbmVudD1yLGU9ITEsbj1uZXcgZ2UodC5lbCx7YWRkaXRpb25hbENsYXNzOiJmYy1kcmFnZ2luZyIscGFyZW50RWw6bC5lbCxvcGFjaXR5OmMuaXNUb3VjaD9udWxsOmwub3B0KCJkcmFnT3BhY2l0eSIpLHJldmVydER1cmF0aW9uOmwub3B0KCJkcmFnUmV2ZXJ0RHVyYXRpb24iKSx6SW5kZXg6Mn0pLG4uaGlkZSgpLG4uc3RhcnQoaSl9LGRyYWdTdGFydDpmdW5jdGlvbihuKXtjLmlzVG91Y2gmJiFsLmlzRXZlbnRTZWxlY3RlZChkKSYmbC5zZWxlY3RFdmVudChkKSxlPSEwLHIuaGFuZGxlU2VnTW91c2VvdXQodCxuKSxyLnNlZ0RyYWdTdGFydCh0LG4pLGwuaGlkZUV2ZW50KGQpfSxoaXRPdmVyOmZ1bmN0aW9uKGUsbyx1KXt2YXIgaDt0LmhpdCYmKHU9dC5oaXQpLGk9ci5jb21wdXRlRXZlbnREcm9wKHUuY29tcG9uZW50LmdldEhpdFNwYW4odSksZS5jb21wb25lbnQuZ2V0SGl0U3BhbihlKSxkKSxpJiYhYS5pc0V2ZW50U3BhbkFsbG93ZWQoci5ldmVudFRvU3BhbihpKSxkKSYmKHMoKSxpPW51bGwpLGkmJihoPWwucmVuZGVyRHJhZyhpLHQpKT8oaC5hZGRDbGFzcygiZmMtZHJhZ2dpbmciKSxjLmlzVG91Y2h8fHIuYXBwbHlEcmFnT3BhY2l0eShoKSxuLmhpZGUoKSk6bi5zaG93KCksbyYmKGk9bnVsbCl9LGhpdE91dDpmdW5jdGlvbigpe2wudW5yZW5kZXJEcmFnKCksbi5zaG93KCksaT1udWxsfSxoaXREb25lOmZ1bmN0aW9uKCl7bygpfSxpbnRlcmFjdGlvbkVuZDpmdW5jdGlvbihzKXtkZWxldGUgdC5jb21wb25lbnQsbi5zdG9wKCFpLGZ1bmN0aW9uKCl7ZSYmKGwudW5yZW5kZXJEcmFnKCksbC5zaG93RXZlbnQoZCksci5zZWdEcmFnU3RvcCh0LHMpKSxpJiZsLnJlcG9ydEV2ZW50RHJvcChkLGksdGhpcy5sYXJnZVVuaXQsdSxzKX0pLHIuc2VnRHJhZ0xpc3RlbmVyPW51bGx9fSk7cmV0dXJuIGN9LGJ1aWxkU2VnU2VsZWN0TGlzdGVuZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMudmlldyxpPXQuZXZlbnQ7aWYodGhpcy5zZWdEcmFnTGlzdGVuZXIpcmV0dXJuIHRoaXMuc2VnRHJhZ0xpc3RlbmVyO3ZhciByPXRoaXMuc2VnRHJhZ0xpc3RlbmVyPW5ldyBoZSh7ZHJhZ1N0YXJ0OmZ1bmN0aW9uKHQpe3IuaXNUb3VjaCYmIW4uaXNFdmVudFNlbGVjdGVkKGkpJiZuLnNlbGVjdEV2ZW50KGkpfSxpbnRlcmFjdGlvbkVuZDpmdW5jdGlvbih0KXtlLnNlZ0RyYWdMaXN0ZW5lcj1udWxsfX0pO3JldHVybiByfSxzZWdEcmFnU3RhcnQ6ZnVuY3Rpb24odCxlKXt0aGlzLmlzRHJhZ2dpbmdTZWc9ITAsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50RHJhZ1N0YXJ0Iix0LmVsWzBdLHQuZXZlbnQsZSx7fSl9LHNlZ0RyYWdTdG9wOmZ1bmN0aW9uKHQsZSl7dGhpcy5pc0RyYWdnaW5nU2VnPSExLHRoaXMudmlldy50cmlnZ2VyKCJldmVudERyYWdTdG9wIix0LmVsWzBdLHQuZXZlbnQsZSx7fSl9LGNvbXB1dGVFdmVudERyb3A6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIscz10aGlzLnZpZXcuY2FsZW5kYXIsbz10LnN0YXJ0LGw9ZS5zdGFydDtyZXR1cm4gby5oYXNUaW1lKCk9PT1sLmhhc1RpbWUoKT8oaT10aGlzLmRpZmZEYXRlcyhsLG8pLG4uYWxsRGF5JiZXKGkpPyhyPXtzdGFydDpuLnN0YXJ0LmNsb25lKCksZW5kOnMuZ2V0RXZlbnRFbmQobiksYWxsRGF5OiExfSxzLm5vcm1hbGl6ZUV2ZW50VGltZXMocikpOnI9SHQobiksci5zdGFydC5hZGQoaSksci5lbmQmJnIuZW5kLmFkZChpKSk6cj17c3RhcnQ6bC5jbG9uZSgpLGVuZDpudWxsLGFsbERheTohbC5oYXNUaW1lKCl9LHJ9LGFwcGx5RHJhZ09wYWNpdHk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52aWV3Lm9wdCgiZHJhZ09wYWNpdHkiKTtudWxsIT1lJiZ0LmNzcygib3BhY2l0eSIsZSl9LGV4dGVybmFsRHJhZ1N0YXJ0OmZ1bmN0aW9uKGUsbil7dmFyIGkscixzPXRoaXMudmlldztzLm9wdCgiZHJvcHBhYmxlIikmJihpPXQoKG4/bi5pdGVtOm51bGwpfHxlLnRhcmdldCkscj1zLm9wdCgiZHJvcEFjY2VwdCIpLCh0LmlzRnVuY3Rpb24ocik/ci5jYWxsKGlbMF0saSk6aS5pcyhyKSkmJih0aGlzLmlzRHJhZ2dpbmdFeHRlcm5hbHx8dGhpcy5saXN0ZW5Ub0V4dGVybmFsRHJhZyhpLGUsbikpKX0sbGlzdGVuVG9FeHRlcm5hbERyYWc6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHI9dGhpcyxsPXRoaXMudmlldy5jYWxlbmRhcixhPU10KHQpLHU9ci5leHRlcm5hbERyYWdMaXN0ZW5lcj1uZXcgZmUodGhpcyx7aW50ZXJhY3Rpb25TdGFydDpmdW5jdGlvbigpe3IuaXNEcmFnZ2luZ0V4dGVybmFsPSEwfSxoaXRPdmVyOmZ1bmN0aW9uKHQpe2k9ci5jb21wdXRlRXh0ZXJuYWxEcm9wKHQuY29tcG9uZW50LmdldEhpdFNwYW4odCksYSksaSYmIWwuaXNFeHRlcm5hbFNwYW5BbGxvd2VkKHIuZXZlbnRUb1NwYW4oaSksaSxhLmV2ZW50UHJvcHMpJiYocygpLGk9bnVsbCksaSYmci5yZW5kZXJEcmFnKGkpfSxoaXRPdXQ6ZnVuY3Rpb24oKXtpPW51bGx9LGhpdERvbmU6ZnVuY3Rpb24oKXtvKCksci51bnJlbmRlckRyYWcoKX0saW50ZXJhY3Rpb25FbmQ6ZnVuY3Rpb24oZSl7aSYmci52aWV3LnJlcG9ydEV4dGVybmFsRHJvcChhLGksdCxlLG4pLHIuaXNEcmFnZ2luZ0V4dGVybmFsPSExLHIuZXh0ZXJuYWxEcmFnTGlzdGVuZXI9bnVsbH19KTt1LnN0YXJ0RHJhZyhlKX0sY29tcHV0ZUV4dGVybmFsRHJvcDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMudmlldy5jYWxlbmRhcixpPXtzdGFydDpuLmFwcGx5VGltZXpvbmUodC5zdGFydCksZW5kOm51bGx9O3JldHVybiBlLnN0YXJ0VGltZSYmIWkuc3RhcnQuaGFzVGltZSgpJiZpLnN0YXJ0LnRpbWUoZS5zdGFydFRpbWUpLGUuZHVyYXRpb24mJihpLmVuZD1pLnN0YXJ0LmNsb25lKCkuYWRkKGUuZHVyYXRpb24pKSxpfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKHQsZSl7fSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt9LGJ1aWxkU2VnUmVzaXplTGlzdGVuZXI6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcyxsPXRoaXMudmlldyxhPWwuY2FsZW5kYXIsdT10LmVsLGQ9dC5ldmVudCxjPWEuZ2V0RXZlbnRFbmQoZCksaD10aGlzLnNlZ1Jlc2l6ZUxpc3RlbmVyPW5ldyBmZSh0aGlzLHtzY3JvbGw6bC5vcHQoImRyYWdTY3JvbGwiKSxzdWJqZWN0RWw6dSxpbnRlcmFjdGlvblN0YXJ0OmZ1bmN0aW9uKCl7bj0hMX0sZHJhZ1N0YXJ0OmZ1bmN0aW9uKGUpe249ITAsci5oYW5kbGVTZWdNb3VzZW91dCh0LGUpLHIuc2VnUmVzaXplU3RhcnQodCxlKX0saGl0T3ZlcjpmdW5jdGlvbihuLG8sdSl7dmFyIGg9ci5nZXRIaXRTcGFuKHUpLGY9ci5nZXRIaXRTcGFuKG4pO2k9ZT9yLmNvbXB1dGVFdmVudFN0YXJ0UmVzaXplKGgsZixkKTpyLmNvbXB1dGVFdmVudEVuZFJlc2l6ZShoLGYsZCksaSYmKGEuaXNFdmVudFNwYW5BbGxvd2VkKHIuZXZlbnRUb1NwYW4oaSksZCk/aS5zdGFydC5pc1NhbWUoZC5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpKSYmaS5lbmQuaXNTYW1lKGMuY2xvbmUoKS5zdHJpcFpvbmUoKSkmJihpPW51bGwpOihzKCksaT1udWxsKSksaSYmKGwuaGlkZUV2ZW50KGQpLHIucmVuZGVyRXZlbnRSZXNpemUoaSx0KSl9LGhpdE91dDpmdW5jdGlvbigpe2k9bnVsbH0saGl0RG9uZTpmdW5jdGlvbigpe3IudW5yZW5kZXJFdmVudFJlc2l6ZSgpLGwuc2hvd0V2ZW50KGQpLG8oKX0saW50ZXJhY3Rpb25FbmQ6ZnVuY3Rpb24oZSl7biYmci5zZWdSZXNpemVTdG9wKHQsZSksaSYmbC5yZXBvcnRFdmVudFJlc2l6ZShkLGksdGhpcy5sYXJnZVVuaXQsdSxlKSxyLnNlZ1Jlc2l6ZUxpc3RlbmVyPW51bGx9fSk7cmV0dXJuIGh9LHNlZ1Jlc2l6ZVN0YXJ0OmZ1bmN0aW9uKHQsZSl7dGhpcy5pc1Jlc2l6aW5nU2VnPSEwLHRoaXMudmlldy50cmlnZ2VyKCJldmVudFJlc2l6ZVN0YXJ0Iix0LmVsWzBdLHQuZXZlbnQsZSx7fSl9LHNlZ1Jlc2l6ZVN0b3A6ZnVuY3Rpb24odCxlKXt0aGlzLmlzUmVzaXppbmdTZWc9ITEsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50UmVzaXplU3RvcCIsdC5lbFswXSx0LmV2ZW50LGUse30pfSxjb21wdXRlRXZlbnRTdGFydFJlc2l6ZTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCJzdGFydCIsdCxlLG4pfSxjb21wdXRlRXZlbnRFbmRSZXNpemU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmNvbXB1dGVFdmVudFJlc2l6ZSgiZW5kIix0LGUsbil9LGNvbXB1dGVFdmVudFJlc2l6ZTpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixzLG89dGhpcy52aWV3LmNhbGVuZGFyLGw9dGhpcy5kaWZmRGF0ZXMoblt0XSxlW3RdKTtyZXR1cm4gcj17c3RhcnQ6aS5zdGFydC5jbG9uZSgpLGVuZDpvLmdldEV2ZW50RW5kKGkpLGFsbERheTppLmFsbERheX0sci5hbGxEYXkmJlcobCkmJihyLmFsbERheT0hMSxvLm5vcm1hbGl6ZUV2ZW50VGltZXMocikpLHJbdF0uYWRkKGwpLHIuc3RhcnQuaXNCZWZvcmUoci5lbmQpfHwocz10aGlzLm1pblJlc2l6ZUR1cmF0aW9ufHwoaS5hbGxEYXk/by5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjpvLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pLCJzdGFydCI9PXQ/ci5zdGFydD1yLmVuZC5jbG9uZSgpLnN1YnRyYWN0KHMpOnIuZW5kPXIuc3RhcnQuY2xvbmUoKS5hZGQocykpLHJ9LHJlbmRlckV2ZW50UmVzaXplOmZ1bmN0aW9uKHQsZSl7fSx1bnJlbmRlckV2ZW50UmVzaXplOmZ1bmN0aW9uKCl7fSxnZXRFdmVudFRpbWVUZXh0OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZSYmKGU9dGhpcy5ldmVudFRpbWVGb3JtYXQpLG51bGw9PW4mJihuPXRoaXMuZGlzcGxheUV2ZW50RW5kKSx0aGlzLmRpc3BsYXlFdmVudFRpbWUmJnQuc3RhcnQuaGFzVGltZSgpP24mJnQuZW5kP3RoaXMudmlldy5mb3JtYXRSYW5nZSh0LGUpOnQuc3RhcnQuZm9ybWF0KGUpOiIifSxnZXRTZWdDbGFzc2VzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLnZpZXcscj1bImZjLWV2ZW50Iix0LmlzU3RhcnQ/ImZjLXN0YXJ0IjoiZmMtbm90LXN0YXJ0Iix0LmlzRW5kPyJmYy1lbmQiOiJmYy1ub3QtZW5kIl0uY29uY2F0KHRoaXMuZ2V0U2VnQ3VzdG9tQ2xhc3Nlcyh0KSk7cmV0dXJuIGUmJnIucHVzaCgiZmMtZHJhZ2dhYmxlIiksbiYmci5wdXNoKCJmYy1yZXNpemFibGUiKSxpLmlzRXZlbnRTZWxlY3RlZCh0LmV2ZW50KSYmci5wdXNoKCJmYy1zZWxlY3RlZCIpLHJ9LGdldFNlZ0N1c3RvbUNsYXNzZXM6ZnVuY3Rpb24odCl7dmFyIGU9dC5ldmVudDtyZXR1cm5bXS5jb25jYXQoZS5jbGFzc05hbWUsZS5zb3VyY2U/ZS5zb3VyY2UuY2xhc3NOYW1lOltdKX0sZ2V0U2VnU2tpbkNzczpmdW5jdGlvbih0KXtyZXR1cm57ImJhY2tncm91bmQtY29sb3IiOnRoaXMuZ2V0U2VnQmFja2dyb3VuZENvbG9yKHQpLCJib3JkZXItY29sb3IiOnRoaXMuZ2V0U2VnQm9yZGVyQ29sb3IodCksY29sb3I6dGhpcy5nZXRTZWdUZXh0Q29sb3IodCl9fSxnZXRTZWdCYWNrZ3JvdW5kQ29sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlbnQuYmFja2dyb3VuZENvbG9yfHx0LmV2ZW50LmNvbG9yfHx0aGlzLmdldFNlZ0RlZmF1bHRCYWNrZ3JvdW5kQ29sb3IodCl9LGdldFNlZ0RlZmF1bHRCYWNrZ3JvdW5kQ29sb3I6ZnVuY3Rpb24odCl7dmFyIGU9dC5ldmVudC5zb3VyY2V8fHt9O3JldHVybiBlLmJhY2tncm91bmRDb2xvcnx8ZS5jb2xvcnx8dGhpcy52aWV3Lm9wdCgiZXZlbnRCYWNrZ3JvdW5kQ29sb3IiKXx8dGhpcy52aWV3Lm9wdCgiZXZlbnRDb2xvciIpfSxnZXRTZWdCb3JkZXJDb2xvcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVudC5ib3JkZXJDb2xvcnx8dC5ldmVudC5jb2xvcnx8dGhpcy5nZXRTZWdEZWZhdWx0Qm9yZGVyQ29sb3IodCl9LGdldFNlZ0RlZmF1bHRCb3JkZXJDb2xvcjpmdW5jdGlvbih0KXt2YXIgZT10LmV2ZW50LnNvdXJjZXx8e307cmV0dXJuIGUuYm9yZGVyQ29sb3J8fGUuY29sb3J8fHRoaXMudmlldy5vcHQoImV2ZW50Qm9yZGVyQ29sb3IiKXx8dGhpcy52aWV3Lm9wdCgiZXZlbnRDb2xvciIpfSxnZXRTZWdUZXh0Q29sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlbnQudGV4dENvbG9yfHx0aGlzLmdldFNlZ0RlZmF1bHRUZXh0Q29sb3IodCl9LGdldFNlZ0RlZmF1bHRUZXh0Q29sb3I6ZnVuY3Rpb24odCl7dmFyIGU9dC5ldmVudC5zb3VyY2V8fHt9O3JldHVybiBlLnRleHRDb2xvcnx8dGhpcy52aWV3Lm9wdCgiZXZlbnRUZXh0Q29sb3IiKX0sZXZlbnRUb1NlZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZXZlbnRzVG9TZWdzKFt0XSl9LGV2ZW50VG9TcGFuOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmV2ZW50VG9TcGFucyh0KVswXX0sZXZlbnRUb1NwYW5zOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZXZlbnRUb1JhbmdlKHQpO3JldHVybiB0aGlzLmV2ZW50UmFuZ2VUb1NwYW5zKGUsdCl9LGV2ZW50c1RvU2VnczpmdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMscj1JdChlKSxzPVtdO3JldHVybiB0LmVhY2gocixmdW5jdGlvbih0LGUpe3ZhciByLG89W107Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylvLnB1c2goaS5ldmVudFRvUmFuZ2UoZVtyXSkpO2lmKHh0KGVbMF0pKWZvcihvPWkuaW52ZXJ0UmFuZ2VzKG8pLHI9MDtyPG8ubGVuZ3RoO3IrKylzLnB1c2guYXBwbHkocyxpLmV2ZW50UmFuZ2VUb1NlZ3Mob1tyXSxlWzBdLG4pKTtlbHNlIGZvcihyPTA7cjxvLmxlbmd0aDtyKyspcy5wdXNoLmFwcGx5KHMsaS5ldmVudFJhbmdlVG9TZWdzKG9bcl0sZVtyXSxuKSl9KSxzfSxldmVudFRvUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52aWV3LmNhbGVuZGFyLG49dC5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGk9KHQuZW5kP3QuZW5kLmNsb25lKCk6ZS5nZXREZWZhdWx0RXZlbnRFbmQobnVsbCE9dC5hbGxEYXk/dC5hbGxEYXk6IXQuc3RhcnQuaGFzVGltZSgpLHQuc3RhcnQpKS5zdHJpcFpvbmUoKTtyZXR1cm4gZS5sb2NhbGl6ZU1vbWVudChuKSxlLmxvY2FsaXplTW9tZW50KGkpLHtzdGFydDpuLGVuZDppfX0sZXZlbnRSYW5nZVRvU2VnczpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10aGlzLmV2ZW50UmFuZ2VUb1NwYW5zKHQsZSkscz1bXTtmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXMucHVzaC5hcHBseShzLHRoaXMuZXZlbnRTcGFuVG9TZWdzKHJbaV0sZSxuKSk7cmV0dXJuIHN9LGV2ZW50UmFuZ2VUb1NwYW5zOmZ1bmN0aW9uKGUsbil7cmV0dXJuW3QuZXh0ZW5kKHt9LGUpXX0sZXZlbnRTcGFuVG9TZWdzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLHM9bj9uKHQpOnRoaXMuc3BhblRvU2Vncyh0KTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXI9c1tpXSxyLmV2ZW50PWUsci5ldmVudFN0YXJ0TVM9K3Quc3RhcnQsci5ldmVudER1cmF0aW9uTVM9dC5lbmQtdC5zdGFydDtyZXR1cm4gc30saW52ZXJ0UmFuZ2VzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnZpZXcscj1pLnN0YXJ0LmNsb25lKCkscz1pLmVuZC5jbG9uZSgpLG89W10sbD1yO2Zvcih0LnNvcnQoa3QpLGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0sbi5zdGFydD5sJiZvLnB1c2goe3N0YXJ0OmwsZW5kOm4uc3RhcnR9KSxsPW4uZW5kO3JldHVybiBsPHMmJm8ucHVzaCh7c3RhcnQ6bCxlbmQ6c30pLG99LHNvcnRFdmVudFNlZ3M6ZnVuY3Rpb24odCl7dC5zb3J0KGx0KHRoaXMsImNvbXBhcmVFdmVudFNlZ3MiKSl9LGNvbXBhcmVFdmVudFNlZ3M6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5ldmVudFN0YXJ0TVMtZS5ldmVudFN0YXJ0TVN8fGUuZXZlbnREdXJhdGlvbk1TLXQuZXZlbnREdXJhdGlvbk1TfHxlLmV2ZW50LmFsbERheS10LmV2ZW50LmFsbERheXx8TCh0LmV2ZW50LGUuZXZlbnQsdGhpcy52aWV3LmV2ZW50T3JkZXJTcGVjcyl9fSksanQucGx1Y2tFdmVudERhdGVQcm9wcz1IdCxqdC5pc0JnRXZlbnQ9VHQsanQuZGF0YUF0dHJQcmVmaXg9IiI7dmFyIHZlPWp0LkRheVRhYmxlTWl4aW49e2JyZWFrT25XZWVrczohMSxkYXlEYXRlczpudWxsLGRheUluZGljZXM6bnVsbCxkYXlzUGVyUm93Om51bGwscm93Q250Om51bGwsY29sQ250Om51bGwsY29sSGVhZEZvcm1hdDpudWxsLHVwZGF0ZURheVRhYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsbixpPXRoaXMudmlldyxyPXRoaXMuc3RhcnQuY2xvbmUoKSxzPS0xLG89W10sbD1bXTtyLmlzQmVmb3JlKHRoaXMuZW5kKTspaS5pc0hpZGRlbkRheShyKT9vLnB1c2gocysuNSk6KHMrKyxvLnB1c2gocyksbC5wdXNoKHIuY2xvbmUoKSkpLHIuYWRkKDEsImRheXMiKTtpZih0aGlzLmJyZWFrT25XZWVrcyl7Zm9yKGU9bFswXS5kYXkoKSx0PTE7dDxsLmxlbmd0aCYmbFt0XS5kYXkoKSE9ZTt0KyspO249TWF0aC5jZWlsKGwubGVuZ3RoL3QpfWVsc2Ugbj0xLHQ9bC5sZW5ndGg7dGhpcy5kYXlEYXRlcz1sLHRoaXMuZGF5SW5kaWNlcz1vLHRoaXMuZGF5c1BlclJvdz10LHRoaXMucm93Q250PW4sdGhpcy51cGRhdGVEYXlUYWJsZUNvbHMoKX0sdXBkYXRlRGF5VGFibGVDb2xzOmZ1bmN0aW9uKCl7dGhpcy5jb2xDbnQ9dGhpcy5jb21wdXRlQ29sQ250KCksdGhpcy5jb2xIZWFkRm9ybWF0PXRoaXMudmlldy5vcHQoImNvbHVtbkZvcm1hdCIpfHx0aGlzLmNvbXB1dGVDb2xIZWFkRm9ybWF0KCl9LGNvbXB1dGVDb2xDbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXlzUGVyUm93fSxnZXRDZWxsRGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRheURhdGVzW3RoaXMuZ2V0Q2VsbERheUluZGV4KHQsZSldLmNsb25lKCl9LGdldENlbGxSYW5nZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0Q2VsbERhdGUodCxlKSxpPW4uY2xvbmUoKS5hZGQoMSwiZGF5cyIpO3JldHVybntzdGFydDpuLGVuZDppfX0sZ2V0Q2VsbERheUluZGV4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQqdGhpcy5kYXlzUGVyUm93K3RoaXMuZ2V0Q29sRGF5SW5kZXgoZSl9LGdldENvbERheUluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzUlRMP3RoaXMuY29sQ250LTEtdDp0fSxnZXREYXRlRGF5SW5kZXg6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXlJbmRpY2VzLG49dC5kaWZmKHRoaXMuc3RhcnQsImRheXMiKTtyZXR1cm4gbjwwP2VbMF0tMTpuPj1lLmxlbmd0aD9lW2UubGVuZ3RoLTFdKzE6ZVtuXX0sY29tcHV0ZUNvbEhlYWRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb3dDbnQ+MXx8dGhpcy5jb2xDbnQ+MTA/ImRkZCI6dGhpcy5jb2xDbnQ+MT90aGlzLnZpZXcub3B0KCJkYXlPZk1vbnRoRm9ybWF0Iik6ImRkZGQifSxzbGljZVJhbmdlQnlSb3c6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIscyxvPXRoaXMuZGF5c1BlclJvdyxsPXRoaXMudmlldy5jb21wdXRlRGF5UmFuZ2UodCksYT10aGlzLmdldERhdGVEYXlJbmRleChsLnN0YXJ0KSx1PXRoaXMuZ2V0RGF0ZURheUluZGV4KGwuZW5kLmNsb25lKCkuc3VidHJhY3QoMSwiZGF5cyIpKSxkPVtdO2ZvcihlPTA7ZTx0aGlzLnJvd0NudDtlKyspbj1lKm8saT1uK28tMSxyPU1hdGgubWF4KGEsbikscz1NYXRoLm1pbih1LGkpLHI9TWF0aC5jZWlsKHIpLHM9TWF0aC5mbG9vcihzKSxyPD1zJiZkLnB1c2goe3JvdzplLGZpcnN0Um93RGF5SW5kZXg6ci1uLGxhc3RSb3dEYXlJbmRleDpzLW4saXNTdGFydDpyPT09YSxpc0VuZDpzPT09dX0pO3JldHVybiBkfSxzbGljZVJhbmdlQnlEYXk6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIscyxvLGw9dGhpcy5kYXlzUGVyUm93LGE9dGhpcy52aWV3LmNvbXB1dGVEYXlSYW5nZSh0KSx1PXRoaXMuZ2V0RGF0ZURheUluZGV4KGEuc3RhcnQpLGQ9dGhpcy5nZXREYXRlRGF5SW5kZXgoYS5lbmQuY2xvbmUoKS5zdWJ0cmFjdCgxLCJkYXlzIikpLGM9W107Zm9yKGU9MDtlPHRoaXMucm93Q250O2UrKylmb3Iobj1lKmwsaT1uK2wtMSxyPW47cjw9aTtyKyspcz1NYXRoLm1heCh1LHIpLG89TWF0aC5taW4oZCxyKSxzPU1hdGguY2VpbChzKSxvPU1hdGguZmxvb3Iobyksczw9byYmYy5wdXNoKHtyb3c6ZSxmaXJzdFJvd0RheUluZGV4OnMtbixsYXN0Um93RGF5SW5kZXg6by1uLGlzU3RhcnQ6cz09PXUsaXNFbmQ6bz09PWR9KTtyZXR1cm4gYzsKfSxyZW5kZXJIZWFkSHRtbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldztyZXR1cm4nPGRpdiBjbGFzcz0iZmMtcm93ICcrdC53aWRnZXRIZWFkZXJDbGFzcysnIj48dGFibGU+PHRoZWFkPicrdGhpcy5yZW5kZXJIZWFkVHJIdG1sKCkrIjwvdGhlYWQ+PC90YWJsZT48L2Rpdj4ifSxyZW5kZXJIZWFkSW50cm9IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVySW50cm9IdG1sKCl9LHJlbmRlckhlYWRUckh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iPHRyPiIrKHRoaXMuaXNSVEw/IiI6dGhpcy5yZW5kZXJIZWFkSW50cm9IdG1sKCkpK3RoaXMucmVuZGVySGVhZERhdGVDZWxsc0h0bWwoKSsodGhpcy5pc1JUTD90aGlzLnJlbmRlckhlYWRJbnRyb0h0bWwoKToiIikrIjwvdHI+In0scmVuZGVySGVhZERhdGVDZWxsc0h0bWw6ZnVuY3Rpb24oKXt2YXIgdCxlLG49W107Zm9yKHQ9MDt0PHRoaXMuY29sQ250O3QrKyllPXRoaXMuZ2V0Q2VsbERhdGUoMCx0KSxuLnB1c2godGhpcy5yZW5kZXJIZWFkRGF0ZUNlbGxIdG1sKGUpKTtyZXR1cm4gbi5qb2luKCIiKX0scmVuZGVySGVhZERhdGVDZWxsSHRtbDpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy52aWV3O3JldHVybic8dGggY2xhc3M9ImZjLWRheS1oZWFkZXIgJytpLndpZGdldEhlYWRlckNsYXNzKyIgZmMtIiskdFt0LmRheSgpXSsnIicrKDE9PT10aGlzLnJvd0NudD8nIGRhdGEtZGF0ZT0iJyt0LmZvcm1hdCgiWVlZWS1NTS1ERCIpKyciJzoiIikrKGU+MT8nIGNvbHNwYW49IicrZSsnIic6IiIpKyhuPyIgIituOiIiKSsiPiIraS5idWlsZEdvdG9BbmNob3JIdG1sKHtkYXRlOnQsZm9yY2VPZmY6dGhpcy5yb3dDbnQ+MXx8MT09PXRoaXMuY29sQ250fSx0dCh0LmZvcm1hdCh0aGlzLmNvbEhlYWRGb3JtYXQpKSkrIjwvdGg+In0scmVuZGVyQmdUckh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIjx0cj4iKyh0aGlzLmlzUlRMPyIiOnRoaXMucmVuZGVyQmdJbnRyb0h0bWwodCkpK3RoaXMucmVuZGVyQmdDZWxsc0h0bWwodCkrKHRoaXMuaXNSVEw/dGhpcy5yZW5kZXJCZ0ludHJvSHRtbCh0KToiIikrIjwvdHI+In0scmVuZGVyQmdJbnRyb0h0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVuZGVySW50cm9IdG1sKCl9LHJlbmRlckJnQ2VsbHNIdG1sOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT1bXTtmb3IoZT0wO2U8dGhpcy5jb2xDbnQ7ZSsrKW49dGhpcy5nZXRDZWxsRGF0ZSh0LGUpLGkucHVzaCh0aGlzLnJlbmRlckJnQ2VsbEh0bWwobikpO3JldHVybiBpLmpvaW4oIiIpfSxyZW5kZXJCZ0NlbGxIdG1sOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy52aWV3LGk9dGhpcy5nZXREYXlDbGFzc2VzKHQpO3JldHVybiBpLnVuc2hpZnQoImZjLWRheSIsbi53aWRnZXRDb250ZW50Q2xhc3MpLCc8dGQgY2xhc3M9IicraS5qb2luKCIgIikrJyIgZGF0YS1kYXRlPSInK3QuZm9ybWF0KCJZWVlZLU1NLUREIikrJyInKyhlPyIgIitlOiIiKSsiPjwvdGQ+In0scmVuZGVySW50cm9IdG1sOmZ1bmN0aW9uKCl7fSxib29rZW5kQ2VsbHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yZW5kZXJJbnRyb0h0bWwoKTtlJiYodGhpcy5pc1JUTD90LmFwcGVuZChlKTp0LnByZXBlbmQoZSkpfX0sbWU9anQuRGF5R3JpZD1wZS5leHRlbmQodmUse251bWJlcnNWaXNpYmxlOiExLGJvdHRvbUNvb3JkUGFkZGluZzowLHJvd0VsczpudWxsLGNlbGxFbHM6bnVsbCxoZWxwZXJFbHM6bnVsbCxyb3dDb29yZENhY2hlOm51bGwsY29sQ29vcmRDYWNoZTpudWxsLHJlbmRlckRhdGVzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnZpZXcscj10aGlzLnJvd0NudCxzPXRoaXMuY29sQ250LG89IiI7Zm9yKGU9MDtlPHI7ZSsrKW8rPXRoaXMucmVuZGVyRGF5Um93SHRtbChlLHQpO2Zvcih0aGlzLmVsLmh0bWwobyksdGhpcy5yb3dFbHM9dGhpcy5lbC5maW5kKCIuZmMtcm93IiksdGhpcy5jZWxsRWxzPXRoaXMuZWwuZmluZCgiLmZjLWRheSIpLHRoaXMucm93Q29vcmRDYWNoZT1uZXcgY2Uoe2Vsczp0aGlzLnJvd0Vscyxpc1ZlcnRpY2FsOiEwfSksdGhpcy5jb2xDb29yZENhY2hlPW5ldyBjZSh7ZWxzOnRoaXMuY2VsbEVscy5zbGljZSgwLHRoaXMuY29sQ250KSxpc0hvcml6b250YWw6ITB9KSxlPTA7ZTxyO2UrKylmb3Iobj0wO248cztuKyspaS50cmlnZ2VyKCJkYXlSZW5kZXIiLG51bGwsdGhpcy5nZXRDZWxsRGF0ZShlLG4pLHRoaXMuZ2V0Q2VsbEVsKGUsbikpfSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVTZWdQb3BvdmVyKCl9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJ1aWxkQnVzaW5lc3NIb3VyU2VncyghMCk7dGhpcy5yZW5kZXJGaWxsKCJidXNpbmVzc0hvdXJzIix0LCJiZ2V2ZW50Iil9LHVucmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJGaWxsKCJidXNpbmVzc0hvdXJzIil9LHJlbmRlckRheVJvd0h0bWw6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnZpZXcsaT1bImZjLXJvdyIsImZjLXdlZWsiLG4ud2lkZ2V0Q29udGVudENsYXNzXTtyZXR1cm4gZSYmaS5wdXNoKCJmYy1yaWdpZCIpLCc8ZGl2IGNsYXNzPSInK2kuam9pbigiICIpKyciPjxkaXYgY2xhc3M9ImZjLWJnIj48dGFibGU+Jyt0aGlzLnJlbmRlckJnVHJIdG1sKHQpKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iPjx0YWJsZT4nKyh0aGlzLm51bWJlcnNWaXNpYmxlPyI8dGhlYWQ+Iit0aGlzLnJlbmRlck51bWJlclRySHRtbCh0KSsiPC90aGVhZD4iOiIiKSsiPC90YWJsZT48L2Rpdj48L2Rpdj4ifSxyZW5kZXJOdW1iZXJUckh0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIjx0cj4iKyh0aGlzLmlzUlRMPyIiOnRoaXMucmVuZGVyTnVtYmVySW50cm9IdG1sKHQpKSt0aGlzLnJlbmRlck51bWJlckNlbGxzSHRtbCh0KSsodGhpcy5pc1JUTD90aGlzLnJlbmRlck51bWJlckludHJvSHRtbCh0KToiIikrIjwvdHI+In0scmVuZGVyTnVtYmVySW50cm9IdG1sOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlbmRlckludHJvSHRtbCgpfSxyZW5kZXJOdW1iZXJDZWxsc0h0bWw6ZnVuY3Rpb24odCl7dmFyIGUsbixpPVtdO2ZvcihlPTA7ZTx0aGlzLmNvbENudDtlKyspbj10aGlzLmdldENlbGxEYXRlKHQsZSksaS5wdXNoKHRoaXMucmVuZGVyTnVtYmVyQ2VsbEh0bWwobikpO3JldHVybiBpLmpvaW4oIiIpfSxyZW5kZXJOdW1iZXJDZWxsSHRtbDpmdW5jdGlvbih0KXt2YXIgZSxuLGk9IiI7cmV0dXJuIHRoaXMudmlldy5kYXlOdW1iZXJzVmlzaWJsZXx8dGhpcy52aWV3LmNlbGxXZWVrTnVtYmVyc1Zpc2libGU/KGU9dGhpcy5nZXREYXlDbGFzc2VzKHQpLGUudW5zaGlmdCgiZmMtZGF5LXRvcCIpLHRoaXMudmlldy5jZWxsV2Vla051bWJlcnNWaXNpYmxlJiYobj0iSVNPIj09PXQuX2xvY2FsZS5fZnVsbENhbGVuZGFyX3dlZWtDYWxjPzE6dC5fbG9jYWxlLmZpcnN0RGF5T2ZXZWVrKCkpLGkrPSc8dGQgY2xhc3M9IicrZS5qb2luKCIgIikrJyIgZGF0YS1kYXRlPSInK3QuZm9ybWF0KCkrJyI+Jyx0aGlzLnZpZXcuY2VsbFdlZWtOdW1iZXJzVmlzaWJsZSYmdC5kYXkoKT09biYmKGkrPXRoaXMudmlldy5idWlsZEdvdG9BbmNob3JIdG1sKHtkYXRlOnQsdHlwZToid2VlayJ9LHtjbGFzczoiZmMtd2Vlay1udW1iZXIifSx0LmZvcm1hdCgidyIpKSksdGhpcy52aWV3LmRheU51bWJlcnNWaXNpYmxlJiYoaSs9dGhpcy52aWV3LmJ1aWxkR290b0FuY2hvckh0bWwodCx7Y2xhc3M6ImZjLWRheS1udW1iZXIifSx0LmRhdGUoKSkpLGkrPSI8L3RkPiIpOiI8dGQvPiJ9LGNvbXB1dGVFdmVudFRpbWVGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWV3Lm9wdCgiZXh0cmFTbWFsbFRpbWVGb3JtYXQiKX0sY29tcHV0ZURpc3BsYXlFdmVudEVuZDpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLmNvbENudH0scmFuZ2VVcGRhdGVkOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVEYXlUYWJsZSgpfSxzcGFuVG9TZWdzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnNsaWNlUmFuZ2VCeVJvdyh0KTtmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKW49aVtlXSx0aGlzLmlzUlRMPyhuLmxlZnRDb2w9dGhpcy5kYXlzUGVyUm93LTEtbi5sYXN0Um93RGF5SW5kZXgsbi5yaWdodENvbD10aGlzLmRheXNQZXJSb3ctMS1uLmZpcnN0Um93RGF5SW5kZXgpOihuLmxlZnRDb2w9bi5maXJzdFJvd0RheUluZGV4LG4ucmlnaHRDb2w9bi5sYXN0Um93RGF5SW5kZXgpO3JldHVybiBpfSxwcmVwYXJlSGl0czpmdW5jdGlvbigpe3RoaXMuY29sQ29vcmRDYWNoZS5idWlsZCgpLHRoaXMucm93Q29vcmRDYWNoZS5idWlsZCgpLHRoaXMucm93Q29vcmRDYWNoZS5ib3R0b21zW3RoaXMucm93Q250LTFdKz10aGlzLmJvdHRvbUNvb3JkUGFkZGluZ30scmVsZWFzZUhpdHM6ZnVuY3Rpb24oKXt0aGlzLmNvbENvb3JkQ2FjaGUuY2xlYXIoKSx0aGlzLnJvd0Nvb3JkQ2FjaGUuY2xlYXIoKX0scXVlcnlIaXQ6ZnVuY3Rpb24odCxlKXtpZih0aGlzLmNvbENvb3JkQ2FjaGUuaXNMZWZ0SW5Cb3VuZHModCkmJnRoaXMucm93Q29vcmRDYWNoZS5pc1RvcEluQm91bmRzKGUpKXt2YXIgbj10aGlzLmNvbENvb3JkQ2FjaGUuZ2V0SG9yaXpvbnRhbEluZGV4KHQpLGk9dGhpcy5yb3dDb29yZENhY2hlLmdldFZlcnRpY2FsSW5kZXgoZSk7aWYobnVsbCE9aSYmbnVsbCE9bilyZXR1cm4gdGhpcy5nZXRDZWxsSGl0KGksbil9fSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldENlbGxSYW5nZSh0LnJvdyx0LmNvbCl9LGdldEhpdEVsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldENlbGxFbCh0LnJvdyx0LmNvbCl9LGdldENlbGxIaXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm57cm93OnQsY29sOmUsY29tcG9uZW50OnRoaXMsbGVmdDp0aGlzLmNvbENvb3JkQ2FjaGUuZ2V0TGVmdE9mZnNldChlKSxyaWdodDp0aGlzLmNvbENvb3JkQ2FjaGUuZ2V0UmlnaHRPZmZzZXQoZSksdG9wOnRoaXMucm93Q29vcmRDYWNoZS5nZXRUb3BPZmZzZXQodCksYm90dG9tOnRoaXMucm93Q29vcmRDYWNoZS5nZXRCb3R0b21PZmZzZXQodCl9fSxnZXRDZWxsRWw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jZWxsRWxzLmVxKHQqdGhpcy5jb2xDbnQrZSl9LHJlbmRlckRyYWc6ZnVuY3Rpb24odCxlKXtpZih0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLmV2ZW50VG9TcGFuKHQpKSxlJiZlLmNvbXBvbmVudCE9PXRoaXMpcmV0dXJuIHRoaXMucmVuZGVyRXZlbnRMb2NhdGlvbkhlbHBlcih0LGUpfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCksdGhpcy51bnJlbmRlckhlbHBlcigpfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLmV2ZW50VG9TcGFuKHQpKSx0aGlzLnJlbmRlckV2ZW50TG9jYXRpb25IZWxwZXIodCxlKX0sdW5yZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIaWdobGlnaHQoKSx0aGlzLnVucmVuZGVySGVscGVyKCl9LHJlbmRlckhlbHBlcjpmdW5jdGlvbihlLG4pe3ZhciBpLHI9W10scz10aGlzLmV2ZW50VG9TZWdzKGUpO3JldHVybiBzPXRoaXMucmVuZGVyRmdTZWdFbHMocyksaT10aGlzLnJlbmRlclNlZ1Jvd3MocyksdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihlLHMpe3ZhciBvLGw9dChzKSxhPXQoJzxkaXYgY2xhc3M9ImZjLWhlbHBlci1za2VsZXRvbiI+PHRhYmxlLz48L2Rpdj4nKTtvPW4mJm4ucm93PT09ZT9uLmVsLnBvc2l0aW9uKCkudG9wOmwuZmluZCgiLmZjLWNvbnRlbnQtc2tlbGV0b24gdGJvZHkiKS5wb3NpdGlvbigpLnRvcCxhLmNzcygidG9wIixvKS5maW5kKCJ0YWJsZSIpLmFwcGVuZChpW2VdLnRib2R5RWwpLGwuYXBwZW5kKGEpLHIucHVzaChhWzBdKX0pLHRoaXMuaGVscGVyRWxzPXQocil9LHVucmVuZGVySGVscGVyOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJFbHMmJih0aGlzLmhlbHBlckVscy5yZW1vdmUoKSx0aGlzLmhlbHBlckVscz1udWxsKX0sZmlsbFNlZ1RhZzoidGQiLHJlbmRlckZpbGw6ZnVuY3Rpb24oZSxuLGkpe3ZhciByLHMsbyxsPVtdO2ZvcihuPXRoaXMucmVuZGVyRmlsbFNlZ0VscyhlLG4pLHI9MDtyPG4ubGVuZ3RoO3IrKylzPW5bcl0sbz10aGlzLnJlbmRlckZpbGxSb3coZSxzLGkpLHRoaXMucm93RWxzLmVxKHMucm93KS5hcHBlbmQobyksbC5wdXNoKG9bMF0pO3JldHVybiB0aGlzLmVsc0J5RmlsbFtlXT10KGwpLG59LHJlbmRlckZpbGxSb3c6ZnVuY3Rpb24oZSxuLGkpe3ZhciByLHMsbz10aGlzLmNvbENudCxsPW4ubGVmdENvbCxhPW4ucmlnaHRDb2wrMTtyZXR1cm4gaT1pfHxlLnRvTG93ZXJDYXNlKCkscj10KCc8ZGl2IGNsYXNzPSJmYy0nK2krJy1za2VsZXRvbiI+PHRhYmxlPjx0ci8+PC90YWJsZT48L2Rpdj4nKSxzPXIuZmluZCgidHIiKSxsPjAmJnMuYXBwZW5kKCc8dGQgY29sc3Bhbj0iJytsKyciLz4nKSxzLmFwcGVuZChuLmVsLmF0dHIoImNvbHNwYW4iLGEtbCkpLGE8byYmcy5hcHBlbmQoJzx0ZCBjb2xzcGFuPSInKyhvLWEpKyciLz4nKSx0aGlzLmJvb2tlbmRDZWxscyhzKSxyfX0pO21lLm1peGluKHtyb3dTdHJ1Y3RzOm51bGwsdW5yZW5kZXJFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKSxwZS5wcm90b3R5cGUudW5yZW5kZXJFdmVudHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRFdmVudFNlZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gcGUucHJvdG90eXBlLmdldEV2ZW50U2Vncy5jYWxsKHRoaXMpLmNvbmNhdCh0aGlzLnBvcG92ZXJTZWdzfHxbXSl9LHJlbmRlckJnU2VnczpmdW5jdGlvbihlKXt2YXIgbj10LmdyZXAoZSxmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVudC5hbGxEYXl9KTtyZXR1cm4gcGUucHJvdG90eXBlLnJlbmRlckJnU2Vncy5jYWxsKHRoaXMsbil9LHJlbmRlckZnU2VnczpmdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4gZT10aGlzLnJlbmRlckZnU2VnRWxzKGUpLG49dGhpcy5yb3dTdHJ1Y3RzPXRoaXMucmVuZGVyU2VnUm93cyhlKSx0aGlzLnJvd0Vscy5lYWNoKGZ1bmN0aW9uKGUsaSl7dChpKS5maW5kKCIuZmMtY29udGVudC1za2VsZXRvbiA+IHRhYmxlIikuYXBwZW5kKG5bZV0udGJvZHlFbCl9KSxlfSx1bnJlbmRlckZnU2VnczpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMucm93U3RydWN0c3x8W107dD1lLnBvcCgpOyl0LnRib2R5RWwucmVtb3ZlKCk7dGhpcy5yb3dTdHJ1Y3RzPW51bGx9LHJlbmRlclNlZ1Jvd3M6ZnVuY3Rpb24odCl7dmFyIGUsbixpPVtdO2ZvcihlPXRoaXMuZ3JvdXBTZWdSb3dzKHQpLG49MDtuPGUubGVuZ3RoO24rKylpLnB1c2godGhpcy5yZW5kZXJTZWdSb3cobixlW25dKSk7cmV0dXJuIGl9LGZnU2VnSHRtbDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscj10aGlzLnZpZXcscz10LmV2ZW50LG89ci5pc0V2ZW50RHJhZ2dhYmxlKHMpLGw9IWUmJnMuYWxsRGF5JiZ0LmlzU3RhcnQmJnIuaXNFdmVudFJlc2l6YWJsZUZyb21TdGFydChzKSxhPSFlJiZzLmFsbERheSYmdC5pc0VuZCYmci5pc0V2ZW50UmVzaXphYmxlRnJvbUVuZChzKSx1PXRoaXMuZ2V0U2VnQ2xhc3Nlcyh0LG8sbHx8YSksZD1udCh0aGlzLmdldFNlZ1NraW5Dc3ModCkpLGM9IiI7cmV0dXJuIHUudW5zaGlmdCgiZmMtZGF5LWdyaWQtZXZlbnQiLCJmYy1oLWV2ZW50IiksdC5pc1N0YXJ0JiYobj10aGlzLmdldEV2ZW50VGltZVRleHQocyksbiYmKGM9JzxzcGFuIGNsYXNzPSJmYy10aW1lIj4nK3R0KG4pKyI8L3NwYW4+IikpLGk9JzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JysodHQocy50aXRsZXx8IiIpfHwiJm5ic3A7IikrIjwvc3Bhbj4iLCc8YSBjbGFzcz0iJyt1LmpvaW4oIiAiKSsnIicrKHMudXJsPycgaHJlZj0iJyt0dChzLnVybCkrJyInOiIiKSsoZD8nIHN0eWxlPSInK2QrJyInOiIiKSsnPjxkaXYgY2xhc3M9ImZjLWNvbnRlbnQiPicrKHRoaXMuaXNSVEw/aSsiICIrYzpjKyIgIitpKSsiPC9kaXY+IisobD8nPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1zdGFydC1yZXNpemVyIiAvPic6IiIpKyhhPyc8ZGl2IGNsYXNzPSJmYy1yZXNpemVyIGZjLWVuZC1yZXNpemVyIiAvPic6IiIpKyI8L2E+In0scmVuZGVyU2VnUm93OmZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaShlKXtmb3IoO288ZTspZD0obVtyLTFdfHxbXSlbb10sZD9kLmF0dHIoInJvd3NwYW4iLHBhcnNlSW50KGQuYXR0cigicm93c3BhbiIpfHwxLDEwKSsxKTooZD10KCI8dGQvPiIpLGwuYXBwZW5kKGQpKSx2W3JdW29dPWQsbVtyXVtvXT1kLG8rK312YXIgcixzLG8sbCxhLHUsZCxjPXRoaXMuY29sQ250LGg9dGhpcy5idWlsZFNlZ0xldmVscyhuKSxmPU1hdGgubWF4KDEsaC5sZW5ndGgpLGc9dCgiPHRib2R5Lz4iKSxwPVtdLHY9W10sbT1bXTtmb3Iocj0wO3I8ZjtyKyspe2lmKHM9aFtyXSxvPTAsbD10KCI8dHIvPiIpLHAucHVzaChbXSksdi5wdXNoKFtdKSxtLnB1c2goW10pLHMpZm9yKGE9MDthPHMubGVuZ3RoO2ErKyl7Zm9yKHU9c1thXSxpKHUubGVmdENvbCksZD10KCc8dGQgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpLmFwcGVuZCh1LmVsKSx1LmxlZnRDb2whPXUucmlnaHRDb2w/ZC5hdHRyKCJjb2xzcGFuIix1LnJpZ2h0Q29sLXUubGVmdENvbCsxKTptW3JdW29dPWQ7bzw9dS5yaWdodENvbDspdltyXVtvXT1kLHBbcl1bb109dSxvKys7bC5hcHBlbmQoZCl9aShjKSx0aGlzLmJvb2tlbmRDZWxscyhsKSxnLmFwcGVuZChsKX1yZXR1cm57cm93OmUsdGJvZHlFbDpnLGNlbGxNYXRyaXg6dixzZWdNYXRyaXg6cCxzZWdMZXZlbHM6aCxzZWdzOm59fSxidWlsZFNlZ0xldmVsczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj1bXTtmb3IodGhpcy5zb3J0RXZlbnRTZWdzKHQpLGU9MDtlPHQubGVuZ3RoO2UrKyl7Zm9yKG49dFtlXSxpPTA7aTxyLmxlbmd0aCYmTHQobixyW2ldKTtpKyspO24ubGV2ZWw9aSwocltpXXx8KHJbaV09W10pKS5wdXNoKG4pfWZvcihpPTA7aTxyLmxlbmd0aDtpKyspcltpXS5zb3J0KEJ0KTtyZXR1cm4gcn0sZ3JvdXBTZWdSb3dzOmZ1bmN0aW9uKHQpe3ZhciBlLG49W107Zm9yKGU9MDtlPHRoaXMucm93Q250O2UrKyluLnB1c2goW10pO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspblt0W2VdLnJvd10ucHVzaCh0W2VdKTtyZXR1cm4gbn19KSxtZS5taXhpbih7c2VnUG9wb3ZlcjpudWxsLHBvcG92ZXJTZWdzOm51bGwscmVtb3ZlU2VnUG9wb3ZlcjpmdW5jdGlvbigpe3RoaXMuc2VnUG9wb3ZlciYmdGhpcy5zZWdQb3BvdmVyLmhpZGUoKX0sbGltaXRSb3dzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnJvd1N0cnVjdHN8fFtdO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspdGhpcy51bmxpbWl0Um93KGUpLG49ISF0JiYoIm51bWJlciI9PXR5cGVvZiB0P3Q6dGhpcy5jb21wdXRlUm93TGV2ZWxMaW1pdChlKSksbiE9PSExJiZ0aGlzLmxpbWl0Um93KGUsbil9LGNvbXB1dGVSb3dMZXZlbExpbWl0OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oZSxuKXtzPU1hdGgubWF4KHMsdChuKS5vdXRlckhlaWdodCgpKX12YXIgaSxyLHMsbz10aGlzLnJvd0Vscy5lcShlKSxsPW8uaGVpZ2h0KCksYT10aGlzLnJvd1N0cnVjdHNbZV0udGJvZHlFbC5jaGlsZHJlbigpO2ZvcihpPTA7aTxhLmxlbmd0aDtpKyspaWYocj1hLmVxKGkpLnJlbW92ZUNsYXNzKCJmYy1saW1pdGVkIikscz0wLHIuZmluZCgiPiB0ZCA+IDpmaXJzdC1jaGlsZCIpLmVhY2gobiksci5wb3NpdGlvbigpLnRvcCtzPmwpcmV0dXJuIGk7cmV0dXJuITF9LGxpbWl0Um93OmZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaShpKXtmb3IoO0Q8aTspdT1TLmdldENlbGxTZWdzKGUsRCxuKSx1Lmxlbmd0aCYmKGg9c1tuLTFdW0RdLHk9Uy5yZW5kZXJNb3JlTGluayhlLEQsdSksbT10KCI8ZGl2Lz4iKS5hcHBlbmQoeSksaC5hcHBlbmQobSksRS5wdXNoKG1bMF0pKSxEKyt9dmFyIHIscyxvLGwsYSx1LGQsYyxoLGYsZyxwLHYsbSx5LFM9dGhpcyx3PXRoaXMucm93U3RydWN0c1tlXSxFPVtdLEQ9MDtpZihuJiZuPHcuc2VnTGV2ZWxzLmxlbmd0aCl7Zm9yKHI9dy5zZWdMZXZlbHNbbi0xXSxzPXcuY2VsbE1hdHJpeCxvPXcudGJvZHlFbC5jaGlsZHJlbigpLnNsaWNlKG4pLmFkZENsYXNzKCJmYy1saW1pdGVkIikuZ2V0KCksbD0wO2w8ci5sZW5ndGg7bCsrKXtmb3IoYT1yW2xdLGkoYS5sZWZ0Q29sKSxjPVtdLGQ9MDtEPD1hLnJpZ2h0Q29sOyl1PXRoaXMuZ2V0Q2VsbFNlZ3MoZSxELG4pLGMucHVzaCh1KSxkKz11Lmxlbmd0aCxEKys7aWYoZCl7Zm9yKGg9c1tuLTFdW2EubGVmdENvbF0sZj1oLmF0dHIoInJvd3NwYW4iKXx8MSxnPVtdLHA9MDtwPGMubGVuZ3RoO3ArKyl2PXQoJzx0ZCBjbGFzcz0iZmMtbW9yZS1jZWxsIi8+JykuYXR0cigicm93c3BhbiIsZiksdT1jW3BdLHk9dGhpcy5yZW5kZXJNb3JlTGluayhlLGEubGVmdENvbCtwLFthXS5jb25jYXQodSkpLG09dCgiPGRpdi8+IikuYXBwZW5kKHkpLHYuYXBwZW5kKG0pLGcucHVzaCh2WzBdKSxFLnB1c2godlswXSk7aC5hZGRDbGFzcygiZmMtbGltaXRlZCIpLmFmdGVyKHQoZykpLG8ucHVzaChoWzBdKX19aSh0aGlzLmNvbENudCksdy5tb3JlRWxzPXQoRSksdy5saW1pdGVkRWxzPXQobyl9fSx1bmxpbWl0Um93OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucm93U3RydWN0c1t0XTtlLm1vcmVFbHMmJihlLm1vcmVFbHMucmVtb3ZlKCksZS5tb3JlRWxzPW51bGwpLGUubGltaXRlZEVscyYmKGUubGltaXRlZEVscy5yZW1vdmVDbGFzcygiZmMtbGltaXRlZCIpLGUubGltaXRlZEVscz1udWxsKX0scmVuZGVyTW9yZUxpbms6ZnVuY3Rpb24oZSxuLGkpe3ZhciByPXRoaXMscz10aGlzLnZpZXc7cmV0dXJuIHQoJzxhIGNsYXNzPSJmYy1tb3JlIi8+JykudGV4dCh0aGlzLmdldE1vcmVMaW5rVGV4dChpLmxlbmd0aCkpLm9uKCJjbGljayIsZnVuY3Rpb24obyl7dmFyIGw9cy5vcHQoImV2ZW50TGltaXRDbGljayIpLGE9ci5nZXRDZWxsRGF0ZShlLG4pLHU9dCh0aGlzKSxkPXIuZ2V0Q2VsbEVsKGUsbiksYz1yLmdldENlbGxTZWdzKGUsbiksaD1yLnJlc2xpY2VEYXlTZWdzKGMsYSksZj1yLnJlc2xpY2VEYXlTZWdzKGksYSk7ImZ1bmN0aW9uIj09dHlwZW9mIGwmJihsPXMudHJpZ2dlcigiZXZlbnRMaW1pdENsaWNrIixudWxsLHtkYXRlOmEsZGF5RWw6ZCxtb3JlRWw6dSxzZWdzOmgsaGlkZGVuU2VnczpmfSxvKSksInBvcG92ZXIiPT09bD9yLnNob3dTZWdQb3BvdmVyKGUsbix1LGgpOiJzdHJpbmciPT10eXBlb2YgbCYmcy5jYWxlbmRhci56b29tVG8oYSxsKX0pfSxzaG93U2VnUG9wb3ZlcjpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixzLG89dGhpcyxsPXRoaXMudmlldyxhPW4ucGFyZW50KCk7cj0xPT10aGlzLnJvd0NudD9sLmVsOnRoaXMucm93RWxzLmVxKHQpLHM9e2NsYXNzTmFtZToiZmMtbW9yZS1wb3BvdmVyIixjb250ZW50OnRoaXMucmVuZGVyU2VnUG9wb3ZlckNvbnRlbnQodCxlLGkpLHBhcmVudEVsOnRoaXMudmlldy5lbCx0b3A6ci5vZmZzZXQoKS50b3AsYXV0b0hpZGU6ITAsdmlld3BvcnRDb25zdHJhaW46bC5vcHQoInBvcG92ZXJWaWV3cG9ydENvbnN0cmFpbiIpLGhpZGU6ZnVuY3Rpb24oKXtvLnNlZ1BvcG92ZXIucmVtb3ZlRWxlbWVudCgpLG8uc2VnUG9wb3Zlcj1udWxsLG8ucG9wb3ZlclNlZ3M9bnVsbH19LHRoaXMuaXNSVEw/cy5yaWdodD1hLm9mZnNldCgpLmxlZnQrYS5vdXRlcldpZHRoKCkrMTpzLmxlZnQ9YS5vZmZzZXQoKS5sZWZ0LTEsdGhpcy5zZWdQb3BvdmVyPW5ldyBkZShzKSx0aGlzLnNlZ1BvcG92ZXIuc2hvdygpLHRoaXMuYmluZFNlZ0hhbmRsZXJzVG9FbCh0aGlzLnNlZ1BvcG92ZXIuZWwpfSxyZW5kZXJTZWdQb3BvdmVyQ29udGVudDpmdW5jdGlvbihlLG4saSl7dmFyIHIscz10aGlzLnZpZXcsbz1zLm9wdCgidGhlbWUiKSxsPXRoaXMuZ2V0Q2VsbERhdGUoZSxuKS5mb3JtYXQocy5vcHQoImRheVBvcG92ZXJGb3JtYXQiKSksYT10KCc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJytzLndpZGdldEhlYWRlckNsYXNzKyciPjxzcGFuIGNsYXNzPSJmYy1jbG9zZSAnKyhvPyJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI6ImZjLWljb24gZmMtaWNvbi14IikrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmYy10aXRsZSI+Jyt0dChsKSsnPC9zcGFuPjxkaXYgY2xhc3M9ImZjLWNsZWFyIi8+PC9kaXY+PGRpdiBjbGFzcz0iZmMtYm9keSAnK3Mud2lkZ2V0Q29udGVudENsYXNzKyciPjxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciI+PC9kaXY+PC9kaXY+JyksdT1hLmZpbmQoIi5mYy1ldmVudC1jb250YWluZXIiKTtmb3IoaT10aGlzLnJlbmRlckZnU2VnRWxzKGksITApLHRoaXMucG9wb3ZlclNlZ3M9aSxyPTA7cjxpLmxlbmd0aDtyKyspdGhpcy5wcmVwYXJlSGl0cygpLGlbcl0uaGl0PXRoaXMuZ2V0Q2VsbEhpdChlLG4pLHRoaXMucmVsZWFzZUhpdHMoKSx1LmFwcGVuZChpW3JdLmVsKTtyZXR1cm4gYX0scmVzbGljZURheVNlZ3M6ZnVuY3Rpb24oZSxuKXt2YXIgaT10Lm1hcChlLGZ1bmN0aW9uKHQpe3JldHVybiB0LmV2ZW50fSkscj1uLmNsb25lKCkscz1yLmNsb25lKCkuYWRkKDEsImRheXMiKSxvPXtzdGFydDpyLGVuZDpzfTtyZXR1cm4gZT10aGlzLmV2ZW50c1RvU2VncyhpLGZ1bmN0aW9uKHQpe3ZhciBlPUYodCxvKTtyZXR1cm4gZT9bZV06W119KSx0aGlzLnNvcnRFdmVudFNlZ3MoZSksZX0sZ2V0TW9yZUxpbmtUZXh0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmlldy5vcHQoImV2ZW50TGltaXRUZXh0Iik7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0KToiKyIrdCsiICIrZX0sZ2V0Q2VsbFNlZ3M6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSxyPXRoaXMucm93U3RydWN0c1t0XS5zZWdNYXRyaXgscz1ufHwwLG89W107czxyLmxlbmd0aDspaT1yW3NdW2VdLGkmJm8ucHVzaChpKSxzKys7cmV0dXJuIG99fSk7dmFyIHllPWp0LlRpbWVHcmlkPXBlLmV4dGVuZCh2ZSx7c2xvdER1cmF0aW9uOm51bGwsc25hcER1cmF0aW9uOm51bGwsc25hcHNQZXJTbG90Om51bGwsbWluVGltZTpudWxsLG1heFRpbWU6bnVsbCxsYWJlbEZvcm1hdDpudWxsLGxhYmVsSW50ZXJ2YWw6bnVsbCxjb2xFbHM6bnVsbCxzbGF0Q29udGFpbmVyRWw6bnVsbCxzbGF0RWxzOm51bGwsbm93SW5kaWNhdG9yRWxzOm51bGwsY29sQ29vcmRDYWNoZTpudWxsLHNsYXRDb29yZENhY2hlOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24oKXtwZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5wcm9jZXNzT3B0aW9ucygpfSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe3RoaXMuZWwuaHRtbCh0aGlzLnJlbmRlckh0bWwoKSksdGhpcy5jb2xFbHM9dGhpcy5lbC5maW5kKCIuZmMtZGF5IiksdGhpcy5zbGF0Q29udGFpbmVyRWw9dGhpcy5lbC5maW5kKCIuZmMtc2xhdHMiKSx0aGlzLnNsYXRFbHM9dGhpcy5zbGF0Q29udGFpbmVyRWwuZmluZCgidHIiKSx0aGlzLmNvbENvb3JkQ2FjaGU9bmV3IGNlKHtlbHM6dGhpcy5jb2xFbHMsaXNIb3Jpem9udGFsOiEwfSksdGhpcy5zbGF0Q29vcmRDYWNoZT1uZXcgY2Uoe2Vsczp0aGlzLnNsYXRFbHMsaXNWZXJ0aWNhbDohMH0pLHRoaXMucmVuZGVyQ29udGVudFNrZWxldG9uKCl9LHJlbmRlckh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzcz0iZmMtYmciPjx0YWJsZT4nK3RoaXMucmVuZGVyQmdUckh0bWwoMCkrJzwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0iZmMtc2xhdHMiPjx0YWJsZT4nK3RoaXMucmVuZGVyU2xhdFJvd0h0bWwoKSsiPC90YWJsZT48L2Rpdj4ifSxyZW5kZXJTbGF0Um93SHRtbDpmdW5jdGlvbigpe2Zvcih2YXIgdCxuLGkscj10aGlzLnZpZXcscz10aGlzLmlzUlRMLG89IiIsbD1lLmR1cmF0aW9uKCt0aGlzLm1pblRpbWUpO2w8dGhpcy5tYXhUaW1lOyl0PXRoaXMuc3RhcnQuY2xvbmUoKS50aW1lKGwpLG49b3QoXyhsLHRoaXMubGFiZWxJbnRlcnZhbCkpLGk9Jzx0ZCBjbGFzcz0iZmMtYXhpcyBmYy10aW1lICcrci53aWRnZXRDb250ZW50Q2xhc3MrJyIgJytyLmF4aXNTdHlsZUF0dHIoKSsiPiIrKG4/IjxzcGFuPiIrdHQodC5mb3JtYXQodGhpcy5sYWJlbEZvcm1hdCkpKyI8L3NwYW4+IjoiIikrIjwvdGQ+IixvKz0nPHRyIGRhdGEtdGltZT0iJyt0LmZvcm1hdCgiSEg6bW06c3MiKSsnIicrKG4/IiI6JyBjbGFzcz0iZmMtbWlub3IiJykrIj4iKyhzPyIiOmkpKyc8dGQgY2xhc3M9Iicrci53aWRnZXRDb250ZW50Q2xhc3MrJyIvPicrKHM/aToiIikrIjwvdHI+IixsLmFkZCh0aGlzLnNsb3REdXJhdGlvbik7cmV0dXJuIG99LHByb2Nlc3NPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIG4saT10aGlzLnZpZXcscj1pLm9wdCgic2xvdER1cmF0aW9uIikscz1pLm9wdCgic25hcER1cmF0aW9uIik7cj1lLmR1cmF0aW9uKHIpLHM9cz9lLmR1cmF0aW9uKHMpOnIsdGhpcy5zbG90RHVyYXRpb249cix0aGlzLnNuYXBEdXJhdGlvbj1zLHRoaXMuc25hcHNQZXJTbG90PXIvcyx0aGlzLm1pblJlc2l6ZUR1cmF0aW9uPXMsdGhpcy5taW5UaW1lPWUuZHVyYXRpb24oaS5vcHQoIm1pblRpbWUiKSksdGhpcy5tYXhUaW1lPWUuZHVyYXRpb24oaS5vcHQoIm1heFRpbWUiKSksbj1pLm9wdCgic2xvdExhYmVsRm9ybWF0IiksdC5pc0FycmF5KG4pJiYobj1uW24ubGVuZ3RoLTFdKSx0aGlzLmxhYmVsRm9ybWF0PW58fGkub3B0KCJzbWFsbFRpbWVGb3JtYXQiKSxuPWkub3B0KCJzbG90TGFiZWxJbnRlcnZhbCIpLHRoaXMubGFiZWxJbnRlcnZhbD1uP2UuZHVyYXRpb24obik6dGhpcy5jb21wdXRlTGFiZWxJbnRlcnZhbChyKX0sY29tcHV0ZUxhYmVsSW50ZXJ2YWw6ZnVuY3Rpb24odCl7dmFyIG4saSxyO2ZvcihuPU5lLmxlbmd0aC0xO24+PTA7bi0tKWlmKGk9ZS5kdXJhdGlvbihOZVtuXSkscj1fKGksdCksb3QocikmJnI+MSlyZXR1cm4gaTtyZXR1cm4gZS5kdXJhdGlvbih0KX0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJub01lcmlkaWVtVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHByZXBhcmVIaXRzOmZ1bmN0aW9uKCl7dGhpcy5jb2xDb29yZENhY2hlLmJ1aWxkKCksdGhpcy5zbGF0Q29vcmRDYWNoZS5idWlsZCgpfSxyZWxlYXNlSGl0czpmdW5jdGlvbigpe3RoaXMuY29sQ29vcmRDYWNoZS5jbGVhcigpfSxxdWVyeUhpdDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc25hcHNQZXJTbG90LGk9dGhpcy5jb2xDb29yZENhY2hlLHI9dGhpcy5zbGF0Q29vcmRDYWNoZTtpZihpLmlzTGVmdEluQm91bmRzKHQpJiZyLmlzVG9wSW5Cb3VuZHMoZSkpe3ZhciBzPWkuZ2V0SG9yaXpvbnRhbEluZGV4KHQpLG89ci5nZXRWZXJ0aWNhbEluZGV4KGUpO2lmKG51bGwhPXMmJm51bGwhPW8pe3ZhciBsPXIuZ2V0VG9wT2Zmc2V0KG8pLGE9ci5nZXRIZWlnaHQobyksdT0oZS1sKS9hLGQ9TWF0aC5mbG9vcih1Km4pLGM9bypuK2QsaD1sK2QvbiphLGY9bCsoZCsxKS9uKmE7cmV0dXJue2NvbDpzLHNuYXA6Yyxjb21wb25lbnQ6dGhpcyxsZWZ0OmkuZ2V0TGVmdE9mZnNldChzKSxyaWdodDppLmdldFJpZ2h0T2Zmc2V0KHMpLHRvcDpoLGJvdHRvbTpmfX19fSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5nZXRDZWxsRGF0ZSgwLHQuY29sKSxpPXRoaXMuY29tcHV0ZVNuYXBUaW1lKHQuc25hcCk7cmV0dXJuIG4udGltZShpKSxlPW4uY2xvbmUoKS5hZGQodGhpcy5zbmFwRHVyYXRpb24pLHtzdGFydDpuLGVuZDplfX0sZ2V0SGl0RWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29sRWxzLmVxKHQuY29sKX0scmFuZ2VVcGRhdGVkOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVEYXlUYWJsZSgpfSxjb21wdXRlU25hcFRpbWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuZHVyYXRpb24odGhpcy5taW5UaW1lK3RoaXMuc25hcER1cmF0aW9uKnQpfSxzcGFuVG9TZWdzOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5zbGljZVJhbmdlQnlUaW1lcyh0KTtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKXRoaXMuaXNSVEw/bltlXS5jb2w9dGhpcy5kYXlzUGVyUm93LTEtbltlXS5kYXlJbmRleDpuW2VdLmNvbD1uW2VdLmRheUluZGV4O3JldHVybiBufSxzbGljZVJhbmdlQnlUaW1lczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixzPVtdO2ZvcihuPTA7bjx0aGlzLmRheXNQZXJSb3c7bisrKWk9dGhpcy5kYXlEYXRlc1tuXS5jbG9uZSgpLHI9e3N0YXJ0OmkuY2xvbmUoKS50aW1lKHRoaXMubWluVGltZSksZW5kOmkuY2xvbmUoKS50aW1lKHRoaXMubWF4VGltZSl9LGU9Rih0LHIpLGUmJihlLmRheUluZGV4PW4scy5wdXNoKGUpKTtyZXR1cm4gc30sdXBkYXRlU2l6ZTpmdW5jdGlvbih0KXt0aGlzLnNsYXRDb29yZENhY2hlLmJ1aWxkKCksdCYmdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHMoW10uY29uY2F0KHRoaXMuZmdTZWdzfHxbXSx0aGlzLmJnU2Vnc3x8W10sdGhpcy5idXNpbmVzc1NlZ3N8fFtdKSl9LGdldFRvdGFsU2xhdEhlaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsYXRDb250YWluZXJFbC5vdXRlckhlaWdodCgpfSxjb21wdXRlRGF0ZVRvcDpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmNvbXB1dGVUaW1lVG9wKGUuZHVyYXRpb24odC1uLmNsb25lKCkuc3RyaXBUaW1lKCkpKX0sY29tcHV0ZVRpbWVUb3A6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMuc2xhdEVscy5sZW5ndGgscj0odC10aGlzLm1pblRpbWUpL3RoaXMuc2xvdER1cmF0aW9uO3JldHVybiByPU1hdGgubWF4KDAscikscj1NYXRoLm1pbihpLHIpLGU9TWF0aC5mbG9vcihyKSxlPU1hdGgubWluKGUsaS0xKSxuPXItZSx0aGlzLnNsYXRDb29yZENhY2hlLmdldFRvcFBvc2l0aW9uKGUpK3RoaXMuc2xhdENvb3JkQ2FjaGUuZ2V0SGVpZ2h0KGUpKm59LHJlbmRlckRyYWc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT90aGlzLnJlbmRlckV2ZW50TG9jYXRpb25IZWxwZXIodCxlKTp2b2lkIHRoaXMucmVuZGVySGlnaGxpZ2h0KHRoaXMuZXZlbnRUb1NwYW4odCkpfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGVscGVyKCksdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlbmRlckV2ZW50TG9jYXRpb25IZWxwZXIodCxlKX0sdW5yZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIZWxwZXIoKX0scmVuZGVySGVscGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVuZGVySGVscGVyU2Vncyh0aGlzLmV2ZW50VG9TZWdzKHQpLGUpfSx1bnJlbmRlckhlbHBlcjpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIZWxwZXJTZWdzKCl9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt0aGlzLnJlbmRlckJ1c2luZXNzU2Vncyh0aGlzLmJ1aWxkQnVzaW5lc3NIb3VyU2VncygpKX0sdW5yZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckJ1c2luZXNzU2VncygpfSxnZXROb3dJbmRpY2F0b3JVbml0OmZ1bmN0aW9uKCl7cmV0dXJuIm1pbnV0ZSJ9LHJlbmRlck5vd0luZGljYXRvcjpmdW5jdGlvbihlKXt2YXIgbixpPXRoaXMuc3BhblRvU2Vncyh7c3RhcnQ6ZSxlbmQ6ZX0pLHI9dGhpcy5jb21wdXRlRGF0ZVRvcChlLGUpLHM9W107Zm9yKG49MDtuPGkubGVuZ3RoO24rKylzLnB1c2godCgnPGRpdiBjbGFzcz0iZmMtbm93LWluZGljYXRvciBmYy1ub3ctaW5kaWNhdG9yLWxpbmUiPjwvZGl2PicpLmNzcygidG9wIixyKS5hcHBlbmRUbyh0aGlzLmNvbENvbnRhaW5lckVscy5lcShpW25dLmNvbCkpWzBdKTtpLmxlbmd0aD4wJiZzLnB1c2godCgnPGRpdiBjbGFzcz0iZmMtbm93LWluZGljYXRvciBmYy1ub3ctaW5kaWNhdG9yLWFycm93Ij48L2Rpdj4nKS5jc3MoInRvcCIscikuYXBwZW5kVG8odGhpcy5lbC5maW5kKCIuZmMtY29udGVudC1za2VsZXRvbiIpKVswXSksdGhpcy5ub3dJbmRpY2F0b3JFbHM9dChzKX0sdW5yZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLm5vd0luZGljYXRvckVscyYmKHRoaXMubm93SW5kaWNhdG9yRWxzLnJlbW92ZSgpLHRoaXMubm93SW5kaWNhdG9yRWxzPW51bGwpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24odCl7dGhpcy52aWV3Lm9wdCgic2VsZWN0SGVscGVyIik/dGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKHQpOnRoaXMucmVuZGVySGlnaGxpZ2h0KHQpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIZWxwZXIoKSx0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCl9LHJlbmRlckhpZ2hsaWdodDpmdW5jdGlvbih0KXt0aGlzLnJlbmRlckhpZ2hsaWdodFNlZ3ModGhpcy5zcGFuVG9TZWdzKHQpKX0sdW5yZW5kZXJIaWdobGlnaHQ6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0U2VncygpfX0pO3llLm1peGluKHtjb2xDb250YWluZXJFbHM6bnVsbCxmZ0NvbnRhaW5lckVsczpudWxsLGJnQ29udGFpbmVyRWxzOm51bGwsaGVscGVyQ29udGFpbmVyRWxzOm51bGwsaGlnaGxpZ2h0Q29udGFpbmVyRWxzOm51bGwsYnVzaW5lc3NDb250YWluZXJFbHM6bnVsbCxmZ1NlZ3M6bnVsbCxiZ1NlZ3M6bnVsbCxoZWxwZXJTZWdzOm51bGwsaGlnaGxpZ2h0U2VnczpudWxsLGJ1c2luZXNzU2VnczpudWxsLHJlbmRlckNvbnRlbnRTa2VsZXRvbjpmdW5jdGlvbigpe3ZhciBlLG4saT0iIjtmb3IoZT0wO2U8dGhpcy5jb2xDbnQ7ZSsrKWkrPSc8dGQ+PGRpdiBjbGFzcz0iZmMtY29udGVudC1jb2wiPjxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciBmYy1oZWxwZXItY29udGFpbmVyIj48L2Rpdj48ZGl2IGNsYXNzPSJmYy1ldmVudC1jb250YWluZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImZjLWhpZ2hsaWdodC1jb250YWluZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImZjLWJnZXZlbnQtY29udGFpbmVyIj48L2Rpdj48ZGl2IGNsYXNzPSJmYy1idXNpbmVzcy1jb250YWluZXIiPjwvZGl2PjwvZGl2PjwvdGQ+JztuPXQoJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iPjx0YWJsZT48dHI+JytpKyI8L3RyPjwvdGFibGU+PC9kaXY+IiksdGhpcy5jb2xDb250YWluZXJFbHM9bi5maW5kKCIuZmMtY29udGVudC1jb2wiKSx0aGlzLmhlbHBlckNvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1oZWxwZXItY29udGFpbmVyIiksdGhpcy5mZ0NvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1ldmVudC1jb250YWluZXI6bm90KC5mYy1oZWxwZXItY29udGFpbmVyKSIpLHRoaXMuYmdDb250YWluZXJFbHM9bi5maW5kKCIuZmMtYmdldmVudC1jb250YWluZXIiKSx0aGlzLmhpZ2hsaWdodENvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1oaWdobGlnaHQtY29udGFpbmVyIiksdGhpcy5idXNpbmVzc0NvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1idXNpbmVzcy1jb250YWluZXIiKSx0aGlzLmJvb2tlbmRDZWxscyhuLmZpbmQoInRyIikpLHRoaXMuZWwuYXBwZW5kKG4pfSxyZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5yZW5kZXJGZ1NlZ3NJbnRvQ29udGFpbmVycyh0LHRoaXMuZmdDb250YWluZXJFbHMpLHRoaXMuZmdTZWdzPXQsdH0sdW5yZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCJmZ1NlZ3MiKX0scmVuZGVySGVscGVyU2VnczpmdW5jdGlvbihlLG4pe3ZhciBpLHIscyxvPVtdO2ZvcihlPXRoaXMucmVuZGVyRmdTZWdzSW50b0NvbnRhaW5lcnMoZSx0aGlzLmhlbHBlckNvbnRhaW5lckVscyksaT0wO2k8ZS5sZW5ndGg7aSsrKXI9ZVtpXSxuJiZuLmNvbD09PXIuY29sJiYocz1uLmVsLHIuZWwuY3NzKHtsZWZ0OnMuY3NzKCJsZWZ0IikscmlnaHQ6cy5jc3MoInJpZ2h0IiksIm1hcmdpbi1sZWZ0IjpzLmNzcygibWFyZ2luLWxlZnQiKSwibWFyZ2luLXJpZ2h0IjpzLmNzcygibWFyZ2luLXJpZ2h0Iil9KSksby5wdXNoKHIuZWxbMF0pO3JldHVybiB0aGlzLmhlbHBlclNlZ3M9ZSx0KG8pfSx1bnJlbmRlckhlbHBlclNlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCJoZWxwZXJTZWdzIil9LHJlbmRlckJnU2VnczpmdW5jdGlvbih0KXtyZXR1cm4gdD10aGlzLnJlbmRlckZpbGxTZWdFbHMoImJnRXZlbnQiLHQpLHRoaXMudXBkYXRlU2VnVmVydGljYWxzKHQpLHRoaXMuYXR0YWNoU2Vnc0J5Q29sKHRoaXMuZ3JvdXBTZWdzQnlDb2wodCksdGhpcy5iZ0NvbnRhaW5lckVscyksdGhpcy5iZ1NlZ3M9dCx0fSx1bnJlbmRlckJnU2VnczpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJOYW1lZFNlZ3MoImJnU2VncyIpfSxyZW5kZXJIaWdobGlnaHRTZWdzOmZ1bmN0aW9uKHQpe3Q9dGhpcy5yZW5kZXJGaWxsU2VnRWxzKCJoaWdobGlnaHQiLHQpLHRoaXMudXBkYXRlU2VnVmVydGljYWxzKHQpLHRoaXMuYXR0YWNoU2Vnc0J5Q29sKHRoaXMuZ3JvdXBTZWdzQnlDb2wodCksdGhpcy5oaWdobGlnaHRDb250YWluZXJFbHMpLHRoaXMuaGlnaGxpZ2h0U2Vncz10fSx1bnJlbmRlckhpZ2hsaWdodFNlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCJoaWdobGlnaHRTZWdzIil9LHJlbmRlckJ1c2luZXNzU2VnczpmdW5jdGlvbih0KXt0PXRoaXMucmVuZGVyRmlsbFNlZ0VscygiYnVzaW5lc3NIb3VycyIsdCksdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHModCksdGhpcy5hdHRhY2hTZWdzQnlDb2wodGhpcy5ncm91cFNlZ3NCeUNvbCh0KSx0aGlzLmJ1c2luZXNzQ29udGFpbmVyRWxzKSx0aGlzLmJ1c2luZXNzU2Vncz10fSx1bnJlbmRlckJ1c2luZXNzU2VnczpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJOYW1lZFNlZ3MoImJ1c2luZXNzU2VncyIpfSxncm91cFNlZ3NCeUNvbDpmdW5jdGlvbih0KXt2YXIgZSxuPVtdO2ZvcihlPTA7ZTx0aGlzLmNvbENudDtlKyspbi5wdXNoKFtdKTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW5bdFtlXS5jb2xdLnB1c2godFtlXSk7cmV0dXJuIG59LGF0dGFjaFNlZ3NCeUNvbDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtmb3Iobj0wO248dGhpcy5jb2xDbnQ7bisrKWZvcihpPXRbbl0scj0wO3I8aS5sZW5ndGg7cisrKWUuZXEobikuYXBwZW5kKGlbcl0uZWwpfSx1bnJlbmRlck5hbWVkU2VnczpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXNbdF07aWYobil7Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdLmVsLnJlbW92ZSgpO3RoaXNbdF09bnVsbH19LHJlbmRlckZnU2Vnc0ludG9Db250YWluZXJzOmZ1bmN0aW9uKHQsZSl7dmFyIG4saTtmb3IodD10aGlzLnJlbmRlckZnU2VnRWxzKHQpLG49dGhpcy5ncm91cFNlZ3NCeUNvbCh0KSxpPTA7aTx0aGlzLmNvbENudDtpKyspdGhpcy51cGRhdGVGZ1NlZ0Nvb3JkcyhuW2ldKTtyZXR1cm4gdGhpcy5hdHRhY2hTZWdzQnlDb2wobixlKSx0fSxmZ1NlZ0h0bWw6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIscz10aGlzLnZpZXcsbz10LmV2ZW50LGw9cy5pc0V2ZW50RHJhZ2dhYmxlKG8pLGE9IWUmJnQuaXNTdGFydCYmcy5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KG8pLHU9IWUmJnQuaXNFbmQmJnMuaXNFdmVudFJlc2l6YWJsZUZyb21FbmQobyksZD10aGlzLmdldFNlZ0NsYXNzZXModCxsLGF8fHUpLGM9bnQodGhpcy5nZXRTZWdTa2luQ3NzKHQpKTtyZXR1cm4gZC51bnNoaWZ0KCJmYy10aW1lLWdyaWQtZXZlbnQiLCJmYy12LWV2ZW50Iikscy5pc011bHRpRGF5RXZlbnQobyk/KHQuaXNTdGFydHx8dC5pc0VuZCkmJihuPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dCh0KSxpPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dCh0LCJMVCIpLHI9dGhpcy5nZXRFdmVudFRpbWVUZXh0KHQsbnVsbCwhMSkpOihuPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChvKSxpPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChvLCJMVCIpLHI9dGhpcy5nZXRFdmVudFRpbWVUZXh0KG8sbnVsbCwhMSkpLCc8YSBjbGFzcz0iJytkLmpvaW4oIiAiKSsnIicrKG8udXJsPycgaHJlZj0iJyt0dChvLnVybCkrJyInOiIiKSsoYz8nIHN0eWxlPSInK2MrJyInOiIiKSsnPjxkaXYgY2xhc3M9ImZjLWNvbnRlbnQiPicrKG4/JzxkaXYgY2xhc3M9ImZjLXRpbWUiIGRhdGEtc3RhcnQ9IicrdHQocikrJyIgZGF0YS1mdWxsPSInK3R0KGkpKyciPjxzcGFuPicrdHQobikrIjwvc3Bhbj48L2Rpdj4iOiIiKSsoby50aXRsZT8nPGRpdiBjbGFzcz0iZmMtdGl0bGUiPicrdHQoby50aXRsZSkrIjwvZGl2PiI6IiIpKyc8L2Rpdj48ZGl2IGNsYXNzPSJmYy1iZyIvPicrKHU/JzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtZW5kLXJlc2l6ZXIiIC8+JzoiIikrIjwvYT4ifSx1cGRhdGVTZWdWZXJ0aWNhbHM6ZnVuY3Rpb24odCl7dGhpcy5jb21wdXRlU2VnVmVydGljYWxzKHQpLHRoaXMuYXNzaWduU2VnVmVydGljYWxzKHQpfSxjb21wdXRlU2VnVmVydGljYWxzOmZ1bmN0aW9uKHQpe3ZhciBlLG47Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0sbi50b3A9dGhpcy5jb21wdXRlRGF0ZVRvcChuLnN0YXJ0LG4uc3RhcnQpLG4uYm90dG9tPXRoaXMuY29tcHV0ZURhdGVUb3Aobi5lbmQsbi5zdGFydCl9LGFzc2lnblNlZ1ZlcnRpY2FsczpmdW5jdGlvbih0KXt2YXIgZSxuO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspbj10W2VdLG4uZWwuY3NzKHRoaXMuZ2VuZXJhdGVTZWdWZXJ0aWNhbENzcyhuKSl9LGdlbmVyYXRlU2VnVmVydGljYWxDc3M6ZnVuY3Rpb24odCl7cmV0dXJue3RvcDp0LnRvcCxib3R0b206LXQuYm90dG9tfX0sdXBkYXRlRmdTZWdDb29yZHM6ZnVuY3Rpb24odCl7dGhpcy5jb21wdXRlU2VnVmVydGljYWxzKHQpLHRoaXMuY29tcHV0ZUZnU2VnSG9yaXpvbnRhbHModCksdGhpcy5hc3NpZ25TZWdWZXJ0aWNhbHModCksdGhpcy5hc3NpZ25GZ1NlZ0hvcml6b250YWxzKHQpfSxjb21wdXRlRmdTZWdIb3Jpem9udGFsczpmdW5jdGlvbih0KXt2YXIgZSxuLGk7aWYodGhpcy5zb3J0RXZlbnRTZWdzKHQpLGU9enQodCksRnQoZSksbj1lWzBdKXtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKU50KG5baV0pO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhuW2ldLDAsMCl9fSxjb21wdXRlRmdTZWdGb3J3YXJkQmFjazpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10LmZvcndhcmRTZWdzO2lmKHZvaWQgMD09PXQuZm9yd2FyZENvb3JkKWZvcihyLmxlbmd0aD8odGhpcy5zb3J0Rm9yd2FyZFNlZ3MociksdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhyWzBdLGUrMSxuKSx0LmZvcndhcmRDb29yZD1yWzBdLmJhY2t3YXJkQ29vcmQpOnQuZm9yd2FyZENvb3JkPTEsdC5iYWNrd2FyZENvb3JkPXQuZm9yd2FyZENvb3JkLSh0LmZvcndhcmRDb29yZC1uKS8oZSsxKSxpPTA7aTxyLmxlbmd0aDtpKyspdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhyW2ldLDAsdC5mb3J3YXJkQ29vcmQpfSxzb3J0Rm9yd2FyZFNlZ3M6ZnVuY3Rpb24odCl7dC5zb3J0KGx0KHRoaXMsImNvbXBhcmVGb3J3YXJkU2VncyIpKX0sY29tcGFyZUZvcndhcmRTZWdzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZm9yd2FyZFByZXNzdXJlLXQuZm9yd2FyZFByZXNzdXJlfHwodC5iYWNrd2FyZENvb3JkfHwwKS0oZS5iYWNrd2FyZENvb3JkfHwwKXx8dGhpcy5jb21wYXJlRXZlbnRTZWdzKHQsZSl9LGFzc2lnbkZnU2VnSG9yaXpvbnRhbHM6ZnVuY3Rpb24odCl7dmFyIGUsbjtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW49dFtlXSxuLmVsLmNzcyh0aGlzLmdlbmVyYXRlRmdTZWdIb3Jpem9udGFsQ3NzKG4pKSxuLmJvdHRvbS1uLnRvcDwzMCYmbi5lbC5hZGRDbGFzcygiZmMtc2hvcnQiKX0sZ2VuZXJhdGVGZ1NlZ0hvcml6b250YWxDc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMudmlldy5vcHQoInNsb3RFdmVudE92ZXJsYXAiKSxyPXQuYmFja3dhcmRDb29yZCxzPXQuZm9yd2FyZENvb3JkLG89dGhpcy5nZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzKHQpO3JldHVybiBpJiYocz1NYXRoLm1pbigxLHIrMioocy1yKSkpLHRoaXMuaXNSVEw/KGU9MS1zLG49cik6KGU9cixuPTEtcyksby56SW5kZXg9dC5sZXZlbCsxLG8ubGVmdD0xMDAqZSsiJSIsby5yaWdodD0xMDAqbisiJSIsaSYmdC5mb3J3YXJkUHJlc3N1cmUmJihvW3RoaXMuaXNSVEw/Im1hcmdpbkxlZnQiOiJtYXJnaW5SaWdodCJdPTIwKSxvfX0pO3ZhciBTZT1qdC5WaWV3PXd0LmV4dGVuZChsZSxhZSx7dHlwZTpudWxsLG5hbWU6bnVsbCx0aXRsZTpudWxsLGNhbGVuZGFyOm51bGwsb3B0aW9uczpudWxsLGVsOm51bGwsZGlzcGxheWluZzpudWxsLGlzU2tlbGV0b25SZW5kZXJlZDohMSxpc0V2ZW50c1JlbmRlcmVkOiExLHN0YXJ0Om51bGwsZW5kOm51bGwsaW50ZXJ2YWxTdGFydDpudWxsLGludGVydmFsRW5kOm51bGwsaW50ZXJ2YWxEdXJhdGlvbjpudWxsLGludGVydmFsVW5pdDpudWxsLGlzUlRMOiExLGlzU2VsZWN0ZWQ6ITEsc2VsZWN0ZWRFdmVudDpudWxsLGV2ZW50T3JkZXJTcGVjczpudWxsLHdpZGdldEhlYWRlckNsYXNzOm51bGwsd2lkZ2V0Q29udGVudENsYXNzOm51bGwsaGlnaGxpZ2h0U3RhdGVDbGFzczpudWxsLG5leHREYXlUaHJlc2hvbGQ6bnVsbCxpc0hpZGRlbkRheUhhc2g6bnVsbCxpc05vd0luZGljYXRvclJlbmRlcmVkOm51bGwsaW5pdGlhbE5vd0RhdGU6bnVsbCxpbml0aWFsTm93UXVlcmllZE1zOm51bGwsbm93SW5kaWNhdG9yVGltZW91dElEOm51bGwsbm93SW5kaWNhdG9ySW50ZXJ2YWxJRDpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsbixpLHIpe3RoaXMuY2FsZW5kYXI9dCx0aGlzLnR5cGU9dGhpcy5uYW1lPW4sdGhpcy5vcHRpb25zPWksdGhpcy5pbnRlcnZhbER1cmF0aW9uPXJ8fGUuZHVyYXRpb24oMSwiZGF5IiksdGhpcy5uZXh0RGF5VGhyZXNob2xkPWUuZHVyYXRpb24odGhpcy5vcHQoIm5leHREYXlUaHJlc2hvbGQiKSksdGhpcy5pbml0VGhlbWluZ1Byb3BzKCksdGhpcy5pbml0SGlkZGVuRGF5cygpLHRoaXMuaXNSVEw9dGhpcy5vcHQoImlzUlRMIiksdGhpcy5ldmVudE9yZGVyU3BlY3M9TSh0aGlzLm9wdCgiZXZlbnRPcmRlciIpKSx0aGlzLmluaXRpYWxpemUoKX0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sb3B0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnNbdF19LHRyaWdnZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNhbGVuZGFyO3JldHVybiBuLnRyaWdnZXIuYXBwbHkobixbdCxlfHx0aGlzXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLFt0aGlzXSkpfSxzZXREYXRlOmZ1bmN0aW9uKHQpe3RoaXMuc2V0UmFuZ2UodGhpcy5jb21wdXRlUmFuZ2UodCkpfSxzZXRSYW5nZTpmdW5jdGlvbihlKXt0LmV4dGVuZCh0aGlzLGUpLHRoaXMudXBkYXRlVGl0bGUoKX0sY29tcHV0ZVJhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT1PKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbikscj10LmNsb25lKCkuc3RhcnRPZihpKSxzPXIuY2xvbmUoKS5hZGQodGhpcy5pbnRlcnZhbER1cmF0aW9uKTtyZXR1cm4veWVhcnxtb250aHx3ZWVrfGRheS8udGVzdChpKT8oci5zdHJpcFRpbWUoKSxzLnN0cmlwVGltZSgpKTooci5oYXNUaW1lKCl8fChyPXRoaXMuY2FsZW5kYXIudGltZSgwKSkscy5oYXNUaW1lKCl8fChzPXRoaXMuY2FsZW5kYXIudGltZSgwKSkpLGU9ci5jbG9uZSgpLGU9dGhpcy5za2lwSGlkZGVuRGF5cyhlKSxuPXMuY2xvbmUoKSxuPXRoaXMuc2tpcEhpZGRlbkRheXMobiwtMSwhMCkse2ludGVydmFsVW5pdDppLGludGVydmFsU3RhcnQ6cixpbnRlcnZhbEVuZDpzLHN0YXJ0OmUsZW5kOm59fSxjb21wdXRlUHJldkRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFzc2FnZUN1cnJlbnREYXRlKHQuY2xvbmUoKS5zdGFydE9mKHRoaXMuaW50ZXJ2YWxVbml0KS5zdWJ0cmFjdCh0aGlzLmludGVydmFsRHVyYXRpb24pLC0xKX0sY29tcHV0ZU5leHREYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hc3NhZ2VDdXJyZW50RGF0ZSh0LmNsb25lKCkuc3RhcnRPZih0aGlzLmludGVydmFsVW5pdCkuYWRkKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbikpfSxtYXNzYWdlQ3VycmVudERhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnZhbER1cmF0aW9uLmFzKCJkYXlzIik8PTEmJnRoaXMuaXNIaWRkZW5EYXkodCkmJih0PXRoaXMuc2tpcEhpZGRlbkRheXModCxlKSx0LnN0YXJ0T2YoImRheSIpKSx0fSx1cGRhdGVUaXRsZTpmdW5jdGlvbigpe3RoaXMudGl0bGU9dGhpcy5jb21wdXRlVGl0bGUoKX0sY29tcHV0ZVRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybWF0UmFuZ2Uoe3N0YXJ0OnRoaXMuY2FsZW5kYXIuYXBwbHlUaW1lem9uZSh0aGlzLmludGVydmFsU3RhcnQpLGVuZDp0aGlzLmNhbGVuZGFyLmFwcGx5VGltZXpvbmUodGhpcy5pbnRlcnZhbEVuZCl9LHRoaXMub3B0KCJ0aXRsZUZvcm1hdCIpfHx0aGlzLmNvbXB1dGVUaXRsZUZvcm1hdCgpLHRoaXMub3B0KCJ0aXRsZVJhbmdlU2VwYXJhdG9yIikpfSxjb21wdXRlVGl0bGVGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4ieWVhciI9PXRoaXMuaW50ZXJ2YWxVbml0PyJZWVlZIjoibW9udGgiPT10aGlzLmludGVydmFsVW5pdD90aGlzLm9wdCgibW9udGhZZWFyRm9ybWF0Iik6dGhpcy5pbnRlcnZhbER1cmF0aW9uLmFzKCJkYXlzIik+MT8ibGwiOiJMTCJ9LGZvcm1hdFJhbmdlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LmVuZDtyZXR1cm4gaS5oYXNUaW1lKCl8fChpPWkuY2xvbmUoKS5zdWJ0cmFjdCgxKSkscHQodC5zdGFydCxpLGUsbix0aGlzLm9wdCgiaXNSVEwiKSl9LGdldEFsbERheUh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHQoImFsbERheUh0bWwiKXx8dHQodGhpcy5vcHQoImFsbERheVRleHQiKSl9LGJ1aWxkR290b0FuY2hvckh0bWw6ZnVuY3Rpb24oZSxuLGkpe3ZhciByLHMsbyxsO3JldHVybiB0LmlzUGxhaW5PYmplY3QoZSk/KHI9ZS5kYXRlLHM9ZS50eXBlLG89ZS5mb3JjZU9mZik6cj1lLHI9anQubW9tZW50KHIpLGw9e2RhdGU6ci5mb3JtYXQoIllZWVktTU0tREQiKSx0eXBlOnN8fCJkYXkifSwic3RyaW5nIj09dHlwZW9mIG4mJihpPW4sbj1udWxsKSxuPW4/IiAiK2l0KG4pOiIiLGk9aXx8IiIsIW8mJnRoaXMub3B0KCJuYXZMaW5rcyIpPyI8YSIrbisnIGRhdGEtZ290bz0iJyt0dChKU09OLnN0cmluZ2lmeShsKSkrJyI+JytpKyI8L2E+IjoiPHNwYW4iK24rIj4iK2krIjwvc3Bhbj4ifSxzZXRFbGVtZW50OmZ1bmN0aW9uKHQpe3RoaXMuZWw9dCx0aGlzLmJpbmRHbG9iYWxIYW5kbGVycygpfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpLHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkJiYodGhpcy51bnJlbmRlclNrZWxldG9uKCksdGhpcy5pc1NrZWxldG9uUmVuZGVyZWQ9ITEpLHRoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKSx0aGlzLmVsLnJlbW92ZSgpfSxkaXNwbGF5OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPW51bGw7cmV0dXJuIG51bGwhPWUmJnRoaXMuZGlzcGxheWluZyYmKGk9dGhpcy5xdWVyeVNjcm9sbCgpKSx0aGlzLmNhbGVuZGFyLmZyZWV6ZUNvbnRlbnRIZWlnaHQoKSx1dCh0aGlzLmNsZWFyKCksZnVuY3Rpb24oKXtyZXR1cm4gbi5kaXNwbGF5aW5nPXV0KG4uZGlzcGxheVZpZXcodCksZnVuY3Rpb24oKXtudWxsIT1lP24uc2V0U2Nyb2xsKGUpOm4uZm9yY2VTY3JvbGwobi5jb21wdXRlSW5pdGlhbFNjcm9sbChpKSksbi5jYWxlbmRhci51bmZyZWV6ZUNvbnRlbnRIZWlnaHQoKSxuLnRyaWdnZXJSZW5kZXIoKX0pfSl9LGNsZWFyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXRoaXMuZGlzcGxheWluZztyZXR1cm4gbj91dChuLGZ1bmN0aW9uKCl7cmV0dXJuIGUuZGlzcGxheWluZz1udWxsLGUuY2xlYXJFdmVudHMoKSxlLmNsZWFyVmlldygpfSk6dC53aGVuKCl9LGRpc3BsYXlWaWV3OmZ1bmN0aW9uKHQpe3RoaXMuaXNTa2VsZXRvblJlbmRlcmVkfHwodGhpcy5yZW5kZXJTa2VsZXRvbigpLHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkPSEwKSx0JiZ0aGlzLnNldERhdGUodCksdGhpcy5yZW5kZXImJnRoaXMucmVuZGVyKCksdGhpcy5yZW5kZXJEYXRlcygpLHRoaXMudXBkYXRlU2l6ZSgpLHRoaXMucmVuZGVyQnVzaW5lc3NIb3VycygpLHRoaXMuc3RhcnROb3dJbmRpY2F0b3IoKX0sY2xlYXJWaWV3OmZ1bmN0aW9uKCl7dGhpcy51bnNlbGVjdCgpLHRoaXMuc3RvcE5vd0luZGljYXRvcigpLHRoaXMudHJpZ2dlclVucmVuZGVyKCksdGhpcy51bnJlbmRlckJ1c2luZXNzSG91cnMoKSx0aGlzLnVucmVuZGVyRGF0ZXMoKSx0aGlzLmRlc3Ryb3kmJnRoaXMuZGVzdHJveSgpfSxyZW5kZXJTa2VsZXRvbjpmdW5jdGlvbigpe30sdW5yZW5kZXJTa2VsZXRvbjpmdW5jdGlvbigpe30scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt9LHVucmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt9LHRyaWdnZXJSZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXIoInZpZXdSZW5kZXIiLHRoaXMsdGhpcyx0aGlzLmVsKX0sdHJpZ2dlclVucmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJ2aWV3RGVzdHJveSIsdGhpcyx0aGlzLHRoaXMuZWwpfSxiaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLmxpc3RlblRvKHQoZG9jdW1lbnQpLCJtb3VzZWRvd24iLHRoaXMuaGFuZGxlRG9jdW1lbnRNb3VzZWRvd24pLHRoaXMubGlzdGVuVG8odChkb2N1bWVudCksInRvdWNoc3RhcnQiLHRoaXMucHJvY2Vzc1Vuc2VsZWN0KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLnN0b3BMaXN0ZW5pbmdUbyh0KGRvY3VtZW50KSl9LGluaXRUaGVtaW5nUHJvcHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdCgidGhlbWUiKT8idWkiOiJmYyI7dGhpcy53aWRnZXRIZWFkZXJDbGFzcz10KyItd2lkZ2V0LWhlYWRlciIsdGhpcy53aWRnZXRDb250ZW50Q2xhc3M9dCsiLXdpZGdldC1jb250ZW50Iix0aGlzLmhpZ2hsaWdodFN0YXRlQ2xhc3M9dCsiLXN0YXRlLWhpZ2hsaWdodCJ9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt9LHVucmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe30sc3RhcnROb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt2YXIgdCxuLGkscj10aGlzO3RoaXMub3B0KCJub3dJbmRpY2F0b3IiKSYmKHQ9dGhpcy5nZXROb3dJbmRpY2F0b3JVbml0KCksdCYmKG49bHQodGhpcywidXBkYXRlTm93SW5kaWNhdG9yIiksdGhpcy5pbml0aWFsTm93RGF0ZT10aGlzLmNhbGVuZGFyLmdldE5vdygpLHRoaXMuaW5pdGlhbE5vd1F1ZXJpZWRNcz0rbmV3IERhdGUsdGhpcy5yZW5kZXJOb3dJbmRpY2F0b3IodGhpcy5pbml0aWFsTm93RGF0ZSksdGhpcy5pc05vd0luZGljYXRvclJlbmRlcmVkPSEwLGk9dGhpcy5pbml0aWFsTm93RGF0ZS5jbG9uZSgpLnN0YXJ0T2YodCkuYWRkKDEsdCktdGhpcy5pbml0aWFsTm93RGF0ZSx0aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5ub3dJbmRpY2F0b3JUaW1lb3V0SUQ9bnVsbCxuKCksaT0rZS5kdXJhdGlvbigxLHQpLGk9TWF0aC5tYXgoMTAwLGkpLHIubm93SW5kaWNhdG9ySW50ZXJ2YWxJRD1zZXRJbnRlcnZhbChuLGkpfSxpKSkpfSx1cGRhdGVOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQmJih0aGlzLnVucmVuZGVyTm93SW5kaWNhdG9yKCksdGhpcy5yZW5kZXJOb3dJbmRpY2F0b3IodGhpcy5pbml0aWFsTm93RGF0ZS5jbG9uZSgpLmFkZChuZXcgRGF0ZS10aGlzLmluaXRpYWxOb3dRdWVyaWVkTXMpKSl9LHN0b3BOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQmJih0aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRCYmKGNsZWFyVGltZW91dCh0aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRCksdGhpcy5ub3dJbmRpY2F0b3JUaW1lb3V0SUQ9bnVsbCksdGhpcy5ub3dJbmRpY2F0b3JJbnRlcnZhbElEJiYoY2xlYXJUaW1lb3V0KHRoaXMubm93SW5kaWNhdG9ySW50ZXJ2YWxJRCksdGhpcy5ub3dJbmRpY2F0b3JJbnRlcnZhbElEPW51bGwpLHRoaXMudW5yZW5kZXJOb3dJbmRpY2F0b3IoKSx0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQ9ITEpfSxnZXROb3dJbmRpY2F0b3JVbml0OmZ1bmN0aW9uKCl7fSxyZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24odCl7fSx1bnJlbmRlck5vd0luZGljYXRvcjpmdW5jdGlvbigpe30sdXBkYXRlU2l6ZTpmdW5jdGlvbih0KXt2YXIgZTt0JiYoZT10aGlzLnF1ZXJ5U2Nyb2xsKCkpLHRoaXMudXBkYXRlSGVpZ2h0KHQpLHRoaXMudXBkYXRlV2lkdGgodCksdGhpcy51cGRhdGVOb3dJbmRpY2F0b3IoKSx0JiZ0aGlzLnNldFNjcm9sbChlKX0sdXBkYXRlV2lkdGg6ZnVuY3Rpb24odCl7fSx1cGRhdGVIZWlnaHQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jYWxlbmRhcjt0aGlzLnNldEhlaWdodChlLmdldFN1Z2dlc3RlZFZpZXdIZWlnaHQoKSxlLmlzSGVpZ2h0QXV0bygpKX0sc2V0SGVpZ2h0OmZ1bmN0aW9uKHQsZSl7fSxjb21wdXRlSW5pdGlhbFNjcm9sbDpmdW5jdGlvbih0KXtyZXR1cm4gMH0scXVlcnlTY3JvbGw6ZnVuY3Rpb24oKXt9LHNldFNjcm9sbDpmdW5jdGlvbih0KXt9LGZvcmNlU2Nyb2xsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5zZXRTY3JvbGwodCksc2V0VGltZW91dChmdW5jdGlvbigpe2Uuc2V0U2Nyb2xsKHQpfSwwKX0sZGlzcGxheUV2ZW50czpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnF1ZXJ5U2Nyb2xsKCk7dGhpcy5jbGVhckV2ZW50cygpLHRoaXMucmVuZGVyRXZlbnRzKHQpLHRoaXMuaXNFdmVudHNSZW5kZXJlZD0hMCx0aGlzLnNldFNjcm9sbChlKSx0aGlzLnRyaWdnZXJFdmVudFJlbmRlcigpfSxjbGVhckV2ZW50czpmdW5jdGlvbigpe3ZhciB0O3RoaXMuaXNFdmVudHNSZW5kZXJlZCYmKHQ9dGhpcy5xdWVyeVNjcm9sbCgpLHRoaXMudHJpZ2dlckV2ZW50VW5yZW5kZXIoKSx0aGlzLmRlc3Ryb3lFdmVudHMmJnRoaXMuZGVzdHJveUV2ZW50cygpLHRoaXMudW5yZW5kZXJFdmVudHMoKSx0aGlzLnNldFNjcm9sbCh0KSx0aGlzLmlzRXZlbnRzUmVuZGVyZWQ9ITEpfSxyZW5kZXJFdmVudHM6ZnVuY3Rpb24odCl7fSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe30sdHJpZ2dlckV2ZW50UmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoImV2ZW50QWZ0ZXJSZW5kZXIiLHQuZXZlbnQsdC5ldmVudCx0LmVsKX0pLHRoaXMudHJpZ2dlcigiZXZlbnRBZnRlckFsbFJlbmRlciIpfSx0cmlnZ2VyRXZlbnRVbnJlbmRlcjpmdW5jdGlvbigpe3RoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24odCl7dGhpcy50cmlnZ2VyKCJldmVudERlc3Ryb3kiLHQuZXZlbnQsdC5ldmVudCx0LmVsKX0pfSxyZXNvbHZlRXZlbnRFbDpmdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMudHJpZ2dlcigiZXZlbnRSZW5kZXIiLGUsZSxuKTtyZXR1cm4gaT09PSExP249bnVsbDppJiZpIT09ITAmJihuPXQoaSkpLG59LHNob3dFdmVudDpmdW5jdGlvbih0KXt0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKHQpe3QuZWwuY3NzKCJ2aXNpYmlsaXR5IiwiIil9LHQpfSxoaWRlRXZlbnQ6ZnVuY3Rpb24odCl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbih0KXt0LmVsLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpfSx0KX0scmVuZGVyZWRFdmVudFNlZ0VhY2g6ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuZ2V0RXZlbnRTZWdzKCk7Zm9yKG49MDtuPGkubGVuZ3RoO24rKyllJiZpW25dLmV2ZW50Ll9pZCE9PWUuX2lkfHxpW25dLmVsJiZ0LmNhbGwodGhpcyxpW25dKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGlzRXZlbnREcmFnZ2FibGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXNFdmVudFN0YXJ0RWRpdGFibGUodCl9LGlzRXZlbnRTdGFydEVkaXRhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiBKKHQuc3RhcnRFZGl0YWJsZSwodC5zb3VyY2V8fHt9KS5zdGFydEVkaXRhYmxlLHRoaXMub3B0KCJldmVudFN0YXJ0RWRpdGFibGUiKSx0aGlzLmlzRXZlbnRHZW5lcmFsbHlFZGl0YWJsZSh0KSl9LGlzRXZlbnRHZW5lcmFsbHlFZGl0YWJsZTpmdW5jdGlvbih0KXtyZXR1cm4gSih0LmVkaXRhYmxlLCh0LnNvdXJjZXx8e30pLmVkaXRhYmxlLHRoaXMub3B0KCJlZGl0YWJsZSIpKX0scmVwb3J0RXZlbnREcm9wOmZ1bmN0aW9uKHQsZSxuLGkscil7CnZhciBzPXRoaXMuY2FsZW5kYXIsbz1zLm11dGF0ZUV2ZW50KHQsZSxuKSxsPWZ1bmN0aW9uKCl7by51bmRvKCkscy5yZXBvcnRFdmVudENoYW5nZSgpfTt0aGlzLnRyaWdnZXJFdmVudERyb3AodCxvLmRhdGVEZWx0YSxsLGkscikscy5yZXBvcnRFdmVudENoYW5nZSgpfSx0cmlnZ2VyRXZlbnREcm9wOmZ1bmN0aW9uKHQsZSxuLGkscil7dGhpcy50cmlnZ2VyKCJldmVudERyb3AiLGlbMF0sdCxlLG4scix7fSl9LHJlcG9ydEV4dGVybmFsRHJvcDpmdW5jdGlvbihlLG4saSxyLHMpe3ZhciBvLGwsYT1lLmV2ZW50UHJvcHM7YSYmKG89dC5leHRlbmQoe30sYSxuKSxsPXRoaXMuY2FsZW5kYXIucmVuZGVyRXZlbnQobyxlLnN0aWNrKVswXSksdGhpcy50cmlnZ2VyRXh0ZXJuYWxEcm9wKGwsbixpLHIscyl9LHRyaWdnZXJFeHRlcm5hbERyb3A6ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLnRyaWdnZXIoImRyb3AiLG5bMF0sZS5zdGFydCxpLHIpLHQmJnRoaXMudHJpZ2dlcigiZXZlbnRSZWNlaXZlIixudWxsLHQpfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKHQsZSl7fSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt9LGlzRXZlbnRSZXNpemFibGVGcm9tU3RhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0KCJldmVudFJlc2l6YWJsZUZyb21TdGFydCIpJiZ0aGlzLmlzRXZlbnRSZXNpemFibGUodCl9LGlzRXZlbnRSZXNpemFibGVGcm9tRW5kOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzRXZlbnRSZXNpemFibGUodCl9LGlzRXZlbnRSZXNpemFibGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zb3VyY2V8fHt9O3JldHVybiBKKHQuZHVyYXRpb25FZGl0YWJsZSxlLmR1cmF0aW9uRWRpdGFibGUsdGhpcy5vcHQoImV2ZW50RHVyYXRpb25FZGl0YWJsZSIpLHQuZWRpdGFibGUsZS5lZGl0YWJsZSx0aGlzLm9wdCgiZWRpdGFibGUiKSl9LHJlcG9ydEV2ZW50UmVzaXplOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIHM9dGhpcy5jYWxlbmRhcixvPXMubXV0YXRlRXZlbnQodCxlLG4pLGw9ZnVuY3Rpb24oKXtvLnVuZG8oKSxzLnJlcG9ydEV2ZW50Q2hhbmdlKCl9O3RoaXMudHJpZ2dlckV2ZW50UmVzaXplKHQsby5kdXJhdGlvbkRlbHRhLGwsaSxyKSxzLnJlcG9ydEV2ZW50Q2hhbmdlKCl9LHRyaWdnZXJFdmVudFJlc2l6ZTpmdW5jdGlvbih0LGUsbixpLHIpe3RoaXMudHJpZ2dlcigiZXZlbnRSZXNpemUiLGlbMF0sdCxlLG4scix7fSl9LHNlbGVjdDpmdW5jdGlvbih0LGUpe3RoaXMudW5zZWxlY3QoZSksdGhpcy5yZW5kZXJTZWxlY3Rpb24odCksdGhpcy5yZXBvcnRTZWxlY3Rpb24odCxlKX0scmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKHQpe30scmVwb3J0U2VsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5pc1NlbGVjdGVkPSEwLHRoaXMudHJpZ2dlclNlbGVjdCh0LGUpfSx0cmlnZ2VyU2VsZWN0OmZ1bmN0aW9uKHQsZSl7dGhpcy50cmlnZ2VyKCJzZWxlY3QiLG51bGwsdGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHQuc3RhcnQpLHRoaXMuY2FsZW5kYXIuYXBwbHlUaW1lem9uZSh0LmVuZCksZSl9LHVuc2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuaXNTZWxlY3RlZCYmKHRoaXMuaXNTZWxlY3RlZD0hMSx0aGlzLmRlc3Ryb3lTZWxlY3Rpb24mJnRoaXMuZGVzdHJveVNlbGVjdGlvbigpLHRoaXMudW5yZW5kZXJTZWxlY3Rpb24oKSx0aGlzLnRyaWdnZXIoInVuc2VsZWN0IixudWxsLHQpKX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt9LHNlbGVjdEV2ZW50OmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0ZWRFdmVudCYmdGhpcy5zZWxlY3RlZEV2ZW50PT09dHx8KHRoaXMudW5zZWxlY3RFdmVudCgpLHRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24odCl7dC5lbC5hZGRDbGFzcygiZmMtc2VsZWN0ZWQiKX0sdCksdGhpcy5zZWxlY3RlZEV2ZW50PXQpfSx1bnNlbGVjdEV2ZW50OmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEV2ZW50JiYodGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbih0KXt0LmVsLnJlbW92ZUNsYXNzKCJmYy1zZWxlY3RlZCIpfSx0aGlzLnNlbGVjdGVkRXZlbnQpLHRoaXMuc2VsZWN0ZWRFdmVudD1udWxsKX0saXNFdmVudFNlbGVjdGVkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlbGVjdGVkRXZlbnQmJnRoaXMuc2VsZWN0ZWRFdmVudC5faWQ9PT10Ll9pZH0saGFuZGxlRG9jdW1lbnRNb3VzZWRvd246ZnVuY3Rpb24odCl7Uyh0KSYmdGhpcy5wcm9jZXNzVW5zZWxlY3QodCl9LHByb2Nlc3NVbnNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLnByb2Nlc3NSYW5nZVVuc2VsZWN0KHQpLHRoaXMucHJvY2Vzc0V2ZW50VW5zZWxlY3QodCl9LHByb2Nlc3NSYW5nZVVuc2VsZWN0OmZ1bmN0aW9uKGUpe3ZhciBuO3RoaXMuaXNTZWxlY3RlZCYmdGhpcy5vcHQoInVuc2VsZWN0QXV0byIpJiYobj10aGlzLm9wdCgidW5zZWxlY3RDYW5jZWwiKSxuJiZ0KGUudGFyZ2V0KS5jbG9zZXN0KG4pLmxlbmd0aHx8dGhpcy51bnNlbGVjdChlKSl9LHByb2Nlc3NFdmVudFVuc2VsZWN0OmZ1bmN0aW9uKGUpe3RoaXMuc2VsZWN0ZWRFdmVudCYmKHQoZS50YXJnZXQpLmNsb3Nlc3QoIi5mYy1zZWxlY3RlZCIpLmxlbmd0aHx8dGhpcy51bnNlbGVjdEV2ZW50KCkpfSx0cmlnZ2VyRGF5Q2xpY2s6ZnVuY3Rpb24odCxlLG4pe3RoaXMudHJpZ2dlcigiZGF5Q2xpY2siLGUsdGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHQuc3RhcnQpLG4pfSxpbml0SGlkZGVuRGF5czpmdW5jdGlvbigpe3ZhciBlLG49dGhpcy5vcHQoImhpZGRlbkRheXMiKXx8W10saT1bXSxyPTA7Zm9yKHRoaXMub3B0KCJ3ZWVrZW5kcyIpPT09ITEmJm4ucHVzaCgwLDYpLGU9MDtlPDc7ZSsrKShpW2VdPXQuaW5BcnJheShlLG4pIT09LTEpfHxyKys7aWYoIXIpdGhyb3ciaW52YWxpZCBoaWRkZW5EYXlzIjt0aGlzLmlzSGlkZGVuRGF5SGFzaD1pfSxpc0hpZGRlbkRheTpmdW5jdGlvbih0KXtyZXR1cm4gZS5pc01vbWVudCh0KSYmKHQ9dC5kYXkoKSksdGhpcy5pc0hpZGRlbkRheUhhc2hbdF19LHNraXBIaWRkZW5EYXlzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LmNsb25lKCk7Zm9yKGU9ZXx8MTt0aGlzLmlzSGlkZGVuRGF5SGFzaFsoaS5kYXkoKSsobj9lOjApKzcpJTddOylpLmFkZChlLCJkYXlzIik7cmV0dXJuIGl9LGNvbXB1dGVEYXlSYW5nZTpmdW5jdGlvbih0KXt2YXIgZSxuPXQuc3RhcnQuY2xvbmUoKS5zdHJpcFRpbWUoKSxpPXQuZW5kLHI9bnVsbDtyZXR1cm4gaSYmKHI9aS5jbG9uZSgpLnN0cmlwVGltZSgpLGU9K2kudGltZSgpLGUmJmU+PXRoaXMubmV4dERheVRocmVzaG9sZCYmci5hZGQoMSwiZGF5cyIpKSwoIWl8fHI8PW4pJiYocj1uLmNsb25lKCkuYWRkKDEsImRheXMiKSkse3N0YXJ0Om4sZW5kOnJ9fSxpc011bHRpRGF5RXZlbnQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb21wdXRlRGF5UmFuZ2UodCk7cmV0dXJuIGUuZW5kLmRpZmYoZS5zdGFydCwiZGF5cyIpPjF9fSksd2U9anQuU2Nyb2xsZXI9d3QuZXh0ZW5kKHtlbDpudWxsLHNjcm9sbEVsOm51bGwsb3ZlcmZsb3dYOm51bGwsb3ZlcmZsb3dZOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24odCl7dD10fHx7fSx0aGlzLm92ZXJmbG93WD10Lm92ZXJmbG93WHx8dC5vdmVyZmxvd3x8ImF1dG8iLHRoaXMub3ZlcmZsb3dZPXQub3ZlcmZsb3dZfHx0Lm92ZXJmbG93fHwiYXV0byJ9LHJlbmRlcjpmdW5jdGlvbigpe3RoaXMuZWw9dGhpcy5yZW5kZXJFbCgpLHRoaXMuYXBwbHlPdmVyZmxvdygpfSxyZW5kZXJFbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbEVsPXQoJzxkaXYgY2xhc3M9ImZjLXNjcm9sbGVyIj48L2Rpdj4nKX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLnNldEhlaWdodCgiYXV0byIpLHRoaXMuYXBwbHlPdmVyZmxvdygpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbC5yZW1vdmUoKX0sYXBwbHlPdmVyZmxvdzpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsRWwuY3NzKHsib3ZlcmZsb3cteCI6dGhpcy5vdmVyZmxvd1gsIm92ZXJmbG93LXkiOnRoaXMub3ZlcmZsb3dZfSl9LGxvY2tPdmVyZmxvdzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm92ZXJmbG93WCxuPXRoaXMub3ZlcmZsb3dZO3Q9dHx8dGhpcy5nZXRTY3JvbGxiYXJXaWR0aHMoKSwiYXV0byI9PT1lJiYoZT10LnRvcHx8dC5ib3R0b218fHRoaXMuc2Nyb2xsRWxbMF0uc2Nyb2xsV2lkdGgtMT50aGlzLnNjcm9sbEVsWzBdLmNsaWVudFdpZHRoPyJzY3JvbGwiOiJoaWRkZW4iKSwiYXV0byI9PT1uJiYobj10LmxlZnR8fHQucmlnaHR8fHRoaXMuc2Nyb2xsRWxbMF0uc2Nyb2xsSGVpZ2h0LTE+dGhpcy5zY3JvbGxFbFswXS5jbGllbnRIZWlnaHQ/InNjcm9sbCI6ImhpZGRlbiIpLHRoaXMuc2Nyb2xsRWwuY3NzKHsib3ZlcmZsb3cteCI6ZSwib3ZlcmZsb3cteSI6bn0pfSxzZXRIZWlnaHQ6ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxFbC5oZWlnaHQodCl9LGdldFNjcm9sbFRvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbEVsLnNjcm9sbFRvcCgpfSxzZXRTY3JvbGxUb3A6ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxFbC5zY3JvbGxUb3AodCl9LGdldENsaWVudFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsRWxbMF0uY2xpZW50V2lkdGh9LGdldENsaWVudEhlaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbEVsWzBdLmNsaWVudEhlaWdodH0sZ2V0U2Nyb2xsYmFyV2lkdGhzOmZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcy5zY3JvbGxFbCl9fSksRWU9anQuQ2FsZW5kYXI9d3QuZXh0ZW5kKHtkaXJEZWZhdWx0czpudWxsLGxvY2FsZURlZmF1bHRzOm51bGwsb3ZlcnJpZGVzOm51bGwsZHluYW1pY092ZXJyaWRlczpudWxsLG9wdGlvbnM6bnVsbCx2aWV3U3BlY0NhY2hlOm51bGwsdmlldzpudWxsLGhlYWRlcjpudWxsLGxvYWRpbmdMZXZlbDowLGNvbnN0cnVjdG9yOk90LGluaXRpYWxpemU6ZnVuY3Rpb24oKXt9LHBvcHVsYXRlT3B0aW9uc0hhc2g6ZnVuY3Rpb24oKXt2YXIgdCxlLGkscjt0PUoodGhpcy5keW5hbWljT3ZlcnJpZGVzLmxvY2FsZSx0aGlzLm92ZXJyaWRlcy5sb2NhbGUpLGU9RGVbdF0sZXx8KHQ9RWUuZGVmYXVsdHMubG9jYWxlLGU9RGVbdF18fHt9KSxpPUoodGhpcy5keW5hbWljT3ZlcnJpZGVzLmlzUlRMLHRoaXMub3ZlcnJpZGVzLmlzUlRMLGUuaXNSVEwsRWUuZGVmYXVsdHMuaXNSVEwpLHI9aT9FZS5ydGxEZWZhdWx0czp7fSx0aGlzLmRpckRlZmF1bHRzPXIsdGhpcy5sb2NhbGVEZWZhdWx0cz1lLHRoaXMub3B0aW9ucz1uKFtFZS5kZWZhdWx0cyxyLGUsdGhpcy5vdmVycmlkZXMsdGhpcy5keW5hbWljT3ZlcnJpZGVzXSksVnQodGhpcy5vcHRpb25zKX0sZ2V0Vmlld1NwZWM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52aWV3U3BlY0NhY2hlO3JldHVybiBlW3RdfHwoZVt0XT10aGlzLmJ1aWxkVmlld1NwZWModCkpfSxnZXRVbml0Vmlld1NwZWM6ZnVuY3Rpb24oZSl7dmFyIG4saSxyO2lmKHQuaW5BcnJheShlLFh0KSE9LTEpZm9yKG49dGhpcy5oZWFkZXIuZ2V0Vmlld3NXaXRoQnV0dG9ucygpLHQuZWFjaChqdC52aWV3cyxmdW5jdGlvbih0KXtuLnB1c2godCl9KSxpPTA7aTxuLmxlbmd0aDtpKyspaWYocj10aGlzLmdldFZpZXdTcGVjKG5baV0pLHImJnIuc2luZ2xlVW5pdD09ZSlyZXR1cm4gcn0sYnVpbGRWaWV3U3BlYzpmdW5jdGlvbih0KXtmb3IodmFyIGkscixzLG8sbD10aGlzLm92ZXJyaWRlcy52aWV3c3x8e30sYT1bXSx1PVtdLGQ9W10sYz10O2M7KWk9VXRbY10scj1sW2NdLGM9bnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGk9e2NsYXNzOml9KSxpJiYoYS51bnNoaWZ0KGkpLHUudW5zaGlmdChpLmRlZmF1bHRzfHx7fSkscz1zfHxpLmR1cmF0aW9uLGM9Y3x8aS50eXBlKSxyJiYoZC51bnNoaWZ0KHIpLHM9c3x8ci5kdXJhdGlvbixjPWN8fHIudHlwZSk7cmV0dXJuIGk9cShhKSxpLnR5cGU9dCwhIWkuY2xhc3MmJihzJiYocz1lLmR1cmF0aW9uKHMpLHMudmFsdWVPZigpJiYoaS5kdXJhdGlvbj1zLG89TyhzKSwxPT09cy5hcyhvKSYmKGkuc2luZ2xlVW5pdD1vLGQudW5zaGlmdChsW29dfHx7fSkpKSksaS5kZWZhdWx0cz1uKHUpLGkub3ZlcnJpZGVzPW4oZCksdGhpcy5idWlsZFZpZXdTcGVjT3B0aW9ucyhpKSx0aGlzLmJ1aWxkVmlld1NwZWNCdXR0b25UZXh0KGksdCksaSl9LGJ1aWxkVmlld1NwZWNPcHRpb25zOmZ1bmN0aW9uKHQpe3Qub3B0aW9ucz1uKFtFZS5kZWZhdWx0cyx0LmRlZmF1bHRzLHRoaXMuZGlyRGVmYXVsdHMsdGhpcy5sb2NhbGVEZWZhdWx0cyx0aGlzLm92ZXJyaWRlcyx0Lm92ZXJyaWRlcyx0aGlzLmR5bmFtaWNPdmVycmlkZXNdKSxWdCh0Lm9wdGlvbnMpfSxidWlsZFZpZXdTcGVjQnV0dG9uVGV4dDpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4obil7dmFyIGk9bi5idXR0b25UZXh0fHx7fTtyZXR1cm4gaVtlXXx8KHQuYnV0dG9uVGV4dEtleT9pW3QuYnV0dG9uVGV4dEtleV06bnVsbCl8fCh0LnNpbmdsZVVuaXQ/aVt0LnNpbmdsZVVuaXRdOm51bGwpfXQuYnV0dG9uVGV4dE92ZXJyaWRlPW4odGhpcy5keW5hbWljT3ZlcnJpZGVzKXx8bih0aGlzLm92ZXJyaWRlcyl8fHQub3ZlcnJpZGVzLmJ1dHRvblRleHQsdC5idXR0b25UZXh0RGVmYXVsdD1uKHRoaXMubG9jYWxlRGVmYXVsdHMpfHxuKHRoaXMuZGlyRGVmYXVsdHMpfHx0LmRlZmF1bHRzLmJ1dHRvblRleHR8fG4oRWUuZGVmYXVsdHMpfHwodC5kdXJhdGlvbj90aGlzLmh1bWFuaXplRHVyYXRpb24odC5kdXJhdGlvbik6bnVsbCl8fGV9LGluc3RhbnRpYXRlVmlldzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFZpZXdTcGVjKHQpO3JldHVybiBuZXcgZS5jbGFzcyh0aGlzLHQsZS5vcHRpb25zLGUuZHVyYXRpb24pfSxpc1ZhbGlkVmlld1R5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIEJvb2xlYW4odGhpcy5nZXRWaWV3U3BlYyh0KSl9LHB1c2hMb2FkaW5nOmZ1bmN0aW9uKCl7dGhpcy5sb2FkaW5nTGV2ZWwrK3x8dGhpcy50cmlnZ2VyKCJsb2FkaW5nIixudWxsLCEwLHRoaXMudmlldyl9LHBvcExvYWRpbmc6ZnVuY3Rpb24oKXstLXRoaXMubG9hZGluZ0xldmVsfHx0aGlzLnRyaWdnZXIoImxvYWRpbmciLG51bGwsITEsdGhpcy52aWV3KX0sYnVpbGRTZWxlY3RTcGFuOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLm1vbWVudCh0KS5zdHJpcFpvbmUoKTtyZXR1cm4gbj1lP3RoaXMubW9tZW50KGUpLnN0cmlwWm9uZSgpOmkuaGFzVGltZSgpP2kuY2xvbmUoKS5hZGQodGhpcy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKTppLmNsb25lKCkuYWRkKHRoaXMuZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb24pLHtzdGFydDppLGVuZDpufX19KTtFZS5taXhpbihsZSksRWUubWl4aW4oe29wdGlvbkhhbmRsZXJzOm51bGwsYmluZE9wdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuYmluZE9wdGlvbnMoW3RdLGUpfSxiaW5kT3B0aW9uczpmdW5jdGlvbih0LGUpe3ZhciBuLGk9e2Z1bmM6ZSxuYW1lczp0fTtmb3Iobj0wO248dC5sZW5ndGg7bisrKXRoaXMucmVnaXN0ZXJPcHRpb25IYW5kbGVyT2JqKHRbbl0saSk7dGhpcy50cmlnZ2VyT3B0aW9uSGFuZGxlck9iaihpKX0scmVnaXN0ZXJPcHRpb25IYW5kbGVyT2JqOmZ1bmN0aW9uKHQsZSl7KHRoaXMub3B0aW9uSGFuZGxlcnNbdF18fCh0aGlzLm9wdGlvbkhhbmRsZXJzW3RdPVtdKSkucHVzaChlKX0sdHJpZ2dlck9wdGlvbkhhbmRsZXJzOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5vcHRpb25IYW5kbGVyc1t0XXx8W107Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyl0aGlzLnRyaWdnZXJPcHRpb25IYW5kbGVyT2JqKG5bZV0pfSx0cmlnZ2VyT3B0aW9uSGFuZGxlck9iajpmdW5jdGlvbih0KXt2YXIgZSxuPXQubmFtZXMsaT1bXTtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKWkucHVzaCh0aGlzLm9wdGlvbnNbbltlXV0pO3QuZnVuYy5hcHBseSh0aGlzLGkpfX0pLEVlLmRlZmF1bHRzPXt0aXRsZVJhbmdlU2VwYXJhdG9yOiIg4oCTICIsbW9udGhZZWFyRm9ybWF0OiJNTU1NIFlZWVkiLGRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb246IjAyOjAwOjAwIixkZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjp7ZGF5czoxfSxmb3JjZUV2ZW50RHVyYXRpb246ITEsbmV4dERheVRocmVzaG9sZDoiMDk6MDA6MDAiLGRlZmF1bHRWaWV3OiJtb250aCIsYXNwZWN0UmF0aW86MS4zNSxoZWFkZXI6e2xlZnQ6InRpdGxlIixjZW50ZXI6IiIscmlnaHQ6InRvZGF5IHByZXYsbmV4dCJ9LHdlZWtlbmRzOiEwLHdlZWtOdW1iZXJzOiExLHdlZWtOdW1iZXJUaXRsZToiVyIsd2Vla051bWJlckNhbGN1bGF0aW9uOiJsb2NhbCIsc2Nyb2xsVGltZToiMDY6MDA6MDAiLGxhenlGZXRjaGluZzohMCxzdGFydFBhcmFtOiJzdGFydCIsZW5kUGFyYW06ImVuZCIsdGltZXpvbmVQYXJhbToidGltZXpvbmUiLHRpbWV6b25lOiExLGlzUlRMOiExLGJ1dHRvblRleHQ6e3ByZXY6InByZXYiLG5leHQ6Im5leHQiLHByZXZZZWFyOiJwcmV2IHllYXIiLG5leHRZZWFyOiJuZXh0IHllYXIiLHllYXI6InllYXIiLHRvZGF5OiJ0b2RheSIsbW9udGg6Im1vbnRoIix3ZWVrOiJ3ZWVrIixkYXk6ImRheSJ9LGJ1dHRvbkljb25zOntwcmV2OiJsZWZ0LXNpbmdsZS1hcnJvdyIsbmV4dDoicmlnaHQtc2luZ2xlLWFycm93IixwcmV2WWVhcjoibGVmdC1kb3VibGUtYXJyb3ciLG5leHRZZWFyOiJyaWdodC1kb3VibGUtYXJyb3cifSxhbGxEYXlUZXh0OiJhbGwtZGF5Iix0aGVtZTohMSx0aGVtZUJ1dHRvbkljb25zOntwcmV2OiJjaXJjbGUtdHJpYW5nbGUtdyIsbmV4dDoiY2lyY2xlLXRyaWFuZ2xlLWUiLHByZXZZZWFyOiJzZWVrLXByZXYiLG5leHRZZWFyOiJzZWVrLW5leHQifSxkcmFnT3BhY2l0eTouNzUsZHJhZ1JldmVydER1cmF0aW9uOjUwMCxkcmFnU2Nyb2xsOiEwLHVuc2VsZWN0QXV0bzohMCxkcm9wQWNjZXB0OiIqIixldmVudE9yZGVyOiJ0aXRsZSIsZXZlbnRMaW1pdDohMSxldmVudExpbWl0VGV4dDoibW9yZSIsZXZlbnRMaW1pdENsaWNrOiJwb3BvdmVyIixkYXlQb3BvdmVyRm9ybWF0OiJMTCIsaGFuZGxlV2luZG93UmVzaXplOiEwLHdpbmRvd1Jlc2l6ZURlbGF5OjEwMCxsb25nUHJlc3NEZWxheToxZTN9LEVlLmVuZ2xpc2hEZWZhdWx0cz17ZGF5UG9wb3ZlckZvcm1hdDoiZGRkZCwgTU1NTSBEIn0sRWUucnRsRGVmYXVsdHM9e2hlYWRlcjp7bGVmdDoibmV4dCxwcmV2IHRvZGF5IixjZW50ZXI6IiIscmlnaHQ6InRpdGxlIn0sYnV0dG9uSWNvbnM6e3ByZXY6InJpZ2h0LXNpbmdsZS1hcnJvdyIsbmV4dDoibGVmdC1zaW5nbGUtYXJyb3ciLHByZXZZZWFyOiJyaWdodC1kb3VibGUtYXJyb3ciLG5leHRZZWFyOiJsZWZ0LWRvdWJsZS1hcnJvdyJ9LHRoZW1lQnV0dG9uSWNvbnM6e3ByZXY6ImNpcmNsZS10cmlhbmdsZS1lIixuZXh0OiJjaXJjbGUtdHJpYW5nbGUtdyIsbmV4dFllYXI6InNlZWstcHJldiIscHJldlllYXI6InNlZWstbmV4dCJ9fTt2YXIgRGU9anQubG9jYWxlcz17fTtqdC5kYXRlcGlja2VyTG9jYWxlPWZ1bmN0aW9uKGUsbixpKXt2YXIgcj1EZVtlXXx8KERlW2VdPXt9KTtyLmlzUlRMPWkuaXNSVEwsci53ZWVrTnVtYmVyVGl0bGU9aS53ZWVrSGVhZGVyLHQuZWFjaChiZSxmdW5jdGlvbih0LGUpe3JbdF09ZShpKX0pLHQuZGF0ZXBpY2tlciYmKHQuZGF0ZXBpY2tlci5yZWdpb25hbFtuXT10LmRhdGVwaWNrZXIucmVnaW9uYWxbZV09aSx0LmRhdGVwaWNrZXIucmVnaW9uYWwuZW49dC5kYXRlcGlja2VyLnJlZ2lvbmFsWyIiXSx0LmRhdGVwaWNrZXIuc2V0RGVmYXVsdHMoaSkpfSxqdC5sb2NhbGU9ZnVuY3Rpb24oZSxpKXt2YXIgcixzO3I9RGVbZV18fChEZVtlXT17fSksaSYmKHI9RGVbZV09bihbcixpXSkpLHM9UHQoZSksdC5lYWNoKENlLGZ1bmN0aW9uKHQsZSl7bnVsbD09clt0XSYmKHJbdF09ZShzLHIpKX0pLEVlLmRlZmF1bHRzLmxvY2FsZT1lfTt2YXIgYmU9e2J1dHRvblRleHQ6ZnVuY3Rpb24odCl7cmV0dXJue3ByZXY6ZXQodC5wcmV2VGV4dCksbmV4dDpldCh0Lm5leHRUZXh0KSx0b2RheTpldCh0LmN1cnJlbnRUZXh0KX19LG1vbnRoWWVhckZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zaG93TW9udGhBZnRlclllYXI/IllZWVlbIit0LnllYXJTdWZmaXgrIl0gTU1NTSI6Ik1NTU0gWVlZWVsiK3QueWVhclN1ZmZpeCsiXSJ9fSxDZT17ZGF5T2ZNb250aEZvcm1hdDpmdW5jdGlvbih0LGUpe3ZhciBuPXQubG9uZ0RhdGVGb3JtYXQoImwiKTtyZXR1cm4gbj1uLnJlcGxhY2UoL15ZK1teXHdcc10qfFteXHdcc10qWSskL2csIiIpLGUuaXNSVEw/bis9IiBkZGQiOm49ImRkZCAiK24sbn0sbWVkaXVtVGltZUZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5sb25nRGF0ZUZvcm1hdCgiTFQiKS5yZXBsYWNlKC9ccyphJC9pLCJhIil9LHNtYWxsVGltZUZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5sb25nRGF0ZUZvcm1hdCgiTFQiKS5yZXBsYWNlKCI6bW0iLCIoOm1tKSIpLnJlcGxhY2UoLyhcV21tKSQvLCIoJDEpIikucmVwbGFjZSgvXHMqYSQvaSwiYSIpfSxleHRyYVNtYWxsVGltZUZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5sb25nRGF0ZUZvcm1hdCgiTFQiKS5yZXBsYWNlKCI6bW0iLCIoOm1tKSIpLnJlcGxhY2UoLyhcV21tKSQvLCIoJDEpIikucmVwbGFjZSgvXHMqYSQvaSwidCIpfSxob3VyRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIiIpLnJlcGxhY2UoLyhcV21tKSQvLCIiKS5yZXBsYWNlKC9ccyphJC9pLCJhIil9LG5vTWVyaWRpZW1UaW1lRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoL1xzKmEkL2ksIiIpfX0sSGU9e3NtYWxsRGF5RGF0ZUZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5pc1JUTD8iRCBkZCI6ImRkIEQifSx3ZWVrRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmlzUlRMPyJ3WyAiK3Qud2Vla051bWJlclRpdGxlKyJdIjoiWyIrdC53ZWVrTnVtYmVyVGl0bGUrIiBddyJ9LHNtYWxsV2Vla0Zvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5pc1JUTD8id1siK3Qud2Vla051bWJlclRpdGxlKyJdIjoiWyIrdC53ZWVrTnVtYmVyVGl0bGUrIl13In19O2p0LmxvY2FsZSgiZW4iLEVlLmVuZ2xpc2hEZWZhdWx0cyksanQuc291cmNlTm9ybWFsaXplcnM9W10sanQuc291cmNlRmV0Y2hlcnM9W107dmFyIFRlPXtkYXRhVHlwZToianNvbiIsY2FjaGU6ITF9LHhlPTE7RWUucHJvdG90eXBlLm5vcm1hbGl6ZUV2ZW50PWZ1bmN0aW9uKHQpe30sRWUucHJvdG90eXBlLnNwYW5Db250YWluc1NwYW49ZnVuY3Rpb24odCxlKXt2YXIgbj10LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksaT10aGlzLmdldEV2ZW50RW5kKHQpLnN0cmlwWm9uZSgpO3JldHVybiBlLnN0YXJ0Pj1uJiZlLmVuZDw9aX0sRWUucHJvdG90eXBlLmdldFBlZXJFdmVudHM9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcy5nZXRFdmVudENhY2hlKCkscz1bXTtmb3Iobj0wO248ci5sZW5ndGg7bisrKWk9cltuXSxlJiZlLl9pZD09PWkuX2lkfHxzLnB1c2goaSk7cmV0dXJuIHN9LEVlLnByb3RvdHlwZS5pc0V2ZW50U3BhbkFsbG93ZWQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnNvdXJjZXx8e30saT1KKGUuY29uc3RyYWludCxuLmNvbnN0cmFpbnQsdGhpcy5vcHRpb25zLmV2ZW50Q29uc3RyYWludCkscj1KKGUub3ZlcmxhcCxuLm92ZXJsYXAsdGhpcy5vcHRpb25zLmV2ZW50T3ZlcmxhcCk7cmV0dXJuIHRoaXMuaXNTcGFuQWxsb3dlZCh0LGkscixlKSYmKCF0aGlzLm9wdGlvbnMuZXZlbnRBbGxvd3x8dGhpcy5vcHRpb25zLmV2ZW50QWxsb3codCxlKSE9PSExKX0sRWUucHJvdG90eXBlLmlzRXh0ZXJuYWxTcGFuQWxsb3dlZD1mdW5jdGlvbihlLG4saSl7dmFyIHIscztyZXR1cm4gaSYmKHI9dC5leHRlbmQoe30saSxuKSxzPXRoaXMuZXhwYW5kRXZlbnQodGhpcy5idWlsZEV2ZW50RnJvbUlucHV0KHIpKVswXSkscz90aGlzLmlzRXZlbnRTcGFuQWxsb3dlZChlLHMpOnRoaXMuaXNTZWxlY3Rpb25TcGFuQWxsb3dlZChlKX0sRWUucHJvdG90eXBlLmlzU2VsZWN0aW9uU3BhbkFsbG93ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXNTcGFuQWxsb3dlZCh0LHRoaXMub3B0aW9ucy5zZWxlY3RDb25zdHJhaW50LHRoaXMub3B0aW9ucy5zZWxlY3RPdmVybGFwKSYmKCF0aGlzLm9wdGlvbnMuc2VsZWN0QWxsb3d8fHRoaXMub3B0aW9ucy5zZWxlY3RBbGxvdyh0KSE9PSExKX0sRWUucHJvdG90eXBlLmlzU3BhbkFsbG93ZWQ9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIscyxvLGwsYSx1O2lmKG51bGwhPWUmJihyPXRoaXMuY29uc3RyYWludFRvRXZlbnRzKGUpKSl7Zm9yKHM9ITEsbD0wO2w8ci5sZW5ndGg7bCsrKWlmKHRoaXMuc3BhbkNvbnRhaW5zU3BhbihyW2xdLHQpKXtzPSEwO2JyZWFrfWlmKCFzKXJldHVybiExfWZvcihvPXRoaXMuZ2V0UGVlckV2ZW50cyh0LGkpLGw9MDtsPG8ubGVuZ3RoO2wrKylpZihhPW9bbF0sdGhpcy5ldmVudEludGVyc2VjdHNSYW5nZShhLHQpKXtpZihuPT09ITEpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4mJiFuKGEsaSkpcmV0dXJuITE7aWYoaSl7aWYodT1KKGEub3ZlcmxhcCwoYS5zb3VyY2V8fHt9KS5vdmVybGFwKSx1PT09ITEpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHUmJiF1KGksYSkpcmV0dXJuITF9fXJldHVybiEwfSxFZS5wcm90b3R5cGUuY29uc3RyYWludFRvRXZlbnRzPWZ1bmN0aW9uKHQpe3JldHVybiJidXNpbmVzc0hvdXJzIj09PXQ/dGhpcy5nZXRDdXJyZW50QnVzaW5lc3NIb3VyRXZlbnRzKCk6Im9iamVjdCI9PXR5cGVvZiB0P251bGwhPXQuc3RhcnQ/dGhpcy5leHBhbmRFdmVudCh0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQodCkpOm51bGw6dGhpcy5jbGllbnRFdmVudHModCl9LEVlLnByb3RvdHlwZS5ldmVudEludGVyc2VjdHNSYW5nZT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKSxpPXRoaXMuZ2V0RXZlbnRFbmQodCkuc3RyaXBab25lKCk7cmV0dXJuIGUuc3RhcnQ8aSYmZS5lbmQ+bn07dmFyIFJlPXtpZDoiX2ZjQnVzaW5lc3NIb3VycyIsc3RhcnQ6IjA5OjAwIixlbmQ6IjE3OjAwIixkb3c6WzEsMiwzLDQsNV0scmVuZGVyaW5nOiJpbnZlcnNlLWJhY2tncm91bmQifTtFZS5wcm90b3R5cGUuZ2V0Q3VycmVudEJ1c2luZXNzSG91ckV2ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb21wdXRlQnVzaW5lc3NIb3VyRXZlbnRzKHQsdGhpcy5vcHRpb25zLmJ1c2luZXNzSG91cnMpfSxFZS5wcm90b3R5cGUuY29tcHV0ZUJ1c2luZXNzSG91ckV2ZW50cz1mdW5jdGlvbihlLG4pe3JldHVybiBuPT09ITA/dGhpcy5leHBhbmRCdXNpbmVzc0hvdXJFdmVudHMoZSxbe31dKTp0LmlzUGxhaW5PYmplY3Qobik/dGhpcy5leHBhbmRCdXNpbmVzc0hvdXJFdmVudHMoZSxbbl0pOnQuaXNBcnJheShuKT90aGlzLmV4cGFuZEJ1c2luZXNzSG91ckV2ZW50cyhlLG4sITApOltdfSxFZS5wcm90b3R5cGUuZXhwYW5kQnVzaW5lc3NIb3VyRXZlbnRzPWZ1bmN0aW9uKGUsbixpKXt2YXIgcixzLG89dGhpcy5nZXRWaWV3KCksbD1bXTtmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXM9bltyXSxpJiYhcy5kb3d8fChzPXQuZXh0ZW5kKHt9LFJlLHMpLGUmJihzLnN0YXJ0PW51bGwscy5lbmQ9bnVsbCksbC5wdXNoLmFwcGx5KGwsdGhpcy5leHBhbmRFdmVudCh0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQocyksby5zdGFydCxvLmVuZCkpKTtyZXR1cm4gbH07dmFyIEllPWp0LkJhc2ljVmlldz1TZS5leHRlbmQoe3Njcm9sbGVyOm51bGwsZGF5R3JpZENsYXNzOm1lLGRheUdyaWQ6bnVsbCxkYXlOdW1iZXJzVmlzaWJsZTohMSxjb2xXZWVrTnVtYmVyc1Zpc2libGU6ITEsY2VsbFdlZWtOdW1iZXJzVmlzaWJsZTohMSx3ZWVrTnVtYmVyV2lkdGg6bnVsbCxoZWFkQ29udGFpbmVyRWw6bnVsbCxoZWFkUm93RWw6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkPXRoaXMuaW5zdGFudGlhdGVEYXlHcmlkKCksdGhpcy5zY3JvbGxlcj1uZXcgd2Uoe292ZXJmbG93WDoiaGlkZGVuIixvdmVyZmxvd1k6ImF1dG8ifSl9LGluc3RhbnRpYXRlRGF5R3JpZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF5R3JpZENsYXNzLmV4dGVuZChrZSk7cmV0dXJuIG5ldyB0KHRoaXMpfSxzZXRSYW5nZTpmdW5jdGlvbih0KXtTZS5wcm90b3R5cGUuc2V0UmFuZ2UuY2FsbCh0aGlzLHQpLHRoaXMuZGF5R3JpZC5icmVha09uV2Vla3M9L3llYXJ8bW9udGh8d2Vlay8udGVzdCh0aGlzLmludGVydmFsVW5pdCksdGhpcy5kYXlHcmlkLnNldFJhbmdlKHQpfSxjb21wdXRlUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9U2UucHJvdG90eXBlLmNvbXB1dGVSYW5nZS5jYWxsKHRoaXMsdCk7cmV0dXJuL3llYXJ8bW9udGgvLnRlc3QoZS5pbnRlcnZhbFVuaXQpJiYoZS5zdGFydC5zdGFydE9mKCJ3ZWVrIiksZS5zdGFydD10aGlzLnNraXBIaWRkZW5EYXlzKGUuc3RhcnQpLGUuZW5kLndlZWtkYXkoKSYmKGUuZW5kLmFkZCgxLCJ3ZWVrIikuc3RhcnRPZigid2VlayIpLGUuZW5kPXRoaXMuc2tpcEhpZGRlbkRheXMoZS5lbmQsLTEsITApKSksZX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmRheU51bWJlcnNWaXNpYmxlPXRoaXMuZGF5R3JpZC5yb3dDbnQ+MSx0aGlzLm9wdCgid2Vla051bWJlcnMiKSYmKHRoaXMub3B0KCJ3ZWVrTnVtYmVyc1dpdGhpbkRheXMiKT8odGhpcy5jZWxsV2Vla051bWJlcnNWaXNpYmxlPSEwLHRoaXMuY29sV2Vla051bWJlcnNWaXNpYmxlPSExKToodGhpcy5jZWxsV2Vla051bWJlcnNWaXNpYmxlPSExLHRoaXMuY29sV2Vla051bWJlcnNWaXNpYmxlPSEwKSksdGhpcy5kYXlHcmlkLm51bWJlcnNWaXNpYmxlPXRoaXMuZGF5TnVtYmVyc1Zpc2libGV8fHRoaXMuY2VsbFdlZWtOdW1iZXJzVmlzaWJsZXx8dGhpcy5jb2xXZWVrTnVtYmVyc1Zpc2libGUsdGhpcy5lbC5hZGRDbGFzcygiZmMtYmFzaWMtdmlldyIpLmh0bWwodGhpcy5yZW5kZXJTa2VsZXRvbkh0bWwoKSksdGhpcy5yZW5kZXJIZWFkKCksdGhpcy5zY3JvbGxlci5yZW5kZXIoKTt2YXIgZT10aGlzLnNjcm9sbGVyLmVsLmFkZENsYXNzKCJmYy1kYXktZ3JpZC1jb250YWluZXIiKSxuPXQoJzxkaXYgY2xhc3M9ImZjLWRheS1ncmlkIiAvPicpLmFwcGVuZFRvKGUpO3RoaXMuZWwuZmluZCgiLmZjLWJvZHkgPiB0ciA+IHRkIikuYXBwZW5kKGUpLHRoaXMuZGF5R3JpZC5zZXRFbGVtZW50KG4pLHRoaXMuZGF5R3JpZC5yZW5kZXJEYXRlcyh0aGlzLmhhc1JpZ2lkUm93cygpKX0scmVuZGVySGVhZDpmdW5jdGlvbigpe3RoaXMuaGVhZENvbnRhaW5lckVsPXRoaXMuZWwuZmluZCgiLmZjLWhlYWQtY29udGFpbmVyIikuaHRtbCh0aGlzLmRheUdyaWQucmVuZGVySGVhZEh0bWwoKSksdGhpcy5oZWFkUm93RWw9dGhpcy5oZWFkQ29udGFpbmVyRWwuZmluZCgiLmZjLXJvdyIpfSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnVucmVuZGVyRGF0ZXMoKSx0aGlzLmRheUdyaWQucmVtb3ZlRWxlbWVudCgpLHRoaXMuc2Nyb2xsZXIuZGVzdHJveSgpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKX0sdW5yZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnVucmVuZGVyQnVzaW5lc3NIb3VycygpfSxyZW5kZXJTa2VsZXRvbkh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPHRhYmxlPjx0aGVhZCBjbGFzcz0iZmMtaGVhZCI+PHRyPjx0ZCBjbGFzcz0iZmMtaGVhZC1jb250YWluZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciPjwvdGQ+PC90cj48L3RoZWFkPjx0Ym9keSBjbGFzcz0iZmMtYm9keSI+PHRyPjx0ZCBjbGFzcz0iJyt0aGlzLndpZGdldENvbnRlbnRDbGFzcysnIj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPid9LHdlZWtOdW1iZXJTdHlsZUF0dHI6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMud2Vla051bWJlcldpZHRoPydzdHlsZT0id2lkdGg6Jyt0aGlzLndlZWtOdW1iZXJXaWR0aCsncHgiJzoiIn0saGFzUmlnaWRSb3dzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHQoImV2ZW50TGltaXQiKTtyZXR1cm4gdCYmIm51bWJlciIhPXR5cGVvZiB0fSx1cGRhdGVXaWR0aDpmdW5jdGlvbigpe3RoaXMuY29sV2Vla051bWJlcnNWaXNpYmxlJiYodGhpcy53ZWVrTnVtYmVyV2lkdGg9dSh0aGlzLmVsLmZpbmQoIi5mYy13ZWVrLW51bWJlciIpKSl9LHNldEhlaWdodDpmdW5jdGlvbih0LGUpe3ZhciBuLHMsbz10aGlzLm9wdCgiZXZlbnRMaW1pdCIpO3RoaXMuc2Nyb2xsZXIuY2xlYXIoKSxyKHRoaXMuaGVhZFJvd0VsKSx0aGlzLmRheUdyaWQucmVtb3ZlU2VnUG9wb3ZlcigpLG8mJiJudW1iZXIiPT10eXBlb2YgbyYmdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhvKSxuPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHQpLHRoaXMuc2V0R3JpZEhlaWdodChuLGUpLG8mJiJudW1iZXIiIT10eXBlb2YgbyYmdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhvKSxlfHwodGhpcy5zY3JvbGxlci5zZXRIZWlnaHQobikscz10aGlzLnNjcm9sbGVyLmdldFNjcm9sbGJhcldpZHRocygpLChzLmxlZnR8fHMucmlnaHQpJiYoaSh0aGlzLmhlYWRSb3dFbCxzKSxuPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHQpLHRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KG4pKSx0aGlzLnNjcm9sbGVyLmxvY2tPdmVyZmxvdyhzKSl9LGNvbXB1dGVTY3JvbGxlckhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gdC1kKHRoaXMuZWwsdGhpcy5zY3JvbGxlci5lbCl9LHNldEdyaWRIZWlnaHQ6ZnVuY3Rpb24odCxlKXtlP2EodGhpcy5kYXlHcmlkLnJvd0Vscyk6bCh0aGlzLmRheUdyaWQucm93RWxzLHQsITApfSxxdWVyeVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbGVyLmdldFNjcm9sbFRvcCgpfSxzZXRTY3JvbGw6ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxlci5zZXRTY3JvbGxUb3AodCl9LHByZXBhcmVIaXRzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnByZXBhcmVIaXRzKCl9LHJlbGVhc2VIaXRzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnJlbGVhc2VIaXRzKCl9LHF1ZXJ5SGl0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGF5R3JpZC5xdWVyeUhpdCh0LGUpfSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRheUdyaWQuZ2V0SGl0U3Bhbih0KX0sZ2V0SGl0RWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF5R3JpZC5nZXRIaXRFbCh0KX0scmVuZGVyRXZlbnRzOmZ1bmN0aW9uKHQpe3RoaXMuZGF5R3JpZC5yZW5kZXJFdmVudHModCksdGhpcy51cGRhdGVIZWlnaHQoKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5R3JpZC5nZXRFdmVudFNlZ3MoKX0sdW5yZW5kZXJFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJFdmVudHMoKX0scmVuZGVyRHJhZzpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRheUdyaWQucmVuZGVyRHJhZyh0LGUpfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJEcmFnKCl9LHJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbih0KXt0aGlzLmRheUdyaWQucmVuZGVyU2VsZWN0aW9uKHQpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZC51bnJlbmRlclNlbGVjdGlvbigpfX0pLGtlPXtyZW5kZXJIZWFkSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3O3JldHVybiB0LmNvbFdlZWtOdW1iZXJzVmlzaWJsZT8nPHRoIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnK3Qud2lkZ2V0SGVhZGVyQ2xhc3MrJyIgJyt0LndlZWtOdW1iZXJTdHlsZUF0dHIoKSsiPjxzcGFuPiIrdHQodC5vcHQoIndlZWtOdW1iZXJUaXRsZSIpKSsiPC9zcGFuPjwvdGg+IjoiIn0scmVuZGVyTnVtYmVySW50cm9IdG1sOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmlldyxuPXRoaXMuZ2V0Q2VsbERhdGUodCwwKTtyZXR1cm4gZS5jb2xXZWVrTnVtYmVyc1Zpc2libGU/Jzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcrZS53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj4iK2UuYnVpbGRHb3RvQW5jaG9ySHRtbCh7ZGF0ZTpuLHR5cGU6IndlZWsiLGZvcmNlT2ZmOjE9PT10aGlzLmNvbENudH0sbi5mb3JtYXQoInciKSkrIjwvdGQ+IjoiIn0scmVuZGVyQmdJbnRyb0h0bWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZpZXc7cmV0dXJuIHQuY29sV2Vla051bWJlcnNWaXNpYmxlPyc8dGQgY2xhc3M9ImZjLXdlZWstbnVtYmVyICcrdC53aWRnZXRDb250ZW50Q2xhc3MrJyIgJyt0LndlZWtOdW1iZXJTdHlsZUF0dHIoKSsiPjwvdGQ+IjoiIn0scmVuZGVySW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3O3JldHVybiB0LmNvbFdlZWtOdW1iZXJzVmlzaWJsZT8nPHRkIGNsYXNzPSJmYy13ZWVrLW51bWJlciIgJyt0LndlZWtOdW1iZXJTdHlsZUF0dHIoKSsiPjwvdGQ+IjoiIn19LE1lPWp0Lk1vbnRoVmlldz1JZS5leHRlbmQoe2NvbXB1dGVSYW5nZTpmdW5jdGlvbih0KXt2YXIgZSxuPUllLnByb3RvdHlwZS5jb21wdXRlUmFuZ2UuY2FsbCh0aGlzLHQpO3JldHVybiB0aGlzLmlzRml4ZWRXZWVrcygpJiYoZT1NYXRoLmNlaWwobi5lbmQuZGlmZihuLnN0YXJ0LCJ3ZWVrcyIsITApKSxuLmVuZC5hZGQoNi1lLCJ3ZWVrcyIpKSxufSxzZXRHcmlkSGVpZ2h0OmZ1bmN0aW9uKHQsZSl7ZSYmKHQqPXRoaXMucm93Q250LzYpLGwodGhpcy5kYXlHcmlkLnJvd0Vscyx0LCFlKX0saXNGaXhlZFdlZWtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0KCJmaXhlZFdlZWtDb3VudCIpfX0pO1V0LmJhc2ljPXtjbGFzczpJZX0sVXQuYmFzaWNEYXk9e3R5cGU6ImJhc2ljIixkdXJhdGlvbjp7ZGF5czoxfX0sVXQuYmFzaWNXZWVrPXt0eXBlOiJiYXNpYyIsZHVyYXRpb246e3dlZWtzOjF9fSxVdC5tb250aD17Y2xhc3M6TWUsZHVyYXRpb246e21vbnRoczoxfSxkZWZhdWx0czp7Zml4ZWRXZWVrQ291bnQ6ITB9fTt2YXIgTGU9anQuQWdlbmRhVmlldz1TZS5leHRlbmQoe3Njcm9sbGVyOm51bGwsdGltZUdyaWRDbGFzczp5ZSx0aW1lR3JpZDpudWxsLGRheUdyaWRDbGFzczptZSxkYXlHcmlkOm51bGwsYXhpc1dpZHRoOm51bGwsaGVhZENvbnRhaW5lckVsOm51bGwsbm9TY3JvbGxSb3dFbHM6bnVsbCxib3R0b21SdWxlRWw6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZD10aGlzLmluc3RhbnRpYXRlVGltZUdyaWQoKSx0aGlzLm9wdCgiYWxsRGF5U2xvdCIpJiYodGhpcy5kYXlHcmlkPXRoaXMuaW5zdGFudGlhdGVEYXlHcmlkKCkpLHRoaXMuc2Nyb2xsZXI9bmV3IHdlKHtvdmVyZmxvd1g6ImhpZGRlbiIsb3ZlcmZsb3dZOiJhdXRvIn0pfSxpbnN0YW50aWF0ZVRpbWVHcmlkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50aW1lR3JpZENsYXNzLmV4dGVuZChCZSk7cmV0dXJuIG5ldyB0KHRoaXMpfSxpbnN0YW50aWF0ZURheUdyaWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRheUdyaWRDbGFzcy5leHRlbmQoemUpO3JldHVybiBuZXcgdCh0aGlzKX0sc2V0UmFuZ2U6ZnVuY3Rpb24odCl7U2UucHJvdG90eXBlLnNldFJhbmdlLmNhbGwodGhpcyx0KSx0aGlzLnRpbWVHcmlkLnNldFJhbmdlKHQpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnNldFJhbmdlKHQpfSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe3RoaXMuZWwuYWRkQ2xhc3MoImZjLWFnZW5kYS12aWV3IikuaHRtbCh0aGlzLnJlbmRlclNrZWxldG9uSHRtbCgpKSx0aGlzLnJlbmRlckhlYWQoKSx0aGlzLnNjcm9sbGVyLnJlbmRlcigpO3ZhciBlPXRoaXMuc2Nyb2xsZXIuZWwuYWRkQ2xhc3MoImZjLXRpbWUtZ3JpZC1jb250YWluZXIiKSxuPXQoJzxkaXYgY2xhc3M9ImZjLXRpbWUtZ3JpZCIgLz4nKS5hcHBlbmRUbyhlKTt0aGlzLmVsLmZpbmQoIi5mYy1ib2R5ID4gdHIgPiB0ZCIpLmFwcGVuZChlKSx0aGlzLnRpbWVHcmlkLnNldEVsZW1lbnQobiksdGhpcy50aW1lR3JpZC5yZW5kZXJEYXRlcygpLHRoaXMuYm90dG9tUnVsZUVsPXQoJzxociBjbGFzcz0iZmMtZGl2aWRlciAnK3RoaXMud2lkZ2V0SGVhZGVyQ2xhc3MrJyIvPicpLmFwcGVuZFRvKHRoaXMudGltZUdyaWQuZWwpLHRoaXMuZGF5R3JpZCYmKHRoaXMuZGF5R3JpZC5zZXRFbGVtZW50KHRoaXMuZWwuZmluZCgiLmZjLWRheS1ncmlkIikpLHRoaXMuZGF5R3JpZC5yZW5kZXJEYXRlcygpLHRoaXMuZGF5R3JpZC5ib3R0b21Db29yZFBhZGRpbmc9dGhpcy5kYXlHcmlkLmVsLm5leHQoImhyIikub3V0ZXJIZWlnaHQoKSksdGhpcy5ub1Njcm9sbFJvd0Vscz10aGlzLmVsLmZpbmQoIi5mYy1yb3c6bm90KC5mYy1zY3JvbGxlciAqKSIpfSxyZW5kZXJIZWFkOmZ1bmN0aW9uKCl7dGhpcy5oZWFkQ29udGFpbmVyRWw9dGhpcy5lbC5maW5kKCIuZmMtaGVhZC1jb250YWluZXIiKS5odG1sKHRoaXMudGltZUdyaWQucmVuZGVySGVhZEh0bWwoKSl9LHVucmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyRGF0ZXMoKSx0aGlzLnRpbWVHcmlkLnJlbW92ZUVsZW1lbnQoKSx0aGlzLmRheUdyaWQmJih0aGlzLmRheUdyaWQudW5yZW5kZXJEYXRlcygpLHRoaXMuZGF5R3JpZC5yZW1vdmVFbGVtZW50KCkpLHRoaXMuc2Nyb2xsZXIuZGVzdHJveSgpfSxyZW5kZXJTa2VsZXRvbkh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPHRhYmxlPjx0aGVhZCBjbGFzcz0iZmMtaGVhZCI+PHRyPjx0ZCBjbGFzcz0iZmMtaGVhZC1jb250YWluZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciPjwvdGQ+PC90cj48L3RoZWFkPjx0Ym9keSBjbGFzcz0iZmMtYm9keSI+PHRyPjx0ZCBjbGFzcz0iJyt0aGlzLndpZGdldENvbnRlbnRDbGFzcysnIj4nKyh0aGlzLmRheUdyaWQ/JzxkaXYgY2xhc3M9ImZjLWRheS1ncmlkIi8+PGhyIGNsYXNzPSJmYy1kaXZpZGVyICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIi8+JzoiIikrIjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+In0sYXhpc1N0eWxlQXR0cjpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5heGlzV2lkdGg/J3N0eWxlPSJ3aWR0aDonK3RoaXMuYXhpc1dpZHRoKydweCInOiIifSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQucmVuZGVyQnVzaW5lc3NIb3VycygpfSx1bnJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyQnVzaW5lc3NIb3VycygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyQnVzaW5lc3NIb3VycygpfSxnZXROb3dJbmRpY2F0b3JVbml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGltZUdyaWQuZ2V0Tm93SW5kaWNhdG9yVW5pdCgpfSxyZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24odCl7dGhpcy50aW1lR3JpZC5yZW5kZXJOb3dJbmRpY2F0b3IodCl9LHVucmVuZGVyTm93SW5kaWNhdG9yOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlck5vd0luZGljYXRvcigpfSx1cGRhdGVTaXplOmZ1bmN0aW9uKHQpe3RoaXMudGltZUdyaWQudXBkYXRlU2l6ZSh0KSxTZS5wcm90b3R5cGUudXBkYXRlU2l6ZS5jYWxsKHRoaXMsdCl9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKCl7dGhpcy5heGlzV2lkdGg9dSh0aGlzLmVsLmZpbmQoIi5mYy1heGlzIikpfSxzZXRIZWlnaHQ6ZnVuY3Rpb24odCxlKXt2YXIgbixzLG87dGhpcy5ib3R0b21SdWxlRWwuaGlkZSgpLHRoaXMuc2Nyb2xsZXIuY2xlYXIoKSxyKHRoaXMubm9TY3JvbGxSb3dFbHMpLHRoaXMuZGF5R3JpZCYmKHRoaXMuZGF5R3JpZC5yZW1vdmVTZWdQb3BvdmVyKCksbj10aGlzLm9wdCgiZXZlbnRMaW1pdCIpLG4mJiJudW1iZXIiIT10eXBlb2YgbiYmKG49RmUpLG4mJnRoaXMuZGF5R3JpZC5saW1pdFJvd3MobikpLGV8fChzPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHQpLHRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KHMpLG89dGhpcy5zY3JvbGxlci5nZXRTY3JvbGxiYXJXaWR0aHMoKSwoby5sZWZ0fHxvLnJpZ2h0KSYmKGkodGhpcy5ub1Njcm9sbFJvd0VscyxvKSxzPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHQpLHRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KHMpKSx0aGlzLnNjcm9sbGVyLmxvY2tPdmVyZmxvdyhvKSx0aGlzLnRpbWVHcmlkLmdldFRvdGFsU2xhdEhlaWdodCgpPHMmJnRoaXMuYm90dG9tUnVsZUVsLnNob3coKSl9LGNvbXB1dGVTY3JvbGxlckhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gdC1kKHRoaXMuZWwsdGhpcy5zY3JvbGxlci5lbCl9LGNvbXB1dGVJbml0aWFsU2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIHQ9ZS5kdXJhdGlvbih0aGlzLm9wdCgic2Nyb2xsVGltZSIpKSxuPXRoaXMudGltZUdyaWQuY29tcHV0ZVRpbWVUb3AodCk7cmV0dXJuIG49TWF0aC5jZWlsKG4pLG4mJm4rKyxufSxxdWVyeVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbGVyLmdldFNjcm9sbFRvcCgpfSxzZXRTY3JvbGw6ZnVuY3Rpb24odCl7dGhpcy5zY3JvbGxlci5zZXRTY3JvbGxUb3AodCl9LHByZXBhcmVIaXRzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC5wcmVwYXJlSGl0cygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnByZXBhcmVIaXRzKCl9LHJlbGVhc2VIaXRzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC5yZWxlYXNlSGl0cygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnJlbGVhc2VIaXRzKCl9LHF1ZXJ5SGl0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy50aW1lR3JpZC5xdWVyeUhpdCh0LGUpO3JldHVybiFuJiZ0aGlzLmRheUdyaWQmJihuPXRoaXMuZGF5R3JpZC5xdWVyeUhpdCh0LGUpKSxufSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbXBvbmVudC5nZXRIaXRTcGFuKHQpfSxnZXRIaXRFbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wb25lbnQuZ2V0SGl0RWwodCl9LHJlbmRlckV2ZW50czpmdW5jdGlvbih0KXt2YXIgZSxuLGk9W10scj1bXSxzPVtdO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXS5hbGxEYXk/aS5wdXNoKHRbbl0pOnIucHVzaCh0W25dKTtlPXRoaXMudGltZUdyaWQucmVuZGVyRXZlbnRzKHIpLHRoaXMuZGF5R3JpZCYmKHM9dGhpcy5kYXlHcmlkLnJlbmRlckV2ZW50cyhpKSksdGhpcy51cGRhdGVIZWlnaHQoKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGltZUdyaWQuZ2V0RXZlbnRTZWdzKCkuY29uY2F0KHRoaXMuZGF5R3JpZD90aGlzLmRheUdyaWQuZ2V0RXZlbnRTZWdzKCk6W10pfSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQudW5yZW5kZXJFdmVudHMoKSx0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC51bnJlbmRlckV2ZW50cygpfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc3RhcnQuaGFzVGltZSgpP3RoaXMudGltZUdyaWQucmVuZGVyRHJhZyh0LGUpOnRoaXMuZGF5R3JpZD90aGlzLmRheUdyaWQucmVuZGVyRHJhZyh0LGUpOnZvaWQgMH0sdW5yZW5kZXJEcmFnOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlckRyYWcoKSx0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC51bnJlbmRlckRyYWcoKX0scmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKHQpe3Quc3RhcnQuaGFzVGltZSgpfHx0LmVuZC5oYXNUaW1lKCk/dGhpcy50aW1lR3JpZC5yZW5kZXJTZWxlY3Rpb24odCk6dGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQucmVuZGVyU2VsZWN0aW9uKHQpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQudW5yZW5kZXJTZWxlY3Rpb24oKSx0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC51bnJlbmRlclNlbGVjdGlvbigpfX0pLEJlPXtyZW5kZXJIZWFkSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnZpZXc7cmV0dXJuIGUub3B0KCJ3ZWVrTnVtYmVycyIpPyh0PXRoaXMuc3RhcnQuZm9ybWF0KGUub3B0KCJzbWFsbFdlZWtGb3JtYXQiKSksJzx0aCBjbGFzcz0iZmMtYXhpcyBmYy13ZWVrLW51bWJlciAnK2Uud2lkZ2V0SGVhZGVyQ2xhc3MrJyIgJytlLmF4aXNTdHlsZUF0dHIoKSsiPiIrZS5idWlsZEdvdG9BbmNob3JIdG1sKHtkYXRlOnRoaXMuc3RhcnQsdHlwZToid2VlayIsZm9yY2VPZmY6dGhpcy5jb2xDbnQ+MX0sdHQodCkpKyI8L3RoPiIpOic8dGggY2xhc3M9ImZjLWF4aXMgJytlLndpZGdldEhlYWRlckNsYXNzKyciICcrZS5heGlzU3R5bGVBdHRyKCkrIj48L3RoPiJ9LHJlbmRlckJnSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3O3JldHVybic8dGQgY2xhc3M9ImZjLWF4aXMgJyt0LndpZGdldENvbnRlbnRDbGFzcysnIiAnK3QuYXhpc1N0eWxlQXR0cigpKyI+PC90ZD4ifSxyZW5kZXJJbnRyb0h0bWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZpZXc7cmV0dXJuJzx0ZCBjbGFzcz0iZmMtYXhpcyIgJyt0LmF4aXNTdHlsZUF0dHIoKSsiPjwvdGQ+In19LHplPXtyZW5kZXJCZ0ludHJvSHRtbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldztyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzICcrdC53aWRnZXRDb250ZW50Q2xhc3MrJyIgJyt0LmF4aXNTdHlsZUF0dHIoKSsiPjxzcGFuPiIrdC5nZXRBbGxEYXlIdG1sKCkrIjwvc3Bhbj48L3RkPiJ9LHJlbmRlckludHJvSHRtbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldztyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzIiAnK3QuYXhpc1N0eWxlQXR0cigpKyI+PC90ZD4ifX0sRmU9NSxOZT1be2hvdXJzOjF9LHttaW51dGVzOjMwfSx7bWludXRlczoxNX0se3NlY29uZHM6MzB9LHtzZWNvbmRzOjE1fV07VXQuYWdlbmRhPXtjbGFzczpMZSxkZWZhdWx0czp7YWxsRGF5U2xvdDohMCxzbG90RHVyYXRpb246IjAwOjMwOjAwIixtaW5UaW1lOiIwMDowMDowMCIsbWF4VGltZToiMjQ6MDA6MDAiLHNsb3RFdmVudE92ZXJsYXA6ITB9fSxVdC5hZ2VuZGFEYXk9e3R5cGU6ImFnZW5kYSIsZHVyYXRpb246e2RheXM6MX19LFV0LmFnZW5kYVdlZWs9e3R5cGU6ImFnZW5kYSIsZHVyYXRpb246e3dlZWtzOjF9fTt2YXIgR2U9U2UuZXh0ZW5kKHtncmlkOm51bGwsc2Nyb2xsZXI6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5ncmlkPW5ldyBBZSh0aGlzKSx0aGlzLnNjcm9sbGVyPW5ldyB3ZSh7b3ZlcmZsb3dYOiJoaWRkZW4iLG92ZXJmbG93WToiYXV0byJ9KX0sc2V0UmFuZ2U6ZnVuY3Rpb24odCl7U2UucHJvdG90eXBlLnNldFJhbmdlLmNhbGwodGhpcyx0KSx0aGlzLmdyaWQuc2V0UmFuZ2UodCl9LHJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7dGhpcy5lbC5hZGRDbGFzcygiZmMtbGlzdC12aWV3ICIrdGhpcy53aWRnZXRDb250ZW50Q2xhc3MpLHRoaXMuc2Nyb2xsZXIucmVuZGVyKCksdGhpcy5zY3JvbGxlci5lbC5hcHBlbmRUbyh0aGlzLmVsKSx0aGlzLmdyaWQuc2V0RWxlbWVudCh0aGlzLnNjcm9sbGVyLnNjcm9sbEVsKX0sdW5yZW5kZXJTa2VsZXRvbjpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIuZGVzdHJveSgpfSxzZXRIZWlnaHQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNjcm9sbGVyLnNldEhlaWdodCh0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0KSl9LGNvbXB1dGVTY3JvbGxlckhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gdC1kKHRoaXMuZWwsdGhpcy5zY3JvbGxlci5lbCl9LHJlbmRlckV2ZW50czpmdW5jdGlvbih0KXt0aGlzLmdyaWQucmVuZGVyRXZlbnRzKHQpfSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe3RoaXMuZ3JpZC51bnJlbmRlckV2ZW50cygpfSxpc0V2ZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3JldHVybiExfSxpc0V2ZW50RHJhZ2dhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiExfX0pLEFlPXBlLmV4dGVuZCh7c2VnU2VsZWN0b3I6Ii5mYy1saXN0LWl0ZW0iLGhhc0RheUludGVyYWN0aW9uczohMSxzcGFuVG9TZWdzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXRoaXMudmlldyxpPW4uc3RhcnQuY2xvbmUoKS50aW1lKDApLHI9MCxzPVtdO2k8bi5lbmQ7KWlmKGU9Rih0LHtzdGFydDppLGVuZDppLmNsb25lKCkuYWRkKDEsImRheSIpfSksZSYmKGUuZGF5SW5kZXg9cixzLnB1c2goZSkpLGkuYWRkKDEsImRheSIpLHIrKyxlJiYhZS5pc0VuZCYmdC5lbmQuaGFzVGltZSgpJiZ0LmVuZDxpLmNsb25lKCkuYWRkKHRoaXMudmlldy5uZXh0RGF5VGhyZXNob2xkKSl7ZS5lbmQ9dC5lbmQuY2xvbmUoKSxlLmlzRW5kPSEwO2JyZWFrfXJldHVybiBzfSxjb21wdXRlRXZlbnRUaW1lRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5vcHQoIm1lZGl1bVRpbWVGb3JtYXQiKX0saGFuZGxlU2VnQ2xpY2s6ZnVuY3Rpb24oZSxuKXt2YXIgaTtwZS5wcm90b3R5cGUuaGFuZGxlU2VnQ2xpY2suYXBwbHkodGhpcyxhcmd1bWVudHMpLHQobi50YXJnZXQpLmNsb3Nlc3QoImFbaHJlZl0iKS5sZW5ndGh8fChpPWUuZXZlbnQudXJsLGkmJiFuLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYod2luZG93LmxvY2F0aW9uLmhyZWY9aSkpfSxyZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5yZW5kZXJGZ1NlZ0Vscyh0KSx0Lmxlbmd0aD90aGlzLnJlbmRlclNlZ0xpc3QodCk6dGhpcy5yZW5kZXJFbXB0eU1lc3NhZ2UoKSx0fSxyZW5kZXJFbXB0eU1lc3NhZ2U6ZnVuY3Rpb24oKXt0aGlzLmVsLmh0bWwoJzxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHktd3JhcDIiPjxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHktd3JhcDEiPjxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHkiPicrdHQodGhpcy52aWV3Lm9wdCgibm9FdmVudHNNZXNzYWdlIikpKyI8L2Rpdj48L2Rpdj48L2Rpdj4iKX0scmVuZGVyU2VnTGlzdDpmdW5jdGlvbihlKXt2YXIgbixpLHIscz10aGlzLmdyb3VwU2Vnc0J5RGF5KGUpLG89dCgnPHRhYmxlIGNsYXNzPSJmYy1saXN0LXRhYmxlIj48dGJvZHkvPjwvdGFibGU+JyksbD1vLmZpbmQoInRib2R5Iik7Zm9yKG49MDtuPHMubGVuZ3RoO24rKylpZihpPXNbbl0pZm9yKGwuYXBwZW5kKHRoaXMuZGF5SGVhZGVySHRtbCh0aGlzLnZpZXcuc3RhcnQuY2xvbmUoKS5hZGQobiwiZGF5cyIpKSksdGhpcy5zb3J0RXZlbnRTZWdzKGkpLHI9MDtyPGkubGVuZ3RoO3IrKylsLmFwcGVuZChpW3JdLmVsKTt0aGlzLmVsLmVtcHR5KCkuYXBwZW5kKG8pfSxncm91cFNlZ3NCeURheTpmdW5jdGlvbih0KXt2YXIgZSxuLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0sKGlbbi5kYXlJbmRleF18fChpW24uZGF5SW5kZXhdPVtdKSkucHVzaChuKTtyZXR1cm4gaX0sZGF5SGVhZGVySHRtbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXcsbj1lLm9wdCgibGlzdERheUZvcm1hdCIpLGk9ZS5vcHQoImxpc3REYXlBbHRGb3JtYXQiKTtyZXR1cm4nPHRyIGNsYXNzPSJmYy1saXN0LWhlYWRpbmciIGRhdGEtZGF0ZT0iJyt0LmZvcm1hdCgiWVlZWS1NTS1ERCIpKyciPjx0ZCBjbGFzcz0iJytlLndpZGdldEhlYWRlckNsYXNzKyciIGNvbHNwYW49IjMiPicrKG4/ZS5idWlsZEdvdG9BbmNob3JIdG1sKHQse2NsYXNzOiJmYy1saXN0LWhlYWRpbmctbWFpbiJ9LHR0KHQuZm9ybWF0KG4pKSk6IiIpKyhpP2UuYnVpbGRHb3RvQW5jaG9ySHRtbCh0LHtjbGFzczoiZmMtbGlzdC1oZWFkaW5nLWFsdCJ9LHR0KHQuZm9ybWF0KGkpKSk6IiIpKyI8L3RkPjwvdHI+In0sZmdTZWdIdG1sOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy52aWV3LGk9WyJmYy1saXN0LWl0ZW0iXS5jb25jYXQodGhpcy5nZXRTZWdDdXN0b21DbGFzc2VzKHQpKSxyPXRoaXMuZ2V0U2VnQmFja2dyb3VuZENvbG9yKHQpLHM9dC5ldmVudCxvPXMudXJsO3JldHVybiBlPXMuYWxsRGF5P24uZ2V0QWxsRGF5SHRtbCgpOm4uaXNNdWx0aURheUV2ZW50KHMpP3QuaXNTdGFydHx8dC5pc0VuZD90dCh0aGlzLmdldEV2ZW50VGltZVRleHQodCkpOm4uZ2V0QWxsRGF5SHRtbCgpOnR0KHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzKSksbyYmaS5wdXNoKCJmYy1oYXMtdXJsIiksJzx0ciBjbGFzcz0iJytpLmpvaW4oIiAiKSsnIj4nKyh0aGlzLmRpc3BsYXlFdmVudFRpbWU/Jzx0ZCBjbGFzcz0iZmMtbGlzdC1pdGVtLXRpbWUgJytuLndpZGdldENvbnRlbnRDbGFzcysnIj4nKyhlfHwiIikrIjwvdGQ+IjoiIikrJzx0ZCBjbGFzcz0iZmMtbGlzdC1pdGVtLW1hcmtlciAnK24ud2lkZ2V0Q29udGVudENsYXNzKyciPjxzcGFuIGNsYXNzPSJmYy1ldmVudC1kb3QiJysocj8nIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOicrcisnIic6IiIpKyc+PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJmYy1saXN0LWl0ZW0tdGl0bGUgJytuLndpZGdldENvbnRlbnRDbGFzcysnIj48YScrKG8/JyBocmVmPSInK3R0KG8pKyciJzoiIikrIj4iK3R0KHQuZXZlbnQudGl0bGV8fCIiKSsiPC9hPjwvdGQ+PC90cj4ifX0pO3JldHVybiBVdC5saXN0PXtjbGFzczpHZSxidXR0b25UZXh0S2V5OiJsaXN0IixkZWZhdWx0czp7YnV0dG9uVGV4dDoibGlzdCIsbGlzdERheUZvcm1hdDoiTEwiLG5vRXZlbnRzTWVzc2FnZToiTm8gZXZlbnRzIHRvIGRpc3BsYXkifX0sVXQubGlzdERheT17dHlwZToibGlzdCIsZHVyYXRpb246e2RheXM6MX0sZGVmYXVsdHM6e2xpc3REYXlGb3JtYXQ6ImRkZGQifX0sVXQubGlzdFdlZWs9e3R5cGU6Imxpc3QiLGR1cmF0aW9uOnt3ZWVrczoxfSxkZWZhdWx0czp7bGlzdERheUZvcm1hdDoiZGRkZCIsbGlzdERheUFsdEZvcm1hdDoiTEwifX0sVXQubGlzdE1vbnRoPXt0eXBlOiJsaXN0IixkdXJhdGlvbjp7bW9udGg6MX0sZGVmYXVsdHM6e2xpc3REYXlBbHRGb3JtYXQ6ImRkZGQifX0sVXQubGlzdFllYXI9e3R5cGU6Imxpc3QiLGR1cmF0aW9uOnt5ZWFyOjF9LGRlZmF1bHRzOntsaXN0RGF5QWx0Rm9ybWF0OiJkZGRkIn19LGp0fSk7"}},"time_used":191,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":191,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/poppins/v24/pxiEyp8kv8JHgFVrJJfecg.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.858Z","timestamp":1785150870858,"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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/poppins/v24/pxiEyp8kv8JHgFVrJJfecg.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://punks.my\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\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\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 7884\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 02:57:12 GMT\r\nexpires: Fri, 23 Jul 2027 02:57:12 GMT\r\ncache-control: public, max-age=31536000\r\nage: 375438\r\nlast-modified: Mon, 15 Sep 2025 16:34:42 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":7884,"size_decoded":8696,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 7884, version 1.0","md5":"9212f6f9860f9fc6c69b02fedf6db8c3","sha1":"ac6d71b4d5fdd2b3dabc9a06ff6c001e4251da0b","sha256":"7d93459d86585bfcdbb7e0376056226adb25821ee54b96236fe2123e9560929f","sha512":"67317495f4b53e20a9f31c034e456e6c37f387dffb2c092caa5159bc441cfcadd02749ffe5bbed1d580d5300a59e48a767ef2c6d9978b474f84c1a2cd095c126","ssdeep":"192:xLFDbKO9E3rS3JWBRO/J601FSS5ZUbik3Zy2f0:pd9J5W501otlI","tlshash":"c3f1ae4eb3f2cd1be40982e53a0fc90b1c578272681fd772d067a22517893bc8db2c81","first_seen":"2023-04-05T15:35:34Z","last_seen":"2026-07-27T12:59:07.192671Z","times_seen":384221,"resource_available":false,"data":"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"}},"time_used":46,"timings":{"blocked":-1,"dns":0,"connect":27,"send":0,"wait":17,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.6.3","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.861Z","timestamp":1785150870861,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.6.3 HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://punks.my/assets/fonts/font-awesome/css/font-awesome.min.css\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: 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 11:14:30 GMT\r\ncontent-type: font/woff2\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\npriority: u=3,i=?0\r\netag: \"65fffca9-118d8\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\nage: 6999\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=7QWOg2tWeWDEoUcKo5uiX59qv0r%2F%2Fsan0Jt7njnRQDUsRaw3KR9emw2esfHrZMCS2C7IzmIEpoLNeT5TsJroPFvIDz5xy0II85z1mI9qpKTZKPYWlorNFIcyzg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388eec0a56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 71896\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"]}],"data":{"size":71896,"size_decoded":72687,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 71896, version 4.393","md5":"e6cf7c6ec7c2d6f670ae9d762604cb0b","sha1":"97e438cc545714309882fbceadbf344fcaddcec5","sha256":"7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73","sha512":"dd945face918edf20b7283b7416ae7b3735269945e3f3e379e770425024c1de1fcdc7cfb952381d295d0d1f58c8ab191fd29030f2051d10501557bd7bfbe3658","ssdeep":"1536:tA4xrPyfyECsyz2wCjYfhO/ORzc7erabg5Z06GEQMo:t3jayEC/2/OI/gcq+bg5C6G7","tlshash":"756302f87e71b01d5a306f74e56730e2491c9283e79593f8a8297cb681b2f493742c7a","first_seen":"2023-04-05T09:22:06Z","last_seen":"2026-07-27T12:47:46.033023Z","times_seen":41697,"resource_available":false,"data":"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"}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":9,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/moment/moment.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.353Z","timestamp":1785150870353,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/moment/moment.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-2255f\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=kEqctcJuBxEZcfC0Na4YC1YX5Byi3TI%2Br7ptfolkDbzbM8XRRsAEO4lc29g69BPHd9raKXg3dVOjz4dYuzioOAhTOhv9GbT4MjTzUV9V2JSZQovz3JtVDckhDQ%3D%3D\"}]}\r\ncf-ray: a21b388bbbdc56a2-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"]}],"data":{"size":140639,"size_decoded":31746,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text","md5":"5584d3bedf9e614912b624e457bcb057","sha1":"0d60a088682f9c7325994c23fc88c319b8ddb534","sha256":"9eddbcbe2e9d227859ae6fd3b7774ce2de738ea1d88f32edc8cbef708f2d5396","sha512":"f3a7a8adc53b03cbc65cc6e4e5864ef737c5b05da8434f0a55fad1a855796eb141c6d973a4fe8de5f0b692e3e28a95b26f63110930a50b831f6697ddcd32a5e0","ssdeep":"1536:COJOXkMbLHDXf21z4c1i4j06HPUF8LFSN4+KzX1bDTokYi0gCJUjI:COJOXZHnc1ivy+KL18ejI","tlshash":"b9d33b8a69e72022466372394fdf5405ba388523150ede047c8da3d4af86d7847fafec","first_seen":"2023-03-07T13:58:55Z","last_seen":"2026-07-27T11:25:33.559706Z","times_seen":24,"resource_available":true,"data":"Ly8hIG1vbWVudC5qcwovLyEgdmVyc2lvbiA6IDIuMTUuMQovLyEgYXV0aG9ycyA6IFRpbSBXb29kLCBJc2tyZW4gQ2hlcm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9ycwovLyEgbGljZW5zZSA6IE1JVAovLyEgbW9tZW50anMuY29tCgo7KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHsKICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDoKICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6CiAgICBnbG9iYWwubW9tZW50ID0gZmFjdG9yeSgpCn0odGhpcywgZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgdmFyIGhvb2tDYWxsYmFjazsKCiAgICBmdW5jdGlvbiB1dGlsc19ob29rc19faG9va3MgKCkgewogICAgICAgIHJldHVybiBob29rQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgIH0KCiAgICAvLyBUaGlzIGlzIGRvbmUgdG8gcmVnaXN0ZXIgdGhlIG1ldGhvZCBjYWxsZWQgd2l0aCBtb21lbnQoKQogICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCiAgICBmdW5jdGlvbiBzZXRIb29rQ2FsbGJhY2sgKGNhbGxiYWNrKSB7CiAgICAgICAgaG9va0NhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB9CgogICAgZnVuY3Rpb24gaXNBcnJheShpbnB1dCkgewogICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHsKICAgICAgICAvLyBJRTggd2lsbCB0cmVhdCB1bmRlZmluZWQgYW5kIG51bGwgYXMgb2JqZWN0IGlmIGl0IHdhc24ndCBmb3IKICAgICAgICAvLyBpbnB1dCAhPSBudWxsCiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHsKICAgICAgICB2YXIgazsKICAgICAgICBmb3IgKGsgaW4gb2JqKSB7CiAgICAgICAgICAgIC8vIGV2ZW4gaWYgaXRzIG5vdCBvd24gcHJvcGVydHkgSSdkIHN0aWxsIGNhbGwgaXQgbm9uLWVtcHR5CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7CiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRGF0ZSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXSc7CiAgICB9CgogICAgZnVuY3Rpb24gbWFwKGFyciwgZm4pIHsKICAgICAgICB2YXIgcmVzID0gW10sIGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkgewogICAgICAgICAgICByZXMucHVzaChmbihhcnJbaV0sIGkpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHsKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGIpOwogICAgfQoKICAgIGZ1bmN0aW9uIGV4dGVuZChhLCBiKSB7CiAgICAgICAgZm9yICh2YXIgaSBpbiBiKSB7CiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7CiAgICAgICAgICAgICAgICBhW2ldID0gYltpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGhhc093blByb3AoYiwgJ3RvU3RyaW5nJykpIHsKICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7CiAgICAgICAgfQoKICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7CiAgICAgICAgICAgIGEudmFsdWVPZiA9IGIudmFsdWVPZjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhOwogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV91dGNfX2NyZWF0ZVVUQyAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHsKICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgdHJ1ZSkudXRjKCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVmYXVsdFBhcnNpbmdGbGFncygpIHsKICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgZW1wdHkgICAgICAgICAgIDogZmFsc2UsCiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLAogICAgICAgICAgICB1bnVzZWRJbnB1dCAgICAgOiBbXSwKICAgICAgICAgICAgb3ZlcmZsb3cgICAgICAgIDogLTIsCiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsCiAgICAgICAgICAgIG51bGxJbnB1dCAgICAgICA6IGZhbHNlLAogICAgICAgICAgICBpbnZhbGlkTW9udGggICAgOiBudWxsLAogICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSwKICAgICAgICAgICAgdXNlckludmFsaWRhdGVkIDogZmFsc2UsCiAgICAgICAgICAgIGlzbyAgICAgICAgICAgICA6IGZhbHNlLAogICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSwKICAgICAgICAgICAgbWVyaWRpZW0gICAgICAgIDogbnVsbAogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHsKICAgICAgICBpZiAobS5fcGYgPT0gbnVsbCkgewogICAgICAgICAgICBtLl9wZiA9IGRlZmF1bHRQYXJzaW5nRmxhZ3MoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG0uX3BmOwogICAgfQoKICAgIHZhciBzb21lOwogICAgaWYgKEFycmF5LnByb3RvdHlwZS5zb21lKSB7CiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lOwogICAgfSBlbHNlIHsKICAgICAgICBzb21lID0gZnVuY3Rpb24gKGZ1bikgewogICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTsKICAgICAgICAgICAgdmFyIGxlbiA9IHQubGVuZ3RoID4+PiAwOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGkgaW4gdCAmJiBmdW4uY2FsbCh0aGlzLCB0W2ldLCBpLCB0KSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiB2YWxpZF9faXNWYWxpZChtKSB7CiAgICAgICAgaWYgKG0uX2lzVmFsaWQgPT0gbnVsbCkgewogICAgICAgICAgICB2YXIgZmxhZ3MgPSBnZXRQYXJzaW5nRmxhZ3MobSk7CiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaSAhPSBudWxsOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmCiAgICAgICAgICAgICAgICBmbGFncy5vdmVyZmxvdyA8IDAgJiYKICAgICAgICAgICAgICAgICFmbGFncy5lbXB0eSAmJgogICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJgogICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRXZWVrZGF5ICYmCiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmCiAgICAgICAgICAgICAgICAhZmxhZ3MuaW52YWxpZEZvcm1hdCAmJgogICAgICAgICAgICAgICAgIWZsYWdzLnVzZXJJbnZhbGlkYXRlZCAmJgogICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTsKCiAgICAgICAgICAgIGlmIChtLl9zdHJpY3QpIHsKICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmCiAgICAgICAgICAgICAgICAgICAgZmxhZ3MuY2hhcnNMZWZ0T3ZlciA9PT0gMCAmJgogICAgICAgICAgICAgICAgICAgIGZsYWdzLnVudXNlZFRva2Vucy5sZW5ndGggPT09IDAgJiYKICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7CiAgICAgICAgICAgICAgICBtLl9pc1ZhbGlkID0gaXNOb3dWYWxpZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBpc05vd1ZhbGlkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBtLl9pc1ZhbGlkOwogICAgfQoKICAgIGZ1bmN0aW9uIHZhbGlkX19jcmVhdGVJbnZhbGlkIChmbGFncykgewogICAgICAgIHZhciBtID0gY3JlYXRlX3V0Y19fY3JlYXRlVVRDKE5hTik7CiAgICAgICAgaWYgKGZsYWdzICE9IG51bGwpIHsKICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZChpbnB1dCkgewogICAgICAgIHJldHVybiBpbnB1dCA9PT0gdm9pZCAwOwogICAgfQoKICAgIC8vIFBsdWdpbnMgdGhhdCBhZGQgcHJvcGVydGllcyBzaG91bGQgYWxzbyBhZGQgdGhlIGtleSBoZXJlIChudWxsIHZhbHVlKSwKICAgIC8vIHNvIHdlIGNhbiBwcm9wZXJseSBjbG9uZSBvdXJzZWx2ZXMuCiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IHV0aWxzX2hvb2tzX19ob29rcy5tb21lbnRQcm9wZXJ0aWVzID0gW107CgogICAgZnVuY3Rpb24gY29weUNvbmZpZyh0bywgZnJvbSkgewogICAgICAgIHZhciBpLCBwcm9wLCB2YWw7CgogICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNBTW9tZW50T2JqZWN0KSkgewogICAgICAgICAgICB0by5faXNBTW9tZW50T2JqZWN0ID0gZnJvbS5faXNBTW9tZW50T2JqZWN0OwogICAgICAgIH0KICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2kpKSB7CiAgICAgICAgICAgIHRvLl9pID0gZnJvbS5faTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9mKSkgewogICAgICAgICAgICB0by5fZiA9IGZyb20uX2Y7CiAgICAgICAgfQogICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fbCkpIHsKICAgICAgICAgICAgdG8uX2wgPSBmcm9tLl9sOwogICAgICAgIH0KICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX3N0cmljdCkpIHsKICAgICAgICAgICAgdG8uX3N0cmljdCA9IGZyb20uX3N0cmljdDsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl90em0pKSB7CiAgICAgICAgICAgIHRvLl90em0gPSBmcm9tLl90em07CiAgICAgICAgfQogICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5faXNVVEMpKSB7CiAgICAgICAgICAgIHRvLl9pc1VUQyA9IGZyb20uX2lzVVRDOwogICAgICAgIH0KICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX29mZnNldCkpIHsKICAgICAgICAgICAgdG8uX29mZnNldCA9IGZyb20uX29mZnNldDsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9wZikpIHsKICAgICAgICAgICAgdG8uX3BmID0gZ2V0UGFyc2luZ0ZsYWdzKGZyb20pOwogICAgICAgIH0KICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2xvY2FsZSkpIHsKICAgICAgICAgICAgdG8uX2xvY2FsZSA9IGZyb20uX2xvY2FsZTsKICAgICAgICB9CgogICAgICAgIGlmIChtb21lbnRQcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgZm9yIChpIGluIG1vbWVudFByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgIHByb3AgPSBtb21lbnRQcm9wZXJ0aWVzW2ldOwogICAgICAgICAgICAgICAgdmFsID0gZnJvbVtwcm9wXTsKICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkgewogICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gdmFsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG87CiAgICB9CgogICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTsKCiAgICAvLyBNb21lbnQgcHJvdG90eXBlIG9iamVjdAogICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykgewogICAgICAgIGNvcHlDb25maWcodGhpcywgY29uZmlnKTsKICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoY29uZmlnLl9kICE9IG51bGwgPyBjb25maWcuX2QuZ2V0VGltZSgpIDogTmFOKTsKICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50CiAgICAgICAgLy8gb2JqZWN0cy4KICAgICAgICBpZiAodXBkYXRlSW5Qcm9ncmVzcyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7CiAgICAgICAgICAgIHV0aWxzX2hvb2tzX19ob29rcy51cGRhdGVPZmZzZXQodGhpcyk7CiAgICAgICAgICAgIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaXNNb21lbnQgKG9iaikgewogICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpOwogICAgfQoKICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHsKICAgICAgICBpZiAobnVtYmVyIDwgMCkgewogICAgICAgICAgICAvLyAtMCAtPiAwCiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bWJlcik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHsKICAgICAgICB2YXIgY29lcmNlZE51bWJlciA9ICthcmd1bWVudEZvckNvZXJjaW9uLAogICAgICAgICAgICB2YWx1ZSA9IDA7CgogICAgICAgIGlmIChjb2VyY2VkTnVtYmVyICE9PSAwICYmIGlzRmluaXRlKGNvZXJjZWROdW1iZXIpKSB7CiAgICAgICAgICAgIHZhbHVlID0gYWJzRmxvb3IoY29lcmNlZE51bWJlcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICB9CgogICAgLy8gY29tcGFyZSB0d28gYXJyYXlzLCByZXR1cm4gdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlcwogICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHsKICAgICAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJyYXkxLmxlbmd0aCwgYXJyYXkyLmxlbmd0aCksCiAgICAgICAgICAgIGxlbmd0aERpZmYgPSBNYXRoLmFicyhhcnJheTEubGVuZ3RoIC0gYXJyYXkyLmxlbmd0aCksCiAgICAgICAgICAgIGRpZmZzID0gMCwKICAgICAgICAgICAgaTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHwKICAgICAgICAgICAgICAgICghZG9udENvbnZlcnQgJiYgdG9JbnQoYXJyYXkxW2ldKSAhPT0gdG9JbnQoYXJyYXkyW2ldKSkpIHsKICAgICAgICAgICAgICAgIGRpZmZzKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRpZmZzICsgbGVuZ3RoRGlmZjsKICAgIH0KCiAgICBmdW5jdGlvbiB3YXJuKG1zZykgewogICAgICAgIGlmICh1dGlsc19ob29rc19faG9va3Muc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzID09PSBmYWxzZSAmJgogICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2FybikgewogICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RlcHJlY2F0aW9uIHdhcm5pbmc6ICcgKyBtc2cpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkZXByZWNhdGUobXNnLCBmbikgewogICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlOwoKICAgICAgICByZXR1cm4gZXh0ZW5kKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKHV0aWxzX2hvb2tzX19ob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLCBtc2cpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmaXJzdFRpbWUpIHsKICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107CiAgICAgICAgICAgICAgICB2YXIgYXJnOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBhcmcgPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnICs9ICdcblsnICsgaSArICddICc7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSBrZXkgKyAnOiAnICsgYXJndW1lbnRzWzBdW2tleV0gKyAnLCAnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2UKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaChhcmcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXG5Bcmd1bWVudHM6ICcgKyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKS5qb2luKCcnKSArICdcbicgKyAobmV3IEVycm9yKCkpLnN0YWNrKTsKICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH0sIGZuKTsKICAgIH0KCiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307CgogICAgZnVuY3Rpb24gZGVwcmVjYXRlU2ltcGxlKG5hbWUsIG1zZykgewogICAgICAgIGlmICh1dGlsc19ob29rc19faG9va3MuZGVwcmVjYXRpb25IYW5kbGVyICE9IG51bGwpIHsKICAgICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLmRlcHJlY2F0aW9uSGFuZGxlcihuYW1lLCBtc2cpOwogICAgICAgIH0KICAgICAgICBpZiAoIWRlcHJlY2F0aW9uc1tuYW1lXSkgewogICAgICAgICAgICB3YXJuKG1zZyk7CiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIHV0aWxzX2hvb2tzX19ob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsOwoKICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHsKICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvY2FsZV9zZXRfX3NldCAoY29uZmlnKSB7CiAgICAgICAgdmFyIHByb3AsIGk7CiAgICAgICAgZm9yIChpIGluIGNvbmZpZykgewogICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldOwogICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihwcm9wKSkgewogICAgICAgICAgICAgICAgdGhpc1tpXSA9IHByb3A7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzWydfJyArIGldID0gcHJvcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7CiAgICAgICAgLy8gTGVuaWVudCBvcmRpbmFsIHBhcnNpbmcgYWNjZXB0cyBqdXN0IGEgbnVtYmVyIGluIGFkZGl0aW9uIHRvCiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfb3JkaW5hbFBhcnNlTGVuaWVudC4KICAgICAgICB0aGlzLl9vcmRpbmFsUGFyc2VMZW5pZW50ID0gbmV3IFJlZ0V4cCh0aGlzLl9vcmRpbmFsUGFyc2Uuc291cmNlICsgJ3wnICsgKC9cZHsxLDJ9Lykuc291cmNlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjaGlsZENvbmZpZykgewogICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7CiAgICAgICAgZm9yIChwcm9wIGluIGNoaWxkQ29uZmlnKSB7CiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGNoaWxkQ29uZmlnLCBwcm9wKSkgewogICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzW3Byb3BdID0ge307CiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJlc1twcm9wXSwgcGFyZW50Q29uZmlnW3Byb3BdKTsKICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkQ29uZmlnW3Byb3BdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBjaGlsZENvbmZpZ1twcm9wXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc1twcm9wXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IgKHByb3AgaW4gcGFyZW50Q29uZmlnKSB7CiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiYKICAgICAgICAgICAgICAgICAgICAhaGFzT3duUHJvcChjaGlsZENvbmZpZywgcHJvcCkgJiYKICAgICAgICAgICAgICAgICAgICBpc09iamVjdChwYXJlbnRDb25maWdbcHJvcF0pKSB7CiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnCiAgICAgICAgICAgICAgICByZXNbcHJvcF0gPSBleHRlbmQoe30sIHJlc1twcm9wXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBmdW5jdGlvbiBMb2NhbGUoY29uZmlnKSB7CiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7CiAgICAgICAgfQogICAgfQoKICAgIHZhciBrZXlzOwoKICAgIGlmIChPYmplY3Qua2V5cykgewogICAgICAgIGtleXMgPSBPYmplY3Qua2V5czsKICAgIH0gZWxzZSB7CiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHsKICAgICAgICAgICAgdmFyIGksIHJlcyA9IFtdOwogICAgICAgICAgICBmb3IgKGkgaW4gb2JqKSB7CiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICB9OwogICAgfQoKICAgIHZhciBkZWZhdWx0Q2FsZW5kYXIgPSB7CiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJywKICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLAogICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsCiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsCiAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsCiAgICAgICAgc2FtZUVsc2UgOiAnTCcKICAgIH07CgogICAgZnVuY3Rpb24gbG9jYWxlX2NhbGVuZGFyX19jYWxlbmRhciAoa2V5LCBtb20sIG5vdykgewogICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhcltrZXldIHx8IHRoaXMuX2NhbGVuZGFyWydzYW1lRWxzZSddOwogICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG91dHB1dCkgPyBvdXRwdXQuY2FsbChtb20sIG5vdykgOiBvdXRwdXQ7CiAgICB9CgogICAgdmFyIGRlZmF1bHRMb25nRGF0ZUZvcm1hdCA9IHsKICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsCiAgICAgICAgTFQgICA6ICdoOm1tIEEnLAogICAgICAgIEwgICAgOiAnTU0vREQvWVlZWScsCiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLAogICAgICAgIExMTCAgOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsCiAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJwogICAgfTsKCiAgICBmdW5jdGlvbiBsb25nRGF0ZUZvcm1hdCAoa2V5KSB7CiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sCiAgICAgICAgICAgIGZvcm1hdFVwcGVyID0gdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5LnRvVXBwZXJDYXNlKCldOwoKICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikgewogICAgICAgICAgICByZXR1cm4gZm9ybWF0OwogICAgICAgIH0KCiAgICAgICAgdGhpcy5fbG9uZ0RhdGVGb3JtYXRba2V5XSA9IGZvcm1hdFVwcGVyLnJlcGxhY2UoL01NTU18TU18RER8ZGRkZC9nLCBmdW5jdGlvbiAodmFsKSB7CiAgICAgICAgICAgIHJldHVybiB2YWwuc2xpY2UoMSk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiB0aGlzLl9sb25nRGF0ZUZvcm1hdFtrZXldOwogICAgfQoKICAgIHZhciBkZWZhdWx0SW52YWxpZERhdGUgPSAnSW52YWxpZCBkYXRlJzsKCiAgICBmdW5jdGlvbiBpbnZhbGlkRGF0ZSAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX2ludmFsaWREYXRlOwogICAgfQoKICAgIHZhciBkZWZhdWx0T3JkaW5hbCA9ICclZCc7CiAgICB2YXIgZGVmYXVsdE9yZGluYWxQYXJzZSA9IC9cZHsxLDJ9LzsKCiAgICBmdW5jdGlvbiBvcmRpbmFsIChudW1iZXIpIHsKICAgICAgICByZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCclZCcsIG51bWJlcik7CiAgICB9CgogICAgdmFyIGRlZmF1bHRSZWxhdGl2ZVRpbWUgPSB7CiAgICAgICAgZnV0dXJlIDogJ2luICVzJywKICAgICAgICBwYXN0ICAgOiAnJXMgYWdvJywKICAgICAgICBzICA6ICdhIGZldyBzZWNvbmRzJywKICAgICAgICBtICA6ICdhIG1pbnV0ZScsCiAgICAgICAgbW0gOiAnJWQgbWludXRlcycsCiAgICAgICAgaCAgOiAnYW4gaG91cicsCiAgICAgICAgaGggOiAnJWQgaG91cnMnLAogICAgICAgIGQgIDogJ2EgZGF5JywKICAgICAgICBkZCA6ICclZCBkYXlzJywKICAgICAgICBNICA6ICdhIG1vbnRoJywKICAgICAgICBNTSA6ICclZCBtb250aHMnLAogICAgICAgIHkgIDogJ2EgeWVhcicsCiAgICAgICAgeXkgOiAnJWQgeWVhcnMnCiAgICB9OwoKICAgIGZ1bmN0aW9uIHJlbGF0aXZlX19yZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkgewogICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbc3RyaW5nXTsKICAgICAgICByZXR1cm4gKGlzRnVuY3Rpb24ob3V0cHV0KSkgPwogICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6CiAgICAgICAgICAgIG91dHB1dC5yZXBsYWNlKC8lZC9pLCBudW1iZXIpOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhc3RGdXR1cmUgKGRpZmYsIG91dHB1dCkgewogICAgICAgIHZhciBmb3JtYXQgPSB0aGlzLl9yZWxhdGl2ZVRpbWVbZGlmZiA+IDAgPyAnZnV0dXJlJyA6ICdwYXN0J107CiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7CiAgICB9CgogICAgdmFyIGFsaWFzZXMgPSB7fTsKCiAgICBmdW5jdGlvbiBhZGRVbml0QWxpYXMgKHVuaXQsIHNob3J0aGFuZCkgewogICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgYWxpYXNlc1tsb3dlckNhc2VdID0gYWxpYXNlc1tsb3dlckNhc2UgKyAncyddID0gYWxpYXNlc1tzaG9ydGhhbmRdID0gdW5pdDsKICAgIH0KCiAgICBmdW5jdGlvbiBub3JtYWxpemVVbml0cyh1bml0cykgewogICAgICAgIHJldHVybiB0eXBlb2YgdW5pdHMgPT09ICdzdHJpbmcnID8gYWxpYXNlc1t1bml0c10gfHwgYWxpYXNlc1t1bml0cy50b0xvd2VyQ2FzZSgpXSA6IHVuZGVmaW5lZDsKICAgIH0KCiAgICBmdW5jdGlvbiBub3JtYWxpemVPYmplY3RVbml0cyhpbnB1dE9iamVjdCkgewogICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSwKICAgICAgICAgICAgbm9ybWFsaXplZFByb3AsCiAgICAgICAgICAgIHByb3A7CgogICAgICAgIGZvciAocHJvcCBpbiBpbnB1dE9iamVjdCkgewogICAgICAgICAgICBpZiAoaGFzT3duUHJvcChpbnB1dE9iamVjdCwgcHJvcCkpIHsKICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7CiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFByb3ApIHsKICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkSW5wdXRbbm9ybWFsaXplZFByb3BdID0gaW5wdXRPYmplY3RbcHJvcF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBub3JtYWxpemVkSW5wdXQ7CiAgICB9CgogICAgdmFyIHByaW9yaXRpZXMgPSB7fTsKCiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHsKICAgICAgICBwcmlvcml0aWVzW3VuaXRdID0gcHJpb3JpdHk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0UHJpb3JpdGl6ZWRVbml0cyh1bml0c09iaikgewogICAgICAgIHZhciB1bml0cyA9IFtdOwogICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHsKICAgICAgICAgICAgdW5pdHMucHVzaCh7dW5pdDogdSwgcHJpb3JpdHk6IHByaW9yaXRpZXNbdV19KTsKICAgICAgICB9CiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikgewogICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHk7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIHVuaXRzOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZ2V0X3NldF9fc2V0KHRoaXMsIHVuaXQsIHZhbHVlKTsKICAgICAgICAgICAgICAgIHV0aWxzX2hvb2tzX19ob29rcy51cGRhdGVPZmZzZXQodGhpcywga2VlcFRpbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0X3NldF9fZ2V0KHRoaXMsIHVuaXQpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRfc2V0X19nZXQgKG1vbSwgdW5pdCkgewogICAgICAgIHJldHVybiBtb20uaXNWYWxpZCgpID8KICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0X3NldF9fc2V0IChtb20sIHVuaXQsIHZhbHVlKSB7CiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gTU9NRU5UUwoKICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHsKICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKICAgICAgICBpZiAoaXNGdW5jdGlvbih0aGlzW3VuaXRzXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfQoKCiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkgewogICAgICAgIGlmICh0eXBlb2YgdW5pdHMgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplT2JqZWN0VW5pdHModW5pdHMpOwogICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmlvcml0aXplZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdGhpc1twcmlvcml0aXplZFtpXS51bml0XSh1bml0c1twcmlvcml0aXplZFtpXS51bml0XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1t1bml0c10odmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHsKICAgICAgICB2YXIgYWJzTnVtYmVyID0gJycgKyBNYXRoLmFicyhudW1iZXIpLAogICAgICAgICAgICB6ZXJvc1RvRmlsbCA9IHRhcmdldExlbmd0aCAtIGFic051bWJlci5sZW5ndGgsCiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDsKICAgICAgICByZXR1cm4gKHNpZ24gPyAoZm9yY2VTaWduID8gJysnIDogJycpIDogJy0nKSArCiAgICAgICAgICAgIE1hdGgucG93KDEwLCBNYXRoLm1heCgwLCB6ZXJvc1RvRmlsbCkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpICsgYWJzTnVtYmVyOwogICAgfQoKICAgIHZhciBmb3JtYXR0aW5nVG9rZW5zID0gLyhcW1teXFtdKlxdKXwoXFwpPyhbSGhdbW0oc3MpP3xNb3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3XT98V1tvfFddP3xRbz98WVlZWVlZfFlZWVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98a2s/fG1tP3xzcz98U3sxLDl9fHh8WHx6ej98Wlo/fC4pL2c7CgogICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nOwoKICAgIHZhciBmb3JtYXRGdW5jdGlvbnMgPSB7fTsKCiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTsKCiAgICAvLyB0b2tlbjogICAgJ00nCiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdCiAgICAvLyBvcmRpbmFsOiAgJ01vJwogICAgLy8gY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsgdGhpcy5tb250aCgpICsgMSB9CiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHsKICAgICAgICB2YXIgZnVuYyA9IGNhbGxiYWNrOwogICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tjYWxsYmFja10oKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgaWYgKHRva2VuKSB7CiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSA9IGZ1bmM7CiAgICAgICAgfQogICAgICAgIGlmIChwYWRkZWQpIHsKICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbcGFkZGVkWzBdXSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgaWYgKG9yZGluYWwpIHsKICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbb3JkaW5hbF0gPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRva2VuKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhpbnB1dCkgewogICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFtbXHNcU10vKSkgewogICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxbfFxdJC9nLCAnJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKC9cXC9nLCAnJyk7CiAgICB9CgogICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkgewogICAgICAgIHZhciBhcnJheSA9IGZvcm1hdC5tYXRjaChmb3JtYXR0aW5nVG9rZW5zKSwgaSwgbGVuZ3RoOwoKICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dKSB7CiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGFycmF5W2ldID0gcmVtb3ZlRm9ybWF0dGluZ1Rva2VucyhhcnJheVtpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAobW9tKSB7CiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gYXJyYXlbaV0gaW5zdGFuY2VvZiBGdW5jdGlvbiA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICAgICB9OwogICAgfQoKICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdAogICAgZnVuY3Rpb24gZm9ybWF0TW9tZW50KG0sIGZvcm1hdCkgewogICAgICAgIGlmICghbS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7CiAgICAgICAgfQoKICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7CiAgICAgICAgZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gPSBmb3JtYXRGdW5jdGlvbnNbZm9ybWF0XSB8fCBtYWtlRm9ybWF0RnVuY3Rpb24oZm9ybWF0KTsKCiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkgewogICAgICAgIHZhciBpID0gNTsKCiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7CiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubG9uZ0RhdGVGb3JtYXQoaW5wdXQpIHx8IGlucHV0OwogICAgICAgIH0KCiAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7CiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBsb2NhbEZvcm1hdHRpbmdUb2tlbnMudGVzdChmb3JtYXQpKSB7CiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTsKICAgICAgICAgICAgbG9jYWxGb3JtYXR0aW5nVG9rZW5zLmxhc3RJbmRleCA9IDA7CiAgICAgICAgICAgIGkgLT0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmb3JtYXQ7CiAgICB9CgogICAgdmFyIG1hdGNoMSAgICAgICAgID0gL1xkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOQogICAgdmFyIG1hdGNoMiAgICAgICAgID0gL1xkXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTkKICAgIHZhciBtYXRjaDMgICAgICAgICA9IC9cZHszfS87ICAgICAgICAgLy8gICAgIDAwMCAtIDk5OQogICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xkezR9LzsgICAgICAgICAvLyAgICAwMDAwIC0gOTk5OQogICAgdmFyIG1hdGNoNiAgICAgICAgID0gL1srLV0/XGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5CiAgICB2YXIgbWF0Y2gxdG8yICAgICAgPSAvXGRcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OQogICAgdmFyIG1hdGNoM3RvNCAgICAgID0gL1xkXGRcZFxkPy87ICAgICAvLyAgICAgOTk5IC0gOTk5OQogICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xkXGRcZFxkXGRcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5CiAgICB2YXIgbWF0Y2gxdG8zICAgICAgPSAvXGR7MSwzfS87ICAgICAgIC8vICAgICAgIDAgLSA5OTkKICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cZHsxLDR9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OTkKICAgIHZhciBtYXRjaDF0bzYgICAgICA9IC9bKy1dP1xkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OQoKICAgIHZhciBtYXRjaFVuc2lnbmVkICA9IC9cZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZgogICAgdmFyIG1hdGNoU2lnbmVkICAgID0gL1srLV0/XGQrLzsgICAgICAvLyAgICAtaW5mIC0gaW5mCgogICAgdmFyIG1hdGNoT2Zmc2V0ICAgID0gL1p8WystXVxkXGQ6P1xkXGQvZ2k7IC8vICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWgogICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpOyAvLyArMDAgLTAwICswMDowMCAtMDA6MDAgKzAwMDAgLTAwMDAgb3IgWgoKICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xkKyhcLlxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzCgogICAgLy8gYW55IHdvcmQgKG9yIHR3bykgY2hhcmFjdGVycyBvciBudW1iZXJzIGluY2x1ZGluZyB0d28vdGhyZWUgd29yZCBtb250aCBpbiBhcmFiaWMuCiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzCiAgICB2YXIgbWF0Y2hXb3JkID0gL1swLTldKlsnYS16XHUwMEEwLVx1MDVGRlx1MDcwMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0rfFtcdTA2MDAtXHUwNkZGXC9dKyhccyo/W1x1MDYwMC1cdTA2RkZdKyl7MSwyfS9pOwoKCiAgICB2YXIgcmVnZXhlcyA9IHt9OwoKICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHsKICAgICAgICByZWdleGVzW3Rva2VuXSA9IGlzRnVuY3Rpb24ocmVnZXgpID8gcmVnZXggOiBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZURhdGEpIHsKICAgICAgICAgICAgcmV0dXJuIChpc1N0cmljdCAmJiBzdHJpY3RSZWdleCkgPyBzdHJpY3RSZWdleCA6IHJlZ2V4OwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7CiAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHJlZ2V4ZXMsIHRva2VuKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh1bmVzY2FwZUZvcm1hdCh0b2tlbikpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlZ2V4ZXNbdG9rZW5dKGNvbmZpZy5fc3RyaWN0LCBjb25maWcuX2xvY2FsZSk7CiAgICB9CgogICAgLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdAogICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykgewogICAgICAgIHJldHVybiByZWdleEVzY2FwZShzLnJlcGxhY2UoJ1xcJywgJycpLnJlcGxhY2UoL1xcKFxbKXxcXChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7CiAgICAgICAgICAgIHJldHVybiBwMSB8fCBwMiB8fCBwMyB8fCBwNDsKICAgICAgICB9KSk7CiAgICB9CgogICAgZnVuY3Rpb24gcmVnZXhFc2NhcGUocykgewogICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCAnXFwkJicpOwogICAgfQoKICAgIHZhciB0b2tlbnMgPSB7fTsKCiAgICBmdW5jdGlvbiBhZGRQYXJzZVRva2VuICh0b2tlbiwgY2FsbGJhY2spIHsKICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrOwogICAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIHRva2VuID0gW3Rva2VuXTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgZnVuYyA9IGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHsKICAgICAgICAgICAgICAgIGFycmF5W2NhbGxiYWNrXSA9IHRvSW50KGlucHV0KTsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBhZGRXZWVrUGFyc2VUb2tlbiAodG9rZW4sIGNhbGxiYWNrKSB7CiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnLCB0b2tlbikgewogICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307CiAgICAgICAgICAgIGNhbGxiYWNrKGlucHV0LCBjb25maWcuX3csIGNvbmZpZywgdG9rZW4pOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBpbnB1dCwgY29uZmlnKSB7CiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkgewogICAgICAgICAgICB0b2tlbnNbdG9rZW5dKGlucHV0LCBjb25maWcuX2EsIGNvbmZpZywgdG9rZW4pOwogICAgICAgIH0KICAgIH0KCiAgICB2YXIgWUVBUiA9IDA7CiAgICB2YXIgTU9OVEggPSAxOwogICAgdmFyIERBVEUgPSAyOwogICAgdmFyIEhPVVIgPSAzOwogICAgdmFyIE1JTlVURSA9IDQ7CiAgICB2YXIgU0VDT05EID0gNTsKICAgIHZhciBNSUxMSVNFQ09ORCA9IDY7CiAgICB2YXIgV0VFSyA9IDc7CiAgICB2YXIgV0VFS0RBWSA9IDg7CgogICAgdmFyIGluZGV4T2Y7CgogICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7CiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mOwogICAgfSBlbHNlIHsKICAgICAgICBpbmRleE9mID0gZnVuY3Rpb24gKG8pIHsKICAgICAgICAgICAgLy8gSSBrbm93CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkgewogICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCArIDEsIDApKS5nZXRVVENEYXRlKCk7CiAgICB9CgogICAgLy8gRk9STUFUVElORwoKICAgIGFkZEZvcm1hdFRva2VuKCdNJywgWydNTScsIDJdLCAnTW8nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKSArIDE7CiAgICB9KTsKCiAgICBhZGRGb3JtYXRUb2tlbignTU1NJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpOwogICAgfSk7CgogICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLCBmb3JtYXQpOwogICAgfSk7CgogICAgLy8gQUxJQVNFUwoKICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpOwoKICAgIC8vIFBSSU9SSVRZCgogICAgYWRkVW5pdFByaW9yaXR5KCdtb250aCcsIDgpOwoKICAgIC8vIFBBUlNJTkcKCiAgICBhZGRSZWdleFRva2VuKCdNJywgICAgbWF0Y2gxdG8yKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7CiAgICBhZGRSZWdleFRva2VuKCdNTU0nLCAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHsKICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1Nob3J0UmVnZXgoaXNTdHJpY3QpOwogICAgfSk7CiAgICBhZGRSZWdleFRva2VuKCdNTU1NJywgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHsKICAgICAgICByZXR1cm4gbG9jYWxlLm1vbnRoc1JlZ2V4KGlzU3RyaWN0KTsKICAgIH0pOwoKICAgIGFkZFBhcnNlVG9rZW4oWydNJywgJ01NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHsKICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxOwogICAgfSk7CgogICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHsKICAgICAgICB2YXIgbW9udGggPSBjb25maWcuX2xvY2FsZS5tb250aHNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTsKICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC4KICAgICAgICBpZiAobW9udGggIT0gbnVsbCkgewogICAgICAgICAgICBhcnJheVtNT05USF0gPSBtb250aDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDsKICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBMT0NBTEVTCgogICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxbW15cW1xdXSpcXXxccyspK01NTU0/LzsKICAgIHZhciBkZWZhdWx0TG9jYWxlTW9udGhzID0gJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyk7CiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkgewogICAgICAgIGlmICghbSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHMpID8gdGhpcy5fbW9udGhzW20ubW9udGgoKV0gOgogICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTsKICAgIH0KCiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpOwogICAgZnVuY3Rpb24gbG9jYWxlTW9udGhzU2hvcnQgKG0sIGZvcm1hdCkgewogICAgICAgIGlmICghbSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRoc1Nob3J0KSA/IHRoaXMuX21vbnRoc1Nob3J0W20ubW9udGgoKV0gOgogICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFtNT05USFNfSU5fRk9STUFULnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLm1vbnRoKCldOwogICAgfQoKICAgIGZ1bmN0aW9uIHVuaXRzX21vbnRoX19oYW5kbGVTdHJpY3RQYXJzZShtb250aE5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7CiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IG1vbnRoTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpOwogICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHsKICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgdXNlZAogICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdOwogICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTsKICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZSA9IFtdOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7ICsraSkgewogICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlX3V0Y19fY3JlYXRlVVRDKFsyMDAwLCBpXSk7CiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHNTaG9ydChtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gdGhpcy5tb250aHMobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmljdCkgewogICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnTU1NJykgewogICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSwgbGxjKTsKICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7CiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHsKICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsIGxsYyk7CiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTsKICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkgewogICAgICAgIHZhciBpLCBtb20sIHJlZ2V4OwoKICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkgewogICAgICAgICAgICByZXR1cm4gdW5pdHNfbW9udGhfX2hhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7CiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107CiAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZSA9IFtdOwogICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107CiAgICAgICAgfQoKICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZwogICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIKICAgICAgICAvLyBzZWUgc29ydGluZyBpbiBjb21wdXRlTW9udGhzUGFyc2UKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykgewogICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHkKICAgICAgICAgICAgbW9tID0gY3JlYXRlX3V0Y19fY3JlYXRlVVRDKFsyMDAwLCBpXSk7CiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkgewogICAgICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpOwogICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJycpICsgJyQnLCAnaScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghc3RyaWN0ICYmICF0aGlzLl9tb250aHNQYXJzZVtpXSkgewogICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLm1vbnRocyhtb20sICcnKSArICd8XicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpOwogICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXgKICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnTU1NJyAmJiB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldLnRlc3QobW9udGhOYW1lKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl9tb250aHNQYXJzZVtpXS50ZXN0KG1vbnRoTmFtZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vIE1PTUVOVFMKCiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkgewogICAgICAgIHZhciBkYXlPZk1vbnRoOwoKICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgLy8gTm8gb3AKICAgICAgICAgICAgcmV0dXJuIG1vbTsKICAgICAgICB9CgogICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIGlmICgvXlxkKyQvLnRlc3QodmFsdWUpKSB7CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvSW50KHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAvLyBUT0RPOiBBbm90aGVyIHNpbGVudCBmYWlsdXJlPwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9tOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTsKICAgICAgICBtb20uX2RbJ3NldCcgKyAobW9tLl9pc1VUQyA/ICdVVEMnIDogJycpICsgJ01vbnRoJ10odmFsdWUsIGRheU9mTW9udGgpOwogICAgICAgIHJldHVybiBtb207CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U2V0TW9udGggKHZhbHVlKSB7CiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKICAgICAgICAgICAgc2V0TW9udGgodGhpcywgdmFsdWUpOwogICAgICAgICAgICB1dGlsc19ob29rc19faG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpOwogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZ2V0X3NldF9fZ2V0KHRoaXMsICdNb250aCcpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBnZXREYXlzSW5Nb250aCAoKSB7CiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpOwogICAgfQoKICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDsKICAgIGZ1bmN0aW9uIG1vbnRoc1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7CiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHsKICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkgewogICAgICAgICAgICAgICAgY29tcHV0ZU1vbnRoc1BhcnNlLmNhbGwodGhpcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTaG9ydFJlZ2V4ID0gZGVmYXVsdE1vbnRoc1Nob3J0UmVnZXg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgPwogICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1Nob3J0UmVnZXg7CiAgICAgICAgfQogICAgfQoKICAgIHZhciBkZWZhdWx0TW9udGhzUmVnZXggPSBtYXRjaFdvcmQ7CiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHsKICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkgewogICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ19tb250aHNSZWdleCcpKSB7CiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNSZWdleDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHsKICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/CiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4OwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBjb21wdXRlTW9udGhzUGFyc2UgKCkgewogICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSwKICAgICAgICAgICAgaSwgbW9tOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeQogICAgICAgICAgICBtb20gPSBjcmVhdGVfdXRjX19jcmVhdGVVVEMoWzIwMDAsIGldKTsKICAgICAgICAgICAgc2hvcnRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTsKICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTsKICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRocyhtb20sICcnKSk7CiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHNTaG9ydChtb20sICcnKSk7CiAgICAgICAgfQogICAgICAgIC8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIgaXQKICAgICAgICAvLyB3aWxsIG1hdGNoIHRoZSBsb25nZXIgcGllY2UuCiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpOwogICAgICAgIGxvbmdQaWVjZXMuc29ydChjbXBMZW5SZXYpOwogICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykgewogICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTsKICAgICAgICAgICAgbG9uZ1BpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKGxvbmdQaWVjZXNbaV0pOwogICAgICAgIH0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjQ7IGkrKykgewogICAgICAgICAgICBtaXhlZFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKG1peGVkUGllY2VzW2ldKTsKICAgICAgICB9CgogICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbWl4ZWRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpOwogICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDsKICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpOwogICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7CiAgICB9CgogICAgLy8gRk9STUFUVElORwoKICAgIGFkZEZvcm1hdFRva2VuKCdZJywgMCwgMCwgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7CiAgICAgICAgcmV0dXJuIHkgPD0gOTk5OSA/ICcnICsgeSA6ICcrJyArIHk7CiAgICB9KTsKCiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZJywgMl0sIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy55ZWFyKCkgJSAxMDA7CiAgICB9KTsKCiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVknLCAgIDRdLCAgICAgICAwLCAneWVhcicpOwogICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTsKICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWVlZJywgNiwgdHJ1ZV0sIDAsICd5ZWFyJyk7CgogICAgLy8gQUxJQVNFUwoKICAgIGFkZFVuaXRBbGlhcygneWVhcicsICd5Jyk7CgogICAgLy8gUFJJT1JJVElFUwoKICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpOwoKICAgIC8vIFBBUlNJTkcKCiAgICBhZGRSZWdleFRva2VuKCdZJywgICAgICBtYXRjaFNpZ25lZCk7CiAgICBhZGRSZWdleFRva2VuKCdZWScsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7CiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7CiAgICBhZGRSZWdleFRva2VuKCdZWVlZWScsICBtYXRjaDF0bzYsIG1hdGNoNik7CiAgICBhZGRSZWdleFRva2VuKCdZWVlZWVknLCBtYXRjaDF0bzYsIG1hdGNoNik7CgogICAgYWRkUGFyc2VUb2tlbihbJ1lZWVlZJywgJ1lZWVlZWSddLCBZRUFSKTsKICAgIGFkZFBhcnNlVG9rZW4oJ1lZWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7CiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyB1dGlsc19ob29rc19faG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpIDogdG9JbnQoaW5wdXQpOwogICAgfSk7CiAgICBhZGRQYXJzZVRva2VuKCdZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHsKICAgICAgICBhcnJheVtZRUFSXSA9IHV0aWxzX2hvb2tzX19ob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCk7CiAgICB9KTsKICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7CiAgICAgICAgYXJyYXlbWUVBUl0gPSBwYXJzZUludChpbnB1dCwgMTApOwogICAgfSk7CgogICAgLy8gSEVMUEVSUwoKICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikgewogICAgICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1OwogICAgfQoKICAgIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgICAgIHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDsKICAgIH0KCiAgICAvLyBIT09LUwoKICAgIHV0aWxzX2hvb2tzX19ob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkgewogICAgICAgIHJldHVybiB0b0ludChpbnB1dCkgKyAodG9JbnQoaW5wdXQpID4gNjggPyAxOTAwIDogMjAwMCk7CiAgICB9OwoKICAgIC8vIE1PTUVOVFMKCiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7CgogICAgZnVuY3Rpb24gZ2V0SXNMZWFwWWVhciAoKSB7CiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZURhdGUgKHksIG0sIGQsIGgsIE0sIHMsIG1zKSB7CiAgICAgICAgLy9jYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZToKICAgICAgICAvL2h0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTgxMzQ4L2luc3RhbnRpYXRpbmctYS1qYXZhc2NyaXB0LW9iamVjdC1ieS1jYWxsaW5nLXByb3RvdHlwZS1jb25zdHJ1Y3Rvci1hcHBseQogICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpOwoKICAgICAgICAvL3RoZSBkYXRlIGNvbnN0cnVjdG9yIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OQogICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCAmJiBpc0Zpbml0ZShkYXRlLmdldEZ1bGxZZWFyKCkpKSB7CiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkYXRlOwogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZVVUQ0RhdGUgKHkpIHsKICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpOwoKICAgICAgICAvL3RoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTkKICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDAgJiYgaXNGaW5pdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpKSkgewogICAgICAgICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGF0ZTsKICAgIH0KCiAgICAvLyBzdGFydC1vZi1maXJzdC13ZWVrIC0gc3RhcnQtb2YteWVhcgogICAgZnVuY3Rpb24gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSB7CiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKQogICAgICAgICAgICBmd2QgPSA3ICsgZG93IC0gZG95LAogICAgICAgICAgICAvLyBmaXJzdC13ZWVrIGRheSBsb2NhbCB3ZWVrZGF5IC0tIHdoaWNoIGxvY2FsIHdlZWtkYXkgaXMgZndkCiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNzsKCiAgICAgICAgcmV0dXJuIC1md2RsdyArIGZ3ZCAtIDE7CiAgICB9CgogICAgLy9odHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUjQ2FsY3VsYXRpbmdfYV9kYXRlX2dpdmVuX3RoZV95ZWFyLjJDX3dlZWtfbnVtYmVyX2FuZF93ZWVrZGF5CiAgICBmdW5jdGlvbiBkYXlPZlllYXJGcm9tV2Vla3MoeWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHsKICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsCiAgICAgICAgICAgIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLAogICAgICAgICAgICBkYXlPZlllYXIgPSAxICsgNyAqICh3ZWVrIC0gMSkgKyBsb2NhbFdlZWtkYXkgKyB3ZWVrT2Zmc2V0LAogICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7CgogICAgICAgIGlmIChkYXlPZlllYXIgPD0gMCkgewogICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7CiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheXNJblllYXIocmVzWWVhcikgKyBkYXlPZlllYXI7CiAgICAgICAgfSBlbHNlIGlmIChkYXlPZlllYXIgPiBkYXlzSW5ZZWFyKHllYXIpKSB7CiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTsKICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyIC0gZGF5c0luWWVhcih5ZWFyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXNZZWFyID0geWVhcjsKICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgeWVhcjogcmVzWWVhciwKICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXIKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHdlZWtPZlllYXIobW9tLCBkb3csIGRveSkgewogICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KG1vbS55ZWFyKCksIGRvdywgZG95KSwKICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSwKICAgICAgICAgICAgcmVzV2VlaywgcmVzWWVhcjsKCiAgICAgICAgaWYgKHdlZWsgPCAxKSB7CiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpIC0gMTsKICAgICAgICAgICAgcmVzV2VlayA9IHdlZWsgKyB3ZWVrc0luWWVhcihyZXNZZWFyLCBkb3csIGRveSk7CiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7CiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrIC0gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpOwogICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSArIDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCk7CiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgd2VlazogcmVzV2VlaywKICAgICAgICAgICAgeWVhcjogcmVzWWVhcgogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhciwgZG93LCBkb3kpIHsKICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksCiAgICAgICAgICAgIHdlZWtPZmZzZXROZXh0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIgKyAxLCBkb3csIGRveSk7CiAgICAgICAgcmV0dXJuIChkYXlzSW5ZZWFyKHllYXIpIC0gd2Vla09mZnNldCArIHdlZWtPZmZzZXROZXh0KSAvIDc7CiAgICB9CgogICAgLy8gRk9STUFUVElORwoKICAgIGFkZEZvcm1hdFRva2VuKCd3JywgWyd3dycsIDJdLCAnd28nLCAnd2VlaycpOwogICAgYWRkRm9ybWF0VG9rZW4oJ1cnLCBbJ1dXJywgMl0sICdXbycsICdpc29XZWVrJyk7CgogICAgLy8gQUxJQVNFUwoKICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7CiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWsnLCAnVycpOwoKICAgIC8vIFBSSU9SSVRJRVMKCiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWsnLCA1KTsKICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpOwoKICAgIC8vIFBBUlNJTkcKCiAgICBhZGRSZWdleFRva2VuKCd3JywgIG1hdGNoMXRvMik7CiAgICBhZGRSZWdleFRva2VuKCd3dycsIG1hdGNoMXRvMiwgbWF0Y2gyKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpOwoKICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikgewogICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDEpXSA9IHRvSW50KGlucHV0KTsKICAgIH0pOwoKICAgIC8vIEhFTFBFUlMKCiAgICAvLyBMT0NBTEVTCgogICAgZnVuY3Rpb24gbG9jYWxlV2VlayAobW9tKSB7CiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7CiAgICB9CgogICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0gewogICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgogICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KICAgIH07CgogICAgZnVuY3Rpb24gbG9jYWxlRmlyc3REYXlPZldlZWsgKCkgewogICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdzsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95OwogICAgfQoKICAgIC8vIE1PTUVOVFMKCiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkgewogICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTsKICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2VlayAoaW5wdXQpIHsKICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlazsKICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7CiAgICB9CgogICAgLy8gRk9STUFUVElORwoKICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpOwoKICAgIGFkZEZvcm1hdFRva2VuKCdkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHsKICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTsKICAgIH0pOwoKICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcywgZm9ybWF0KTsKICAgIH0pOwoKICAgIGFkZEZvcm1hdFRva2VuKCdkZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLCBmb3JtYXQpOwogICAgfSk7CgogICAgYWRkRm9ybWF0VG9rZW4oJ2UnLCAwLCAwLCAnd2Vla2RheScpOwogICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpOwoKICAgIC8vIEFMSUFTRVMKCiAgICBhZGRVbml0QWxpYXMoJ2RheScsICdkJyk7CiAgICBhZGRVbml0QWxpYXMoJ3dlZWtkYXknLCAnZScpOwogICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTsKCiAgICAvLyBQUklPUklUWQogICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7CiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtkYXknLCAxMSk7CiAgICBhZGRVbml0UHJpb3JpdHkoJ2lzb1dlZWtkYXknLCAxMSk7CgogICAgLy8gUEFSU0lORwoKICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpOwogICAgYWRkUmVnZXhUb2tlbignZScsICAgIG1hdGNoMXRvMik7CiAgICBhZGRSZWdleFRva2VuKCdFJywgICAgbWF0Y2gxdG8yKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkgewogICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNNaW5SZWdleChpc1N0cmljdCk7CiAgICB9KTsKICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHsKICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCk7CiAgICB9KTsKICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7CiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KTsKICAgIH0pOwoKICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZGQnLCAnZGRkJywgJ2RkZGQnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7CiAgICAgICAgdmFyIHdlZWtkYXkgPSBjb25maWcuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0LCB0b2tlbiwgY29uZmlnLl9zdHJpY3QpOwogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZAogICAgICAgIGlmICh3ZWVrZGF5ICE9IG51bGwpIHsKICAgICAgICAgICAgd2Vlay5kID0gd2Vla2RheTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkV2Vla2RheSA9IGlucHV0OwogICAgICAgIH0KICAgIH0pOwoKICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZCcsICdlJywgJ0UnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7CiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7CiAgICB9KTsKCiAgICAvLyBIRUxQRVJTCgogICAgZnVuY3Rpb24gcGFyc2VXZWVrZGF5KGlucHV0LCBsb2NhbGUpIHsKICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykgewogICAgICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzTmFOKGlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoaW5wdXQsIDEwKTsKICAgICAgICB9CgogICAgICAgIGlucHV0ID0gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpOwogICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7CiAgICAgICAgICAgIHJldHVybiBpbnB1dDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlSXNvV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7CiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGlzTmFOKGlucHV0KSA/IG51bGwgOiBpbnB1dDsKICAgIH0KCiAgICAvLyBMT0NBTEVTCgogICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5cyA9ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKTsKICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzIChtLCBmb3JtYXQpIHsKICAgICAgICBpZiAoIW0pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl93ZWVrZGF5cykgPyB0aGlzLl93ZWVrZGF5c1ttLmRheSgpXSA6CiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzW3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLmRheSgpXTsKICAgIH0KCiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpOwogICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydCAobSkgewogICAgICAgIHJldHVybiAobSkgPyB0aGlzLl93ZWVrZGF5c1Nob3J0W20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNTaG9ydDsKICAgIH0KCiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluID0gJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpOwogICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHsKICAgICAgICByZXR1cm4gKG0pID8gdGhpcy5fd2Vla2RheXNNaW5bbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c01pbjsKICAgIH0KCiAgICBmdW5jdGlvbiBkYXlfb2Zfd2Vla19faGFuZGxlU3RyaWN0UGFyc2Uod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7CiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7CiAgICAgICAgaWYgKCF0aGlzLl93ZWVrZGF5c1BhcnNlKSB7CiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2UgPSBbXTsKICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107CiAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2UgPSBbXTsKCiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHsKICAgICAgICAgICAgICAgIG1vbSA9IGNyZWF0ZV91dGNfX2NyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTsKICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnRvTG9jYWxlTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJpY3QpIHsKICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7CiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDsKICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7CiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsIGxsYyk7CiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTsKICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGRkZCcpIHsKICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7CiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpOwogICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7CiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOwogICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2RkZCcpIHsKICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTsKICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpOwogICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7CiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTsKICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpOwogICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTsKICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7CiAgICAgICAgdmFyIGksIG1vbSwgcmVnZXg7CgogICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHsKICAgICAgICAgICAgcmV0dXJuIGRheV9vZl93ZWVrX19oYW5kbGVTdHJpY3RQYXJzZS5jYWxsKHRoaXMsIHdlZWtkYXlOYW1lLCBmb3JtYXQsIHN0cmljdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuX3dlZWtkYXlzUGFyc2UpIHsKICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdOwogICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107CiAgICAgICAgICAgIHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSA9IFtdOwogICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewogICAgICAgICAgICAvLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHkKCiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZV91dGNfX2NyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTsKICAgICAgICAgICAgaWYgKHN0cmljdCAmJiAhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0pIHsKICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnXC4/JykgKyAnJCcsICdpJyk7CiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1wuPycpICsgJyQnLCAnaScpOwogICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKS5yZXBsYWNlKCcuJywgJ1wuPycpICsgJyQnLCAnaScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkgewogICAgICAgICAgICAgICAgcmVnZXggPSAnXicgKyB0aGlzLndlZWtkYXlzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpOwogICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZVtpXSA9IG5ldyBSZWdFeHAocmVnZXgucmVwbGFjZSgnLicsICcnKSwgJ2knKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleAogICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZGQnICYmIHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkJyAmJiB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBNT01FTlRTCgogICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZXZWVrIChpbnB1dCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOOwogICAgICAgIH0KICAgICAgICB2YXIgZGF5ID0gdGhpcy5faXNVVEMgPyB0aGlzLl9kLmdldFVUQ0RheSgpIDogdGhpcy5fZC5nZXREYXkoKTsKICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgewogICAgICAgICAgICBpbnB1dCA9IHBhcnNlV2Vla2RheShpbnB1dCwgdGhpcy5sb2NhbGVEYXRhKCkpOwogICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQoaW5wdXQgLSBkYXksICdkJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGRheTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U2V0TG9jYWxlRGF5T2ZXZWVrIChpbnB1dCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOOwogICAgICAgIH0KICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3OwogICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2Vla2RheSA6IHRoaXMuYWRkKGlucHV0IC0gd2Vla2RheSwgJ2QnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRTZXRJU09EYXlPZldlZWsgKGlucHV0KSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgewogICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47CiAgICAgICAgfQoKICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0CiAgICAgICAgLy8gYXMgYSBnZXR0ZXIsIHJldHVybnMgNyBpbnN0ZWFkIG9mIDAgKDEtNyByYW5nZSBpbnN0ZWFkIG9mIDAtNikKICAgICAgICAvLyBhcyBhIHNldHRlciwgc3VuZGF5IHNob3VsZCBiZWxvbmcgdG8gdGhlIHByZXZpb3VzIHdlZWsuCgogICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7CiAgICAgICAgICAgIHZhciB3ZWVrZGF5ID0gcGFyc2VJc29XZWVrZGF5KGlucHV0LCB0aGlzLmxvY2FsZURhdGEoKSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCkgfHwgNzsKICAgICAgICB9CiAgICB9CgogICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkOwogICAgZnVuY3Rpb24gd2Vla2RheXNSZWdleCAoaXNTdHJpY3QpIHsKICAgICAgICBpZiAodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KSB7CiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkgewogICAgICAgICAgICAgICAgY29tcHV0ZVdlZWtkYXlzUGFyc2UuY2FsbCh0aGlzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzUmVnZXggPSBkZWZhdWx0V2Vla2RheXNSZWdleDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/CiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNSZWdleDsKICAgICAgICB9CiAgICB9CgogICAgdmFyIGRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXggPSBtYXRjaFdvcmQ7CiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7CiAgICAgICAgaWYgKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdCkgewogICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHsKICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzU2hvcnRSZWdleCcpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgPwogICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4OwogICAgICAgIH0KICAgIH0KCiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzTWluUmVnZXggPSBtYXRjaFdvcmQ7CiAgICBmdW5jdGlvbiB3ZWVrZGF5c01pblJlZ2V4IChpc1N0cmljdCkgewogICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHsKICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNSZWdleCcpKSB7CiAgICAgICAgICAgICAgICBjb21wdXRlV2Vla2RheXNQYXJzZS5jYWxsKHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc1N0cmljdCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5SZWdleDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzTWluUmVnZXgnKSkgewogICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID8KICAgICAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggOiB0aGlzLl93ZWVrZGF5c01pblJlZ2V4OwogICAgICAgIH0KICAgIH0KCgogICAgZnVuY3Rpb24gY29tcHV0ZVdlZWtkYXlzUGFyc2UgKCkgewogICAgICAgIGZ1bmN0aW9uIGNtcExlblJldihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoOwogICAgICAgIH0KCiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sCiAgICAgICAgICAgIGksIG1vbSwgbWlucCwgc2hvcnRwLCBsb25ncDsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeQogICAgICAgICAgICBtb20gPSBjcmVhdGVfdXRjX19jcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7CiAgICAgICAgICAgIG1pbnAgPSB0aGlzLndlZWtkYXlzTWluKG1vbSwgJycpOwogICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7CiAgICAgICAgICAgIGxvbmdwID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKTsKICAgICAgICAgICAgbWluUGllY2VzLnB1c2gobWlucCk7CiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTsKICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKGxvbmdwKTsKICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChtaW5wKTsKICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApOwogICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKGxvbmdwKTsKICAgICAgICB9CiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0CiAgICAgICAgLy8gd2lsbCBtYXRjaCB0aGUgbG9uZ2VyIHBpZWNlLgogICAgICAgIG1pblBpZWNlcy5zb3J0KGNtcExlblJldik7CiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpOwogICAgICAgIGxvbmdQaWVjZXMuc29ydChjbXBMZW5SZXYpOwogICAgICAgIG1peGVkUGllY2VzLnNvcnQoY21wTGVuUmV2KTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAgICAgICAgICAgIHNob3J0UGllY2VzW2ldID0gcmVnZXhFc2NhcGUoc2hvcnRQaWVjZXNbaV0pOwogICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7CiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTsKICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4OwogICAgICAgIHRoaXMuX3dlZWtkYXlzTWluUmVnZXggPSB0aGlzLl93ZWVrZGF5c1JlZ2V4OwoKICAgICAgICB0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgbG9uZ1BpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7CiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4ID0gbmV3IFJlZ0V4cCgnXignICsgc2hvcnRQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpOwogICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpOwogICAgfQoKICAgIC8vIEZPUk1BVFRJTkcKCiAgICBmdW5jdGlvbiBoRm9ybWF0KCkgewogICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjsKICAgIH0KCiAgICBmdW5jdGlvbiBrRm9ybWF0KCkgewogICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgfHwgMjQ7CiAgICB9CgogICAgYWRkRm9ybWF0VG9rZW4oJ0gnLCBbJ0hIJywgMl0sIDAsICdob3VyJyk7CiAgICBhZGRGb3JtYXRUb2tlbignaCcsIFsnaGgnLCAyXSwgMCwgaEZvcm1hdCk7CiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7CgogICAgYWRkRm9ybWF0VG9rZW4oJ2htbScsIDAsIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpOwogICAgfSk7CgogICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAnJyArIGhGb3JtYXQuYXBwbHkodGhpcykgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMikgKwogICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7CiAgICB9KTsKCiAgICBhZGRGb3JtYXRUb2tlbignSG1tJywgMCwgMCwgZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTsKICAgIH0pOwoKICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gJycgKyB0aGlzLmhvdXJzKCkgKyB6ZXJvRmlsbCh0aGlzLm1pbnV0ZXMoKSwgMikgKwogICAgICAgICAgICB6ZXJvRmlsbCh0aGlzLnNlY29uZHMoKSwgMik7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBtZXJpZGllbSAodG9rZW4sIGxvd2VyY2FzZSkgewogICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksIHRoaXMubWludXRlcygpLCBsb3dlcmNhc2UpOwogICAgICAgIH0pOwogICAgfQoKICAgIG1lcmlkaWVtKCdhJywgdHJ1ZSk7CiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTsKCiAgICAvLyBBTElBU0VTCgogICAgYWRkVW5pdEFsaWFzKCdob3VyJywgJ2gnKTsKCiAgICAvLyBQUklPUklUWQogICAgYWRkVW5pdFByaW9yaXR5KCdob3VyJywgMTMpOwoKICAgIC8vIFBBUlNJTkcKCiAgICBmdW5jdGlvbiBtYXRjaE1lcmlkaWVtIChpc1N0cmljdCwgbG9jYWxlKSB7CiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTsKICAgIH0KCiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pOwogICAgYWRkUmVnZXhUb2tlbignQScsICBtYXRjaE1lcmlkaWVtKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ0gnLCAgbWF0Y2gxdG8yKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ0hIJywgbWF0Y2gxdG8yLCBtYXRjaDIpOwogICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7CgogICAgYWRkUmVnZXhUb2tlbignaG1tJywgbWF0Y2gzdG80KTsKICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTsKICAgIGFkZFJlZ2V4VG9rZW4oJ0htbScsIG1hdGNoM3RvNCk7CiAgICBhZGRSZWdleFRva2VuKCdIbW1zcycsIG1hdGNoNXRvNik7CgogICAgYWRkUGFyc2VUb2tlbihbJ0gnLCAnSEgnXSwgSE9VUik7CiAgICBhZGRQYXJzZVRva2VuKFsnYScsICdBJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykgewogICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpOwogICAgICAgIGNvbmZpZy5fbWVyaWRpZW0gPSBpbnB1dDsKICAgIH0pOwogICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7CiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dCk7CiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7CiAgICB9KTsKICAgIGFkZFBhcnNlVG9rZW4oJ2htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykgewogICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyOwogICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpOwogICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7CiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7CiAgICB9KTsKICAgIGFkZFBhcnNlVG9rZW4oJ2htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7CiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0OwogICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjsKICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7CiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7CiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7CiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHRydWU7CiAgICB9KTsKICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykgewogICAgICAgIHZhciBwb3MgPSBpbnB1dC5sZW5ndGggLSAyOwogICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpOwogICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7CiAgICB9KTsKICAgIGFkZFBhcnNlVG9rZW4oJ0htbXNzJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7CiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0OwogICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjsKICAgICAgICBhcnJheVtIT1VSXSA9IHRvSW50KGlucHV0LnN1YnN0cigwLCBwb3MxKSk7CiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7CiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7CiAgICB9KTsKCiAgICAvLyBMT0NBTEVTCgogICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHsKICAgICAgICAvLyBJRTggUXVpcmtzIE1vZGUgJiBJRTcgU3RhbmRhcmRzIE1vZGUgZG8gbm90IGFsbG93IGFjY2Vzc2luZyBzdHJpbmdzIGxpa2UgYXJyYXlzCiAgICAgICAgLy8gVXNpbmcgY2hhckF0IHNob3VsZCBiZSBtb3JlIGNvbXBhdGlibGUuCiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7CiAgICB9CgogICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cLj9tP1wuPy9pOwogICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7CiAgICAgICAgaWYgKGhvdXJzID4gMTEpIHsKICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncG0nIDogJ1BNJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhbScgOiAnQU0nOwogICAgICAgIH0KICAgIH0KCgogICAgLy8gTU9NRU5UUwoKICAgIC8vIFNldHRpbmcgdGhlIGhvdXIgc2hvdWxkIGtlZXAgdGhlIHRpbWUsIGJlY2F1c2UgdGhlIHVzZXIgZXhwbGljaXRseQogICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgaGUgd2FudHMuIFNvIHRyeWluZyB0byBtYWludGFpbiB0aGUgc2FtZSBob3VyIChpbgogICAgLy8gYSBuZXcgdGltZXpvbmUpIG1ha2VzIHNlbnNlLiBBZGRpbmcvc3VidHJhY3RpbmcgaG91cnMgZG9lcyBub3QgZm9sbG93CiAgICAvLyB0aGlzIHJ1bGUuCiAgICB2YXIgZ2V0U2V0SG91ciA9IG1ha2VHZXRTZXQoJ0hvdXJzJywgdHJ1ZSk7CgogICAgdmFyIGJhc2VDb25maWcgPSB7CiAgICAgICAgY2FsZW5kYXI6IGRlZmF1bHRDYWxlbmRhciwKICAgICAgICBsb25nRGF0ZUZvcm1hdDogZGVmYXVsdExvbmdEYXRlRm9ybWF0LAogICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsCiAgICAgICAgb3JkaW5hbDogZGVmYXVsdE9yZGluYWwsCiAgICAgICAgb3JkaW5hbFBhcnNlOiBkZWZhdWx0T3JkaW5hbFBhcnNlLAogICAgICAgIHJlbGF0aXZlVGltZTogZGVmYXVsdFJlbGF0aXZlVGltZSwKCiAgICAgICAgbW9udGhzOiBkZWZhdWx0TG9jYWxlTW9udGhzLAogICAgICAgIG1vbnRoc1Nob3J0OiBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQsCgogICAgICAgIHdlZWs6IGRlZmF1bHRMb2NhbGVXZWVrLAoKICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLAogICAgICAgIHdlZWtkYXlzTWluOiBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4sCiAgICAgICAgd2Vla2RheXNTaG9ydDogZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQsCgogICAgICAgIG1lcmlkaWVtUGFyc2U6IGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlCiAgICB9OwoKICAgIC8vIGludGVybmFsIHN0b3JhZ2UgZm9yIGxvY2FsZSBjb25maWcgZmlsZXMKICAgIHZhciBsb2NhbGVzID0ge307CiAgICB2YXIgZ2xvYmFsTG9jYWxlOwoKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZShrZXkpIHsKICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7CiAgICB9CgogICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5CiAgICAvLyB0cnkgWydlbi1hdScsICdlbi1nYiddIGFzICdlbi1hdScsICdlbi1nYicsICdlbicsIGFzIGluIG1vdmUgdGhyb3VnaCB0aGUgbGlzdCB0cnlpbmcgZWFjaAogICAgLy8gc3Vic3RyaW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhlIG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJpYW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdAogICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7CiAgICAgICAgdmFyIGkgPSAwLCBqLCBuZXh0LCBsb2NhbGUsIHNwbGl0OwoKICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkgewogICAgICAgICAgICBzcGxpdCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpXSkuc3BsaXQoJy0nKTsKICAgICAgICAgICAgaiA9IHNwbGl0Lmxlbmd0aDsKICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pOwogICAgICAgICAgICBuZXh0ID0gbmV4dCA/IG5leHQuc3BsaXQoJy0nKSA6IG51bGw7CiAgICAgICAgICAgIHdoaWxlIChqID4gMCkgewogICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpOwogICAgICAgICAgICAgICAgaWYgKGxvY2FsZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0Lmxlbmd0aCA+PSBqICYmIGNvbXBhcmVBcnJheXMoc3BsaXQsIG5leHQsIHRydWUpID49IGogLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgai0tOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZExvY2FsZShuYW1lKSB7CiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7CiAgICAgICAgLy8gVE9ETzogRmluZCBhIGJldHRlciB3YXkgdG8gcmVnaXN0ZXIgYW5kIGxvYWQgYWxsIHRoZSBsb2NhbGVzIGluIE5vZGUKICAgICAgICBpZiAoIWxvY2FsZXNbbmFtZV0gJiYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSAmJgogICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBvbGRMb2NhbGUgPSBnbG9iYWxMb2NhbGUuX2FiYnI7CiAgICAgICAgICAgICAgICByZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7CiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGRlZmluZUxvY2FsZSBjdXJyZW50bHkgYWxzbyBzZXRzIHRoZSBnbG9iYWwgbG9jYWxlLCB3ZQogICAgICAgICAgICAgICAgLy8gd2FudCB0byB1bmRvIHRoYXQgZm9yIGxhenkgbG9hZGVkIGxvY2FsZXMKICAgICAgICAgICAgICAgIGxvY2FsZV9sb2NhbGVzX19nZXRTZXRHbG9iYWxMb2NhbGUob2xkTG9jYWxlKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdOwogICAgfQoKICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZgogICAgLy8gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4sIGl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgY3VycmVudCBnbG9iYWwKICAgIC8vIGxvY2FsZSBrZXkuCiAgICBmdW5jdGlvbiBsb2NhbGVfbG9jYWxlc19fZ2V0U2V0R2xvYmFsTG9jYWxlIChrZXksIHZhbHVlcykgewogICAgICAgIHZhciBkYXRhOwogICAgICAgIGlmIChrZXkpIHsKICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlcykpIHsKICAgICAgICAgICAgICAgIGRhdGEgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlKGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRhID0gZGVmaW5lTG9jYWxlKGtleSwgdmFsdWVzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhOwogICAgICAgICAgICAgICAgZ2xvYmFsTG9jYWxlID0gZGF0YTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjsKICAgIH0KCiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykgewogICAgICAgIGlmIChjb25maWcgIT09IG51bGwpIHsKICAgICAgICAgICAgdmFyIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7CiAgICAgICAgICAgIGNvbmZpZy5hYmJyID0gbmFtZTsKICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKCdkZWZpbmVMb2NhbGVPdmVycmlkZScsCiAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSAnICsKICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICsKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlICcgKwogICAgICAgICAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4nKTsKICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZzsKICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcucGFyZW50TG9jYWxlICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIHRyZWF0IGFzIGlmIHRoZXJlIGlzIG5vIGJhc2UgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgZGVwcmVjYXRlU2ltcGxlKCdwYXJlbnRMb2NhbGVVbmRlZmluZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBwYXJlbnRMb2NhbGUgaXMgbm90IGRlZmluZWQgeWV0LiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9wYXJlbnQtbG9jYWxlLycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpOwoKICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlCiAgICAgICAgICAgIGxvY2FsZV9sb2NhbGVzX19nZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7CgogICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyB1c2VmdWwgZm9yIHRlc3RpbmcKICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVMb2NhbGUobmFtZSwgY29uZmlnKSB7CiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CiAgICAgICAgICAgIHZhciBsb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7CiAgICAgICAgICAgIC8vIE1FUkdFCiAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25maWcgPSBtZXJnZUNvbmZpZ3MocGFyZW50Q29uZmlnLCBjb25maWcpOwogICAgICAgICAgICBsb2NhbGUgPSBuZXcgTG9jYWxlKGNvbmZpZyk7CiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdOwogICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlOwoKICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlCiAgICAgICAgICAgIGxvY2FsZV9sb2NhbGVzX19nZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gcGFzcyBudWxsIGZvciBjb25maWcgdG8gdW51cGRhdGUsIHVzZWZ1bCBmb3IgdGVzdHMKICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0ucGFyZW50TG9jYWxlICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBsb2NhbGVzW25hbWVdID0gbG9jYWxlc1tuYW1lXS5wYXJlbnRMb2NhbGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbGVzW25hbWVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdOwogICAgfQoKICAgIC8vIHJldHVybnMgbG9jYWxlIGRhdGEKICAgIGZ1bmN0aW9uIGxvY2FsZV9sb2NhbGVzX19nZXRMb2NhbGUgKGtleSkgewogICAgICAgIHZhciBsb2NhbGU7CgogICAgICAgIGlmIChrZXkgJiYga2V5Ll9sb2NhbGUgJiYga2V5Ll9sb2NhbGUuX2FiYnIpIHsKICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWtleSkgewogICAgICAgICAgICByZXR1cm4gZ2xvYmFsTG9jYWxlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc0FycmF5KGtleSkpIHsKICAgICAgICAgICAgLy9zaG9ydC1jaXJjdWl0IGV2ZXJ5dGhpbmcgZWxzZQogICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7CiAgICAgICAgICAgIGlmIChsb2NhbGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAga2V5ID0gW2tleV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gY2hvb3NlTG9jYWxlKGtleSk7CiAgICB9CgogICAgZnVuY3Rpb24gbG9jYWxlX2xvY2FsZXNfX2xpc3RMb2NhbGVzKCkgewogICAgICAgIHJldHVybiBrZXlzKGxvY2FsZXMpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3cgKG0pIHsKICAgICAgICB2YXIgb3ZlcmZsb3c7CiAgICAgICAgdmFyIGEgPSBtLl9hOwoKICAgICAgICBpZiAoYSAmJiBnZXRQYXJzaW5nRmxhZ3MobSkub3ZlcmZsb3cgPT09IC0yKSB7CiAgICAgICAgICAgIG92ZXJmbG93ID0KICAgICAgICAgICAgICAgIGFbTU9OVEhdICAgICAgIDwgMCB8fCBhW01PTlRIXSAgICAgICA+IDExICA/IE1PTlRIIDoKICAgICAgICAgICAgICAgIGFbREFURV0gICAgICAgIDwgMSB8fCBhW0RBVEVdICAgICAgICA+IGRheXNJbk1vbnRoKGFbWUVBUl0sIGFbTU9OVEhdKSA/IERBVEUgOgogICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDoKICAgICAgICAgICAgICAgIGFbTUlOVVRFXSAgICAgIDwgMCB8fCBhW01JTlVURV0gICAgICA+IDU5ICA/IE1JTlVURSA6CiAgICAgICAgICAgICAgICBhW1NFQ09ORF0gICAgICA8IDAgfHwgYVtTRUNPTkRdICAgICAgPiA1OSAgPyBTRUNPTkQgOgogICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOgogICAgICAgICAgICAgICAgLTE7CgogICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHsKICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gREFURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkgewogICAgICAgICAgICAgICAgb3ZlcmZsb3cgPSBXRUVLOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFS0RBWTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLm92ZXJmbG93ID0gb3ZlcmZsb3c7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbTsKICAgIH0KCiAgICAvLyBpc28gODYwMSByZWdleAogICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApCiAgICB2YXIgZXh0ZW5kZWRJc29SZWdleCA9IC9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPy87CiAgICB2YXIgYmFzaWNJc29SZWdleCA9IC9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkoPzpcZFxkXGRcZHxXXGRcZFxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86XGRcZCg/OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbXCtcLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8vOwoKICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxkXGQoPzo6P1xkXGQpPy87CgogICAgdmFyIGlzb0RhdGVzID0gWwogICAgICAgIFsnWVlZWVlZLU1NLUREJywgL1srLV1cZHs2fS1cZFxkLVxkXGQvXSwKICAgICAgICBbJ1lZWVktTU0tREQnLCAvXGR7NH0tXGRcZC1cZFxkL10sCiAgICAgICAgWydHR0dHLVtXXVdXLUUnLCAvXGR7NH0tV1xkXGQtXGQvXSwKICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXGR7NH0tV1xkXGQvLCBmYWxzZV0sCiAgICAgICAgWydZWVlZLURERCcsIC9cZHs0fS1cZHszfS9dLAogICAgICAgIFsnWVlZWS1NTScsIC9cZHs0fS1cZFxkLywgZmFsc2VdLAogICAgICAgIFsnWVlZWVlZTU1ERCcsIC9bKy1dXGR7MTB9L10sCiAgICAgICAgWydZWVlZTU1ERCcsIC9cZHs4fS9dLAogICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmQKICAgICAgICBbJ0dHR0dbV11XV0UnLCAvXGR7NH1XXGR7M30vXSwKICAgICAgICBbJ0dHR0dbV11XVycsIC9cZHs0fVdcZHsyfS8sIGZhbHNlXSwKICAgICAgICBbJ1lZWVlEREQnLCAvXGR7N30vXQogICAgXTsKCiAgICAvLyBpc28gdGltZSBmb3JtYXRzIGFuZCByZWdleGVzCiAgICB2YXIgaXNvVGltZXMgPSBbCiAgICAgICAgWydISDptbTpzcy5TU1NTJywgL1xkXGQ6XGRcZDpcZFxkXC5cZCsvXSwKICAgICAgICBbJ0hIOm1tOnNzLFNTU1MnLCAvXGRcZDpcZFxkOlxkXGQsXGQrL10sCiAgICAgICAgWydISDptbTpzcycsIC9cZFxkOlxkXGQ6XGRcZC9dLAogICAgICAgIFsnSEg6bW0nLCAvXGRcZDpcZFxkL10sCiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cZFxkXGRcZFxkXGRcLlxkKy9dLAogICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXGRcZFxkXGRcZFxkLFxkKy9dLAogICAgICAgIFsnSEhtbXNzJywgL1xkXGRcZFxkXGRcZC9dLAogICAgICAgIFsnSEhtbScsIC9cZFxkXGRcZC9dLAogICAgICAgIFsnSEgnLCAvXGRcZC9dCiAgICBdOwoKICAgIHZhciBhc3BOZXRKc29uUmVnZXggPSAvXlwvP0RhdGVcKChcLT9cZCspL2k7CgogICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXQKICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JU08oY29uZmlnKSB7CiAgICAgICAgdmFyIGksIGwsCiAgICAgICAgICAgIHN0cmluZyA9IGNvbmZpZy5faSwKICAgICAgICAgICAgbWF0Y2ggPSBleHRlbmRlZElzb1JlZ2V4LmV4ZWMoc3RyaW5nKSB8fCBiYXNpY0lzb1JlZ2V4LmV4ZWMoc3RyaW5nKSwKICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDsKCiAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7CgogICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvRGF0ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHsKICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ID0gaXNvRGF0ZXNbaV1bMF07CiAgICAgICAgICAgICAgICAgICAgYWxsb3dUaW1lID0gaXNvRGF0ZXNbaV1bMl0gIT09IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtYXRjaFszXSkgewogICAgICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb1RpbWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaFsyXSBzaG91bGQgYmUgJ1QnIG9yIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgPSAobWF0Y2hbMl0gfHwgJyAnKSArIGlzb1RpbWVzW2ldWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghYWxsb3dUaW1lICYmIHRpbWVGb3JtYXQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7CiAgICAgICAgICAgICAgICBpZiAodHpSZWdleC5leGVjKG1hdGNoWzRdKSkgewogICAgICAgICAgICAgICAgICAgIHR6Rm9ybWF0ID0gJ1onOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uZmlnLl9mID0gZGF0ZUZvcm1hdCArICh0aW1lRm9ybWF0IHx8ICcnKSArICh0ekZvcm1hdCB8fCAnJyk7CiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXQgb3IgZmFsbGJhY2sKICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7CiAgICAgICAgdmFyIG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhjb25maWcuX2kpOwoKICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkgewogICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTsKICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkgewogICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkOwogICAgICAgICAgICB1dGlsc19ob29rc19faG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTsKICAgICAgICB9CiAgICB9CgogICAgdXRpbHNfaG9va3NfX2hvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrID0gZGVwcmVjYXRlKAogICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIElTTyBmb3JtYXQuIG1vbWVudCBjb25zdHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksICcgKwogICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBJU08gZGF0ZSBmb3JtYXRzIGFyZSAnICsKICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArCiAgICAgICAgJ2h0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLAogICAgICAgIGZ1bmN0aW9uIChjb25maWcpIHsKICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTsKICAgICAgICB9CiAgICApOwoKICAgIC8vIFBpY2sgdGhlIGZpcnN0IGRlZmluZWQgb2YgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4KICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHsKICAgICAgICBpZiAoYSAhPSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBhOwogICAgICAgIH0KICAgICAgICBpZiAoYiAhPSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBiOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYzsKICAgIH0KCiAgICBmdW5jdGlvbiBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZykgewogICAgICAgIC8vIGhvb2tzIGlzIGFjdHVhbGx5IHRoZSBleHBvcnRlZCBtb21lbnQgb2JqZWN0CiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUodXRpbHNfaG9va3NfX2hvb2tzLm5vdygpKTsKICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHsKICAgICAgICAgICAgcmV0dXJuIFtub3dWYWx1ZS5nZXRVVENGdWxsWWVhcigpLCBub3dWYWx1ZS5nZXRVVENNb250aCgpLCBub3dWYWx1ZS5nZXRVVENEYXRlKCldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07CiAgICB9CgogICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuCiAgICAvLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0aGUgcGFyYW1ldGVycyBiZWxvdwogICAgLy8gbm90ZTogYWxsIHZhbHVlcyBwYXN0IHRoZSB5ZWFyIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBsb3dlc3QgcG9zc2libGUgdmFsdWUuCiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF0KICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21BcnJheSAoY29uZmlnKSB7CiAgICAgICAgdmFyIGksIGRhdGUsIGlucHV0ID0gW10sIGN1cnJlbnREYXRlLCB5ZWFyVG9Vc2U7CgogICAgICAgIGlmIChjb25maWcuX2QpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZUFycmF5KGNvbmZpZyk7CgogICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXMKICAgICAgICBpZiAoY29uZmlnLl93ICYmIGNvbmZpZy5fYVtEQVRFXSA9PSBudWxsICYmIGNvbmZpZy5fYVtNT05USF0gPT0gbnVsbCkgewogICAgICAgICAgICBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKTsKICAgICAgICB9CgogICAgICAgIC8vaWYgdGhlIGRheSBvZiB0aGUgeWVhciBpcyBzZXQsIGZpZ3VyZSBvdXQgd2hhdCBpdCBpcwogICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhcikgewogICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTsKCiAgICAgICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciA+IGRheXNJblllYXIoeWVhclRvVXNlKSkgewogICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7CiAgICAgICAgICAgIGNvbmZpZy5fYVtNT05USF0gPSBkYXRlLmdldFVUQ01vbnRoKCk7CiAgICAgICAgICAgIGNvbmZpZy5fYVtEQVRFXSA9IGRhdGUuZ2V0VVRDRGF0ZSgpOwogICAgICAgIH0KCiAgICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IGRhdGUuCiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheQogICAgICAgIC8vICogaWYgZGF5IG9mIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG1vbnRoIGFuZCB5ZWFyCiAgICAgICAgLy8gKiBpZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBvbmx5IHllYXIKICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmcKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMyAmJiBjb25maWcuX2FbaV0gPT0gbnVsbDsgKytpKSB7CiAgICAgICAgICAgIGNvbmZpZy5fYVtpXSA9IGlucHV0W2ldID0gY3VycmVudERhdGVbaV07CiAgICAgICAgfQoKICAgICAgICAvLyBaZXJvIG91dCB3aGF0ZXZlciB3YXMgbm90IGRlZmF1bHRlZCwgaW5jbHVkaW5nIHRpbWUKICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykgewogICAgICAgICAgICBjb25maWcuX2FbaV0gPSBpbnB1dFtpXSA9IChjb25maWcuX2FbaV0gPT0gbnVsbCkgPyAoaSA9PT0gMiA/IDEgOiAwKSA6IGNvbmZpZy5fYVtpXTsKICAgICAgICB9CgogICAgICAgIC8vIENoZWNrIGZvciAyNDowMDowMC4wMDAKICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdID09PSAyNCAmJgogICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiYKICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtTRUNPTkRdID09PSAwICYmCiAgICAgICAgICAgICAgICBjb25maWcuX2FbTUlMTElTRUNPTkRdID09PSAwKSB7CiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7CiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDA7CiAgICAgICAgfQoKICAgICAgICBjb25maWcuX2QgPSAoY29uZmlnLl91c2VVVEMgPyBjcmVhdGVVVENEYXRlIDogY3JlYXRlRGF0ZSkuYXBwbHkobnVsbCwgaW5wdXQpOwogICAgICAgIC8vIEFwcGx5IHRpbWV6b25lIG9mZnNldCBmcm9tIGlucHV0LiBUaGUgYWN0dWFsIHV0Y09mZnNldCBjYW4gYmUgY2hhbmdlZAogICAgICAgIC8vIHdpdGggcGFyc2Vab25lLgogICAgICAgIGlmIChjb25maWcuX3R6bSAhPSBudWxsKSB7CiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoY29uZmlnLl9uZXh0RGF5KSB7CiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0OwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkYXlPZlllYXJGcm9tV2Vla0luZm8oY29uZmlnKSB7CiAgICAgICAgdmFyIHcsIHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSwgdGVtcCwgd2Vla2RheU92ZXJmbG93OwoKICAgICAgICB3ID0gY29uZmlnLl93OwogICAgICAgIGlmICh3LkdHICE9IG51bGwgfHwgdy5XICE9IG51bGwgfHwgdy5FICE9IG51bGwpIHsKICAgICAgICAgICAgZG93ID0gMTsKICAgICAgICAgICAgZG95ID0gNDsKCiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvbgogICAgICAgICAgICAvLyBob3cgd2UgaW50ZXJwcmV0IG5vdyAobG9jYWwsIHV0YywgZml4ZWQgb2Zmc2V0KS4gU28gY3JlYXRlCiAgICAgICAgICAgIC8vIGEgbm93IHZlcnNpb24gb2YgY3VycmVudCBjb25maWcgKHRha2UgbG9jYWwvdXRjL29mZnNldCBmbGFncywgYW5kCiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLgogICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuR0csIGNvbmZpZy5fYVtZRUFSXSwgd2Vla09mWWVhcihsb2NhbF9fY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7CiAgICAgICAgICAgIHdlZWsgPSBkZWZhdWx0cyh3LlcsIDEpOwogICAgICAgICAgICB3ZWVrZGF5ID0gZGVmYXVsdHMody5FLCAxKTsKICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7CiAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG93ID0gY29uZmlnLl9sb2NhbGUuX3dlZWsuZG93OwogICAgICAgICAgICBkb3kgPSBjb25maWcuX2xvY2FsZS5fd2Vlay5kb3k7CgogICAgICAgICAgICB3ZWVrWWVhciA9IGRlZmF1bHRzKHcuZ2csIGNvbmZpZy5fYVtZRUFSXSwgd2Vla09mWWVhcihsb2NhbF9fY3JlYXRlTG9jYWwoKSwgZG93LCBkb3kpLnllYXIpOwogICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody53LCAxKTsKCiAgICAgICAgICAgIGlmICh3LmQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrCiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5kOwogICAgICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAwIHx8IHdlZWtkYXkgPiA2KSB7CiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICh3LmUgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbmluZyBvZiB3ZWVrCiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gdy5lICsgZG93OwogICAgICAgICAgICAgICAgaWYgKHcuZSA8IDAgfHwgdy5lID4gNikgewogICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2luaW5nIG9mIHdlZWsKICAgICAgICAgICAgICAgIHdlZWtkYXkgPSBkb3c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHdlZWsgPCAxIHx8IHdlZWsgPiB3ZWVrc0luWWVhcih3ZWVrWWVhciwgZG93LCBkb3kpKSB7CiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtzID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7CiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtkYXkgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTsKICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gdGVtcC55ZWFyOwogICAgICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRlbXAuZGF5T2ZZZWFyOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkCiAgICB1dGlsc19ob29rc19faG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTsKCiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBmb3JtYXQgc3RyaW5nCiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykgewogICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIGNyZWF0aW9uIGZsb3cgdG8gcHJldmVudCBjaXJjdWxhciBkZXBzCiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gdXRpbHNfaG9va3NfX2hvb2tzLklTT184NjAxKSB7CiAgICAgICAgICAgIGNvbmZpZ0Zyb21JU08oY29uZmlnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uZmlnLl9hID0gW107CiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuZW1wdHkgPSB0cnVlOwoKICAgICAgICAvLyBUaGlzIGFycmF5IGlzIHVzZWQgdG8gbWFrZSBhIERhdGUsIGVpdGhlciB3aXRoIGBuZXcgRGF0ZWAgb3IgYERhdGUuVVRDYAogICAgICAgIHZhciBzdHJpbmcgPSAnJyArIGNvbmZpZy5faSwKICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsCiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsCiAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggPSAwOwoKICAgICAgICB0b2tlbnMgPSBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSkubWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07CiAgICAgICAgICAgIHBhcnNlZElucHV0ID0gKHN0cmluZy5tYXRjaChnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpIHx8IFtdKVswXTsKICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LAogICAgICAgICAgICAvLyAgICAgICAgICdyZWdleCcsIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSk7CiAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkgewogICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTsKICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRJbnB1dC5wdXNoKHNraXBwZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoICs9IHBhcnNlZElucHV0Lmxlbmd0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuCiAgICAgICAgICAgIGlmIChmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0pIHsKICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkgewogICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlnLl9zdHJpY3QgJiYgIXBhcnNlZElucHV0KSB7CiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmcKICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5jaGFyc0xlZnRPdmVyID0gc3RyaW5nTGVuZ3RoIC0gdG90YWxQYXJzZWRJbnB1dExlbmd0aDsKICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChzdHJpbmcpOwogICAgICAgIH0KCiAgICAgICAgLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMgPD0gMTIKICAgICAgICBpZiAoY29uZmlnLl9hW0hPVVJdIDw9IDEyICYmCiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiYKICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID4gMCkgewogICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdW5kZWZpbmVkOwogICAgICAgIH0KCiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucGFyc2VkRGF0ZVBhcnRzID0gY29uZmlnLl9hLnNsaWNlKDApOwogICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTsKICAgICAgICAvLyBoYW5kbGUgbWVyaWRpZW0KICAgICAgICBjb25maWcuX2FbSE9VUl0gPSBtZXJpZGllbUZpeFdyYXAoY29uZmlnLl9sb2NhbGUsIGNvbmZpZy5fYVtIT1VSXSwgY29uZmlnLl9tZXJpZGllbSk7CgogICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpOwogICAgICAgIGNoZWNrT3ZlcmZsb3coY29uZmlnKTsKICAgIH0KCgogICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7CiAgICAgICAgdmFyIGlzUG07CgogICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7CiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8KICAgICAgICAgICAgcmV0dXJuIGhvdXI7CiAgICAgICAgfQogICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5tZXJpZGllbUhvdXIoaG91ciwgbWVyaWRpZW0pOwogICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkgewogICAgICAgICAgICAvLyBGYWxsYmFjawogICAgICAgICAgICBpc1BtID0gbG9jYWxlLmlzUE0obWVyaWRpZW0pOwogICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHsKICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7CiAgICAgICAgICAgICAgICBob3VyID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaG91cjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBzdXBwb3NlZCB0byBoYXBwZW4KICAgICAgICAgICAgcmV0dXJuIGhvdXI7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzCiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKSB7CiAgICAgICAgdmFyIHRlbXBDb25maWcsCiAgICAgICAgICAgIGJlc3RNb21lbnQsCgogICAgICAgICAgICBzY29yZVRvQmVhdCwKICAgICAgICAgICAgaSwKICAgICAgICAgICAgY3VycmVudFNjb3JlOwoKICAgICAgICBpZiAoY29uZmlnLl9mLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkRm9ybWF0ID0gdHJ1ZTsKICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5fZi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBjdXJyZW50U2NvcmUgPSAwOwogICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTsKICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRlbXBDb25maWcuX3VzZVVUQyA9IGNvbmZpZy5fdXNlVVRDOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07CiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQodGVtcENvbmZpZyk7CgogICAgICAgICAgICBpZiAoIXZhbGlkX19pc1ZhbGlkKHRlbXBDb25maWcpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYW55IGlucHV0IHRoYXQgd2FzIG5vdCBwYXJzZWQgYWRkIGEgcGVuYWx0eSBmb3IgdGhhdCBmb3JtYXQKICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS5jaGFyc0xlZnRPdmVyOwoKICAgICAgICAgICAgLy9vciB0b2tlbnMKICAgICAgICAgICAgY3VycmVudFNjb3JlICs9IGdldFBhcnNpbmdGbGFncyh0ZW1wQ29uZmlnKS51bnVzZWRUb2tlbnMubGVuZ3RoICogMTA7CgogICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuc2NvcmUgPSBjdXJyZW50U2NvcmU7CgogICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkgewogICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7CiAgICAgICAgICAgICAgICBiZXN0TW9tZW50ID0gdGVtcENvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykgewogICAgICAgIGlmIChjb25maWcuX2QpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGkgPSBub3JtYWxpemVPYmplY3RVbml0cyhjb25maWcuX2kpOwogICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikgewogICAgICAgICAgICByZXR1cm4gb2JqICYmIHBhcnNlSW50KG9iaiwgMTApOwogICAgICAgIH0pOwoKICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGcm9tQ29uZmlnIChjb25maWcpIHsKICAgICAgICB2YXIgcmVzID0gbmV3IE1vbWVudChjaGVja092ZXJmbG93KHByZXBhcmVDb25maWcoY29uZmlnKSkpOwogICAgICAgIGlmIChyZXMuX25leHREYXkpIHsKICAgICAgICAgICAgLy8gQWRkaW5nIGlzIHNtYXJ0IGVub3VnaCBhcm91bmQgRFNUCiAgICAgICAgICAgIHJlcy5hZGQoMSwgJ2QnKTsKICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHsKICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksCiAgICAgICAgICAgIGZvcm1hdCA9IGNvbmZpZy5fZjsKCiAgICAgICAgY29uZmlnLl9sb2NhbGUgPSBjb25maWcuX2xvY2FsZSB8fCBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlKGNvbmZpZy5fbCk7CgogICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCB8fCAoZm9ybWF0ID09PSB1bmRlZmluZWQgJiYgaW5wdXQgPT09ICcnKSkgewogICAgICAgICAgICByZXR1cm4gdmFsaWRfX2NyZWF0ZUludmFsaWQoe251bGxJbnB1dDogdHJ1ZX0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTsKICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZm9ybWF0KSkgewogICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTsKICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHsKICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7CiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHsKICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpOwogICAgICAgIH0gIGVsc2UgewogICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTsKICAgICAgICB9CgogICAgICAgIGlmICghdmFsaWRfX2lzVmFsaWQoY29uZmlnKSkgewogICAgICAgICAgICBjb25maWcuX2QgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvbmZpZzsKICAgIH0KCiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7CiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pOwogICAgICAgIGlmIChpbnB1dCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHV0aWxzX2hvb2tzX19ob29rcy5ub3coKSk7CiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7CiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKTsKICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7CiAgICAgICAgICAgIGNvbmZpZy5fYSA9IG1hcChpbnB1dC5zbGljZSgwKSwgZnVuY3Rpb24gKG9iaikgewogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KG9iaiwgMTApOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YoaW5wdXQpID09PSAnb2JqZWN0JykgewogICAgICAgICAgICBjb25maWdGcm9tT2JqZWN0KGNvbmZpZyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YoaW5wdXQpID09PSAnbnVtYmVyJykgewogICAgICAgICAgICAvLyBmcm9tIG1pbGxpc2Vjb25kcwogICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShpbnB1dCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsT3JVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBpc1VUQykgewogICAgICAgIHZhciBjID0ge307CgogICAgICAgIGlmICh0eXBlb2YobG9jYWxlKSA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTsKICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkOwogICAgICAgIH0KCiAgICAgICAgaWYgKChpc09iamVjdChpbnB1dCkgJiYgaXNPYmplY3RFbXB0eShpbnB1dCkpIHx8CiAgICAgICAgICAgICAgICAoaXNBcnJheShpbnB1dCkgJiYgaW5wdXQubGVuZ3RoID09PSAwKSkgewogICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDsKICAgICAgICB9CiAgICAgICAgLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiBtdXN0IGJlIGRvbmUgdGhpcyB3YXkuCiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjMKICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlOwogICAgICAgIGMuX3VzZVVUQyA9IGMuX2lzVVRDID0gaXNVVEM7CiAgICAgICAgYy5fbCA9IGxvY2FsZTsKICAgICAgICBjLl9pID0gaW5wdXQ7CiAgICAgICAgYy5fZiA9IGZvcm1hdDsKICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7CgogICAgICAgIHJldHVybiBjcmVhdGVGcm9tQ29uZmlnKGMpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvY2FsX19jcmVhdGVMb2NhbCAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHsKICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWxPclVUQyhpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgZmFsc2UpOwogICAgfQoKICAgIHZhciBwcm90b3R5cGVNaW4gPSBkZXByZWNhdGUoCiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJywKICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBvdGhlciA9IGxvY2FsX19jcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkX19jcmVhdGVJbnZhbGlkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICApOwoKICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoCiAgICAgICAgJ21vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJywKICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBvdGhlciA9IGxvY2FsX19jcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPiB0aGlzID8gdGhpcyA6IG90aGVyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkX19jcmVhdGVJbnZhbGlkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICApOwoKICAgIC8vIFBpY2sgYSBtb21lbnQgbSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBmb3IgYWxsCiAgICAvLyBvdGhlci4gVGhpcyByZWxpZXMgb24gdGhlIGZ1bmN0aW9uIGZuIHRvIGJlIHRyYW5zaXRpdmUuCiAgICAvLwogICAgLy8gbW9tZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzIG9yIGFuIGFycmF5LCB3aG9zZQogICAgLy8gZmlyc3QgZWxlbWVudCBpcyBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cy4KICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykgewogICAgICAgIHZhciByZXMsIGk7CiAgICAgICAgaWYgKG1vbWVudHMubGVuZ3RoID09PSAxICYmIGlzQXJyYXkobW9tZW50c1swXSkpIHsKICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07CiAgICAgICAgfQogICAgICAgIGlmICghbW9tZW50cy5sZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuIGxvY2FsX19jcmVhdGVMb2NhbCgpOwogICAgICAgIH0KICAgICAgICByZXMgPSBtb21lbnRzWzBdOwogICAgICAgIGZvciAoaSA9IDE7IGkgPCBtb21lbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkgewogICAgICAgICAgICAgICAgcmVzID0gbW9tZW50c1tpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzOwogICAgfQoKICAgIC8vIFRPRE86IFVzZSBbXS5zb3J0IGluc3RlYWQ/CiAgICBmdW5jdGlvbiBtaW4gKCkgewogICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOwoKICAgICAgICByZXR1cm4gcGlja0J5KCdpc0JlZm9yZScsIGFyZ3MpOwogICAgfQoKICAgIGZ1bmN0aW9uIG1heCAoKSB7CiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7CgogICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQWZ0ZXInLCBhcmdzKTsKICAgIH0KCiAgICB2YXIgbm93ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpOwogICAgfTsKCiAgICBmdW5jdGlvbiBEdXJhdGlvbiAoZHVyYXRpb24pIHsKICAgICAgICB2YXIgbm9ybWFsaXplZElucHV0ID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoZHVyYXRpb24pLAogICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsCiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCwKICAgICAgICAgICAgbW9udGhzID0gbm9ybWFsaXplZElucHV0Lm1vbnRoIHx8IDAsCiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgMCwKICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCwKICAgICAgICAgICAgaG91cnMgPSBub3JtYWxpemVkSW5wdXQuaG91ciB8fCAwLAogICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLAogICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLAogICAgICAgICAgICBtaWxsaXNlY29uZHMgPSBub3JtYWxpemVkSW5wdXQubWlsbGlzZWNvbmQgfHwgMDsKCiAgICAgICAgLy8gcmVwcmVzZW50YXRpb24gZm9yIGRhdGVBZGRSZW1vdmUKICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICsKICAgICAgICAgICAgc2Vjb25kcyAqIDFlMyArIC8vIDEwMDAKICAgICAgICAgICAgbWludXRlcyAqIDZlNCArIC8vIDEwMDAgKiA2MAogICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzgKICAgICAgICAvLyBCZWNhdXNlIG9mIGRhdGVBZGRSZW1vdmUgdHJlYXRzIDI0IGhvdXJzIGFzIGRpZmZlcmVudCBmcm9tIGEKICAgICAgICAvLyBkYXkgd2hlbiB3b3JraW5nIGFyb3VuZCBEU1QsIHdlIG5lZWQgdG8gc3RvcmUgdGhlbSBzZXBhcmF0ZWx5CiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICsKICAgICAgICAgICAgd2Vla3MgKiA3OwogICAgICAgIC8vIEl0IGlzIGltcG9zc2libGUgdHJhbnNsYXRlIG1vbnRocyBpbnRvIGRheXMgd2l0aG91dCBrbm93aW5nCiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmUKICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LgogICAgICAgIHRoaXMuX21vbnRocyA9ICttb250aHMgKwogICAgICAgICAgICBxdWFydGVycyAqIDMgKwogICAgICAgICAgICB5ZWFycyAqIDEyOwoKICAgICAgICB0aGlzLl9kYXRhID0ge307CgogICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZV9sb2NhbGVzX19nZXRMb2NhbGUoKTsKCiAgICAgICAgdGhpcy5fYnViYmxlKCk7CiAgICB9CgogICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7CiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uOwogICAgfQoKICAgIGZ1bmN0aW9uIGFic1JvdW5kIChudW1iZXIpIHsKICAgICAgICBpZiAobnVtYmVyIDwgMCkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBGT1JNQVRUSU5HCgogICAgZnVuY3Rpb24gb2Zmc2V0ICh0b2tlbiwgc2VwYXJhdG9yKSB7CiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMudXRjT2Zmc2V0KCk7CiAgICAgICAgICAgIHZhciBzaWduID0gJysnOwogICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkgewogICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKICAgICAgICAgICAgICAgIHNpZ24gPSAnLSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyB6ZXJvRmlsbCh+fihvZmZzZXQgLyA2MCksIDIpICsgc2VwYXJhdG9yICsgemVyb0ZpbGwofn4ob2Zmc2V0KSAlIDYwLCAyKTsKICAgICAgICB9KTsKICAgIH0KCiAgICBvZmZzZXQoJ1onLCAnOicpOwogICAgb2Zmc2V0KCdaWicsICcnKTsKCiAgICAvLyBQQVJTSU5HCgogICAgYWRkUmVnZXhUb2tlbignWicsICBtYXRjaFNob3J0T2Zmc2V0KTsKICAgIGFkZFJlZ2V4VG9rZW4oJ1paJywgbWF0Y2hTaG9ydE9mZnNldCk7CiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHsKICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7CiAgICAgICAgY29uZmlnLl90em0gPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTsKICAgIH0pOwoKICAgIC8vIEhFTFBFUlMKCiAgICAvLyB0aW1lem9uZSBjaHVua2VyCiAgICAvLyAnKzEwOjAwJyA+IFsnMTAnLCAgJzAwJ10KICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXQogICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXCtcLV18XGRcZCkvZ2k7CgogICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHsKICAgICAgICB2YXIgbWF0Y2hlcyA9ICgoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKSB8fCBbXSk7CiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107CiAgICAgICAgdmFyIHBhcnRzICAgPSAoY2h1bmsgKyAnJykubWF0Y2goY2h1bmtPZmZzZXQpIHx8IFsnLScsIDAsIDBdOwogICAgICAgIHZhciBtaW51dGVzID0gKyhwYXJ0c1sxXSAqIDYwKSArIHRvSW50KHBhcnRzWzJdKTsKCiAgICAgICAgcmV0dXJuIHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7CiAgICB9CgogICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC4KICAgIGZ1bmN0aW9uIGNsb25lV2l0aE9mZnNldChpbnB1dCwgbW9kZWwpIHsKICAgICAgICB2YXIgcmVzLCBkaWZmOwogICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHsKICAgICAgICAgICAgcmVzID0gbW9kZWwuY2xvbmUoKTsKICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGxvY2FsX19jcmVhdGVMb2NhbChpbnB1dCkudmFsdWVPZigpKSAtIHJlcy52YWx1ZU9mKCk7CiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS4KICAgICAgICAgICAgcmVzLl9kLnNldFRpbWUocmVzLl9kLnZhbHVlT2YoKSArIGRpZmYpOwogICAgICAgICAgICB1dGlsc19ob29rc19faG9va3MudXBkYXRlT2Zmc2V0KHJlcywgZmFsc2UpOwogICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBsb2NhbF9fY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGdldERhdGVPZmZzZXQgKG0pIHsKICAgICAgICAvLyBPbiBGaXJlZm94LjI0IERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyBhIGZsb2F0aW5nIHBvaW50LgogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MQogICAgICAgIHJldHVybiAtTWF0aC5yb3VuZChtLl9kLmdldFRpbWV6b25lT2Zmc2V0KCkgLyAxNSkgKiAxNTsKICAgIH0KCiAgICAvLyBIT09LUwoKICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC4KICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLgogICAgdXRpbHNfaG9va3NfX2hvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9OwoKICAgIC8vIE1PTUVOVFMKCiAgICAvLyBrZWVwTG9jYWxUaW1lID0gdHJ1ZSBtZWFucyBvbmx5IGNoYW5nZSB0aGUgdGltZXpvbmUsIHdpdGhvdXQKICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+CiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0CiAgICAvLyArMDIwMCwgc28gd2UgYWRqdXN0IHRoZSB0aW1lIGFzIG5lZWRlZCwgdG8gYmUgdmFsaWQuCiAgICAvLwogICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpCiAgICAvLyBmcm9tIHRoZSBhY3R1YWwgcmVwcmVzZW50ZWQgdGltZS4gVGhhdCBpcyB3aHkgd2UgY2FsbCB1cGRhdGVPZmZzZXQKICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW4KICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZQogICAgLy8gdGhlcmUgaXMgbm8gc3VjaCB0aW1lIGluIHRoZSBnaXZlbiB0aW1lem9uZS4KICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUpIHsKICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5fb2Zmc2V0IHx8IDAsCiAgICAgICAgICAgIGxvY2FsQWRqdXN0OwogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOOwogICAgICAgIH0KICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkgewogICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTsKICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNikgewogICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCAqIDYwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghdGhpcy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkgewogICAgICAgICAgICAgICAgbG9jYWxBZGp1c3QgPSBnZXREYXRlT2Zmc2V0KHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX29mZnNldCA9IGlucHV0OwogICAgICAgICAgICB0aGlzLl9pc1VUQyA9IHRydWU7CiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLmFkZChsb2NhbEFkanVzdCwgJ20nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkgewogICAgICAgICAgICAgICAgaWYgKCFrZWVwTG9jYWxUaW1lIHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICAgICBhZGRfc3VidHJhY3RfX2FkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZV9fY3JlYXRlRHVyYXRpb24oaW5wdXQgLSBvZmZzZXQsICdtJyksIDEsIGZhbHNlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB1dGlsc19ob29rc19faG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGdldFNldFpvbmUgKGlucHV0LCBrZWVwTG9jYWxUaW1lKSB7CiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gLWlucHV0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLnV0Y09mZnNldChpbnB1dCwga2VlcExvY2FsVGltZSk7CgogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gLXRoaXMudXRjT2Zmc2V0KCk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwgKGtlZXBMb2NhbFRpbWUpIHsKICAgICAgICBpZiAodGhpcy5faXNVVEMpIHsKICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7CiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkgewogICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdChnZXREYXRlT2Zmc2V0KHRoaXMpLCAnbScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0ICgpIHsKICAgICAgICBpZiAodGhpcy5fdHptKSB7CiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5faSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgdmFyIHRab25lID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaE9mZnNldCwgdGhpcy5faSk7CgogICAgICAgICAgICBpZiAodFpvbmUgPT09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KDAsIHRydWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQob2Zmc2V0RnJvbVN0cmluZyhtYXRjaE9mZnNldCwgdGhpcy5faSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGZ1bmN0aW9uIGhhc0FsaWduZWRIb3VyT2Zmc2V0IChpbnB1dCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpbnB1dCA9IGlucHV0ID8gbG9jYWxfX2NyZWF0ZUxvY2FsKGlucHV0KS51dGNPZmZzZXQoKSA6IDA7CgogICAgICAgIHJldHVybiAodGhpcy51dGNPZmZzZXQoKSAtIGlucHV0KSAlIDYwID09PSAwOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lICgpIHsKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8CiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KCkKICAgICAgICApOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCAoKSB7CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7CiAgICAgICAgfQoKICAgICAgICB2YXIgYyA9IHt9OwoKICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpOwogICAgICAgIGMgPSBwcmVwYXJlQ29uZmlnKGMpOwoKICAgICAgICBpZiAoYy5fYSkgewogICAgICAgICAgICB2YXIgb3RoZXIgPSBjLl9pc1VUQyA/IGNyZWF0ZV91dGNfX2NyZWF0ZVVUQyhjLl9hKSA6IGxvY2FsX19jcmVhdGVMb2NhbChjLl9hKTsKICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gdGhpcy5pc1ZhbGlkKCkgJiYKICAgICAgICAgICAgICAgIGNvbXBhcmVBcnJheXMoYy5fYSwgb3RoZXIudG9BcnJheSgpKSA+IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzTG9jYWwgKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/ICF0aGlzLl9pc1VUQyA6IGZhbHNlOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzVXRjT2Zmc2V0ICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzVXRjICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyAmJiB0aGlzLl9vZmZzZXQgPT09IDAgOiBmYWxzZTsKICAgIH0KCiAgICAvLyBBU1AuTkVUIGpzb24gZGF0ZSBmb3JtYXQgcmVnZXgKICAgIHZhciBhc3BOZXRSZWdleCA9IC9eKFwtKT8oPzooXGQqKVsuIF0pPyhcZCspXDooXGQrKSg/Olw6KFxkKykoXC5cZCopPyk/JC87CgogICAgLy8gZnJvbSBodHRwOi8vZG9jcy5jbG9zdXJlLWxpYnJhcnkuZ29vZ2xlY29kZS5jb20vZ2l0L2Nsb3N1cmVfZ29vZ19kYXRlX2RhdGUuanMuc291cmNlLmh0bWwKICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmUKICAgIC8vIGFuZCBmdXJ0aGVyIG1vZGlmaWVkIHRvIGFsbG93IGZvciBzdHJpbmdzIGNvbnRhaW5pbmcgYm90aCB3ZWVrIGFuZCBkYXkKICAgIHZhciBpc29SZWdleCA9IC9eKC0pP1AoPzooLT9bMC05LC5dKilZKT8oPzooLT9bMC05LC5dKilNKT8oPzooLT9bMC05LC5dKilXKT8oPzooLT9bMC05LC5dKilEKT8oPzpUKD86KC0/WzAtOSwuXSopSCk/KD86KC0/WzAtOSwuXSopTSk/KD86KC0/WzAtOSwuXSopUyk/KT8kLzsKCiAgICBmdW5jdGlvbiBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7CiAgICAgICAgdmFyIGR1cmF0aW9uID0gaW5wdXQsCiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGFnYWluc3QgcmVnZXhwIGlzIGV4cGVuc2l2ZSwgZG8gaXQgb24gZGVtYW5kCiAgICAgICAgICAgIG1hdGNoID0gbnVsbCwKICAgICAgICAgICAgc2lnbiwKICAgICAgICAgICAgcmV0LAogICAgICAgICAgICBkaWZmUmVzOwoKICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkpIHsKICAgICAgICAgICAgZHVyYXRpb24gPSB7CiAgICAgICAgICAgICAgICBtcyA6IGlucHV0Ll9taWxsaXNlY29uZHMsCiAgICAgICAgICAgICAgICBkICA6IGlucHV0Ll9kYXlzLAogICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzCiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7CiAgICAgICAgICAgIGR1cmF0aW9uID0ge307CiAgICAgICAgICAgIGlmIChrZXkpIHsKICAgICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSBpbnB1dDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICghIShtYXRjaCA9IGFzcE5ldFJlZ2V4LmV4ZWMoaW5wdXQpKSkgewogICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxOwogICAgICAgICAgICBkdXJhdGlvbiA9IHsKICAgICAgICAgICAgICAgIHkgIDogMCwKICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbiwKICAgICAgICAgICAgICAgIGggIDogdG9JbnQobWF0Y2hbSE9VUl0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbiwKICAgICAgICAgICAgICAgIG0gIDogdG9JbnQobWF0Y2hbTUlOVVRFXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbiwKICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbiwKICAgICAgICAgICAgICAgIG1zIDogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICogMTAwMCkpICogc2lnbiAvLyB0aGUgbWlsbGlzZWNvbmQgZGVjaW1hbCBwb2ludCBpcyBpbmNsdWRlZCBpbiB0aGUgbWF0Y2gKICAgICAgICAgICAgfTsKICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7CiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7CiAgICAgICAgICAgIGR1cmF0aW9uID0gewogICAgICAgICAgICAgICAgeSA6IHBhcnNlSXNvKG1hdGNoWzJdLCBzaWduKSwKICAgICAgICAgICAgICAgIE0gOiBwYXJzZUlzbyhtYXRjaFszXSwgc2lnbiksCiAgICAgICAgICAgICAgICB3IDogcGFyc2VJc28obWF0Y2hbNF0sIHNpZ24pLAogICAgICAgICAgICAgICAgZCA6IHBhcnNlSXNvKG1hdGNoWzVdLCBzaWduKSwKICAgICAgICAgICAgICAgIGggOiBwYXJzZUlzbyhtYXRjaFs2XSwgc2lnbiksCiAgICAgICAgICAgICAgICBtIDogcGFyc2VJc28obWF0Y2hbN10sIHNpZ24pLAogICAgICAgICAgICAgICAgcyA6IHBhcnNlSXNvKG1hdGNoWzhdLCBzaWduKQogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT0gbnVsbCkgey8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQKICAgICAgICAgICAgZHVyYXRpb24gPSB7fTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbiA9PT0gJ29iamVjdCcgJiYgKCdmcm9tJyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKSkgewogICAgICAgICAgICBkaWZmUmVzID0gbW9tZW50c0RpZmZlcmVuY2UobG9jYWxfX2NyZWF0ZUxvY2FsKGR1cmF0aW9uLmZyb20pLCBsb2NhbF9fY3JlYXRlTG9jYWwoZHVyYXRpb24udG8pKTsKCiAgICAgICAgICAgIGR1cmF0aW9uID0ge307CiAgICAgICAgICAgIGR1cmF0aW9uLm1zID0gZGlmZlJlcy5taWxsaXNlY29uZHM7CiAgICAgICAgICAgIGR1cmF0aW9uLk0gPSBkaWZmUmVzLm1vbnRoczsKICAgICAgICB9CgogICAgICAgIHJldCA9IG5ldyBEdXJhdGlvbihkdXJhdGlvbik7CgogICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSAmJiBoYXNPd25Qcm9wKGlucHV0LCAnX2xvY2FsZScpKSB7CiAgICAgICAgICAgIHJldC5fbG9jYWxlID0gaW5wdXQuX2xvY2FsZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXQ7CiAgICB9CgogICAgY3JlYXRlX19jcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTsKCiAgICBmdW5jdGlvbiBwYXJzZUlzbyAoaW5wLCBzaWduKSB7CiAgICAgICAgLy8gV2UnZCBub3JtYWxseSB1c2Ugfn5pbnAgZm9yIHRoaXMsIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0IGFsc28KICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy4KICAgICAgICAvLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuCiAgICAgICAgdmFyIHJlcyA9IGlucCAmJiBwYXJzZUZsb2F0KGlucC5yZXBsYWNlKCcsJywgJy4nKSk7CiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdAogICAgICAgIHJldHVybiAoaXNOYU4ocmVzKSA/IDAgOiByZXMpICogc2lnbjsKICAgIH0KCiAgICBmdW5jdGlvbiBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7CiAgICAgICAgdmFyIHJlcyA9IHttaWxsaXNlY29uZHM6IDAsIG1vbnRoczogMH07CgogICAgICAgIHJlcy5tb250aHMgPSBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICsKICAgICAgICAgICAgKG90aGVyLnllYXIoKSAtIGJhc2UueWVhcigpKSAqIDEyOwogICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHsKICAgICAgICAgICAgLS1yZXMubW9udGhzOwogICAgICAgIH0KCiAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9ICtvdGhlciAtICsoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpKTsKCiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikgewogICAgICAgIHZhciByZXM7CiAgICAgICAgaWYgKCEoYmFzZS5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSkgewogICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTsKICAgICAgICB9CgogICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTsKICAgICAgICBpZiAoYmFzZS5pc0JlZm9yZShvdGhlcikpIHsKICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShvdGhlciwgYmFzZSk7CiAgICAgICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSAtcmVzLm1pbGxpc2Vjb25kczsKICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkCiAgICBmdW5jdGlvbiBjcmVhdGVBZGRlcihkaXJlY3Rpb24sIG5hbWUpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbCwgcGVyaW9kKSB7CiAgICAgICAgICAgIHZhciBkdXIsIHRtcDsKICAgICAgICAgICAgLy9pbnZlcnQgdGhlIGFyZ3VtZW50cywgYnV0IGNvbXBsYWluIGFib3V0IGl0CiAgICAgICAgICAgIGlmIChwZXJpb2QgIT09IG51bGwgJiYgIWlzTmFOKCtwZXJpb2QpKSB7CiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArCiAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLicpOwogICAgICAgICAgICAgICAgdG1wID0gdmFsOyB2YWwgPSBwZXJpb2Q7IHBlcmlvZCA9IHRtcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyArdmFsIDogdmFsOwogICAgICAgICAgICBkdXIgPSBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uKHZhbCwgcGVyaW9kKTsKICAgICAgICAgICAgYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7CiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkgewogICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzLAogICAgICAgICAgICBkYXlzID0gYWJzUm91bmQoZHVyYXRpb24uX2RheXMpLAogICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTsKCiAgICAgICAgaWYgKCFtb20uaXNWYWxpZCgpKSB7CiAgICAgICAgICAgIC8vIE5vIG9wCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHVwZGF0ZU9mZnNldCA9IHVwZGF0ZU9mZnNldCA9PSBudWxsID8gdHJ1ZSA6IHVwZGF0ZU9mZnNldDsKCiAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykgewogICAgICAgICAgICBtb20uX2Quc2V0VGltZShtb20uX2QudmFsdWVPZigpICsgbWlsbGlzZWNvbmRzICogaXNBZGRpbmcpOwogICAgICAgIH0KICAgICAgICBpZiAoZGF5cykgewogICAgICAgICAgICBnZXRfc2V0X19zZXQobW9tLCAnRGF0ZScsIGdldF9zZXRfX2dldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpOwogICAgICAgIH0KICAgICAgICBpZiAobW9udGhzKSB7CiAgICAgICAgICAgIHNldE1vbnRoKG1vbSwgZ2V0X3NldF9fZ2V0KG1vbSwgJ01vbnRoJykgKyBtb250aHMgKiBpc0FkZGluZyk7CiAgICAgICAgfQogICAgICAgIGlmICh1cGRhdGVPZmZzZXQpIHsKICAgICAgICAgICAgdXRpbHNfaG9va3NfX2hvb2tzLnVwZGF0ZU9mZnNldChtb20sIGRheXMgfHwgbW9udGhzKTsKICAgICAgICB9CiAgICB9CgogICAgdmFyIGFkZF9zdWJ0cmFjdF9fYWRkICAgICAgPSBjcmVhdGVBZGRlcigxLCAnYWRkJyk7CiAgICB2YXIgYWRkX3N1YnRyYWN0X19zdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTsKCiAgICBmdW5jdGlvbiBnZXRDYWxlbmRhckZvcm1hdChteU1vbWVudCwgbm93KSB7CiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTsKICAgICAgICByZXR1cm4gZGlmZiA8IC02ID8gJ3NhbWVFbHNlJyA6CiAgICAgICAgICAgICAgICBkaWZmIDwgLTEgPyAnbGFzdFdlZWsnIDoKICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDoKICAgICAgICAgICAgICAgIGRpZmYgPCAxID8gJ3NhbWVEYXknIDoKICAgICAgICAgICAgICAgIGRpZmYgPCAyID8gJ25leHREYXknIDoKICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7CiAgICB9CgogICAgZnVuY3Rpb24gbW9tZW50X2NhbGVuZGFyX19jYWxlbmRhciAodGltZSwgZm9ybWF0cykgewogICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuCiAgICAgICAgLy8gR2V0dGluZyBzdGFydC1vZi10b2RheSBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUgbG9jYWwvdXRjL29mZnNldCBvciBub3QuCiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgbG9jYWxfX2NyZWF0ZUxvY2FsKCksCiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLAogICAgICAgICAgICBmb3JtYXQgPSB1dGlsc19ob29rc19faG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnOwoKICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0cyAmJiAoaXNGdW5jdGlvbihmb3JtYXRzW2Zvcm1hdF0pID8gZm9ybWF0c1tmb3JtYXRdLmNhbGwodGhpcywgbm93KSA6IGZvcm1hdHNbZm9ybWF0XSk7CgogICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBsb2NhbF9fY3JlYXRlTG9jYWwobm93KSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsb25lICgpIHsKICAgICAgICByZXR1cm4gbmV3IE1vbWVudCh0aGlzKTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0FmdGVyIChpbnB1dCwgdW5pdHMpIHsKICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogbG9jYWxfX2NyZWF0ZUxvY2FsKGlucHV0KTsKICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpOwogICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykgewogICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPiBsb2NhbElucHV0LnZhbHVlT2YoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpc0JlZm9yZSAoaW5wdXQsIHVuaXRzKSB7CiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGxvY2FsX19jcmVhdGVMb2NhbChpbnB1dCk7CiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyghaXNVbmRlZmluZWQodW5pdHMpID8gdW5pdHMgOiAnbWlsbGlzZWNvbmQnKTsKICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGlzQmV0d2VlbiAoZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkgewogICAgICAgIGluY2x1c2l2aXR5ID0gaW5jbHVzaXZpdHkgfHwgJygpJzsKICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIoZnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUoZnJvbSwgdW5pdHMpKSAmJgogICAgICAgICAgICAoaW5jbHVzaXZpdHlbMV0gPT09ICcpJyA/IHRoaXMuaXNCZWZvcmUodG8sIHVuaXRzKSA6ICF0aGlzLmlzQWZ0ZXIodG8sIHVuaXRzKSk7CiAgICB9CgogICAgZnVuY3Rpb24gaXNTYW1lIChpbnB1dCwgdW5pdHMpIHsKICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogbG9jYWxfX2NyZWF0ZUxvY2FsKGlucHV0KSwKICAgICAgICAgICAgaW5wdXRNczsKICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpOwogICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykgewogICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPT09IGxvY2FsSW5wdXQudmFsdWVPZigpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlucHV0TXMgPSBsb2NhbElucHV0LnZhbHVlT2YoKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCkgPD0gaW5wdXRNcyAmJiBpbnB1dE1zIDw9IHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQWZ0ZXIoaW5wdXQsdW5pdHMpOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzU2FtZU9yQmVmb3JlIChpbnB1dCwgdW5pdHMpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQmVmb3JlKGlucHV0LHVuaXRzKTsKICAgIH0KCiAgICBmdW5jdGlvbiBkaWZmIChpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHsKICAgICAgICB2YXIgdGhhdCwKICAgICAgICAgICAgem9uZURlbHRhLAogICAgICAgICAgICBkZWx0YSwgb3V0cHV0OwoKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgIHJldHVybiBOYU47CiAgICAgICAgfQoKICAgICAgICB0aGF0ID0gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCB0aGlzKTsKCiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkgewogICAgICAgICAgICByZXR1cm4gTmFOOwogICAgICAgIH0KCiAgICAgICAgem9uZURlbHRhID0gKHRoYXQudXRjT2Zmc2V0KCkgLSB0aGlzLnV0Y09mZnNldCgpKSAqIDZlNDsKCiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7CgogICAgICAgIGlmICh1bml0cyA9PT0gJ3llYXInIHx8IHVuaXRzID09PSAnbW9udGgnIHx8IHVuaXRzID09PSAncXVhcnRlcicpIHsKICAgICAgICAgICAgb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpOwogICAgICAgICAgICBpZiAodW5pdHMgPT09ICdxdWFydGVyJykgewogICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0IC8gMzsKICAgICAgICAgICAgfSBlbHNlIGlmICh1bml0cyA9PT0gJ3llYXInKSB7CiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgLyAxMjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRlbHRhID0gdGhpcyAtIHRoYXQ7CiAgICAgICAgICAgIG91dHB1dCA9IHVuaXRzID09PSAnc2Vjb25kJyA/IGRlbHRhIC8gMWUzIDogLy8gMTAwMAogICAgICAgICAgICAgICAgdW5pdHMgPT09ICdtaW51dGUnID8gZGVsdGEgLyA2ZTQgOiAvLyAxMDAwICogNjAKICAgICAgICAgICAgICAgIHVuaXRzID09PSAnaG91cicgPyBkZWx0YSAvIDM2ZTUgOiAvLyAxMDAwICogNjAgKiA2MAogICAgICAgICAgICAgICAgdW5pdHMgPT09ICdkYXknID8gKGRlbHRhIC0gem9uZURlbHRhKSAvIDg2NGU1IDogLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdAogICAgICAgICAgICAgICAgdW5pdHMgPT09ICd3ZWVrJyA/IChkZWx0YSAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTUgOiAvLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdAogICAgICAgICAgICAgICAgZGVsdGE7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhc0Zsb2F0ID8gb3V0cHV0IDogYWJzRmxvb3Iob3V0cHV0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBtb250aERpZmYgKGEsIGIpIHsKICAgICAgICAvLyBkaWZmZXJlbmNlIGluIG1vbnRocwogICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9ICgoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMikgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSwKICAgICAgICAgICAgLy8gYiBpcyBpbiAoYW5jaG9yIC0gMSBtb250aCwgYW5jaG9yICsgMSBtb250aCkKICAgICAgICAgICAgYW5jaG9yID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiwgJ21vbnRocycpLAogICAgICAgICAgICBhbmNob3IyLCBhZGp1c3Q7CgogICAgICAgIGlmIChiIC0gYW5jaG9yIDwgMCkgewogICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTsKICAgICAgICAgICAgLy8gbGluZWFyIGFjcm9zcyB0aGUgbW9udGgKICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvciAtIGFuY2hvcjIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFuY2hvcjIgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmICsgMSwgJ21vbnRocycpOwogICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aAogICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7CiAgICAgICAgfQoKICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvCiAgICAgICAgcmV0dXJuIC0od2hvbGVNb250aERpZmYgKyBhZGp1c3QpIHx8IDA7CiAgICB9CgogICAgdXRpbHNfaG9va3NfX2hvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7CgogICAgZnVuY3Rpb24gdG9TdHJpbmcgKCkgewogICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCdlbicpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTsKICAgIH0KCiAgICBmdW5jdGlvbiBtb21lbnRfZm9ybWF0X190b0lTT1N0cmluZyAoKSB7CiAgICAgICAgdmFyIG0gPSB0aGlzLmNsb25lKCkudXRjKCk7CiAgICAgICAgaWYgKDAgPCBtLnllYXIoKSAmJiBtLnllYXIoKSA8PSA5OTk5KSB7CiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkgewogICAgICAgICAgICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW4KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZm9ybWF0IChpbnB1dFN0cmluZykgewogICAgICAgIGlmICghaW5wdXRTdHJpbmcpIHsKICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKCkgPyB1dGlsc19ob29rc19faG9va3MuZGVmYXVsdEZvcm1hdFV0YyA6IHV0aWxzX2hvb2tzX19ob29rcy5kZWZhdWx0Rm9ybWF0OwogICAgICAgIH0KICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0TW9tZW50KHRoaXMsIGlucHV0U3RyaW5nKTsKICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChvdXRwdXQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGZyb20gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHsKICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYKICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8CiAgICAgICAgICAgICAgICAgbG9jYWxfX2NyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHsKICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV9fY3JlYXRlRHVyYXRpb24oe3RvOiB0aGlzLCBmcm9tOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZnJvbU5vdyAod2l0aG91dFN1ZmZpeCkgewogICAgICAgIHJldHVybiB0aGlzLmZyb20obG9jYWxfX2NyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvICh0aW1lLCB3aXRob3V0U3VmZml4KSB7CiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmCiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fAogICAgICAgICAgICAgICAgIGxvY2FsX19jcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBjcmVhdGVfX2NyZWF0ZUR1cmF0aW9uKHtmcm9tOiB0aGlzLCB0bzogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHRvTm93ICh3aXRob3V0U3VmZml4KSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG8obG9jYWxfX2NyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpOwogICAgfQoKICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXMKICAgIC8vIGluc3RhbmNlLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiB0aGUgbG9jYWxlIGNvbmZpZ3VyYXRpb24KICAgIC8vIHZhcmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS4KICAgIGZ1bmN0aW9uIGxvY2FsZSAoa2V5KSB7CiAgICAgICAgdmFyIG5ld0xvY2FsZURhdGE7CgogICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlLl9hYmJyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlKGtleSk7CiAgICAgICAgICAgIGlmIChuZXdMb2NhbGVEYXRhICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZSA9IG5ld0xvY2FsZURhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfQogICAgfQoKICAgIHZhciBsYW5nID0gZGVwcmVjYXRlKAogICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsCiAgICAgICAgZnVuY3Rpb24gKGtleSkgewogICAgICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZShrZXkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgKTsKCiAgICBmdW5jdGlvbiBsb2NhbGVEYXRhICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlOwogICAgfQoKICAgIGZ1bmN0aW9uIHN0YXJ0T2YgKHVuaXRzKSB7CiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7CiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBzd2l0Y2ggaW50ZW50aW9uYWxseSBvbWl0cyBicmVhayBrZXl3b3JkcwogICAgICAgIC8vIHRvIHV0aWxpemUgZmFsbGluZyB0aHJvdWdoIHRoZSBjYXNlcy4KICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7CiAgICAgICAgICAgIGNhc2UgJ3llYXInOgogICAgICAgICAgICAgICAgdGhpcy5tb250aCgwKTsKICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6CiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzoKICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSgxKTsKICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgICAgICAgY2FzZSAnd2Vlayc6CiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOgogICAgICAgICAgICBjYXNlICdkYXknOgogICAgICAgICAgICBjYXNlICdkYXRlJzoKICAgICAgICAgICAgICAgIHRoaXMuaG91cnMoMCk7CiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgICAgICAgIGNhc2UgJ2hvdXInOgogICAgICAgICAgICAgICAgdGhpcy5taW51dGVzKDApOwogICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgICAgICBjYXNlICdtaW51dGUnOgogICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRzKDApOwogICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgICAgICBjYXNlICdzZWNvbmQnOgogICAgICAgICAgICAgICAgdGhpcy5taWxsaXNlY29uZHMoMCk7CiAgICAgICAgfQoKICAgICAgICAvLyB3ZWVrcyBhcmUgYSBzcGVjaWFsIGNhc2UKICAgICAgICBpZiAodW5pdHMgPT09ICd3ZWVrJykgewogICAgICAgICAgICB0aGlzLndlZWtkYXkoMCk7CiAgICAgICAgfQogICAgICAgIGlmICh1bml0cyA9PT0gJ2lzb1dlZWsnKSB7CiAgICAgICAgICAgIHRoaXMuaXNvV2Vla2RheSgxKTsKICAgICAgICB9CgogICAgICAgIC8vIHF1YXJ0ZXJzIGFyZSBhbHNvIHNwZWNpYWwKICAgICAgICBpZiAodW5pdHMgPT09ICdxdWFydGVyJykgewogICAgICAgICAgICB0aGlzLm1vbnRoKE1hdGguZmxvb3IodGhpcy5tb250aCgpIC8gMykgKiAzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykgewogICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpOwogICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0KCiAgICAgICAgLy8gJ2RhdGUnIGlzIGFuIGFsaWFzIGZvciAnZGF5Jywgc28gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgc3VjaC4KICAgICAgICBpZiAodW5pdHMgPT09ICdkYXRlJykgewogICAgICAgICAgICB1bml0cyA9ICdkYXknOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZih1bml0cykuYWRkKDEsICh1bml0cyA9PT0gJ2lzb1dlZWsnID8gJ3dlZWsnIDogdW5pdHMpKS5zdWJ0cmFjdCgxLCAnbXMnKTsKICAgIH0KCiAgICBmdW5jdGlvbiB0b190eXBlX192YWx1ZU9mICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTsKICAgIH0KCiAgICBmdW5jdGlvbiB1bml4ICgpIHsKICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKSAvIDEwMDApOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvRGF0ZSAoKSB7CiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKTsKICAgIH0KCiAgICBmdW5jdGlvbiB0b0FycmF5ICgpIHsKICAgICAgICB2YXIgbSA9IHRoaXM7CiAgICAgICAgcmV0dXJuIFttLnllYXIoKSwgbS5tb250aCgpLCBtLmRhdGUoKSwgbS5ob3VyKCksIG0ubWludXRlKCksIG0uc2Vjb25kKCksIG0ubWlsbGlzZWNvbmQoKV07CiAgICB9CgogICAgZnVuY3Rpb24gdG9PYmplY3QgKCkgewogICAgICAgIHZhciBtID0gdGhpczsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICB5ZWFyczogbS55ZWFyKCksCiAgICAgICAgICAgIG1vbnRoczogbS5tb250aCgpLAogICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSwKICAgICAgICAgICAgaG91cnM6IG0uaG91cnMoKSwKICAgICAgICAgICAgbWludXRlczogbS5taW51dGVzKCksCiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLAogICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKCkKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHRvSlNPTiAoKSB7CiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbAogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJpbmcoKSA6IG51bGw7CiAgICB9CgogICAgZnVuY3Rpb24gbW9tZW50X3ZhbGlkX19pc1ZhbGlkICgpIHsKICAgICAgICByZXR1cm4gdmFsaWRfX2lzVmFsaWQodGhpcyk7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2luZ0ZsYWdzICgpIHsKICAgICAgICByZXR1cm4gZXh0ZW5kKHt9LCBnZXRQYXJzaW5nRmxhZ3ModGhpcykpOwogICAgfQoKICAgIGZ1bmN0aW9uIGludmFsaWRBdCAoKSB7CiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdzsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgaW5wdXQ6IHRoaXMuX2ksCiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZiwKICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9sb2NhbGUsCiAgICAgICAgICAgIGlzVVRDOiB0aGlzLl9pc1VUQywKICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3QKICAgICAgICB9OwogICAgfQoKICAgIC8vIEZPUk1BVFRJTkcKCiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy53ZWVrWWVhcigpICUgMTAwOwogICAgfSk7CgogICAgYWRkRm9ybWF0VG9rZW4oMCwgWydHRycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSAlIDEwMDsKICAgIH0pOwoKICAgIGZ1bmN0aW9uIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4gKHRva2VuLCBnZXR0ZXIpIHsKICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7CiAgICB9CgogICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTsKICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2dnJywgICAgJ3dlZWtZZWFyJyk7CiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHJywgICdpc29XZWVrWWVhcicpOwogICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTsKCiAgICAvLyBBTElBU0VTCgogICAgYWRkVW5pdEFsaWFzKCd3ZWVrWWVhcicsICdnZycpOwogICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrWWVhcicsICdHRycpOwoKICAgIC8vIFBSSU9SSVRZCgogICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpOwogICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrWWVhcicsIDEpOwoKCiAgICAvLyBQQVJTSU5HCgogICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpOwogICAgYWRkUmVnZXhUb2tlbignZycsICAgICAgbWF0Y2hTaWduZWQpOwogICAgYWRkUmVnZXhUb2tlbignR0cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpOwogICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpOwogICAgYWRkUmVnZXhUb2tlbignR0dHRycsICAgbWF0Y2gxdG80LCBtYXRjaDQpOwogICAgYWRkUmVnZXhUb2tlbignZ2dnZycsICAgbWF0Y2gxdG80LCBtYXRjaDQpOwogICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpOwogICAgYWRkUmVnZXhUb2tlbignZ2dnZ2cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpOwoKICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikgewogICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDIpXSA9IHRvSW50KGlucHV0KTsKICAgIH0pOwoKICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2cnLCAnR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7CiAgICAgICAgd2Vla1t0b2tlbl0gPSB1dGlsc19ob29rc19faG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpOwogICAgfSk7CgogICAgLy8gTU9NRU5UUwoKICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkgewogICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsCiAgICAgICAgICAgICAgICBpbnB1dCwKICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLAogICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5KCksCiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csCiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkgewogICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsCiAgICAgICAgICAgICAgICBpbnB1dCwgdGhpcy5pc29XZWVrKCksIHRoaXMuaXNvV2Vla2RheSgpLCAxLCA0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRJU09XZWVrc0luWWVhciAoKSB7CiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7CiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7CiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCB3ZWVrSW5mby5kb3csIHdlZWtJbmZvLmRveSk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXJIZWxwZXIoaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7CiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0OwogICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiB3ZWVrT2ZZZWFyKHRoaXMsIGRvdywgZG95KS55ZWFyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdlZWtzVGFyZ2V0ID0gd2Vla3NJblllYXIoaW5wdXQsIGRvdywgZG95KTsKICAgICAgICAgICAgaWYgKHdlZWsgPiB3ZWVrc1RhcmdldCkgewogICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZXRXZWVrQWxsLmNhbGwodGhpcywgaW5wdXQsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHsKICAgICAgICB2YXIgZGF5T2ZZZWFyRGF0YSA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpLAogICAgICAgICAgICBkYXRlID0gY3JlYXRlVVRDRGF0ZShkYXlPZlllYXJEYXRhLnllYXIsIDAsIGRheU9mWWVhckRhdGEuZGF5T2ZZZWFyKTsKCiAgICAgICAgdGhpcy55ZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7CiAgICAgICAgdGhpcy5tb250aChkYXRlLmdldFVUQ01vbnRoKCkpOwogICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgLy8gRk9STUFUVElORwoKICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTsKCiAgICAvLyBBTElBU0VTCgogICAgYWRkVW5pdEFsaWFzKCdxdWFydGVyJywgJ1EnKTsKCiAgICAvLyBQUklPUklUWQoKICAgIGFkZFVuaXRQcmlvcml0eSgncXVhcnRlcicsIDcpOwoKICAgIC8vIFBBUlNJTkcKCiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTsKICAgIGFkZFBhcnNlVG9rZW4oJ1EnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7CiAgICAgICAgYXJyYXlbTU9OVEhdID0gKHRvSW50KGlucHV0KSAtIDEpICogMzsKICAgIH0pOwoKICAgIC8vIE1PTUVOVFMKCiAgICBmdW5jdGlvbiBnZXRTZXRRdWFydGVyIChpbnB1dCkgewogICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gTWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkgKyAxKSAvIDMpIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyB0aGlzLm1vbnRoKCkgJSAzKTsKICAgIH0KCiAgICAvLyBGT1JNQVRUSU5HCgogICAgYWRkRm9ybWF0VG9rZW4oJ0QnLCBbJ0REJywgMl0sICdEbycsICdkYXRlJyk7CgogICAgLy8gQUxJQVNFUwoKICAgIGFkZFVuaXRBbGlhcygnZGF0ZScsICdEJyk7CgogICAgLy8gUFJJT1JPSVRZCiAgICBhZGRVbml0UHJpb3JpdHkoJ2RhdGUnLCA5KTsKCiAgICAvLyBQQVJTSU5HCgogICAgYWRkUmVnZXhUb2tlbignRCcsICBtYXRjaDF0bzIpOwogICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7CiAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7CiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID8gbG9jYWxlLl9vcmRpbmFsUGFyc2UgOiBsb2NhbGUuX29yZGluYWxQYXJzZUxlbmllbnQ7CiAgICB9KTsKCiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTsKICAgIGFkZFBhcnNlVG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkgewogICAgICAgIGFycmF5W0RBVEVdID0gdG9JbnQoaW5wdXQubWF0Y2gobWF0Y2gxdG8yKVswXSwgMTApOwogICAgfSk7CgogICAgLy8gTU9NRU5UUwoKICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpOwoKICAgIC8vIEZPUk1BVFRJTkcKCiAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydEREREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpOwoKICAgIC8vIEFMSUFTRVMKCiAgICBhZGRVbml0QWxpYXMoJ2RheU9mWWVhcicsICdEREQnKTsKCiAgICAvLyBQUklPUklUWQogICAgYWRkVW5pdFByaW9yaXR5KCdkYXlPZlllYXInLCA0KTsKCiAgICAvLyBQQVJTSU5HCgogICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7CiAgICBhZGRSZWdleFRva2VuKCdEREREJywgbWF0Y2gzKTsKICAgIGFkZFBhcnNlVG9rZW4oWydEREQnLCAnRERERCddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHsKICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTsKICAgIH0pOwoKICAgIC8vIEhFTFBFUlMKCiAgICAvLyBNT01FTlRTCgogICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZZZWFyIChpbnB1dCkgewogICAgICAgIHZhciBkYXlPZlllYXIgPSBNYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZignZGF5JykgLSB0aGlzLmNsb25lKCkuc3RhcnRPZigneWVhcicpKSAvIDg2NGU1KSArIDE7CiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpOwogICAgfQoKICAgIC8vIEZPUk1BVFRJTkcKCiAgICBhZGRGb3JtYXRUb2tlbignbScsIFsnbW0nLCAyXSwgMCwgJ21pbnV0ZScpOwoKICAgIC8vIEFMSUFTRVMKCiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7CgogICAgLy8gUFJJT1JJVFkKCiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbnV0ZScsIDE0KTsKCiAgICAvLyBQQVJTSU5HCgogICAgYWRkUmVnZXhUb2tlbignbScsICBtYXRjaDF0bzIpOwogICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7CiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpOwoKICAgIC8vIE1PTUVOVFMKCiAgICB2YXIgZ2V0U2V0TWludXRlID0gbWFrZUdldFNldCgnTWludXRlcycsIGZhbHNlKTsKCiAgICAvLyBGT1JNQVRUSU5HCgogICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTsKCiAgICAvLyBBTElBU0VTCgogICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpOwoKICAgIC8vIFBSSU9SSVRZCgogICAgYWRkVW5pdFByaW9yaXR5KCdzZWNvbmQnLCAxNSk7CgogICAgLy8gUEFSU0lORwoKICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ3NzJywgbWF0Y2gxdG8yLCBtYXRjaDIpOwogICAgYWRkUGFyc2VUb2tlbihbJ3MnLCAnc3MnXSwgU0VDT05EKTsKCiAgICAvLyBNT01FTlRTCgogICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7CgogICAgLy8gRk9STUFUVElORwoKICAgIGFkZEZvcm1hdFRva2VuKCdTJywgMCwgMCwgZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB+fih0aGlzLm1pbGxpc2Vjb25kKCkgLyAxMDApOwogICAgfSk7CgogICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTUycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTsKICAgIH0pOwoKICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpOwogICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTJywgNF0sIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTA7CiAgICB9KTsKICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1MnLCA1XSwgMCwgZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDA7CiAgICB9KTsKICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTJywgNl0sIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDsKICAgIH0pOwogICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTJywgN10sIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDA7CiAgICB9KTsKICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1MnLCA4XSwgMCwgZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDA7CiAgICB9KTsKICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1NTJywgOV0sIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwMDsKICAgIH0pOwoKCiAgICAvLyBBTElBU0VTCgogICAgYWRkVW5pdEFsaWFzKCdtaWxsaXNlY29uZCcsICdtcycpOwoKICAgIC8vIFBSSU9SSVRZCgogICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTsKCiAgICAvLyBQQVJTSU5HCgogICAgYWRkUmVnZXhUb2tlbignUycsICAgIG1hdGNoMXRvMywgbWF0Y2gxKTsKICAgIGFkZFJlZ2V4VG9rZW4oJ1NTJywgICBtYXRjaDF0bzMsIG1hdGNoMik7CiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpOwoKICAgIHZhciB0b2tlbjsKICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHsKICAgICAgICBhZGRSZWdleFRva2VuKHRva2VuLCBtYXRjaFVuc2lnbmVkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZU1zKGlucHV0LCBhcnJheSkgewogICAgICAgIGFycmF5W01JTExJU0VDT05EXSA9IHRvSW50KCgnMC4nICsgaW5wdXQpICogMTAwMCk7CiAgICB9CgogICAgZm9yICh0b2tlbiA9ICdTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykgewogICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpOwogICAgfQogICAgLy8gTU9NRU5UUwoKICAgIHZhciBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VHZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTsKCiAgICAvLyBGT1JNQVRUSU5HCgogICAgYWRkRm9ybWF0VG9rZW4oJ3onLCAgMCwgMCwgJ3pvbmVBYmJyJyk7CiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTsKCiAgICAvLyBNT01FTlRTCgogICAgZnVuY3Rpb24gZ2V0Wm9uZUFiYnIgKCkgewogICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdVVEMnIDogJyc7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0Wm9uZU5hbWUgKCkgewogICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJzsKICAgIH0KCiAgICB2YXIgbW9tZW50UHJvdG90eXBlX19wcm90byA9IE1vbWVudC5wcm90b3R5cGU7CgogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5hZGQgICAgICAgICAgICAgICA9IGFkZF9zdWJ0cmFjdF9fYWRkOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5jYWxlbmRhciAgICAgICAgICA9IG1vbWVudF9jYWxlbmRhcl9fY2FsZW5kYXI7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmRpZmYgICAgICAgICAgICAgID0gZGlmZjsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZW5kT2YgICAgICAgICAgICAgPSBlbmRPZjsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmZyb20gICAgICAgICAgICAgID0gZnJvbTsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZnJvbU5vdyAgICAgICAgICAgPSBmcm9tTm93OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by50byAgICAgICAgICAgICAgICA9IHRvOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by50b05vdyAgICAgICAgICAgICA9IHRvTm93OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5nZXQgICAgICAgICAgICAgICA9IHN0cmluZ0dldDsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzQWZ0ZXIgICAgICAgICAgID0gaXNBZnRlcjsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNCZWZvcmUgICAgICAgICAgPSBpc0JlZm9yZTsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzU2FtZSAgICAgICAgICAgID0gaXNTYW1lOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5pc1NhbWVPckFmdGVyICAgICA9IGlzU2FtZU9yQWZ0ZXI7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzVmFsaWQgICAgICAgICAgID0gbW9tZW50X3ZhbGlkX19pc1ZhbGlkOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5sYW5nICAgICAgICAgICAgICA9IGxhbmc7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5sb2NhbGVEYXRhICAgICAgICA9IGxvY2FsZURhdGE7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLm1heCAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWF4OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ucGFyc2luZ0ZsYWdzICAgICAgPSBwYXJzaW5nRmxhZ3M7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnNldCAgICAgICAgICAgICAgID0gc3RyaW5nU2V0OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnN1YnRyYWN0ICAgICAgICAgID0gYWRkX3N1YnRyYWN0X19zdWJ0cmFjdDsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udG9BcnJheSAgICAgICAgICAgPSB0b0FycmF5OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by50b09iamVjdCAgICAgICAgICA9IHRvT2JqZWN0OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udG9JU09TdHJpbmcgICAgICAgPSBtb21lbnRfZm9ybWF0X190b0lTT1N0cmluZzsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udG9KU09OICAgICAgICAgICAgPSB0b0pTT047CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnRvU3RyaW5nICAgICAgICAgID0gdG9TdHJpbmc7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udmFsdWVPZiAgICAgICAgICAgPSB0b190eXBlX192YWx1ZU9mOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5jcmVhdGlvbkRhdGEgICAgICA9IGNyZWF0aW9uRGF0YTsKCiAgICAvLyBZZWFyCiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnllYXIgICAgICAgPSBnZXRTZXRZZWFyOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjsKCiAgICAvLyBXZWVrIFllYXIKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNvV2Vla1llYXIgPSBnZXRTZXRJU09XZWVrWWVhcjsKCiAgICAvLyBRdWFydGVyCiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnF1YXJ0ZXIgPSBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjsKCiAgICAvLyBNb250aAogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5tb250aCAgICAgICA9IGdldFNldE1vbnRoOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoOwoKICAgIC8vIFdlZWsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ud2VlayAgICAgICAgICAgPSBtb21lbnRQcm90b3R5cGVfX3Byb3RvLndlZWtzICAgICAgICA9IGdldFNldFdlZWs7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzb1dlZWsgICAgICAgID0gbW9tZW50UHJvdG90eXBlX19wcm90by5pc29XZWVrcyAgICAgPSBnZXRTZXRJU09XZWVrOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by53ZWVrc0luWWVhciAgICA9IGdldFdlZWtzSW5ZZWFyOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyOwoKICAgIC8vIERheQogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5kYXRlICAgICAgID0gZ2V0U2V0RGF5T2ZNb250aDsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZGF5ICAgICAgICA9IG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZGF5cyAgICAgICAgICAgICA9IGdldFNldERheU9mV2VlazsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ud2Vla2RheSAgICA9IGdldFNldExvY2FsZURheU9mV2VlazsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlazsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZGF5T2ZZZWFyICA9IGdldFNldERheU9mWWVhcjsKCiAgICAvLyBIb3VyCiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmhvdXIgPSBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmhvdXJzID0gZ2V0U2V0SG91cjsKCiAgICAvLyBNaW51dGUKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ubWludXRlID0gbW9tZW50UHJvdG90eXBlX19wcm90by5taW51dGVzID0gZ2V0U2V0TWludXRlOwoKICAgIC8vIFNlY29uZAogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5zZWNvbmQgPSBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnNlY29uZHMgPSBnZXRTZXRTZWNvbmQ7CgogICAgLy8gTWlsbGlzZWNvbmQKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ubWlsbGlzZWNvbmQgPSBtb21lbnRQcm90b3R5cGVfX3Byb3RvLm1pbGxpc2Vjb25kcyA9IGdldFNldE1pbGxpc2Vjb25kOwoKICAgIC8vIE9mZnNldAogICAgbW9tZW50UHJvdG90eXBlX19wcm90by51dGNPZmZzZXQgICAgICAgICAgICA9IGdldFNldE9mZnNldDsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQzsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ubG9jYWwgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb0xvY2FsOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5wYXJzZVpvbmUgICAgICAgICAgICA9IHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0OwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5pc0RTVCAgICAgICAgICAgICAgICA9IGlzRGF5bGlnaHRTYXZpbmdUaW1lOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5pc0xvY2FsICAgICAgICAgICAgICA9IGlzTG9jYWw7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzVXRjICAgICAgICAgICAgICAgID0gaXNVdGM7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLmlzVVRDICAgICAgICAgICAgICAgID0gaXNVdGM7CgogICAgLy8gVGltZXpvbmUKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uem9uZUFiYnIgPSBnZXRab25lQWJicjsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTsKCiAgICAvLyBEZXByZWNhdGlvbnMKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uZGF0ZXMgID0gZGVwcmVjYXRlKCdkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLicsIGdldFNldERheU9mTW9udGgpOwogICAgbW9tZW50UHJvdG90eXBlX19wcm90by5tb250aHMgPSBkZXByZWNhdGUoJ21vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCcsIGdldFNldE1vbnRoKTsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7CiAgICBtb21lbnRQcm90b3R5cGVfX3Byb3RvLnpvbmUgICA9IGRlcHJlY2F0ZSgnbW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8nLCBnZXRTZXRab25lKTsKICAgIG1vbWVudFByb3RvdHlwZV9fcHJvdG8uaXNEU1RTaGlmdGVkID0gZGVwcmVjYXRlKCdpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uJywgaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKTsKCiAgICB2YXIgbW9tZW50UHJvdG90eXBlID0gbW9tZW50UHJvdG90eXBlX19wcm90bzsKCiAgICBmdW5jdGlvbiBtb21lbnRfX2NyZWF0ZVVuaXggKGlucHV0KSB7CiAgICAgICAgcmV0dXJuIGxvY2FsX19jcmVhdGVMb2NhbChpbnB1dCAqIDEwMDApOwogICAgfQoKICAgIGZ1bmN0aW9uIG1vbWVudF9fY3JlYXRlSW5ab25lICgpIHsKICAgICAgICByZXR1cm4gbG9jYWxfX2NyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cykucGFyc2Vab25lKCk7CiAgICB9CgogICAgZnVuY3Rpb24gcHJlUGFyc2VQb3N0Rm9ybWF0IChzdHJpbmcpIHsKICAgICAgICByZXR1cm4gc3RyaW5nOwogICAgfQoKICAgIHZhciBwcm90b3R5cGVfX3Byb3RvID0gTG9jYWxlLnByb3RvdHlwZTsKCiAgICBwcm90b3R5cGVfX3Byb3RvLmNhbGVuZGFyICAgICAgICA9IGxvY2FsZV9jYWxlbmRhcl9fY2FsZW5kYXI7CiAgICBwcm90b3R5cGVfX3Byb3RvLmxvbmdEYXRlRm9ybWF0ICA9IGxvbmdEYXRlRm9ybWF0OwogICAgcHJvdG90eXBlX19wcm90by5pbnZhbGlkRGF0ZSAgICAgPSBpbnZhbGlkRGF0ZTsKICAgIHByb3RvdHlwZV9fcHJvdG8ub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDsKICAgIHByb3RvdHlwZV9fcHJvdG8ucHJlcGFyc2UgICAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0OwogICAgcHJvdG90eXBlX19wcm90by5wb3N0Zm9ybWF0ICAgICAgPSBwcmVQYXJzZVBvc3RGb3JtYXQ7CiAgICBwcm90b3R5cGVfX3Byb3RvLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlX19yZWxhdGl2ZVRpbWU7CiAgICBwcm90b3R5cGVfX3Byb3RvLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7CiAgICBwcm90b3R5cGVfX3Byb3RvLnNldCAgICAgICAgICAgICA9IGxvY2FsZV9zZXRfX3NldDsKCiAgICAvLyBNb250aAogICAgcHJvdG90eXBlX19wcm90by5tb250aHMgICAgICAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHM7CiAgICBwcm90b3R5cGVfX3Byb3RvLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0OwogICAgcHJvdG90eXBlX19wcm90by5tb250aHNQYXJzZSAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHNQYXJzZTsKICAgIHByb3RvdHlwZV9fcHJvdG8ubW9udGhzUmVnZXggICAgICAgPSBtb250aHNSZWdleDsKICAgIHByb3RvdHlwZV9fcHJvdG8ubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4OwoKICAgIC8vIFdlZWsKICAgIHByb3RvdHlwZV9fcHJvdG8ud2VlayA9IGxvY2FsZVdlZWs7CiAgICBwcm90b3R5cGVfX3Byb3RvLmZpcnN0RGF5T2ZZZWFyID0gbG9jYWxlRmlyc3REYXlPZlllYXI7CiAgICBwcm90b3R5cGVfX3Byb3RvLmZpcnN0RGF5T2ZXZWVrID0gbG9jYWxlRmlyc3REYXlPZldlZWs7CgogICAgLy8gRGF5IG9mIFdlZWsKICAgIHByb3RvdHlwZV9fcHJvdG8ud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7CiAgICBwcm90b3R5cGVfX3Byb3RvLndlZWtkYXlzTWluICAgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzTWluOwogICAgcHJvdG90eXBlX19wcm90by53ZWVrZGF5c1Nob3J0ICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1Nob3J0OwogICAgcHJvdG90eXBlX19wcm90by53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlOwoKICAgIHByb3RvdHlwZV9fcHJvdG8ud2Vla2RheXNSZWdleCAgICAgICA9ICAgICAgICB3ZWVrZGF5c1JlZ2V4OwogICAgcHJvdG90eXBlX19wcm90by53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDsKICAgIHByb3RvdHlwZV9fcHJvdG8ud2Vla2RheXNNaW5SZWdleCAgICA9ICAgICAgICB3ZWVrZGF5c01pblJlZ2V4OwoKICAgIC8vIEhvdXJzCiAgICBwcm90b3R5cGVfX3Byb3RvLmlzUE0gPSBsb2NhbGVJc1BNOwogICAgcHJvdG90eXBlX19wcm90by5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtOwoKICAgIGZ1bmN0aW9uIGxpc3RzX19nZXQgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHsKICAgICAgICB2YXIgbG9jYWxlID0gbG9jYWxlX2xvY2FsZXNfX2dldExvY2FsZSgpOwogICAgICAgIHZhciB1dGMgPSBjcmVhdGVfdXRjX19jcmVhdGVVVEMoKS5zZXQoc2V0dGVyLCBpbmRleCk7CiAgICAgICAgcmV0dXJuIGxvY2FsZVtmaWVsZF0odXRjLCBmb3JtYXQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxpc3RNb250aHNJbXBsIChmb3JtYXQsIGluZGV4LCBmaWVsZCkgewogICAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnbnVtYmVyJykgewogICAgICAgICAgICBpbmRleCA9IGZvcm1hdDsKICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkOwogICAgICAgIH0KCiAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnOwoKICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbGlzdHNfX2dldChmb3JtYXQsIGluZGV4LCBmaWVsZCwgJ21vbnRoJyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3V0ID0gW107CiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHsKICAgICAgICAgICAgb3V0W2ldID0gbGlzdHNfX2dldChmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dDsKICAgIH0KCiAgICAvLyAoKQogICAgLy8gKDUpCiAgICAvLyAoZm10LCA1KQogICAgLy8gKGZtdCkKICAgIC8vICh0cnVlKQogICAgLy8gKHRydWUsIDUpCiAgICAvLyAodHJ1ZSwgZm10LCA1KQogICAgLy8gKHRydWUsIGZtdCkKICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c0ltcGwgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHsKICAgICAgICBpZiAodHlwZW9mIGxvY2FsZVNvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7CiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7CiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0OwogICAgICAgICAgICBsb2NhbGVTb3J0ZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7CiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJzsKICAgICAgICB9CgogICAgICAgIHZhciBsb2NhbGUgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlKCksCiAgICAgICAgICAgIHNoaWZ0ID0gbG9jYWxlU29ydGVkID8gbG9jYWxlLl93ZWVrLmRvdyA6IDA7CgogICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBsaXN0c19fZ2V0KGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTsKICAgICAgICB9CgogICAgICAgIHZhciBpOwogICAgICAgIHZhciBvdXQgPSBbXTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAgICAgICAgICAgIG91dFtpXSA9IGxpc3RzX19nZXQoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvdXQ7CiAgICB9CgogICAgZnVuY3Rpb24gbGlzdHNfX2xpc3RNb250aHMgKGZvcm1hdCwgaW5kZXgpIHsKICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxpc3RzX19saXN0TW9udGhzU2hvcnQgKGZvcm1hdCwgaW5kZXgpIHsKICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7CiAgICB9CgogICAgZnVuY3Rpb24gbGlzdHNfX2xpc3RXZWVrZGF5cyAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7CiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsaXN0c19fbGlzdFdlZWtkYXlzU2hvcnQgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkgewogICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsaXN0c19fbGlzdFdlZWtkYXlzTWluIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHsKICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpOwogICAgfQoKICAgIGxvY2FsZV9sb2NhbGVzX19nZXRTZXRHbG9iYWxMb2NhbGUoJ2VuJywgewogICAgICAgIG9yZGluYWxQYXJzZTogL1xkezEsMn0odGh8c3R8bmR8cmQpLywKICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikgewogICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLAogICAgICAgICAgICAgICAgb3V0cHV0ID0gKHRvSW50KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDoKICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOgogICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6CiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJzsKICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDsKICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzCiAgICB1dGlsc19ob29rc19faG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBsb2NhbGVfbG9jYWxlc19fZ2V0U2V0R2xvYmFsTG9jYWxlKTsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5sYW5nRGF0YSA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLicsIGxvY2FsZV9sb2NhbGVzX19nZXRMb2NhbGUpOwoKICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7CgogICAgZnVuY3Rpb24gZHVyYXRpb25fYWJzX19hYnMgKCkgewogICAgICAgIHZhciBkYXRhICAgICAgICAgICA9IHRoaXMuX2RhdGE7CgogICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTsKICAgICAgICB0aGlzLl9kYXlzICAgICAgICAgPSBtYXRoQWJzKHRoaXMuX2RheXMpOwogICAgICAgIHRoaXMuX21vbnRocyAgICAgICA9IG1hdGhBYnModGhpcy5fbW9udGhzKTsKCiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgID0gbWF0aEFicyhkYXRhLm1pbGxpc2Vjb25kcyk7CiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgID0gbWF0aEFicyhkYXRhLnNlY29uZHMpOwogICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTsKICAgICAgICBkYXRhLmhvdXJzICAgICAgICAgPSBtYXRoQWJzKGRhdGEuaG91cnMpOwogICAgICAgIGRhdGEubW9udGhzICAgICAgICA9IG1hdGhBYnMoZGF0YS5tb250aHMpOwogICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7CgogICAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2FkZF9zdWJ0cmFjdF9fYWRkU3VidHJhY3QgKGR1cmF0aW9uLCBpbnB1dCwgdmFsdWUsIGRpcmVjdGlvbikgewogICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZV9fY3JlYXRlRHVyYXRpb24oaW5wdXQsIHZhbHVlKTsKCiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzOwogICAgICAgIGR1cmF0aW9uLl9kYXlzICAgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7CiAgICAgICAgZHVyYXRpb24uX21vbnRocyAgICAgICArPSBkaXJlY3Rpb24gKiBvdGhlci5fbW9udGhzOwoKICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpOwogICAgfQoKICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbikKICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2FkZF9zdWJ0cmFjdF9fYWRkIChpbnB1dCwgdmFsdWUpIHsKICAgICAgICByZXR1cm4gZHVyYXRpb25fYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpOwogICAgfQoKICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pCiAgICBmdW5jdGlvbiBkdXJhdGlvbl9hZGRfc3VidHJhY3RfX3N1YnRyYWN0IChpbnB1dCwgdmFsdWUpIHsKICAgICAgICByZXR1cm4gZHVyYXRpb25fYWRkX3N1YnRyYWN0X19hZGRTdWJ0cmFjdCh0aGlzLCBpbnB1dCwgdmFsdWUsIC0xKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhYnNDZWlsIChudW1iZXIpIHsKICAgICAgICBpZiAobnVtYmVyIDwgMCkgewogICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gYnViYmxlICgpIHsKICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzOwogICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzOwogICAgICAgIHZhciBtb250aHMgICAgICAgPSB0aGlzLl9tb250aHM7CiAgICAgICAgdmFyIGRhdGEgICAgICAgICA9IHRoaXMuX2RhdGE7CiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7CgogICAgICAgIC8vIGlmIHdlIGhhdmUgYSBtaXggb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnViYmxlIGRvd24gZmlyc3QKICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjYKICAgICAgICBpZiAoISgobWlsbGlzZWNvbmRzID49IDAgJiYgZGF5cyA+PSAwICYmIG1vbnRocyA+PSAwKSB8fAogICAgICAgICAgICAgICAgKG1pbGxpc2Vjb25kcyA8PSAwICYmIGRheXMgPD0gMCAmJiBtb250aHMgPD0gMCkpKSB7CiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTsKICAgICAgICAgICAgZGF5cyA9IDA7CiAgICAgICAgICAgIG1vbnRocyA9IDA7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYnViYmxlcyB1cCB2YWx1ZXMsIHNlZSB0aGUgdGVzdHMgZm9yCiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLgogICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzICUgMTAwMDsKCiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTsKICAgICAgICBkYXRhLnNlY29uZHMgICAgICA9IHNlY29uZHMgJSA2MDsKCiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApOwogICAgICAgIGRhdGEubWludXRlcyAgICAgID0gbWludXRlcyAlIDYwOwoKICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7CiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgPSBob3VycyAlIDI0OwoKICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpOwoKICAgICAgICAvLyBjb252ZXJ0IGRheXMgdG8gbW9udGhzCiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpOwogICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5czsKICAgICAgICBkYXlzIC09IGFic0NlaWwobW9udGhzVG9EYXlzKG1vbnRoc0Zyb21EYXlzKSk7CgogICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXIKICAgICAgICB5ZWFycyA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTsKICAgICAgICBtb250aHMgJT0gMTI7CgogICAgICAgIGRhdGEuZGF5cyAgID0gZGF5czsKICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRoczsKICAgICAgICBkYXRhLnllYXJzICA9IHllYXJzOwoKICAgICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHsKICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxNDYwOTcgZGF5cyAodGFraW5nIGludG8gYWNjb3VudCBsZWFwIHllYXIgcnVsZXMpCiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTIgbW9udGhzID09PSA0ODAwCiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3OwogICAgfQoKICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7CiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzCiAgICAgICAgcmV0dXJuIG1vbnRocyAqIDE0NjA5NyAvIDQ4MDA7CiAgICB9CgogICAgZnVuY3Rpb24gYXMgKHVuaXRzKSB7CiAgICAgICAgdmFyIGRheXM7CiAgICAgICAgdmFyIG1vbnRoczsKICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzOwoKICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTsKCiAgICAgICAgaWYgKHVuaXRzID09PSAnbW9udGgnIHx8IHVuaXRzID09PSAneWVhcicpIHsKICAgICAgICAgICAgZGF5cyAgID0gdGhpcy5fZGF5cyAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7CiAgICAgICAgICAgIG1vbnRocyA9IHRoaXMuX21vbnRocyArIGRheXNUb01vbnRocyhkYXlzKTsKICAgICAgICAgICAgcmV0dXJuIHVuaXRzID09PSAnbW9udGgnID8gbW9udGhzIDogbW9udGhzIC8gMTI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gaGFuZGxlIG1pbGxpc2Vjb25kcyBzZXBhcmF0ZWx5IGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgKGlzc3VlICMxODY3KQogICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9udGhzVG9EYXlzKHRoaXMuX21vbnRocykpOwogICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7CiAgICAgICAgICAgICAgICBjYXNlICd3ZWVrJyAgIDogcmV0dXJuIGRheXMgLyA3ICAgICArIG1pbGxpc2Vjb25kcyAvIDYwNDhlNTsKICAgICAgICAgICAgICAgIGNhc2UgJ2RheScgICAgOiByZXR1cm4gZGF5cyAgICAgICAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7CiAgICAgICAgICAgICAgICBjYXNlICdob3VyJyAgIDogcmV0dXJuIGRheXMgKiAyNCAgICArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7CiAgICAgICAgICAgICAgICBjYXNlICdtaW51dGUnIDogcmV0dXJuIGRheXMgKiAxNDQwICArIG1pbGxpc2Vjb25kcyAvIDZlNDsKICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCcgOiByZXR1cm4gZGF5cyAqIDg2NDAwICsgbWlsbGlzZWNvbmRzIC8gMTAwMDsKICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZQogICAgICAgICAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmQnOiByZXR1cm4gTWF0aC5mbG9vcihkYXlzICogODY0ZTUpICsgbWlsbGlzZWNvbmRzOwogICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHVuaXQgJyArIHVuaXRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT8KICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2FzX192YWx1ZU9mICgpIHsKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgKwogICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgKwogICAgICAgICAgICAodGhpcy5fbW9udGhzICUgMTIpICogMjU5MmU2ICsKICAgICAgICAgICAgdG9JbnQodGhpcy5fbW9udGhzIC8gMTIpICogMzE1MzZlNgogICAgICAgICk7CiAgICB9CgogICAgZnVuY3Rpb24gbWFrZUFzIChhbGlhcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzKGFsaWFzKTsKICAgICAgICB9OwogICAgfQoKICAgIHZhciBhc01pbGxpc2Vjb25kcyA9IG1ha2VBcygnbXMnKTsKICAgIHZhciBhc1NlY29uZHMgICAgICA9IG1ha2VBcygncycpOwogICAgdmFyIGFzTWludXRlcyAgICAgID0gbWFrZUFzKCdtJyk7CiAgICB2YXIgYXNIb3VycyAgICAgICAgPSBtYWtlQXMoJ2gnKTsKICAgIHZhciBhc0RheXMgICAgICAgICA9IG1ha2VBcygnZCcpOwogICAgdmFyIGFzV2Vla3MgICAgICAgID0gbWFrZUFzKCd3Jyk7CiAgICB2YXIgYXNNb250aHMgICAgICAgPSBtYWtlQXMoJ00nKTsKICAgIHZhciBhc1llYXJzICAgICAgICA9IG1ha2VBcygneScpOwoKICAgIGZ1bmN0aW9uIGR1cmF0aW9uX2dldF9fZ2V0ICh1bml0cykgewogICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpOwogICAgICAgIHJldHVybiB0aGlzW3VuaXRzICsgJ3MnXSgpOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VHZXR0ZXIobmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhW25hbWVdOwogICAgICAgIH07CiAgICB9CgogICAgdmFyIG1pbGxpc2Vjb25kcyA9IG1ha2VHZXR0ZXIoJ21pbGxpc2Vjb25kcycpOwogICAgdmFyIHNlY29uZHMgICAgICA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKTsKICAgIHZhciBtaW51dGVzICAgICAgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyk7CiAgICB2YXIgaG91cnMgICAgICAgID0gbWFrZUdldHRlcignaG91cnMnKTsKICAgIHZhciBkYXlzICAgICAgICAgPSBtYWtlR2V0dGVyKCdkYXlzJyk7CiAgICB2YXIgbW9udGhzICAgICAgID0gbWFrZUdldHRlcignbW9udGhzJyk7CiAgICB2YXIgeWVhcnMgICAgICAgID0gbWFrZUdldHRlcigneWVhcnMnKTsKCiAgICBmdW5jdGlvbiB3ZWVrcyAoKSB7CiAgICAgICAgcmV0dXJuIGFic0Zsb29yKHRoaXMuZGF5cygpIC8gNyk7CiAgICB9CgogICAgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDsKICAgIHZhciB0aHJlc2hvbGRzID0gewogICAgICAgIHM6IDQ1LCAgLy8gc2Vjb25kcyB0byBtaW51dGUKICAgICAgICBtOiA0NSwgIC8vIG1pbnV0ZXMgdG8gaG91cgogICAgICAgIGg6IDIyLCAgLy8gaG91cnMgdG8gZGF5CiAgICAgICAgZDogMjYsICAvLyBkYXlzIHRvIG1vbnRoCiAgICAgICAgTTogMTEgICAvLyBtb250aHMgdG8geWVhcgogICAgfTsKCiAgICAvLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZQogICAgZnVuY3Rpb24gc3Vic3RpdHV0ZVRpbWVBZ28oc3RyaW5nLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGlzRnV0dXJlLCBsb2NhbGUpIHsKICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBkdXJhdGlvbl9odW1hbml6ZV9fcmVsYXRpdmVUaW1lIChwb3NOZWdEdXJhdGlvbiwgd2l0aG91dFN1ZmZpeCwgbG9jYWxlKSB7CiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlX19jcmVhdGVEdXJhdGlvbihwb3NOZWdEdXJhdGlvbikuYWJzKCk7CiAgICAgICAgdmFyIHNlY29uZHMgID0gcm91bmQoZHVyYXRpb24uYXMoJ3MnKSk7CiAgICAgICAgdmFyIG1pbnV0ZXMgID0gcm91bmQoZHVyYXRpb24uYXMoJ20nKSk7CiAgICAgICAgdmFyIGhvdXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSk7CiAgICAgICAgdmFyIGRheXMgICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2QnKSk7CiAgICAgICAgdmFyIG1vbnRocyAgID0gcm91bmQoZHVyYXRpb24uYXMoJ00nKSk7CiAgICAgICAgdmFyIHllYXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSk7CgogICAgICAgIHZhciBhID0gc2Vjb25kcyA8IHRocmVzaG9sZHMucyAmJiBbJ3MnLCBzZWNvbmRzXSAgfHwKICAgICAgICAgICAgICAgIG1pbnV0ZXMgPD0gMSAgICAgICAgICAgJiYgWydtJ10gICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICBtaW51dGVzIDwgdGhyZXNob2xkcy5tICYmIFsnbW0nLCBtaW51dGVzXSB8fAogICAgICAgICAgICAgICAgaG91cnMgICA8PSAxICAgICAgICAgICAmJiBbJ2gnXSAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgIGhvdXJzICAgPCB0aHJlc2hvbGRzLmggJiYgWydoaCcsIGhvdXJzXSAgIHx8CiAgICAgICAgICAgICAgICBkYXlzICAgIDw9IDEgICAgICAgICAgICYmIFsnZCddICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgZGF5cyAgICA8IHRocmVzaG9sZHMuZCAmJiBbJ2RkJywgZGF5c10gICAgfHwKICAgICAgICAgICAgICAgIG1vbnRocyAgPD0gMSAgICAgICAgICAgJiYgWydNJ10gICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICBtb250aHMgIDwgdGhyZXNob2xkcy5NICYmIFsnTU0nLCBtb250aHNdICB8fAogICAgICAgICAgICAgICAgeWVhcnMgICA8PSAxICAgICAgICAgICAmJiBbJ3knXSAgICAgICAgICAgfHwgWyd5eScsIHllYXJzXTsKCiAgICAgICAgYVsyXSA9IHdpdGhvdXRTdWZmaXg7CiAgICAgICAgYVszXSA9ICtwb3NOZWdEdXJhdGlvbiA+IDA7CiAgICAgICAgYVs0XSA9IGxvY2FsZTsKICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZVRpbWVBZ28uYXBwbHkobnVsbCwgYSk7CiAgICB9CgogICAgLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5ncwogICAgZnVuY3Rpb24gZHVyYXRpb25faHVtYW5pemVfX2dldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nIChyb3VuZGluZ0Z1bmN0aW9uKSB7CiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICByZXR1cm4gcm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2Yocm91bmRpbmdGdW5jdGlvbikgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5ncwogICAgZnVuY3Rpb24gZHVyYXRpb25faHVtYW5pemVfX2dldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCAodGhyZXNob2xkLCBsaW1pdCkgewogICAgICAgIGlmICh0aHJlc2hvbGRzW3RocmVzaG9sZF0gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChsaW1pdCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHJldHVybiB0aHJlc2hvbGRzW3RocmVzaG9sZF07CiAgICAgICAgfQogICAgICAgIHRocmVzaG9sZHNbdGhyZXNob2xkXSA9IGxpbWl0OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIGh1bWFuaXplICh3aXRoU3VmZml4KSB7CiAgICAgICAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpOwogICAgICAgIHZhciBvdXRwdXQgPSBkdXJhdGlvbl9odW1hbml6ZV9fcmVsYXRpdmVUaW1lKHRoaXMsICF3aXRoU3VmZml4LCBsb2NhbGUpOwoKICAgICAgICBpZiAod2l0aFN1ZmZpeCkgewogICAgICAgICAgICBvdXRwdXQgPSBsb2NhbGUucGFzdEZ1dHVyZSgrdGhpcywgb3V0cHV0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBsb2NhbGUucG9zdGZvcm1hdChvdXRwdXQpOwogICAgfQoKICAgIHZhciBpc29fc3RyaW5nX19hYnMgPSBNYXRoLmFiczsKCiAgICBmdW5jdGlvbiBpc29fc3RyaW5nX190b0lTT1N0cmluZygpIHsKICAgICAgICAvLyBmb3IgSVNPIHN0cmluZ3Mgd2UgZG8gbm90IHVzZSB0aGUgbm9ybWFsIGJ1YmJsaW5nIHJ1bGVzOgogICAgICAgIC8vICAqIG1pbGxpc2Vjb25kcyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgaG91cnMKICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsCiAgICAgICAgLy8gICogbW9udGhzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSB5ZWFycwogICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZXh0LWZyZWUgY29udmVyc2lvbiBiZXR3ZWVuIGhvdXJzIGFuZCBkYXlzCiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpCiAgICAgICAgLy8gYW5kIGFsc28gbm90IGJldHdlZW4gZGF5cyBhbmQgbW9udGhzICgyOC0zMSBkYXlzIHBlciBtb250aCkKICAgICAgICB2YXIgc2Vjb25kcyA9IGlzb19zdHJpbmdfX2Ficyh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMDsKICAgICAgICB2YXIgZGF5cyAgICAgICAgID0gaXNvX3N0cmluZ19fYWJzKHRoaXMuX2RheXMpOwogICAgICAgIHZhciBtb250aHMgICAgICAgPSBpc29fc3RyaW5nX19hYnModGhpcy5fbW9udGhzKTsKICAgICAgICB2YXIgbWludXRlcywgaG91cnMsIHllYXJzOwoKICAgICAgICAvLyAzNjAwIHNlY29uZHMgLT4gNjAgbWludXRlcyAtPiAxIGhvdXIKICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7CiAgICAgICAgaG91cnMgICAgICAgICAgICAgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApOwogICAgICAgIHNlY29uZHMgJT0gNjA7CiAgICAgICAgbWludXRlcyAlPSA2MDsKCiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhcgogICAgICAgIHllYXJzICA9IGFic0Zsb29yKG1vbnRocyAvIDEyKTsKICAgICAgICBtb250aHMgJT0gMTI7CgoKICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qcwogICAgICAgIHZhciBZID0geWVhcnM7CiAgICAgICAgdmFyIE0gPSBtb250aHM7CiAgICAgICAgdmFyIEQgPSBkYXlzOwogICAgICAgIHZhciBoID0gaG91cnM7CiAgICAgICAgdmFyIG0gPSBtaW51dGVzOwogICAgICAgIHZhciBzID0gc2Vjb25kczsKICAgICAgICB2YXIgdG90YWwgPSB0aGlzLmFzU2Vjb25kcygpOwoKICAgICAgICBpZiAoIXRvdGFsKSB7CiAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgQyMncyAoTm9kYSkgYW5kIHB5dGhvbiAoaXNvZGF0ZSkuLi4KICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKQogICAgICAgICAgICByZXR1cm4gJ1AwRCc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKHRvdGFsIDwgMCA/ICctJyA6ICcnKSArCiAgICAgICAgICAgICdQJyArCiAgICAgICAgICAgIChZID8gWSArICdZJyA6ICcnKSArCiAgICAgICAgICAgIChNID8gTSArICdNJyA6ICcnKSArCiAgICAgICAgICAgIChEID8gRCArICdEJyA6ICcnKSArCiAgICAgICAgICAgICgoaCB8fCBtIHx8IHMpID8gJ1QnIDogJycpICsKICAgICAgICAgICAgKGggPyBoICsgJ0gnIDogJycpICsKICAgICAgICAgICAgKG0gPyBtICsgJ00nIDogJycpICsKICAgICAgICAgICAgKHMgPyBzICsgJ1MnIDogJycpOwogICAgfQoKICAgIHZhciBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvID0gRHVyYXRpb24ucHJvdG90eXBlOwoKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYWJzICAgICAgICAgICAgPSBkdXJhdGlvbl9hYnNfX2FiczsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYWRkICAgICAgICAgICAgPSBkdXJhdGlvbl9hZGRfc3VidHJhY3RfX2FkZDsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uc3VidHJhY3QgICAgICAgPSBkdXJhdGlvbl9hZGRfc3VidHJhY3RfX3N1YnRyYWN0OwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5hcyAgICAgICAgICAgICA9IGFzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5hc01pbGxpc2Vjb25kcyA9IGFzTWlsbGlzZWNvbmRzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5hc1NlY29uZHMgICAgICA9IGFzU2Vjb25kczsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYXNNaW51dGVzICAgICAgPSBhc01pbnV0ZXM7CiAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmFzSG91cnMgICAgICAgID0gYXNIb3VyczsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYXNEYXlzICAgICAgICAgPSBhc0RheXM7CiAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmFzV2Vla3MgICAgICAgID0gYXNXZWVrczsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYXNNb250aHMgICAgICAgPSBhc01vbnRoczsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uYXNZZWFycyAgICAgICAgPSBhc1llYXJzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by52YWx1ZU9mICAgICAgICA9IGR1cmF0aW9uX2FzX192YWx1ZU9mOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5fYnViYmxlICAgICAgICA9IGJ1YmJsZTsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8uZ2V0ICAgICAgICAgICAgPSBkdXJhdGlvbl9nZXRfX2dldDsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8ubWlsbGlzZWNvbmRzICAgPSBtaWxsaXNlY29uZHM7CiAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLnNlY29uZHMgICAgICAgID0gc2Vjb25kczsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8ubWludXRlcyAgICAgICAgPSBtaW51dGVzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5ob3VycyAgICAgICAgICA9IGhvdXJzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5kYXlzICAgICAgICAgICA9IGRheXM7CiAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLndlZWtzICAgICAgICAgID0gd2Vla3M7CiAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLm1vbnRocyAgICAgICAgID0gbW9udGhzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by55ZWFycyAgICAgICAgICA9IHllYXJzOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5odW1hbml6ZSAgICAgICA9IGh1bWFuaXplOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by50b0lTT1N0cmluZyAgICA9IGlzb19zdHJpbmdfX3RvSVNPU3RyaW5nOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by50b1N0cmluZyAgICAgICA9IGlzb19zdHJpbmdfX3RvSVNPU3RyaW5nOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by50b0pTT04gICAgICAgICA9IGlzb19zdHJpbmdfX3RvSVNPU3RyaW5nOwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by5sb2NhbGUgICAgICAgICA9IGxvY2FsZTsKICAgIGR1cmF0aW9uX3Byb3RvdHlwZV9fcHJvdG8ubG9jYWxlRGF0YSAgICAgPSBsb2NhbGVEYXRhOwoKICAgIC8vIERlcHJlY2F0aW9ucwogICAgZHVyYXRpb25fcHJvdG90eXBlX19wcm90by50b0lzb1N0cmluZyA9IGRlcHJlY2F0ZSgndG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscyknLCBpc29fc3RyaW5nX190b0lTT1N0cmluZyk7CiAgICBkdXJhdGlvbl9wcm90b3R5cGVfX3Byb3RvLmxhbmcgPSBsYW5nOwoKICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHMKCiAgICAvLyBGT1JNQVRUSU5HCgogICAgYWRkRm9ybWF0VG9rZW4oJ1gnLCAwLCAwLCAndW5peCcpOwogICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpOwoKICAgIC8vIFBBUlNJTkcKCiAgICBhZGRSZWdleFRva2VuKCd4JywgbWF0Y2hTaWduZWQpOwogICAgYWRkUmVnZXhUb2tlbignWCcsIG1hdGNoVGltZXN0YW1wKTsKICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHsKICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShwYXJzZUZsb2F0KGlucHV0LCAxMCkgKiAxMDAwKTsKICAgIH0pOwogICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykgewogICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHRvSW50KGlucHV0KSk7CiAgICB9KTsKCiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzCgoKICAgIHV0aWxzX2hvb2tzX19ob29rcy52ZXJzaW9uID0gJzIuMTUuMSc7CgogICAgc2V0SG9va0NhbGxiYWNrKGxvY2FsX19jcmVhdGVMb2NhbCk7CgogICAgdXRpbHNfaG9va3NfX2hvb2tzLmZuICAgICAgICAgICAgICAgICAgICA9IG1vbWVudFByb3RvdHlwZTsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5taW4gICAgICAgICAgICAgICAgICAgPSBtaW47CiAgICB1dGlsc19ob29rc19faG9va3MubWF4ICAgICAgICAgICAgICAgICAgID0gbWF4OwogICAgdXRpbHNfaG9va3NfX2hvb2tzLm5vdyAgICAgICAgICAgICAgICAgICA9IG5vdzsKICAgIHV0aWxzX2hvb2tzX19ob29rcy51dGMgICAgICAgICAgICAgICAgICAgPSBjcmVhdGVfdXRjX19jcmVhdGVVVEM7CiAgICB1dGlsc19ob29rc19faG9va3MudW5peCAgICAgICAgICAgICAgICAgID0gbW9tZW50X19jcmVhdGVVbml4OwogICAgdXRpbHNfaG9va3NfX2hvb2tzLm1vbnRocyAgICAgICAgICAgICAgICA9IGxpc3RzX19saXN0TW9udGhzOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmlzRGF0ZSAgICAgICAgICAgICAgICA9IGlzRGF0ZTsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5sb2NhbGUgICAgICAgICAgICAgICAgPSBsb2NhbGVfbG9jYWxlc19fZ2V0U2V0R2xvYmFsTG9jYWxlOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmludmFsaWQgICAgICAgICAgICAgICA9IHZhbGlkX19jcmVhdGVJbnZhbGlkOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmR1cmF0aW9uICAgICAgICAgICAgICA9IGNyZWF0ZV9fY3JlYXRlRHVyYXRpb247CiAgICB1dGlsc19ob29rc19faG9va3MuaXNNb21lbnQgICAgICAgICAgICAgID0gaXNNb21lbnQ7CiAgICB1dGlsc19ob29rc19faG9va3Mud2Vla2RheXMgICAgICAgICAgICAgID0gbGlzdHNfX2xpc3RXZWVrZGF5czsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5wYXJzZVpvbmUgICAgICAgICAgICAgPSBtb21lbnRfX2NyZWF0ZUluWm9uZTsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5sb2NhbGVEYXRhICAgICAgICAgICAgPSBsb2NhbGVfbG9jYWxlc19fZ2V0TG9jYWxlOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmlzRHVyYXRpb24gICAgICAgICAgICA9IGlzRHVyYXRpb247CiAgICB1dGlsc19ob29rc19faG9va3MubW9udGhzU2hvcnQgICAgICAgICAgID0gbGlzdHNfX2xpc3RNb250aHNTaG9ydDsKICAgIHV0aWxzX2hvb2tzX19ob29rcy53ZWVrZGF5c01pbiAgICAgICAgICAgPSBsaXN0c19fbGlzdFdlZWtkYXlzTWluOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmRlZmluZUxvY2FsZSAgICAgICAgICA9IGRlZmluZUxvY2FsZTsKICAgIHV0aWxzX2hvb2tzX19ob29rcy51cGRhdGVMb2NhbGUgICAgICAgICAgPSB1cGRhdGVMb2NhbGU7CiAgICB1dGlsc19ob29rc19faG9va3MubG9jYWxlcyAgICAgICAgICAgICAgID0gbG9jYWxlX2xvY2FsZXNfX2xpc3RMb2NhbGVzOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLndlZWtkYXlzU2hvcnQgICAgICAgICA9IGxpc3RzX19saXN0V2Vla2RheXNTaG9ydDsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5ub3JtYWxpemVVbml0cyAgICAgICAgPSBub3JtYWxpemVVbml0czsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5yZWxhdGl2ZVRpbWVSb3VuZGluZyA9IGR1cmF0aW9uX2h1bWFuaXplX19nZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZzsKICAgIHV0aWxzX2hvb2tzX19ob29rcy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQgPSBkdXJhdGlvbl9odW1hbml6ZV9fZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkOwogICAgdXRpbHNfaG9va3NfX2hvb2tzLmNhbGVuZGFyRm9ybWF0ICAgICAgICA9IGdldENhbGVuZGFyRm9ybWF0OwogICAgdXRpbHNfaG9va3NfX2hvb2tzLnByb3RvdHlwZSAgICAgICAgICAgICA9IG1vbWVudFByb3RvdHlwZTsKCiAgICB2YXIgX21vbWVudCA9IHV0aWxzX2hvb2tzX19ob29rczsKCiAgICByZXR1cm4gX21vbWVudDsKCn0pKTs="}},"time_used":192,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":192,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/100punks/0082.gif","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.380Z","timestamp":1785150870380,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/100punks/0082.gif HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/gif\r\nserver-timing: cfExtPri\r\nlast-modified: Sun, 24 Mar 2024 19:27:21 GMT\r\npriority: u=5,i\r\netag: \"66007e99-10b\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=V4IX92j8VL78v4i%2FF%2BRGBRZbjDVj8koPbccQpp9CZhPB1j%2B8K4%2BLJsZ0YuHOfpQIJu16wPn5YvcgWklMqkVFAknKWWYZSJx0z6UcqyGff3nKuuMC34UYBbwPSw%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bebea56a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 267\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"]}],"data":{"size":267,"size_decoded":1043,"mime_type":"image/gif","magic":"GIF image data, version 89a, 32 x 32","md5":"f6dd312a4edff3d32eec28b51aeaec5e","sha1":"c0013118c10a3080bbed3840c5b36c6754c517dd","sha256":"6e0a9134368cb3b661b1d54659fc6d63a1ee2f36098cd250dfeb8ab92356f457","sha512":"f641536428cecb890494f7b891cea34dc7e2ce400e69240bc350342256c26703abac608985a8b4e60aefa93cb9ab8fbf1bfa3efc9445948235dc86c88698f4f9","ssdeep":"","tlshash":"d1d0950734708cd5e9416d78200407d2c7c1ab74643d4d89cc944d11504beb134109f5","first_seen":"2026-03-28T17:58:05.983443Z","last_seen":"2026-07-27T11:25:32.114745Z","times_seen":3,"resource_available":false,"data":"R0lGODlhIAAgALMAAAAAACYmJjE1PjMzM0FBQUZLVX9/f7+/v9Ceed+6nvPz8wAAAAAAAAAAAAAAAAAAACH5BAUKAAAALAAAAAAgACAAAAS4EMhJq70Yh817/lIwEGRZBqA2jGaLppXIticcrzP92iG+dsAdTPYzGI9IISjI9NgCgmggQa1SlcOoYGqtYlOBgpi7SZS/S3GB2zXzJuGx9+p+A+Lrubn+hnLaV3Z3WwgIgHw8foWHaB9+AYZXZYiJhIyCIZCRVo1DhQhAmBSaoKIXpJ1gQJ9BfSYGQAYmqXA0SLIuQyQBNC67ugS8vSe/YLsmCgTJxMHAwiQKy8y0dz8+BwPYODJfEQA7"}},"time_used":190,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":190,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/fullcalendar/fullcalendar.print.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.785Z","timestamp":1785150870785,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/fullcalendar/fullcalendar.print.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=4,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-15bd\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=R%2Fju9auRNrYQ60zJ3i7INto9ZwSWDx7ThtifBeZiyKj8umvHfMDHr9ktZcTlTmU2IMQ%2Ff88XZTELUQlKPyVxYS2mcSvJ%2FRFu6M0S4Muhj3W%2BfC56rYROTaHIgw%3D%3D\"}]}\r\ncf-ray: a21b388e6c0056a2-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"]}],"data":{"size":5565,"size_decoded":2631,"mime_type":"text/css","magic":"troff or preprocessor input, ASCII text","md5":"c82dd65e28be0f4bcd0a106b511a6a64","sha1":"c72eb845c21d28438573eb92e2cc7611974e49b1","sha256":"eb348cca8ae6e847460ca23598ca0ec59b7dbc9b9105960081cf523cedec1973","sha512":"77386c52bac1a6f51f5d2833a94551048ddfd00ab3dafa583e0437c8741a5ba6271f7532d3664eb0b6fc3a9c7947b8c7346b9734ba557d12fda048b8cdad7ee2","ssdeep":"48:cAzSV2QB+of7EoFUC9Lyl56vRuy9yuAVAbuZPh3ZMfwyl86RKe6c9UerIUbIXq3r:BzPQJU8vRhgH8S6Rrj5UvTHWCp0","tlshash":"95b16572af8127604229c698ab85b3b5ef3dc3b16e087c65f8407fd453886ce506ded4","first_seen":"2023-06-12T15:01:30Z","last_seen":"2026-07-27T11:25:33.516871Z","times_seen":23,"resource_available":false,"data":"LyohCiAqIEZ1bGxDYWxlbmRhciB2My4wLjEgUHJpbnQgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTYgQWRhbSBTaGF3CiAqLwoKLyoKICogSW5jbHVkZSB0aGlzIHN0eWxlc2hlZXQgb24geW91ciBwYWdlIHRvIGdldCBhIG1vcmUgcHJpbnRlci1mcmllbmRseSBjYWxlbmRhci4KICogV2hlbiBpbmNsdWRpbmcgdGhpcyBzdHlsZXNoZWV0LCB1c2UgdGhlIG1lZGlhPSdwcmludCcgYXR0cmlidXRlIG9mIHRoZSA8bGluaz4gdGFnLgogKiBNYWtlIHN1cmUgdG8gaW5jbHVkZSB0aGlzIHN0eWxlc2hlZXQgSU4gQURESVRJT04gdG8gdGhlIHJlZ3VsYXIgZnVsbGNhbGVuZGFyLmNzcy4KICovCgouZmMgewoJbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCgovKiBHbG9iYWwgRXZlbnQgUmVzdHlsaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ldmVudCB7CgliYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7Cgljb2xvcjogIzAwMCAhaW1wb3J0YW50OwoJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwp9CgouZmMtZXZlbnQgLmZjLXJlc2l6ZXIgewoJZGlzcGxheTogbm9uZTsKfQoKCi8qIFRhYmxlICYgRGF5LVJvdyBSZXN0eWxpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjIHRoLAouZmMgdGQsCi5mYyBociwKLmZjIHRoZWFkLAouZmMgdGJvZHksCi5mYy1yb3cgewoJYm9yZGVyLWNvbG9yOiAjY2NjICFpbXBvcnRhbnQ7CgliYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi8qIGtpbGwgdGhlIG92ZXJsYWlkLCBhYnNvbHV0ZWx5LXBvc2l0aW9uZWQgY29tcG9uZW50cyAqLwovKiBjb21tb24uLi4gKi8KLmZjLWJnLAouZmMtYmdldmVudC1za2VsZXRvbiwKLmZjLWhpZ2hsaWdodC1za2VsZXRvbiwKLmZjLWhlbHBlci1za2VsZXRvbiwKLyogZm9yIHRpbWVncmlkLiB3aXRoaW4gY2VsbHMgd2l0aGluIHRhYmxlIHNrZWxldG9ucy4uLiAqLwouZmMtYmdldmVudC1jb250YWluZXIsCi5mYy1idXNpbmVzcy1jb250YWluZXIsCi5mYy1oaWdobGlnaHQtY29udGFpbmVyLAouZmMtaGVscGVyLWNvbnRhaW5lciB7CglkaXNwbGF5OiBub25lOwp9CgovKiBkb24ndCBmb3JjZSBhIG1pbi1oZWlnaHQgb24gcm93cyAoZm9yIERheUdyaWQpICovCi5mYyB0Ym9keSAuZmMtcm93IHsKCWhlaWdodDogYXV0byAhaW1wb3J0YW50OyAvKiB1bmRvIGhlaWdodCB0aGF0IEpTIHNldCBpbiBkaXN0cmlidXRlSGVpZ2h0ICovCgltaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7IC8qIHVuZG8gdGhlIG1pbi1oZWlnaHQgZnJvbSBlYWNoIHZpZXcncyBzcGVjaWZpYyBzdHlsZXNoZWV0ICovCn0KCi5mYyB0Ym9keSAuZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiBzdGF0aWM7IC8qIHVuZG8gLmZjLXJpZ2lkICovCglwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyAvKiB1c2UgYSBtb3JlIGJvcmRlci1mcmllbmRseSBtZXRob2QgZm9yIHRoaXMuLi4gKi8KfQoKLmZjIHRib2R5IC5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZCB7IC8qIG9ubHkgd29ya3MgaW4gbmV3ZXIgYnJvd3NlcnMgKi8KCXBhZGRpbmctYm90dG9tOiAxZW07IC8qIC4uLmdpdmVzIHNwYWNlIHdpdGhpbiB0aGUgc2tlbGV0b24uIGFsc28gZW5zdXJlcyBtaW4gaGVpZ2h0IGluIGEgd2F5ICovCn0KCi5mYyB0Ym9keSAuZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRhYmxlIHsKCS8qIHByb3ZpZGVzIGEgbWluLWhlaWdodCBmb3IgdGhlIHJvdywgYnV0IG9ubHkgZWZmZWN0aXZlIGZvciBJRSwgd2hpY2ggZXhhZ2dlcmF0ZXMgdGhpcyB2YWx1ZSwKCSAgIG1ha2luZyBpdCBsb29rIG1vcmUgbGlrZSAzZW0uIGZvciBvdGhlciBicm93ZXJzLCBpdCB3aWxsIGFscmVhZHkgYmUgdGhpcyB0YWxsICovCgloZWlnaHQ6IDFlbTsKfQoKCi8qIFVuZG8gbW9udGgtdmlldyBldmVudCBsaW1pdGluZy4gRGlzcGxheSBhbGwgZXZlbnRzIGFuZCBoaWRlIHRoZSAibW9yZSIgbGlua3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLW1vcmUtY2VsbCwKLmZjLW1vcmUgewoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgouZmMgdHIuZmMtbGltaXRlZCB7CglkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKfQoKLmZjIHRkLmZjLWxpbWl0ZWQgewoJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9CgouZmMtcG9wb3ZlciB7CglkaXNwbGF5OiBub25lOyAvKiBuZXZlciBkaXNwbGF5IHRoZSAibW9yZS4uIiBwb3BvdmVyIGluIHByaW50IG1vZGUgKi8KfQoKCi8qIFRpbWVHcmlkIFJlc3R5bGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiB1bmRvIHRoZSBtaW4taGVpZ2h0IDEwMCUgdHJpY2sgdXNlZCB0byBmaWxsIHRoZSBjb250YWluZXIncyBoZWlnaHQgKi8KLmZjLXRpbWUtZ3JpZCB7CgltaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIGRvbid0IGRpc3BsYXkgdGhlIHNpZGUgYXhpcyBhdCBhbGwgKCJhbGwtZGF5IiBhbmQgdGltZSBjZWxscykgKi8KLmZjLWFnZW5kYS12aWV3IC5mYy1heGlzIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi8qIGRvbid0IGRpc3BsYXkgdGhlIGhvcml6b250YWwgbGluZXMgKi8KLmZjLXNsYXRzLAouZmMtdGltZS1ncmlkIGhyIHsgLyogdGhpcyBociBpcyB1c2VkIHdoZW4gaGVpZ2h0IGlzIHVuZGVydXNlZCBhbmQgbmVlZHMgdG8gYmUgZmlsbGVkICovCglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IC8qIGltcG9ydGFudCBvdmVycmlkZXMgaW5saW5lIGRlY2xhcmF0aW9uICovCn0KCi8qIGxldCB0aGUgY29udGFpbmVyIHRoYXQgaG9sZHMgdGhlIGV2ZW50cyBiZSBuYXR1cmFsbHkgcG9zaXRpb25lZCBhbmQgY3JlYXRlIHJlYWwgaGVpZ2h0ICovCi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24gewoJcG9zaXRpb246IHN0YXRpYzsKfQoKLyogaW4gY2FzZSB0aGVyZSBhcmUgbm8gZXZlbnRzLCB3ZSBzdGlsbCB3YW50IHNvbWUgaGVpZ2h0ICovCi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGFibGUgewoJaGVpZ2h0OiA0ZW07Cn0KCi8qIGtpbGwgdGhlIGhvcml6b250YWwgc3BhY2luZyBtYWRlIGJ5IHRoZSBldmVudCBjb250YWluZXIuIGV2ZW50IG1hcmdpbnMgd2lsbCBiZSBkb25lIGJlbG93ICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lciB7CgltYXJnaW46IDAgIWltcG9ydGFudDsKfQoKCi8qIFRpbWVHcmlkICpFdmVudCogUmVzdHlsaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIG5hdHVyYWxseSBwb3NpdGlvbiBldmVudHMsIHZlcnRpY2FsbHkgc3RhY2tpbmcgdGhlbSAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudCB7Cglwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CgltYXJnaW46IDNweCAycHggIWltcG9ydGFudDsKfQoKLyogZm9yIGV2ZW50cyB0aGF0IGNvbnRpbnVlIHRvIGEgZnV0dXJlIGRheSwgZ2l2ZSB0aGUgYm90dG9tIGJvcmRlciBiYWNrICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LmZjLW5vdC1lbmQgewoJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi8qIGluZGljYXRlIHRoZSBldmVudCBjb250aW51ZXMgdmlhICIuLi4iIHRleHQgKi8KLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQuZmMtbm90LWVuZDphZnRlciB7Cgljb250ZW50OiAiLi4uIjsKfQoKLyogZm9yIGV2ZW50cyB0aGF0IGFyZSBjb250aW51YXRpb25zIGZyb20gcHJldmlvdXMgZGF5cywgZ2l2ZSB0aGUgdG9wIGJvcmRlciBiYWNrICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LmZjLW5vdC1zdGFydCB7Cglib3JkZXItdG9wLXdpZHRoOiAxcHggIWltcG9ydGFudDsKfQoKLyogaW5kaWNhdGUgdGhlIGV2ZW50IGlzIGEgY29udGludWF0aW9uIHZpYSAiLi4uIiB0ZXh0ICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LmZjLW5vdC1zdGFydDpiZWZvcmUgewoJY29udGVudDogIi4uLiI7Cn0KCi8qIHRpbWUgKi8KCi8qIHVuZG8gYSBwcmV2aW91cyBkZWNsYXJhdGlvbiBhbmQgbGV0IHRoZSB0aW1lIHRleHQgc3BhbiB0byBhIHNlY29uZCBsaW5lICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50IC5mYy10aW1lIHsKCXdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDsKfQoKLyogaGlkZSB0aGUgdGhlIHRpbWUgdGhhdCBpcyBub3JtYWxseSBkaXNwbGF5ZWQuLi4gKi8KLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQgLmZjLXRpbWUgc3BhbiB7CglkaXNwbGF5OiBub25lOwp9CgovKiAuLi5yZXBsYWNlIGl0IHdpdGggYSBtb3JlIHZlcmJvc2UgdmVyc2lvbiAoaW5jbHVkZXMgQU0vUE0pIHN0b3JlZCBpbiBhbiBodG1sIGF0dHJpYnV0ZSAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudCAuZmMtdGltZTphZnRlciB7Cgljb250ZW50OiBhdHRyKGRhdGEtZnVsbCk7Cn0KCgovKiBWZXJ0aWNhbCBTY3JvbGxlciAmIENvbnRhaW5lcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyoga2lsbCB0aGUgc2Nyb2xsYmFycyBhbmQgYWxsb3cgbmF0dXJhbCBoZWlnaHQgKi8KLmZjLXNjcm9sbGVyLAouZmMtZGF5LWdyaWQtY29udGFpbmVyLCAgICAvKiB0aGVzZSBkaXZzIG1pZ2h0IGJlIGFzc2lnbmVkIGhlaWdodCwgd2hpY2ggd2UgbmVlZCB0byBjbGVhcmVkICovCi5mYy10aW1lLWdyaWQtY29udGFpbmVyIHsgIC8qICovCglvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwoJaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi8qIGtpbGwgdGhlIGhvcml6b250YWwgYm9yZGVyL3BhZGRpbmcgdXNlZCB0byBjb21wZW5zYXRlIGZvciBzY3JvbGxiYXJzICovCi5mYy1yb3cgewoJYm9yZGVyOiAwICFpbXBvcnRhbnQ7CgltYXJnaW46IDAgIWltcG9ydGFudDsKfQoKCi8qIEJ1dHRvbiBDb250cm9scwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtYnV0dG9uLWdyb3VwLAouZmMgYnV0dG9uIHsKCWRpc3BsYXk6IG5vbmU7IC8qIGRvbid0IGRpc3BsYXkgYW55IGJ1dHRvbi1yZWxhdGVkIGNvbnRyb2xzICovCn0K"}},"time_used":205,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":205,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.337Z","timestamp":1785150870337,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-b1a7\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Ksr1bfr8%2BK3OMPJSVzz234EG6OxS7xq42IIzwIprspgYil9h8yb2RzL0Id2ZoO4C%2Fx1DCSA42S0zBpmBGGb7XbDwuZsnevr3accydaVAPC4EcWkP%2Fsb8bM1J1g%3D%3D\"}]}\r\ncf-ray: a21b388b9bd456a2-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"]}],"data":{"size":45479,"size_decoded":13821,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (32001)","md5":"42a368e95b4a38989c8984c672d29ec0","sha1":"70b2b29b138b9ddcdcbb58bd5d825f780eadcdfa","sha256":"fd8027b53a97cbd5782e85c5908e563c39776703ff9279f50658e630927b4167","sha512":"da12259367cbf8d3479142def6019d99afd3e6f49893cd14e6dbc0152cb7746125f170f88768ba7eb42f1efe41f9b9bf22d9a2f2727a92b01c8f915615c0468a","ssdeep":"768:QAGHCAGHHQO8nAAe1l6bV6JUOxOyywsvQm77xjBFQ/Sx1iJb2G:QAGHCAGHke26JUOxOOUjBa","tlshash":"5f132ae9370534f752db6f5e901f020972365956a60b8870387d8cb82ff1ea523a7e2d","first_seen":"2023-03-07T01:23:34Z","last_seen":"2026-07-27T11:25:33.541391Z","times_seen":6152,"resource_available":true,"data":"LyogPT0ganF1ZXJ5IG1vdXNld2hlZWwgcGx1Z2luID09IFZlcnNpb246IDMuMS4xMywgTGljZW5zZTogTUlUIExpY2Vuc2UgKE1JVCkgKi8KIWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sYSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWE6YShqUXVlcnkpfShmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZhciBnPWJ8fHdpbmRvdy5ldmVudCxoPWkuY2FsbChhcmd1bWVudHMsMSksaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7aWYoYj1hLmV2ZW50LmZpeChnKSxiLnR5cGU9Im1vdXNld2hlZWwiLCJkZXRhaWwiaW4gZyYmKG09LTEqZy5kZXRhaWwpLCJ3aGVlbERlbHRhImluIGcmJihtPWcud2hlZWxEZWx0YSksIndoZWVsRGVsdGFZImluIGcmJihtPWcud2hlZWxEZWx0YVkpLCJ3aGVlbERlbHRhWCJpbiBnJiYobD0tMSpnLndoZWVsRGVsdGFYKSwiYXhpcyJpbiBnJiZnLmF4aXM9PT1nLkhPUklaT05UQUxfQVhJUyYmKGw9LTEqbSxtPTApLGo9MD09PW0/bDptLCJkZWx0YVkiaW4gZyYmKG09LTEqZy5kZWx0YVksaj1tKSwiZGVsdGFYImluIGcmJihsPWcuZGVsdGFYLDA9PT1tJiYoaj0tMSpsKSksMCE9PW18fDAhPT1sKXtpZigxPT09Zy5kZWx0YU1vZGUpe3ZhciBxPWEuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLWxpbmUtaGVpZ2h0Iik7aio9cSxtKj1xLGwqPXF9ZWxzZSBpZigyPT09Zy5kZWx0YU1vZGUpe3ZhciByPWEuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLXBhZ2UtaGVpZ2h0Iik7aio9cixtKj1yLGwqPXJ9aWYobj1NYXRoLm1heChNYXRoLmFicyhtKSxNYXRoLmFicyhsKSksKCFmfHxmPm4pJiYoZj1uLGQoZyxuKSYmKGYvPTQwKSksZChnLG4pJiYoai89NDAsbC89NDAsbS89NDApLGo9TWF0aFtqPj0xPyJmbG9vciI6ImNlaWwiXShqL2YpLGw9TWF0aFtsPj0xPyJmbG9vciI6ImNlaWwiXShsL2YpLG09TWF0aFttPj0xPyJmbG9vciI6ImNlaWwiXShtL2YpLGsuc2V0dGluZ3Mubm9ybWFsaXplT2Zmc2V0JiZ0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIHM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtvPWIuY2xpZW50WC1zLmxlZnQscD1iLmNsaWVudFktcy50b3B9cmV0dXJuIGIuZGVsdGFYPWwsYi5kZWx0YVk9bSxiLmRlbHRhRmFjdG9yPWYsYi5vZmZzZXRYPW8sYi5vZmZzZXRZPXAsYi5kZWx0YU1vZGU9MCxoLnVuc2hpZnQoYixqLGwsbSksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dChjLDIwMCksKGEuZXZlbnQuZGlzcGF0Y2h8fGEuZXZlbnQuaGFuZGxlKS5hcHBseSh0aGlzLGgpfX1mdW5jdGlvbiBjKCl7Zj1udWxsfWZ1bmN0aW9uIGQoYSxiKXtyZXR1cm4gay5zZXR0aW5ncy5hZGp1c3RPbGREZWx0YXMmJiJtb3VzZXdoZWVsIj09PWEudHlwZSYmYiUxMjA9PT0wfXZhciBlLGYsZz1bIndoZWVsIiwibW91c2V3aGVlbCIsIkRPTU1vdXNlU2Nyb2xsIiwiTW96TW91c2VQaXhlbFNjcm9sbCJdLGg9Im9ud2hlZWwiaW4gZG9jdW1lbnR8fGRvY3VtZW50LmRvY3VtZW50TW9kZT49OT9bIndoZWVsIl06WyJtb3VzZXdoZWVsIiwiRG9tTW91c2VTY3JvbGwiLCJNb3pNb3VzZVBpeGVsU2Nyb2xsIl0saT1BcnJheS5wcm90b3R5cGUuc2xpY2U7aWYoYS5ldmVudC5maXhIb29rcylmb3IodmFyIGo9Zy5sZW5ndGg7ajspYS5ldmVudC5maXhIb29rc1tnWy0tal1dPWEuZXZlbnQubW91c2VIb29rczt2YXIgaz1hLmV2ZW50LnNwZWNpYWwubW91c2V3aGVlbD17dmVyc2lvbjoiMy4xLjEyIixzZXR1cDpmdW5jdGlvbigpe2lmKHRoaXMuYWRkRXZlbnRMaXN0ZW5lcilmb3IodmFyIGM9aC5sZW5ndGg7YzspdGhpcy5hZGRFdmVudExpc3RlbmVyKGhbLS1jXSxiLCExKTtlbHNlIHRoaXMub25tb3VzZXdoZWVsPWI7YS5kYXRhKHRoaXMsIm1vdXNld2hlZWwtbGluZS1oZWlnaHQiLGsuZ2V0TGluZUhlaWdodCh0aGlzKSksYS5kYXRhKHRoaXMsIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiLGsuZ2V0UGFnZUhlaWdodCh0aGlzKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7aWYodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKWZvcih2YXIgYz1oLmxlbmd0aDtjOyl0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaFstLWNdLGIsITEpO2Vsc2UgdGhpcy5vbm1vdXNld2hlZWw9bnVsbDthLnJlbW92ZURhdGEodGhpcywibW91c2V3aGVlbC1saW5lLWhlaWdodCIpLGEucmVtb3ZlRGF0YSh0aGlzLCJtb3VzZXdoZWVsLXBhZ2UtaGVpZ2h0Iil9LGdldExpbmVIZWlnaHQ6ZnVuY3Rpb24oYil7dmFyIGM9YShiKSxkPWNbIm9mZnNldFBhcmVudCJpbiBhLmZuPyJvZmZzZXRQYXJlbnQiOiJwYXJlbnQiXSgpO3JldHVybiBkLmxlbmd0aHx8KGQ9YSgiYm9keSIpKSxwYXJzZUludChkLmNzcygiZm9udFNpemUiKSwxMCl8fHBhcnNlSW50KGMuY3NzKCJmb250U2l6ZSIpLDEwKXx8MTZ9LGdldFBhZ2VIZWlnaHQ6ZnVuY3Rpb24oYil7cmV0dXJuIGEoYikuaGVpZ2h0KCl9LHNldHRpbmdzOnthZGp1c3RPbGREZWx0YXM6ITAsbm9ybWFsaXplT2Zmc2V0OiEwfX07YS5mbi5leHRlbmQoe21vdXNld2hlZWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/dGhpcy5iaW5kKCJtb3VzZXdoZWVsIixhKTp0aGlzLnRyaWdnZXIoIm1vdXNld2hlZWwiKX0sdW5tb3VzZXdoZWVsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnVuYmluZCgibW91c2V3aGVlbCIsYSl9fSl9KTshZnVuY3Rpb24oYSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxhKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YTphKGpRdWVyeSl9KGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYil7dmFyIGc9Ynx8d2luZG93LmV2ZW50LGg9aS5jYWxsKGFyZ3VtZW50cywxKSxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtpZihiPWEuZXZlbnQuZml4KGcpLGIudHlwZT0ibW91c2V3aGVlbCIsImRldGFpbCJpbiBnJiYobT0tMSpnLmRldGFpbCksIndoZWVsRGVsdGEiaW4gZyYmKG09Zy53aGVlbERlbHRhKSwid2hlZWxEZWx0YVkiaW4gZyYmKG09Zy53aGVlbERlbHRhWSksIndoZWVsRGVsdGFYImluIGcmJihsPS0xKmcud2hlZWxEZWx0YVgpLCJheGlzImluIGcmJmcuYXhpcz09PWcuSE9SSVpPTlRBTF9BWElTJiYobD0tMSptLG09MCksaj0wPT09bT9sOm0sImRlbHRhWSJpbiBnJiYobT0tMSpnLmRlbHRhWSxqPW0pLCJkZWx0YVgiaW4gZyYmKGw9Zy5kZWx0YVgsMD09PW0mJihqPS0xKmwpKSwwIT09bXx8MCE9PWwpe2lmKDE9PT1nLmRlbHRhTW9kZSl7dmFyIHE9YS5kYXRhKHRoaXMsIm1vdXNld2hlZWwtbGluZS1oZWlnaHQiKTtqKj1xLG0qPXEsbCo9cX1lbHNlIGlmKDI9PT1nLmRlbHRhTW9kZSl7dmFyIHI9YS5kYXRhKHRoaXMsIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiKTtqKj1yLG0qPXIsbCo9cn1pZihuPU1hdGgubWF4KE1hdGguYWJzKG0pLE1hdGguYWJzKGwpKSwoIWZ8fGY+bikmJihmPW4sZChnLG4pJiYoZi89NDApKSxkKGcsbikmJihqLz00MCxsLz00MCxtLz00MCksaj1NYXRoW2o+PTE/ImZsb29yIjoiY2VpbCJdKGovZiksbD1NYXRoW2w+PTE/ImZsb29yIjoiY2VpbCJdKGwvZiksbT1NYXRoW20+PTE/ImZsb29yIjoiY2VpbCJdKG0vZiksay5zZXR0aW5ncy5ub3JtYWxpemVPZmZzZXQmJnRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIgcz10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO289Yi5jbGllbnRYLXMubGVmdCxwPWIuY2xpZW50WS1zLnRvcH1yZXR1cm4gYi5kZWx0YVg9bCxiLmRlbHRhWT1tLGIuZGVsdGFGYWN0b3I9ZixiLm9mZnNldFg9byxiLm9mZnNldFk9cCxiLmRlbHRhTW9kZT0wLGgudW5zaGlmdChiLGosbCxtKSxlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KGMsMjAwKSwoYS5ldmVudC5kaXNwYXRjaHx8YS5ldmVudC5oYW5kbGUpLmFwcGx5KHRoaXMsaCl9fWZ1bmN0aW9uIGMoKXtmPW51bGx9ZnVuY3Rpb24gZChhLGIpe3JldHVybiBrLnNldHRpbmdzLmFkanVzdE9sZERlbHRhcyYmIm1vdXNld2hlZWwiPT09YS50eXBlJiZiJTEyMD09PTB9dmFyIGUsZixnPVsid2hlZWwiLCJtb3VzZXdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJNb3pNb3VzZVBpeGVsU2Nyb2xsIl0saD0ib253aGVlbCJpbiBkb2N1bWVudHx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPj05P1sid2hlZWwiXTpbIm1vdXNld2hlZWwiLCJEb21Nb3VzZVNjcm9sbCIsIk1vek1vdXNlUGl4ZWxTY3JvbGwiXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZTtpZihhLmV2ZW50LmZpeEhvb2tzKWZvcih2YXIgaj1nLmxlbmd0aDtqOylhLmV2ZW50LmZpeEhvb2tzW2dbLS1qXV09YS5ldmVudC5tb3VzZUhvb2tzO3ZhciBrPWEuZXZlbnQuc3BlY2lhbC5tb3VzZXdoZWVsPXt2ZXJzaW9uOiIzLjEuMTIiLHNldHVwOmZ1bmN0aW9uKCl7aWYodGhpcy5hZGRFdmVudExpc3RlbmVyKWZvcih2YXIgYz1oLmxlbmd0aDtjOyl0aGlzLmFkZEV2ZW50TGlzdGVuZXIoaFstLWNdLGIsITEpO2Vsc2UgdGhpcy5vbm1vdXNld2hlZWw9YjthLmRhdGEodGhpcywibW91c2V3aGVlbC1saW5lLWhlaWdodCIsay5nZXRMaW5lSGVpZ2h0KHRoaXMpKSxhLmRhdGEodGhpcywibW91c2V3aGVlbC1wYWdlLWhlaWdodCIsay5nZXRQYWdlSGVpZ2h0KHRoaXMpKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtpZih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpZm9yKHZhciBjPWgubGVuZ3RoO2M7KXRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihoWy0tY10sYiwhMSk7ZWxzZSB0aGlzLm9ubW91c2V3aGVlbD1udWxsO2EucmVtb3ZlRGF0YSh0aGlzLCJtb3VzZXdoZWVsLWxpbmUtaGVpZ2h0IiksYS5yZW1vdmVEYXRhKHRoaXMsIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiKX0sZ2V0TGluZUhlaWdodDpmdW5jdGlvbihiKXt2YXIgYz1hKGIpLGQ9Y1sib2Zmc2V0UGFyZW50ImluIGEuZm4/Im9mZnNldFBhcmVudCI6InBhcmVudCJdKCk7cmV0dXJuIGQubGVuZ3RofHwoZD1hKCJib2R5IikpLHBhcnNlSW50KGQuY3NzKCJmb250U2l6ZSIpLDEwKXx8cGFyc2VJbnQoYy5jc3MoImZvbnRTaXplIiksMTApfHwxNn0sZ2V0UGFnZUhlaWdodDpmdW5jdGlvbihiKXtyZXR1cm4gYShiKS5oZWlnaHQoKX0sc2V0dGluZ3M6e2FkanVzdE9sZERlbHRhczohMCxub3JtYWxpemVPZmZzZXQ6ITB9fTthLmZuLmV4dGVuZCh7bW91c2V3aGVlbDpmdW5jdGlvbihhKXtyZXR1cm4gYT90aGlzLmJpbmQoIm1vdXNld2hlZWwiLGEpOnRoaXMudHJpZ2dlcigibW91c2V3aGVlbCIpfSx1bm1vdXNld2hlZWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudW5iaW5kKCJtb3VzZXdoZWVsIixhKX19KX0pOwovKiA9PSBtYWxpaHUganF1ZXJ5IGN1c3RvbSBzY3JvbGxiYXIgcGx1Z2luID09IFZlcnNpb246IDMuMS41LCBMaWNlbnNlOiBNSVQgTGljZW5zZSAoTUlUKSAqLwohZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxlKToidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZTplKGpRdWVyeSx3aW5kb3csZG9jdW1lbnQpfShmdW5jdGlvbihlKXshZnVuY3Rpb24odCl7dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCxhPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyxuPSJodHRwczoiPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD8iaHR0cHM6IjoiaHR0cDoiLGk9ImNkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnktbW91c2V3aGVlbC8zLjEuMTMvanF1ZXJ5Lm1vdXNld2hlZWwubWluLmpzIjtvfHwoYT9yZXF1aXJlKCJqcXVlcnktbW91c2V3aGVlbCIpKGUpOmUuZXZlbnQuc3BlY2lhbC5tb3VzZXdoZWVsfHxlKCJoZWFkIikuYXBwZW5kKGRlY29kZVVSSSgiJTNDc2NyaXB0IHNyYz0iK24rIi8vIitpKyIlM0UlM0Mvc2NyaXB0JTNFIikpKSx0KCl9KGZ1bmN0aW9uKCl7dmFyIHQsbz0ibUN1c3RvbVNjcm9sbGJhciIsYT0ibUNTIixuPSIubUN1c3RvbVNjcm9sbGJhciIsaT17c2V0VG9wOjAsc2V0TGVmdDowLGF4aXM6InkiLHNjcm9sbGJhclBvc2l0aW9uOiJpbnNpZGUiLHNjcm9sbEluZXJ0aWE6OTUwLGF1dG9EcmFnZ2VyTGVuZ3RoOiEwLGFsd2F5c1Nob3dTY3JvbGxiYXI6MCxzbmFwT2Zmc2V0OjAsbW91c2VXaGVlbDp7ZW5hYmxlOiEwLHNjcm9sbEFtb3VudDoiYXV0byIsYXhpczoieSIsZGVsdGFGYWN0b3I6ImF1dG8iLGRpc2FibGVPdmVyOlsic2VsZWN0Iiwib3B0aW9uIiwia2V5Z2VuIiwiZGF0YWxpc3QiLCJ0ZXh0YXJlYSJdfSxzY3JvbGxCdXR0b25zOntzY3JvbGxUeXBlOiJzdGVwbGVzcyIsc2Nyb2xsQW1vdW50OiJhdXRvIn0sa2V5Ym9hcmQ6e2VuYWJsZTohMCxzY3JvbGxUeXBlOiJzdGVwbGVzcyIsc2Nyb2xsQW1vdW50OiJhdXRvIn0sY29udGVudFRvdWNoU2Nyb2xsOjI1LGRvY3VtZW50VG91Y2hTY3JvbGw6ITAsYWR2YW5jZWQ6e2F1dG9TY3JvbGxPbkZvY3VzOiJpbnB1dCx0ZXh0YXJlYSxzZWxlY3QsYnV0dG9uLGRhdGFsaXN0LGtleWdlbixhW3RhYmluZGV4XSxhcmVhLG9iamVjdCxbY29udGVudGVkaXRhYmxlPSd0cnVlJ10iLHVwZGF0ZU9uQ29udGVudFJlc2l6ZTohMCx1cGRhdGVPbkltYWdlTG9hZDoiYXV0byIsYXV0b1VwZGF0ZVRpbWVvdXQ6NjB9LHRoZW1lOiJsaWdodCIsY2FsbGJhY2tzOntvblRvdGFsU2Nyb2xsT2Zmc2V0OjAsb25Ub3RhbFNjcm9sbEJhY2tPZmZzZXQ6MCxhbHdheXNUcmlnZ2VyT2Zmc2V0czohMH19LHI9MCxsPXt9LHM9d2luZG93LmF0dGFjaEV2ZW50JiYhd2luZG93LmFkZEV2ZW50TGlzdGVuZXI/MTowLGM9ITEsZD1bIm1DU0JfZHJhZ2dlcl9vbkRyYWciLCJtQ1NCX3Njcm9sbFRvb2xzX29uRHJhZyIsIm1DU19pbWdfbG9hZGVkIiwibUNTX2Rpc2FibGVkIiwibUNTX2Rlc3Ryb3llZCIsIm1DU19ub19zY3JvbGxiYXIiLCJtQ1MtYXV0b0hpZGUiLCJtQ1MtZGlyLXJ0bCIsIm1DU19ub19zY3JvbGxiYXJfeSIsIm1DU19ub19zY3JvbGxiYXJfeCIsIm1DU195X2hpZGRlbiIsIm1DU194X2hpZGRlbiIsIm1DU0JfZHJhZ2dlckNvbnRhaW5lciIsIm1DU0JfYnV0dG9uVXAiLCJtQ1NCX2J1dHRvbkRvd24iLCJtQ1NCX2J1dHRvbkxlZnQiLCJtQ1NCX2J1dHRvblJpZ2h0Il0sdT17aW5pdDpmdW5jdGlvbih0KXt2YXIgdD1lLmV4dGVuZCghMCx7fSxpLHQpLG89Zi5jYWxsKHRoaXMpO2lmKHQubGl2ZSl7dmFyIHM9dC5saXZlU2VsZWN0b3J8fHRoaXMuc2VsZWN0b3J8fG4sYz1lKHMpO2lmKCJvZmYiPT09dC5saXZlKXJldHVybiB2b2lkIG0ocyk7bFtzXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5tQ3VzdG9tU2Nyb2xsYmFyKHQpLCJvbmNlIj09PXQubGl2ZSYmYy5sZW5ndGgmJm0ocyl9LDUwMCl9ZWxzZSBtKHMpO3JldHVybiB0LnNldFdpZHRoPXQuc2V0X3dpZHRoP3Quc2V0X3dpZHRoOnQuc2V0V2lkdGgsdC5zZXRIZWlnaHQ9dC5zZXRfaGVpZ2h0P3Quc2V0X2hlaWdodDp0LnNldEhlaWdodCx0LmF4aXM9dC5ob3Jpem9udGFsU2Nyb2xsPyJ4IjpwKHQuYXhpcyksdC5zY3JvbGxJbmVydGlhPXQuc2Nyb2xsSW5lcnRpYT4wJiZ0LnNjcm9sbEluZXJ0aWE8MTc/MTc6dC5zY3JvbGxJbmVydGlhLCJvYmplY3QiIT10eXBlb2YgdC5tb3VzZVdoZWVsJiYxPT10Lm1vdXNlV2hlZWwmJih0Lm1vdXNlV2hlZWw9e2VuYWJsZTohMCxzY3JvbGxBbW91bnQ6ImF1dG8iLGF4aXM6InkiLHByZXZlbnREZWZhdWx0OiExLGRlbHRhRmFjdG9yOiJhdXRvIixub3JtYWxpemVEZWx0YTohMSxpbnZlcnQ6ITF9KSx0Lm1vdXNlV2hlZWwuc2Nyb2xsQW1vdW50PXQubW91c2VXaGVlbFBpeGVscz90Lm1vdXNlV2hlZWxQaXhlbHM6dC5tb3VzZVdoZWVsLnNjcm9sbEFtb3VudCx0Lm1vdXNlV2hlZWwubm9ybWFsaXplRGVsdGE9dC5hZHZhbmNlZC5ub3JtYWxpemVNb3VzZVdoZWVsRGVsdGE/dC5hZHZhbmNlZC5ub3JtYWxpemVNb3VzZVdoZWVsRGVsdGE6dC5tb3VzZVdoZWVsLm5vcm1hbGl6ZURlbHRhLHQuc2Nyb2xsQnV0dG9ucy5zY3JvbGxUeXBlPWcodC5zY3JvbGxCdXR0b25zLnNjcm9sbFR5cGUpLGgodCksZShvKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKTtpZighby5kYXRhKGEpKXtvLmRhdGEoYSx7aWR4OisrcixvcHQ6dCxzY3JvbGxSYXRpbzp7eTpudWxsLHg6bnVsbH0sb3ZlcmZsb3dlZDpudWxsLGNvbnRlbnRSZXNldDp7eTpudWxsLHg6bnVsbH0sYmluZEV2ZW50czohMSx0d2VlblJ1bm5pbmc6ITEsc2VxdWVudGlhbDp7fSxsYW5nRGlyOm8uY3NzKCJkaXJlY3Rpb24iKSxjYk9mZnNldHM6bnVsbCx0cmlnZ2VyOm51bGwscG9sbDp7c2l6ZTp7bzowLG46MH0saW1nOntvOjAsbjowfSxjaGFuZ2U6e286MCxuOjB9fX0pO3ZhciBuPW8uZGF0YShhKSxpPW4ub3B0LGw9by5kYXRhKCJtY3MtYXhpcyIpLHM9by5kYXRhKCJtY3Mtc2Nyb2xsYmFyLXBvc2l0aW9uIiksYz1vLmRhdGEoIm1jcy10aGVtZSIpO2wmJihpLmF4aXM9bCkscyYmKGkuc2Nyb2xsYmFyUG9zaXRpb249cyksYyYmKGkudGhlbWU9YyxoKGkpKSx2LmNhbGwodGhpcyksbiYmaS5jYWxsYmFja3Mub25DcmVhdGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBpLmNhbGxiYWNrcy5vbkNyZWF0ZSYmaS5jYWxsYmFja3Mub25DcmVhdGUuY2FsbCh0aGlzKSxlKCIjbUNTQl8iK24uaWR4KyJfY29udGFpbmVyIGltZzpub3QoLiIrZFsyXSsiKSIpLmFkZENsYXNzKGRbMl0pLHUudXBkYXRlLmNhbGwobnVsbCxvKX19KX0sdXBkYXRlOmZ1bmN0aW9uKHQsbyl7dmFyIG49dHx8Zi5jYWxsKHRoaXMpO3JldHVybiBlKG4pLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO2lmKHQuZGF0YShhKSl7dmFyIG49dC5kYXRhKGEpLGk9bi5vcHQscj1lKCIjbUNTQl8iK24uaWR4KyJfY29udGFpbmVyIiksbD1lKCIjbUNTQl8iK24uaWR4KSxzPVtlKCIjbUNTQl8iK24uaWR4KyJfZHJhZ2dlcl92ZXJ0aWNhbCIpLGUoIiNtQ1NCXyIrbi5pZHgrIl9kcmFnZ2VyX2hvcml6b250YWwiKV07aWYoIXIubGVuZ3RoKXJldHVybjtuLnR3ZWVuUnVubmluZyYmUSh0KSxvJiZuJiZpLmNhbGxiYWNrcy5vbkJlZm9yZVVwZGF0ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGkuY2FsbGJhY2tzLm9uQmVmb3JlVXBkYXRlJiZpLmNhbGxiYWNrcy5vbkJlZm9yZVVwZGF0ZS5jYWxsKHRoaXMpLHQuaGFzQ2xhc3MoZFszXSkmJnQucmVtb3ZlQ2xhc3MoZFszXSksdC5oYXNDbGFzcyhkWzRdKSYmdC5yZW1vdmVDbGFzcyhkWzRdKSxsLmNzcygibWF4LWhlaWdodCIsIm5vbmUiKSxsLmhlaWdodCgpIT09dC5oZWlnaHQoKSYmbC5jc3MoIm1heC1oZWlnaHQiLHQuaGVpZ2h0KCkpLF8uY2FsbCh0aGlzKSwieSI9PT1pLmF4aXN8fGkuYWR2YW5jZWQuYXV0b0V4cGFuZEhvcml6b250YWxTY3JvbGx8fHIuY3NzKCJ3aWR0aCIseChyKSksbi5vdmVyZmxvd2VkPXkuY2FsbCh0aGlzKSxNLmNhbGwodGhpcyksaS5hdXRvRHJhZ2dlckxlbmd0aCYmUy5jYWxsKHRoaXMpLGIuY2FsbCh0aGlzKSxULmNhbGwodGhpcyk7dmFyIGM9W01hdGguYWJzKHJbMF0ub2Zmc2V0VG9wKSxNYXRoLmFicyhyWzBdLm9mZnNldExlZnQpXTsieCIhPT1pLmF4aXMmJihuLm92ZXJmbG93ZWRbMF0/c1swXS5oZWlnaHQoKT5zWzBdLnBhcmVudCgpLmhlaWdodCgpP0IuY2FsbCh0aGlzKTooRyh0LGNbMF0udG9TdHJpbmcoKSx7ZGlyOiJ5IixkdXI6MCxvdmVyd3JpdGU6Im5vbmUifSksbi5jb250ZW50UmVzZXQueT1udWxsKTooQi5jYWxsKHRoaXMpLCJ5Ij09PWkuYXhpcz9rLmNhbGwodGhpcyk6Inl4Ij09PWkuYXhpcyYmbi5vdmVyZmxvd2VkWzFdJiZHKHQsY1sxXS50b1N0cmluZygpLHtkaXI6IngiLGR1cjowLG92ZXJ3cml0ZToibm9uZSJ9KSkpLCJ5IiE9PWkuYXhpcyYmKG4ub3ZlcmZsb3dlZFsxXT9zWzFdLndpZHRoKCk+c1sxXS5wYXJlbnQoKS53aWR0aCgpP0IuY2FsbCh0aGlzKTooRyh0LGNbMV0udG9TdHJpbmcoKSx7ZGlyOiJ4IixkdXI6MCxvdmVyd3JpdGU6Im5vbmUifSksbi5jb250ZW50UmVzZXQueD1udWxsKTooQi5jYWxsKHRoaXMpLCJ4Ij09PWkuYXhpcz9rLmNhbGwodGhpcyk6Inl4Ij09PWkuYXhpcyYmbi5vdmVyZmxvd2VkWzBdJiZHKHQsY1swXS50b1N0cmluZygpLHtkaXI6InkiLGR1cjowLG92ZXJ3cml0ZToibm9uZSJ9KSkpLG8mJm4mJigyPT09byYmaS5jYWxsYmFja3Mub25JbWFnZUxvYWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBpLmNhbGxiYWNrcy5vbkltYWdlTG9hZD9pLmNhbGxiYWNrcy5vbkltYWdlTG9hZC5jYWxsKHRoaXMpOjM9PT1vJiZpLmNhbGxiYWNrcy5vblNlbGVjdG9yQ2hhbmdlJiYiZnVuY3Rpb24iPT10eXBlb2YgaS5jYWxsYmFja3Mub25TZWxlY3RvckNoYW5nZT9pLmNhbGxiYWNrcy5vblNlbGVjdG9yQ2hhbmdlLmNhbGwodGhpcyk6aS5jYWxsYmFja3Mub25VcGRhdGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBpLmNhbGxiYWNrcy5vblVwZGF0ZSYmaS5jYWxsYmFja3Mub25VcGRhdGUuY2FsbCh0aGlzKSksTi5jYWxsKHRoaXMpfX0pfSxzY3JvbGxUbzpmdW5jdGlvbih0LG8pe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdCYmbnVsbCE9dCl7dmFyIG49Zi5jYWxsKHRoaXMpO3JldHVybiBlKG4pLmVhY2goZnVuY3Rpb24oKXt2YXIgbj1lKHRoaXMpO2lmKG4uZGF0YShhKSl7dmFyIGk9bi5kYXRhKGEpLHI9aS5vcHQsbD17dHJpZ2dlcjoiZXh0ZXJuYWwiLHNjcm9sbEluZXJ0aWE6ci5zY3JvbGxJbmVydGlhLHNjcm9sbEVhc2luZzoibWNzRWFzZUluT3V0Iixtb3ZlRHJhZ2dlcjohMSx0aW1lb3V0OjYwLGNhbGxiYWNrczohMCxvblN0YXJ0OiEwLG9uVXBkYXRlOiEwLG9uQ29tcGxldGU6ITB9LHM9ZS5leHRlbmQoITAse30sbCxvKSxjPVkuY2FsbCh0aGlzLHQpLGQ9cy5zY3JvbGxJbmVydGlhPjAmJnMuc2Nyb2xsSW5lcnRpYTwxNz8xNzpzLnNjcm9sbEluZXJ0aWE7Y1swXT1YLmNhbGwodGhpcyxjWzBdLCJ5IiksY1sxXT1YLmNhbGwodGhpcyxjWzFdLCJ4Iikscy5tb3ZlRHJhZ2dlciYmKGNbMF0qPWkuc2Nyb2xsUmF0aW8ueSxjWzFdKj1pLnNjcm9sbFJhdGlvLngpLHMuZHVyPW5lKCk/MDpkLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtudWxsIT09Y1swXSYmInVuZGVmaW5lZCIhPXR5cGVvZiBjWzBdJiYieCIhPT1yLmF4aXMmJmkub3ZlcmZsb3dlZFswXSYmKHMuZGlyPSJ5IixzLm92ZXJ3cml0ZT0iYWxsIixHKG4sY1swXS50b1N0cmluZygpLHMpKSxudWxsIT09Y1sxXSYmInVuZGVmaW5lZCIhPXR5cGVvZiBjWzFdJiYieSIhPT1yLmF4aXMmJmkub3ZlcmZsb3dlZFsxXSYmKHMuZGlyPSJ4IixzLm92ZXJ3cml0ZT0ibm9uZSIsRyhuLGNbMV0udG9TdHJpbmcoKSxzKSl9LHMudGltZW91dCl9fSl9fSxzdG9wOmZ1bmN0aW9uKCl7dmFyIHQ9Zi5jYWxsKHRoaXMpO3JldHVybiBlKHQpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3QuZGF0YShhKSYmUSh0KX0pfSxkaXNhYmxlOmZ1bmN0aW9uKHQpe3ZhciBvPWYuY2FsbCh0aGlzKTtyZXR1cm4gZShvKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKTtpZihvLmRhdGEoYSkpe28uZGF0YShhKTtOLmNhbGwodGhpcywicmVtb3ZlIiksay5jYWxsKHRoaXMpLHQmJkIuY2FsbCh0aGlzKSxNLmNhbGwodGhpcywhMCksby5hZGRDbGFzcyhkWzNdKX19KX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0PWYuY2FsbCh0aGlzKTtyZXR1cm4gZSh0KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49ZSh0aGlzKTtpZihuLmRhdGEoYSkpe3ZhciBpPW4uZGF0YShhKSxyPWkub3B0LGw9ZSgiI21DU0JfIitpLmlkeCkscz1lKCIjbUNTQl8iK2kuaWR4KyJfY29udGFpbmVyIiksYz1lKCIubUNTQl8iK2kuaWR4KyJfc2Nyb2xsYmFyIik7ci5saXZlJiZtKHIubGl2ZVNlbGVjdG9yfHxlKHQpLnNlbGVjdG9yKSxOLmNhbGwodGhpcywicmVtb3ZlIiksay5jYWxsKHRoaXMpLEIuY2FsbCh0aGlzKSxuLnJlbW92ZURhdGEoYSksJCh0aGlzLCJtY3MiKSxjLnJlbW92ZSgpLHMuZmluZCgiaW1nLiIrZFsyXSkucmVtb3ZlQ2xhc3MoZFsyXSksbC5yZXBsYWNlV2l0aChzLmNvbnRlbnRzKCkpLG4ucmVtb3ZlQ2xhc3MobysiIF8iK2ErIl8iK2kuaWR4KyIgIitkWzZdKyIgIitkWzddKyIgIitkWzVdKyIgIitkWzNdKS5hZGRDbGFzcyhkWzRdKX19KX19LGY9ZnVuY3Rpb24oKXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIGUodGhpcyl8fGUodGhpcykubGVuZ3RoPDE/bjp0aGlzfSxoPWZ1bmN0aW9uKHQpe3ZhciBvPVsicm91bmRlZCIsInJvdW5kZWQtZGFyayIsInJvdW5kZWQtZG90cyIsInJvdW5kZWQtZG90cy1kYXJrIl0sYT1bInJvdW5kZWQtZG90cyIsInJvdW5kZWQtZG90cy1kYXJrIiwiM2QiLCIzZC1kYXJrIiwiM2QtdGhpY2siLCIzZC10aGljay1kYXJrIiwiaW5zZXQiLCJpbnNldC1kYXJrIiwiaW5zZXQtMiIsImluc2V0LTItZGFyayIsImluc2V0LTMiLCJpbnNldC0zLWRhcmsiXSxuPVsibWluaW1hbCIsIm1pbmltYWwtZGFyayJdLGk9WyJtaW5pbWFsIiwibWluaW1hbC1kYXJrIl0scj1bIm1pbmltYWwiLCJtaW5pbWFsLWRhcmsiXTt0LmF1dG9EcmFnZ2VyTGVuZ3RoPWUuaW5BcnJheSh0LnRoZW1lLG8pPi0xPyExOnQuYXV0b0RyYWdnZXJMZW5ndGgsdC5hdXRvRXhwYW5kU2Nyb2xsYmFyPWUuaW5BcnJheSh0LnRoZW1lLGEpPi0xPyExOnQuYXV0b0V4cGFuZFNjcm9sbGJhcix0LnNjcm9sbEJ1dHRvbnMuZW5hYmxlPWUuaW5BcnJheSh0LnRoZW1lLG4pPi0xPyExOnQuc2Nyb2xsQnV0dG9ucy5lbmFibGUsdC5hdXRvSGlkZVNjcm9sbGJhcj1lLmluQXJyYXkodC50aGVtZSxpKT4tMT8hMDp0LmF1dG9IaWRlU2Nyb2xsYmFyLHQuc2Nyb2xsYmFyUG9zaXRpb249ZS5pbkFycmF5KHQudGhlbWUscik+LTE/Im91dHNpZGUiOnQuc2Nyb2xsYmFyUG9zaXRpb259LG09ZnVuY3Rpb24oZSl7bFtlXSYmKGNsZWFyVGltZW91dChsW2VdKSwkKGwsZSkpfSxwPWZ1bmN0aW9uKGUpe3JldHVybiJ5eCI9PT1lfHwieHkiPT09ZXx8ImF1dG8iPT09ZT8ieXgiOiJ4Ij09PWV8fCJob3Jpem9udGFsIj09PWU/IngiOiJ5In0sZz1mdW5jdGlvbihlKXtyZXR1cm4ic3RlcHBlZCI9PT1lfHwicGl4ZWxzIj09PWV8fCJzdGVwIj09PWV8fCJjbGljayI9PT1lPyJzdGVwcGVkIjoic3RlcGxlc3MifSx2PWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxuPXQuZGF0YShhKSxpPW4ub3B0LHI9aS5hdXRvRXhwYW5kU2Nyb2xsYmFyPyIgIitkWzFdKyJfZXhwYW5kIjoiIixsPVsiPGRpdiBpZD0nbUNTQl8iK24uaWR4KyJfc2Nyb2xsYmFyX3ZlcnRpY2FsJyBjbGFzcz0nbUNTQl9zY3JvbGxUb29scyBtQ1NCXyIrbi5pZHgrIl9zY3JvbGxiYXIgbUNTLSIraS50aGVtZSsiIG1DU0Jfc2Nyb2xsVG9vbHNfdmVydGljYWwiK3IrIic+PGRpdiBjbGFzcz0nIitkWzEyXSsiJz48ZGl2IGlkPSdtQ1NCXyIrbi5pZHgrIl9kcmFnZ2VyX3ZlcnRpY2FsJyBjbGFzcz0nbUNTQl9kcmFnZ2VyJyBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Jz48ZGl2IGNsYXNzPSdtQ1NCX2RyYWdnZXJfYmFyJyAvPjwvZGl2PjxkaXYgY2xhc3M9J21DU0JfZHJhZ2dlclJhaWwnIC8+PC9kaXY+PC9kaXY+IiwiPGRpdiBpZD0nbUNTQl8iK24uaWR4KyJfc2Nyb2xsYmFyX2hvcml6b250YWwnIGNsYXNzPSdtQ1NCX3Njcm9sbFRvb2xzIG1DU0JfIituLmlkeCsiX3Njcm9sbGJhciBtQ1MtIitpLnRoZW1lKyIgbUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIityKyInPjxkaXYgY2xhc3M9JyIrZFsxMl0rIic+PGRpdiBpZD0nbUNTQl8iK24uaWR4KyJfZHJhZ2dlcl9ob3Jpem9udGFsJyBjbGFzcz0nbUNTQl9kcmFnZ2VyJyBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Jz48ZGl2IGNsYXNzPSdtQ1NCX2RyYWdnZXJfYmFyJyAvPjwvZGl2PjxkaXYgY2xhc3M9J21DU0JfZHJhZ2dlclJhaWwnIC8+PC9kaXY+PC9kaXY+Il0scz0ieXgiPT09aS5heGlzPyJtQ1NCX3ZlcnRpY2FsX2hvcml6b250YWwiOiJ4Ij09PWkuYXhpcz8ibUNTQl9ob3Jpem9udGFsIjoibUNTQl92ZXJ0aWNhbCIsYz0ieXgiPT09aS5heGlzP2xbMF0rbFsxXToieCI9PT1pLmF4aXM/bFsxXTpsWzBdLHU9Inl4Ij09PWkuYXhpcz8iPGRpdiBpZD0nbUNTQl8iK24uaWR4KyJfY29udGFpbmVyX3dyYXBwZXInIGNsYXNzPSdtQ1NCX2NvbnRhaW5lcl93cmFwcGVyJyAvPiI6IiIsZj1pLmF1dG9IaWRlU2Nyb2xsYmFyPyIgIitkWzZdOiIiLGg9IngiIT09aS5heGlzJiYicnRsIj09PW4ubGFuZ0Rpcj8iICIrZFs3XToiIjtpLnNldFdpZHRoJiZ0LmNzcygid2lkdGgiLGkuc2V0V2lkdGgpLGkuc2V0SGVpZ2h0JiZ0LmNzcygiaGVpZ2h0IixpLnNldEhlaWdodCksaS5zZXRMZWZ0PSJ5IiE9PWkuYXhpcyYmInJ0bCI9PT1uLmxhbmdEaXI/Ijk4OTk5OXB4IjppLnNldExlZnQsdC5hZGRDbGFzcyhvKyIgXyIrYSsiXyIrbi5pZHgrZitoKS53cmFwSW5uZXIoIjxkaXYgaWQ9J21DU0JfIituLmlkeCsiJyBjbGFzcz0nbUN1c3RvbVNjcm9sbEJveCBtQ1MtIitpLnRoZW1lKyIgIitzKyInPjxkaXYgaWQ9J21DU0JfIituLmlkeCsiX2NvbnRhaW5lcicgY2xhc3M9J21DU0JfY29udGFpbmVyJyBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7IHRvcDoiK2kuc2V0VG9wKyI7IGxlZnQ6IitpLnNldExlZnQrIjsnIGRpcj0nIituLmxhbmdEaXIrIicgLz48L2Rpdj4iKTt2YXIgbT1lKCIjbUNTQl8iK24uaWR4KSxwPWUoIiNtQ1NCXyIrbi5pZHgrIl9jb250YWluZXIiKTsieSI9PT1pLmF4aXN8fGkuYWR2YW5jZWQuYXV0b0V4cGFuZEhvcml6b250YWxTY3JvbGx8fHAuY3NzKCJ3aWR0aCIseChwKSksIm91dHNpZGUiPT09aS5zY3JvbGxiYXJQb3NpdGlvbj8oInN0YXRpYyI9PT10LmNzcygicG9zaXRpb24iKSYmdC5jc3MoInBvc2l0aW9uIiwicmVsYXRpdmUiKSx0LmNzcygib3ZlcmZsb3ciLCJ2aXNpYmxlIiksbS5hZGRDbGFzcygibUNTQl9vdXRzaWRlIikuYWZ0ZXIoYykpOihtLmFkZENsYXNzKCJtQ1NCX2luc2lkZSIpLmFwcGVuZChjKSxwLndyYXAodSkpLHcuY2FsbCh0aGlzKTt2YXIgZz1bZSgiI21DU0JfIituLmlkeCsiX2RyYWdnZXJfdmVydGljYWwiKSxlKCIjbUNTQl8iK24uaWR4KyJfZHJhZ2dlcl9ob3Jpem9udGFsIildO2dbMF0uY3NzKCJtaW4taGVpZ2h0IixnWzBdLmhlaWdodCgpKSxnWzFdLmNzcygibWluLXdpZHRoIixnWzFdLndpZHRoKCkpfSx4PWZ1bmN0aW9uKHQpe3ZhciBvPVt0WzBdLnNjcm9sbFdpZHRoLE1hdGgubWF4LmFwcGx5KE1hdGgsdC5jaGlsZHJlbigpLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLm91dGVyV2lkdGgoITApfSkuZ2V0KCkpXSxhPXQucGFyZW50KCkud2lkdGgoKTtyZXR1cm4gb1swXT5hP29bMF06b1sxXT5hP29bMV06IjEwMCUifSxfPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxvPXQuZGF0YShhKSxuPW8ub3B0LGk9ZSgiI21DU0JfIitvLmlkeCsiX2NvbnRhaW5lciIpO2lmKG4uYWR2YW5jZWQuYXV0b0V4cGFuZEhvcml6b250YWxTY3JvbGwmJiJ5IiE9PW4uYXhpcyl7aS5jc3Moe3dpZHRoOiJhdXRvIiwibWluLXdpZHRoIjowLCJvdmVyZmxvdy14Ijoic2Nyb2xsIn0pO3ZhciByPU1hdGguY2VpbChpWzBdLnNjcm9sbFdpZHRoKTszPT09bi5hZHZhbmNlZC5hdXRvRXhwYW5kSG9yaXpvbnRhbFNjcm9sbHx8MiE9PW4uYWR2YW5jZWQuYXV0b0V4cGFuZEhvcml6b250YWxTY3JvbGwmJnI+aS5wYXJlbnQoKS53aWR0aCgpP2kuY3NzKHt3aWR0aDpyLCJtaW4td2lkdGgiOiIxMDAlIiwib3ZlcmZsb3cteCI6ImluaGVyaXQifSk6aS5jc3MoeyJvdmVyZmxvdy14IjoiaW5oZXJpdCIscG9zaXRpb246ImFic29sdXRlIn0pLndyYXAoIjxkaXYgY2xhc3M9J21DU0JfaF93cmFwcGVyJyBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgd2lkdGg6OTk5OTk5cHg7JyAvPiIpLmNzcyh7d2lkdGg6TWF0aC5jZWlsKGlbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQrLjQpLU1hdGguZmxvb3IoaVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSwibWluLXdpZHRoIjoiMTAwJSIscG9zaXRpb246InJlbGF0aXZlIn0pLnVud3JhcCgpfX0sdz1mdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbz10LmRhdGEoYSksbj1vLm9wdCxpPWUoIi5tQ1NCXyIrby5pZHgrIl9zY3JvbGxiYXI6Zmlyc3QiKSxyPW9lKG4uc2Nyb2xsQnV0dG9ucy50YWJpbmRleCk/InRhYmluZGV4PSciK24uc2Nyb2xsQnV0dG9ucy50YWJpbmRleCsiJyI6IiIsbD1bIjxhIGhyZWY9JyMnIGNsYXNzPSciK2RbMTNdKyInICIrcisiIC8+IiwiPGEgaHJlZj0nIycgY2xhc3M9JyIrZFsxNF0rIicgIityKyIgLz4iLCI8YSBocmVmPScjJyBjbGFzcz0nIitkWzE1XSsiJyAiK3IrIiAvPiIsIjxhIGhyZWY9JyMnIGNsYXNzPSciK2RbMTZdKyInICIrcisiIC8+Il0scz1bIngiPT09bi5heGlzP2xbMl06bFswXSwieCI9PT1uLmF4aXM/bFszXTpsWzFdLGxbMl0sbFszXV07bi5zY3JvbGxCdXR0b25zLmVuYWJsZSYmaS5wcmVwZW5kKHNbMF0pLmFwcGVuZChzWzFdKS5uZXh0KCIubUNTQl9zY3JvbGxUb29scyIpLnByZXBlbmQoc1syXSkuYXBwZW5kKHNbM10pfSxTPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxvPXQuZGF0YShhKSxuPWUoIiNtQ1NCXyIrby5pZHgpLGk9ZSgiI21DU0JfIitvLmlkeCsiX2NvbnRhaW5lciIpLHI9W2UoIiNtQ1NCXyIrby5pZHgrIl9kcmFnZ2VyX3ZlcnRpY2FsIiksZSgiI21DU0JfIitvLmlkeCsiX2RyYWdnZXJfaG9yaXpvbnRhbCIpXSxsPVtuLmhlaWdodCgpL2kub3V0ZXJIZWlnaHQoITEpLG4ud2lkdGgoKS9pLm91dGVyV2lkdGgoITEpXSxjPVtwYXJzZUludChyWzBdLmNzcygibWluLWhlaWdodCIpKSxNYXRoLnJvdW5kKGxbMF0qclswXS5wYXJlbnQoKS5oZWlnaHQoKSkscGFyc2VJbnQoclsxXS5jc3MoIm1pbi13aWR0aCIpKSxNYXRoLnJvdW5kKGxbMV0qclsxXS5wYXJlbnQoKS53aWR0aCgpKV0sZD1zJiZjWzFdPGNbMF0/Y1swXTpjWzFdLHU9cyYmY1szXTxjWzJdP2NbMl06Y1szXTtyWzBdLmNzcyh7aGVpZ2h0OmQsIm1heC1oZWlnaHQiOnJbMF0ucGFyZW50KCkuaGVpZ2h0KCktMTB9KS5maW5kKCIubUNTQl9kcmFnZ2VyX2JhciIpLmNzcyh7ImxpbmUtaGVpZ2h0IjpjWzBdKyJweCJ9KSxyWzFdLmNzcyh7d2lkdGg6dSwibWF4LXdpZHRoIjpyWzFdLnBhcmVudCgpLndpZHRoKCktMTB9KX0sYj1mdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbz10LmRhdGEoYSksbj1lKCIjbUNTQl8iK28uaWR4KSxpPWUoIiNtQ1NCXyIrby5pZHgrIl9jb250YWluZXIiKSxyPVtlKCIjbUNTQl8iK28uaWR4KyJfZHJhZ2dlcl92ZXJ0aWNhbCIpLGUoIiNtQ1NCXyIrby5pZHgrIl9kcmFnZ2VyX2hvcml6b250YWwiKV0sbD1baS5vdXRlckhlaWdodCghMSktbi5oZWlnaHQoKSxpLm91dGVyV2lkdGgoITEpLW4ud2lkdGgoKV0scz1bbFswXS8oclswXS5wYXJlbnQoKS5oZWlnaHQoKS1yWzBdLmhlaWdodCgpKSxsWzFdLyhyWzFdLnBhcmVudCgpLndpZHRoKCktclsxXS53aWR0aCgpKV07by5zY3JvbGxSYXRpbz17eTpzWzBdLHg6c1sxXX19LEM9ZnVuY3Rpb24oZSx0LG8pe3ZhciBhPW8/ZFswXSsiX2V4cGFuZGVkIjoiIixuPWUuY2xvc2VzdCgiLm1DU0Jfc2Nyb2xsVG9vbHMiKTsiYWN0aXZlIj09PXQ/KGUudG9nZ2xlQ2xhc3MoZFswXSsiICIrYSksbi50b2dnbGVDbGFzcyhkWzFdKSxlWzBdLl9kcmFnZ2FibGU9ZVswXS5fZHJhZ2dhYmxlPzA6MSk6ZVswXS5fZHJhZ2dhYmxlfHwoImhpZGUiPT09dD8oZS5yZW1vdmVDbGFzcyhkWzBdKSxuLnJlbW92ZUNsYXNzKGRbMV0pKTooZS5hZGRDbGFzcyhkWzBdKSxuLmFkZENsYXNzKGRbMV0pKSl9LHk9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG89dC5kYXRhKGEpLG49ZSgiI21DU0JfIitvLmlkeCksaT1lKCIjbUNTQl8iK28uaWR4KyJfY29udGFpbmVyIikscj1udWxsPT1vLm92ZXJmbG93ZWQ/aS5oZWlnaHQoKTppLm91dGVySGVpZ2h0KCExKSxsPW51bGw9PW8ub3ZlcmZsb3dlZD9pLndpZHRoKCk6aS5vdXRlcldpZHRoKCExKSxzPWlbMF0uc2Nyb2xsSGVpZ2h0LGM9aVswXS5zY3JvbGxXaWR0aDtyZXR1cm4gcz5yJiYocj1zKSxjPmwmJihsPWMpLFtyPm4uaGVpZ2h0KCksbD5uLndpZHRoKCldfSxCPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxvPXQuZGF0YShhKSxuPW8ub3B0LGk9ZSgiI21DU0JfIitvLmlkeCkscj1lKCIjbUNTQl8iK28uaWR4KyJfY29udGFpbmVyIiksbD1bZSgiI21DU0JfIitvLmlkeCsiX2RyYWdnZXJfdmVydGljYWwiKSxlKCIjbUNTQl8iK28uaWR4KyJfZHJhZ2dlcl9ob3Jpem9udGFsIildO2lmKFEodCksKCJ4IiE9PW4uYXhpcyYmIW8ub3ZlcmZsb3dlZFswXXx8InkiPT09bi5heGlzJiZvLm92ZXJmbG93ZWRbMF0pJiYobFswXS5hZGQocikuY3NzKCJ0b3AiLDApLEcodCwiX3Jlc2V0WSIpKSwieSIhPT1uLmF4aXMmJiFvLm92ZXJmbG93ZWRbMV18fCJ4Ij09PW4uYXhpcyYmby5vdmVyZmxvd2VkWzFdKXt2YXIgcz1keD0wOyJydGwiPT09by5sYW5nRGlyJiYocz1pLndpZHRoKCktci5vdXRlcldpZHRoKCExKSxkeD1NYXRoLmFicyhzL28uc2Nyb2xsUmF0aW8ueCkpLHIuY3NzKCJsZWZ0IixzKSxsWzFdLmNzcygibGVmdCIsZHgpLEcodCwiX3Jlc2V0WCIpfX0sVD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmV2ZW50LnNwZWNpYWwubW91c2V3aGVlbD8oY2xlYXJUaW1lb3V0KHIpLFcuY2FsbChvWzBdKSk6dCgpfSwxMDApfXZhciBvPWUodGhpcyksbj1vLmRhdGEoYSksaT1uLm9wdDtpZighbi5iaW5kRXZlbnRzKXtpZihJLmNhbGwodGhpcyksaS5jb250ZW50VG91Y2hTY3JvbGwmJkQuY2FsbCh0aGlzKSxFLmNhbGwodGhpcyksaS5tb3VzZVdoZWVsLmVuYWJsZSl7dmFyIHI7dCgpfVAuY2FsbCh0aGlzKSxVLmNhbGwodGhpcyksaS5hZHZhbmNlZC5hdXRvU2Nyb2xsT25Gb2N1cyYmSC5jYWxsKHRoaXMpLGkuc2Nyb2xsQnV0dG9ucy5lbmFibGUmJkYuY2FsbCh0aGlzKSxpLmtleWJvYXJkLmVuYWJsZSYmcS5jYWxsKHRoaXMpLG4uYmluZEV2ZW50cz0hMH19LGs9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG89dC5kYXRhKGEpLG49by5vcHQsaT1hKyJfIitvLmlkeCxyPSIubUNTQl8iK28uaWR4KyJfc2Nyb2xsYmFyIixsPWUoIiNtQ1NCXyIrby5pZHgrIiwjbUNTQl8iK28uaWR4KyJfY29udGFpbmVyLCNtQ1NCXyIrby5pZHgrIl9jb250YWluZXJfd3JhcHBlciwiK3IrIiAuIitkWzEyXSsiLCNtQ1NCXyIrby5pZHgrIl9kcmFnZ2VyX3ZlcnRpY2FsLCNtQ1NCXyIrby5pZHgrIl9kcmFnZ2VyX2hvcml6b250YWwsIityKyI+YSIpLHM9ZSgiI21DU0JfIitvLmlkeCsiX2NvbnRhaW5lciIpO24uYWR2YW5jZWQucmVsZWFzZURyYWdnYWJsZVNlbGVjdG9ycyYmbC5hZGQoZShuLmFkdmFuY2VkLnJlbGVhc2VEcmFnZ2FibGVTZWxlY3RvcnMpKSxuLmFkdmFuY2VkLmV4dHJhRHJhZ2dhYmxlU2VsZWN0b3JzJiZsLmFkZChlKG4uYWR2YW5jZWQuZXh0cmFEcmFnZ2FibGVTZWxlY3RvcnMpKSxvLmJpbmRFdmVudHMmJihlKGRvY3VtZW50KS5hZGQoZSghQSgpfHx0b3AuZG9jdW1lbnQpKS51bmJpbmQoIi4iK2kpLGwuZWFjaChmdW5jdGlvbigpe2UodGhpcykudW5iaW5kKCIuIitpKX0pLGNsZWFyVGltZW91dCh0WzBdLl9mb2N1c1RpbWVvdXQpLCQodFswXSwiX2ZvY3VzVGltZW91dCIpLGNsZWFyVGltZW91dChvLnNlcXVlbnRpYWwuc3RlcCksJChvLnNlcXVlbnRpYWwsInN0ZXAiKSxjbGVhclRpbWVvdXQoc1swXS5vbkNvbXBsZXRlVGltZW91dCksJChzWzBdLCJvbkNvbXBsZXRlVGltZW91dCIpLG8uYmluZEV2ZW50cz0hMSl9LE09ZnVuY3Rpb24odCl7dmFyIG89ZSh0aGlzKSxuPW8uZGF0YShhKSxpPW4ub3B0LHI9ZSgiI21DU0JfIituLmlkeCsiX2NvbnRhaW5lcl93cmFwcGVyIiksbD1yLmxlbmd0aD9yOmUoIiNtQ1NCXyIrbi5pZHgrIl9jb250YWluZXIiKSxzPVtlKCIjbUNTQl8iK24uaWR4KyJfc2Nyb2xsYmFyX3ZlcnRpY2FsIiksZSgiI21DU0JfIituLmlkeCsiX3Njcm9sbGJhcl9ob3Jpem9udGFsIildLGM9W3NbMF0uZmluZCgiLm1DU0JfZHJhZ2dlciIpLHNbMV0uZmluZCgiLm1DU0JfZHJhZ2dlciIpXTsieCIhPT1pLmF4aXMmJihuLm92ZXJmbG93ZWRbMF0mJiF0PyhzWzBdLmFkZChjWzBdKS5hZGQoc1swXS5jaGlsZHJlbigiYSIpKS5jc3MoImRpc3BsYXkiLCJibG9jayIpLGwucmVtb3ZlQ2xhc3MoZFs4XSsiICIrZFsxMF0pKTooaS5hbHdheXNTaG93U2Nyb2xsYmFyPygyIT09aS5hbHdheXNTaG93U2Nyb2xsYmFyJiZjWzBdLmNzcygiZGlzcGxheSIsIm5vbmUiKSxsLnJlbW92ZUNsYXNzKGRbMTBdKSk6KHNbMF0uY3NzKCJkaXNwbGF5Iiwibm9uZSIpLGwuYWRkQ2xhc3MoZFsxMF0pKSxsLmFkZENsYXNzKGRbOF0pKSksInkiIT09aS5heGlzJiYobi5vdmVyZmxvd2VkWzFdJiYhdD8oc1sxXS5hZGQoY1sxXSkuYWRkKHNbMV0uY2hpbGRyZW4oImEiKSkuY3NzKCJkaXNwbGF5IiwiYmxvY2siKSxsLnJlbW92ZUNsYXNzKGRbOV0rIiAiK2RbMTFdKSk6KGkuYWx3YXlzU2hvd1Njcm9sbGJhcj8oMiE9PWkuYWx3YXlzU2hvd1Njcm9sbGJhciYmY1sxXS5jc3MoImRpc3BsYXkiLCJub25lIiksbC5yZW1vdmVDbGFzcyhkWzExXSkpOihzWzFdLmNzcygiZGlzcGxheSIsIm5vbmUiKSxsLmFkZENsYXNzKGRbMTFdKSksbC5hZGRDbGFzcyhkWzldKSkpLG4ub3ZlcmZsb3dlZFswXXx8bi5vdmVyZmxvd2VkWzFdP28ucmVtb3ZlQ2xhc3MoZFs1XSk6by5hZGRDbGFzcyhkWzVdKX0sTz1mdW5jdGlvbih0KXt2YXIgbz10LnR5cGUsYT10LnRhcmdldC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQmJm51bGwhPT1mcmFtZUVsZW1lbnQ/W2UoZnJhbWVFbGVtZW50KS5vZmZzZXQoKS50b3AsZShmcmFtZUVsZW1lbnQpLm9mZnNldCgpLmxlZnRdOm51bGwsbj1BKCkmJnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQhPT10b3AuZG9jdW1lbnQmJm51bGwhPT1mcmFtZUVsZW1lbnQ/W2UodC52aWV3LmZyYW1lRWxlbWVudCkub2Zmc2V0KCkudG9wLGUodC52aWV3LmZyYW1lRWxlbWVudCkub2Zmc2V0KCkubGVmdF06WzAsMF07c3dpdGNoKG8pe2Nhc2UicG9pbnRlcmRvd24iOmNhc2UiTVNQb2ludGVyRG93biI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJNU1BvaW50ZXJNb3ZlIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJNU1BvaW50ZXJVcCI6cmV0dXJuIGE/W3Qub3JpZ2luYWxFdmVudC5wYWdlWS1hWzBdK25bMF0sdC5vcmlnaW5hbEV2ZW50LnBhZ2VYLWFbMV0rblsxXSwhMV06W3Qub3JpZ2luYWxFdmVudC5wYWdlWSx0Lm9yaWdpbmFsRXZlbnQucGFnZVgsITFdO2Nhc2UidG91Y2hzdGFydCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2UidG91Y2hlbmQiOnZhciBpPXQub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdfHx0Lm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0scj10Lm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGh8fHQub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg7cmV0dXJuIHQudGFyZ2V0Lm93bmVyRG9jdW1lbnQhPT1kb2N1bWVudD9baS5zY3JlZW5ZLGkuc2NyZWVuWCxyPjFdOltpLnBhZ2VZLGkucGFnZVgscj4xXTtkZWZhdWx0OnJldHVybiBhP1t0LnBhZ2VZLWFbMF0rblswXSx0LnBhZ2VYLWFbMV0rblsxXSwhMV06W3QucGFnZVksdC5wYWdlWCwhMV19fSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQsYSxuKXtpZihoWzBdLmlkbGVUaW1lcj1kLnNjcm9sbEluZXJ0aWE8MjMzPzI1MDowLG8uYXR0cigiaWQiKT09PWZbMV0pdmFyIGk9IngiLHM9KG9bMF0ub2Zmc2V0TGVmdC10K24pKmwuc2Nyb2xsUmF0aW8ueDtlbHNlIHZhciBpPSJ5IixzPShvWzBdLm9mZnNldFRvcC1lK2EpKmwuc2Nyb2xsUmF0aW8ueTtHKHIscy50b1N0cmluZygpLHtkaXI6aSxkcmFnOiEwfSl9dmFyIG8sbixpLHI9ZSh0aGlzKSxsPXIuZGF0YShhKSxkPWwub3B0LHU9YSsiXyIrbC5pZHgsZj1bIm1DU0JfIitsLmlkeCsiX2RyYWdnZXJfdmVydGljYWwiLCJtQ1NCXyIrbC5pZHgrIl9kcmFnZ2VyX2hvcml6b250YWwiXSxoPWUoIiNtQ1NCXyIrbC5pZHgrIl9jb250YWluZXIiKSxtPWUoIiMiK2ZbMF0rIiwjIitmWzFdKSxwPWQuYWR2YW5jZWQucmVsZWFzZURyYWdnYWJsZVNlbGVjdG9ycz9tLmFkZChlKGQuYWR2YW5jZWQucmVsZWFzZURyYWdnYWJsZVNlbGVjdG9ycykpOm0sZz1kLmFkdmFuY2VkLmV4dHJhRHJhZ2dhYmxlU2VsZWN0b3JzP2UoIUEoKXx8dG9wLmRvY3VtZW50KS5hZGQoZShkLmFkdmFuY2VkLmV4dHJhRHJhZ2dhYmxlU2VsZWN0b3JzKSk6ZSghQSgpfHx0b3AuZG9jdW1lbnQpO20uYmluZCgiY29udGV4dG1lbnUuIit1LGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0pLmJpbmQoIm1vdXNlZG93bi4iK3UrIiB0b3VjaHN0YXJ0LiIrdSsiIHBvaW50ZXJkb3duLiIrdSsiIE1TUG9pbnRlckRvd24uIit1LGZ1bmN0aW9uKHQpe2lmKHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpLGVlKHQpKXtjPSEwLHMmJihkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuITF9KSxMLmNhbGwoaCwhMSksUShyKSxvPWUodGhpcyk7dmFyIGE9by5vZmZzZXQoKSxsPU8odClbMF0tYS50b3AsdT1PKHQpWzFdLWEubGVmdCxmPW8uaGVpZ2h0KCkrYS50b3AsbT1vLndpZHRoKCkrYS5sZWZ0O2Y+bCYmbD4wJiZtPnUmJnU+MCYmKG49bCxpPXUpLEMobywiYWN0aXZlIixkLmF1dG9FeHBhbmRTY3JvbGxiYXIpfX0pLmJpbmQoInRvdWNobW92ZS4iK3UsZnVuY3Rpb24oZSl7ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCk7dmFyIGE9by5vZmZzZXQoKSxyPU8oZSlbMF0tYS50b3AsbD1PKGUpWzFdLWEubGVmdDt0KG4saSxyLGwpfSksZShkb2N1bWVudCkuYWRkKGcpLmJpbmQoIm1vdXNlbW92ZS4iK3UrIiBwb2ludGVybW92ZS4iK3UrIiBNU1BvaW50ZXJNb3ZlLiIrdSxmdW5jdGlvbihlKXtpZihvKXt2YXIgYT1vLm9mZnNldCgpLHI9TyhlKVswXS1hLnRvcCxsPU8oZSlbMV0tYS5sZWZ0O2lmKG49PT1yJiZpPT09bClyZXR1cm47dChuLGkscixsKX19KS5hZGQocCkuYmluZCgibW91c2V1cC4iK3UrIiB0b3VjaGVuZC4iK3UrIiBwb2ludGVydXAuIit1KyIgTVNQb2ludGVyVXAuIit1LGZ1bmN0aW9uKCl7byYmKEMobywiYWN0aXZlIixkLmF1dG9FeHBhbmRTY3JvbGxiYXIpLG89bnVsbCksYz0hMSxzJiYoZG9jdW1lbnQub25zZWxlY3RzdGFydD1udWxsKSxMLmNhbGwoaCwhMCl9KX0sRD1mdW5jdGlvbigpe2Z1bmN0aW9uIG8oZSl7aWYoIXRlKGUpfHxjfHxPKGUpWzJdKXJldHVybiB2b2lkKHQ9MCk7dD0xLGI9MCxDPTAsZD0xLHkucmVtb3ZlQ2xhc3MoIm1DU190b3VjaF9hY3Rpb24iKTt2YXIgbz1JLm9mZnNldCgpO3U9TyhlKVswXS1vLnRvcCxmPU8oZSlbMV0tby5sZWZ0LHo9W08oZSlbMF0sTyhlKVsxXV19ZnVuY3Rpb24gbihlKXtpZih0ZShlKSYmIWMmJiFPKGUpWzJdJiYoVC5kb2N1bWVudFRvdWNoU2Nyb2xsfHxlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwoIUN8fGIpJiZkKSl7Zz1LKCk7dmFyIHQ9TS5vZmZzZXQoKSxvPU8oZSlbMF0tdC50b3AsYT1PKGUpWzFdLXQubGVmdCxuPSJtY3NMaW5lYXJPdXQiO2lmKEUucHVzaChvKSxXLnB1c2goYSkselsyXT1NYXRoLmFicyhPKGUpWzBdLXpbMF0pLHpbM109TWF0aC5hYnMoTyhlKVsxXS16WzFdKSxCLm92ZXJmbG93ZWRbMF0pdmFyIGk9RFswXS5wYXJlbnQoKS5oZWlnaHQoKS1EWzBdLmhlaWdodCgpLHI9dS1vPjAmJm8tdT4tKGkqQi5zY3JvbGxSYXRpby55KSYmKDIqelszXTx6WzJdfHwieXgiPT09VC5heGlzKTtpZihCLm92ZXJmbG93ZWRbMV0pdmFyIGw9RFsxXS5wYXJlbnQoKS53aWR0aCgpLURbMV0ud2lkdGgoKSxoPWYtYT4wJiZhLWY+LShsKkIuc2Nyb2xsUmF0aW8ueCkmJigyKnpbMl08elszXXx8Inl4Ij09PVQuYXhpcyk7cnx8aD8oVXx8ZS5wcmV2ZW50RGVmYXVsdCgpLGI9MSk6KEM9MSx5LmFkZENsYXNzKCJtQ1NfdG91Y2hfYWN0aW9uIikpLFUmJmUucHJldmVudERlZmF1bHQoKSx3PSJ5eCI9PT1ULmF4aXM/W3UtbyxmLWFdOiJ4Ij09PVQuYXhpcz9bbnVsbCxmLWFdOlt1LW8sbnVsbF0sSVswXS5pZGxlVGltZXI9MjUwLEIub3ZlcmZsb3dlZFswXSYmcyh3WzBdLFIsbiwieSIsImFsbCIsITApLEIub3ZlcmZsb3dlZFsxXSYmcyh3WzFdLFIsbiwieCIsTCwhMCl9fWZ1bmN0aW9uIGkoZSl7aWYoIXRlKGUpfHxjfHxPKGUpWzJdKXJldHVybiB2b2lkKHQ9MCk7dD0xLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksUSh5KSxwPUsoKTt2YXIgbz1NLm9mZnNldCgpO2g9TyhlKVswXS1vLnRvcCxtPU8oZSlbMV0tby5sZWZ0LEU9W10sVz1bXX1mdW5jdGlvbiByKGUpe2lmKHRlKGUpJiYhYyYmIU8oZSlbMl0pe2Q9MCxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGI9MCxDPTAsdj1LKCk7dmFyIHQ9TS5vZmZzZXQoKSxvPU8oZSlbMF0tdC50b3AsYT1PKGUpWzFdLXQubGVmdDtpZighKHYtZz4zMCkpe189MWUzLyh2LXApO3ZhciBuPSJtY3NFYXNlT3V0IixpPTIuNT5fLHI9aT9bRVtFLmxlbmd0aC0yXSxXW1cubGVuZ3RoLTJdXTpbMCwwXTt4PWk/W28tclswXSxhLXJbMV1dOltvLWgsYS1tXTt2YXIgdT1bTWF0aC5hYnMoeFswXSksTWF0aC5hYnMoeFsxXSldO189aT9bTWF0aC5hYnMoeFswXS80KSxNYXRoLmFicyh4WzFdLzQpXTpbXyxfXTt2YXIgZj1bTWF0aC5hYnMoSVswXS5vZmZzZXRUb3ApLXhbMF0qbCh1WzBdL19bMF0sX1swXSksTWF0aC5hYnMoSVswXS5vZmZzZXRMZWZ0KS14WzFdKmwodVsxXS9fWzFdLF9bMV0pXTt3PSJ5eCI9PT1ULmF4aXM/W2ZbMF0sZlsxXV06IngiPT09VC5heGlzP1tudWxsLGZbMV1dOltmWzBdLG51bGxdLFM9WzQqdVswXStULnNjcm9sbEluZXJ0aWEsNCp1WzFdK1Quc2Nyb2xsSW5lcnRpYV07dmFyIHk9cGFyc2VJbnQoVC5jb250ZW50VG91Y2hTY3JvbGwpfHwwO3dbMF09dVswXT55P3dbMF06MCx3WzFdPXVbMV0+eT93WzFdOjAsQi5vdmVyZmxvd2VkWzBdJiZzKHdbMF0sU1swXSxuLCJ5IixMLCExKSxCLm92ZXJmbG93ZWRbMV0mJnMod1sxXSxTWzFdLG4sIngiLEwsITEpfX19ZnVuY3Rpb24gbChlLHQpe3ZhciBvPVsxLjUqdCwyKnQsdC8xLjUsdC8yXTtyZXR1cm4gZT45MD90PjQ/b1swXTpvWzNdOmU+NjA/dD4zP29bM106b1syXTplPjMwP3Q+OD9vWzFdOnQ+Nj9vWzBdOnQ+ND90Om9bMl06dD44P3Q6b1szXX1mdW5jdGlvbiBzKGUsdCxvLGEsbixpKXtlJiZHKHksZS50b1N0cmluZygpLHtkdXI6dCxzY3JvbGxFYXNpbmc6byxkaXI6YSxvdmVyd3JpdGU6bixkcmFnOml9KX12YXIgZCx1LGYsaCxtLHAsZyx2LHgsXyx3LFMsYixDLHk9ZSh0aGlzKSxCPXkuZGF0YShhKSxUPUIub3B0LGs9YSsiXyIrQi5pZHgsTT1lKCIjbUNTQl8iK0IuaWR4KSxJPWUoIiNtQ1NCXyIrQi5pZHgrIl9jb250YWluZXIiKSxEPVtlKCIjbUNTQl8iK0IuaWR4KyJfZHJhZ2dlcl92ZXJ0aWNhbCIpLGUoIiNtQ1NCXyIrQi5pZHgrIl9kcmFnZ2VyX2hvcml6b250YWwiKV0sRT1bXSxXPVtdLFI9MCxMPSJ5eCI9PT1ULmF4aXM/Im5vbmUiOiJhbGwiLHo9W10sUD1JLmZpbmQoImlmcmFtZSIpLEg9WyJ0b3VjaHN0YXJ0LiIraysiIHBvaW50ZXJkb3duLiIraysiIE1TUG9pbnRlckRvd24uIitrLCJ0b3VjaG1vdmUuIitrKyIgcG9pbnRlcm1vdmUuIitrKyIgTVNQb2ludGVyTW92ZS4iK2ssInRvdWNoZW5kLiIraysiIHBvaW50ZXJ1cC4iK2srIiBNU1BvaW50ZXJVcC4iK2tdLFU9dm9pZCAwIT09ZG9jdW1lbnQuYm9keS5zdHlsZS50b3VjaEFjdGlvbiYmIiIhPT1kb2N1bWVudC5ib2R5LnN0eWxlLnRvdWNoQWN0aW9uO0kuYmluZChIWzBdLGZ1bmN0aW9uKGUpe28oZSl9KS5iaW5kKEhbMV0sZnVuY3Rpb24oZSl7bihlKX0pLE0uYmluZChIWzBdLGZ1bmN0aW9uKGUpe2koZSl9KS5iaW5kKEhbMl0sZnVuY3Rpb24oZSl7cihlKX0pLFAubGVuZ3RoJiZQLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmJpbmQoImxvYWQiLGZ1bmN0aW9uKCl7QSh0aGlzKSYmZSh0aGlzLmNvbnRlbnREb2N1bWVudHx8dGhpcy5jb250ZW50V2luZG93LmRvY3VtZW50KS5iaW5kKEhbMF0sZnVuY3Rpb24oZSl7byhlKSxpKGUpfSkuYmluZChIWzFdLGZ1bmN0aW9uKGUpe24oZSl9KS5iaW5kKEhbMl0sZnVuY3Rpb24oZSl7cihlKX0pfSl9KX0sRT1mdW5jdGlvbigpe2Z1bmN0aW9uIG8oKXtyZXR1cm4gd2luZG93LmdldFNlbGVjdGlvbj93aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTpkb2N1bWVudC5zZWxlY3Rpb24mJiJDb250cm9sIiE9ZG9jdW1lbnQuc2VsZWN0aW9uLnR5cGU/ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkudGV4dDowfWZ1bmN0aW9uIG4oZSx0LG8pe2QudHlwZT1vJiZpPyJzdGVwcGVkIjoic3RlcGxlc3MiLGQuc2Nyb2xsQW1vdW50PTEwLGoocixlLHQsIm1jc0xpbmVhck91dCIsbz82MDpudWxsKX12YXIgaSxyPWUodGhpcyksbD1yLmRhdGEoYSkscz1sLm9wdCxkPWwuc2VxdWVudGlhbCx1PWErIl8iK2wuaWR4LGY9ZSgiI21DU0JfIitsLmlkeCsiX2NvbnRhaW5lciIpLGg9Zi5wYXJlbnQoKTtmLmJpbmQoIm1vdXNlZG93bi4iK3UsZnVuY3Rpb24oKXt0fHxpfHwoaT0xLGM9ITApfSkuYWRkKGRvY3VtZW50KS5iaW5kKCJtb3VzZW1vdmUuIit1LGZ1bmN0aW9uKGUpe2lmKCF0JiZpJiZvKCkpe3ZhciBhPWYub2Zmc2V0KCkscj1PKGUpWzBdLWEudG9wK2ZbMF0ub2Zmc2V0VG9wLGM9TyhlKVsxXS1hLmxlZnQrZlswXS5vZmZzZXRMZWZ0O3I+MCYmcjxoLmhlaWdodCgpJiZjPjAmJmM8aC53aWR0aCgpP2Quc3RlcCYmbigib2ZmIixudWxsLCJzdGVwcGVkIik6KCJ4IiE9PXMuYXhpcyYmbC5vdmVyZmxvd2VkWzBdJiYoMD5yP24oIm9uIiwzOCk6cj5oLmhlaWdodCgpJiZuKCJvbiIsNDApKSwieSIhPT1zLmF4aXMmJmwub3ZlcmZsb3dlZFsxXSYmKDA+Yz9uKCJvbiIsMzcpOmM+aC53aWR0aCgpJiZuKCJvbiIsMzkpKSl9fSkuYmluZCgibW91c2V1cC4iK3UrIiBkcmFnZW5kLiIrdSxmdW5jdGlvbigpe3R8fChpJiYoaT0wLG4oIm9mZiIsbnVsbCkpLGM9ITEpfSl9LFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsYSl7aWYoUShvKSwheihvLHQudGFyZ2V0KSl7dmFyIHI9ImF1dG8iIT09aS5tb3VzZVdoZWVsLmRlbHRhRmFjdG9yP3BhcnNlSW50KGkubW91c2VXaGVlbC5kZWx0YUZhY3Rvcik6cyYmdC5kZWx0YUZhY3RvcjwxMDA/MTAwOnQuZGVsdGFGYWN0b3J8fDEwMCxkPWkuc2Nyb2xsSW5lcnRpYTtpZigieCI9PT1pLmF4aXN8fCJ4Ij09PWkubW91c2VXaGVlbC5heGlzKXZhciB1PSJ4IixmPVtNYXRoLnJvdW5kKHIqbi5zY3JvbGxSYXRpby54KSxwYXJzZUludChpLm1vdXNlV2hlZWwuc2Nyb2xsQW1vdW50KV0saD0iYXV0byIhPT1pLm1vdXNlV2hlZWwuc2Nyb2xsQW1vdW50P2ZbMV06ZlswXT49bC53aWR0aCgpPy45Kmwud2lkdGgoKTpmWzBdLG09TWF0aC5hYnMoZSgiI21DU0JfIituLmlkeCsiX2NvbnRhaW5lciIpWzBdLm9mZnNldExlZnQpLHA9Y1sxXVswXS5vZmZzZXRMZWZ0LGc9Y1sxXS5wYXJlbnQoKS53aWR0aCgpLWNbMV0ud2lkdGgoKSx2PSJ5Ij09PWkubW91c2VXaGVlbC5heGlzP3QuZGVsdGFZfHxhOnQuZGVsdGFYO2Vsc2UgdmFyIHU9InkiLGY9W01hdGgucm91bmQocipuLnNjcm9sbFJhdGlvLnkpLHBhcnNlSW50KGkubW91c2VXaGVlbC5zY3JvbGxBbW91bnQpXSxoPSJhdXRvIiE9PWkubW91c2VXaGVlbC5zY3JvbGxBbW91bnQ/ZlsxXTpmWzBdPj1sLmhlaWdodCgpPy45KmwuaGVpZ2h0KCk6ZlswXSxtPU1hdGguYWJzKGUoIiNtQ1NCXyIrbi5pZHgrIl9jb250YWluZXIiKVswXS5vZmZzZXRUb3ApLHA9Y1swXVswXS5vZmZzZXRUb3AsZz1jWzBdLnBhcmVudCgpLmhlaWdodCgpLWNbMF0uaGVpZ2h0KCksdj10LmRlbHRhWXx8YTsieSI9PT11JiYhbi5vdmVyZmxvd2VkWzBdfHwieCI9PT11JiYhbi5vdmVyZmxvd2VkWzFdfHwoKGkubW91c2VXaGVlbC5pbnZlcnR8fHQud2Via2l0RGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKSYmKHY9LXYpLGkubW91c2VXaGVlbC5ub3JtYWxpemVEZWx0YSYmKHY9MD52Py0xOjEpLCh2PjAmJjAhPT1wfHwwPnYmJnAhPT1nfHxpLm1vdXNlV2hlZWwucHJldmVudERlZmF1bHQpJiYodC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCkpLHQuZGVsdGFGYWN0b3I8NSYmIWkubW91c2VXaGVlbC5ub3JtYWxpemVEZWx0YSYmKGg9dC5kZWx0YUZhY3RvcixkPTE3KSxHKG8sKG0tdipoKS50b1N0cmluZygpLHtkaXI6dSxkdXI6ZH0pKX19aWYoZSh0aGlzKS5kYXRhKGEpKXt2YXIgbz1lKHRoaXMpLG49by5kYXRhKGEpLGk9bi5vcHQscj1hKyJfIituLmlkeCxsPWUoIiNtQ1NCXyIrbi5pZHgpLGM9W2UoIiNtQ1NCXyIrbi5pZHgrIl9kcmFnZ2VyX3ZlcnRpY2FsIiksZSgiI21DU0JfIituLmlkeCsiX2RyYWdnZXJfaG9yaXpvbnRhbCIpXSxkPWUoIiNtQ1NCXyIrbi5pZHgrIl9jb250YWluZXIiKS5maW5kKCJpZnJhbWUiKTtkLmxlbmd0aCYmZC5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5iaW5kKCJsb2FkIixmdW5jdGlvbigpe0EodGhpcykmJmUodGhpcy5jb250ZW50RG9jdW1lbnR8fHRoaXMuY29udGVudFdpbmRvdy5kb2N1bWVudCkuYmluZCgibW91c2V3aGVlbC4iK3IsZnVuY3Rpb24oZSxvKXt0KGUsbyl9KX0pfSksbC5iaW5kKCJtb3VzZXdoZWVsLiIrcixmdW5jdGlvbihlLG8pe3QoZSxvKX0pfX0sUj1uZXcgT2JqZWN0LEE9ZnVuY3Rpb24odCl7dmFyIG89ITEsYT0hMSxuPW51bGw7aWYodm9pZCAwPT09dD9hPSIjZW1wdHkiOnZvaWQgMCE9PWUodCkuYXR0cigiaWQiKSYmKGE9ZSh0KS5hdHRyKCJpZCIpKSxhIT09ITEmJnZvaWQgMCE9PVJbYV0pcmV0dXJuIFJbYV07aWYodCl7dHJ5e3ZhciBpPXQuY29udGVudERvY3VtZW50fHx0LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7bj1pLmJvZHkuaW5uZXJIVE1MfWNhdGNoKHIpe31vPW51bGwhPT1ufWVsc2V7dHJ5e3ZhciBpPXRvcC5kb2N1bWVudDtuPWkuYm9keS5pbm5lckhUTUx9Y2F0Y2gocil7fW89bnVsbCE9PW59cmV0dXJuIGEhPT0hMSYmKFJbYV09byksb30sTD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmQoImlmcmFtZSIpO2lmKHQubGVuZ3RoKXt2YXIgbz1lPyJhdXRvIjoibm9uZSI7dC5jc3MoInBvaW50ZXItZXZlbnRzIixvKX19LHo9ZnVuY3Rpb24odCxvKXt2YXIgbj1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksaT10LmRhdGEoYSkub3B0Lm1vdXNlV2hlZWwuZGlzYWJsZU92ZXIscj1bInNlbGVjdCIsInRleHRhcmVhIl07cmV0dXJuIGUuaW5BcnJheShuLGkpPi0xJiYhKGUuaW5BcnJheShuLHIpPi0xJiYhZShvKS5pcygiOmZvY3VzIikpfSxQPWZ1bmN0aW9uKCl7dmFyIHQsbz1lKHRoaXMpLG49by5kYXRhKGEpLGk9YSsiXyIrbi5pZHgscj1lKCIjbUNTQl8iK24uaWR4KyJfY29udGFpbmVyIiksbD1yLnBhcmVudCgpLHM9ZSgiLm1DU0JfIituLmlkeCsiX3Njcm9sbGJhciAuIitkWzEyXSk7cy5iaW5kKCJtb3VzZWRvd24uIitpKyIgdG91Y2hzdGFydC4iK2krIiBwb2ludGVyZG93bi4iK2krIiBNU1BvaW50ZXJEb3duLiIraSxmdW5jdGlvbihvKXtjPSEwLGUoby50YXJnZXQpLmhhc0NsYXNzKCJtQ1NCX2RyYWdnZXIiKXx8KHQ9MSl9KS5iaW5kKCJ0b3VjaGVuZC4iK2krIiBwb2ludGVydXAuIitpKyIgTVNQb2ludGVyVXAuIitpLGZ1bmN0aW9uKCl7Yz0hMX0pLmJpbmQoImNsaWNrLiIraSxmdW5jdGlvbihhKXtpZih0JiYodD0wLGUoYS50YXJnZXQpLmhhc0NsYXNzKGRbMTJdKXx8ZShhLnRhcmdldCkuaGFzQ2xhc3MoIm1DU0JfZHJhZ2dlclJhaWwiKSkpe1Eobyk7dmFyIGk9ZSh0aGlzKSxzPWkuZmluZCgiLm1DU0JfZHJhZ2dlciIpO2lmKGkucGFyZW50KCIubUNTQl9zY3JvbGxUb29sc19ob3Jpem9udGFsIikubGVuZ3RoPjApe2lmKCFuLm92ZXJmbG93ZWRbMV0pcmV0dXJuO3ZhciBjPSJ4Iix1PWEucGFnZVg+cy5vZmZzZXQoKS5sZWZ0Py0xOjEsZj1NYXRoLmFicyhyWzBdLm9mZnNldExlZnQpLXUqKC45Kmwud2lkdGgoKSl9ZWxzZXtpZighbi5vdmVyZmxvd2VkWzBdKXJldHVybjt2YXIgYz0ieSIsdT1hLnBhZ2VZPnMub2Zmc2V0KCkudG9wPy0xOjEsZj1NYXRoLmFicyhyWzBdLm9mZnNldFRvcCktdSooLjkqbC5oZWlnaHQoKSl9RyhvLGYudG9TdHJpbmcoKSx7ZGlyOmMsc2Nyb2xsRWFzaW5nOiJtY3NFYXNlSW5PdXQifSl9fSl9LEg9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG89dC5kYXRhKGEpLG49by5vcHQsaT1hKyJfIitvLmlkeCxyPWUoIiNtQ1NCXyIrby5pZHgrIl9jb250YWluZXIiKSxsPXIucGFyZW50KCk7ci5iaW5kKCJmb2N1c2luLiIraSxmdW5jdGlvbigpe3ZhciBvPWUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksYT1yLmZpbmQoIi5tQ3VzdG9tU2Nyb2xsQm94IikubGVuZ3RoLGk9MDtvLmlzKG4uYWR2YW5jZWQuYXV0b1Njcm9sbE9uRm9jdXMpJiYoUSh0KSxjbGVhclRpbWVvdXQodFswXS5fZm9jdXNUaW1lb3V0KSx0WzBdLl9mb2N1c1RpbWVyPWE/KGkrMTcpKmE6MCx0WzBdLl9mb2N1c1RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPVthZShvKVswXSxhZShvKVsxXV0sYT1bclswXS5vZmZzZXRUb3AsclswXS5vZmZzZXRMZWZ0XSxzPVthWzBdK2VbMF0+PTAmJmFbMF0rZVswXTxsLmhlaWdodCgpLW8ub3V0ZXJIZWlnaHQoITEpLGFbMV0rZVsxXT49MCYmYVswXStlWzFdPGwud2lkdGgoKS1vLm91dGVyV2lkdGgoITEpXSxjPSJ5eCIhPT1uLmF4aXN8fHNbMF18fHNbMV0/ImFsbCI6Im5vbmUiOyJ4Ij09PW4uYXhpc3x8c1swXXx8Ryh0LGVbMF0udG9TdHJpbmcoKSx7ZGlyOiJ5IixzY3JvbGxFYXNpbmc6Im1jc0Vhc2VJbk91dCIsb3ZlcndyaXRlOmMsZHVyOml9KSwieSI9PT1uLmF4aXN8fHNbMV18fEcodCxlWzFdLnRvU3RyaW5nKCkse2RpcjoieCIsc2Nyb2xsRWFzaW5nOiJtY3NFYXNlSW5PdXQiLG92ZXJ3cml0ZTpjLGR1cjppfSl9LHRbMF0uX2ZvY3VzVGltZXIpKX0pfSxVPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxvPXQuZGF0YShhKSxuPWErIl8iK28uaWR4LGk9ZSgiI21DU0JfIitvLmlkeCsiX2NvbnRhaW5lciIpLnBhcmVudCgpO2kuYmluZCgic2Nyb2xsLiIrbixmdW5jdGlvbigpezA9PT1pLnNjcm9sbFRvcCgpJiYwPT09aS5zY3JvbGxMZWZ0KCl8fGUoIi5tQ1NCXyIrby5pZHgrIl9zY3JvbGxiYXIiKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pfSxGPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxvPXQuZGF0YShhKSxuPW8ub3B0LGk9by5zZXF1ZW50aWFsLHI9YSsiXyIrby5pZHgsbD0iLm1DU0JfIitvLmlkeCsiX3Njcm9sbGJhciIscz1lKGwrIj5hIik7cy5iaW5kKCJjb250ZXh0bWVudS4iK3IsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSkuYmluZCgibW91c2Vkb3duLiIrcisiIHRvdWNoc3RhcnQuIityKyIgcG9pbnRlcmRvd24uIityKyIgTVNQb2ludGVyRG93bi4iK3IrIiBtb3VzZXVwLiIrcisiIHRvdWNoZW5kLiIrcisiIHBvaW50ZXJ1cC4iK3IrIiBNU1BvaW50ZXJVcC4iK3IrIiBtb3VzZW91dC4iK3IrIiBwb2ludGVyb3V0LiIrcisiIE1TUG9pbnRlck91dC4iK3IrIiBjbGljay4iK3IsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gcihlLG8pe2kuc2Nyb2xsQW1vdW50PW4uc2Nyb2xsQnV0dG9ucy5zY3JvbGxBbW91bnQsaih0LGUsbyl9aWYoYS5wcmV2ZW50RGVmYXVsdCgpLGVlKGEpKXt2YXIgbD1lKHRoaXMpLmF0dHIoImNsYXNzIik7c3dpdGNoKGkudHlwZT1uLnNjcm9sbEJ1dHRvbnMuc2Nyb2xsVHlwZSxhLnR5cGUpe2Nhc2UibW91c2Vkb3duIjpjYXNlInRvdWNoc3RhcnQiOmNhc2UicG9pbnRlcmRvd24iOmNhc2UiTVNQb2ludGVyRG93biI6aWYoInN0ZXBwZWQiPT09aS50eXBlKXJldHVybjtjPSEwLG8udHdlZW5SdW5uaW5nPSExLHIoIm9uIixsKTticmVhaztjYXNlIm1vdXNldXAiOmNhc2UidG91Y2hlbmQiOmNhc2UicG9pbnRlcnVwIjpjYXNlIk1TUG9pbnRlclVwIjpjYXNlIm1vdXNlb3V0IjpjYXNlInBvaW50ZXJvdXQiOmNhc2UiTVNQb2ludGVyT3V0IjppZigic3RlcHBlZCI9PT1pLnR5cGUpcmV0dXJuO2M9ITEsaS5kaXImJnIoIm9mZiIsbCk7YnJlYWs7Y2FzZSJjbGljayI6aWYoInN0ZXBwZWQiIT09aS50eXBlfHxvLnR3ZWVuUnVubmluZylyZXR1cm47cigib24iLGwpfX19KX0scT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gYShlLHQpe3IudHlwZT1pLmtleWJvYXJkLnNjcm9sbFR5cGUsci5zY3JvbGxBbW91bnQ9aS5rZXlib2FyZC5zY3JvbGxBbW91bnQsInN0ZXBwZWQiPT09ci50eXBlJiZuLnR3ZWVuUnVubmluZ3x8aihvLGUsdCl9c3dpdGNoKHQudHlwZSl7Y2FzZSJibHVyIjpuLnR3ZWVuUnVubmluZyYmci5kaXImJmEoIm9mZiIsbnVsbCk7YnJlYWs7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjp2YXIgbD10LmtleUNvZGU/dC5rZXlDb2RlOnQud2hpY2gscz0ib24iO2lmKCJ4IiE9PWkuYXhpcyYmKDM4PT09bHx8NDA9PT1sKXx8InkiIT09aS5heGlzJiYoMzc9PT1sfHwzOT09PWwpKXtpZigoMzg9PT1sfHw0MD09PWwpJiYhbi5vdmVyZmxvd2VkWzBdfHwoMzc9PT1sfHwzOT09PWwpJiYhbi5vdmVyZmxvd2VkWzFdKXJldHVybjsia2V5dXAiPT09dC50eXBlJiYocz0ib2ZmIiksZShkb2N1bWVudC5hY3RpdmVFbGVtZW50KS5pcyh1KXx8KHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGEocyxsKSl9ZWxzZSBpZigzMz09PWx8fDM0PT09bCl7aWYoKG4ub3ZlcmZsb3dlZFswXXx8bi5vdmVyZmxvd2VkWzFdKSYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKSwia2V5dXAiPT09dC50eXBlKXtRKG8pO3ZhciBmPTM0PT09bD8tMToxO2lmKCJ4Ij09PWkuYXhpc3x8Inl4Ij09PWkuYXhpcyYmbi5vdmVyZmxvd2VkWzFdJiYhbi5vdmVyZmxvd2VkWzBdKXZhciBoPSJ4IixtPU1hdGguYWJzKGNbMF0ub2Zmc2V0TGVmdCktZiooLjkqZC53aWR0aCgpKTtlbHNlIHZhciBoPSJ5IixtPU1hdGguYWJzKGNbMF0ub2Zmc2V0VG9wKS1mKiguOSpkLmhlaWdodCgpKTtHKG8sbS50b1N0cmluZygpLHtkaXI6aCxzY3JvbGxFYXNpbmc6Im1jc0Vhc2VJbk91dCJ9KX19ZWxzZSBpZigoMzU9PT1sfHwzNj09PWwpJiYhZShkb2N1bWVudC5hY3RpdmVFbGVtZW50KS5pcyh1KSYmKChuLm92ZXJmbG93ZWRbMF18fG4ub3ZlcmZsb3dlZFsxXSkmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSksImtleXVwIj09PXQudHlwZSkpe2lmKCJ4Ij09PWkuYXhpc3x8Inl4Ij09PWkuYXhpcyYmbi5vdmVyZmxvd2VkWzFdJiYhbi5vdmVyZmxvd2VkWzBdKXZhciBoPSJ4IixtPTM1PT09bD9NYXRoLmFicyhkLndpZHRoKCktYy5vdXRlcldpZHRoKCExKSk6MDtlbHNlIHZhciBoPSJ5IixtPTM1PT09bD9NYXRoLmFicyhkLmhlaWdodCgpLWMub3V0ZXJIZWlnaHQoITEpKTowO0cobyxtLnRvU3RyaW5nKCkse2RpcjpoLHNjcm9sbEVhc2luZzoibWNzRWFzZUluT3V0In0pfX19dmFyIG89ZSh0aGlzKSxuPW8uZGF0YShhKSxpPW4ub3B0LHI9bi5zZXF1ZW50aWFsLGw9YSsiXyIrbi5pZHgscz1lKCIjbUNTQl8iK24uaWR4KSxjPWUoIiNtQ1NCXyIrbi5pZHgrIl9jb250YWluZXIiKSxkPWMucGFyZW50KCksdT0iaW5wdXQsdGV4dGFyZWEsc2VsZWN0LGRhdGFsaXN0LGtleWdlbixbY29udGVudGVkaXRhYmxlPSd0cnVlJ10iLGY9Yy5maW5kKCJpZnJhbWUiKSxoPVsiYmx1ci4iK2wrIiBrZXlkb3duLiIrbCsiIGtleXVwLiIrbF07Zi5sZW5ndGgmJmYuZWFjaChmdW5jdGlvbigpe2UodGhpcykuYmluZCgibG9hZCIsZnVuY3Rpb24oKXtBKHRoaXMpJiZlKHRoaXMuY29udGVudERvY3VtZW50fHx0aGlzLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLmJpbmQoaFswXSxmdW5jdGlvbihlKXt0KGUpfSl9KX0pLHMuYXR0cigidGFiaW5kZXgiLCIwIikuYmluZChoWzBdLGZ1bmN0aW9uKGUpe3QoZSl9KX0saj1mdW5jdGlvbih0LG8sbixpLHIpe2Z1bmN0aW9uIGwoZSl7dS5zbmFwQW1vdW50JiYoZi5zY3JvbGxBbW91bnQ9dS5zbmFwQW1vdW50IGluc3RhbmNlb2YgQXJyYXk/IngiPT09Zi5kaXJbMF0/dS5zbmFwQW1vdW50WzFdOnUuc25hcEFtb3VudFswXTp1LnNuYXBBbW91bnQpO3ZhciBvPSJzdGVwcGVkIiE9PWYudHlwZSxhPXI/cjplP28/cC8xLjU6ZzoxZTMvNjAsbj1lP28/Ny41OjQwOjIuNSxzPVtNYXRoLmFicyhoWzBdLm9mZnNldFRvcCksTWF0aC5hYnMoaFswXS5vZmZzZXRMZWZ0KV0sZD1bYy5zY3JvbGxSYXRpby55PjEwPzEwOmMuc2Nyb2xsUmF0aW8ueSxjLnNjcm9sbFJhdGlvLng+MTA/MTA6Yy5zY3JvbGxSYXRpby54XSxtPSJ4Ij09PWYuZGlyWzBdP3NbMV0rZi5kaXJbMV0qKGRbMV0qbik6c1swXStmLmRpclsxXSooZFswXSpuKSx2PSJ4Ij09PWYuZGlyWzBdP3NbMV0rZi5kaXJbMV0qcGFyc2VJbnQoZi5zY3JvbGxBbW91bnQpOnNbMF0rZi5kaXJbMV0qcGFyc2VJbnQoZi5zY3JvbGxBbW91bnQpLHg9ImF1dG8iIT09Zi5zY3JvbGxBbW91bnQ/djptLF89aT9pOmU/bz8ibWNzTGluZWFyT3V0IjoibWNzRWFzZUluT3V0IjoibWNzTGluZWFyIix3PSEhZTtyZXR1cm4gZSYmMTc+YSYmKHg9IngiPT09Zi5kaXJbMF0/c1sxXTpzWzBdKSxHKHQseC50b1N0cmluZygpLHtkaXI6Zi5kaXJbMF0sc2Nyb2xsRWFzaW5nOl8sZHVyOmEsb25Db21wbGV0ZTp3fSksZT92b2lkKGYuZGlyPSExKTooY2xlYXJUaW1lb3V0KGYuc3RlcCksdm9pZChmLnN0ZXA9c2V0VGltZW91dChmdW5jdGlvbigpe2woKX0sYSkpKX1mdW5jdGlvbiBzKCl7Y2xlYXJUaW1lb3V0KGYuc3RlcCksJChmLCJzdGVwIiksUSh0KX12YXIgYz10LmRhdGEoYSksdT1jLm9wdCxmPWMuc2VxdWVudGlhbCxoPWUoIiNtQ1NCXyIrYy5pZHgrIl9jb250YWluZXIiKSxtPSJzdGVwcGVkIj09PWYudHlwZSxwPXUuc2Nyb2xsSW5lcnRpYTwyNj8yNjp1LnNjcm9sbEluZXJ0aWEsZz11LnNjcm9sbEluZXJ0aWE8MT8xNzp1LnNjcm9sbEluZXJ0aWE7c3dpdGNoKG8pe2Nhc2Uib24iOmlmKGYuZGlyPVtuPT09ZFsxNl18fG49PT1kWzE1XXx8Mzk9PT1ufHwzNz09PW4/IngiOiJ5IixuPT09ZFsxM118fG49PT1kWzE1XXx8Mzg9PT1ufHwzNz09PW4/LTE6MV0sUSh0KSxvZShuKSYmInN0ZXBwZWQiPT09Zi50eXBlKXJldHVybjtsKG0pO2JyZWFrO2Nhc2Uib2ZmIjpzKCksKG18fGMudHdlZW5SdW5uaW5nJiZmLmRpcikmJmwoITApfX0sWT1mdW5jdGlvbih0KXt2YXIgbz1lKHRoaXMpLmRhdGEoYSkub3B0LG49W107cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQoKSksdCBpbnN0YW5jZW9mIEFycmF5P249dC5sZW5ndGg+MT9bdFswXSx0WzFdXToieCI9PT1vLmF4aXM/W251bGwsdFswXV06W3RbMF0sbnVsbF06KG5bMF09dC55P3QueTp0Lnh8fCJ4Ij09PW8uYXhpcz9udWxsOnQsblsxXT10Lng/dC54OnQueXx8InkiPT09by5heGlzP251bGw6dCksImZ1bmN0aW9uIj09dHlwZW9mIG5bMF0mJihuWzBdPW5bMF0oKSksImZ1bmN0aW9uIj09dHlwZW9mIG5bMV0mJihuWzFdPW5bMV0oKSksbn0sWD1mdW5jdGlvbih0LG8pe2lmKG51bGwhPXQmJiJ1bmRlZmluZWQiIT10eXBlb2YgdCl7dmFyIG49ZSh0aGlzKSxpPW4uZGF0YShhKSxyPWkub3B0LGw9ZSgiI21DU0JfIitpLmlkeCsiX2NvbnRhaW5lciIpLHM9bC5wYXJlbnQoKSxjPXR5cGVvZiB0O298fChvPSJ4Ij09PXIuYXhpcz8ieCI6InkiKTt2YXIgZD0ieCI9PT1vP2wub3V0ZXJXaWR0aCghMSktcy53aWR0aCgpOmwub3V0ZXJIZWlnaHQoITEpLXMuaGVpZ2h0KCksZj0ieCI9PT1vP2xbMF0ub2Zmc2V0TGVmdDpsWzBdLm9mZnNldFRvcCxoPSJ4Ij09PW8/ImxlZnQiOiJ0b3AiO3N3aXRjaChjKXtjYXNlImZ1bmN0aW9uIjpyZXR1cm4gdCgpO2Nhc2Uib2JqZWN0Ijp2YXIgbT10LmpxdWVyeT90OmUodCk7aWYoIW0ubGVuZ3RoKXJldHVybjtyZXR1cm4ieCI9PT1vP2FlKG0pWzFdOmFlKG0pWzBdO2Nhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6aWYob2UodCkpcmV0dXJuIE1hdGguYWJzKHQpO2lmKC0xIT09dC5pbmRleE9mKCIlIikpcmV0dXJuIE1hdGguYWJzKGQqcGFyc2VJbnQodCkvMTAwKTtpZigtMSE9PXQuaW5kZXhPZigiLT0iKSlyZXR1cm4gTWF0aC5hYnMoZi1wYXJzZUludCh0LnNwbGl0KCItPSIpWzFdKSk7aWYoLTEhPT10LmluZGV4T2YoIis9Iikpe3ZhciBwPWYrcGFyc2VJbnQodC5zcGxpdCgiKz0iKVsxXSk7cmV0dXJuIHA+PTA/MDpNYXRoLmFicyhwKX1pZigtMSE9PXQuaW5kZXhPZigicHgiKSYmb2UodC5zcGxpdCgicHgiKVswXSkpcmV0dXJuIE1hdGguYWJzKHQuc3BsaXQoInB4IilbMF0pO2lmKCJ0b3AiPT09dHx8ImxlZnQiPT09dClyZXR1cm4gMDtpZigiYm90dG9tIj09PXQpcmV0dXJuIE1hdGguYWJzKHMuaGVpZ2h0KCktbC5vdXRlckhlaWdodCghMSkpO2lmKCJyaWdodCI9PT10KXJldHVybiBNYXRoLmFicyhzLndpZHRoKCktbC5vdXRlcldpZHRoKCExKSk7aWYoImZpcnN0Ij09PXR8fCJsYXN0Ij09PXQpe3ZhciBtPWwuZmluZCgiOiIrdCk7cmV0dXJuIngiPT09bz9hZShtKVsxXTphZShtKVswXX1yZXR1cm4gZSh0KS5sZW5ndGg/IngiPT09bz9hZShlKHQpKVsxXTphZShlKHQpKVswXToobC5jc3MoaCx0KSx2b2lkIHUudXBkYXRlLmNhbGwobnVsbCxuWzBdKSl9fX0sTj1mdW5jdGlvbih0KXtmdW5jdGlvbiBvKCl7cmV0dXJuIGNsZWFyVGltZW91dChmWzBdLmF1dG9VcGRhdGUpLDA9PT1sLnBhcmVudHMoImh0bWwiKS5sZW5ndGg/dm9pZChsPW51bGwpOnZvaWQoZlswXS5hdXRvVXBkYXRlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gYy5hZHZhbmNlZC51cGRhdGVPblNlbGVjdG9yQ2hhbmdlJiYocy5wb2xsLmNoYW5nZS5uPWkoKSxzLnBvbGwuY2hhbmdlLm4hPT1zLnBvbGwuY2hhbmdlLm8pPyhzLnBvbGwuY2hhbmdlLm89cy5wb2xsLmNoYW5nZS5uLHZvaWQgcigzKSk6Yy5hZHZhbmNlZC51cGRhdGVPbkNvbnRlbnRSZXNpemUmJihzLnBvbGwuc2l6ZS5uPWxbMF0uc2Nyb2xsSGVpZ2h0K2xbMF0uc2Nyb2xsV2lkdGgrZlswXS5vZmZzZXRIZWlnaHQrbFswXS5vZmZzZXRIZWlnaHQrbFswXS5vZmZzZXRXaWR0aCxzLnBvbGwuc2l6ZS5uIT09cy5wb2xsLnNpemUubyk/KHMucG9sbC5zaXplLm89cy5wb2xsLnNpemUubix2b2lkIHIoMSkpOiFjLmFkdmFuY2VkLnVwZGF0ZU9uSW1hZ2VMb2FkfHwiYXV0byI9PT1jLmFkdmFuY2VkLnVwZGF0ZU9uSW1hZ2VMb2FkJiYieSI9PT1jLmF4aXN8fChzLnBvbGwuaW1nLm49Zi5maW5kKCJpbWciKS5sZW5ndGgscy5wb2xsLmltZy5uPT09cy5wb2xsLmltZy5vKT92b2lkKChjLmFkdmFuY2VkLnVwZGF0ZU9uU2VsZWN0b3JDaGFuZ2V8fGMuYWR2YW5jZWQudXBkYXRlT25Db250ZW50UmVzaXplfHxjLmFkdmFuY2VkLnVwZGF0ZU9uSW1hZ2VMb2FkKSYmbygpKToocy5wb2xsLmltZy5vPXMucG9sbC5pbWcubix2b2lkIGYuZmluZCgiaW1nIikuZWFjaChmdW5jdGlvbigpe24odGhpcyl9KSl9LGMuYWR2YW5jZWQuYXV0b1VwZGF0ZVRpbWVvdXQpKX1mdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXsKcmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX1mdW5jdGlvbiBhKCl7dGhpcy5vbmxvYWQ9bnVsbCxlKHQpLmFkZENsYXNzKGRbMl0pLHIoMil9aWYoZSh0KS5oYXNDbGFzcyhkWzJdKSlyZXR1cm4gdm9pZCByKCk7dmFyIG49bmV3IEltYWdlO24ub25sb2FkPW8obixhKSxuLnNyYz10LnNyY31mdW5jdGlvbiBpKCl7Yy5hZHZhbmNlZC51cGRhdGVPblNlbGVjdG9yQ2hhbmdlPT09ITAmJihjLmFkdmFuY2VkLnVwZGF0ZU9uU2VsZWN0b3JDaGFuZ2U9IioiKTt2YXIgZT0wLHQ9Zi5maW5kKGMuYWR2YW5jZWQudXBkYXRlT25TZWxlY3RvckNoYW5nZSk7cmV0dXJuIGMuYWR2YW5jZWQudXBkYXRlT25TZWxlY3RvckNoYW5nZSYmdC5sZW5ndGg+MCYmdC5lYWNoKGZ1bmN0aW9uKCl7ZSs9dGhpcy5vZmZzZXRIZWlnaHQrdGhpcy5vZmZzZXRXaWR0aH0pLGV9ZnVuY3Rpb24gcihlKXtjbGVhclRpbWVvdXQoZlswXS5hdXRvVXBkYXRlKSx1LnVwZGF0ZS5jYWxsKG51bGwsbFswXSxlKX12YXIgbD1lKHRoaXMpLHM9bC5kYXRhKGEpLGM9cy5vcHQsZj1lKCIjbUNTQl8iK3MuaWR4KyJfY29udGFpbmVyIik7cmV0dXJuIHQ/KGNsZWFyVGltZW91dChmWzBdLmF1dG9VcGRhdGUpLHZvaWQgJChmWzBdLCJhdXRvVXBkYXRlIikpOnZvaWQgbygpfSxWPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gTWF0aC5yb3VuZChlL3QpKnQtb30sUT1mdW5jdGlvbih0KXt2YXIgbz10LmRhdGEoYSksbj1lKCIjbUNTQl8iK28uaWR4KyJfY29udGFpbmVyLCNtQ1NCXyIrby5pZHgrIl9jb250YWluZXJfd3JhcHBlciwjbUNTQl8iK28uaWR4KyJfZHJhZ2dlcl92ZXJ0aWNhbCwjbUNTQl8iK28uaWR4KyJfZHJhZ2dlcl9ob3Jpem9udGFsIik7bi5lYWNoKGZ1bmN0aW9uKCl7Wi5jYWxsKHRoaXMpfSl9LEc9ZnVuY3Rpb24odCxvLG4pe2Z1bmN0aW9uIGkoZSl7cmV0dXJuIHMmJmMuY2FsbGJhY2tzW2VdJiYiZnVuY3Rpb24iPT10eXBlb2YgYy5jYWxsYmFja3NbZV19ZnVuY3Rpb24gcigpe3JldHVybltjLmNhbGxiYWNrcy5hbHdheXNUcmlnZ2VyT2Zmc2V0c3x8dz49U1swXSt5LGMuY2FsbGJhY2tzLmFsd2F5c1RyaWdnZXJPZmZzZXRzfHwtQj49d119ZnVuY3Rpb24gbCgpe3ZhciBlPVtoWzBdLm9mZnNldFRvcCxoWzBdLm9mZnNldExlZnRdLG89W3hbMF0ub2Zmc2V0VG9wLHhbMF0ub2Zmc2V0TGVmdF0sYT1baC5vdXRlckhlaWdodCghMSksaC5vdXRlcldpZHRoKCExKV0saT1bZi5oZWlnaHQoKSxmLndpZHRoKCldO3RbMF0ubWNzPXtjb250ZW50OmgsdG9wOmVbMF0sbGVmdDplWzFdLGRyYWdnZXJUb3A6b1swXSxkcmFnZ2VyTGVmdDpvWzFdLHRvcFBjdDpNYXRoLnJvdW5kKDEwMCpNYXRoLmFicyhlWzBdKS8oTWF0aC5hYnMoYVswXSktaVswXSkpLGxlZnRQY3Q6TWF0aC5yb3VuZCgxMDAqTWF0aC5hYnMoZVsxXSkvKE1hdGguYWJzKGFbMV0pLWlbMV0pKSxkaXJlY3Rpb246bi5kaXJ9fXZhciBzPXQuZGF0YShhKSxjPXMub3B0LGQ9e3RyaWdnZXI6ImludGVybmFsIixkaXI6InkiLHNjcm9sbEVhc2luZzoibWNzRWFzZU91dCIsZHJhZzohMSxkdXI6Yy5zY3JvbGxJbmVydGlhLG92ZXJ3cml0ZToiYWxsIixjYWxsYmFja3M6ITAsb25TdGFydDohMCxvblVwZGF0ZTohMCxvbkNvbXBsZXRlOiEwfSxuPWUuZXh0ZW5kKGQsbiksdT1bbi5kdXIsbi5kcmFnPzA6bi5kdXJdLGY9ZSgiI21DU0JfIitzLmlkeCksaD1lKCIjbUNTQl8iK3MuaWR4KyJfY29udGFpbmVyIiksbT1oLnBhcmVudCgpLHA9Yy5jYWxsYmFja3Mub25Ub3RhbFNjcm9sbE9mZnNldD9ZLmNhbGwodCxjLmNhbGxiYWNrcy5vblRvdGFsU2Nyb2xsT2Zmc2V0KTpbMCwwXSxnPWMuY2FsbGJhY2tzLm9uVG90YWxTY3JvbGxCYWNrT2Zmc2V0P1kuY2FsbCh0LGMuY2FsbGJhY2tzLm9uVG90YWxTY3JvbGxCYWNrT2Zmc2V0KTpbMCwwXTtpZihzLnRyaWdnZXI9bi50cmlnZ2VyLDA9PT1tLnNjcm9sbFRvcCgpJiYwPT09bS5zY3JvbGxMZWZ0KCl8fChlKCIubUNTQl8iK3MuaWR4KyJfc2Nyb2xsYmFyIikuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpLG0uc2Nyb2xsVG9wKDApLnNjcm9sbExlZnQoMCkpLCJfcmVzZXRZIiE9PW98fHMuY29udGVudFJlc2V0Lnl8fChpKCJvbk92ZXJmbG93WU5vbmUiKSYmYy5jYWxsYmFja3Mub25PdmVyZmxvd1lOb25lLmNhbGwodFswXSkscy5jb250ZW50UmVzZXQueT0xKSwiX3Jlc2V0WCIhPT1vfHxzLmNvbnRlbnRSZXNldC54fHwoaSgib25PdmVyZmxvd1hOb25lIikmJmMuY2FsbGJhY2tzLm9uT3ZlcmZsb3dYTm9uZS5jYWxsKHRbMF0pLHMuY29udGVudFJlc2V0Lng9MSksIl9yZXNldFkiIT09byYmIl9yZXNldFgiIT09byl7aWYoIXMuY29udGVudFJlc2V0LnkmJnRbMF0ubWNzfHwhcy5vdmVyZmxvd2VkWzBdfHwoaSgib25PdmVyZmxvd1kiKSYmYy5jYWxsYmFja3Mub25PdmVyZmxvd1kuY2FsbCh0WzBdKSxzLmNvbnRlbnRSZXNldC54PW51bGwpLCFzLmNvbnRlbnRSZXNldC54JiZ0WzBdLm1jc3x8IXMub3ZlcmZsb3dlZFsxXXx8KGkoIm9uT3ZlcmZsb3dYIikmJmMuY2FsbGJhY2tzLm9uT3ZlcmZsb3dYLmNhbGwodFswXSkscy5jb250ZW50UmVzZXQueD1udWxsKSxjLnNuYXBBbW91bnQpe3ZhciB2PWMuc25hcEFtb3VudCBpbnN0YW5jZW9mIEFycmF5PyJ4Ij09PW4uZGlyP2Muc25hcEFtb3VudFsxXTpjLnNuYXBBbW91bnRbMF06Yy5zbmFwQW1vdW50O289VihvLHYsYy5zbmFwT2Zmc2V0KX1zd2l0Y2gobi5kaXIpe2Nhc2UieCI6dmFyIHg9ZSgiI21DU0JfIitzLmlkeCsiX2RyYWdnZXJfaG9yaXpvbnRhbCIpLF89ImxlZnQiLHc9aFswXS5vZmZzZXRMZWZ0LFM9W2Yud2lkdGgoKS1oLm91dGVyV2lkdGgoITEpLHgucGFyZW50KCkud2lkdGgoKS14LndpZHRoKCldLGI9W28sMD09PW8/MDpvL3Muc2Nyb2xsUmF0aW8ueF0seT1wWzFdLEI9Z1sxXSxUPXk+MD95L3Muc2Nyb2xsUmF0aW8ueDowLGs9Qj4wP0Ivcy5zY3JvbGxSYXRpby54OjA7YnJlYWs7Y2FzZSJ5Ijp2YXIgeD1lKCIjbUNTQl8iK3MuaWR4KyJfZHJhZ2dlcl92ZXJ0aWNhbCIpLF89InRvcCIsdz1oWzBdLm9mZnNldFRvcCxTPVtmLmhlaWdodCgpLWgub3V0ZXJIZWlnaHQoITEpLHgucGFyZW50KCkuaGVpZ2h0KCkteC5oZWlnaHQoKV0sYj1bbywwPT09bz8wOm8vcy5zY3JvbGxSYXRpby55XSx5PXBbMF0sQj1nWzBdLFQ9eT4wP3kvcy5zY3JvbGxSYXRpby55OjAsaz1CPjA/Qi9zLnNjcm9sbFJhdGlvLnk6MH1iWzFdPDB8fDA9PT1iWzBdJiYwPT09YlsxXT9iPVswLDBdOmJbMV0+PVNbMV0/Yj1bU1swXSxTWzFdXTpiWzBdPS1iWzBdLHRbMF0ubWNzfHwobCgpLGkoIm9uSW5pdCIpJiZjLmNhbGxiYWNrcy5vbkluaXQuY2FsbCh0WzBdKSksY2xlYXJUaW1lb3V0KGhbMF0ub25Db21wbGV0ZVRpbWVvdXQpLEooeFswXSxfLE1hdGgucm91bmQoYlsxXSksdVsxXSxuLnNjcm9sbEVhc2luZyksIXMudHdlZW5SdW5uaW5nJiYoMD09PXcmJmJbMF0+PTB8fHc9PT1TWzBdJiZiWzBdPD1TWzBdKXx8SihoWzBdLF8sTWF0aC5yb3VuZChiWzBdKSx1WzBdLG4uc2Nyb2xsRWFzaW5nLG4ub3ZlcndyaXRlLHtvblN0YXJ0OmZ1bmN0aW9uKCl7bi5jYWxsYmFja3MmJm4ub25TdGFydCYmIXMudHdlZW5SdW5uaW5nJiYoaSgib25TY3JvbGxTdGFydCIpJiYobCgpLGMuY2FsbGJhY2tzLm9uU2Nyb2xsU3RhcnQuY2FsbCh0WzBdKSkscy50d2VlblJ1bm5pbmc9ITAsQyh4KSxzLmNiT2Zmc2V0cz1yKCkpfSxvblVwZGF0ZTpmdW5jdGlvbigpe24uY2FsbGJhY2tzJiZuLm9uVXBkYXRlJiZpKCJ3aGlsZVNjcm9sbGluZyIpJiYobCgpLGMuY2FsbGJhY2tzLndoaWxlU2Nyb2xsaW5nLmNhbGwodFswXSkpfSxvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7aWYobi5jYWxsYmFja3MmJm4ub25Db21wbGV0ZSl7Inl4Ij09PWMuYXhpcyYmY2xlYXJUaW1lb3V0KGhbMF0ub25Db21wbGV0ZVRpbWVvdXQpO3ZhciBlPWhbMF0uaWRsZVRpbWVyfHwwO2hbMF0ub25Db21wbGV0ZVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2koIm9uU2Nyb2xsIikmJihsKCksYy5jYWxsYmFja3Mub25TY3JvbGwuY2FsbCh0WzBdKSksaSgib25Ub3RhbFNjcm9sbCIpJiZiWzFdPj1TWzFdLVQmJnMuY2JPZmZzZXRzWzBdJiYobCgpLGMuY2FsbGJhY2tzLm9uVG90YWxTY3JvbGwuY2FsbCh0WzBdKSksaSgib25Ub3RhbFNjcm9sbEJhY2siKSYmYlsxXTw9ayYmcy5jYk9mZnNldHNbMV0mJihsKCksYy5jYWxsYmFja3Mub25Ub3RhbFNjcm9sbEJhY2suY2FsbCh0WzBdKSkscy50d2VlblJ1bm5pbmc9ITEsaFswXS5pZGxlVGltZXI9MCxDKHgsImhpZGUiKX0sZSl9fX0pfX0sSj1mdW5jdGlvbihlLHQsbyxhLG4saSxyKXtmdW5jdGlvbiBsKCl7Uy5zdG9wfHwoeHx8bS5jYWxsKCkseD1LKCktdixzKCkseD49Uy50aW1lJiYoUy50aW1lPXg+Uy50aW1lP3grZi0oeC1TLnRpbWUpOngrZi0xLFMudGltZTx4KzEmJihTLnRpbWU9eCsxKSksUy50aW1lPGE/Uy5pZD1oKGwpOmcuY2FsbCgpKX1mdW5jdGlvbiBzKCl7YT4wPyhTLmN1cnJWYWw9dShTLnRpbWUsXyxiLGEsbiksd1t0XT1NYXRoLnJvdW5kKFMuY3VyclZhbCkrInB4Iik6d1t0XT1vKyJweCIscC5jYWxsKCl9ZnVuY3Rpb24gYygpe2Y9MWUzLzYwLFMudGltZT14K2YsaD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoKSxzZXRUaW1lb3V0KGUsLjAxKX0sUy5pZD1oKGwpfWZ1bmN0aW9uIGQoKXtudWxsIT1TLmlkJiYod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoUy5pZCk6Y2xlYXJUaW1lb3V0KFMuaWQpLFMuaWQ9bnVsbCl9ZnVuY3Rpb24gdShlLHQsbyxhLG4pe3N3aXRjaChuKXtjYXNlImxpbmVhciI6Y2FzZSJtY3NMaW5lYXIiOnJldHVybiBvKmUvYSt0O2Nhc2UibWNzTGluZWFyT3V0IjpyZXR1cm4gZS89YSxlLS0sbypNYXRoLnNxcnQoMS1lKmUpK3Q7Y2FzZSJlYXNlSW5PdXRTbW9vdGgiOnJldHVybiBlLz1hLzIsMT5lP28vMiplKmUrdDooZS0tLC1vLzIqKGUqKGUtMiktMSkrdCk7Y2FzZSJlYXNlSW5PdXRTdHJvbmciOnJldHVybiBlLz1hLzIsMT5lP28vMipNYXRoLnBvdygyLDEwKihlLTEpKSt0OihlLS0sby8yKigtTWF0aC5wb3coMiwtMTAqZSkrMikrdCk7Y2FzZSJlYXNlSW5PdXQiOmNhc2UibWNzRWFzZUluT3V0IjpyZXR1cm4gZS89YS8yLDE+ZT9vLzIqZSplKmUrdDooZS09MixvLzIqKGUqZSplKzIpK3QpO2Nhc2UiZWFzZU91dFNtb290aCI6cmV0dXJuIGUvPWEsZS0tLC1vKihlKmUqZSplLTEpK3Q7Y2FzZSJlYXNlT3V0U3Ryb25nIjpyZXR1cm4gbyooLU1hdGgucG93KDIsLTEwKmUvYSkrMSkrdDtjYXNlImVhc2VPdXQiOmNhc2UibWNzRWFzZU91dCI6ZGVmYXVsdDp2YXIgaT0oZS89YSkqZSxyPWkqZTtyZXR1cm4gdCtvKiguNDk5OTk5OTk5OTk5OTk3KnIqaSstMi41KmkqaSs1LjUqcistNi41KmkrNCplKX19ZS5fbVR3ZWVufHwoZS5fbVR3ZWVuPXt0b3A6e30sbGVmdDp7fX0pO3ZhciBmLGgscj1yfHx7fSxtPXIub25TdGFydHx8ZnVuY3Rpb24oKXt9LHA9ci5vblVwZGF0ZXx8ZnVuY3Rpb24oKXt9LGc9ci5vbkNvbXBsZXRlfHxmdW5jdGlvbigpe30sdj1LKCkseD0wLF89ZS5vZmZzZXRUb3Asdz1lLnN0eWxlLFM9ZS5fbVR3ZWVuW3RdOyJsZWZ0Ij09PXQmJihfPWUub2Zmc2V0TGVmdCk7dmFyIGI9by1fO1Muc3RvcD0wLCJub25lIiE9PWkmJmQoKSxjKCl9LEs9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2Uubm93P3dpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTp3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS53ZWJraXROb3c/d2luZG93LnBlcmZvcm1hbmNlLndlYmtpdE5vdygpOkRhdGUubm93P0RhdGUubm93KCk6KG5ldyBEYXRlKS5nZXRUaW1lKCl9LFo9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX21Ud2Vlbnx8KGUuX21Ud2Vlbj17dG9wOnt9LGxlZnQ6e319KTtmb3IodmFyIHQ9WyJ0b3AiLCJsZWZ0Il0sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgYT10W29dO2UuX21Ud2VlblthXS5pZCYmKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGUuX21Ud2VlblthXS5pZCk6Y2xlYXJUaW1lb3V0KGUuX21Ud2VlblthXS5pZCksZS5fbVR3ZWVuW2FdLmlkPW51bGwsZS5fbVR3ZWVuW2FdLnN0b3A9MSl9fSwkPWZ1bmN0aW9uKGUsdCl7dHJ5e2RlbGV0ZSBlW3RdfWNhdGNoKG8pe2VbdF09bnVsbH19LGVlPWZ1bmN0aW9uKGUpe3JldHVybiEoZS53aGljaCYmMSE9PWUud2hpY2gpfSx0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLm9yaWdpbmFsRXZlbnQucG9pbnRlclR5cGU7cmV0dXJuISh0JiYidG91Y2giIT09dCYmMiE9PXQpfSxvZT1mdW5jdGlvbihlKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChlKSkmJmlzRmluaXRlKGUpfSxhZT1mdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudHMoIi5tQ1NCX2NvbnRhaW5lciIpO3JldHVybltlLm9mZnNldCgpLnRvcC10Lm9mZnNldCgpLnRvcCxlLm9mZnNldCgpLmxlZnQtdC5vZmZzZXQoKS5sZWZ0XX0sbmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIGU9WyJ3ZWJraXQiLCJtb3oiLCJtcyIsIm8iXTtpZigiaGlkZGVuImluIGRvY3VtZW50KXJldHVybiJoaWRkZW4iO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKGVbdF0rIkhpZGRlbiJpbiBkb2N1bWVudClyZXR1cm4gZVt0XSsiSGlkZGVuIjtyZXR1cm4gbnVsbH12YXIgdD1lKCk7cmV0dXJuIHQ/ZG9jdW1lbnRbdF06ITF9O2UuZm5bb109ZnVuY3Rpb24odCl7cmV0dXJuIHVbdF0/dVt0XS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk6Im9iamVjdCIhPXR5cGVvZiB0JiZ0P3ZvaWQgZS5lcnJvcigiTWV0aG9kICIrdCsiIGRvZXMgbm90IGV4aXN0Iik6dS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZVtvXT1mdW5jdGlvbih0KXtyZXR1cm4gdVt0XT91W3RdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKToib2JqZWN0IiE9dHlwZW9mIHQmJnQ/dm9pZCBlLmVycm9yKCJNZXRob2QgIit0KyIgZG9lcyBub3QgZXhpc3QiKTp1LmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlW29dLmRlZmF1bHRzPWksd2luZG93W29dPSEwLGUod2luZG93KS5iaW5kKCJsb2FkIixmdW5jdGlvbigpe2Uobilbb10oKSxlLmV4dGVuZChlLmV4cHJbIjoiXSx7bWNzSW5WaWV3OmUuZXhwclsiOiJdLm1jc0luVmlld3x8ZnVuY3Rpb24odCl7dmFyIG8sYSxuPWUodCksaT1uLnBhcmVudHMoIi5tQ1NCX2NvbnRhaW5lciIpO2lmKGkubGVuZ3RoKXJldHVybiBvPWkucGFyZW50KCksYT1baVswXS5vZmZzZXRUb3AsaVswXS5vZmZzZXRMZWZ0XSxhWzBdK2FlKG4pWzBdPj0wJiZhWzBdK2FlKG4pWzBdPG8uaGVpZ2h0KCktbi5vdXRlckhlaWdodCghMSkmJmFbMV0rYWUobilbMV0+PTAmJmFbMV0rYWUobilbMV08by53aWR0aCgpLW4ub3V0ZXJXaWR0aCghMSl9LG1jc0luU2lnaHQ6ZS5leHByWyI6Il0ubWNzSW5TaWdodHx8ZnVuY3Rpb24odCxvLGEpe3ZhciBuLGkscixsLHM9ZSh0KSxjPXMucGFyZW50cygiLm1DU0JfY29udGFpbmVyIiksZD0iZXhhY3QiPT09YVszXT9bWzEsMF0sWzEsMF1dOltbLjksLjFdLFsuNiwuNF1dO2lmKGMubGVuZ3RoKXJldHVybiBuPVtzLm91dGVySGVpZ2h0KCExKSxzLm91dGVyV2lkdGgoITEpXSxyPVtjWzBdLm9mZnNldFRvcCthZShzKVswXSxjWzBdLm9mZnNldExlZnQrYWUocylbMV1dLGk9W2MucGFyZW50KClbMF0ub2Zmc2V0SGVpZ2h0LGMucGFyZW50KClbMF0ub2Zmc2V0V2lkdGhdLGw9W25bMF08aVswXT9kWzBdOmRbMV0sblsxXTxpWzFdP2RbMF06ZFsxXV0sclswXS1pWzBdKmxbMF1bMF08MCYmclswXStuWzBdLWlbMF0qbFswXVsxXT49MCYmclsxXS1pWzFdKmxbMV1bMF08MCYmclsxXStuWzFdLWlbMV0qbFsxXVsxXT49MH0sbWNzT3ZlcmZsb3c6ZS5leHByWyI6Il0ubWNzT3ZlcmZsb3d8fGZ1bmN0aW9uKHQpe3ZhciBvPWUodCkuZGF0YShhKTtpZihvKXJldHVybiBvLm92ZXJmbG93ZWRbMF18fG8ub3ZlcmZsb3dlZFsxXX19KX0pfSl9KTs="}},"time_used":197,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":197,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/img/punksmy-white.png","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.368Z","timestamp":1785150870368,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /img/punksmy-white.png HTTP/1.1\r\nHost: punks.my\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, 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 11:14:30 GMT\r\ncontent-type: image/png\r\nserver-timing: cfExtPri\r\nlast-modified: Tue, 02 Apr 2024 19:06:50 GMT\r\npriority: u=5,i\r\netag: \"660c574a-48d1\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\naccept-ranges: bytes\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sFuAlbhSl%2BYss5oevhvKpHDSs0lgaOoAlQ06v4HZtxAg6u4G1qRvrxiAqsX0xEqqr0pFCS0veT4C%2FN61Hp0dVSGTqoklRq77qLLC8Qs4b8YSIMvsWkFoS9L3Hg%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a21b388bdbe356a2-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\ncontent-length: 18641\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"]}],"data":{"size":18641,"size_decoded":19416,"mime_type":"image/png","magic":"PNG image data, 936 x 109, 8-bit/color RGBA, non-interlaced","md5":"a8f29c4955eba4a2feaf7bcc6aed645b","sha1":"e118fd4edecf6ea5bf628243bb1797458b1ab861","sha256":"2018569bd393a5661d6296d65486867456fc7cc6e47c21af7740dde1326e4aa8","sha512":"9309cb681cbfeef6d41cecef5ec99a10975b2a5e0719e606a53db25b80ad9f1b20eb9be7e62ac7ac8bed58990a17e5ef285ea9cf6798500ebf7ddf4214b3f0b0","ssdeep":"384:anodDhgesu8k/6aoKXpqBYLaGMB0yy0I/dSy+lCsD7GdHhA++:a7N4FZqBY+GwNyzdSHC96","tlshash":"1d82c09ac5b098749071b984f2e1dcdf36b891f03e46d1c9ad719ccb843c63c9e4959a","first_seen":"2025-12-16T06:43:19.304732Z","last_seen":"2026-07-27T11:25:33.57234Z","times_seen":16,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAA6gAAABtCAYAAACsjEyyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGOWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuZjM1NGVmYzcwLCAyMDIzLzExLzA5LTEyOjA1OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuNCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDQtMDNUMDI6NDA6NDQrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI0LTA0LTAzVDAyOjQ0OjQ1KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0LTA0LTAzVDAyOjQ0OjQ1KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjVhNDU0MS04YzI3LTQxMDItYTk4NC03NzY0MDYyOGY0NDUiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDphODMzOTA4Yy1iOTcxLWEzNDMtYTFjNC1mOWRmOTU0MmI4MDMiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjMzNlMTM0OS1iOTlkLTQyNTctODUwOC02YjkzMTdjMWEwN2EiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmMzM2UxMzQ5LWI5OWQtNDI1Ny04NTA4LTZiOTMxN2MxYTA3YSIgc3RFdnQ6d2hlbj0iMjAyNC0wNC0wM1QwMjo0MDo0NCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjQgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDY1YTQ1NDEtOGMyNy00MTAyLWE5ODQtNzc2NDA2MjhmNDQ1IiBzdEV2dDp3aGVuPSIyMDI0LTA0LTAzVDAyOjQ0OjQ1KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuNCAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7WMsgvAABCPklEQVR42u1deWgVVxc3L5tx37e6Vj/bWltrW1tt69LFFrtb6lLcsBWtVLFixYqiUlEsikVRFIsiFUUsoogiiogioogoIiKKiIgEg4QQQghBwu/7457pu5nMvDf3znZn3jnwwyzmzZ1zt7OfVgBaMRgMBoMRILoDyDAfGAwGg8FgqIKZwGAwGIwg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"}},"time_used":193,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":193,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"punks.my/assets/plugin/waves/waves.min.css","fqdn":"punks.my","domain":"punks.my","tld":"my"},"ip":{"addr":"172.67.191.162","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.311Z","timestamp":1785150870311,"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":"punks.my","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sat, 27 Jun 2026 16:36:56 GMT","end":"Fri, 25 Sep 2026 17:36:44 GMT"},"fingerprint":{"sha1":"B5:59:00:FB:B4:1C:FF:C6:C0:1D:DF:F3:DF:04:D1:62:02:4D:71:A1","sha256":"A4:B7:A1:BA:64:6E:4A:A9:B3:EE:CA:1A:A3:68:E5:1C:39:A5:6C:CB:83:00:EB:04:84:4F:E7:D2:5B:1A:A5:A0"}}},"request":{"raw":"GET /assets/plugin/waves/waves.min.css HTTP/1.1\r\nHost: punks.my\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://punks.my/\r\nCookie: XSRF-TOKEN=eyJpdiI6IjBYQk1GK3FEaCtpcnZjYWFCL01YYXc9PSIsInZhbHVlIjoiMG9WS3JJTy8rV2JVakwwMVlUY2NvUHhjR0RUa1BtbmF2czFjZi9wR0pQbkZia0dCQWRiMVVDOEpoa1pDTkhnQ3ZSdFBTTXlPOTJBbjBMaDRNSFFRRWFSajNUUm1GQk91TmFSSjRzK25taFBoSmFnL3RObWRueUtzb2hCVXFoRzUiLCJtYWMiOiJlODhkZGQwYjZiYjVhYzZkNzJjNjk0ZWVmNDJjZGU3OGRkMTgzZTBlMzVkMzkzZWEyNTdkMzBiODQ2YjA1ZDVkIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InZnb1kxRnV6S204ZDdOY3Jza2RjVHc9PSIsInZhbHVlIjoiYlYyeUVjeUZ2TG9RNll4YzZPNVNVMGpJQ2k0ZThLZnNCN1N0RHhtN2dqaktZUkkyaHZxTTVNZjB4TDFnbTl5bXBxcWdqRlNZR3paRlRQa1lMQXVGcEJRUUt4SENzaXpCQURaRTVxaUFSUVBVeCtFdzZWcmltNndJcFEwNk52WjQiLCJtYWMiOiJmMjY0ZTA0ZjgyZWFiZWQzYjdmNzNhYTgwZmNlOTM3NGJmYTcxNDRiMmVjYmFjMTQwMzA4NTRhNGQzNzZmMzI4IiwidGFnIjoiIn0%3D\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 11:14:30 GMT\r\ncontent-type: text/css\r\nlast-modified: Sun, 24 Mar 2024 10:12:57 GMT\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nvary: Accept-Encoding\r\netag: \"65fffca9-f20\"\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=D2qcs2l9B9MtyH7iRYRXGw2SSD7zYKDxQFpxUPBShWuMgWGO9hzhkZ41eoA67dR8NVyNAEpljT5Lenfrow7VaS9KwNqSlX6tJ7uGVeEM9q95%2FgZ13MiYj7e0%2Bw%3D%3D\"}]}\r\ncf-ray: a21b388b7bc856a2-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"]}],"data":{"size":3872,"size_decoded":1779,"mime_type":"text/css","magic":"ASCII text, with very long lines (3665)","md5":"0e4615892142c493e7accd1650b64898","sha1":"3241db3d1d58a8b5c37d9867da86083d3fae03d1","sha256":"3b7337c61f2fa65115577be7899520da7e0468090a6924f72e999475b744356d","sha512":"c261c80a178cf5b706df3a6eb2cc2d0e6804155be056bd60c7447b683cfb14a118e9a7b96313946644003239fa34a38c3700c73ba30639019999d9d336a651c9","ssdeep":"","tlshash":"b9819b798182221ae013ca9aaac3d15dfa34c5527723657fa33b3dd1df838ded22d605","first_seen":"2024-04-10T16:56:35Z","last_seen":"2026-07-27T11:25:33.527651Z","times_seen":34,"resource_available":false,"data":"LyohCiAqIFdhdmVzIHYwLjcuNQogKiBodHRwOi8vZmlhbi5teS5pZC9XYXZlcyAKICogCiAqIENvcHlyaWdodCAyMDE0LTIwMTYgQWxmaWFuYSBFLiBTaWJ1ZWEgYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyAKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIAogKiBodHRwczovL2dpdGh1Yi5jb20vZmlhbnMvV2F2ZXMvYmxvYi9tYXN0ZXIvTElDRU5TRSAKICovLndhdmVzLWVmZmVjdHtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ud2F2ZXMtZWZmZWN0IC53YXZlcy1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O21hcmdpbi10b3A6LTUwcHg7bWFyZ2luLWxlZnQ6LTUwcHg7b3BhY2l0eTowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMik7YmFja2dyb3VuZDotd2Via2l0LXJhZGlhbC1ncmFkaWVudChyZ2JhKDAsMCwwLC4yKSAwLHJnYmEoMCwwLDAsLjMpIDQwJSxyZ2JhKDAsMCwwLC40KSA1MCUscmdiYSgwLDAsMCwuNSkgNjAlLHJnYmEoMjU1LDI1NSwyNTUsMCkgNzAlKTtiYWNrZ3JvdW5kOi1vLXJhZGlhbC1ncmFkaWVudChyZ2JhKDAsMCwwLC4yKSAwLHJnYmEoMCwwLDAsLjMpIDQwJSxyZ2JhKDAsMCwwLC40KSA1MCUscmdiYSgwLDAsMCwuNSkgNjAlLHJnYmEoMjU1LDI1NSwyNTUsMCkgNzAlKTtiYWNrZ3JvdW5kOi1tb3otcmFkaWFsLWdyYWRpZW50KHJnYmEoMCwwLDAsLjIpIDAscmdiYSgwLDAsMCwuMykgNDAlLHJnYmEoMCwwLDAsLjQpIDUwJSxyZ2JhKDAsMCwwLC41KSA2MCUscmdiYSgyNTUsMjU1LDI1NSwwKSA3MCUpO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KHJnYmEoMCwwLDAsLjIpIDAscmdiYSgwLDAsMCwuMykgNDAlLHJnYmEoMCwwLDAsLjQpIDUwJSxyZ2JhKDAsMCwwLC41KSA2MCUscmdiYSgyNTUsMjU1LDI1NSwwKSA3MCUpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjVzIGVhc2Utb3V0Oy1tb3otdHJhbnNpdGlvbjphbGwgLjVzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246YWxsIC41cyBlYXNlLW91dDt0cmFuc2l0aW9uOmFsbCAuNXMgZWFzZS1vdXQ7LXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Oi13ZWJraXQtdHJhbnNmb3JtLG9wYWNpdHk7LW1vei10cmFuc2l0aW9uLXByb3BlcnR5Oi1tb3otdHJhbnNmb3JtLG9wYWNpdHk7LW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTotby10cmFuc2Zvcm0sb3BhY2l0eTt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybSxvcGFjaXR5Oy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDApIHRyYW5zbGF0ZSgwLDApOy1tb3otdHJhbnNmb3JtOnNjYWxlKDApIHRyYW5zbGF0ZSgwLDApOy1tcy10cmFuc2Zvcm06c2NhbGUoMCkgdHJhbnNsYXRlKDAsMCk7LW8tdHJhbnNmb3JtOnNjYWxlKDApIHRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTpzY2FsZSgwKSB0cmFuc2xhdGUoMCwwKTtwb2ludGVyLWV2ZW50czpub25lfS53YXZlcy1lZmZlY3Qud2F2ZXMtbGlnaHQgLndhdmVzLXJpcHBsZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjQpO2JhY2tncm91bmQ6LXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQocmdiYSgyNTUsMjU1LDI1NSwuMikgMCxyZ2JhKDI1NSwyNTUsMjU1LC4zKSA0MCUscmdiYSgyNTUsMjU1LDI1NSwuNCkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjUpIDYwJSxyZ2JhKDI1NSwyNTUsMjU1LDApIDcwJSk7YmFja2dyb3VuZDotby1yYWRpYWwtZ3JhZGllbnQocmdiYSgyNTUsMjU1LDI1NSwuMikgMCxyZ2JhKDI1NSwyNTUsMjU1LC4zKSA0MCUscmdiYSgyNTUsMjU1LDI1NSwuNCkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjUpIDYwJSxyZ2JhKDI1NSwyNTUsMjU1LDApIDcwJSk7YmFja2dyb3VuZDotbW96LXJhZGlhbC1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LC4yKSAwLHJnYmEoMjU1LDI1NSwyNTUsLjMpIDQwJSxyZ2JhKDI1NSwyNTUsMjU1LC40KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuNSkgNjAlLHJnYmEoMjU1LDI1NSwyNTUsMCkgNzAlKTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LC4yKSAwLHJnYmEoMjU1LDI1NSwyNTUsLjMpIDQwJSxyZ2JhKDI1NSwyNTUsMjU1LC40KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuNSkgNjAlLHJnYmEoMjU1LDI1NSwyNTUsMCkgNzAlKX0ud2F2ZXMtZWZmZWN0LndhdmVzLWNsYXNzaWMgLndhdmVzLXJpcHBsZXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjIpfS53YXZlcy1lZmZlY3Qud2F2ZXMtY2xhc3NpYy53YXZlcy1saWdodCAud2F2ZXMtcmlwcGxle2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNCl9LndhdmVzLW5vdHJhbnNpdGlvbnstd2Via2l0LXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LW1vei10cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50Oy1vLXRyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0ud2F2ZXMtYnV0dG9uLC53YXZlcy1jaXJjbGV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTstby10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTstd2Via2l0LW1hc2staW1hZ2U6LXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCNmZmYgMTAwJSwjMDAwIDEwMCUpfS53YXZlcy1idXR0b24sLndhdmVzLWJ1dHRvbjpob3Zlciwud2F2ZXMtYnV0dG9uOnZpc2l0ZWQsLndhdmVzLWJ1dHRvbi1pbnB1dHt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Zm9udC1zaXplOjFlbTtsaW5lLWhlaWdodDoxZW07dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ei1pbmRleDoxfS53YXZlcy1idXR0b257cGFkZGluZzouODVlbSAxLjFlbTtib3JkZXItcmFkaXVzOi4yZW19LndhdmVzLWJ1dHRvbi1pbnB1dHttYXJnaW46MDtwYWRkaW5nOi44NWVtIDEuMWVtfS53YXZlcy1pbnB1dC13cmFwcGVye2JvcmRlci1yYWRpdXM6LjJlbTt2ZXJ0aWNhbC1hbGlnbjpib3R0b219LndhdmVzLWlucHV0LXdyYXBwZXIud2F2ZXMtYnV0dG9ue3BhZGRpbmc6MH0ud2F2ZXMtaW5wdXQtd3JhcHBlciAud2F2ZXMtYnV0dG9uLWlucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjF9LndhdmVzLWNpcmNsZXt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoyLjVlbTtoZWlnaHQ6Mi41ZW07bGluZS1oZWlnaHQ6Mi41ZW07Ym9yZGVyLXJhZGl1czo1MCV9LndhdmVzLWZsb2F0ey13ZWJraXQtbWFzay1pbWFnZTpub25lOy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAxLjVweCAxcHggcmdiYSgwLDAsMCwuMTIpO2JveC1zaGFkb3c6MCAxcHggMS41cHggMXB4IHJnYmEoMCwwLDAsLjEyKTstd2Via2l0LXRyYW5zaXRpb246YWxsIDMwMG1zOy1tb3otdHJhbnNpdGlvbjphbGwgMzAwbXM7LW8tdHJhbnNpdGlvbjphbGwgMzAwbXM7dHJhbnNpdGlvbjphbGwgMzAwbXN9LndhdmVzLWZsb2F0OmFjdGl2ZXstd2Via2l0LWJveC1zaGFkb3c6MCA4cHggMjBweCAxcHggcmdiYSgwLDAsMCwuMyk7Ym94LXNoYWRvdzowIDhweCAyMHB4IDFweCByZ2JhKDAsMCwwLC4zKX0ud2F2ZXMtYmxvY2t7ZGlzcGxheTpibG9ja30="}},"time_used":199,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":199,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"punks.my","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/charts/loader.js","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.347Z","timestamp":1785150870347,"http_version":"HTTP/2","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":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /charts/loader.js HTTP/1.1\r\nHost: www.gstatic.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://punks.my/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-credentials: true\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gviz\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gviz\"\r\nreport-to: {\"group\":\"gviz\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gviz\"}]}\r\ncontent-length: 18534\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Mon, 27 Jul 2026 10:47:20 GMT\r\nexpires: Mon, 27 Jul 2026 11:47:20 GMT\r\ncache-control: public, max-age=3600\r\nage: 1630\r\nlast-modified: Tue, 04 Apr 2023 17:52:30 GMT\r\ncontent-type: text/javascript\r\nvary: Accept-Encoding, Origin\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":62428,"size_decoded":19377,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (2186)","md5":"32bc41d964faa1b95d9c61fc443df579","sha1":"02d3f83dac14fe996babbfe332779ed182d39d1c","sha256":"369ae154eab37b7ada7776b934833183bb053ebd1d0255f70ef8944f65cabb0c","sha512":"45539d5a40bf03b25c6f4328c0d10bf62a1012ff9be634877d62ec8a7ff35b25dd6cdc0fdfd5fcae2e3d980b6e4ba653b259c099935d52a20e8b6581cce521d5","ssdeep":"1536:nygImrQ9lbiv3fG3K2cRGJKeARlXAnVYqkAKDS16nH:x1QzbivRRen9K","tlshash":"6453cacc75a1b45417222db1653f620ef77e1a69b8c849c4f29cc0e83fb948d4a62f79","first_seen":"2023-04-05T02:08:19Z","last_seen":"2026-07-27T12:47:18.344613Z","times_seen":16686,"resource_available":true,"data":"KGZ1bmN0aW9uKCl7LyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KJ3VzZSBzdHJpY3QnO2Z1bmN0aW9uIGFhKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fXZhciBiYT0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTsKZnVuY3Rpb24gY2EoYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fXZhciBsPWNhKHRoaXMpO2Z1bmN0aW9uIHAoYSxiKXtpZihiKWE6e3ZhciBjPWw7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpYnJlYWsgYTtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmYmEoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfX0KcCgiU3ltYm9sIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGgpe2lmKHRoaXMgaW5zdGFuY2VvZiBiKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3JldHVybiBuZXcgYyhkKyhofHwiIikrIl8iK2UrKyxoKX1mdW5jdGlvbiBjKGgsZil7dGhpcy5nPWg7YmEodGhpcywiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Zn0pfWlmKGEpcmV0dXJuIGE7Yy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nfTt2YXIgZD0ianNjb21wX3N5bWJvbF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApKyJfIixlPTA7cmV0dXJuIGJ9KTsKcCgiU3ltYm9sLml0ZXJhdG9yIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO2E9U3ltYm9sKCJTeW1ib2wuaXRlcmF0b3IiKTtmb3IodmFyIGI9IkFycmF5IEludDhBcnJheSBVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEludDE2QXJyYXkgVWludDE2QXJyYXkgSW50MzJBcnJheSBVaW50MzJBcnJheSBGbG9hdDMyQXJyYXkgRmxvYXQ2NEFycmF5Ii5zcGxpdCgiICIpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9bFtiW2NdXTsiZnVuY3Rpb24iPT09dHlwZW9mIGQmJiJmdW5jdGlvbiIhPXR5cGVvZiBkLnByb3RvdHlwZVthXSYmYmEoZC5wcm90b3R5cGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGRhKGFhKHRoaXMpKX19KX1yZXR1cm4gYX0pO3AoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOlN5bWJvbCgiU3ltYm9sLmFzeW5jSXRlcmF0b3IiKX0pOwpmdW5jdGlvbiBkYShhKXthPXtuZXh0OmF9O2FbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtyZXR1cm4gYX1mdW5jdGlvbiBxKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtpZihiKXJldHVybiBiLmNhbGwoYSk7aWYoIm51bWJlciI9PXR5cGVvZiBhLmxlbmd0aClyZXR1cm57bmV4dDphYShhKX07dGhyb3cgRXJyb3IoU3RyaW5nKGEpKyIgaXMgbm90IGFuIGl0ZXJhYmxlIG9yIEFycmF5TGlrZSIpO31mdW5jdGlvbiBlYShhKXtpZighKGEgaW5zdGFuY2VvZiBBcnJheSkpe2E9cShhKTtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTthPWN9cmV0dXJuIGF9ZnVuY3Rpb24gcihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKX0KdmFyIGZhPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoZClmb3IodmFyIGUgaW4gZClyKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtwKCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8ZmF9KTt2YXIgaGE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZiloYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgaWE7YTp7dmFyIGphPXthOiEwfSxrYT17fTt0cnl7a2EuX19wcm90b19fPWphO2lhPWthLmE7YnJlYWsgYX1jYXRjaChhKXt9aWE9ITF9aGE9aWE/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsfXZhciB0PWhhOwpmdW5jdGlvbiBsYSgpe2Zvcih2YXIgYT1OdW1iZXIodGhpcyksYj1bXSxjPWE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliW2MtYV09YXJndW1lbnRzW2NdO3JldHVybiBifQpwKCJQcm9taXNlIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGYpe3RoaXMuZz0wO3RoaXMuaT12b2lkIDA7dGhpcy5oPVtdO3RoaXMubz0hMTt2YXIgZz10aGlzLmooKTt0cnl7ZihnLnJlc29sdmUsZy5yZWplY3QpfWNhdGNoKGspe2cucmVqZWN0KGspfX1mdW5jdGlvbiBjKCl7dGhpcy5nPW51bGx9ZnVuY3Rpb24gZChmKXtyZXR1cm4gZiBpbnN0YW5jZW9mIGI/ZjpuZXcgYihmdW5jdGlvbihnKXtnKGYpfSl9aWYoYSlyZXR1cm4gYTtjLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGYpe2lmKG51bGw9PXRoaXMuZyl7dGhpcy5nPVtdO3ZhciBnPXRoaXM7dGhpcy5pKGZ1bmN0aW9uKCl7Zy5sKCl9KX10aGlzLmcucHVzaChmKX07dmFyIGU9bC5zZXRUaW1lb3V0O2MucHJvdG90eXBlLmk9ZnVuY3Rpb24oZil7ZShmLDApfTtjLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmcmJnRoaXMuZy5sZW5ndGg7KXt2YXIgZj10aGlzLmc7dGhpcy5nPVtdO2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7KytnKXt2YXIgaz0KZltnXTtmW2ddPW51bGw7dHJ5e2soKX1jYXRjaChtKXt0aGlzLmoobSl9fX10aGlzLmc9bnVsbH07Yy5wcm90b3R5cGUuaj1mdW5jdGlvbihmKXt0aGlzLmkoZnVuY3Rpb24oKXt0aHJvdyBmO30pfTtiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihtKXtyZXR1cm4gZnVuY3Rpb24obil7a3x8KGs9ITAsbS5jYWxsKGcsbikpfX12YXIgZz10aGlzLGs9ITE7cmV0dXJue3Jlc29sdmU6Zih0aGlzLkQpLHJlamVjdDpmKHRoaXMubCl9fTtiLnByb3RvdHlwZS5EPWZ1bmN0aW9uKGYpe2lmKGY9PT10aGlzKXRoaXMubChuZXcgVHlwZUVycm9yKCJBIFByb21pc2UgY2Fubm90IHJlc29sdmUgdG8gaXRzZWxmIikpO2Vsc2UgaWYoZiBpbnN0YW5jZW9mIGIpdGhpcy5PKGYpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGYpe2Nhc2UgIm9iamVjdCI6dmFyIGc9bnVsbCE9ZjticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjpnPSEwO2JyZWFrIGE7ZGVmYXVsdDpnPSExfWc/dGhpcy5DKGYpOnRoaXMubShmKX19OwpiLnByb3RvdHlwZS5DPWZ1bmN0aW9uKGYpe3ZhciBnPXZvaWQgMDt0cnl7Zz1mLnRoZW59Y2F0Y2goayl7dGhpcy5sKGspO3JldHVybn0iZnVuY3Rpb24iPT10eXBlb2YgZz90aGlzLlAoZyxmKTp0aGlzLm0oZil9O2IucHJvdG90eXBlLmw9ZnVuY3Rpb24oZil7dGhpcy51KDIsZil9O2IucHJvdG90eXBlLm09ZnVuY3Rpb24oZil7dGhpcy51KDEsZil9O2IucHJvdG90eXBlLnU9ZnVuY3Rpb24oZixnKXtpZigwIT10aGlzLmcpdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitmKyIsICIrZysiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuZyk7dGhpcy5nPWY7dGhpcy5pPWc7Mj09PXRoaXMuZyYmdGhpcy5HKCk7dGhpcy5BKCl9O2IucHJvdG90eXBlLkc9ZnVuY3Rpb24oKXt2YXIgZj10aGlzO2UoZnVuY3Rpb24oKXtpZihmLkIoKSl7dmFyIGc9bC5jb25zb2xlOyJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJmcuZXJyb3IoZi5pKX19LDEpfTtiLnByb3RvdHlwZS5CPQpmdW5jdGlvbigpe2lmKHRoaXMubylyZXR1cm4hMTt2YXIgZj1sLkN1c3RvbUV2ZW50LGc9bC5FdmVudCxrPWwuZGlzcGF0Y2hFdmVudDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBrKXJldHVybiEwOyJmdW5jdGlvbiI9PT10eXBlb2YgZj9mPW5ldyBmKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBnP2Y9bmV3IGcoInVuaGFuZGxlZHJlamVjdGlvbiIse2NhbmNlbGFibGU6ITB9KTooZj1sLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpLGYuaW5pdEN1c3RvbUV2ZW50KCJ1bmhhbmRsZWRyZWplY3Rpb24iLCExLCEwLGYpKTtmLnByb21pc2U9dGhpcztmLnJlYXNvbj10aGlzLmk7cmV0dXJuIGsoZil9O2IucHJvdG90eXBlLkE9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLmgpe2Zvcih2YXIgZj0wO2Y8dGhpcy5oLmxlbmd0aDsrK2YpaC5oKHRoaXMuaFtmXSk7dGhpcy5oPW51bGx9fTt2YXIgaD1uZXcgYztiLnByb3RvdHlwZS5PPQpmdW5jdGlvbihmKXt2YXIgZz10aGlzLmooKTtmLkYoZy5yZXNvbHZlLGcucmVqZWN0KX07Yi5wcm90b3R5cGUuUD1mdW5jdGlvbihmLGcpe3ZhciBrPXRoaXMuaigpO3RyeXtmLmNhbGwoZyxrLnJlc29sdmUsay5yZWplY3QpfWNhdGNoKG0pe2sucmVqZWN0KG0pfX07Yi5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihmLGcpe2Z1bmN0aW9uIGsoeSxHKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgeT9mdW5jdGlvbihyYSl7dHJ5e20oeShyYSkpfWNhdGNoKHNhKXtuKHNhKX19Okd9dmFyIG0sbix1PW5ldyBiKGZ1bmN0aW9uKHksRyl7bT15O249R30pO3RoaXMuRihrKGYsbSksayhnLG4pKTtyZXR1cm4gdX07Yi5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZil9O2IucHJvdG90eXBlLkY9ZnVuY3Rpb24oZixnKXtmdW5jdGlvbiBrKCl7c3dpdGNoKG0uZyl7Y2FzZSAxOmYobS5pKTticmVhaztjYXNlIDI6ZyhtLmkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuZXhwZWN0ZWQgc3RhdGU6ICIrCm0uZyk7fX12YXIgbT10aGlzO251bGw9PXRoaXMuaD9oLmgoayk6dGhpcy5oLnB1c2goayk7dGhpcy5vPSEwfTtiLnJlc29sdmU9ZDtiLnJlamVjdD1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGIoZnVuY3Rpb24oZyxrKXtrKGYpfSl9O2IucmFjZT1mdW5jdGlvbihmKXtyZXR1cm4gbmV3IGIoZnVuY3Rpb24oZyxrKXtmb3IodmFyIG09cShmKSxuPW0ubmV4dCgpOyFuLmRvbmU7bj1tLm5leHQoKSlkKG4udmFsdWUpLkYoZyxrKX0pfTtiLmFsbD1mdW5jdGlvbihmKXt2YXIgZz1xKGYpLGs9Zy5uZXh0KCk7cmV0dXJuIGsuZG9uZT9kKFtdKTpuZXcgYihmdW5jdGlvbihtLG4pe2Z1bmN0aW9uIHUocmEpe3JldHVybiBmdW5jdGlvbihzYSl7eVtyYV09c2E7Ry0tOzA9PUcmJm0oeSl9fXZhciB5PVtdLEc9MDtkbyB5LnB1c2godm9pZCAwKSxHKyssZChrLnZhbHVlKS5GKHUoeS5sZW5ndGgtMSksbiksaz1nLm5leHQoKTt3aGlsZSghay5kb25lKX0pfTtyZXR1cm4gYn0pOwpwKCJPYmplY3Quc2V0UHJvdG90eXBlT2YiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHx0fSk7CnAoIldlYWtNYXAiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoayl7dGhpcy5nPShnKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoayl7az1xKGspO2Zvcih2YXIgbTshKG09ay5uZXh0KCkpLmRvbmU7KW09bS52YWx1ZSx0aGlzLnNldChtWzBdLG1bMV0pfX1mdW5jdGlvbiBjKCl7fWZ1bmN0aW9uIGQoayl7dmFyIG09dHlwZW9mIGs7cmV0dXJuIm9iamVjdCI9PT1tJiZudWxsIT09a3x8ImZ1bmN0aW9uIj09PW19ZnVuY3Rpb24gZShrKXtpZighcihrLGYpKXt2YXIgbT1uZXcgYztiYShrLGYse3ZhbHVlOm19KX19ZnVuY3Rpb24gaChrKXt2YXIgbT1PYmplY3Rba107bSYmKE9iamVjdFtrXT1mdW5jdGlvbihuKXtpZihuIGluc3RhbmNlb2YgYylyZXR1cm4gbjtPYmplY3QuaXNFeHRlbnNpYmxlKG4pJiZlKG4pO3JldHVybiBtKG4pfSl9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgaz1PYmplY3Quc2VhbCh7fSksbT1PYmplY3Quc2VhbCh7fSksCm49bmV3IGEoW1trLDJdLFttLDNdXSk7aWYoMiE9bi5nZXQoayl8fDMhPW4uZ2V0KG0pKXJldHVybiExO24uZGVsZXRlKGspO24uc2V0KG0sNCk7cmV0dXJuIW4uaGFzKGspJiY0PT1uLmdldChtKX1jYXRjaCh1KXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGY9IiRqc2NvbXBfaGlkZGVuXyIrTWF0aC5yYW5kb20oKTtoKCJmcmVlemUiKTtoKCJwcmV2ZW50RXh0ZW5zaW9ucyIpO2goInNlYWwiKTt2YXIgZz0wO2IucHJvdG90eXBlLnNldD1mdW5jdGlvbihrLG0pe2lmKCFkKGspKXRocm93IEVycm9yKCJJbnZhbGlkIFdlYWtNYXAga2V5Iik7ZShrKTtpZighcihrLGYpKXRocm93IEVycm9yKCJXZWFrTWFwIGtleSBmYWlsOiAiK2spO2tbZl1bdGhpcy5nXT1tO3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oayl7cmV0dXJuIGQoaykmJnIoayxmKT9rW2ZdW3RoaXMuZ106dm9pZCAwfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oayl7cmV0dXJuIGQoaykmJnIoaywKZikmJnIoa1tmXSx0aGlzLmcpfTtiLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oayl7cmV0dXJuIGQoaykmJnIoayxmKSYmcihrW2ZdLHRoaXMuZyk/ZGVsZXRlIGtbZl1bdGhpcy5nXTohMX07cmV0dXJuIGJ9KTsKcCgiTWFwIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7dmFyIGc9e307cmV0dXJuIGcudj1nLm5leHQ9Zy5oZWFkPWd9ZnVuY3Rpb24gYyhnLGspe3ZhciBtPWcuZztyZXR1cm4gZGEoZnVuY3Rpb24oKXtpZihtKXtmb3IoO20uaGVhZCE9Zy5nOyltPW0udjtmb3IoO20ubmV4dCE9bS5oZWFkOylyZXR1cm4gbT1tLm5leHQse2RvbmU6ITEsdmFsdWU6ayhtKX07bT1udWxsfXJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19KX1mdW5jdGlvbiBkKGcsayl7dmFyIG09ayYmdHlwZW9mIGs7Im9iamVjdCI9PW18fCJmdW5jdGlvbiI9PW0/aC5oYXMoayk/bT1oLmdldChrKToobT0iIisgKytmLGguc2V0KGssbSkpOm09InBfIitrO3ZhciBuPWcuaFttXTtpZihuJiZyKGcuaCxtKSlmb3IoZz0wO2c8bi5sZW5ndGg7ZysrKXt2YXIgdT1uW2ddO2lmKGshPT1rJiZ1LmtleSE9PXUua2V5fHxrPT09dS5rZXkpcmV0dXJue2lkOm0sbGlzdDpuLGluZGV4Omcsczp1fX1yZXR1cm57aWQ6bSxsaXN0Om4sCmluZGV4Oi0xLHM6dm9pZCAwfX1mdW5jdGlvbiBlKGcpe3RoaXMuaD17fTt0aGlzLmc9YigpO3RoaXMuc2l6ZT0wO2lmKGcpe2c9cShnKTtmb3IodmFyIGs7IShrPWcubmV4dCgpKS5kb25lOylrPWsudmFsdWUsdGhpcy5zZXQoa1swXSxrWzFdKX19aWYoZnVuY3Rpb24oKXtpZighYXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGF8fCFhLnByb3RvdHlwZS5lbnRyaWVzfHwiZnVuY3Rpb24iIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBnPU9iamVjdC5zZWFsKHt4OjR9KSxrPW5ldyBhKHEoW1tnLCJzIl1dKSk7aWYoInMiIT1rLmdldChnKXx8MSE9ay5zaXplfHxrLmdldCh7eDo0fSl8fGsuc2V0KHt4OjR9LCJ0IikhPWt8fDIhPWsuc2l6ZSlyZXR1cm4hMTt2YXIgbT1rLmVudHJpZXMoKSxuPW0ubmV4dCgpO2lmKG4uZG9uZXx8bi52YWx1ZVswXSE9Z3x8InMiIT1uLnZhbHVlWzFdKXJldHVybiExO249bS5uZXh0KCk7cmV0dXJuIG4uZG9uZXx8NCE9bi52YWx1ZVswXS54fHwKInQiIT1uLnZhbHVlWzFdfHwhbS5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaCh1KXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGg9bmV3IFdlYWtNYXA7ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsayl7Zz0wPT09Zz8wOmc7dmFyIG09ZCh0aGlzLGcpO20ubGlzdHx8KG0ubGlzdD10aGlzLmhbbS5pZF09W10pO20ucz9tLnMudmFsdWU9azoobS5zPXtuZXh0OnRoaXMuZyx2OnRoaXMuZy52LGhlYWQ6dGhpcy5nLGtleTpnLHZhbHVlOmt9LG0ubGlzdC5wdXNoKG0ucyksdGhpcy5nLnYubmV4dD1tLnMsdGhpcy5nLnY9bS5zLHRoaXMuc2l6ZSsrKTtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGcpe2c9ZCh0aGlzLGcpO3JldHVybiBnLnMmJmcubGlzdD8oZy5saXN0LnNwbGljZShnLmluZGV4LDEpLGcubGlzdC5sZW5ndGh8fGRlbGV0ZSB0aGlzLmhbZy5pZF0sZy5zLnYubmV4dD1nLnMubmV4dCxnLnMubmV4dC52PWcucy52LGcucy5oZWFkPW51bGwsdGhpcy5zaXplLS0sCiEwKTohMX07ZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmg9e307dGhpcy5nPXRoaXMuZy52PWIoKTt0aGlzLnNpemU9MH07ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGcpe3JldHVybiEhZCh0aGlzLGcpLnN9O2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihnKXtyZXR1cm4oZz1kKHRoaXMsZykucykmJmcudmFsdWV9O2UucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzLGZ1bmN0aW9uKGcpe3JldHVybltnLmtleSxnLnZhbHVlXX0pfTtlLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcyxmdW5jdGlvbihnKXtyZXR1cm4gZy5rZXl9KX07ZS5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcyxmdW5jdGlvbihnKXtyZXR1cm4gZy52YWx1ZX0pfTtlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGcsayl7Zm9yKHZhciBtPXRoaXMuZW50cmllcygpLG47IShuPW0ubmV4dCgpKS5kb25lOyluPW4udmFsdWUsCmcuY2FsbChrLG5bMV0sblswXSx0aGlzKX07ZS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1lLnByb3RvdHlwZS5lbnRyaWVzO3ZhciBmPTA7cmV0dXJuIGV9KTtmdW5jdGlvbiBtYShhLGIpe2EgaW5zdGFuY2VvZiBTdHJpbmcmJihhKz0iIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGg9YysrO3JldHVybnt2YWx1ZTpiKGgsYVtoXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBlfXAoIkFycmF5LnByb3RvdHlwZS52YWx1ZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gbWEodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBjfSl9fSk7cCgiQXJyYXkucHJvdG90eXBlLmtleXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gbWEodGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gYn0pfX0pOwpmdW5jdGlvbiB2KGEsYixjKXtpZihudWxsPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSAndGhpcycgdmFsdWUgZm9yIFN0cmluZy5wcm90b3R5cGUuIitjKyIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtpZihiIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuIitjKyIgbXVzdCBub3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24iKTtyZXR1cm4gYSsiIn1wKCJTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dih0aGlzLGIsImVuZHNXaXRoIik7dm9pZCAwPT09YyYmKGM9ZC5sZW5ndGgpO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsZC5sZW5ndGgpKTtmb3IodmFyIGU9Yi5sZW5ndGg7MDxlJiYwPGM7KWlmKGRbLS1jXSE9YlstLWVdKXJldHVybiExO3JldHVybiAwPj1lfX0pOwpmdW5jdGlvbiBuYShhLGIsYyl7YSBpbnN0YW5jZW9mIFN0cmluZyYmKGE9U3RyaW5nKGEpKTtmb3IodmFyIGQ9YS5sZW5ndGgsZT0wO2U8ZDtlKyspe3ZhciBoPWFbZV07aWYoYi5jYWxsKGMsaCxlLGEpKXJldHVybntKOmUsTjpofX1yZXR1cm57SjotMSxOOnZvaWQgMH19cCgiQXJyYXkucHJvdG90eXBlLmZpbmQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gbmEodGhpcyxiLGMpLk59fSk7cCgiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dih0aGlzLGIsInN0YXJ0c1dpdGgiKSxlPWQubGVuZ3RoLGg9Yi5sZW5ndGg7Yz1NYXRoLm1heCgwLE1hdGgubWluKGN8MCxkLmxlbmd0aCkpO2Zvcih2YXIgZj0wO2Y8aCYmYzxlOylpZihkW2MrK10hPWJbZisrXSlyZXR1cm4hMTtyZXR1cm4gZj49aH19KTsKcCgiTnVtYmVyLmlzRmluaXRlIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiJudW1iZXIiIT09dHlwZW9mIGI/ITE6IWlzTmFOKGIpJiZJbmZpbml0eSE9PWImJi1JbmZpbml0eSE9PWJ9fSk7cCgiU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7dmFyIGM9dih0aGlzLG51bGwsInJlcGVhdCIpO2lmKDA+Ynx8MTM0MjE3NzI3OTxiKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIGNvdW50IHZhbHVlIik7Ynw9MDtmb3IodmFyIGQ9IiI7YjspaWYoYiYxJiYoZCs9YyksYj4+Pj0xKWMrPWM7cmV0dXJuIGR9fSk7CnAoIkFycmF5LmZyb20iLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjLGQpe2M9bnVsbCE9Yz9jOmZ1bmN0aW9uKGcpe3JldHVybiBnfTt2YXIgZT1bXSxoPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmJbU3ltYm9sLml0ZXJhdG9yXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgaCl7Yj1oLmNhbGwoYik7Zm9yKHZhciBmPTA7IShoPWIubmV4dCgpKS5kb25lOyllLnB1c2goYy5jYWxsKGQsaC52YWx1ZSxmKyspKX1lbHNlIGZvcihoPWIubGVuZ3RoLGY9MDtmPGg7ZisrKWUucHVzaChjLmNhbGwoZCxiW2ZdLGYpKTtyZXR1cm4gZX19KTtwKCJTdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0IixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfXJldHVybiBhfHxifSk7cCgiU3RyaW5nLnByb3RvdHlwZS50cmltU3RhcnQiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxTdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0fSk7CnAoIk9iamVjdC5pcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBiPT09Yz8wIT09Ynx8MS9iPT09MS9jOmIhPT1iJiZjIT09Y319KTtwKCJBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcigwPmMmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGg9ZFtjXTtpZihoPT09Ynx8T2JqZWN0LmlzKGgsYikpcmV0dXJuITB9cmV0dXJuITF9fSk7cCgiU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybi0xIT09dih0aGlzLGIsImluY2x1ZGVzIikuaW5kZXhPZihiLGN8fDApfX0pOwpwKCJNYXRoLnRydW5jIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxJbmZpbml0eT09PWJ8fC1JbmZpbml0eT09PWJ8fDA9PT1iKXJldHVybiBiO3ZhciBjPU1hdGguZmxvb3IoTWF0aC5hYnMoYikpO3JldHVybiAwPmI/LWM6Y319KTtmdW5jdGlvbiBvYShhKXthPU1hdGgudHJ1bmMoYSl8fDA7MD5hJiYoYSs9dGhpcy5sZW5ndGgpO2lmKCEoMD5hfHxhPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXNbYV19cCgiQXJyYXkucHJvdG90eXBlLmF0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOm9hfSk7CnAoIkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMpe2M9TnVtYmVyKGMpO3JldHVybiBJbmZpbml0eT09PWN8fC1JbmZpbml0eT09PWM/YzpjfDB9cmV0dXJuIGE/YTpmdW5jdGlvbihjLGQsZSl7dmFyIGg9dGhpcy5sZW5ndGg7Yz1iKGMpO2Q9YihkKTtlPXZvaWQgMD09PWU/aDpiKGUpO2M9MD5jP01hdGgubWF4KGgrYywwKTpNYXRoLm1pbihjLGgpO2Q9MD5kP01hdGgubWF4KGgrZCwwKTpNYXRoLm1pbihkLGgpO2U9MD5lP01hdGgubWF4KGgrZSwwKTpNYXRoLm1pbihlLGgpO2lmKGM8ZClmb3IoO2Q8ZTspZCBpbiB0aGlzP3RoaXNbYysrXT10aGlzW2QrK106KGRlbGV0ZSB0aGlzW2MrK10sZCsrKTtlbHNlIGZvcihlPU1hdGgubWluKGUsaCtkLWMpLGMrPWUtZDtlPmQ7KS0tZSBpbiB0aGlzP3RoaXNbLS1jXT10aGlzW2VdOmRlbGV0ZSB0aGlzWy0tY107cmV0dXJuIHRoaXN9fSk7CnAoIkFycmF5LnByb3RvdHlwZS5lbnRyaWVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIG1hKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm5bYixjXX0pfX0pO3AoIkFycmF5LnByb3RvdHlwZS5maWxsIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyxkKXt2YXIgZT10aGlzLmxlbmd0aHx8MDswPmMmJihjPU1hdGgubWF4KDAsZStjKSk7aWYobnVsbD09ZHx8ZD5lKWQ9ZTtkPU51bWJlcihkKTswPmQmJihkPU1hdGgubWF4KDAsZStkKSk7Zm9yKGM9TnVtYmVyKGN8fDApO2M8ZDtjKyspdGhpc1tjXT1iO3JldHVybiB0aGlzfX0pO3AoIkFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gbmEodGhpcyxiLGMpLkp9fSk7CnAoIkFycmF5LnByb3RvdHlwZS5mbGF0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9dm9pZCAwPT09Yj8xOmI7dmFyIGM9W107QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0aGlzLGZ1bmN0aW9uKGQpe0FycmF5LmlzQXJyYXkoZCkmJjA8Yj8oZD1BcnJheS5wcm90b3R5cGUuZmxhdC5jYWxsKGQsYi0xKSxjLnB1c2guYXBwbHkoYyxkKSk6Yy5wdXNoKGQpfSk7cmV0dXJuIGN9fSk7cCgiQXJyYXkucHJvdG90eXBlLmZsYXRNYXAiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD1bXTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHRoaXMsZnVuY3Rpb24oZSxoKXtlPWIuY2FsbChjLGUsaCx0aGlzKTtBcnJheS5pc0FycmF5KGUpP2QucHVzaC5hcHBseShkLGUpOmQucHVzaChlKX0pO3JldHVybiBkfX0pO3AoIkFycmF5Lm9mIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiBBcnJheS5mcm9tKGFyZ3VtZW50cyl9fSk7CnAoImdsb2JhbFRoaXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxsfSk7cCgiTWF0aC5hY29zaCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtiPU51bWJlcihiKTtyZXR1cm4gTWF0aC5sb2coYitNYXRoLnNxcnQoYipiLTEpKX19KTtwKCJNYXRoLmFzaW5oIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO2lmKDA9PT1iKXJldHVybiBiO3ZhciBjPU1hdGgubG9nKE1hdGguYWJzKGIpK01hdGguc3FydChiKmIrMSkpO3JldHVybiAwPmI/LWM6Y319KTtwKCJNYXRoLmxvZzFwIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO2lmKC4yNT5iJiYtLjI1PGIpe2Zvcih2YXIgYz1iLGQ9MSxlPWIsaD0wLGY9MTtoIT1lOyljKj1iLGYqPS0xLGU9KGg9ZSkrZipjLysrZDtyZXR1cm4gZX1yZXR1cm4gTWF0aC5sb2coMStiKX19KTsKcCgiTWF0aC5hdGFuaCIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTt2YXIgYj1NYXRoLmxvZzFwO3JldHVybiBmdW5jdGlvbihjKXtjPU51bWJlcihjKTtyZXR1cm4oYihjKS1iKC1jKSkvMn19KTtwKCJNYXRoLmNicnQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7aWYoMD09PWIpcmV0dXJuIGI7Yj1OdW1iZXIoYik7dmFyIGM9TWF0aC5wb3coTWF0aC5hYnMoYiksMS8zKTtyZXR1cm4gMD5iPy1jOmN9fSk7cCgiTWF0aC5jbHozMiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtiPU51bWJlcihiKT4+PjA7aWYoMD09PWIpcmV0dXJuIDMyO3ZhciBjPTA7MD09PShiJjQyOTQ5MDE3NjApJiYoYjw8PTE2LGMrPTE2KTswPT09KGImNDI3ODE5MDA4MCkmJihiPDw9OCxjKz04KTswPT09KGImNDAyNjUzMTg0MCkmJihiPDw9NCxjKz00KTswPT09KGImMzIyMTIyNTQ3MikmJihiPDw9MixjKz0yKTswPT09KGImMjE0NzQ4MzY0OCkmJmMrKztyZXR1cm4gY319KTsKcCgiTWF0aC5jb3NoIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO3ZhciBiPU1hdGguZXhwO3JldHVybiBmdW5jdGlvbihjKXtjPU51bWJlcihjKTtyZXR1cm4oYihjKStiKC1jKSkvMn19KTtwKCJNYXRoLmV4cG0xIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO2lmKC4yNT5iJiYtLjI1PGIpe2Zvcih2YXIgYz1iLGQ9MSxlPWIsaD0wO2ghPWU7KWMqPWIvKytkLGU9KGg9ZSkrYztyZXR1cm4gZX1yZXR1cm4gTWF0aC5leHAoYiktMX19KTtwKCJNYXRoLmZyb3VuZCIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIEZsb2F0MzJBcnJheSlyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGN9O3ZhciBiPW5ldyBGbG9hdDMyQXJyYXkoMSk7cmV0dXJuIGZ1bmN0aW9uKGMpe2JbMF09YztyZXR1cm4gYlswXX19KTsKcCgiTWF0aC5oeXBvdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtpZigyPmFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/TWF0aC5hYnMoYXJndW1lbnRzWzBdKTowO3ZhciBjLGQsZTtmb3IoYz1lPTA7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyllPU1hdGgubWF4KGUsTWF0aC5hYnMoYXJndW1lbnRzW2NdKSk7aWYoMUUxMDA8ZXx8MUUtMTAwPmUpe2lmKCFlKXJldHVybiBlO2ZvcihjPWQ9MDtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgaD1OdW1iZXIoYXJndW1lbnRzW2NdKS9lO2QrPWgqaH1yZXR1cm4gTWF0aC5zcXJ0KGQpKmV9Zm9yKGM9ZD0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspaD1OdW1iZXIoYXJndW1lbnRzW2NdKSxkKz1oKmg7cmV0dXJuIE1hdGguc3FydChkKX19KTsKcCgiTWF0aC5pbXVsIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7Yj1OdW1iZXIoYik7Yz1OdW1iZXIoYyk7dmFyIGQ9YiY2NTUzNSxlPWMmNjU1MzU7cmV0dXJuIGQqZSsoKGI+Pj4xNiY2NTUzNSkqZStkKihjPj4+MTYmNjU1MzUpPDwxNj4+PjApfDB9fSk7cCgiTWF0aC5sb2cxMCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gTWF0aC5sb2coYikvTWF0aC5MTjEwfX0pO3AoIk1hdGgubG9nMiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gTWF0aC5sb2coYikvTWF0aC5MTjJ9fSk7cCgiTWF0aC5zaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO3JldHVybiAwPT09Ynx8aXNOYU4oYik/YjowPGI/MTotMX19KTsKcCgiTWF0aC5zaW5oIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO3ZhciBiPU1hdGguZXhwO3JldHVybiBmdW5jdGlvbihjKXtjPU51bWJlcihjKTtyZXR1cm4gMD09PWM/YzooYihjKS1iKC1jKSkvMn19KTtwKCJNYXRoLnRhbmgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Yj1OdW1iZXIoYik7aWYoMD09PWIpcmV0dXJuIGI7dmFyIGM9TWF0aC5leHAoLTIqTWF0aC5hYnMoYikpO2M9KDEtYykvKDErYyk7cmV0dXJuIDA+Yj8tYzpjfX0pO3AoIk51bWJlci5FUFNJTE9OIixmdW5jdGlvbigpe3JldHVybiBNYXRoLnBvdygyLC01Mil9KTtwKCJOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiIsZnVuY3Rpb24oKXtyZXR1cm4gOTAwNzE5OTI1NDc0MDk5MX0pO3AoIk51bWJlci5NSU5fU0FGRV9JTlRFR0VSIixmdW5jdGlvbigpe3JldHVybi05MDA3MTk5MjU0NzQwOTkxfSk7CnAoIk51bWJlci5pc0ludGVnZXIiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShiKT9iPT09TWF0aC5mbG9vcihiKTohMX19KTtwKCJOdW1iZXIuaXNOYU4iLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgYiYmaXNOYU4oYil9fSk7cCgiTnVtYmVyLmlzU2FmZUludGVnZXIiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoYikmJk1hdGguYWJzKGIpPD1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUn19KTtwKCJOdW1iZXIucGFyc2VGbG9hdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fHBhcnNlRmxvYXR9KTtwKCJOdW1iZXIucGFyc2VJbnQiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxwYXJzZUludH0pOwpwKCJPYmplY3QuZW50cmllcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpcihiLGQpJiZjLnB1c2goW2QsYltkXV0pO3JldHVybiBjfX0pO3AoIk9iamVjdC5mcm9tRW50cmllcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz17fTtpZighKFN5bWJvbC5pdGVyYXRvciBpbiBiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiK2IrIiBpcyBub3QgaXRlcmFibGUiKTtiPWJbU3ltYm9sLml0ZXJhdG9yXS5jYWxsKGIpO2Zvcih2YXIgZD1iLm5leHQoKTshZC5kb25lO2Q9Yi5uZXh0KCkpe2Q9ZC52YWx1ZTtpZihPYmplY3QoZCkhPT1kKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhYmxlIGZvciBmcm9tRW50cmllcyBzaG91bGQgeWllbGQgb2JqZWN0cyIpO2NbZFswXV09ZFsxXX1yZXR1cm4gY319KTtwKCJSZWZsZWN0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOnt9fSk7CnAoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm5bXX19KTtwKCJSZWZsZWN0Lm93bktleXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7dmFyIGM9W10sZD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiKTtiPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoYik7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspKCJqc2NvbXBfc3ltYm9sXyI9PWRbZV0uc3Vic3RyaW5nKDAsMTQpP2I6YykucHVzaChkW2VdKTtyZXR1cm4gYy5jb25jYXQoYil9fSk7cCgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Zm9yKHZhciBjPXt9LGQ9UmVmbGVjdC5vd25LZXlzKGIpLGU9MDtlPGQubGVuZ3RoO2UrKyljW2RbZV1dPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixkW2VdKTtyZXR1cm4gY319KTsKcCgiT2JqZWN0LnZhbHVlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpcihiLGQpJiZjLnB1c2goYltkXSk7cmV0dXJuIGN9fSk7cCgiT2JqZWN0Lmhhc093biIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKX19KTtwKCJQcm9taXNlLmFsbFNldHRsZWQiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJue3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTpkfX1mdW5jdGlvbiBjKGQpe3JldHVybntzdGF0dXM6InJlamVjdGVkIixyZWFzb246ZH19cmV0dXJuIGE/YTpmdW5jdGlvbihkKXt2YXIgZT10aGlzO2Q9QXJyYXkuZnJvbShkLGZ1bmN0aW9uKGgpe3JldHVybiBlLnJlc29sdmUoaCkudGhlbihiLGMpfSk7cmV0dXJuIGUuYWxsKGQpfX0pOwpwKCJQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oYyl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShiKCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gY30pfSxmdW5jdGlvbihjKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGIoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IGM7fSl9KX19KTt2YXIgcGE9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7fWIucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifTsKZnVuY3Rpb24gcWEoYSxiKXthLnByb3RvdHlwZT1wYShiLnByb3RvdHlwZSk7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTtpZih0KXQoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKCJwcm90b3R5cGUiIT1jKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXTthLlQ9Yi5wcm90b3R5cGV9cCgiQWdncmVnYXRlRXJyb3IiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyxkKXtkPUVycm9yKGQpOyJzdGFjayJpbiBkJiYodGhpcy5zdGFjaz1kLnN0YWNrKTt0aGlzLmVycm9ycz1jO3RoaXMubWVzc2FnZT1kLm1lc3NhZ2V9aWYoYSlyZXR1cm4gYTtxYShiLEVycm9yKTtiLnByb3RvdHlwZS5uYW1lPSJBZ2dyZWdhdGVFcnJvciI7cmV0dXJuIGJ9KTsKcCgiUHJvbWlzZS5hbnkiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Yj1iIGluc3RhbmNlb2YgQXJyYXk/YjpBcnJheS5mcm9tKGIpO3JldHVybiBQcm9taXNlLmFsbChiLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4oZnVuY3Rpb24oZCl7dGhyb3cgZDt9LGZ1bmN0aW9uKGQpe3JldHVybiBkfSl9KSkudGhlbihmdW5jdGlvbihjKXt0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IoYywiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWQiKTt9LGZ1bmN0aW9uKGMpe3JldHVybiBjfSl9fSk7cCgiUmVmbGVjdC5hcHBseSIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTt2YXIgYj1GdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7cmV0dXJuIGZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gYi5jYWxsKGMsZCxlKX19KTsKdmFyIHRhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2Z1bmN0aW9uIGMoKXt9bmV3IGM7UmVmbGVjdC5jb25zdHJ1Y3QoYyxbXSxmdW5jdGlvbigpe30pO3JldHVybiBuZXcgYyBpbnN0YW5jZW9mIGN9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7aWYoYSgpKXJldHVybiBSZWZsZWN0LmNvbnN0cnVjdDt2YXIgYj1SZWZsZWN0LmNvbnN0cnVjdDtyZXR1cm4gZnVuY3Rpb24oYyxkLGUpe2M9YihjLGQpO2UmJlJlZmxlY3Quc2V0UHJvdG90eXBlT2YoYyxlLnByb3RvdHlwZSk7cmV0dXJuIGN9fXJldHVybiBmdW5jdGlvbihjLGQsZSl7dm9pZCAwPT09ZSYmKGU9Yyk7ZT1wYShlLnByb3RvdHlwZXx8T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGMsZSxkKXx8ZX19KCk7cCgiUmVmbGVjdC5jb25zdHJ1Y3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHRhfSk7CnAoIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjLGQpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYixjLGQpO3ZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtyZXR1cm4gZT9lLmNvbmZpZ3VyYWJsZT09PShkLmNvbmZpZ3VyYWJsZXx8ITEpJiZlLmVudW1lcmFibGU9PT0oZC5lbnVtZXJhYmxlfHwhMSkmJigidmFsdWUiaW4gZT9lLnZhbHVlPT09ZC52YWx1ZSYmZS53cml0YWJsZT09PShkLndyaXRhYmxlfHwhMSk6ZS5nZXQ9PT1kLmdldCYmZS5zZXQ9PT1kLnNldCk6ITF9Y2F0Y2goaCl7cmV0dXJuITF9fX0pO3AoIlJlZmxlY3QuZGVsZXRlUHJvcGVydHkiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtpZighcihiLGMpKXJldHVybiEwO3RyeXtyZXR1cm4gZGVsZXRlIGJbY119Y2F0Y2goZCl7cmV0dXJuITF9fX0pOwpwKCJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3J9KTtwKCJSZWZsZWN0LmdldFByb3RvdHlwZU9mIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8T2JqZWN0LmdldFByb3RvdHlwZU9mfSk7ZnVuY3Rpb24gdWEoYSxiKXtmb3IoO2E7KXt2YXIgYz1SZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLGIpO2lmKGMpcmV0dXJuIGM7YT1SZWZsZWN0LmdldFByb3RvdHlwZU9mKGEpfX1wKCJSZWZsZWN0LmdldCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMsZCl7aWYoMj49YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYltjXTt2YXIgZT11YShiLGMpO2lmKGUpcmV0dXJuIGUuZ2V0P2UuZ2V0LmNhbGwoZCk6ZS52YWx1ZX19KTtwKCJSZWZsZWN0LmhhcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBjIGluIGJ9fSk7CnAoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXNFeHRlbnNpYmxlP09iamVjdC5pc0V4dGVuc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KTtwKCJSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOiJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QucHJldmVudEV4dGVuc2lvbnM/ZnVuY3Rpb24oKXtyZXR1cm4hMX06ZnVuY3Rpb24oYil7T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKGIpO3JldHVybiFPYmplY3QuaXNFeHRlbnNpYmxlKGIpfX0pOwpwKCJSZWZsZWN0LnNldCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMsZCxlKXt2YXIgaD11YShiLGMpO3JldHVybiBoP2guc2V0PyhoLnNldC5jYWxsKDM8YXJndW1lbnRzLmxlbmd0aD9lOmIsZCksITApOmgud3JpdGFibGUmJiFPYmplY3QuaXNGcm96ZW4oYik/KGJbY109ZCwhMCk6ITE6UmVmbGVjdC5pc0V4dGVuc2libGUoYik/KGJbY109ZCwhMCk6ITF9fSk7cCgiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTp0P2Z1bmN0aW9uKGIsYyl7dHJ5e3JldHVybiB0KGIsYyksITB9Y2F0Y2goZCl7cmV0dXJuITF9fTpudWxsfSk7CnAoIlNldCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihjKXt0aGlzLmc9bmV3IE1hcDtpZihjKXtjPXEoYyk7Zm9yKHZhciBkOyEoZD1jLm5leHQoKSkuZG9uZTspdGhpcy5hZGQoZC52YWx1ZSl9dGhpcy5zaXplPXRoaXMuZy5zaXplfWlmKGZ1bmN0aW9uKCl7aWYoIWF8fCJmdW5jdGlvbiIhPXR5cGVvZiBhfHwhYS5wcm90b3R5cGUuZW50cmllc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgYz1PYmplY3Quc2VhbCh7eDo0fSksZD1uZXcgYShxKFtjXSkpO2lmKCFkLmhhcyhjKXx8MSE9ZC5zaXplfHxkLmFkZChjKSE9ZHx8MSE9ZC5zaXplfHxkLmFkZCh7eDo0fSkhPWR8fDIhPWQuc2l6ZSlyZXR1cm4hMTt2YXIgZT1kLmVudHJpZXMoKSxoPWUubmV4dCgpO2lmKGguZG9uZXx8aC52YWx1ZVswXSE9Y3x8aC52YWx1ZVsxXSE9YylyZXR1cm4hMTtoPWUubmV4dCgpO3JldHVybiBoLmRvbmV8fGgudmFsdWVbMF09PWN8fDQhPWgudmFsdWVbMF0ueHx8CmgudmFsdWVbMV0hPWgudmFsdWVbMF0/ITE6ZS5uZXh0KCkuZG9uZX1jYXRjaChmKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGMpe2M9MD09PWM/MDpjO3RoaXMuZy5zZXQoYyxjKTt0aGlzLnNpemU9dGhpcy5nLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihjKXtjPXRoaXMuZy5kZWxldGUoYyk7dGhpcy5zaXplPXRoaXMuZy5zaXplO3JldHVybiBjfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZy5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZy5oYXMoYyl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLmVudHJpZXMoKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy52YWx1ZXMoKX07Yi5wcm90b3R5cGUua2V5cz1iLnByb3RvdHlwZS52YWx1ZXM7Yi5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT0KYi5wcm90b3R5cGUudmFsdWVzO2IucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYyxkKXt2YXIgZT10aGlzO3RoaXMuZy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBjLmNhbGwoZCxoLGgsZSl9KX07cmV0dXJuIGJ9KTtwKCJTdHJpbmcucHJvdG90eXBlLmF0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOm9hfSk7cCgiU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz12KHRoaXMsbnVsbCwiY29kZVBvaW50QXQiKSxkPWMubGVuZ3RoO2I9TnVtYmVyKGIpfHwwO2lmKDA8PWImJmI8ZCl7Ynw9MDt2YXIgZT1jLmNoYXJDb2RlQXQoYik7aWYoNTUyOTY+ZXx8NTYzMTk8ZXx8YisxPT09ZClyZXR1cm4gZTtiPWMuY2hhckNvZGVBdChiKzEpO3JldHVybiA1NjMyMD5ifHw1NzM0MzxiP2U6MTAyNCooZS01NTI5NikrYis5MjE2fX19KTsKcCgiU3RyaW5nLmZyb21Db2RlUG9pbnQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Zm9yKHZhciBjPSIiLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXt2YXIgZT1OdW1iZXIoYXJndW1lbnRzW2RdKTtpZigwPmV8fDExMTQxMTE8ZXx8ZSE9PU1hdGguZmxvb3IoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWRfY29kZV9wb2ludCAiK2UpOzY1NTM1Pj1lP2MrPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk6KGUtPTY1NTM2LGMrPVN0cmluZy5mcm9tQ2hhckNvZGUoZT4+PjEwJjEwMjN8NTUyOTYpLGMrPVN0cmluZy5mcm9tQ2hhckNvZGUoZSYxMDIzfDU2MzIwKSl9cmV0dXJuIGN9fSk7CnAoIlN0cmluZy5wcm90b3R5cGUubWF0Y2hBbGwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7aWYoYiBpbnN0YW5jZW9mIFJlZ0V4cCYmIWIuZ2xvYmFsKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCBwYXNzZWQgaW50byBTdHJpbmcucHJvdG90eXBlLm1hdGNoQWxsKCkgbXVzdCBoYXZlIGdsb2JhbCB0YWcuIik7dmFyIGM9bmV3IFJlZ0V4cChiLGIgaW5zdGFuY2VvZiBSZWdFeHA/dm9pZCAwOiJnIiksZD10aGlzLGU9ITEsaD17bmV4dDpmdW5jdGlvbigpe2lmKGUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTt2YXIgZj1jLmV4ZWMoZCk7aWYoIWYpcmV0dXJuIGU9ITAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfTsiIj09PWZbMF0mJihjLmxhc3RJbmRleCs9MSk7cmV0dXJue3ZhbHVlOmYsZG9uZTohMX19fTtoW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gaH07cmV0dXJuIGh9fSk7CmZ1bmN0aW9uIHZhKGEsYil7YT12b2lkIDAhPT1hP1N0cmluZyhhKToiICI7cmV0dXJuIDA8YiYmYT9hLnJlcGVhdChNYXRoLmNlaWwoYi9hLmxlbmd0aCkpLnN1YnN0cmluZygwLGIpOiIifXAoIlN0cmluZy5wcm90b3R5cGUucGFkRW5kIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dih0aGlzLG51bGwsInBhZFN0YXJ0Iik7cmV0dXJuIGQrdmEoYyxiLWQubGVuZ3RoKX19KTtwKCJTdHJpbmcucHJvdG90eXBlLnBhZFN0YXJ0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dih0aGlzLG51bGwsInBhZFN0YXJ0Iik7cmV0dXJuIHZhKGMsYi1kLmxlbmd0aCkrZH19KTsKcCgiU3RyaW5nLnJhdyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe2lmKG51bGw9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7Zm9yKHZhciBkPWIucmF3LGU9ZC5sZW5ndGgsaD0iIixmPTA7ZjxlOysrZiloKz1kW2ZdLGYrMTxlJiZmKzE8YXJndW1lbnRzLmxlbmd0aCYmKGgrPVN0cmluZyhhcmd1bWVudHNbZisxXSkpO3JldHVybiBofX0pOwpwKCJTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VBbGwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtpZihiIGluc3RhbmNlb2YgUmVnRXhwJiYhYi5nbG9iYWwpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsIGNhbGxlZCB3aXRoIGEgbm9uLWdsb2JhbCBSZWdFeHAgYXJndW1lbnQuIik7cmV0dXJuIGIgaW5zdGFuY2VvZiBSZWdFeHA/dGhpcy5yZXBsYWNlKGIsYyk6dGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoU3RyaW5nKGIpLnJlcGxhY2UoLyhbLSgpXFtcXXt9Kz8qLiRcXnwsOiM8IVxcXSkvZywiXFwkMSIpLnJlcGxhY2UoL1x4MDgvZywiXFx4MDgiKSwiZyIpLGMpfX0pO3AoIlN0cmluZy5wcm90b3R5cGUudHJpbVJpZ2h0IixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfXJldHVybiBhfHxifSk7CnAoIlN0cmluZy5wcm90b3R5cGUudHJpbUVuZCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fFN0cmluZy5wcm90b3R5cGUudHJpbVJpZ2h0fSk7ZnVuY3Rpb24gdyhhKXtyZXR1cm4gYT9hOm9hfXAoIkludDhBcnJheS5wcm90b3R5cGUuYXQiLHcpO3AoIlVpbnQ4QXJyYXkucHJvdG90eXBlLmF0Iix3KTtwKCJVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGUuYXQiLHcpO3AoIkludDE2QXJyYXkucHJvdG90eXBlLmF0Iix3KTtwKCJVaW50MTZBcnJheS5wcm90b3R5cGUuYXQiLHcpO3AoIkludDMyQXJyYXkucHJvdG90eXBlLmF0Iix3KTtwKCJVaW50MzJBcnJheS5wcm90b3R5cGUuYXQiLHcpO3AoIkZsb2F0MzJBcnJheS5wcm90b3R5cGUuYXQiLHcpO3AoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuYXQiLHcpO2Z1bmN0aW9uIHgoYSl7cmV0dXJuIGE/YTpBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbn1wKCJJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLHgpOwpwKCJVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIix4KTtwKCJVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIseCk7cCgiSW50MTZBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIseCk7cCgiVWludDE2QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLHgpO3AoIkludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLHgpO3AoIlVpbnQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIix4KTtwKCJGbG9hdDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLHgpO3AoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIseCk7ZnVuY3Rpb24geihhKXtyZXR1cm4gYT9hOkFycmF5LnByb3RvdHlwZS5maWxsfXAoIkludDhBcnJheS5wcm90b3R5cGUuZmlsbCIseik7cCgiVWludDhBcnJheS5wcm90b3R5cGUuZmlsbCIseik7cCgiVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLmZpbGwiLHopOwpwKCJJbnQxNkFycmF5LnByb3RvdHlwZS5maWxsIix6KTtwKCJVaW50MTZBcnJheS5wcm90b3R5cGUuZmlsbCIseik7cCgiSW50MzJBcnJheS5wcm90b3R5cGUuZmlsbCIseik7cCgiVWludDMyQXJyYXkucHJvdG90eXBlLmZpbGwiLHopO3AoIkZsb2F0MzJBcnJheS5wcm90b3R5cGUuZmlsbCIseik7cCgiRmxvYXQ2NEFycmF5LnByb3RvdHlwZS5maWxsIix6KTsKcCgiV2Vha1NldCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihjKXt0aGlzLmc9bmV3IFdlYWtNYXA7aWYoYyl7Yz1xKGMpO2Zvcih2YXIgZDshKGQ9Yy5uZXh0KCkpLmRvbmU7KXRoaXMuYWRkKGQudmFsdWUpfX1pZihmdW5jdGlvbigpe2lmKCFhfHwhT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt9KSxkPU9iamVjdC5zZWFsKHt9KSxlPW5ldyBhKFtjXSk7aWYoIWUuaGFzKGMpfHxlLmhhcyhkKSlyZXR1cm4hMTtlLmRlbGV0ZShjKTtlLmFkZChkKTtyZXR1cm4hZS5oYXMoYykmJmUuaGFzKGQpfWNhdGNoKGgpe3JldHVybiExfX0oKSlyZXR1cm4gYTtiLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYyl7dGhpcy5nLnNldChjLCEwKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmcuaGFzKGMpfTtiLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZy5kZWxldGUoYyl9O3JldHVybiBifSk7CnZhciBBPXRoaXN8fHNlbGY7ZnVuY3Rpb24gQihhKXthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGI9QSxjPTA7YzxhLmxlbmd0aDtjKyspaWYoYj1iW2FbY11dLG51bGw9PWIpcmV0dXJuIG51bGw7cmV0dXJuIGJ9ZnVuY3Rpb24gd2EoYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuIm9iamVjdCI9PWImJm51bGwhPWF8fCJmdW5jdGlvbiI9PWJ9ZnVuY3Rpb24geGEoYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9CmZ1bmN0aW9uIHlhKGEsYixjKXtpZighYSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZSxkKTtyZXR1cm4gYS5hcHBseShiLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShiLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEMoYSxiLGMpe0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiYtMSE9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmcoKS5pbmRleE9mKCJuYXRpdmUgY29kZSIpP0M9eGE6Qz15YTtyZXR1cm4gQy5hcHBseShudWxsLGFyZ3VtZW50cyl9CmZ1bmN0aW9uIEQoYSxiKXthPWEuc3BsaXQoIi4iKTt2YXIgYz1BO2FbMF1pbiBjfHwidW5kZWZpbmVkIj09dHlwZW9mIGMuZXhlY1NjcmlwdHx8Yy5leGVjU2NyaXB0KCJ2YXIgIithWzBdKTtmb3IodmFyIGQ7YS5sZW5ndGgmJihkPWEuc2hpZnQoKSk7KWEubGVuZ3RofHx2b2lkIDA9PT1iP2NbZF0mJmNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdP2M9Y1tkXTpjPWNbZF09e306Y1tkXT1ifWZ1bmN0aW9uIEUoYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EuVD1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuVT1mdW5jdGlvbihkLGUsaCl7Zm9yKHZhciBmPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksZz0yO2c8YXJndW1lbnRzLmxlbmd0aDtnKyspZltnLTJdPWFyZ3VtZW50c1tnXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxmKX19ZnVuY3Rpb24gemEoYSl7cmV0dXJuIGF9O2Z1bmN0aW9uIEYoYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLEYpO2Vsc2V7dmFyIGM9RXJyb3IoKS5zdGFjaztjJiYodGhpcy5zdGFjaz1jKX1hJiYodGhpcy5tZXNzYWdlPVN0cmluZyhhKSk7dm9pZCAwIT09YiYmKHRoaXMuY2F1c2U9Yil9RShGLEVycm9yKTtGLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7ZnVuY3Rpb24gSChhLGIpe3RoaXMuZz1hPT09QWEmJmJ8fCIiO3RoaXMuaD1CYX1ILnByb3RvdHlwZS5LPSEwO0gucHJvdG90eXBlLkk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nfTtmdW5jdGlvbiBDYShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEgmJmEuY29uc3RydWN0b3I9PT1IJiZhLmg9PT1CYT9hLmc6InR5cGVfZXJyb3I6Q29uc3QifWZ1bmN0aW9uIEkoYSl7cmV0dXJuIG5ldyBIKEFhLGEpfXZhciBCYT17fSxBYT17fTt2YXIgRGE9eyJnc3RhdGljLmNvbSI6e2xvYWRlcjpJKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvJXt2ZXJzaW9ufS9sb2FkZXIuanMiKSxkZWJ1ZzpJKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvZGVidWcvJXt2ZXJzaW9ufS9qcy9qc2FwaV9kZWJ1Z18le3BhY2thZ2V9X21vZHVsZS5qcyIpLGRlYnVnX2kxOG46SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vY2hhcnRzL2RlYnVnLyV7dmVyc2lvbn0vaTE4bi9qc2FwaV9kZWJ1Z19pMThuXyV7cGFja2FnZX1fbW9kdWxlX18le2xhbmd1YWdlfS5qcyIpLGNvbXBpbGVkOkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2NoYXJ0cy8le3ZlcnNpb259L2pzL2pzYXBpX2NvbXBpbGVkXyV7cGFja2FnZX1fbW9kdWxlLmpzIiksY29tcGlsZWRfaTE4bjpJKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvJXt2ZXJzaW9ufS9pMThuL2pzYXBpX2NvbXBpbGVkX2kxOG5fJXtwYWNrYWdlfV9tb2R1bGVfXyV7bGFuZ3VhZ2V9LmpzIiksCmNzczpJKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvJXt2ZXJzaW9ufS9jc3MvJXtzdWJkaXJ9LyV7ZmlsZW5hbWV9IiksY3NzMjpJKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvJXt2ZXJzaW9ufS9jc3MvJXtzdWJkaXIxfS8le3N1YmRpcjJ9LyV7ZmlsZW5hbWV9IiksdGhpcmRfcGFydHk6SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vY2hhcnRzLyV7dmVyc2lvbn0vdGhpcmRfcGFydHkvJXtzdWJkaXJ9LyV7ZmlsZW5hbWV9IiksdGhpcmRfcGFydHkyOkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2NoYXJ0cy8le3ZlcnNpb259L3RoaXJkX3BhcnR5LyV7c3ViZGlyMX0vJXtzdWJkaXIyfS8le2ZpbGVuYW1lfSIpLHRoaXJkX3BhcnR5X2dlbjpJKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvJXt2ZXJzaW9ufS90aGlyZF9wYXJ0eS8le3N1YmRpcn0vJXtmaWxlbmFtZX0iKX0sImdzdGF0aWMuY24iOntsb2FkZXI6SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jbi9jaGFydHMvJXt2ZXJzaW9ufS9sb2FkZXIuanMiKSwKZGVidWc6SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jbi9jaGFydHMvZGVidWcvJXt2ZXJzaW9ufS9qcy9qc2FwaV9kZWJ1Z18le3BhY2thZ2V9X21vZHVsZS5qcyIpLGRlYnVnX2kxOG46SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jbi9jaGFydHMvZGVidWcvJXt2ZXJzaW9ufS9pMThuL2pzYXBpX2RlYnVnX2kxOG5fJXtwYWNrYWdlfV9tb2R1bGVfXyV7bGFuZ3VhZ2V9LmpzIiksY29tcGlsZWQ6SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jbi9jaGFydHMvJXt2ZXJzaW9ufS9qcy9qc2FwaV9jb21waWxlZF8le3BhY2thZ2V9X21vZHVsZS5qcyIpLGNvbXBpbGVkX2kxOG46SSgiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jbi9jaGFydHMvJXt2ZXJzaW9ufS9pMThuL2pzYXBpX2NvbXBpbGVkX2kxOG5fJXtwYWNrYWdlfV9tb2R1bGVfXyV7bGFuZ3VhZ2V9LmpzIiksY3NzOkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY24vY2hhcnRzLyV7dmVyc2lvbn0vY3NzLyV7c3ViZGlyfS8le2ZpbGVuYW1lfSIpLApjc3MyOkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY24vY2hhcnRzLyV7dmVyc2lvbn0vY3NzLyV7c3ViZGlyMX0vJXtzdWJkaXIyfS8le2ZpbGVuYW1lfSIpLHRoaXJkX3BhcnR5OkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY24vY2hhcnRzLyV7dmVyc2lvbn0vdGhpcmRfcGFydHkvJXtzdWJkaXJ9LyV7ZmlsZW5hbWV9IiksdGhpcmRfcGFydHkyOkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY24vY2hhcnRzLyV7dmVyc2lvbn0vdGhpcmRfcGFydHkvJXtzdWJkaXIxfS8le3N1YmRpcjJ9LyV7ZmlsZW5hbWV9IiksdGhpcmRfcGFydHlfZ2VuOkkoImh0dHBzOi8vd3d3LmdzdGF0aWMuY24vY2hhcnRzLyV7dmVyc2lvbn0vdGhpcmRfcGFydHkvJXtzdWJkaXJ9LyV7ZmlsZW5hbWV9Iil9fSxFYT1bImRlZmF1bHQiXTt2YXIgRmE9eyJjaHJvbWUtZnJhbWUiOnt2ZXJzaW9uczp7IjEuMC4wIjp7dW5jb21wcmVzc2VkOiJDRkluc3RhbGwuanMiLGNvbXByZXNzZWQ6IkNGSW5zdGFsbC5taW4uanMifSwiMS4wLjEiOnt1bmNvbXByZXNzZWQ6IkNGSW5zdGFsbC5qcyIsY29tcHJlc3NlZDoiQ0ZJbnN0YWxsLm1pbi5qcyJ9LCIxLjAuMiI6e3VuY29tcHJlc3NlZDoiQ0ZJbnN0YWxsLmpzIixjb21wcmVzc2VkOiJDRkluc3RhbGwubWluLmpzIn19LGFsaWFzZXM6ezE6IjEuMC4yIiwiMS4wIjoiMS4wLjIifX0sc3dmb2JqZWN0Ont2ZXJzaW9uczp7IjIuMSI6e3VuY29tcHJlc3NlZDoic3dmb2JqZWN0X3NyYy5qcyIsY29tcHJlc3NlZDoic3dmb2JqZWN0LmpzIn0sIjIuMiI6e3VuY29tcHJlc3NlZDoic3dmb2JqZWN0X3NyYy5qcyIsY29tcHJlc3NlZDoic3dmb2JqZWN0LmpzIn19LGFsaWFzZXM6ezI6IjIuMiJ9fSwiZXh0LWNvcmUiOnt2ZXJzaW9uczp7IjMuMS4wIjp7dW5jb21wcmVzc2VkOiJleHQtY29yZS1kZWJ1Zy5qcyIsCmNvbXByZXNzZWQ6ImV4dC1jb3JlLmpzIn0sIjMuMC4wIjp7dW5jb21wcmVzc2VkOiJleHQtY29yZS1kZWJ1Zy5qcyIsY29tcHJlc3NlZDoiZXh0LWNvcmUuanMifX0sYWxpYXNlczp7MzoiMy4xLjAiLCIzLjAiOiIzLjAuMCIsIjMuMSI6IjMuMS4wIn19LHNjcmlwdGFjdWxvdXM6e3ZlcnNpb25zOnsiMS44LjMiOnt1bmNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMiLGNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMifSwiMS45LjAiOnt1bmNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMiLGNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMifSwiMS44LjEiOnt1bmNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMiLGNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMifSwiMS44LjIiOnt1bmNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMiLGNvbXByZXNzZWQ6InNjcmlwdGFjdWxvdXMuanMifX0sYWxpYXNlczp7MToiMS45LjAiLCIxLjgiOiIxLjguMyIsIjEuOSI6IjEuOS4wIn19LAp3ZWJmb250Ont2ZXJzaW9uczp7IjEuMC4xMiI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMTMiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjE0Ijp7dW5jb21wcmVzc2VkOiJ3ZWJmb250X2RlYnVnLmpzIixjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4xNSI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMTAiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjExIjp7dW5jb21wcmVzc2VkOiJ3ZWJmb250X2RlYnVnLmpzIixjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4yNyI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMjgiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLApjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4yOSI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMjMiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjI0Ijp7dW5jb21wcmVzc2VkOiJ3ZWJmb250X2RlYnVnLmpzIixjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4yNSI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMjYiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjIxIjp7dW5jb21wcmVzc2VkOiJ3ZWJmb250X2RlYnVnLmpzIixjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4yMiI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMyI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsCmNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjQiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjUiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjYiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjkiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLGNvbXByZXNzZWQ6IndlYmZvbnQuanMifSwiMS4wLjE2Ijp7dW5jb21wcmVzc2VkOiJ3ZWJmb250X2RlYnVnLmpzIixjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4xNyI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMCI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMTgiOnt1bmNvbXByZXNzZWQ6IndlYmZvbnRfZGVidWcuanMiLApjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4xIjp7dW5jb21wcmVzc2VkOiJ3ZWJmb250X2RlYnVnLmpzIixjb21wcmVzc2VkOiJ3ZWJmb250LmpzIn0sIjEuMC4xOSI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9LCIxLjAuMiI6e3VuY29tcHJlc3NlZDoid2ViZm9udF9kZWJ1Zy5qcyIsY29tcHJlc3NlZDoid2ViZm9udC5qcyJ9fSxhbGlhc2VzOnsxOiIxLjAuMjkiLCIxLjAiOiIxLjAuMjkifX0sanF1ZXJ5dWk6e3ZlcnNpb25zOnsiMS44LjE3Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjE2Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjE1Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjE0Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLApjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuOC40Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjEzIjp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjUiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS11aS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5LXVpLm1pbi5qcyJ9LCIxLjguMTIiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS11aS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5LXVpLm1pbi5qcyJ9LCIxLjguNiI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LXVpLmpzIixjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuOC4xMSI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LXVpLmpzIixjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuOC43Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwKIjEuOC4xMCI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LXVpLmpzIixjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuOC44Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjkiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS11aS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5LXVpLm1pbi5qcyJ9LCIxLjYuMCI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LXVpLmpzIixjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuNy4wIjp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS41LjIiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS11aS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5LXVpLm1pbi5qcyJ9LCIxLjguMCI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LXVpLmpzIixjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuNy4xIjp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLApjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuNS4zIjp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS44LjEiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS11aS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5LXVpLm1pbi5qcyJ9LCIxLjcuMiI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LXVpLmpzIixjb21wcmVzc2VkOiJqcXVlcnktdWkubWluLmpzIn0sIjEuOC4yIjp7dW5jb21wcmVzc2VkOiJqcXVlcnktdWkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS11aS5taW4uanMifSwiMS43LjMiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS11aS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5LXVpLm1pbi5qcyJ9fSxhbGlhc2VzOnsxOiIxLjguMTciLCIxLjUiOiIxLjUuMyIsIjEuNiI6IjEuNi4wIiwiMS43IjoiMS43LjMiLCIxLjgiOiIxLjguMTciLCIxLjguMyI6IjEuOC40In19LG1vb3Rvb2xzOnt2ZXJzaW9uczp7IjEuMy4wIjp7dW5jb21wcmVzc2VkOiJtb290b29scy5qcyIsCmNvbXByZXNzZWQ6Im1vb3Rvb2xzLXl1aS1jb21wcmVzc2VkLmpzIn0sIjEuMi4xIjp7dW5jb21wcmVzc2VkOiJtb290b29scy5qcyIsY29tcHJlc3NlZDoibW9vdG9vbHMteXVpLWNvbXByZXNzZWQuanMifSwiMS4xLjIiOnt1bmNvbXByZXNzZWQ6Im1vb3Rvb2xzLmpzIixjb21wcmVzc2VkOiJtb290b29scy15dWktY29tcHJlc3NlZC5qcyJ9LCIxLjQuMCI6e3VuY29tcHJlc3NlZDoibW9vdG9vbHMuanMiLGNvbXByZXNzZWQ6Im1vb3Rvb2xzLXl1aS1jb21wcmVzc2VkLmpzIn0sIjEuMy4xIjp7dW5jb21wcmVzc2VkOiJtb290b29scy5qcyIsY29tcHJlc3NlZDoibW9vdG9vbHMteXVpLWNvbXByZXNzZWQuanMifSwiMS4yLjIiOnt1bmNvbXByZXNzZWQ6Im1vb3Rvb2xzLmpzIixjb21wcmVzc2VkOiJtb290b29scy15dWktY29tcHJlc3NlZC5qcyJ9LCIxLjQuMSI6e3VuY29tcHJlc3NlZDoibW9vdG9vbHMuanMiLGNvbXByZXNzZWQ6Im1vb3Rvb2xzLXl1aS1jb21wcmVzc2VkLmpzIn0sCiIxLjMuMiI6e3VuY29tcHJlc3NlZDoibW9vdG9vbHMuanMiLGNvbXByZXNzZWQ6Im1vb3Rvb2xzLXl1aS1jb21wcmVzc2VkLmpzIn0sIjEuMi4zIjp7dW5jb21wcmVzc2VkOiJtb290b29scy5qcyIsY29tcHJlc3NlZDoibW9vdG9vbHMteXVpLWNvbXByZXNzZWQuanMifSwiMS40LjIiOnt1bmNvbXByZXNzZWQ6Im1vb3Rvb2xzLmpzIixjb21wcmVzc2VkOiJtb290b29scy15dWktY29tcHJlc3NlZC5qcyJ9LCIxLjIuNCI6e3VuY29tcHJlc3NlZDoibW9vdG9vbHMuanMiLGNvbXByZXNzZWQ6Im1vb3Rvb2xzLXl1aS1jb21wcmVzc2VkLmpzIn0sIjEuMi41Ijp7dW5jb21wcmVzc2VkOiJtb290b29scy5qcyIsY29tcHJlc3NlZDoibW9vdG9vbHMteXVpLWNvbXByZXNzZWQuanMifSwiMS4xLjEiOnt1bmNvbXByZXNzZWQ6Im1vb3Rvb2xzLmpzIixjb21wcmVzc2VkOiJtb290b29scy15dWktY29tcHJlc3NlZC5qcyJ9fSxhbGlhc2VzOnsxOiIxLjEuMiIsIjEuMSI6IjEuMS4yIiwiMS4yIjoiMS4yLjUiLAoiMS4zIjoiMS4zLjIiLCIxLjQiOiIxLjQuMiIsIjEuMTEiOiIxLjEuMSJ9fSx5dWk6e3ZlcnNpb25zOnsiMi44LjByNCI6e3VuY29tcHJlc3NlZDoiYnVpbGQveXVpbG9hZGVyL3l1aWxvYWRlci5qcyIsY29tcHJlc3NlZDoiYnVpbGQveXVpbG9hZGVyL3l1aWxvYWRlci1taW4uanMifSwiMi45LjAiOnt1bmNvbXByZXNzZWQ6ImJ1aWxkL3l1aWxvYWRlci95dWlsb2FkZXIuanMiLGNvbXByZXNzZWQ6ImJ1aWxkL3l1aWxvYWRlci95dWlsb2FkZXItbWluLmpzIn0sIjIuOC4xIjp7dW5jb21wcmVzc2VkOiJidWlsZC95dWlsb2FkZXIveXVpbG9hZGVyLmpzIixjb21wcmVzc2VkOiJidWlsZC95dWlsb2FkZXIveXVpbG9hZGVyLW1pbi5qcyJ9LCIyLjYuMCI6e3VuY29tcHJlc3NlZDoiYnVpbGQveXVpbG9hZGVyL3l1aWxvYWRlci5qcyIsY29tcHJlc3NlZDoiYnVpbGQveXVpbG9hZGVyL3l1aWxvYWRlci1taW4uanMifSwiMi43LjAiOnt1bmNvbXByZXNzZWQ6ImJ1aWxkL3l1aWxvYWRlci95dWlsb2FkZXIuanMiLApjb21wcmVzc2VkOiJidWlsZC95dWlsb2FkZXIveXVpbG9hZGVyLW1pbi5qcyJ9LCIzLjMuMCI6e3VuY29tcHJlc3NlZDoiYnVpbGQveXVpL3l1aS5qcyIsY29tcHJlc3NlZDoiYnVpbGQveXVpL3l1aS1taW4uanMifSwiMi44LjJyMSI6e3VuY29tcHJlc3NlZDoiYnVpbGQveXVpbG9hZGVyL3l1aWxvYWRlci5qcyIsY29tcHJlc3NlZDoiYnVpbGQveXVpbG9hZGVyL3l1aWxvYWRlci1taW4uanMifX0sYWxpYXNlczp7MjoiMi45LjAiLCIyLjYiOiIyLjYuMCIsIjIuNyI6IjIuNy4wIiwiMi44IjoiMi44LjJyMSIsIjIuOC4wIjoiMi44LjByNCIsIjIuOC4yIjoiMi44LjJyMSIsIjIuOSI6IjIuOS4wIiwzOiIzLjMuMCIsIjMuMyI6IjMuMy4wIn19LHByb3RvdHlwZTp7dmVyc2lvbnM6eyIxLjYuMS4wIjp7dW5jb21wcmVzc2VkOiJwcm90b3R5cGUuanMiLGNvbXByZXNzZWQ6InByb3RvdHlwZS5qcyJ9LCIxLjYuMC4yIjp7dW5jb21wcmVzc2VkOiJwcm90b3R5cGUuanMiLGNvbXByZXNzZWQ6InByb3RvdHlwZS5qcyJ9LAoiMS43LjAuMCI6e3VuY29tcHJlc3NlZDoicHJvdG90eXBlLmpzIixjb21wcmVzc2VkOiJwcm90b3R5cGUuanMifSwiMS42LjAuMyI6e3VuY29tcHJlc3NlZDoicHJvdG90eXBlLmpzIixjb21wcmVzc2VkOiJwcm90b3R5cGUuanMifX0sYWxpYXNlczp7MToiMS43LjAuMCIsIjEuNiI6IjEuNi4xLjAiLCIxLjYuMCI6IjEuNi4wLjMiLCIxLjYuMSI6IjEuNi4xLjAiLCIxLjciOiIxLjcuMC4wIiwiMS43LjAiOiIxLjcuMC4wIn19LGpxdWVyeTp7dmVyc2lvbnM6eyIxLjIuMyI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sIjEuMi42Ijp7dW5jb21wcmVzc2VkOiJqcXVlcnkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS4zLjAiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5Lm1pbi5qcyJ9LCIxLjMuMSI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sCiIxLjMuMiI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sIjEuNC4wIjp7dW5jb21wcmVzc2VkOiJqcXVlcnkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS40LjEiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5Lm1pbi5qcyJ9LCIxLjQuMiI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sIjEuNC4zIjp7dW5jb21wcmVzc2VkOiJqcXVlcnkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS40LjQiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5Lm1pbi5qcyJ9LCIxLjUuMCI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sIjEuNS4xIjp7dW5jb21wcmVzc2VkOiJqcXVlcnkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS41LjIiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsCmNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS42LjAiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5Lm1pbi5qcyJ9LCIxLjYuMSI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sIjEuNi4yIjp7dW5jb21wcmVzc2VkOiJqcXVlcnkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS42LjMiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5Lm1pbi5qcyJ9LCIxLjYuNCI6e3VuY29tcHJlc3NlZDoianF1ZXJ5LmpzIixjb21wcmVzc2VkOiJqcXVlcnkubWluLmpzIn0sIjEuNy4wIjp7dW5jb21wcmVzc2VkOiJqcXVlcnkuanMiLGNvbXByZXNzZWQ6ImpxdWVyeS5taW4uanMifSwiMS43LjEiOnt1bmNvbXByZXNzZWQ6ImpxdWVyeS5qcyIsY29tcHJlc3NlZDoianF1ZXJ5Lm1pbi5qcyJ9fSxhbGlhc2VzOnsxOiIxLjcuMSIsIjEuMiI6IjEuMi42IiwiMS4zIjoiMS4zLjIiLAoiMS40IjoiMS40LjQiLCIxLjUiOiIxLjUuMiIsIjEuNiI6IjEuNi40IiwiMS43IjoiMS43LjEifX0sZG9qbzp7dmVyc2lvbnM6eyIxLjMuMCI6e3VuY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzLnVuY29tcHJlc3NlZC5qcyIsY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzIn0sIjEuNC4wIjp7dW5jb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMudW5jb21wcmVzc2VkLmpzIixjb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMifSwiMS4zLjEiOnt1bmNvbXByZXNzZWQ6ImRvam8vZG9qby54ZC5qcy51bmNvbXByZXNzZWQuanMiLGNvbXByZXNzZWQ6ImRvam8vZG9qby54ZC5qcyJ9LCIxLjUuMCI6e3VuY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzLnVuY29tcHJlc3NlZC5qcyIsY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzIn0sIjEuNC4xIjp7dW5jb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMudW5jb21wcmVzc2VkLmpzIixjb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMifSwKIjEuMy4yIjp7dW5jb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMudW5jb21wcmVzc2VkLmpzIixjb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMifSwiMS4yLjMiOnt1bmNvbXByZXNzZWQ6ImRvam8vZG9qby54ZC5qcy51bmNvbXByZXNzZWQuanMiLGNvbXByZXNzZWQ6ImRvam8vZG9qby54ZC5qcyJ9LCIxLjYuMCI6e3VuY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzLnVuY29tcHJlc3NlZC5qcyIsY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzIn0sIjEuNS4xIjp7dW5jb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMudW5jb21wcmVzc2VkLmpzIixjb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMifSwiMS43LjAiOnt1bmNvbXByZXNzZWQ6ImRvam8vZG9qby5qcy51bmNvbXByZXNzZWQuanMiLGNvbXByZXNzZWQ6ImRvam8vZG9qby5qcyJ9LCIxLjYuMSI6e3VuY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzLnVuY29tcHJlc3NlZC5qcyIsY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzIn0sCiIxLjQuMyI6e3VuY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzLnVuY29tcHJlc3NlZC5qcyIsY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzIn0sIjEuNy4xIjp7dW5jb21wcmVzc2VkOiJkb2pvL2Rvam8uanMudW5jb21wcmVzc2VkLmpzIixjb21wcmVzc2VkOiJkb2pvL2Rvam8uanMifSwiMS43LjIiOnt1bmNvbXByZXNzZWQ6ImRvam8vZG9qby5qcy51bmNvbXByZXNzZWQuanMiLGNvbXByZXNzZWQ6ImRvam8vZG9qby5qcyJ9LCIxLjIuMCI6e3VuY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzLnVuY29tcHJlc3NlZC5qcyIsY29tcHJlc3NlZDoiZG9qby9kb2pvLnhkLmpzIn0sIjEuMS4xIjp7dW5jb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMudW5jb21wcmVzc2VkLmpzIixjb21wcmVzc2VkOiJkb2pvL2Rvam8ueGQuanMifX0sYWxpYXNlczp7MToiMS42LjEiLCIxLjEiOiIxLjEuMSIsIjEuMiI6IjEuMi4zIiwiMS4zIjoiMS4zLjIiLCIxLjQiOiIxLjQuMyIsIjEuNSI6IjEuNS4xIiwKIjEuNiI6IjEuNi4xIiwiMS43IjoiMS43LjIifX19O3ZhciBHYT17YWY6ITAsYW06ITAsYXo6ITAsYXI6ITAsYXJiOiJhciIsYmc6ITAsYm46ITAsY2E6ITAsY3M6ITAsY21uOiJ6aCIsZGE6ITAsZGU6ITAsZWw6ITAsZW46ITAsZW5fZ2I6ITAsZXM6ITAsZXNfNDE5OiEwLGV0OiEwLGV1OiEwLGZhOiEwLGZpOiEwLGZpbDohMCxmcjohMCxmcl9jYTohMCxnbDohMCxrYTohMCxndTohMCxoZToiaXciLGhpOiEwLGhyOiEwLGh1OiEwLGh5OiEwLGlkOiEwLCJpbiI6ImlkIixpczohMCxpdDohMCxpdzohMCxqYTohMCxqaToieWkiLGp2OiExLGp3OiJqdiIsa206ITAsa246ITAsa286ITAsbG86ITAsbHQ6ITAsbHY6ITAsbWw6ITAsbW46ITAsbW86InJvIixtcjohMCxtczohMCxuYjoibm8iLG5lOiEwLG5sOiEwLG5vOiEwLHBsOiEwLHB0OiJwdF9iciIscHRfYnI6ITAscHRfcHQ6ITAscm86ITAscnU6ITAsc2k6ITAsc2s6ITAsc2w6ITAsc3I6ITAsc3Y6ITAsc3c6ITAsc3doOiJzdyIsdGE6ITAsdGU6ITAsdGg6ITAsdGw6ImZpbCIsdHI6ITAsdWs6ITAsCnVyOiEwLHZpOiEwLHlpOiExLHpoOiJ6aF9jbiIsemhfY246ITAsemhfaGs6ITAsemhfdHc6ITAsenNtOiJtcyIsenU6ITB9O3ZhciBIYT17MToiMS4wIiwiMS4wIjoiY3VycmVudCIsIjEuMSI6InVwY29taW5nIiwiMS4yIjoidGVzdGluZyIsNDE6InByZS00NSIsNDI6InByZS00NSIsNDM6InByZS00NSIsNDQ6InByZS00NSIsNDY6IjQ2LjEiLCI0Ni4xIjoiNDYuMiIsNDg6IjQ4LjEiLGN1cnJlbnQ6IjUxIix1cGNvbWluZzoiNTIifTt2YXIgSWE7ZnVuY3Rpb24gSihhLGIpe3RoaXMuZz1iPT09SmE/YToiIn1KLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcrIiJ9O0oucHJvdG90eXBlLks9ITA7Si5wcm90b3R5cGUuST1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcudG9TdHJpbmcoKX07ZnVuY3Rpb24gS2EoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBKJiZhLmNvbnN0cnVjdG9yPT09Sj9hLmc6InR5cGVfZXJyb3I6VHJ1c3RlZFJlc291cmNlVXJsIn0KZnVuY3Rpb24gTGEoYSxiKXt2YXIgYz1DYShhKTtpZighTWEudGVzdChjKSl0aHJvdyBFcnJvcigiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiAiK2MpO2E9Yy5yZXBsYWNlKE5hLGZ1bmN0aW9uKGQsZSl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGUpKXRocm93IEVycm9yKCdGb3VuZCBtYXJrZXIsICInK2UrJyIsIGluIGZvcm1hdCBzdHJpbmcsICInK2MrJyIsIGJ1dCBubyB2YWxpZCBsYWJlbCBtYXBwaW5nIGZvdW5kIGluIGFyZ3M6ICcrSlNPTi5zdHJpbmdpZnkoYikpO2Q9YltlXTtyZXR1cm4gZCBpbnN0YW5jZW9mIEg/Q2EoZCk6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhkKSl9KTtyZXR1cm4gT2EoYSl9CnZhciBOYT0vJXsoXHcrKX0vZyxNYT1SZWdFeHAoIl4oKGh0dHBzOik/Ly9bMC05YS16LjpbXFxdLV0rL3wvW14vXFxcXF18W146L1xcXFwlXSsvfFteOi9cXFxcJV0qWz8jXXxhYm91dDpibGFuayMpIiwiaSIpLFBhPS9eKFtePyNdKikoXD9bXiNdKik/KCNbXHNcU10qKT8vO2Z1bmN0aW9uIFFhKGEsYixjKXthPUxhKGEsYik7YT1QYS5leGVjKEthKGEpLnRvU3RyaW5nKCkpO2I9YVszXXx8IiI7cmV0dXJuIE9hKGFbMV0rUmEoIj8iLGFbMl18fCIiLGMpK1JhKCIjIixiKSl9dmFyIEphPXt9OwpmdW5jdGlvbiBPYShhKXtpZih2b2lkIDA9PT1JYSl7dmFyIGI9bnVsbDt2YXIgYz1BLnRydXN0ZWRUeXBlcztpZihjJiZjLmNyZWF0ZVBvbGljeSl7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koImdvb2cjaHRtbCIse2NyZWF0ZUhUTUw6emEsY3JlYXRlU2NyaXB0OnphLGNyZWF0ZVNjcmlwdFVSTDp6YX0pfWNhdGNoKGQpe0EuY29uc29sZSYmQS5jb25zb2xlLmVycm9yKGQubWVzc2FnZSl9SWE9Yn1lbHNlIElhPWJ9YT0oYj1JYSk/Yi5jcmVhdGVTY3JpcHRVUkwoYSk6YTtyZXR1cm4gbmV3IEooYSxKYSl9CmZ1bmN0aW9uIFJhKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKCJzdHJpbmciPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6IiI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgaD0wO2g8ZS5sZW5ndGg7aCsrKXt2YXIgZj1lW2hdO251bGwhPWYmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/IiYiOiIiKStlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZikpKX19cmV0dXJuIGJ9O3ZhciBTYT1BcnJheS5wcm90b3R5cGUuc29tZT9mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YSxlPTA7ZTxjO2UrKylpZihlIGluIGQmJmIuY2FsbCh2b2lkIDAsZFtlXSxlLGEpKXJldHVybiEwO3JldHVybiExfTtmdW5jdGlvbiBUYSgpe307ZnVuY3Rpb24gVWEoYSxiKXtmb3IodmFyIGMgaW4gYSliLmNhbGwodm9pZCAwLGFbY10sYyxhKX12YXIgVmE9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTtmdW5jdGlvbiBXYShhLGIpe2Zvcih2YXIgYyxkLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXtkPWFyZ3VtZW50c1tlXTtmb3IoYyBpbiBkKWFbY109ZFtjXTtmb3IodmFyIGg9MDtoPFZhLmxlbmd0aDtoKyspYz1WYVtoXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxjKSYmKGFbY109ZFtjXSl9fTt2YXIgWGEsWWE9QigiQ0xPU1VSRV9GTEFHUyIpLFphPVlhJiZZYVs2MTA0MDEzMDFdO1hhPW51bGwhPVphP1phOiExO2Z1bmN0aW9uICRhKCl7dmFyIGE9QS5uYXZpZ2F0b3I7cmV0dXJuIGEmJihhPWEudXNlckFnZW50KT9hOiIifXZhciBLLGFiPUEubmF2aWdhdG9yO0s9YWI/YWIudXNlckFnZW50RGF0YXx8bnVsbDpudWxsO2Z1bmN0aW9uIGJiKGEsYil7YTp7dmFyIGM9KGEub3duZXJEb2N1bWVudCYmYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHxBKS5kb2N1bWVudDtpZihjLnF1ZXJ5U2VsZWN0b3ImJihjPWMucXVlcnlTZWxlY3Rvcigic2NyaXB0W25vbmNlXSIpKSYmKGM9Yy5ub25jZXx8Yy5nZXRBdHRyaWJ1dGUoIm5vbmNlIikpJiZjYi50ZXN0KGMpKWJyZWFrIGE7Yz0iIn1jJiZhLnNldEF0dHJpYnV0ZSgibm9uY2UiLGMpO2Euc3JjPUthKGIpfXZhciBjYj0vXltcdysvXy1dK1s9XXswLDJ9JC87dmFyIGRiPVJlZ0V4cCgiXig/OihbXjovPyMuXSspOik/KD86Ly8oPzooW15cXFxcLz8jXSopQCk/KFteXFxcXC8/I10qPykoPzo6KFswLTldKykpPyg/PVtcXFxcLz8jXXwkKSk/KFtePyNdKyk/KD86XFw/KFteI10qKSk/KD86IyhbXFxzXFxTXSopKT8kIik7ZnVuY3Rpb24gZWIoYSxiKXtpZihhKXthPWEuc3BsaXQoIiYiKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXS5pbmRleE9mKCI9IiksZT1udWxsO2lmKDA8PWQpe3ZhciBoPWFbY10uc3Vic3RyaW5nKDAsZCk7ZT1hW2NdLnN1YnN0cmluZyhkKzEpfWVsc2UgaD1hW2NdO2IoaCxlP2RlY29kZVVSSUNvbXBvbmVudChlLnJlcGxhY2UoL1wrL2csIiAiKSk6IiIpfX19O2Z1bmN0aW9uIEwoYSl7dGhpcy5nPXRoaXMubz10aGlzLmo9IiI7dGhpcy51PW51bGw7dGhpcy5tPXRoaXMuaD0iIjt0aGlzLmw9ITE7dmFyIGI7YSBpbnN0YW5jZW9mIEw/KHRoaXMubD1hLmwsZmIodGhpcyxhLmopLHRoaXMubz1hLm8sdGhpcy5nPWEuZyxnYih0aGlzLGEudSksdGhpcy5oPWEuaCxoYih0aGlzLGliKGEuaSkpLHRoaXMubT1hLm0pOmEmJihiPVN0cmluZyhhKS5tYXRjaChkYikpPyh0aGlzLmw9ITEsZmIodGhpcyxiWzFdfHwiIiwhMCksdGhpcy5vPU0oYlsyXXx8IiIpLHRoaXMuZz1NKGJbM118fCIiLCEwKSxnYih0aGlzLGJbNF0pLHRoaXMuaD1NKGJbNV18fCIiLCEwKSxoYih0aGlzLGJbNl18fCIiLCEwKSx0aGlzLm09TShiWzddfHwiIikpOih0aGlzLmw9ITEsdGhpcy5pPW5ldyBOKG51bGwsdGhpcy5sKSl9CkwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9W10sYj10aGlzLmo7YiYmYS5wdXNoKE8oYixqYiwhMCksIjoiKTt2YXIgYz10aGlzLmc7aWYoY3x8ImZpbGUiPT1iKWEucHVzaCgiLy8iKSwoYj10aGlzLm8pJiZhLnB1c2goTyhiLGpiLCEwKSwiQCIpLGEucHVzaChlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGMpKS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxjPXRoaXMudSxudWxsIT1jJiZhLnB1c2goIjoiLFN0cmluZyhjKSk7aWYoYz10aGlzLmgpdGhpcy5nJiYiLyIhPWMuY2hhckF0KDApJiZhLnB1c2goIi8iKSxhLnB1c2goTyhjLCIvIj09Yy5jaGFyQXQoMCk/a2I6bGIsITApKTsoYz10aGlzLmkudG9TdHJpbmcoKSkmJmEucHVzaCgiPyIsYyk7KGM9dGhpcy5tKSYmYS5wdXNoKCIjIixPKGMsbWIpKTtyZXR1cm4gYS5qb2luKCIiKX07CkwucHJvdG90eXBlLnJlc29sdmU9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEwodGhpcyksYz0hIWEuajtjP2ZiKGIsYS5qKTpjPSEhYS5vO2M/Yi5vPWEubzpjPSEhYS5nO2M/Yi5nPWEuZzpjPW51bGwhPWEudTt2YXIgZD1hLmg7aWYoYylnYihiLGEudSk7ZWxzZSBpZihjPSEhYS5oKXtpZigiLyIhPWQuY2hhckF0KDApKWlmKHRoaXMuZyYmIXRoaXMuaClkPSIvIitkO2Vsc2V7dmFyIGU9Yi5oLmxhc3RJbmRleE9mKCIvIik7LTEhPWUmJihkPWIuaC5zbGljZSgwLGUrMSkrZCl9ZT1kO2lmKCIuLiI9PWV8fCIuIj09ZSlkPSIiO2Vsc2UgaWYoLTEhPWUuaW5kZXhPZigiLi8iKXx8LTEhPWUuaW5kZXhPZigiLy4iKSl7ZD0wPT1lLmxhc3RJbmRleE9mKCIvIiwwKTtlPWUuc3BsaXQoIi8iKTtmb3IodmFyIGg9W10sZj0wO2Y8ZS5sZW5ndGg7KXt2YXIgZz1lW2YrK107Ii4iPT1nP2QmJmY9PWUubGVuZ3RoJiZoLnB1c2goIiIpOiIuLiI9PWc/KCgxPGgubGVuZ3RofHwxPT1oLmxlbmd0aCYmIiIhPQpoWzBdKSYmaC5wb3AoKSxkJiZmPT1lLmxlbmd0aCYmaC5wdXNoKCIiKSk6KGgucHVzaChnKSxkPSEwKX1kPWguam9pbigiLyIpfWVsc2UgZD1lfWM/Yi5oPWQ6Yz0iIiE9PWEuaS50b1N0cmluZygpO2M/aGIoYixpYihhLmkpKTpjPSEhYS5tO2MmJihiLm09YS5tKTtyZXR1cm4gYn07ZnVuY3Rpb24gZmIoYSxiLGMpe2Euaj1jP00oYiwhMCk6YjthLmomJihhLmo9YS5qLnJlcGxhY2UoLzokLywiIikpfWZ1bmN0aW9uIGdiKGEsYil7aWYoYil7Yj1OdW1iZXIoYik7aWYoaXNOYU4oYil8fDA+Yil0aHJvdyBFcnJvcigiQmFkIHBvcnQgbnVtYmVyICIrYik7YS51PWJ9ZWxzZSBhLnU9bnVsbH1mdW5jdGlvbiBoYihhLGIsYyl7YiBpbnN0YW5jZW9mIE4/KGEuaT1iLG5iKGEuaSxhLmwpKTooY3x8KGI9TyhiLG9iKSksYS5pPW5ldyBOKGIsYS5sKSl9CmZ1bmN0aW9uIE0oYSxiKXtyZXR1cm4gYT9iP2RlY29kZVVSSShhLnJlcGxhY2UoLyUyNS9nLCIlMjUyNSIpKTpkZWNvZGVVUklDb21wb25lbnQoYSk6IiJ9ZnVuY3Rpb24gTyhhLGIsYyl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT8oYT1lbmNvZGVVUkkoYSkucmVwbGFjZShiLHBiKSxjJiYoYT1hLnJlcGxhY2UoLyUyNShbMC05YS1mQS1GXXsyfSkvZywiJSQxIikpLGEpOm51bGx9ZnVuY3Rpb24gcGIoYSl7YT1hLmNoYXJDb2RlQXQoMCk7cmV0dXJuIiUiKyhhPj40JjE1KS50b1N0cmluZygxNikrKGEmMTUpLnRvU3RyaW5nKDE2KX12YXIgamI9L1sjXC9cP0BdL2csbGI9L1sjXD86XS9nLGtiPS9bI1w/XS9nLG9iPS9bI1w/QF0vZyxtYj0vIy9nO2Z1bmN0aW9uIE4oYSxiKXt0aGlzLmg9dGhpcy5nPW51bGw7dGhpcy5pPWF8fG51bGw7dGhpcy5qPSEhYn0KZnVuY3Rpb24gUChhKXthLmd8fChhLmc9bmV3IE1hcCxhLmg9MCxhLmkmJmViKGEuaSxmdW5jdGlvbihiLGMpe2EuYWRkKGRlY29kZVVSSUNvbXBvbmVudChiLnJlcGxhY2UoL1wrL2csIiAiKSksYyl9KSl9Ti5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYil7UCh0aGlzKTt0aGlzLmk9bnVsbDthPVEodGhpcyxhKTt2YXIgYz10aGlzLmcuZ2V0KGEpO2N8fHRoaXMuZy5zZXQoYSxjPVtdKTtjLnB1c2goYik7dGhpcy5oKz0xO3JldHVybiB0aGlzfTtmdW5jdGlvbiBxYihhLGIpe1AoYSk7Yj1RKGEsYik7YS5nLmhhcyhiKSYmKGEuaT1udWxsLGEuaC09YS5nLmdldChiKS5sZW5ndGgsYS5nLmRlbGV0ZShiKSl9ZnVuY3Rpb24gcmIoYSxiKXtQKGEpO2I9UShhLGIpO3JldHVybiBhLmcuaGFzKGIpfQpOLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7UCh0aGlzKTt0aGlzLmcuZm9yRWFjaChmdW5jdGlvbihjLGQpe2MuZm9yRWFjaChmdW5jdGlvbihlKXthLmNhbGwoYixlLGQsdGhpcyl9LHRoaXMpfSx0aGlzKX07ZnVuY3Rpb24gc2IoYSxiKXtQKGEpO3ZhciBjPVtdO2lmKCJzdHJpbmciPT09dHlwZW9mIGIpcmIoYSxiKSYmKGM9Yy5jb25jYXQoYS5nLmdldChRKGEsYikpKSk7ZWxzZSBmb3IoYT1BcnJheS5mcm9tKGEuZy52YWx1ZXMoKSksYj0wO2I8YS5sZW5ndGg7YisrKWM9Yy5jb25jYXQoYVtiXSk7cmV0dXJuIGN9Ti5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7UCh0aGlzKTt0aGlzLmk9bnVsbDthPVEodGhpcyxhKTtyYih0aGlzLGEpJiYodGhpcy5oLT10aGlzLmcuZ2V0KGEpLmxlbmd0aCk7dGhpcy5nLnNldChhLFtiXSk7dGhpcy5oKz0xO3JldHVybiB0aGlzfTsKTi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuIGI7YT1zYih0aGlzLGEpO3JldHVybiAwPGEubGVuZ3RoP1N0cmluZyhhWzBdKTpifTtOLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2lmKHRoaXMuaSlyZXR1cm4gdGhpcy5pO2lmKCF0aGlzLmcpcmV0dXJuIiI7Zm9yKHZhciBhPVtdLGI9QXJyYXkuZnJvbSh0aGlzLmcua2V5cygpKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY10sZT1lbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKTtkPXNiKHRoaXMsZCk7Zm9yKHZhciBoPTA7aDxkLmxlbmd0aDtoKyspe3ZhciBmPWU7IiIhPT1kW2hdJiYoZis9Ij0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZFtoXSkpKTthLnB1c2goZil9fXJldHVybiB0aGlzLmk9YS5qb2luKCImIil9O2Z1bmN0aW9uIGliKGEpe3ZhciBiPW5ldyBOO2IuaT1hLmk7YS5nJiYoYi5nPW5ldyBNYXAoYS5nKSxiLmg9YS5oKTtyZXR1cm4gYn0KZnVuY3Rpb24gUShhLGIpe2I9U3RyaW5nKGIpO2EuaiYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYn1mdW5jdGlvbiBuYihhLGIpe2ImJiFhLmomJihQKGEpLGEuaT1udWxsLGEuZy5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7dmFyIGU9ZC50b0xvd2VyQ2FzZSgpO2lmKGQhPWUmJihxYih0aGlzLGQpLHFiKHRoaXMsZSksMDxjLmxlbmd0aCkpe3RoaXMuaT1udWxsO2Q9dGhpcy5nO3ZhciBoPWQuc2V0O2U9USh0aGlzLGUpO3ZhciBmPWMubGVuZ3RoO2lmKDA8Zil7Zm9yKHZhciBnPUFycmF5KGYpLGs9MDtrPGY7aysrKWdba109Y1trXTtmPWd9ZWxzZSBmPVtdO2guY2FsbChkLGUsZik7dGhpcy5oKz1jLmxlbmd0aH19LGEpKTthLmo9Yn07ZnVuY3Rpb24gdGIoYSxiKXtVYShiLGZ1bmN0aW9uKGMsZCl7YyYmIm9iamVjdCI9PXR5cGVvZiBjJiZjLksmJihjPWMuSSgpKTsic3R5bGUiPT1kP2Euc3R5bGUuY3NzVGV4dD1jOiJjbGFzcyI9PWQ/YS5jbGFzc05hbWU9YzoiZm9yIj09ZD9hLmh0bWxGb3I9Yzp1Yi5oYXNPd25Qcm9wZXJ0eShkKT9hLnNldEF0dHJpYnV0ZSh1YltkXSxjKTowPT1kLmxhc3RJbmRleE9mKCJhcmlhLSIsMCl8fDA9PWQubGFzdEluZGV4T2YoImRhdGEtIiwwKT9hLnNldEF0dHJpYnV0ZShkLGMpOmFbZF09Y30pfQp2YXIgdWI9e2NlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjb2xzcGFuOiJjb2xTcGFuIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGhlaWdodDoiaGVpZ2h0IixtYXhsZW5ndGg6Im1heExlbmd0aCIsbm9uY2U6Im5vbmNlIixyb2xlOiJyb2xlIixyb3dzcGFuOiJyb3dTcGFuIix0eXBlOiJ0eXBlIix1c2VtYXA6InVzZU1hcCIsdmFsaWduOiJ2QWxpZ24iLHdpZHRoOiJ3aWR0aCJ9O2Z1bmN0aW9uIHZiKGEsYil7Yj1TdHJpbmcoYik7ImFwcGxpY2F0aW9uL3hodG1sK3htbCI9PT1hLmNvbnRlbnRUeXBlJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBhLmNyZWF0ZUVsZW1lbnQoYil9ZnVuY3Rpb24gd2IoYSl7dGhpcy5nPWF8fEEuZG9jdW1lbnR8fGRvY3VtZW50fTtmdW5jdGlvbiB4Yigpe307ZnVuY3Rpb24geWIoYSxiKXt0aGlzLmk9YTt0aGlzLmo9Yjt0aGlzLmg9MDt0aGlzLmc9bnVsbH15Yi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7aWYoMDx0aGlzLmgpe3RoaXMuaC0tO3ZhciBhPXRoaXMuZzt0aGlzLmc9YS5uZXh0O2EubmV4dD1udWxsfWVsc2UgYT10aGlzLmkoKTtyZXR1cm4gYX07ZnVuY3Rpb24gemIoYSxiKXthLmooYik7MTAwPmEuaCYmKGEuaCsrLGIubmV4dD1hLmcsYS5nPWIpfTt2YXIgQWI7CmZ1bmN0aW9uIEJiKCl7dmFyIGE9QS5NZXNzYWdlQ2hhbm5lbDsidW5kZWZpbmVkIj09PXR5cGVvZiBhJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5wb3N0TWVzc2FnZSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJi0xPT0kYSgpLmluZGV4T2YoIlByZXN0byIpJiYoYT1mdW5jdGlvbigpe3ZhciBlPXZiKGRvY3VtZW50LCJJRlJBTUUiKTtlLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChlKTt2YXIgaD1lLmNvbnRlbnRXaW5kb3c7ZT1oLmRvY3VtZW50O2Uub3BlbigpO2UuY2xvc2UoKTt2YXIgZj0iY2FsbEltbWVkaWF0ZSIrTWF0aC5yYW5kb20oKSxnPSJmaWxlOiI9PWgubG9jYXRpb24ucHJvdG9jb2w/IioiOmgubG9jYXRpb24ucHJvdG9jb2wrIi8vIitoLmxvY2F0aW9uLmhvc3Q7ZT1DKGZ1bmN0aW9uKGspe2lmKCgiKiI9PWd8fGsub3JpZ2luPT1nKSYmay5kYXRhPT1mKXRoaXMucG9ydDEub25tZXNzYWdlKCl9LHRoaXMpOwpoLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUsITEpO3RoaXMucG9ydDE9e307dGhpcy5wb3J0Mj17cG9zdE1lc3NhZ2U6ZnVuY3Rpb24oKXtoLnBvc3RNZXNzYWdlKGYsZyl9fX0pO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJihYYSYmSyYmMDxLLmJyYW5kcy5sZW5ndGh8fC0xPT0kYSgpLmluZGV4T2YoIlRyaWRlbnQiKSYmLTE9PSRhKCkuaW5kZXhPZigiTVNJRSIpKSl7dmFyIGI9bmV3IGEsYz17fSxkPWM7Yi5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1jLm5leHQpe2M9Yy5uZXh0O3ZhciBlPWMuSDtjLkg9bnVsbDtlKCl9fTtyZXR1cm4gZnVuY3Rpb24oZSl7ZC5uZXh0PXtIOmV9O2Q9ZC5uZXh0O2IucG9ydDIucG9zdE1lc3NhZ2UoMCl9fXJldHVybiBmdW5jdGlvbihlKXtBLnNldFRpbWVvdXQoZSwwKX19O2Z1bmN0aW9uIENiKGEpe0Euc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSwwKX07ZnVuY3Rpb24gRGIoKXt0aGlzLmg9dGhpcy5nPW51bGx9RGIucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe3ZhciBjPUViLmdldCgpO2Muc2V0KGEsYik7dGhpcy5oP3RoaXMuaC5uZXh0PWM6dGhpcy5nPWM7dGhpcy5oPWN9O2Z1bmN0aW9uIEZiKCl7dmFyIGE9R2IsYj1udWxsO2EuZyYmKGI9YS5nLGEuZz1hLmcubmV4dCxhLmd8fChhLmg9bnVsbCksYi5uZXh0PW51bGwpO3JldHVybiBifXZhciBFYj1uZXcgeWIoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEhifSxmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXNldCgpfSk7ZnVuY3Rpb24gSGIoKXt0aGlzLm5leHQ9dGhpcy5nPXRoaXMuaD1udWxsfUhiLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmg9YTt0aGlzLmc9Yjt0aGlzLm5leHQ9bnVsbH07SGIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5uZXh0PXRoaXMuZz10aGlzLmg9bnVsbH07dmFyIEliLEpiPSExLEdiPW5ldyBEYjtmdW5jdGlvbiBLYihhLGIpe0lifHxMYigpO0pifHwoSWIoKSxKYj0hMCk7R2IuYWRkKGEsYil9ZnVuY3Rpb24gTGIoKXtpZihBLlByb21pc2UmJkEuUHJvbWlzZS5yZXNvbHZlKXt2YXIgYT1BLlByb21pc2UucmVzb2x2ZSh2b2lkIDApO0liPWZ1bmN0aW9uKCl7YS50aGVuKE1iKX19ZWxzZSBJYj1mdW5jdGlvbigpe3ZhciBiPU1iOyJmdW5jdGlvbiIhPT10eXBlb2YgQS5zZXRJbW1lZGlhdGV8fEEuV2luZG93JiZBLldpbmRvdy5wcm90b3R5cGUmJihYYSYmSyYmMDxLLmJyYW5kcy5sZW5ndGh8fC0xPT0kYSgpLmluZGV4T2YoIkVkZ2UiKSkmJkEuV2luZG93LnByb3RvdHlwZS5zZXRJbW1lZGlhdGU9PUEuc2V0SW1tZWRpYXRlPyhBYnx8KEFiPUJiKCkpLEFiKGIpKTpBLnNldEltbWVkaWF0ZShiKX19CmZ1bmN0aW9uIE1iKCl7Zm9yKHZhciBhO2E9RmIoKTspe3RyeXthLmguY2FsbChhLmcpfWNhdGNoKGIpe0NiKGIpfXpiKEViLGEpfUpiPSExfTtmdW5jdGlvbiBOYihhKXtpZighYSlyZXR1cm4hMTt0cnl7cmV0dXJuISFhLiRnb29nX1RoZW5hYmxlfWNhdGNoKGIpe3JldHVybiExfX07ZnVuY3Rpb24gUihhKXt0aGlzLmc9MDt0aGlzLm89dm9pZCAwO3RoaXMuaj10aGlzLmg9dGhpcy5pPW51bGw7dGhpcy5sPXRoaXMubT0hMTtpZihhIT1UYSl0cnl7dmFyIGI9dGhpczthLmNhbGwodm9pZCAwLGZ1bmN0aW9uKGMpe1MoYiwyLGMpfSxmdW5jdGlvbihjKXtTKGIsMyxjKX0pfWNhdGNoKGMpe1ModGhpcywzLGMpfX1mdW5jdGlvbiBPYigpe3RoaXMubmV4dD10aGlzLmk9dGhpcy5oPXRoaXMuaj10aGlzLmc9bnVsbDt0aGlzLmw9ITF9T2IucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5pPXRoaXMuaD10aGlzLmo9dGhpcy5nPW51bGw7dGhpcy5sPSExfTt2YXIgUGI9bmV3IHliKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBPYn0sZnVuY3Rpb24oYSl7YS5yZXNldCgpfSk7ZnVuY3Rpb24gUWIoYSxiLGMpe3ZhciBkPVBiLmdldCgpO2Quaj1hO2QuaD1iO2QuaT1jO3JldHVybiBkfQpSLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUmIodGhpcywiZnVuY3Rpb24iPT09dHlwZW9mIGE/YTpudWxsLCJmdW5jdGlvbiI9PT10eXBlb2YgYj9iOm51bGwsYyl9O1IucHJvdG90eXBlLiRnb29nX1RoZW5hYmxlPSEwO1IucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXtpZigwPT10aGlzLmcpe3ZhciBiPW5ldyBUKGEpO0tiKGZ1bmN0aW9uKCl7U2IodGhpcyxiKX0sdGhpcyl9fTtmdW5jdGlvbiBTYihhLGIpe2lmKDA9PWEuZylpZihhLmkpe3ZhciBjPWEuaTtpZihjLmgpe2Zvcih2YXIgZD0wLGU9bnVsbCxoPW51bGwsZj1jLmg7ZiYmKGYubHx8KGQrKyxmLmc9PWEmJihlPWYpLCEoZSYmMTxkKSkpO2Y9Zi5uZXh0KWV8fChoPWYpO2UmJigwPT1jLmcmJjE9PWQ/U2IoYyxiKTooaD8oZD1oLGQubmV4dD09Yy5qJiYoYy5qPWQpLGQubmV4dD1kLm5leHQubmV4dCk6VGIoYyksVWIoYyxlLDMsYikpKX1hLmk9bnVsbH1lbHNlIFMoYSwzLGIpfQpmdW5jdGlvbiBWYihhLGIpe2EuaHx8MiE9YS5nJiYzIT1hLmd8fFdiKGEpO2Euaj9hLmoubmV4dD1iOmEuaD1iO2Euaj1ifWZ1bmN0aW9uIFJiKGEsYixjLGQpe3ZhciBlPVFiKG51bGwsbnVsbCxudWxsKTtlLmc9bmV3IFIoZnVuY3Rpb24oaCxmKXtlLmo9Yj9mdW5jdGlvbihnKXt0cnl7dmFyIGs9Yi5jYWxsKGQsZyk7aChrKX1jYXRjaChtKXtmKG0pfX06aDtlLmg9Yz9mdW5jdGlvbihnKXt0cnl7dmFyIGs9Yy5jYWxsKGQsZyk7dm9pZCAwPT09ayYmZyBpbnN0YW5jZW9mIFQ/ZihnKTpoKGspfWNhdGNoKG0pe2YobSl9fTpmfSk7ZS5nLmk9YTtWYihhLGUpO3JldHVybiBlLmd9Ui5wcm90b3R5cGUuQT1mdW5jdGlvbihhKXt0aGlzLmc9MDtTKHRoaXMsMixhKX07Ui5wcm90b3R5cGUuQj1mdW5jdGlvbihhKXt0aGlzLmc9MDtTKHRoaXMsMyxhKX07CmZ1bmN0aW9uIFMoYSxiLGMpe2lmKDA9PWEuZyl7YT09PWMmJihiPTMsYz1uZXcgVHlwZUVycm9yKCJQcm9taXNlIGNhbm5vdCByZXNvbHZlIHRvIGl0c2VsZiIpKTthLmc9MTthOnt2YXIgZD1jLGU9YS5BLGg9YS5CO2lmKGQgaW5zdGFuY2VvZiBSKXtWYihkLFFiKGV8fFRhLGh8fG51bGwsYSkpO3ZhciBmPSEwfWVsc2UgaWYoTmIoZCkpZC50aGVuKGUsaCxhKSxmPSEwO2Vsc2V7aWYod2EoZCkpdHJ5e3ZhciBnPWQudGhlbjtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGcpe1hiKGQsZyxlLGgsYSk7Zj0hMDticmVhayBhfX1jYXRjaChrKXtoLmNhbGwoYSxrKTtmPSEwO2JyZWFrIGF9Zj0hMX19Znx8KGEubz1jLGEuZz1iLGEuaT1udWxsLFdiKGEpLDMhPWJ8fGMgaW5zdGFuY2VvZiBUfHxZYihhLGMpKX19CmZ1bmN0aW9uIFhiKGEsYixjLGQsZSl7ZnVuY3Rpb24gaChrKXtnfHwoZz0hMCxkLmNhbGwoZSxrKSl9ZnVuY3Rpb24gZihrKXtnfHwoZz0hMCxjLmNhbGwoZSxrKSl9dmFyIGc9ITE7dHJ5e2IuY2FsbChhLGYsaCl9Y2F0Y2goayl7aChrKX19ZnVuY3Rpb24gV2IoYSl7YS5tfHwoYS5tPSEwLEtiKGEudSxhKSl9ZnVuY3Rpb24gVGIoYSl7dmFyIGI9bnVsbDthLmgmJihiPWEuaCxhLmg9Yi5uZXh0LGIubmV4dD1udWxsKTthLmh8fChhLmo9bnVsbCk7cmV0dXJuIGJ9Ui5wcm90b3R5cGUudT1mdW5jdGlvbigpe2Zvcih2YXIgYTthPVRiKHRoaXMpOylVYih0aGlzLGEsdGhpcy5nLHRoaXMubyk7dGhpcy5tPSExfTsKZnVuY3Rpb24gVWIoYSxiLGMsZCl7aWYoMz09YyYmYi5oJiYhYi5sKWZvcig7YSYmYS5sO2E9YS5pKWEubD0hMTtpZihiLmcpYi5nLmk9bnVsbCxaYihiLGMsZCk7ZWxzZSB0cnl7Yi5sP2Iuai5jYWxsKGIuaSk6WmIoYixjLGQpfWNhdGNoKGUpeyRiLmNhbGwobnVsbCxlKX16YihQYixiKX1mdW5jdGlvbiBaYihhLGIsYyl7Mj09Yj9hLmouY2FsbChhLmksYyk6YS5oJiZhLmguY2FsbChhLmksYyl9ZnVuY3Rpb24gWWIoYSxiKXthLmw9ITA7S2IoZnVuY3Rpb24oKXthLmwmJiRiLmNhbGwobnVsbCxiKX0pfXZhciAkYj1DYjtmdW5jdGlvbiBUKGEpe0YuY2FsbCh0aGlzLGEpfUUoVCxGKTtULnByb3RvdHlwZS5uYW1lPSJjYW5jZWwiOy8qCgogQ29weXJpZ2h0IDIwMDUsIDIwMDcgQm9iIElwcG9saXRvLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy4KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKi8KZnVuY3Rpb24gVShhLGIpe3RoaXMubD1bXTt0aGlzLkQ9YTt0aGlzLkM9Ynx8bnVsbDt0aGlzLmo9dGhpcy5pPSExO3RoaXMuaD12b2lkIDA7dGhpcy5BPXRoaXMuRz10aGlzLm89ITE7dGhpcy5tPTA7dGhpcy5nPW51bGw7dGhpcy51PTB9RShVLHhiKTtVLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7aWYodGhpcy5pKXRoaXMuaCBpbnN0YW5jZW9mIFUmJnRoaXMuaC5jYW5jZWwoKTtlbHNle2lmKHRoaXMuZyl7dmFyIGI9dGhpcy5nO2RlbGV0ZSB0aGlzLmc7YT9iLmNhbmNlbChhKTooYi51LS0sMD49Yi51JiZiLmNhbmNlbCgpKX10aGlzLkQ/dGhpcy5ELmNhbGwodGhpcy5DLHRoaXMpOnRoaXMuQT0hMDt0aGlzLml8fChhPW5ldyBWKHRoaXMpLGFjKHRoaXMpLFcodGhpcywhMSxhKSl9fTtVLnByb3RvdHlwZS5CPWZ1bmN0aW9uKGEsYil7dGhpcy5vPSExO1codGhpcyxhLGIpfTtmdW5jdGlvbiBXKGEsYixjKXthLmk9ITA7YS5oPWM7YS5qPSFiO2JjKGEpfQpmdW5jdGlvbiBhYyhhKXtpZihhLmkpe2lmKCFhLkEpdGhyb3cgbmV3IGNjKGEpO2EuQT0hMX19ZnVuY3Rpb24gZGMoYSxiLGMsZCl7YS5sLnB1c2goW2IsYyxkXSk7YS5pJiZiYyhhKX1VLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGg9bmV3IFIoZnVuY3Rpb24oZixnKXtlPWY7ZD1nfSk7ZGModGhpcyxlLGZ1bmN0aW9uKGYpe2YgaW5zdGFuY2VvZiBWP2guY2FuY2VsKCk6ZChmKTtyZXR1cm4gZWN9LHRoaXMpO3JldHVybiBoLnRoZW4oYSxiLGMpfTtVLnByb3RvdHlwZS4kZ29vZ19UaGVuYWJsZT0hMDtmdW5jdGlvbiBmYyhhKXtyZXR1cm4gU2EoYS5sLGZ1bmN0aW9uKGIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYlsxXX0pfXZhciBlYz17fTsKZnVuY3Rpb24gYmMoYSl7aWYoYS5tJiZhLmkmJmZjKGEpKXt2YXIgYj1hLm0sYz1nY1tiXTtjJiYoQS5jbGVhclRpbWVvdXQoYy5nKSxkZWxldGUgZ2NbYl0pO2EubT0wfWEuZyYmKGEuZy51LS0sZGVsZXRlIGEuZyk7Yj1hLmg7Zm9yKHZhciBkPWM9ITE7YS5sLmxlbmd0aCYmIWEubzspe3ZhciBlPWEubC5zaGlmdCgpLGg9ZVswXSxmPWVbMV07ZT1lWzJdO2lmKGg9YS5qP2Y6aCl0cnl7dmFyIGc9aC5jYWxsKGV8fGEuQyxiKTtnPT09ZWMmJihnPXZvaWQgMCk7dm9pZCAwIT09ZyYmKGEuaj1hLmomJihnPT1ifHxnIGluc3RhbmNlb2YgRXJyb3IpLGEuaD1iPWcpO2lmKE5iKGIpfHwiZnVuY3Rpb24iPT09dHlwZW9mIEEuUHJvbWlzZSYmYiBpbnN0YW5jZW9mIEEuUHJvbWlzZSlkPSEwLGEubz0hMH1jYXRjaChrKXtiPWssYS5qPSEwLGZjKGEpfHwoYz0hMCl9fWEuaD1iO2QmJihnPUMoYS5CLGEsITApLGQ9QyhhLkIsYSwhMSksYiBpbnN0YW5jZW9mIFU/KGRjKGIsZyxkKSxiLkc9ITApOgpiLnRoZW4oZyxkKSk7YyYmKGI9bmV3IGhjKGIpLGdjW2IuZ109YixhLm09Yi5nKX1mdW5jdGlvbiBjYygpe0YuY2FsbCh0aGlzKX1FKGNjLEYpO2NjLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCBoYXMgYWxyZWFkeSBmaXJlZCI7Y2MucHJvdG90eXBlLm5hbWU9IkFscmVhZHlDYWxsZWRFcnJvciI7ZnVuY3Rpb24gVigpe0YuY2FsbCh0aGlzKX1FKFYsRik7Vi5wcm90b3R5cGUubWVzc2FnZT0iRGVmZXJyZWQgd2FzIGNhbmNlbGVkIjtWLnByb3RvdHlwZS5uYW1lPSJDYW5jZWxlZEVycm9yIjtmdW5jdGlvbiBoYyhhKXt0aGlzLmc9QS5zZXRUaW1lb3V0KEModGhpcy5pLHRoaXMpLDApO3RoaXMuaD1hfWhjLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7ZGVsZXRlIGdjW3RoaXMuZ107dGhyb3cgdGhpcy5oO307dmFyIGdjPXt9O2Z1bmN0aW9uIGljKGEpe3ZhciBiO3JldHVybihiPShhfHxkb2N1bWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkhFQUQiKSkmJjAhPT1iLmxlbmd0aD9iWzBdOmEuZG9jdW1lbnRFbGVtZW50fWZ1bmN0aW9uIGpjKCl7aWYodGhpcyYmdGhpcy5MKXt2YXIgYT10aGlzLkw7YSYmIlNDUklQVCI9PWEudGFnTmFtZSYma2MoYSwhMCx0aGlzLk0pfX1mdW5jdGlvbiBrYyhhLGIsYyl7bnVsbCE9YyYmQS5jbGVhclRpbWVvdXQoYyk7YS5vbmxvYWQ9ZnVuY3Rpb24oKXt9O2Eub25lcnJvcj1mdW5jdGlvbigpe307YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt9O2ImJndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSYmYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSl9LDApfWZ1bmN0aW9uIGxjKGEsYil7dmFyIGM9IkpzbG9hZGVyIGVycm9yIChjb2RlICMiK2ErIikiO2ImJihjKz0iOiAiK2IpO0YuY2FsbCh0aGlzLGMpO3RoaXMuY29kZT1hfQpFKGxjLEYpOy8qCgogQ29weXJpZ2h0IDIwMjEgR29vZ2xlIExMQwogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKi8KZnVuY3Rpb24gbWMoYSl7cmV0dXJuIFFhKGEuZm9ybWF0LGEuUixhLlh8fHt9KX0KZnVuY3Rpb24gbmMoYSl7dmFyIGI9e3RpbWVvdXQ6M0U0LGF0dHJpYnV0ZXM6e2FzeW5jOiExLGRlZmVyOiExfX0sYz1iLmRvY3VtZW50fHxkb2N1bWVudCxkPUthKGEpLnRvU3RyaW5nKCksZT12YigobmV3IHdiKGMpKS5nLCJTQ1JJUFQiKSxoPXtMOmUsTTp2b2lkIDB9LGY9bmV3IFUoamMsaCksZz1udWxsLGs9bnVsbCE9Yi50aW1lb3V0P2IudGltZW91dDo1RTM7MDxrJiYoZz13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2tjKGUsITApO3ZhciBtPW5ldyBsYygxLCJUaW1lb3V0IHJlYWNoZWQgZm9yIGxvYWRpbmcgc2NyaXB0ICIrZCk7YWMoZik7VyhmLCExLG0pfSxrKSxoLk09Zyk7ZS5vbmxvYWQ9ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtlLnJlYWR5U3RhdGUmJiJsb2FkZWQiIT1lLnJlYWR5U3RhdGUmJiJjb21wbGV0ZSIhPWUucmVhZHlTdGF0ZXx8KGtjKGUsYi5WfHwhMSxnKSxhYyhmKSxXKGYsITAsbnVsbCkpfTtlLm9uZXJyb3I9ZnVuY3Rpb24oKXtrYyhlLAohMCxnKTt2YXIgbT1uZXcgbGMoMCwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQgIitkKTthYyhmKTtXKGYsITEsbSl9O2g9Yi5hdHRyaWJ1dGVzfHx7fTtXYShoLHt0eXBlOiJ0ZXh0L2phdmFzY3JpcHQiLGNoYXJzZXQ6IlVURi04In0pO3RiKGUsaCk7YmIoZSxhKTtpYyhjKS5hcHBlbmRDaGlsZChlKTtyZXR1cm4gZn1mdW5jdGlvbiBvYyhhLGIsYyl7Yz1jfHx7fTthPVFhKGEsYixjKTt2YXIgZD1uYyhhKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7ZGMoZCxlLG51bGwpfSl9Oy8qCgogQ29weXJpZ2h0IDIwMjEgR29vZ2xlIExMQwogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKCiovCmZ1bmN0aW9uIHBjKCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEpeyJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvd3x8ImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/YSgpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyPyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixhLCEwKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYSwhMCkpOndpbmRvdy5hdHRhY2hFdmVudD93aW5kb3cuYXR0YWNoRXZlbnQoIm9ubG9hZCIsYSk6ImZ1bmN0aW9uIiE9PXR5cGVvZiB3aW5kb3cub25sb2FkP3dpbmRvdy5vbmxvYWQ9YTp3aW5kb3cub25sb2FkPWZ1bmN0aW9uKGIpe2lmKHdpbmRvdy5vbmxvYWQpd2luZG93Lm9ubG9hZChiKTthKCl9fSl9O3ZhciBYPSIiLFk9IiIscWMsWixyYz1udWxsLHNjO2Z1bmN0aW9uIHRjKGEpe3ZhciBiPWEsYyxkPWEubWF0Y2goL150ZXN0aW5nLS8pO2QmJihiPWIucmVwbGFjZSgvXnRlc3RpbmctLywiIikpO2E9Yjtkb3tpZihiPT09SGFbYl0pdGhyb3cgRXJyb3IoIkluZmluaXRlIGxvb3AgaW4gdmVyc2lvbiBtYXBwaW5nOiAiK2IpOyhjPUhhW2JdKSYmKGI9Yyl9d2hpbGUoYyk7Yz0oZD8idGVzdGluZy0iOiIiKStiO2E9InByZS00NSI9PWI/YTpjO3JldHVybnt2ZXJzaW9uOmEsUzpjfX0KZnVuY3Rpb24gdWMoYSl7dmFyIGI9RGFbc2NdLmxvYWRlcixjPXRjKGEpO3JldHVybiBvYyhiLHt2ZXJzaW9uOmMuU30pLnRoZW4oZnVuY3Rpb24oKXt2YXIgZD1CKCJnb29nbGUuY2hhcnRzLmxvYWRlci52ZXJzaW9uU3BlY2lmaWMubG9hZCIpfHxCKCJnb29nbGUuY2hhcnRzLmxvYWRlci5WZXJzaW9uU3BlY2lmaWMubG9hZCIpfHxCKCJnb29nbGUuY2hhcnRzLmxvYWRlci5wdWJsaWNMb2FkIil8fEIoImdvb2dsZS5jaGFydHMudmVyc2lvblNwZWNpZmljLmxvYWQiKTtpZighZCl0aHJvdyBFcnJvcigiQmFkIHZlcnNpb246ICIrYSk7cmM9ZnVuY3Rpb24oZSl7ZT1kKGMudmVyc2lvbixlKTtpZihudWxsPT1lfHxudWxsPT1lLnRoZW4pe3ZhciBoPUIoImdvb2dsZS5jaGFydHMubG9hZGVyLnB1YmxpY1NldE9uTG9hZENhbGxiYWNrIil8fEIoImdvb2dsZS5jaGFydHMudmVyc2lvblNwZWNpZmljLnNldE9uTG9hZENhbGxiYWNrIik7ZT1uZXcgUHJvbWlzZShmdW5jdGlvbihmKXtoKGYpfSk7CmUudGhlbj1ofXJldHVybiBlfX0pfWZ1bmN0aW9uIHZjKGEpeyJzdHJpbmciPT09dHlwZW9mIGEmJihhPVthXSk7QXJyYXkuaXNBcnJheShhKSYmMCE9PWEubGVuZ3RofHwoYT1FYSk7dmFyIGI9W107YS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2M9Yy50b0xvd2VyQ2FzZSgpO2I9Yi5jb25jYXQoYy5zcGxpdCgvW1xzLF0rXHMqLykpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gd2MoYSl7YT1hfHwiIjtmb3IodmFyIGI9YS5yZXBsYWNlKC8tL2csIl8iKS50b0xvd2VyQ2FzZSgpOyJzdHJpbmciPT09dHlwZW9mIGI7KWE9YixiPUdhW2JdLGI9PT1hJiYoYj0hMSk7Ynx8KGEubWF0Y2goL19bXl9dKyQvKT8oYT1hLnJlcGxhY2UoL19bXl9dKyQvLCIiKSxhPXdjKGEpKTphPSJlbiIpO3JldHVybiBhfQpmdW5jdGlvbiB4YyhhKXthPWF8fCIiOyIiIT09WCYmWCE9PWEmJihjb25zb2xlLndhcm4oIiBBdHRlbXB0aW5nIHRvIGxvYWQgdmVyc2lvbiAnIithKyInIG9mIEdvb2dsZSBDaGFydHMsIGJ1dCB0aGUgcHJldmlvdXNseSBsb2FkZWQgJyIrKFgrIicgd2lsbCBiZSB1c2VkIGluc3RlYWQuIikpLGE9WCk7cmV0dXJuIFg9YXx8IiJ9ZnVuY3Rpb24geWMoYSl7YT1hfHwiIjsiIiE9PVkmJlkhPT1hJiYoY29uc29sZS53YXJuKCIgQXR0ZW1wdGluZyB0byBsb2FkIEdvb2dsZSBDaGFydHMgZm9yIGxhbmd1YWdlICciK2ErIicsIGJ1dCB0aGUgcHJldmlvdXNseSBsb2FkZWQgJyIrKFkrIicgd2lsbCBiZSB1c2VkIGluc3RlYWQuIikpLGE9WSk7ImVuIj09PWEmJihhPSIiKTtyZXR1cm4gWT1hfHwiIn1mdW5jdGlvbiB6YyhhKXt2YXIgYj17fSxjO2ZvcihjIGluIGEpYltjXT1hW2NdO3JldHVybiBifQpmdW5jdGlvbiBBYyhhLGIpe2I9emMoYik7Yi5kb21haW49c2M7Yi5jYWxsYmFjaz1CYyhiLmNhbGxiYWNrKTthPXhjKGEpO3ZhciBjPWIubGFuZ3VhZ2U7Yz15Yyh3YyhjKSk7Yi5sYW5ndWFnZT1jO2lmKCFxYyl7aWYoYi5lbmFibGVVcmxTZXR0aW5ncyYmd2luZG93LlVSTFNlYXJjaFBhcmFtcyl0cnl7YT0obmV3IFVSTFNlYXJjaFBhcmFtcyh0b3AubG9jYXRpb24uc2VhcmNoKSkuZ2V0KCJjaGFydHMtdmVyc2lvbiIpfHxhfWNhdGNoKGQpe2NvbnNvbGUuaW5mbygiRmFpbGVkIHRvIGdldCBjaGFydHMtdmVyc2lvbiBmcm9tIHRvcCBVUkwiLGQpfXFjPXVjKGEpfWIucGFja2FnZXM9dmMoYi5wYWNrYWdlcyk7cmV0dXJuIFo9cWMudGhlbihmdW5jdGlvbigpe3JldHVybiByYyhiKX0pfQpmdW5jdGlvbiBDYyhhKXtpZighWil0aHJvdyBFcnJvcigiTXVzdCBjYWxsIGdvb2dsZS5jaGFydHMubG9hZCBiZWZvcmUgZ29vZ2xlLmNoYXJ0cy5zZXRPbkxvYWRDYWxsYmFjayIpO3JldHVybiBhP1oudGhlbihhKTpafUQoImdvb2dsZS5jaGFydHMuc2FmZUxvYWQiLGZ1bmN0aW9uKGEpe3JldHVybiBEYyhPYmplY3QuYXNzaWduKHt9LGEse3NhZmVNb2RlOiEwfSkpfSk7ZnVuY3Rpb24gRGMoKXt2YXIgYT1sYS5hcHBseSgwLGFyZ3VtZW50cyksYj0wOyJ2aXN1YWxpemF0aW9uIj09PWFbYl0mJmIrKzt2YXIgYz0iY3VycmVudCI7aWYoInN0cmluZyI9PT10eXBlb2YgYVtiXXx8Im51bWJlciI9PT10eXBlb2YgYVtiXSljPVN0cmluZyhhW2JdKSxiKys7dmFyIGQ9e307d2EoYVtiXSkmJihkPWFbYl0pO3JldHVybiBBYyhjLGQpfUQoImdvb2dsZS5jaGFydHMubG9hZCIsRGMpO0QoImdvb2dsZS5jaGFydHMuc2V0T25Mb2FkQ2FsbGJhY2siLENjKTsKdmFyIEVjPUkoImh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9qc2FwaVJlZGlyZWN0PXRydWUiKSxGYz1JKCJodHRwczovL21hcHMtYXBpLXNzbC5nb29nbGUuY29tL21hcHM/anNhcGlSZWRpcmVjdD10cnVlJmZpbGU9Z29vZ2xlYXBpIik7CmZ1bmN0aW9uIEdjKGEsYixjKXtjb25zb2xlLndhcm4oIkxvYWRpbmcgTWFwcyBBUEkgd2l0aCB0aGUganNhcGkgbG9hZGVyIGlzIGRlcHJlY2F0ZWQuIik7Yz1jfHx7fTthPWMua2V5fHxjLmNsaWVudDt2YXIgZD1jLmxpYnJhcmllcyxlPWZ1bmN0aW9uKGcpe2Zvcih2YXIgaz17fSxtPTA7bTxnLmxlbmd0aDttKyspe3ZhciBuPWdbbV07a1tuWzBdXT1uWzFdfXJldHVybiBrfShjLm90aGVyX3BhcmFtcz9jLm90aGVyX3BhcmFtcy5zcGxpdCgiJiIpLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gZy5zcGxpdCgiPSIpfSk6W10pLGg9T2JqZWN0LmFzc2lnbih7fSx7a2V5OmEsVzpkfSxlKSxmPSIyIj09PWI/RmM6RWM7Wj1uZXcgUHJvbWlzZShmdW5jdGlvbihnKXt2YXIgaz1CYyhjJiZjLmNhbGxiYWNrKTtvYyhmLHt9LGgpLnRoZW4oaykudGhlbihnKX0pfXZhciBIYz1JKCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbnB1dHRvb2xzL2pzL2l0YS9pbnB1dHRvb2xzXzMuanMiKTsKZnVuY3Rpb24gSWMoYSxiLGMpe3dhKGMpJiZjLnBhY2thZ2VzPyhBcnJheS5pc0FycmF5KGMucGFja2FnZXMpP2MucGFja2FnZXM6W2MucGFja2FnZXNdKS5pbmNsdWRlcygiaW5wdXR0b29scyIpPyhjb25zb2xlLndhcm4oJ0xvYWRpbmcgImVsZW1lbnRzIiB3aXRoIHRoZSBqc2FwaSBsb2FkZXIgaXMgZGVwcmVjYXRlZC5cblBsZWFzZSBsb2FkICcrKEhjKyIgZGlyZWN0bHkuIikpLFo9bmV3IFByb21pc2UoZnVuY3Rpb24oZCl7dmFyIGU9QmMoYyYmYy5jYWxsYmFjayk7b2MoSGMse30se30pLnRoZW4oZSkudGhlbihkKX0pKTpjb25zb2xlLmVycm9yKCdMb2FkaW5nICJlbGVtZW50cyIgb3RoZXIgdGhhbiAiaW5wdXR0b29scyIgaXMgdW5zdXBwb3J0ZWQuJyk6Y29uc29sZS5lcnJvcigiZ29vZ2xlLmxvYWQgb2YgZWxlbWVudHMgd2FzIGludm9rZWQgd2l0aG91dCBzcGVjaWZ5aW5nIHBhY2thZ2VzIil9dmFyIEpjPUkoImh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvJXttb2R1bGV9LyV7dmVyc2lvbn0vJXtmaWxlfSIpOwpmdW5jdGlvbiBLYyhhLGIpe3ZhciBjO2Rve2lmKGE9PT1iW2FdKXRocm93IEVycm9yKCJJbmZpbml0ZSBsb29wIGluIHZlcnNpb24gbWFwcGluZyBmb3IgdmVyc2lvbiAiK2EpOyhjPWJbYV0pJiYoYT1jKX13aGlsZShjKTtyZXR1cm4gYX0KZnVuY3Rpb24gTGMoYSxiLGMpe3ZhciBkPUZhW2FdO2lmKGQpe2I9S2MoYixkLmFsaWFzZXMpO2Q9ZC52ZXJzaW9uc1tiXTtpZighZCl0aHJvdyBFcnJvcigiVW5rbm93biB2ZXJzaW9uLCAiK2IrIiwgb2YgIithKyIuIik7dmFyIGU9e21vZHVsZTphLHZlcnNpb246Ynx8IiIsZmlsZTpkLmNvbXByZXNzZWR9O2I9S2EobWMoe2Zvcm1hdDpKYyxSOmV9KSkudG9TdHJpbmcoKTtjb25zb2xlLndhcm4oIkxvYWRpbmcgbW9kdWxlcyB3aXRoIHRoZSBqc2FwaSBsb2FkZXIgaXMgZGVwcmVjYXRlZC5cblBsZWFzZSBsb2FkICIrKGErIiBkaXJlY3RseSBmcm9tICIrYisiLiIpKTtaPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGgpe3ZhciBmPUJjKGMmJmMuY2FsbGJhY2spO29jKEpjLGUpLnRoZW4oZikudGhlbihoKX0pfWVsc2Ugc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IEVycm9yKCdNb2R1bGUgIicrYSsnIiBpcyBub3Qgc3VwcG9ydGVkLicpO30sMCl9CmZ1bmN0aW9uIEJjKGEpe3JldHVybiBmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlhKCk7ZWxzZSBpZigic3RyaW5nIj09PXR5cGVvZiBhJiYiIiE9PWEpdHJ5e3ZhciBiPUIoYSk7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJUeXBlIG9mICciK2ErIicgaXMgIit0eXBlb2YgYisiLiIpO2IoKX1jYXRjaChjKXt0aHJvdyBFcnJvcigiQ2FsbGJhY2sgb2YgIithKyIgZmFpbGVkIHdpdGg6ICIrYyk7fX19ZnVuY3Rpb24gTWMoKXt2YXIgYT1sYS5hcHBseSgwLGFyZ3VtZW50cyk7c3dpdGNoKGFbMF0pe2Nhc2UgIm1hcHMiOkdjLmFwcGx5KG51bGwsZWEoYSkpO2JyZWFrO2Nhc2UgImVsZW1lbnRzIjpJYy5hcHBseShudWxsLGVhKGEpKTticmVhaztjYXNlICJ2aXN1YWxpemF0aW9uIjpEYy5hcHBseShudWxsLGVhKGEpKTticmVhaztkZWZhdWx0OkxjLmFwcGx5KG51bGwsZWEoYSkpfX1EKCJnb29nbGUubG9hZGVyLkxvYWRGYWlsdXJlIiwhMSk7CmlmKHNjKWNvbnNvbGUud2FybigiR29vZ2xlIENoYXJ0cyBsb2FkZXIuanMgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIG9uY2UuIik7ZWxzZXtZPVg9IiI7cmM9Wj1xYz1udWxsO0IoImdvb2dsZS5sb2FkIil8fChEKCJnb29nbGUubG9hZCIsTWMpLEQoImdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayIsQ2MpKTt2YXIgTmM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLE9jPShkb2N1bWVudC5jdXJyZW50U2NyaXB0fHxOY1tOYy5sZW5ndGgtMV0pLmdldEF0dHJpYnV0ZSgic3JjIiksUGM9bmV3IEwoT2MpLFFjPVBjLmc7c2M9UWM9UWMubWF0Y2goL153d3dcLmdzdGF0aWNcLmNuLyk/ImdzdGF0aWMuY24iOiJnc3RhdGljLmNvbSI7dmFyIFJjPW5ldyBOKFBjLmkudG9TdHJpbmcoKSksU2M9UmMuZ2V0KCJjYWxsYmFjayIpO2lmKCJzdHJpbmciPT09dHlwZW9mIFNjKXt2YXIgVGM9QmMoU2MpO3BjKCkudGhlbihUYyl9dmFyIFVjPVJjLmdldCgiYXV0b2xvYWQiKTtpZigic3RyaW5nIj09PQp0eXBlb2YgVWMpdHJ5e2lmKCIiIT09VWMpZm9yKHZhciBWYz1KU09OLnBhcnNlKFVjKS5tb2R1bGVzLFdjPTA7V2M8VmMubGVuZ3RoO1djKyspe3ZhciBYYz1WY1tXY107TWMoWGMubmFtZSxYYy52ZXJzaW9uLFhjKX19Y2F0Y2goYSl7dGhyb3cgRXJyb3IoIkF1dG9sb2FkIGZhaWxlZCB3aXRoOiAiK2EpO319O30pLmNhbGwodGhpcyk7Cg=="}},"time_used":64,"timings":{"blocked":-1,"dns":2,"connect":14,"send":0,"wait":16,"receive":3,"ssl":29},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-M374JF434J","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.72","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://punks.my/","date":"2026-07-27T11:14:30.358Z","timestamp":1785150870358,"http_version":"HTTP/2","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":"*.google-analytics.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:33 GMT","end":"Mon, 21 Sep 2026 08:37:32 GMT"},"fingerprint":{"sha1":"85:82:80:E9:F0:BC:08:B5:D8:5D:91:B4:E5:D3:DB:B1:A7:2F:E3:F3","sha256":"E3:94:E9:DA:2C:F1:36:09:33:63:D3:69:08:E7:E6:91:8D:F3:61:7F:0F:D0:5F:8E:B6:E9:D7:F3:DD:10:3C:DC"}}},"request":{"raw":"GET /gtag/js?id=G-M374JF434J HTTP/1.1\r\nHost: www.googletagmanager.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://punks.my/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: application/javascript; charset=UTF-8\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: Cache-Control\r\ncontent-encoding: zstd\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 11:14:30 GMT\r\nexpires: Mon, 27 Jul 2026 11:14:30 GMT\r\ncache-control: private, max-age=900\r\nstrict-transport-security: max-age=31536000; includeSubDomains\r\ncross-origin-resource-policy: cross-origin\r\nserver: Google Tag Manager\r\ncontent-length: 159678\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\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"]}],"data":{"size":460394,"size_decoded":160282,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (5422)","md5":"deed2ae209d30f65e94c23fbf03ac1c0","sha1":"7f1dd933a9dfa16007ae0a3abd572e4d3b3374ae","sha256":"cdc90056184a3f49d74121cf0fc988b11a9bc73e079fc0fd8104dcd295c08a42","sha512":"52556bb8110080a2e0a69384044fd442b2ce838bdb4ead3e555056330bb040aa6f6fcd8e5d05c33109424830da053ea68702394c96a1dbd24047145e8c6d2226","ssdeep":"6144:r/8U0jIWobP69FMxmRknhqsScPmfxNf3EjxxVGaHoXzRYGi:r/J1WWP69VwzxVHOvi","tlshash":"a2a419cdb3d6742643a6f478903f018ba57b29e2b44cc899f189c8d42e7465a8277f7c","first_seen":"2026-07-27T11:15:13.795325Z","last_seen":"2026-07-27T11:15:13.795325Z","times_seen":1,"resource_available":true,"data":"Ci8vIENvcHlyaWdodCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKKGZ1bmN0aW9uKCl7Cgp2YXIgZGF0YSA9IHsKInJlc291cmNlIjogewogICJ2ZXJzaW9uIjoiMSIsCiAgCiAgIm1hY3JvcyI6W3siZnVuY3Rpb24iOiJfX2UifSx7ImZ1bmN0aW9uIjoiX19jIiwidnRwX3ZhbHVlIjoiZ29vZ2xlLm5vIn0seyJmdW5jdGlvbiI6Il9fYyIsInZ0cF92YWx1ZSI6MH1dLAogICJ0YWdzIjpbeyJmdW5jdGlvbiI6Il9fb2d0XzFwX2RhdGFfdjIiLCJwcmlvcml0eSI6MTAsInZ0cF9pc0F1dG9FbmFibGVkIjp0cnVlLCJ2dHBfYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiOlsibGlzdCIsWyJtYXAiLCJleGNsdXNpb25TZWxlY3RvciIsIiJdXSwidnRwX2lzRW5hYmxlZCI6dHJ1ZSwidnRwX2NpdHlUeXBlIjoiQ1NTX1NFTEVDVE9SIiwidnRwX21hbnVhbEVtYWlsRW5hYmxlZCI6ZmFsc2UsInZ0cF9maXJzdE5hbWVUeXBlIjoiQ1NTX1NFTEVDVE9SIiwidnRwX2NvdW50cnlUeXBlIjoiQ1NTX1NFTEVDVE9SIiwidnRwX2NpdHlWYWx1ZSI6IiIsInZ0cF9lbWFpbFR5cGUiOiJDU1NfU0VMRUNUT1IiLCJ2dHBfcmVnaW9uVHlwZSI6IkNTU19TRUxFQ1RPUiIsInZ0cF9hdXRvRW1haWxFbmFibGVkIjp0cnVlLCJ2dHBfcG9zdGFsQ29kZVZhbHVlIjoiIiwidnRwX2xhc3ROYW1lVmFsdWUiOiIiLCJ2dHBfcGhvbmVUeXBlIjoiQ1NTX1NFTEVDVE9SIiwidnRwX3Bob25lVmFsdWUiOiIiLCJ2dHBfc3RyZWV0VHlwZSI6IkNTU19TRUxFQ1RPUiIsInZ0cF9hdXRvUGhvbmVFbmFibGVkIjpmYWxzZSwidnRwX3Bvc3RhbENvZGVUeXBlIjoiQ1NTX1NFTEVDVE9SIiwidnRwX2VtYWlsVmFsdWUiOiIiLCJ2dHBfZmlyc3ROYW1lVmFsdWUiOiIiLCJ2dHBfc3RyZWV0VmFsdWUiOiIiLCJ2dHBfbGFzdE5hbWVUeXBlIjoiQ1NTX1NFTEVDVE9SIiwidnRwX2F1dG9BZGRyZXNzRW5hYmxlZCI6ZmFsc2UsInZ0cF9yZWdpb25WYWx1ZSI6IiIsInZ0cF9jb3VudHJ5VmFsdWUiOiIiLCJ2dHBfaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIjpmYWxzZSwidGFnX2lkIjo0fSx7ImZ1bmN0aW9uIjoiX19jY2RfZ2FfZmlyc3QiLCJwcmlvcml0eSI6OSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctTTM3NEpGNDM0SiIsInRhZ19pZCI6MTV9LHsiZnVuY3Rpb24iOiJfX3NldF9wcm9kdWN0X3NldHRpbmdzIiwicHJpb3JpdHkiOjgsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLU0zNzRKRjQzNEoiLCJ2dHBfZm9yZWlnblRsZE1hY3JvUmVzdWx0IjpbIm1hY3JvIiwxXSwidnRwX2lzQ2hpbmFWaXBSZWdpb25NYWNyb1Jlc3VsdCI6WyJtYWNybyIsMl0sInRhZ19pZCI6MTR9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9kb3dubG9hZCIsInByaW9yaXR5Ijo3LCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctTTM3NEpGNDM0SiIsInRhZ19pZCI6MTN9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9vdXRib3VuZF9jbGljayIsInByaW9yaXR5Ijo2LCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctTTM3NEpGNDM0SiIsInRhZ19pZCI6MTJ9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9wYWdlX3ZpZXciLCJwcmlvcml0eSI6NSwidnRwX2hpc3RvcnlFdmVudHMiOnRydWUsInZ0cF9pbmNsdWRlUGFyYW1zIjp0cnVlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy1NMzc0SkY0MzRKIiwidGFnX2lkIjoxMX0seyJmdW5jdGlvbiI6Il9fY2NkX2VtX3Njcm9sbCIsInByaW9yaXR5Ijo0LCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctTTM3NEpGNDM0SiIsInRhZ19pZCI6MTB9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9zaXRlX3NlYXJjaCIsInByaW9yaXR5IjozLCJ2dHBfc2VhcmNoUXVlcnlQYXJhbXMiOiJxLHMsc2VhcmNoLHF1ZXJ5LGtleXdvcmQiLCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctTTM3NEpGNDM0SiIsInRhZ19pZCI6OX0seyJmdW5jdGlvbiI6Il9fY2NkX2VtX3ZpZGVvIiwicHJpb3JpdHkiOjIsInZ0cF9pbmNsdWRlUGFyYW1zIjp0cnVlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy1NMzc0SkY0MzRKIiwidGFnX2lkIjo4fSx7ImZ1bmN0aW9uIjoiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIiwicHJpb3JpdHkiOjEsInZ0cF9jb252ZXJzaW9uUnVsZXMiOlsibGlzdCIsWyJtYXAiLCJtYXRjaGluZ1J1bGVzIiwie1widHlwZVwiOjUsXCJhcmdzXCI6W3tcInN0cmluZ1ZhbHVlXCI6XCJwdXJjaGFzZVwifSx7XCJjb250ZXh0VmFsdWVcIjp7XCJuYW1lc3BhY2VUeXBlXCI6MSxcImtleVBhcnRzXCI6W1wiZXZlbnROYW1lXCJdfX1dfSJdXSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctTTM3NEpGNDM0SiIsInRhZ19pZCI6N30seyJmdW5jdGlvbiI6Il9fZ2N0IiwidnRwX3RyYWNraW5nSWQiOiJHLU0zNzRKRjQzNEoiLCJ2dHBfc2Vzc2lvbkR1cmF0aW9uIjowLCJ0YWdfaWQiOjF9LHsiZnVuY3Rpb24iOiJfX2NjZF9nYV9sYXN0IiwicHJpb3JpdHkiOjAsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLU0zNzRKRjQzNEoiLCJ0YWdfaWQiOjZ9XSwKICAicHJlZGljYXRlcyI6W3siZnVuY3Rpb24iOiJfZXEiLCJhcmcwIjpbIm1hY3JvIiwwXSwiYXJnMSI6Imd0bS5qcyJ9LHsiZnVuY3Rpb24iOiJfZXEiLCJhcmcwIjpbIm1hY3JvIiwwXSwiYXJnMSI6Imd0bS5pbml0In1dLAogICJydWxlcyI6W1tbImlmIiwwXSxbImFkZCIsMTBdXSxbWyJpZiIsMV0sWyJhZGQiLDAsMTEsOSw4LDcsNiw1LDQsMywyLDFdXV0KfSwKInJ1bnRpbWUiOlsgWzUwLCJfX2MiLFs0NiwiYSJdLFszNixbMTcsWzE1LCJhIl0sInZhbHVlIl1dXQogLFs1MCwiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIixbNDYsImEiXSxbMjIsWzMwLFsyOCxbMTcsWzE1LCJhIl0sImNvbnZlcnNpb25SdWxlcyJdXSxbMjAsWzE3LFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sImxlbmd0aCJdLDBdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNvcHlQcmVIaXQiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJmIiwiZmlyc3RfdmlzaXQiXSxbNTIsImciLCJzZXNzaW9uX3N0YXJ0Il0sWzQxLCJoIl0sWzQxLCJpIl0sWyJkIixbMTcsWzE1LCJhIl0sImluc3RhbmNlRGVzdGluYXRpb25JZCJdLFs1MSwiIixbNywiaiJdLFs1MiwiayIsWzgsInByZUhpdCIsWzE1LCJqIl1dXSxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiUCJdLHRydWVdXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImsiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQVYiXSx0cnVlXV0sWzRdXV1dXV1dLFsyMixbMixbMTUsImoiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQVoiXV1dLFs0NixbNTMsWzIyLFsyOCxbMTUsImgiXV0sWzQ2LFs1MyxbNTIsImwiLFsiYiIsWzE1LCJqIl0sWzgsIm9taXRIaXREYXRhIix0cnVlLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJsIl0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJmIl1dXSxbMywiaCIsWzgsInByZUhpdCIsWzE1LCJsIl1dXV1dXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImgiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQkEiXSx0cnVlXV0sWzRdXV1dXV1dXV1dLFsyMixbMixbMTUsImoiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQkwiXV1dLFs0NixbNTMsWzIyLFsyOCxbMTUsImkiXV0sWzQ2LFs1MyxbNTIsImwiLFsiYiIsWzE1LCJqIl0sWzgsIm9taXRIaXREYXRhIix0cnVlLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJsIl0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJnIl1dXSxbMywiaSIsWzgsInByZUhpdCIsWzE1LCJsIl1dXV1dXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImkiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQk0iXSx0cnVlXV0sWzRdXV1dXV1dXV1dXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXQogLFs1MCwiX19jY2RfZW1fZG93bmxvYWQiLFs0NiwiYSJdLFs1MCwicSIsWzQ2LCJ2Il0sWzM2LFsxLFsxNSwidiJdLFsyMSxbMixbMixbMTUsInYiXSwidG9Mb3dlckNhc2UiLFs3XV0sIm1hdGNoIixbNyxbMTUsInAiXV1dLFs0NV1dXV1dLFs1MCwiciIsWzQ2LCJ2Il0sWzUyLCJ3IixbMixbMTcsWzE1LCJ2Il0sInBhdGhuYW1lIl0sInNwbGl0IixbNywiLiJdXV0sWzUyLCJ4IixbMzksWzE4LFsxNyxbMTUsInciXSwibGVuZ3RoIl0sMV0sWzE2LFsxNSwidyJdLFszNyxbMTcsWzE1LCJ3Il0sImxlbmd0aCJdLDFdXSwiIl1dLFszNixbMTYsWzIsWzE1LCJ4Il0sInNwbGl0IixbNywiLyJdXSwwXV1dLFs1MCwicyIsWzQ2LCJ2Il0sWzM2LFszOSxbMTIsWzIsWzE3LFsxNSwidiJdLCJwYXRobmFtZSJdLCJzdWJzdHJpbmciLFs3LDAsMV1dLCIvIl0sWzE3LFsxNSwidiJdLCJwYXRobmFtZSJdLFswLCIvIixbMTcsWzE1LCJ2Il0sInBhdGhuYW1lIl1dXV1dLFs1MCwidCIsWzQ2LCJ2Il0sWzQxLCJ3Il0sWzMsInciLCIiXSxbMjIsWzEsWzE1LCJ2Il0sWzE3LFsxNSwidiJdLCJocmVmIl1dLFs0NixbNTMsWzQxLCJ4Il0sWzMsIngiLFsyLFsxNyxbMTUsInYiXSwiaHJlZiJdLCJpbmRleE9mIixbNywiIyJdXV0sWzMsInciLFszOSxbMjMsWzE1LCJ4Il0sMF0sWzE3LFsxNSwidiJdLCJocmVmIl0sWzIsWzE3LFsxNSwidiJdLCJocmVmIl0sInN1YnN0cmluZyIsWzcsMCxbMTUsIngiXV1dXV1dXV0sWzM2LFsxNSwidyJdXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbURvd25sb2FkQWN0aXZpdHkiXV0sWzUyLCJmIixbMTcsWzE1LCJkIl0sIkEiXV0sWzUyLCJnIiwiZmlsZV9kb3dubG9hZCJdLFs1MiwiaCIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaSIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJpIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImkiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJoIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImoiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm0iLFsicmVxdWlyZSIsInBhcnNlVXJsIl1dLFs1MiwibiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsIm8iLFsyLFsxNSwibCJdLCJBIixbNywiZG93bmxvYWQiXV1dLFs1MiwicCIsWzAsIl4ocGRmfHhsc3g/fGRvY3g/fHR4dHxydGZ8Y3N2fGV4ZXxrZXl8cHAoc3x0fHR4KXw3enxwa2d8cmFyfGd6fHppcHxhdml8IiwibW92fG1wNHxtcGU/Z3x3bXZ8bWlkaT98bXAzfHdhdnx3bWEpJCJdXSxbNTIsInUiLFsiayIsWzgsImNoZWNrVmFsaWRhdGlvbiIsdHJ1ZV1dXSxbMjIsWzI4LFsxNSwidSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbMixbMTUsImMiXSwic2V0SXRlbSIsWzcsWzE1LCJoIl0sdHJ1ZV1dLFsiaiIsImd0bS5saW5rQ2xpY2siLFs1MSwiIixbNywidiIsInciXSxbInciXSxbNTIsIngiLFs4LCJldmVudElkIixbMTYsWzE1LCJ2Il0sImd0bS51bmlxdWVFdmVudElkIl0sImRlZmVycmFibGUiLHRydWVdXSxbNTIsInkiLFsxNixbMTUsInYiXSwiZ3RtLmVsZW1lbnRVcmwiXV0sWzUyLCJ6IixbIm0iLFsxNSwieSJdXV0sWzIyLFsyOCxbMTUsInoiXV0sWzQ2LFszNl1dXSxbNTIsImFBIixbInIiLFsxNSwieiJdXV0sWzIyLFsyOCxbInEiLFsxNSwiYUEiXV1dLFs0NixbNTMsWzM2XV1dXSxbNTIsImFCIixbOCwibGlua19pZCIsWzE2LFsxNSwidiJdLCJndG0uZWxlbWVudElkIl0sImxpbmtfdXJsIixbInQiLFsxNSwieiJdXSwibGlua190ZXh0IixbMTYsWzE1LCJ2Il0sImd0bS5lbGVtZW50VGV4dCJdLCJmaWxlX25hbWUiLFsicyIsWzE1LCJ6Il1dLCJmaWxlX2V4dGVuc2lvbiIsWzE1LCJhQSJdXV0sWzIsWzE1LCJsIl0sIkIiLFs3LFsxNSwieCJdXV0sWyJuIixbMTUsIm8iXSxbMTUsImciXSxbMTUsImFCIl0sWzE1LCJ4Il1dXSxbMTUsInUiXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX291dGJvdW5kX2NsaWNrIixbNDYsImEiXSxbNTAsInIiLFs0NiwidyJdLFsyMixbMjgsWzE1LCJ3Il1dLFs0NixbMzYsWzQ0XV1dXSxbNDEsIngiXSxbMywieCIsIiJdLFsyMixbMSxbMTUsInciXSxbMTcsWzE1LCJ3Il0sImhyZWYiXV0sWzQ2LFs1MyxbNDEsInkiXSxbMywieSIsWzIsWzE3LFsxNSwidyJdLCJocmVmIl0sImluZGV4T2YiLFs3LCIjIl1dXSxbMywieCIsWzM5LFsyMyxbMTUsInkiXSwwXSxbMTcsWzE1LCJ3Il0sImhyZWYiXSxbMixbMTcsWzE1LCJ3Il0sImhyZWYiXSwic3Vic3RyaW5nIixbNywwLFsxNSwieSJdXV1dXV1dXSxbMzYsWzE1LCJ4Il1dXSxbNTAsInMiLFs0NiwidyJdLFsyMixbMjgsWzE1LCJ3Il1dLFs0NixbMzYsWzQ0XV1dXSxbNDEsIngiXSxbMywieCIsWzE3LFsxNSwidyJdLCJob3N0bmFtZSJdXSxbNTIsInkiLFsyLFsxNSwieCJdLCJtYXRjaCIsWzcsIl53d3dcXGQqXFwuIl1dXSxbMjIsWzEsWzE1LCJ5Il0sWzE2LFsxNSwieSJdLDBdXSxbNDYsWzMsIngiLFsyLFsxNSwieCJdLCJzdWJzdHJpbmciLFs3LFsxNyxbMTYsWzE1LCJ5Il0sMF0sImxlbmd0aCJdXV1dXV0sWzM2LFsxNSwieCJdXV0sWzUwLCJ0IixbNDYsInciXSxbMjIsWzI4LFsxNSwidyJdXSxbNDYsWzM2LGZhbHNlXV1dLFs1MiwieCIsWzIsWzE3LFsxNSwidyJdLCJob3N0bmFtZSJdLCJ0b0xvd2VyQ2FzZSIsWzddXV0sWzIyLFsyOCxbMTUsIngiXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFs0MSwieSJdLFszLCJ5IixbMixbInMiLFsibyIsWyJuIl1dXSwidG9Mb3dlckNhc2UiLFs3XV1dLFs0MSwieiJdLFszLCJ6IixbMzcsWzE3LFsxNSwieCJdLCJsZW5ndGgiXSxbMTcsWzE1LCJ5Il0sImxlbmd0aCJdXV0sWzIyLFsxLFsxOCxbMTUsInoiXSwwXSxbMjksWzIsWzE1LCJ5Il0sImNoYXJBdCIsWzcsMF1dLCIuIl1dLFs0NixbNTMsWzMyLFsxNSwieiJdLFszLCJ6IixbMzcsWzE1LCJ6Il0sMV1dXSxbMywieSIsWzAsIi4iLFsxNSwieSJdXV1dXV0sWzIyLFsxLFsxOSxbMTUsInoiXSwwXSxbMTIsWzIsWzE1LCJ4Il0sImluZGV4T2YiLFs3LFsxNSwieSJdLFsxNSwieiJdXV0sWzE1LCJ6Il1dXSxbNDYsWzUzLFszNixmYWxzZV1dXV0sWzM2LHRydWVdXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2NjZEVtT3V0Ym91bmRDbGlja0FjdGl2aXR5Il1dLFs1MiwiZiIsWzE3LFsxNSwiZCJdLCJEIl1dLFs1MiwiZyIsImNsaWNrIl0sWzUyLCJoIiwiaXNSZWdpc3RlcmVkIl0sWzUyLCJpIixbMTcsWzE1LCJhIl0sImluc3RhbmNlRGVzdGluYXRpb25JZCJdXSxbMjIsWyJiIixbMTUsImkiXSxbMTUsImYiXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzIsWzE1LCJlIl0sIkEiLFs3LFsxNSwiaSJdLFsxNyxbMTUsImEiXSwiaW5jbHVkZVBhcmFtcyJdXV0sWzIyLFsyLFsxNSwiYyJdLCJnZXRJdGVtIixbNyxbMTUsImgiXV1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFs1MiwiaiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuYWRkRGF0YUxheWVyRXZlbnRMaXN0ZW5lciJdXSxbNTIsImsiLFsicmVxdWlyZSIsImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uTGlua0NsaWNrIl1dLFs1MiwibCIsWzE1LCJfX21vZHVsZV9lbmhhbmNlZE1lYXN1cmVtZW50Il1dLFs1MiwibSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIl1dLFs1MiwibiIsWyJyZXF1aXJlIiwiZ2V0VXJsIl1dLFs1MiwibyIsWyJyZXF1aXJlIiwicGFyc2VVcmwiXV0sWzUyLCJwIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwicSIsWzIsWzE1LCJsIl0sIkEiLFs3LCJvdXRib3VuZF9jbGljayJdXV0sWzUyLCJ1IixbIm0iLFsxNSwiaSJdLCJjcm9zc19kb21haW5fY29uZGl0aW9ucyJdXSxbNTIsInYiLFsiayIsWzgsImFmZmlsaWF0ZURvbWFpbnMiLFsxNSwidSJdLCJjaGVja1ZhbGlkYXRpb24iLHRydWUsIndhaXRGb3JUYWdzIixmYWxzZV1dXSxbMjIsWzI4LFsxNSwidiJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbMixbMTUsImMiXSwic2V0SXRlbSIsWzcsWzE1LCJoIl0sdHJ1ZV1dLFsiaiIsImd0bS5saW5rQ2xpY2siLFs1MSwiIixbNywidyIsIngiXSxbNTIsInkiLFsibyIsWzE2LFsxNSwidyJdLCJndG0uZWxlbWVudFVybCJdXV0sWzIyLFsyOCxbInQiLFsxNSwieSJdXV0sWzQ2LFs1MyxbIngiXSxbMzZdXV1dLFs1MiwieiIsWzgsImxpbmtfaWQiLFsxNixbMTUsInciXSwiZ3RtLmVsZW1lbnRJZCJdLCJsaW5rX2NsYXNzZXMiLFsxNixbMTUsInciXSwiZ3RtLmVsZW1lbnRDbGFzc2VzIl0sImxpbmtfdXJsIixbInIiLFsxNSwieSJdXSwibGlua19kb21haW4iLFsicyIsWzE1LCJ5Il1dLCJvdXRib3VuZCIsdHJ1ZV1dLFs0MyxbMTUsInoiXSwiZXZlbnRfY2FsbGJhY2siLFsxNSwieCJdXSxbNTIsImFBIixbOCwiZXZlbnRJZCIsWzE2LFsxNSwidyJdLCJndG0udW5pcXVlRXZlbnRJZCJdLCJkZWZlcnJhYmxlIix0cnVlXV0sWzIsWzE1LCJsIl0sIkIiLFs3LFsxNSwiYUEiXV1dLFsicCIsWzE1LCJxIl0sWzE1LCJnIl0sWzE1LCJ6Il0sWzE1LCJhQSJdXV0sWzE1LCJ2Il1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9wYWdlX3ZpZXciLFs0NiwiYSJdLFsyMixbMjgsWzE3LFsxNSwiYSJdLCJoaXN0b3J5RXZlbnRzIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwidGVtcGxhdGVTdG9yYWdlIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbVBhZ2VWaWV3QWN0aXZpdHkiXV0sWzUyLCJmIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZyIsWzE3LFsxNSwiZiJdLCJDIl1dLFs1MiwiaCIsInBhZ2VfdmlldyJdLFs1MiwiaSIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaiIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJqIl0sWzE1LCJnIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImoiXV1dLFsyMixbMixbMTUsImQiXSwiZ2V0SXRlbSIsWzcsWzE1LCJpIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImsiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJsIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkhpc3RvcnlDaGFuZ2UiXV0sWzUyLCJtIixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJuIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwibyIsWzIsWzE1LCJtIl0sIkEiLFs3LCJwYWdlX3ZpZXciXV1dLFs1MiwicCIsWzgsImludGVydmFsIiwxMDAwLCJ1c2VWMkV2ZW50TmFtZSIsdHJ1ZV1dLFs1MiwicSIsWyJsIixbMTUsInAiXV1dLFsyMixbMjgsWzE1LCJxIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uRmFpbHVyZSIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZCJdLCJzZXRJdGVtIixbNyxbMTUsImkiXSx0cnVlXV0sWyJrIiwiZ3RtLmhpc3RvcnlDaGFuZ2UtdjIiLFs1MSwiIixbNywiciIsInMiXSxbInMiXSxbNTIsInQiLFsxNixbMTUsInIiXSwiZ3RtLm9sZFVybCJdXSxbMjIsWzIwLFsxNixbMTUsInIiXSwiZ3RtLm5ld1VybCJdLFsxNSwidCJdXSxbNDYsWzM2XV1dLFs1MiwidSIsWzE2LFsxNSwiciJdLCJndG0uaGlzdG9yeUNoYW5nZVNvdXJjZSJdXSxbMjIsWzEsWzEsWzIxLFsxNSwidSJdLCJwdXNoU3RhdGUiXSxbMjEsWzE1LCJ1Il0sInBvcHN0YXRlIl1dLFsyMSxbMTUsInUiXSwicmVwbGFjZVN0YXRlIl1dLFs0NixbNTMsWzM2XV1dXSxbNTIsInYiLFs4XV0sWzIyLFsxNyxbMTUsImEiXSwiaW5jbHVkZVBhcmFtcyJdLFs0NixbNTMsWzQzLFsxNSwidiJdLCJwYWdlX2xvY2F0aW9uIixbMTYsWzE1LCJyIl0sImd0bS5uZXdVcmwiXV0sWzQzLFsxNSwidiJdLCJwYWdlX3JlZmVycmVyIixbMTUsInQiXV1dXV0sWzUyLCJ3IixbOCwiZXZlbnRJZCIsWzE2LFsxNSwiciJdLCJndG0udW5pcXVlRXZlbnRJZCJdXV0sWzIyLFsyMSxbMTcsWzE1LCJhIl0sImRlZmVyUGFnZVZpZXciXSxmYWxzZV0sWzQ2LFs1MyxbNDMsWzE1LCJ3Il0sImRlZmVycmFibGUiLHRydWVdXV1dLFsyLFsxNSwibSJdLCJCIixbNyxbMTUsInciXV1dLFsibiIsWzE1LCJvIl0sWzE1LCJoIl0sWzE1LCJ2Il0sWzE1LCJ3Il1dXSxbMTUsInEiXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX3Njcm9sbCIsWzQ2LCJhIl0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbVNjcm9sbEFjdGl2aXR5Il1dLFs1MiwiZiIsWzE3LFsxNSwiZCJdLCJFIl1dLFs1MiwiZyIsInNjcm9sbCJdLFs1MiwiaCIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaSIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJpIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImkiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJoIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImoiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPblNjcm9sbCJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm0iLFsicmVxdWlyZSIsImludGVybmFsLnNlbmRHdGFnRXZlbnQiXV0sWzUyLCJuIixbMixbMTUsImwiXSwiQSIsWzcsInNjcm9sbCJdXV0sWzUyLCJvIixbImsiLFs4LCJ2ZXJ0aWNhbFRocmVzaG9sZFVuaXRzIiwiUEVSQ0VOVCIsInZlcnRpY2FsVGhyZXNob2xkcyIsOTBdXV0sWzIyLFsyOCxbMTUsIm8iXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25GYWlsdXJlIixbN11dLFszNl1dXV0sWzIsWzE1LCJjIl0sInNldEl0ZW0iLFs3LFsxNSwiaCJdLHRydWVdXSxbImoiLCJndG0uc2Nyb2xsRGVwdGgiLFs1MSwiIixbNywicCIsInEiXSxbInEiXSxbNTIsInIiLFs4LCJldmVudElkIixbMTYsWzE1LCJwIl0sImd0bS51bmlxdWVFdmVudElkIl0sImRlZmVycmFibGUiLHRydWVdXSxbNTIsInMiLFs4LCJwZXJjZW50X3Njcm9sbGVkIixbMTYsWzE1LCJwIl0sImd0bS5zY3JvbGxUaHJlc2hvbGQiXV1dLFsyLFsxNSwibCJdLCJCIixbNyxbMTUsInIiXV1dLFsibSIsWzE1LCJuIl0sWzE1LCJnIl0sWzE1LCJzIl0sWzE1LCJyIl1dXSxbMTUsIm8iXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX3NpdGVfc2VhcmNoIixbNDYsImEiXSxbNTIsImIiLFsicmVxdWlyZSIsImdldFF1ZXJ5UGFyYW1ldGVycyJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnNlbmRHdGFnRXZlbnQiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJnZXRDb250YWluZXJWZXJzaW9uIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9mZWF0dXJlcyJdXSxbNTIsImYiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJnIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiaCIsWzE1LCJfX21vZHVsZV9jY2RFbVNpdGVTZWFyY2hBY3Rpdml0eSJdXSxbNTIsImkiLFsyLFsxNSwiaCJdLCJBIixbNyxbMTcsWzE1LCJhIl0sInNlYXJjaFF1ZXJ5UGFyYW1zIl0sWzE1LCJiIl1dXV0sWzUyLCJqIixbMzAsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXSxbMTcsWyJkIl0sImNvbnRhaW5lcklkIl1dXSxbNTIsImsiLFs4LCJkZWZlcnJhYmxlIix0cnVlLCJldmVudElkIixbMTcsWzE1LCJhIl0sImd0bUV2ZW50SWQiXSwiZXZlbnRNZXRhZGF0YSIsWzgsImVtX2V2ZW50Iix0cnVlXV1dLFsyMixbMTUsImkiXSxbNDYsWzUzLFs1MiwibCIsWzM5LFsyOCxbMjgsWzE3LFsxNSwiYSJdLCJpbmNsdWRlUGFyYW1zIl1dXSxbMixbMTUsImgiXSwiQiIsWzcsWzE1LCJpIl0sWzE3LFsxNSwiYSJdLCJhZGRpdGlvbmFsUXVlcnlQYXJhbXMiXSxbMTUsImIiXV1dLFs4XV1dLFs0MyxbMTcsWzE1LCJrIl0sImV2ZW50TWV0YWRhdGEiXSxbMTcsWzE1LCJnIl0sIloiXSwiYSJdLFsiYyIsWzE1LCJqIl0sInZpZXdfc2VhcmNoX3Jlc3VsdHMiLFsxNSwibCJdLFsxNSwiayJdXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZW1fdmlkZW8iLFs0NiwiYSJdLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwidGVtcGxhdGVTdG9yYWdlIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfY2NkRW1WaWRlb0FjdGl2aXR5Il1dLFs1MiwiZiIsWzE3LFsxNSwiZCJdLCJGIl1dLFs1MiwiZyIsInZpZGVvX3N0YXJ0Il0sWzUyLCJoIiwidmlkZW9fcHJvZ3Jlc3MiXSxbNTIsImkiLCJ2aWRlb19jb21wbGV0ZSJdLFs1MiwiaiIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiayIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJrIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImsiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJqIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImwiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJtIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbllvdVR1YmVBY3Rpdml0eSJdXSxbNTIsIm4iLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm8iLFsicmVxdWlyZSIsImludGVybmFsLnNlbmRHdGFnRXZlbnQiXV0sWzUyLCJwIixbMixbMTUsIm4iXSwiQSIsWzcsInZpZGVvIl1dXSxbNTIsInEiLFsibSIsWzgsImNhcHR1cmVDb21wbGV0ZSIsdHJ1ZSwiY2FwdHVyZVN0YXJ0Iix0cnVlLCJwcm9ncmVzc1RocmVzaG9sZHNQZXJjZW50IixbNywxMCwyNSw1MCw3NV1dXV0sWzIyLFsyOCxbMTUsInEiXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25GYWlsdXJlIixbN11dLFszNl1dXV0sWzIsWzE1LCJjIl0sInNldEl0ZW0iLFs3LFsxNSwiaiJdLHRydWVdXSxbImwiLCJndG0udmlkZW8iLFs1MSwiIixbNywiciIsInMiXSxbInMiXSxbNTIsInQiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvU3RhdHVzIl1dLFs0MSwidSJdLFsyMixbMjAsWzE1LCJ0Il0sInN0YXJ0Il0sWzQ2LFs1MyxbMywidSIsWzE1LCJnIl1dXV0sWzQ2LFsyMixbMjAsWzE1LCJ0Il0sInByb2dyZXNzIl0sWzQ2LFs1MyxbMywidSIsWzE1LCJoIl1dXV0sWzQ2LFsyMixbMjAsWzE1LCJ0Il0sImNvbXBsZXRlIl0sWzQ2LFs1MyxbMywidSIsWzE1LCJpIl1dXV0sWzQ2LFs1MyxbMzZdXV1dXV1dXSxbNTIsInYiLFs4LCJ2aWRlb19jdXJyZW50X3RpbWUiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvQ3VycmVudFRpbWUiXSwidmlkZW9fZHVyYXRpb24iLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvRHVyYXRpb24iXSwidmlkZW9fcGVyY2VudCIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9QZXJjZW50Il0sInZpZGVvX3Byb3ZpZGVyIixbMTYsWzE1LCJyIl0sImd0bS52aWRlb1Byb3ZpZGVyIl0sInZpZGVvX3RpdGxlIixbMTYsWzE1LCJyIl0sImd0bS52aWRlb1RpdGxlIl0sInZpZGVvX3VybCIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9VcmwiXSwidmlzaWJsZSIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9WaXNpYmxlIl1dXSxbNTIsInciLFs4LCJldmVudElkIixbMTYsWzE1LCJyIl0sImd0bS51bmlxdWVFdmVudElkIl0sImRlZmVycmFibGUiLHRydWVdXSxbMixbMTUsIm4iXSwiQiIsWzcsWzE1LCJ3Il1dXSxbIm8iLFsxNSwicCJdLFsxNSwidSJdLFsxNSwidiJdLFsxNSwidyJdXV0sWzE1LCJxIl1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9nYV9maXJzdCIsWzQ2LCJhIl0sWzUwLCJlIixbNDYsImYiXSxbMixbMTUsImMiXSwiQSIsWzcsWzE1LCJmIl1dXSxbMixbMTUsImQiXSwiQSIsWzcsWzE1LCJmIl1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiYyIsWzE1LCJfX21vZHVsZV90YXNrUGxhdGZvcm1EZXRlY3Rpb24iXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX3Rhc2tTZXRUZXN0SGl0UGFyYW1zIl1dLFsiYiIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXSxbNTEsIiIsWzcsImYiXSxbImUiLFsxNSwiZiJdXV1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9nYV9sYXN0IixbNDYsImEiXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19lIixbNDYsImEiXSxbMzYsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFsicmVxdWlyZSIsImludGVybmFsLmdldEV2ZW50RGF0YSJdXSxbIiQwIiwiZXZlbnQiXV1dXQogLFs1MCwiX19nY3QiLFs0NiwiYSJdLFs1MCwiZyIsWzQ2LCJtIl0sWzUyLCJuIixbN11dLFs2NSwibyIsWzE1LCJtIl0sWzQ2LFs1MyxbNTIsInAiLFsiYiIsWzE1LCJvIl1dXSxbMjIsWzIxLFsxNSwicCJdLFs0NV1dLFs0NixbMixbMTUsIm4iXSwicHVzaCIsWzcsWzE1LCJwIl1dXV1dXV1dLFszNixbMTUsIm4iXV1dLFs1MCwiaCIsWzQ2LCJtIl0sWzUyLCJuIixbMTcsWzE1LCJtIl0sImxpbmtlciJdXSxbMjIsWzEsWzE1LCJuIl0sWzE2LFsxNSwibiJdLCJkb21haW5zIl1dLFs0NixbNTMsWzQzLFsxNSwibiJdLCJkb21haW5zIixbImciLFsxNixbMTUsIm4iXSwiZG9tYWlucyJdXV1dXV0sWzM2LFsxNSwibiJdXV0sWzUwLCJpIixbNDYsIm0iXSxbNTIsIm4iLFsxNyxbMTUsIm0iXSwicmVmZXJyYWxFeGNsdXNpb25EZWZpbml0aW9uIl1dLFsyMixbMSxbMTUsIm4iXSxbMTYsWzE1LCJuIl0sImluY2x1ZGVfY29uZGl0aW9ucyJdXSxbNDYsWzUzLFs0MyxbMTUsIm4iXSwiaW5jbHVkZV9jb25kaXRpb25zIixbImciLFsxNixbMTUsIm4iXSwiaW5jbHVkZV9jb25kaXRpb25zIl1dXV1dXSxbMzYsWzE1LCJuIl1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNyZWF0ZVJlZ2V4Il1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImQiLFsicmVxdWlyZSIsImludGVybmFsLm1lcmdlUmVtb3RlQ29uZmlnIl1dLFs1MiwiZSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJEZXN0aW5hdGlvbiJdXSxbNTIsImYiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImoiLFszMCxbMixbMTUsImYiXSwiZ2V0SXRlbSIsWzcsInJlZ2V4Il1dLFsiYiIsIlsuKitcXC0/XiR7fSgpfFtcXF1cXFxcXSIsImciXV1dLFsyLFsxNSwiZiJdLCJzZXRJdGVtIixbNywicmVnZXgiLFsxNSwiaiJdXV0sWzUyLCJrIixbOF1dLFs1MiwibCIsWzE3LFsxNSwiYSJdLCJzZXNzaW9uRHVyYXRpb24iXV0sWzIyLFsxOCxbMTUsImwiXSwwXSxbNDYsWzUzLFs0MyxbMTUsImsiXSwic2Vzc2lvbl9kdXJhdGlvbiIsWzE1LCJsIl1dXV1dLFs0MyxbMTUsImsiXSwiZXZlbnRfc2V0dGluZ3MiLFsxNyxbMTUsImEiXSwiZXZlbnRTZXR0aW5ncyJdXSxbNDMsWzE1LCJrIl0sImR5bmFtaWNfZXZlbnRfc2V0dGluZ3MiLFsxNyxbMTUsImEiXSwiZHluYW1pY0V2ZW50U2V0dGluZ3MiXV0sWzQzLFsxNSwiayJdLCJnb29nbGVfc2lnbmFscyIsWzIwLFsxNyxbMTUsImEiXSwiZ29vZ2xlU2lnbmFscyJdLDFdXSxbNDMsWzE1LCJrIl0sImdvb2dsZV90bGQiLFsxNyxbMTUsImEiXSwiZm9yZWlnblRsZCJdXSxbNDMsWzE1LCJrIl0sImdhX3Jlc3RyaWN0X2RvbWFpbiIsWzIwLFsxNyxbMTUsImEiXSwicmVzdHJpY3REb21haW4iXSwxXV0sWzQzLFsxNSwiayJdLCJpbnRlcm5hbF90cmFmZmljX3Jlc3VsdHMiLFsxNyxbMTUsImEiXSwiaW50ZXJuYWxUcmFmZmljUmVzdWx0cyJdXSxbNDMsWzE1LCJrIl0sImxpbmtlciIsWyJoIixbMTUsImEiXV1dLFs0MyxbMTUsImsiXSwicmVmZXJyYWxfZXhjbHVzaW9uX2RlZmluaXRpb24iLFsiaSIsWzE1LCJhIl1dXSxbImQiLFsxNyxbMTUsImEiXSwidHJhY2tpbmdJZCJdLFsxNSwiayJdXSxbImUiLFsxNyxbMTUsImEiXSwidHJhY2tpbmdJZCJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19vZ3RfMXBfZGF0YV92MiIsWzQ2LCJhIl0sWzUwLCJwIixbNDYsInIiLCJzIiwidCIsInUiXSxbMjIsWzIwLFsxNixbMTUsInMiXSwidHlwZSJdLFsxNSwidCJdXSxbNDYsWzUzLFsyMixbMjgsWzE1LCJyIl1dLFs0NixbNTMsWzMsInIiLFs4XV1dXV0sWzIyLFsyOCxbMTYsWzE1LCJyIl0sWzE1LCJ0Il1dXSxbNDYsWzUzLFs0MyxbMTUsInIiXSxbMTUsInQiXSxbMTYsWzE1LCJzIl0sInVzZXJEYXRhIl1dLFs1MiwidiIsWzgsIm1vZGUiLCJhIl1dLFsyMixbMTYsWzE1LCJzIl0sInRhZ05hbWUiXSxbNDYsWzUzLFs0MyxbMTUsInYiXSwibG9jYXRpb24iLFsxNixbMTUsInMiXSwidGFnTmFtZSJdXV1dXSxbMjIsWzE2LFsxNSwicyJdLCJxdWVyeVNlbGVjdG9yIl0sWzQ2LFs1MyxbNDMsWzE1LCJ2Il0sInNlbGVjdG9yIixbMTYsWzE1LCJzIl0sInF1ZXJ5U2VsZWN0b3IiXV1dXV0sWzQzLFsxNSwidSJdLFsxNSwidCJdLFsxNSwidiJdXV1dXV1dXSxbMzYsWzE1LCJyIl1dXSxbNTAsInEiLFs0NiwiciIsInMiLCJ0Il0sWzIyLFsyOCxbMTYsWzE1LCJhIl0sWzE1LCJ0Il1dXSxbNDYsWzM2XV1dLFs0MyxbMTUsInIiXSxbMTUsInMiXSxbOCwidmFsdWUiLFsxNixbMTUsImEiXSxbMTUsInQiXV1dXV0sWzIyLFsyOCxbMTcsWzE1LCJhIl0sImlzRW5hYmxlZCJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsIk9iamVjdCJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVGbGFncyJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfZmVhdHVyZXMiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyJdXSxbNTIsImciLFsicmVxdWlyZSIsImludGVybmFsLmRldGVjdFVzZXJQcm92aWRlZERhdGEiXV0sWzUyLCJoIixbInJlcXVpcmUiLCJxdWVyeVBlcm1pc3Npb24iXV0sWzUyLCJpIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiXV0sWzUyLCJqIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiayIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsIm0iLFsiYyIsWzE3LFsxNSwiZSJdLCJBVCJdXV0sWzUyLCJuIixbMzAsWyJmIl0sWzddXV0sWzUyLCJvIixbOCwiZW5hYmxlX2NvZGUiLHRydWVdXSxbMjIsWzE3LFsxNSwiYSJdLCJpc0F1dG9FbmFibGVkIl0sWzQ2LFs1MyxbNTIsInIiLFs3XV0sWzIyLFsxLFsxNyxbMTUsImEiXSwiYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiXSxbMTcsWzE3LFsxNSwiYSJdLCJhdXRvQ29sbGVjdEV4Y2x1c2lvblNlbGVjdG9ycyJdLCJsZW5ndGgiXV0sWzQ2LFs1MyxbNTMsWzQxLCJ1Il0sWzMsInUiLDBdLFs2MyxbNywidSJdLFsyMyxbMTUsInUiXSxbMTcsWzE3LFsxNSwiYSJdLCJhdXRvQ29sbGVjdEV4Y2x1c2lvblNlbGVjdG9ycyJdLCJsZW5ndGgiXV0sWzMzLFsxNSwidSJdLFszLCJ1IixbMCxbMTUsInUiXSwxXV1dLFs0NixbNTMsWzUyLCJ2IixbMTcsWzE2LFsxNyxbMTUsImEiXSwiYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiXSxbMTUsInUiXV0sImV4Y2x1c2lvblNlbGVjdG9yIl1dLFsyMixbMTUsInYiXSxbNDYsWzUzLFsyLFsxNSwiciJdLCJwdXNoIixbNyxbMTUsInYiXV1dXV1dXV1dXV1dXSxbNTIsInMiLFsxNyxbMTUsImEiXSwiaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIl1dLFs1MiwidCIsWzM5LFsxNyxbMTUsImEiXSwiaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIl0sWzE3LFsxNSwiYSJdLCJhdXRvRW1haWxFbmFibGVkIl0sdHJ1ZV1dLFs0MyxbMTUsIm8iXSwiYXV0b19kZXRlY3QiLFs4LCJlbWFpbCIsWzE1LCJ0Il0sInBob25lIixbMSxbMTUsInMiXSxbMTcsWzE1LCJhIl0sImF1dG9QaG9uZUVuYWJsZWQiXV0sImFkZHJlc3MiLFsxLFsxNSwicyJdLFsxNyxbMTUsImEiXSwiYXV0b0FkZHJlc3NFbmFibGVkIl1dLCJleGNsdWRlX2VsZW1lbnRfc2VsZWN0b3JzIixbMTUsInIiXV1dXV1dLFsyMixbMTcsWzE1LCJhIl0sImlzTWFudWFsRW5hYmxlZCJdLFs0NixbNTMsWzUyLCJyIixbOF1dLFsyMixbMTcsWzE1LCJhIl0sIm1hbnVhbEVtYWlsRW5hYmxlZCJdLFs0NixbNTMsWyJxIixbMTUsInIiXSwiZW1haWwiLCJlbWFpbFZhbHVlIl1dXV0sWzIyLFsxNyxbMTUsImEiXSwibWFudWFsUGhvbmVFbmFibGVkIl0sWzQ2LFs1MyxbInEiLFsxNSwiciJdLCJwaG9uZSIsInBob25lVmFsdWUiXV1dXSxbMjIsWzE3LFsxNSwiYSJdLCJtYW51YWxBZGRyZXNzRW5hYmxlZCJdLFs0NixbNTMsWzUyLCJzIixbOF1dLFsicSIsWzE1LCJzIl0sImZpcnN0X25hbWUiLCJmaXJzdE5hbWVWYWx1ZSJdLFsicSIsWzE1LCJzIl0sImxhc3RfbmFtZSIsImxhc3ROYW1lVmFsdWUiXSxbInEiLFsxNSwicyJdLCJzdHJlZXQiLCJzdHJlZXRWYWx1ZSJdLFsicSIsWzE1LCJzIl0sImNpdHkiLCJjaXR5VmFsdWUiXSxbInEiLFsxNSwicyJdLCJyZWdpb24iLCJyZWdpb25WYWx1ZSJdLFsicSIsWzE1LCJzIl0sImNvdW50cnkiLCJjb3VudHJ5VmFsdWUiXSxbInEiLFsxNSwicyJdLCJwb3N0YWxfY29kZSIsInBvc3RhbENvZGVWYWx1ZSJdLFs0MyxbMTUsInIiXSwibmFtZV9hbmRfYWRkcmVzcyIsWzcsWzE1LCJzIl1dXV1dXSxbNDMsWzE1LCJvIl0sInNlbGVjdG9ycyIsWzE1LCJyIl1dXV1dLFs2NSwiciIsWzE1LCJuIl0sWzQ2LFs1MyxbImkiLFsxNSwiciJdLCJ1c2VyX2RhdGFfc2V0dGluZ3MiLFsxNSwibyJdXSxbNTIsInMiLFsxNixbMTUsIm8iXSwiYXV0b19kZXRlY3QiXV0sWzIyLFsyOCxbMTUsInMiXV0sWzQ2LFs1MyxbNl1dXV0sWzUyLCJ0IixbNTEsIiIsWzcsInUiXSxbNTIsInYiLFsyLFsxNSwidSJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiayJdLCJDWCJdXV1dLFsyMixbMTUsInYiXSxbNDYsWzUzLFszNixbMTUsInYiXV1dXV0sWzUyLCJ3IixbImMiLFsxNyxbMTUsImUiXSwiQlYiXV1dLFs1MiwieCIsWyJjIixbMTcsWzE1LCJlIl0sIkNJIl1dXSxbNDEsInkiXSxbMjIsWyJoIiwiZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSIsImF1dG8iXSxbNDYsWzUzLFszLCJ5IixbImciLFs4LCJleGNsdWRlRWxlbWVudFNlbGVjdG9ycyIsWzE2LFsxNSwicyJdLCJleGNsdWRlX2VsZW1lbnRfc2VsZWN0b3JzIl0sImZpZWxkRmlsdGVycyIsWzgsImVtYWlsIixbMTYsWzE1LCJzIl0sImVtYWlsIl0sInBob25lIixbMTYsWzE1LCJzIl0sInBob25lIl0sImFkZHJlc3MiLFsxNixbMTUsInMiXSwiYWRkcmVzcyJdXSwiaW5jbHVkZVNlbGVjdG9yIixbMTUsInciXSwicmVhZEZyb21EYXRhTGF5ZXIiLFsxNSwieCJdXV1dXV1dLFs1MiwieiIsWzEsWzE1LCJ5Il0sWzE2LFsxNSwieSJdLCJlbGVtZW50cyJdXV0sWzUyLCJhQSIsWzhdXSxbNTIsImFCIixbOF1dLFsyMixbMSxbMTUsInoiXSxbMTgsWzE3LFsxNSwieiJdLCJsZW5ndGgiXSwwXV0sWzQ2LFs1MyxbNDEsImFDIl0sWzQxLCJhRCJdLFszLCJhRCIsWzhdXSxbNTMsWzQxLCJhRSJdLFszLCJhRSIsMF0sWzYzLFs3LCJhRSJdLFsyMyxbMTUsImFFIl0sWzE3LFsxNSwieiJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiYUUiXSxbMywiYUUiLFswLFsxNSwiYUUiXSwxXV1dLFs0NixbNTMsWzUyLCJhRiIsWzE2LFsxNSwieiJdLFsxNSwiYUUiXV1dLFsicCIsWzE1LCJhQSJdLFsxNSwiYUYiXSwiZW1haWwiLFsxNSwiYUIiXV0sWzIyLFsiYyIsWzE3LFsxNSwiZSJdLCJCTyJdXSxbNDYsWzUzLFsicCIsWzE1LCJhQSJdLFsxNSwiYUYiXSwicGhvbmVfbnVtYmVyIixbMTUsImFCIl1dLFszLCJhQyIsWyJwIixbMTUsImFDIl0sWzE1LCJhRiJdLCJmaXJzdF9uYW1lIixbMTUsImFEIl1dXSxbMywiYUMiLFsicCIsWzE1LCJhQyJdLFsxNSwiYUYiXSwibGFzdF9uYW1lIixbMTUsImFEIl1dXSxbMywiYUMiLFsicCIsWzE1LCJhQyJdLFsxNSwiYUYiXSwiY291bnRyeSIsWzE1LCJhRCJdXV0sWzMsImFDIixbInAiLFsxNSwiYUMiXSxbMTUsImFGIl0sInBvc3RhbF9jb2RlIixbMTUsImFEIl1dXV1dXV1dXV0sWzIyLFsxLFsxNSwiYUMiXSxbMjgsWzE2LFsxNSwiYUEiXSwiYWRkcmVzcyJdXV0sWzQ2LFs1MyxbNDMsWzE1LCJhQSJdLCJhZGRyZXNzIixbMTUsImFDIl1dLFsyMixbMTUsIm0iXSxbNDYsWzUzLFs0MyxbMTYsWzE1LCJhQSJdLCJhZGRyZXNzIl0sIl90YWdfbWV0YWRhdGEiLFsxNSwiYUQiXV1dXV1dXV1dXV0sWzIyLFsxLFsxNSwieSJdLFsxNSwieCJdXSxbNDYsWzUzLFs1MiwiYUMiLFsxNixbMTUsInkiXSwiZGF0YUxheWVyU2VhcmNoVGltZSJdXSxbNTIsImFEIixbMTYsWzE1LCJ5Il0sImRhdGFMYXllclNlYXJjaENvdW50Il1dLFsyLFsxNSwidSJdLCJtZXJnZUhpdERhdGFGb3JLZXkiLFs3LFsxNyxbMTUsImwiXSwiRlQiXSxbOCwiZGxzdCIsWzE1LCJhQyJdLCJkbHNjIixbMTUsImFEIl1dXV1dXV0sWzIyLFsxNSwibSJdLFs0NixbNTMsWzIyLFszMCxbMTYsWzE1LCJhQSJdLCJlbWFpbCJdLFsxNixbMTUsImFBIl0sInBob25lX251bWJlciJdXSxbNDYsWzUzLFs0MyxbMTUsImFBIl0sIl90YWdfbWV0YWRhdGEiLFsxNSwiYUIiXV1dXV1dXV0sWzIsWzE1LCJ1Il0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJrIl0sIkNYIl0sWzE1LCJhQSJdXV0sWzM2LFsxNSwiYUEiXV1dXSxbImoiLFsxNSwiciJdLFs1MSwiIixbNywidSJdLFsyLFsxNSwidSJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiayJdLCJDWSJdLFsxNSwidCJdXV1dXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19zZXRfcHJvZHVjdF9zZXR0aW5ncyIsWzQ2LCJhIl0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTIsIl9fbW9kdWxlX2d0YWdTY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLCJhZF9wZXJzb25hbGl6YXRpb24iXSxbNTIsImMiLCJhZF9zdG9yYWdlIl0sWzUyLCJkIiwiYWRfdXNlcl9kYXRhIl0sWzUyLCJlIiwiY29uc2VudF91cGRhdGVkIl0sWzUyLCJmIiwiYXBwX3JlbW92ZSJdLFs1MiwiZyIsImFwcF9zdG9yZV9yZWZ1bmQiXSxbNTIsImgiLCJhcHBfc3RvcmVfc3Vic2NyaXB0aW9uX2NhbmNlbCJdLFs1MiwiaSIsImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY29udmVydCJdLFs1MiwiaiIsImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fcmVuZXciXSxbNTIsImsiLCJjb252ZXJzaW9uIl0sWzUyLCJsIiwicHVyY2hhc2UiXSxbNTIsIm0iLCJmaXJzdF9vcGVuIl0sWzUyLCJuIiwiZmlyc3RfdmlzaXQiXSxbNTIsIm8iLCJndGFnLmNvbmZpZyJdLFs1MiwicCIsImluX2FwcF9wdXJjaGFzZSJdLFs1MiwicSIsInBhZ2VfdmlldyJdLFs1MiwiciIsInNlc3Npb25fc3RhcnQiXSxbNTIsInMiLCJ1c2VyX2VuZ2FnZW1lbnQiXSxbNTIsInQiLCJhZHNfZGF0YV9yZWRhY3Rpb24iXSxbNTIsInUiLCJhbGxvd19hZF9wZXJzb25hbGl6YXRpb25fc2lnbmFscyJdLFs1MiwidiIsImFsbG93X2N1c3RvbV9zY3JpcHRzIl0sWzUyLCJ3IiwiYWxsb3dfZW5oYW5jZWRfY29udmVyc2lvbnMiXSxbNTIsIngiLCJhbGxvd19nb29nbGVfc2lnbmFscyJdLFs1MiwieSIsImF1aWQiXSxbNTIsInoiLCJhd19yZW1hcmtldGluZ19vbmx5Il0sWzUyLCJhQSIsImRpc2NvdW50Il0sWzUyLCJhQiIsImF3X2ZlZWRfY291bnRyeSJdLFs1MiwiYUMiLCJhd19mZWVkX2xhbmd1YWdlIl0sWzUyLCJhRCIsIml0ZW1zIl0sWzUyLCJhRSIsImF3X21lcmNoYW50X2lkIl0sWzUyLCJhRiIsImF3X2Jhc2tldF90eXBlIl0sWzUyLCJhRyIsImNsaWVudF9pZCJdLFs1MiwiYUgiLCJjb252ZXJzaW9uX2Nvb2tpZV9wcmVmaXgiXSxbNTIsImFJIiwiY29udmVyc2lvbl9pZCJdLFs1MiwiYUoiLCJjb252ZXJzaW9uX2xpbmtlciJdLFs1MiwiYUsiLCJjb252ZXJzaW9uX2FwaSJdLFs1MiwiYUwiLCJjb29raWVfZGVwcmVjYXRpb24iXSxbNTIsImFNIiwiY29va2llX2V4cGlyZXMiXSxbNTIsImFOIiwiY29va2llX3ByZWZpeCJdLFs1MiwiYU8iLCJjb29raWVfdXBkYXRlIl0sWzUyLCJhUCIsImNvdW50cnkiXSxbNTIsImFRIiwiY3VycmVuY3kiXSxbNTIsImFSIiwiY3VzdG9tZXJfbGlmZXRpbWVfdmFsdWUiXSxbNTIsImFTIiwiY3VzdG9tZXJfdHlwZSJdLFs1MiwiYVQiLCJkZWJ1Z19tb2RlIl0sWzUyLCJhVSIsInNoaXBwaW5nIl0sWzUyLCJhViIsImVuZ2FnZW1lbnRfdGltZV9tc2VjIl0sWzUyLCJhVyIsImVzdGltYXRlZF9kZWxpdmVyeV9kYXRlIl0sWzUyLCJhWCIsImV2ZW50X2RldmVsb3Blcl9pZF9zdHJpbmciXSxbNTIsImFZIiwiZXZlbnRfaWQiXSxbNTIsImFaIiwiZXZlbnQiXSxbNTIsImJBIiwiXyZhZSJdLFs1MiwiYkIiLCJldmVudF90aW1lb3V0Il0sWzUyLCJiQyIsImV4dF9jbGllbnRfaWQiXSxbNTIsImJEIiwiZmlyc3RfcGFydHlfY29sbGVjdGlvbiJdLFs1MiwiYkUiLCJtYXRjaF9pZCJdLFs1MiwiYkYiLCJnZHByX2FwcGxpZXMiXSxbNTIsImJHIiwiX2d0X21ldGFkYXRhIl0sWzUyLCJiSCIsImdvb2dsZV9hbmFseXNpc19wYXJhbXMiXSxbNTIsImJJIiwiX2dvb2dsZV9uZyJdLFs1MiwiYkoiLCJfb25vIl0sWzUyLCJiSyIsImdwcF9zaWQiXSxbNTIsImJMIiwiZ3BwX3N0cmluZyJdLFs1MiwiYk0iLCJnc2FfZXhwZXJpbWVudF9pZCJdLFs1MiwiYk4iLCJndGFnX2V2ZW50X2ZlYXR1cmVfdXNhZ2UiXSxbNTIsImJPIiwiaWZyYW1lX3N0YXRlIl0sWzUyLCJiUCIsImlnbm9yZV9yZWZlcnJlciJdLFs1MiwiYlEiLCJpc19wYXNzdGhyb3VnaCJdLFs1MiwiYlIiLCJsYW5ndWFnZSJdLFs1MiwiYlMiLCJtZXJjaGFudF9mZWVkX2xhYmVsIl0sWzUyLCJiVCIsIm1lcmNoYW50X2ZlZWRfbGFuZ3VhZ2UiXSxbNTIsImJVIiwibWVyY2hhbnRfaWQiXSxbNTIsImJWIiwibmV3X2N1c3RvbWVyIl0sWzUyLCJiVyIsInBhZ2VfaG9zdG5hbWUiXSxbNTIsImJYIiwicGFnZV9wYXRoIl0sWzUyLCJiWSIsInBhZ2VfcmVmZXJyZXIiXSxbNTIsImJaIiwicGFnZV90aXRsZSJdLFs1MiwiY0EiLCJfcGxhdGludW1fcmVxdWVzdF9zdGF0dXMiXSxbNTIsImNCIiwicXVhbnRpdHkiXSxbNTIsImNDIiwicmVzdHJpY3RlZF9kYXRhX3Byb2Nlc3NpbmciXSxbNTIsImNEIiwic2NyZWVuX3Jlc29sdXRpb24iXSxbNTIsImNFIiwic2VuZF9wYWdlX3ZpZXciXSxbNTIsImNGIiwic2VydmVyX2NvbnRhaW5lcl8zcF9lbnJpY2htZW50Il0sWzUyLCJjRyIsInNlcnZlcl9jb250YWluZXJfdXJsIl0sWzUyLCJjSCIsInNlc3Npb25fZHVyYXRpb24iXSxbNTIsImNJIiwic2Vzc2lvbl9lbmdhZ2VkX3RpbWUiXSxbNTIsImNKIiwic2Vzc2lvbl9pZCJdLFs1MiwiY0siLCJfc2hhcmVkX3VzZXJfaWQiXSxbNTIsImNMIiwiZGVsaXZlcnlfcG9zdGFsX2NvZGUiXSxbNTIsImNNIiwidGVzdG9ubHkiXSxbNTIsImNOIiwidG9wbW9zdF91cmwiXSxbNTIsImNPIiwidHJhbnNhY3Rpb25faWQiXSxbNTIsImNQIiwidHJhbnNhY3Rpb25faWRfc291cmNlIl0sWzUyLCJjUSIsInRyYW5zcG9ydF91cmwiXSxbNTIsImNSIiwidXBkYXRlIl0sWzUyLCJjUyIsIl91c2VyX2FnZW50X2FyY2hpdGVjdHVyZSJdLFs1MiwiY1QiLCJfdXNlcl9hZ2VudF9iaXRuZXNzIl0sWzUyLCJjVSIsIl91c2VyX2FnZW50X2Z1bGxfdmVyc2lvbl9saXN0Il0sWzUyLCJjViIsIl91c2VyX2FnZW50X21vYmlsZSJdLFs1MiwiY1ciLCJfdXNlcl9hZ2VudF9tb2RlbCJdLFs1MiwiY1giLCJfdXNlcl9hZ2VudF9wbGF0Zm9ybSJdLFs1MiwiY1kiLCJfdXNlcl9hZ2VudF9wbGF0Zm9ybV92ZXJzaW9uIl0sWzUyLCJjWiIsIl91c2VyX2FnZW50X3dvdzY0Il0sWzUyLCJkQSIsInVzZXJfZGF0YSJdLFs1MiwiZEIiLCJ1c2VyX2RhdGFfYXV0b19sYXRlbmN5Il0sWzUyLCJkQyIsInVzZXJfZGF0YV9hdXRvX21ldGEiXSxbNTIsImREIiwidXNlcl9kYXRhX2F1dG9fbXVsdGkiXSxbNTIsImRFIiwidXNlcl9kYXRhX2F1dG9fc2VsZWN0b3JzIl0sWzUyLCJkRiIsInVzZXJfZGF0YV9hdXRvX3N0YXR1cyJdLFs1MiwiZEciLCJ1c2VyX2RhdGFfbW9kZSJdLFs1MiwiZEgiLCJ1c2VyX2lkIl0sWzUyLCJkSSIsInVzZXJfcHJvcGVydGllcyJdLFs1MiwiZEoiLCJ1c19wcml2YWN5X3N0cmluZyJdLFs1MiwiZEsiLCJ2YWx1ZSJdLFs1MiwiZEwiLCJfZnBtX3BhcmFtZXRlcnMiXSxbNTIsImRNIiwiX2hvc3RfbmFtZSJdLFs1MiwiZE4iLCJfaW5fcGFnZV9jb21tYW5kIl0sWzUyLCJkTyIsIl9tZWFzdXJlbWVudF90eXBlIl0sWzUyLCJkUCIsIm5vbl9wZXJzb25hbGl6ZWRfYWRzIl0sWzUyLCJkUSIsImNvbnZlcnNpb25fbGFiZWwiXSxbNTIsImRSIiwicGFnZV9sb2NhdGlvbiJdLFs1MiwiZFMiLCJfZXh0cmFjdGVkX2RhdGEiXSxbNTIsImRUIiwiZ2xvYmFsX2RldmVsb3Blcl9pZF9zdHJpbmciXSxbNTIsImRVIiwidGNfcHJpdmFjeV9zdHJpbmciXSxbMzYsWzgsIkEiLFsxNSwiYiJdLCJCIixbMTUsImMiXSwiQyIsWzE1LCJkIl0sIkYiLFsxNSwiZSJdLCJJIixbMTUsImYiXSwiSiIsWzE1LCJnIl0sIksiLFsxNSwiaCJdLCJMIixbMTUsImkiXSwiTSIsWzE1LCJqIl0sIk8iLFsxNSwiayJdLCJBQSIsWzE1LCJsIl0sIkFGIixbMTUsIm0iXSwiQUciLFsxNSwibiJdLCJBSCIsWzE1LCJvIl0sIkFKIixbMTUsInAiXSwiQUsiLFsxNSwicSJdLCJBTSIsWzE1LCJyIl0sIkFRIixbMTUsInMiXSwiQkMiLFsxNSwidCJdLCJCSiIsWzE1LCJ1Il0sIkJLIixbMTUsInYiXSwiQk0iLFsxNSwidyJdLCJCTiIsWzE1LCJ4Il0sIkJUIixbMTUsInkiXSwiQlgiLFsxNSwieiJdLCJCWSIsWzE1LCJhQSJdLCJCWiIsWzE1LCJhQiJdLCJDQSIsWzE1LCJhQyJdLCJDQiIsWzE1LCJhRCJdLCJDQyIsWzE1LCJhRSJdLCJDRCIsWzE1LCJhRiJdLCJDTCIsWzE1LCJhRyJdLCJDUSIsWzE1LCJhSCJdLCJDUiIsWzE1LCJhSSJdLCJLRyIsWzE1LCJkUSJdLCJDUyIsWzE1LCJhSiJdLCJDVSIsWzE1LCJhSyJdLCJDVyIsWzE1LCJhTCJdLCJDWSIsWzE1LCJhTSJdLCJEQyIsWzE1LCJhTiJdLCJERCIsWzE1LCJhTyJdLCJERSIsWzE1LCJhUCJdLCJERiIsWzE1LCJhUSJdLCJERyIsWzE1LCJhUiJdLCJESCIsWzE1LCJhUyJdLCJETiIsWzE1LCJhVCJdLCJFQSIsWzE1LCJhVSJdLCJFQyIsWzE1LCJhViJdLCJFRyIsWzE1LCJhVyJdLCJFSiIsWzE1LCJhWCJdLCJFSyIsWzE1LCJhWSJdLCJFTiIsWzE1LCJhWiJdLCJFTyIsWzE1LCJiQSJdLCJFUSIsWzE1LCJiQiJdLCJLSSIsWzE1LCJkUyJdLCJFVSIsWzE1LCJiQyJdLCJFVyIsWzE1LCJiRCJdLCJGRSIsWzE1LCJiRSJdLCJGTyIsWzE1LCJiRiJdLCJGUCIsWzE1LCJiRyJdLCJLSiIsWzE1LCJkVCJdLCJGVCIsWzE1LCJiSCJdLCJGVSIsWzE1LCJiSSJdLCJGViIsWzE1LCJiSiJdLCJGWSIsWzE1LCJiSyJdLCJGWiIsWzE1LCJiTCJdLCJHQiIsWzE1LCJiTSJdLCJHQyIsWzE1LCJiTiJdLCJHRSIsWzE1LCJiTyJdLCJHRiIsWzE1LCJiUCJdLCJHSyIsWzE1LCJiUSJdLCJHTSIsWzE1LCJiUiJdLCJHVCIsWzE1LCJiUyJdLCJHVSIsWzE1LCJiVCJdLCJHViIsWzE1LCJiVSJdLCJHWiIsWzE1LCJiViJdLCJIQyIsWzE1LCJiVyJdLCJLSCIsWzE1LCJkUiJdLCJIRCIsWzE1LCJiWCJdLCJIRSIsWzE1LCJiWSJdLCJIRiIsWzE1LCJiWiJdLCJITiIsWzE1LCJjQSJdLCJIUCIsWzE1LCJjQiJdLCJIVCIsWzE1LCJjQyJdLCJIWCIsWzE1LCJjRCJdLCJJQSIsWzE1LCJjRSJdLCJJQyIsWzE1LCJjRiJdLCJJRCIsWzE1LCJjRyJdLCJJRiIsWzE1LCJjSCJdLCJJSCIsWzE1LCJjSSJdLCJJSSIsWzE1LCJjSiJdLCJJSyIsWzE1LCJjSyJdLCJJTCIsWzE1LCJjTCJdLCJLSyIsWzE1LCJkVSJdLCJJUCIsWzE1LCJjTSJdLCJJUiIsWzE1LCJjTiJdLCJJVSIsWzE1LCJjTyJdLCJJViIsWzE1LCJjUCJdLCJJVyIsWzE1LCJjUSJdLCJJWSIsWzE1LCJjUiJdLCJKQiIsWzE1LCJjUyJdLCJKQyIsWzE1LCJjVCJdLCJKRCIsWzE1LCJjVSJdLCJKRSIsWzE1LCJjViJdLCJKRiIsWzE1LCJjVyJdLCJKRyIsWzE1LCJjWCJdLCJKSCIsWzE1LCJjWSJdLCJKSSIsWzE1LCJjWiJdLCJKSiIsWzE1LCJkQSJdLCJKSyIsWzE1LCJkQiJdLCJKTCIsWzE1LCJkQyJdLCJKTSIsWzE1LCJkRCJdLCJKTiIsWzE1LCJkRSJdLCJKTyIsWzE1LCJkRiJdLCJKUCIsWzE1LCJkRyJdLCJKUiIsWzE1LCJkSCJdLCJKUyIsWzE1LCJkSSJdLCJKVSIsWzE1LCJkSiJdLCJKViIsWzE1LCJkSyJdLCJKWCIsWzE1LCJkTCJdLCJKWSIsWzE1LCJkTSJdLCJKWiIsWzE1LCJkTiJdLCJLQyIsWzE1LCJkTyJdLCJLRCIsWzE1LCJkUCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLCJhYm9ydF93aXRob3V0X2ZhaWwiXSxbNTIsImMiLCJhY2NlcHRfYnlfZGVmYXVsdCJdLFs1MiwiZCIsImFsbG93X2FkX3BlcnNvbmFsaXphdGlvbiJdLFs1MiwiZSIsImNvbnNlbnRfc3RhdGUiXSxbNTIsImYiLCJjb25zZW50X3VwZGF0ZWQiXSxbNTIsImciLCJjb252ZXJzaW9uX2xpbmtlcl9lbmFibGVkIl0sWzUyLCJoIiwiY29udmVyc2lvbl9tYXJraW5nX2NhbGxlZCJdLFs1MiwiaSIsImNvb2tpZV9vcHRpb25zIl0sWzUyLCJqIiwiZGVkdXBlX2lkIl0sWzUyLCJrIiwiZW1fZXZlbnQiXSxbNTIsImwiLCJldmVudF9wcm92ZW5hbmNlIl0sWzUyLCJtIiwiZXZlbnRfc291cmNlIl0sWzUyLCJuIiwiZXZlbnRfc3RhcnRfdGltZXN0YW1wX21zIl0sWzUyLCJvIiwiZXZlbnRfdXNhZ2UiXSxbNTIsInAiLCJleHRyYV90YWdfZXhwZXJpbWVudF9pZHMiXSxbNTIsInEiLCJmb3JtX2V2ZW50X2NhbmNlbGVkIl0sWzUyLCJyIiwiZ2E0X2NvbGxlY3Rpb25fc3ViZG9tYWluIl0sWzUyLCJzIiwiZ3RtX2V4dHJhY3RlZF9kYXRhIl0sWzUyLCJ0IiwiaGFuZGxlX2ludGVybmFsbHkiXSxbNTIsInUiLCJoYXNfZ2FfY29udmVyc2lvbl9jb25zZW50cyJdLFs1MiwidiIsImhpdF90eXBlIl0sWzUyLCJ3IiwiaGl0X3R5cGVfb3ZlcnJpZGUiXSxbNTIsIngiLCJpZ25vcmVfZHVwZV9jb25maWciXSxbNTIsInkiLCJpc19jb252ZXJzaW9uIl0sWzUyLCJ6IiwiaXNfZXh0ZXJuYWxfZXZlbnQiXSxbNTIsImFBIiwiaXNfZmlyc3RfdmlzaXQiXSxbNTIsImFCIiwiaXNfZmlyc3RfdmlzaXRfY29udmVyc2lvbiJdLFs1MiwiYUMiLCJpc19mcG1fZW5jcnlwdGlvbiJdLFs1MiwiYUQiLCJpc19mcG1fc3BsaXQiXSxbNTIsImFFIiwiaXNfZ2NwX2Jyb3dzZXIiXSxbNTIsImFGIiwiaXNfZ29vZ2xlX21lYXN1cmVtZW50X2FsbG93ZWQiXSxbNTIsImFHIiwiaXNfc2VydmVyX3NpZGVfZGVzdGluYXRpb24iXSxbNTIsImFIIiwiaXNfc2Vzc2lvbl9zdGFydCJdLFs1MiwiYUkiLCJpc19zZXNzaW9uX3N0YXJ0X2NvbnZlcnNpb24iXSxbNTIsImFKIiwiaXNfc2d0bV9nYV9hZHNfY29udmVyc2lvbl9zdHVkeV9jb250cm9sX2dyb3VwIl0sWzUyLCJhSyIsImlzX3NndG1fcHJlaGl0Il0sWzUyLCJhTCIsImlzX3NwbGl0X2NvbnZlcnNpb24iXSxbNTIsImFNIiwiaXNfc3luIl0sWzUyLCJhTiIsImlzX3Rlc3RfZXZlbnQiXSxbNTIsImFPIiwicHJlaGl0X2Zvcl9yZXRyeSJdLFs1MiwiYVAiLCJyZWRhY3RfYWRzX2RhdGEiXSxbNTIsImFRIiwicmVkYWN0X2NsaWNrX2lkcyJdLFs1MiwiYVIiLCJzZW5kX2NjbV9wYXJhbGxlbF9waW5nIl0sWzUyLCJhUyIsInNlbmRfdXNlcl9kYXRhX2hpdCJdLFs1MiwiYVQiLCJzcGVjdWxhdGl2ZSJdLFs1MiwiYVUiLCJzeW5fb3JfbW9kIl0sWzUyLCJhViIsInRyYW5zaWVudF9lY3NpZCJdLFs1MiwiYVciLCJ1c2VyX2RhdGEiXSxbNTIsImFYIiwidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljIl0sWzUyLCJhWSIsInVzZXJfZGF0YV9mcm9tX2F1dG9tYXRpY19nZXR0ZXIiXSxbNTIsImFaIiwidXNlcl9kYXRhX2Zyb21fY29kZSJdLFs1MiwiYkEiLCJ1c2VyX2RhdGFfZnJvbV9tYW51YWwiXSxbMzYsWzgsIkEiLFsxNSwiYiJdLCJCIixbMTUsImMiXSwiRiIsWzE1LCJkIl0sIk0iLFsxNSwiZSJdLCJOIixbMTUsImYiXSwiTyIsWzE1LCJnIl0sIlAiLFsxNSwiaCJdLCJRIixbMTUsImkiXSwiUyIsWzE1LCJqIl0sIlQiLFsxNSwiayJdLCJaIixbMTUsImwiXSwiQUEiLFsxNSwibSJdLCJBQiIsWzE1LCJuIl0sIkFDIixbMTUsIm8iXSwiQUQiLFsxNSwicCJdLCJBSiIsWzE1LCJxIl0sIkFLIixbMTUsInIiXSwiQU4iLFsxNSwicyJdLCJBTyIsWzE1LCJ0Il0sIkFQIixbMTUsInUiXSwiQVEiLFsxNSwidiJdLCJBUiIsWzE1LCJ3Il0sIkFTIixbMTUsIngiXSwiQVYiLFsxNSwieSJdLCJBWSIsWzE1LCJ6Il0sIkFaIixbMTUsImFBIl0sIkJBIixbMTUsImFCIl0sIkJDIixbMTUsImFDIl0sIkJEIixbMTUsImFEIl0sIkJFIixbMTUsImFFIl0sIkJGIixbMTUsImFGIl0sIkJLIixbMTUsImFHIl0sIkJMIixbMTUsImFIIl0sIkJNIixbMTUsImFJIl0sIkJOIixbMTUsImFKIl0sIkJPIixbMTUsImFLIl0sIkJRIixbMTUsImFMIl0sIkJSIixbMTUsImFNIl0sIkJTIixbMTUsImFOIl0sIkJZIixbMTUsImFPIl0sIkNCIixbMTUsImFQIl0sIkNDIixbMTUsImFRIl0sIkNFIixbMTUsImFSIl0sIkNOIixbMTUsImFTIl0sIkNRIixbMTUsImFUIl0sIkNUIixbMTUsImFVIl0sIkNVIixbMTUsImFWIl0sIkNXIixbMTUsImFXIl0sIkNYIixbMTUsImFYIl0sIkNZIixbMTUsImFZIl0sIkNaIixbMTUsImFaIl0sIkRBIixbMTUsImJBIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9mZWF0dXJlRmxhZ3MiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLDQ1XSxbNTIsImMiLDQ2XSxbNTIsImQiLDQ3XSxbNTIsImUiLDE3NF0sWzUyLCJmIiwyNzZdLFszNixbOCwiRiIsWzE1LCJiIl0sIkciLFsxNSwiYyJdLCJIIixbMTUsImQiXSwiViIsWzE1LCJlIl0sIkFEIixbMTUsImYiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2ZlYXR1cmVzIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiw0MjVdLFs1MiwiYyIsNDM1XSxbNTIsImQiLDQ4OF0sWzUyLCJlIiw0ODldLFs1MiwiZiIsNDk4XSxbNTIsImciLDUwM10sWzUyLCJoIiw1MDRdLFs1MiwiaSIsNTA2XSxbNTIsImoiLDUyM10sWzUyLCJrIiw1MzJdLFs1MiwibCIsNTUzXSxbNTIsIm0iLDU2OF0sWzUyLCJuIiw1NzddLFs1MiwibyIsNTgxXSxbNTIsInAiLDU4M10sWzUyLCJxIiw1OTJdLFs1MiwiciIsNTk0XSxbNTIsInMiLDU5OV0sWzM2LFs4LCJBViIsWzE1LCJrIl0sIkFEIixbMTUsImQiXSwiQ0kiLFsxNSwicSJdLCJCViIsWzE1LCJuIl0sIkJPIixbMTUsIm0iXSwiQ0siLFsxNSwiciJdLCJDUCIsWzE1LCJzIl0sIkFNIixbMTUsImciXSwiQloiLFsxNSwibyJdLCJBVCIsWzE1LCJqIl0sIkFFIixbMTUsImUiXSwiQU4iLFsxNSwiaCJdLCJMIixbMTUsImMiXSwiQkMiLFsxNSwibCJdLCJBTyIsWzE1LCJpIl0sIkNCIixbMTUsInAiXSwiQUkiLFsxNSwiZiJdLCJJIixbMTUsImIiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2Nyb3NzQ29udGFpbmVyU2NoZW1hIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwiY29va2llX2RlcHJlY2F0aW9uX2xhYmVsIl0sWzUyLCJjIiwicGxkIl0sWzUyLCJkIiwic2hhcmVkX3VzZXJfaWQiXSxbNTIsImUiLCJzaGFyZWRfdXNlcl9pZF9yZXF1ZXN0ZWQiXSxbNTIsImYiLCJzaGFyZWRfdXNlcl9pZF9zb3VyY2UiXSxbMzYsWzgsIkIiLFsxNSwiYiJdLCJOIixbMTUsImMiXSwiUyIsWzE1LCJkIl0sIlQiLFsxNSwiZSJdLCJVIixbMTUsImYiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX3BsYXRmb3JtU2NoZW1hIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwxXSxbNTIsImMiLDJdLFs1MiwiZCIsM10sWzUyLCJlIiw0XSxbNTIsImYiLDVdLFs1MiwiZyIsNl0sWzM2LFs4LCJBIixbMTUsImIiXSwiRiIsWzE1LCJnIl0sIkIiLFsxNSwiYyJdLCJDIixbMTUsImQiXSwiRCIsWzE1LCJlIl0sIkUiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLCJhZV9ibG9ja19kb3dubG9hZHMiXSxbNTIsImMiLCJhZV9ibG9ja19mb3JtIl0sWzUyLCJkIiwiYWVfYmxvY2tfaGlzdG9yeSJdLFs1MiwiZSIsImFlX2Jsb2NrX291dGJvdW5kX2NsaWNrIl0sWzUyLCJmIiwiYWVfYmxvY2tfc2Nyb2xsIl0sWzUyLCJnIiwiYWVfYmxvY2tfdmlkZW8iXSxbMzYsWzgsIkEiLFsxNSwiYiJdLCJCIixbMTUsImMiXSwiQyIsWzE1LCJkIl0sIkQiLFsxNSwiZSJdLCJFIixbMTUsImYiXSwiRiIsWzE1LCJnIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9jY2RFbVNpdGVTZWFyY2hBY3Rpdml0eSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiYiIsWzQ2LCJkIiwiZSJdLFs1MiwiZiIsWzIsWzMwLFsxNSwiZCJdLCIiXSwic3BsaXQiLFs3LCIsIl1dXSxbNTMsWzQxLCJnIl0sWzMsImciLDBdLFs2MyxbNywiZyJdLFsyMyxbMTUsImciXSxbMTcsWzE1LCJmIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJnIl0sWzMsImciLFswLFsxNSwiZyJdLDFdXV0sWzQ2LFs1MyxbNTIsImgiLFsiZSIsWzIsWzE2LFsxNSwiZiJdLFsxNSwiZyJdXSwidHJpbSIsWzddXV1dLFsyMixbMjEsWzE1LCJoIl0sWzQ0XV0sWzQ2LFs1MyxbMzYsWzE1LCJoIl1dXV1dXV1dXV0sWzUwLCJjIixbNDYsImQiLCJlIiwiZiJdLFs1MiwiZyIsWzgsInNlYXJjaF90ZXJtIixbMTUsImQiXV1dLFs1MiwiaCIsWzIsWzMwLFsxNSwiZSJdLCIiXSwic3BsaXQiLFs3LCIsIl1dXSxbNTMsWzQxLCJpIl0sWzMsImkiLDBdLFs2MyxbNywiaSJdLFsyMyxbMTUsImkiXSxbMTcsWzE1LCJoIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJpIl0sWzMsImkiLFswLFsxNSwiaSJdLDFdXV0sWzQ2LFs1MyxbNTIsImoiLFsyLFsxNixbMTUsImgiXSxbMTUsImkiXV0sInRyaW0iLFs3XV1dLFs1MiwiayIsWyJmIixbMTUsImoiXV1dLFsyMixbMjEsWzE1LCJrIl0sWzQ0XV0sWzQ2LFs1MyxbNDMsWzE1LCJnIl0sWzAsInFfIixbMTUsImoiXV0sWzE1LCJrIl1dXV1dXV1dXSxbMzYsWzE1LCJnIl1dXSxbMzYsWzgsIkIiLFsxNSwiYyJdLCJBIixbMTUsImIiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX3BsYXRmb3JtRGV0ZWN0aW9uIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJvIixbNDZdLFs2OCwidyIsWzUzLFsyMixbMSxbMjgsWyJlIixbMTcsWzE1LCJoIl0sIkFJIl1dXSxbMjgsWyJlIixbMTcsWzE1LCJoIl0sIkkiXV1dXSxbNDYsWzUzLFszNixbN11dXV1dLFs1MiwidyIsWyJiIixbMTcsWzE1LCJnIl0sIk4iXV1dLFsyMixbIm4iLFsxNSwidyJdXSxbNDYsWzUzLFszNixbMTUsInciXV1dXV0sWzUyLCJ4IixbN11dLFsyMixbInAiXSxbNDYsWzIsWzE1LCJ4Il0sInB1c2giLFs3LFsxNyxbMTUsImoiXSwiQSJdXV1dXSxbMjIsWyJxIl0sWzQ2LFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJqIl0sIkIiXV1dXV0sWzIyLFsiciJdLFs0NixbMixbMTUsIngiXSwicHVzaCIsWzcsWzE3LFsxNSwiaiJdLCJGIl1dXV1dLFsyMixbInUiXSxbNDYsWzIsWzE1LCJ4Il0sInB1c2giLFs3LFsxNyxbMTUsImoiXSwiRCJdXV1dXSxbMjIsWyJzIl0sWzQ2LFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJqIl0sIkUiXV1dXV0sWzIyLFsidCJdLFs0NixbMixbMTUsIngiXSwicHVzaCIsWzcsWzE3LFsxNSwiaiJdLCJDIl1dXV1dLFsyMixbImwiXSxbNDYsWzUzLFsiZiIsWzE3LFsxNSwiZyJdLCJOIl0sWzE1LCJ4Il0sdHJ1ZV1dXV0sWzM2LFsxNSwieCJdXV0sWzQ2XV0sWzM2LFs3XV1dLFs1MCwicCIsWzQ2XSxbNjgsInciLFs1MyxbMzYsWzI4LFsyOCxbImMiLCJzY3JpcHRbZGF0YS1yZXF1aXJlbW9kdWxlXj1cIm1hZ2UvXCJdIl1dXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwicSIsWzQ2XSxbNjgsInciLFs1MyxbNTIsInciLFsibSIsIllYTnpaWFJ6TG5OeGRXRnlaWE53WVdObExtTnZiUzg9Il1dLFsyMixbMjgsWzE1LCJ3Il1dLFs0NixbMzYsZmFsc2VdXV0sWzM2LFsyOCxbMjgsWyJjIixbMCxbMCwic2NyaXB0W3NyY149XCIvLyIsWzE1LCJ3Il1dLCJcIl0iXV1dXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwiciIsWzQ2XSxbMjIsWzI4LFsiZSIsWzE3LFsxNSwiaCJdLCJJIl1dXSxbNDYsWzUzLFszNixmYWxzZV1dXV0sWzY4LCJ3IixbNTMsWzUyLCJ3IixbIm0iLCJjMmh2Y0dsbWVTNWpiMjA9Il1dLFs1MiwieCIsWyJtIiwiYzJodmNHbG1lV05rYmk1amIyMD0iXV0sWzIyLFszMCxbMjgsWzE1LCJ3Il1dLFsyOCxbMTUsIngiXV1dLFs0NixbMzYsZmFsc2VdXV0sWzM2LFsyOCxbMjgsWyJjIixbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCxbMCwic2NyaXB0W3NyYyo9XCJjZG4uIixbMTUsInciXV0sIlwiXSwiXSwibWV0YVtwcm9wZXJ0eT1cIm9nOmltYWdlXCJdW2NvbnRlbnQqPVwiY2RuLiJdLFsxNSwidyJdXSwiXCJdLCJdLCJsaW5rW3JlbD1cInByZWNvbm5lY3RcIl1baHJlZio9XCJjZG4uIl0sWzE1LCJ3Il1dLCJcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cImZvbnRzLiJdLFsxNSwieCJdXSwiXCJdLCJdLCJsaW5rW3JlbD1cInByZWNvbm5lY3RcIl1baHJlZio9XCJpdGVyYWJsZS1zaG9waWZ5XCJdLCJdLCJsaW5rW3JlbD1cInByZWNvbm5lY3RcIl1baHJlZio9XCJ2LiJdLFsxNSwidyJdXSwiXCJdIl1dXV1dXSxbNDZdXSxbMzYsZmFsc2VdXSxbNTAsInMiLFs0Nl0sWzY4LCJ3IixbNTMsWzUyLCJ3IixbImQiLCJwcm90b2NvbCJdXSxbNTIsIngiLFsiZCIsImhvc3QiXV0sWzUyLCJ5IixbMzksWzEsWzE1LCJ3Il0sWzE1LCJ4Il1dLFswLFswLFswLFswLCJbc3JjXj1cIiIsWzE1LCJ3Il1dLCI6Ly8iXSxbMTUsIngiXV0sIi93cC1jb250ZW50XCJdLCJdLCIiXV0sWzUyLCJ6IixbIm0iLCJMbmR2Y21Sd2NtVnpjeTVqYjIwPSJdXSxbNTIsImFBIixbIm0iLCJMeTl6TG5jdWIzSm4iXV0sWzIyLFszMCxbMjgsWzE1LCJ6Il1dLFsyOCxbMTUsImFBIl1dXSxbNDYsWzM2LGZhbHNlXV1dLFszNixbMzAsWyJ2IixbMTUsIngiXSxbMTUsInoiXV0sWzI4LFsyOCxbImMiLFswLFswLFswLFswLFsxNSwieSJdLCJtZXRhW25hbWU9XCJnZW5lcmF0b3JcIl1bY29udGVudF49XCJXb3JkUHJlc3MgXCJdLCJdLCJsaW5rW3JlbD1cImRucy1wcmVmZXRjaFwiXVtocmVmPVwiIl0sWzE1LCJhQSJdXSwiXCJdIl1dXV1dXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJ0IixbNDZdLFs2OCwidyIsWzUzLFs1MiwidyIsWzI4LFsyOCxbImMiLFswLCJbY2xhc3MqPVwid29vY29tbWVyY2VcIl0sIiwibWV0YVtuYW1lPVwiZ2VuZXJhdG9yXCJdW2NvbnRlbnRePVwiV29vQ29tbWVyY2UgXCJdIl1dXV1dLFsyMixbMTUsInciXSxbNDYsWzUzXV1dLFszNixbMTUsInciXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwidSIsWzQ2XSxbNjgsInciLFs1MyxbNTIsInciLFsyOCxbMjgsWyJjIixbMCxbMCwic2NyaXB0W3NyYyo9XCJ3b29jb21tZXJjZVwiXSwiLCJsaW5rW2hyZWYqPVwid29vY29tbWVyY2VcIl0sIl0sIltjbGFzc3w9XCJ3b29jb21tZXJjZVwiXSJdXV1dXSxbMjIsWzE1LCJ3Il0sWzQ2LFs1M11dXSxbMzYsWzE1LCJ3Il1dXSxbNDZdXSxbMzYsZmFsc2VdXSxbNTAsInYiLFs0NiwidyIsIngiXSxbMzYsWzEsWzE5LFsxNyxbMTUsInciXSwibGVuZ3RoIl0sWzE3LFsxNSwieCJdLCJsZW5ndGgiXV0sWzIwLFsyLFsxNSwidyJdLCJzdWJzdHJpbmciLFs3LFszNyxbMTcsWzE1LCJ3Il0sImxlbmd0aCJdLFsxNyxbMTUsIngiXSwibGVuZ3RoIl1dLFsxNyxbMTUsInciXSwibGVuZ3RoIl1dXSxbMTUsIngiXV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5jb3B5RnJvbUNyb3NzQ29udGFpbmVyRGF0YSJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLmdldEZpcnN0RWxlbWVudEJ5Q3NzU2VsZWN0b3IiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJnZXRVcmwiXV0sWzUyLCJlIixbInJlcXVpcmUiLCJpbnRlcm5hbC5pc0ZlYXR1cmVFbmFibGVkIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2V0SW5Dcm9zc0NvbnRhaW5lckRhdGEiXV0sWzUyLCJnIixbMTUsIl9fbW9kdWxlX2Nyb3NzQ29udGFpbmVyU2NoZW1hIl1dLFs1MiwiaCIsWzE1LCJfX21vZHVsZV9mZWF0dXJlcyJdXSxbNTIsImkiLFsxNSwiX19tb2R1bGVfZmVhdHVyZUZsYWdzIl1dLFs1MiwiaiIsWzE1LCJfX21vZHVsZV9wbGF0Zm9ybVNjaGVtYSJdXSxbNTIsImsiLFsicmVxdWlyZSIsImdldFR5cGUiXV0sWzUyLCJsIixbInJlcXVpcmUiLCJpbnRlcm5hbC5pc0RvbVJlYWR5Il1dLFs1MiwibSIsWyJyZXF1aXJlIiwiZnJvbUJhc2U2NCJdXSxbNTIsIm4iLFs1MSwiIixbNywidyJdLFszNixbMjAsWyJrIixbMTUsInciXV0sImFycmF5Il1dXV0sWzM2LFs4LCJBIixbMTUsIm8iXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtRG93bmxvYWRBY3Rpdml0eSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiaCIsWzQ2LCJpIiwiaiJdLFsiYyIsWzE1LCJpIl0sWzUxLCIiLFs3LCJrIl0sWzIyLFszMCxbMjEsWzIsWzE1LCJrIl0sImdldEV2ZW50TmFtZSIsWzddXSxbMTUsImciXV0sWzI4LFsyLFsxNSwiayJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJUIl1dXV1dLFs0NixbNTMsWzM2XV1dXSxbMjIsWyJiIixbMTUsImkiXSxbMTUsImYiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMixbMTUsImsiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQ1EiXSxmYWxzZV1dLFsyMixbMjgsWzE1LCJqIl1dLFs0NixbNTMsWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJsaW5rX2lkIixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJsaW5rX3VybCIsWzQ0XV1dLFsyLFsxNSwiayJdLCJzZXRIaXREYXRhIixbNywibGlua190ZXh0IixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJmaWxlX25hbWUiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImZpbGVfZXh0ZW5zaW9uIixbNDRdXV1dXV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJmIixbMTcsWzE1LCJlIl0sIkEiXV0sWzUyLCJnIiwiZmlsZV9kb3dubG9hZCJdLFszNixbOCwiQSIsWzE1LCJoIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9lbmhhbmNlZE1lYXN1cmVtZW50IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJlIixbNDYsImciXSxbNTIsImgiLFsiYiJdXSxbNTIsImkiLFs3XV0sWzUzLFs0MSwiaiJdLFszLCJqIiwwXSxbNjMsWzcsImoiXSxbMjMsWzE1LCJqIl0sWzE3LFsxNSwiaCJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiaiJdLFszLCJqIixbMCxbMTUsImoiXSwxXV1dLFs0NixbNTMsWzUyLCJrIixbMTYsWzE1LCJoIl0sWzE1LCJqIl1dXSxbMjIsWyJkIixbMTUsImciXSxbMTUsImsiXV0sWzQ2LFs1MyxbMixbMTUsImkiXSwicHVzaCIsWzcsWzE1LCJrIl1dXV1dXV1dXV0sWzM2LFsxNSwiaSJdXV0sWzUwLCJmIixbNDYsImciLCJoIl0sWzUyLCJpIixbMzAsWzE1LCJoIl0sWzhdXV0sWzQzLFsxNSwiaSJdLFsxNyxbMTUsImMiXSwiVCJdLHRydWVdLFs0MyxbMTUsImkiXSxbMTcsWzE1LCJjIl0sIkNRIl0sdHJ1ZV0sWzQzLFsxNSwiaSJdLFsxNyxbMTUsImMiXSwiWiJdLCJhIl0sWzQzLFsxNSwiZyJdLCJldmVudE1ldGFkYXRhIixbMTUsImkiXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0RGVzdGluYXRpb25JZHMiXV0sWzUyLCJjIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuY2xhaW1EZXN0aW5hdGlvbiJdXSxbMzYsWzgsIkEiLFsxNSwiZSJdLCJCIixbMTUsImYiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtT3V0Ym91bmRDbGlja0FjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfaWQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfY2xhc3NlcyIsWzQ0XV1dLFsyLFsxNSwiayJdLCJzZXRIaXREYXRhIixbNywibGlua191cmwiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfZG9tYWluIixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJvdXRib3VuZCIsWzQ0XV1dXV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZiIsWzE3LFsxNSwiZSJdLCJEIl1dLFs1MiwiZyIsImNsaWNrIl0sWzM2LFs4LCJBIixbMTUsImgiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtUGFnZVZpZXdBY3Rpdml0eSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiaiIsWzQ2LCJrIl0sWyJjIixbMTUsImsiXSxbNTEsIiIsWzcsImwiXSxbMjIsWzMwLFsyMSxbMixbMTUsImwiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiaSJdXSxbMjgsWzIsWzE1LCJsIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJlIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiayJdLFsxNSwiaCJdXSxbNDYsWzUzLFsyLFsxNSwibCJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyMixbMjgsWzIsWzE1LCJsIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJlIl0sIkJPIl1dXV0sWzQ2LFs1MyxbImQiLFsxNSwiayJdLFsxNyxbMTUsImYiXSwiSEUiXSxbMixbMTUsImwiXSwiZ2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiZiJdLCJIRSJdXV1dXV1dLFsyLFsxNSwibCJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZSJdLCJDUSJdLGZhbHNlXV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImYiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJoIixbMTcsWzE1LCJnIl0sIkMiXV0sWzUyLCJpIixbMTcsWzE1LCJmIl0sIkFLIl1dLFszNixbOCwiQSIsWzE1LCJqIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9jY2RFbVNjcm9sbEFjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsInBlcmNlbnRfc2Nyb2xsZWQiLFs0NF1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNyxbMTUsImUiXSwiRSJdXSxbNTIsImciLCJzY3JvbGwiXSxbMzYsWzgsIkEiLFsxNSwiaCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1WaWRlb0FjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJqIixbNDYsImsiLCJsIl0sWyJjIixbMTUsImsiXSxbNTEsIiIsWzcsIm0iXSxbNTIsIm4iLFsyLFsxNSwibSJdLCJnZXRFdmVudE5hbWUiLFs3XV1dLFs1MiwibyIsWzMwLFszMCxbMjAsWzE1LCJuIl0sWzE1LCJnIl1dLFsyMCxbMTUsIm4iXSxbMTUsImgiXV1dLFsyMCxbMTUsIm4iXSxbMTUsImkiXV1dXSxbMjIsWzMwLFsyOCxbMTUsIm8iXV0sWzI4LFsyLFsxNSwibSJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJUIl1dXV1dLFs0NixbNTMsWzM2XV1dXSxbMjIsWyJiIixbMTUsImsiXSxbMTUsImYiXV0sWzQ2LFs1MyxbMixbMTUsIm0iXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMixbMTUsIm0iXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQ1EiXSxmYWxzZV1dLFsyMixbMjgsWzE1LCJsIl1dLFs0NixbNTMsWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19jdXJyZW50X3RpbWUiLFs0NF1dXSxbMixbMTUsIm0iXSwic2V0SGl0RGF0YSIsWzcsInZpZGVvX2R1cmF0aW9uIixbNDRdXV0sWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19wZXJjZW50IixbNDRdXV0sWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19wcm92aWRlciIsWzQ0XV1dLFsyLFsxNSwibSJdLCJzZXRIaXREYXRhIixbNywidmlkZW9fdGl0bGUiLFs0NF1dXSxbMixbMTUsIm0iXSwic2V0SGl0RGF0YSIsWzcsInZpZGVvX3VybCIsWzQ0XV1dLFsyLFsxNSwibSJdLCJzZXRIaXREYXRhIixbNywidmlzaWJsZSIsWzQ0XV1dXV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZiIsWzE3LFsxNSwiZSJdLCJGIl1dLFs1MiwiZyIsInZpZGVvX3N0YXJ0Il0sWzUyLCJoIiwidmlkZW9fcHJvZ3Jlc3MiXSxbNTIsImkiLCJ2aWRlb19jb21wbGV0ZSJdLFszNixbOCwiQSIsWzE1LCJqIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV90YXNrU2V0VGVzdEhpdFBhcmFtcyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiZiIsWzQ2LCJnIl0sWzIyLFsyLFsxNSwiZyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZSJdLCJCUyJdXV0sWzQ2LFs1MyxbMixbMTUsImciXSwic2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJJUCJdLCIxIl1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJjIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbMzYsWzgsIkEiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfdGFza1BsYXRmb3JtRGV0ZWN0aW9uIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJkIixbNDYsImUiXSxbNTIsImYiLFsyLFsxNSwiYyJdLCJBIixbN11dXSxbMjIsWzEsWzE1LCJmIl0sWzE4LFsxNyxbMTUsImYiXSwibGVuZ3RoIl0sMF1dLFs0NixbNTMsWzIsWzE1LCJlIl0sIm1lcmdlSGl0RGF0YUZvcktleSIsWzcsWzE3LFsxNSwiYiJdLCJGVCJdLFs4LCJwbGYiLFsyLFsxNSwiZiJdLCJqb2luIixbNywiLiJdXV1dXV1dXV0sWzUyLCJiIixbMTUsIl9fbW9kdWxlX2d0YWdTY2hlbWEiXV0sWzUyLCJjIixbMTUsIl9fbW9kdWxlX3BsYXRmb3JtRGV0ZWN0aW9uIl1dLFszNixbOCwiQSIsWzE1LCJkIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAKXQosImVudGl0aWVzIjp7CiJfX2MiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX2Rvd25sb2FkIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX291dGJvdW5kX2NsaWNrIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX3BhZ2VfdmlldyI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9lbV9zY3JvbGwiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZW1fc2l0ZV9zZWFyY2giOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZW1fdmlkZW8iOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZ2FfZmlyc3QiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZ2FfbGFzdCI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2UiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19nY3QiOnsiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19vZ3RfMXBfZGF0YV92MiI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX3NldF9wcm9kdWN0X3NldHRpbmdzIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CgoKfQosImJsb2IiOnsiMSI6IjEiLCIxMCI6IkctTTM3NEpGNDM0SiIsIjE0IjoiNjdtMCIsIjE1IjoiMSIsIjE2IjoiQ2hFSThJT2Mwd1lRZ09tc2t2dWx4S3FSQVJJZEFMMlBZWllWU0E4Ung0cmdOa2djeXI0elJmanhWa1hQSWtzeDFJOGFBaUdmIiwiMTciOiIiLCIxOSI6ImRhdGFMYXllciIsIjIiOnRydWUsIjIwIjoiIiwiMjEiOiJ3d3cuZ29vZ2xldGFnbWFuYWdlci5jb20iLCIyMiI6ImV5SXdJam9pVGs4aUxDSXhJam9pVGs4dE1ETWlMQ0l5SWpwbVlXeHpaU3dpTXlJNkltZHZiMmRzWlM1dWJ5SXNJalFpT2lKeVpXZHBiMjR4SWl3aU5TSTZabUZzYzJVc0lqWWlPblJ5ZFdVc0lqY2lPaUpoWkY5emRHOXlZV2RsZkdGdVlXeDVkR2xqYzE5emRHOXlZV2RsZkdGa1gzVnpaWEpmWkdGMFlYeGhaRjl3WlhKemIyNWhiR2w2WVhScGIyNGlMQ0k1SWpwMGNuVmxmUSIsIjIzIjoiZ29vZ2xlLnRhZ21hbmFnZXIuZGVidWd1aTIucXVldWUiLCIyNCI6InRhZ2Fzc2lzdGFudC5nb29nbGUuY29tIiwiMjciOjAuMDA1LCIzIjoid3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tIiwiMzAiOiJOTyIsIjMxIjoiTk8tMDMiLCIzMiI6ZmFsc2UsIjMzIjoicmVnaW9uMSIsIjM0IjoiRy1NMzc0SkY0MzRKIiwiMzUiOiJHIiwiMzYiOiJodHRwczovL2Fkc2VydmljZS5nb29nbGUuY29tL3BhZ2VhZC9yZWdjbGsiLCIzNyI6Il9fVEFHR1lfSU5TVEFMTEVEIiwiMzgiOiJjY3QuZ29vZ2xlIiwiMzkiOiJnb29nVGFnZ3lSZWZlcnJlciIsIjQwIjoiaHR0cHM6Ly9jY3QuZ29vZ2xlL3RhZ2d5L2FnZW50LmpzIiwiNDEiOiJnb29nbGUudGFnbWFuYWdlci50YS5wcm9kcXVldWUiLCI0MiI6MC4wMSwiNDMiOiJ7XCJrZXlzXCI6W3tcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCS2x5VFgyanlvYnBRQ21mVXlCYmhCeVFIazlaMkhkTjVsSHhwQkF0SUtHTWNtencwZ0UrZWJsWUNtbTFHYTdiWWVUZHlkb0ptZTZJcGFTb0NVMElVVW89XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiZGVlNGIzNTEtYjBmNS00YzI3LWE4YzgtZWQ2NjA0NzdhNDRjXCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCRHRZQlJuUEJTMWc2bWVYTzFyUTVhNTJCNUZibmg3REM1anF2MDJpeEpzc24wazFKOXJjSENhVmMvenpSc25zSEJ6U29GS3M2SjhwSDdDY25RUDNFanc9XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiYWQxOTNiMmEtNGE5MC00YzFhLWI3OWUtZGUzN2FjMzkxYmQyXCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCTVowVU11ZEFlNFBvYWZTVHBVeFB0SWtmQmVDTWJGQlh2dHlSWXZITENTUS9FVXZFSnNtc1Y0dDZOQi9CRVZwcUwzSHY4Z05TUWg3SytTVW9vZjI1YW89XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiNDhjNGVmZTEtZmRkMC00MzZhLWFjOGYtOTIzZjExOTE4Nzg3XCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCRmZsdlVsK3hwSGFGVkNJWU8xS1BMeGt2K0FqZGw0ZDhydnJYaEk2emZwbmJCRHFJNTFERGt0SEhiM1pXSVM1N29EaDBLaXI5QXVDT29uMk1PeE5WOVk9XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiNDMyYmMyNzAtOTllYS00MjIwLWI1NjItZTJjNWFlNzdkNGQ5XCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCQVE4VGt5NERMV09KYkhPSGJWWURiUVpFZkVlbGI0RlRCOEVZTVFlUlFpTDFtMUx0QWQwcjN6ZXlMamdaMy9XMjRSOFZmYjIyelkyaXg2Vy9UZkNqakE9XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiMDUwYTZlMTEtMzhhYi00ZjgwLTg5Y2ItN2IzMTliOTcwNGMwXCJ9XX0iLCI0NCI6IjExODg5NzkyMH4xMTg4OTc5MzAiLCI0NSI6dHJ1ZSwiNDYiOnsiMSI6IjEwMDAiLCIxMCI6IjY2dTAiLCIxMSI6IjY2ZzAiLCIxNCI6IjEwMDAiLCIxNiI6IlVTLUNPflVTLUNUflVTLU1UflVTLU5FflVTLU5IflVTLVRYflVTLU1OflVTLU5KflVTLU1EflVTLU9SflVTLURFIiwiMTciOiJVUy1DT35VUy1DVH5VUy1NVH5VUy1ORX5VUy1OSH5VUy1UWH5VUy1NTn5VUy1OSn5VUy1NRH5VUy1PUn5VUy1ERSIsIjIiOiI5IiwiMjAiOiI1MDAwIiwiMjEiOiI1MDAwIiwiMjIiOiI0LjQuMCIsIjIzIjoiMC4wLjAiLCIyNSI6IjEiLCIyNiI6IjQwMDAiLCIyNyI6IjEwMCIsIjMiOiI1IiwiNCI6ImFkX3N0b3JhZ2V8YW5hbHl0aWNzX3N0b3JhZ2V8YWRfdXNlcl9kYXRhfGFkX3BlcnNvbmFsaXphdGlvbiIsIjQ0IjoiMTUwMDAiLCI0OCI6IjMwMDAwIiwiNSI6ImFkX3N0b3JhZ2V8YW5hbHl0aWNzX3N0b3JhZ2V8YWRfdXNlcl9kYXRhIiwiNiI6IjEiLCI2MSI6IjEwMDAiLCI2MiI6IkE2T05IUlk3L2J2QnJvK0lNWmQvYTZMTmpuN1NTdjk5OVNrTi9oRkFFOUw2dk1yMzRkTmdmZFNWZFltdjRVK05IWmcxc3hkMzhSdGNpUnBSVXRJUlBnUUFBQUNDZXlKdmNtbG5hVzRpT2lKb2RIUndjem92TDNkM2R5NW5iMjluYkdWMFlXZHRZVzVoWjJWeUxtTnZiVG8wTkRNaUxDSm1aV0YwZFhKbElqb2lVMmhoY21Wa1YyOXlhMlZ5UlhoMFpXNWtaV1JNYVdabGRHbHRaU0lzSW1WNGNHbHllU0k2TVRjM05qY3lPVFl3TUN3aWFYTlVhR2x5WkZCaGNuUjVJanAwY25WbGZRPT0iLCI2MyI6IjEwMDAiLCI2NiI6IjEwMCIsIjciOiIxMCJ9LCI0OCI6dHJ1ZSwiNSI6IkctTTM3NEpGNDM0SiIsIjU1IjpbIkctTTM3NEpGNDM0SiJdLCI1NiI6W3siMSI6NDAzLCIzIjowLjUsIjQiOjExNTkzODQ2NSwiNSI6MTE1OTM4NDY2LCI2IjowLCI3IjoyfSx7IjEiOjQwNCwiMyI6MC41LCI0IjoxMTU5Mzg0NjgsIjUiOjExNTkzODQ2OSwiNiI6MCwiNyI6MX0seyIxIjo2MDIsIjMiOjAuMDEsIjQiOjEyMDEyNDQ1NSwiNSI6MTIwMTI0NDUzLCI2IjoxMjAxMjQ0NTQsIjciOjN9LHsiMSI6NTY5LCIyIjp0cnVlfSx7IjEiOjQ3NSwiMiI6dHJ1ZX0seyIxIjo1MDIsIjIiOnRydWV9LHsiMSI6NTc3LCIyIjp0cnVlfSx7IjEiOjU2OCwiMyI6MC4wMSwiNCI6MTE5NzkxNzQ5LCI1IjoxMTk3OTE3NDgsIjYiOjAsIjciOjF9LHsiMSI6NDkwLCIyIjp0cnVlfSx7IjEiOjQ5MSwiMyI6MC4wMSwiNCI6MTE4MDEyMDA3LCI1IjoxMTgwMTIwMDgsIjYiOjExODAxMjAwOSwiNyI6MX0seyIxIjo0ODAsIjIiOnRydWV9LHsiMSI6NTk0LCIzIjowLjAxLCI0IjoxMTk3OTM5NzQsIjUiOjExOTc5Mzk3MiwiNiI6MTE5NzkzOTczLCI3IjoxfSx7IjEiOjU5OSwiMiI6dHJ1ZX0seyIxIjo1ODAsIjMiOjAuMSwiNCI6MTE5NTI3MDIwLCI1IjoxMTk1MjcwMTksIjYiOjAsIjciOjF9LHsiMSI6NTIzLCIyIjp0cnVlfSx7IjEiOjU4MSwiMyI6MC4wMSwiNCI6MTE5OTQ4ODU0LCI1IjoxMTk5NDg4NTIsIjYiOjExOTk0ODg1MywiNyI6M30seyIxIjo1NTUsIjMiOjAuMDEsIjQiOjExOTI1OTYwNiwiNSI6MTE5MjU5NjA1LCI2IjowLCI3IjoyfSx7IjEiOjUwNCwiMiI6dHJ1ZX0seyIxIjo0NjIsIjMiOjAuMDUsIjQiOjExODgwNjUyNCwiNSI6MTE4ODA2NTI1LCI2IjoxMTg4MDY1MjYsIjciOjF9LHsiMSI6NDEzLCIyIjp0cnVlfSx7IjEiOjU5MywiMiI6dHJ1ZX0seyIxIjo1MDYsIjIiOnRydWV9LHsiMSI6NTAwLCIyIjp0cnVlfSx7IjEiOjU2MSwiMyI6MC4wMDEsIjQiOjExOTQwNDcwMywiNSI6MTE5NDA0NzAyLCI2IjowLCI3IjoxfSx7IjEiOjQ4MSwiMyI6MC4wMDEsIjQiOjExOTQwNDcwMSwiNSI6MTE5NDA0NzAwLCI2IjowLCI3IjoxfSx7IjEiOjQ1MCwiMyI6MC4wMSwiNCI6MTE3MjI3NzE0LCI1IjoxMTcyMjc3MTUsIjYiOjExNzIyNzcxNiwiNyI6M30seyIxIjo1ODMsIjMiOjAuNSwiNCI6MTE5ODk2ODAzLCI1IjoxMTk4OTY4MDIsIjYiOjAsIjciOjF9LHsiMSI6NDU4LCIyIjp0cnVlfSx7IjEiOjU4MiwiMyI6MC4wMSwiNCI6MTE5MzgxNjY0LCI1IjoxMTkzODE2NjIsIjYiOjExOTM4MTY2MywiNyI6MX0seyIxIjo1NzAsIjIiOnRydWV9LHsiMSI6NDk4LCIzIjowLjIsIjQiOjExNTYxNjk4NSwiNSI6MTE1NjE2OTg2LCI2IjowLCI3IjoxfSx7IjEiOjU5NSwiMiI6dHJ1ZX0seyIxIjo1ODksIjMiOjAuMDEsIjQiOjEyMDA4NDIxNSwiNSI6MTIwMDg0MjE0LCI2IjowLCI3IjoxfSx7IjEiOjQ5NSwiMyI6MC4wNSwiNCI6MTE4MTMxODEwLCI1IjoxMTgxMzE4MDgsIjYiOjExODEzMTgwOSwiNyI6M30seyIxIjo1ODcsIjMiOjAuMSwiNCI6MTE5NzMyMTcxLCI1IjoxMTk3MzIxNzAsIjYiOjAsIjciOjN9LHsiMSI6NTg0LCIyIjp0cnVlfSx7IjEiOjU2NCwiMyI6MC4wMDAxLCI0IjoxMTkyMDUzMTcsIjUiOjExOTIwNTMxNSwiNiI6MTE5MjA1MzE2LCI3IjoxfSx7IjEiOjU1NywiMiI6dHJ1ZX0seyIxIjo0MjcsIjMiOjAuMSwiNCI6MTE5NzI0MzIyLCI1IjoxMTk3MjQzMjAsIjYiOjExOTcyNDMyMSwiNyI6Mn0seyIxIjo1NzYsIjMiOjAuMDEsIjQiOjExOTMxNzgxMCwiNSI6MTE5MzE3ODExLCI2IjoxMTkzMTgxNzcsIjciOjN9LHsiMSI6NTczLCIyIjp0cnVlfSx7IjEiOjQ5OSwiMiI6dHJ1ZX0seyIxIjo1MTYsIjMiOjAuMSwiNCI6MTE4Mzk1MzM1LCI1IjoxMTgzOTUzMzMsIjYiOjExODM5NTMzNCwiNyI6MX0seyIxIjo1MjQsIjIiOnRydWV9XSwiNTkiOlsiRy1NMzc0SkY0MzRKIl0sIjYiOiI4NjMxOTUwOSIsIjYyIjp0cnVlLCI2MyI6MC4wMDV9CiwicGVybWlzc2lvbnMiOnsKIl9fYyI6e30KLAoiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIjp7fQosCiJfX2NjZF9lbV9kb3dubG9hZCI6eyJsaXN0ZW5fZGF0YV9sYXllciI6eyJhY2Nlc3NUeXBlIjoic3BlY2lmaWMiLCJhbGxvd2VkRXZlbnRzIjpbImd0bS5saW5rQ2xpY2siXX0sImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIjp7fSwiZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzIjp7ImFsbG93V2FpdEZvclRhZ3MiOiIifX0KLAoiX19jY2RfZW1fb3V0Ym91bmRfY2xpY2siOnsiZ2V0X3VybCI6eyJ1cmxQYXJ0cyI6ImFueSIsInF1ZXJpZXNBbGxvd2VkIjoiYW55In0sImxpc3Rlbl9kYXRhX2xheWVyIjp7ImFjY2Vzc1R5cGUiOiJzcGVjaWZpYyIsImFsbG93ZWRFdmVudHMiOlsiZ3RtLmxpbmtDbGljayJdfSwiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiOnt9LCJkZXRlY3RfbGlua19jbGlja19ldmVudHMiOnsiYWxsb3dXYWl0Rm9yVGFncyI6IiJ9fQosCiJfX2NjZF9lbV9wYWdlX3ZpZXciOnsibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0uaGlzdG9yeUNoYW5nZS12MiJdfSwiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiOnt9LCJkZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzIjp7fX0KLAoiX19jY2RfZW1fc2Nyb2xsIjp7Imxpc3Rlbl9kYXRhX2xheWVyIjp7ImFjY2Vzc1R5cGUiOiJzcGVjaWZpYyIsImFsbG93ZWRFdmVudHMiOlsiZ3RtLnNjcm9sbERlcHRoIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9zY3JvbGxfZXZlbnRzIjp7fX0KLAoiX19jY2RfZW1fc2l0ZV9zZWFyY2giOnsiZ2V0X3VybCI6eyJ1cmxQYXJ0cyI6ImFueSIsInF1ZXJpZXNBbGxvd2VkIjoiYW55In0sInJlYWRfY29udGFpbmVyX2RhdGEiOnt9fQosCiJfX2NjZF9lbV92aWRlbyI6eyJsaXN0ZW5fZGF0YV9sYXllciI6eyJhY2Nlc3NUeXBlIjoic3BlY2lmaWMiLCJhbGxvd2VkRXZlbnRzIjpbImd0bS52aWRlbyJdfSwiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiOnt9LCJkZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMiOnsiYWxsb3dGaXhNaXNzaW5nSmF2YVNjcmlwdEFwaSI6ZmFsc2V9fQosCiJfX2NjZF9nYV9maXJzdCI6eyJyZWFkX2RvbV9lbGVtZW50cyI6eyJhbGxvd2VkQ3NzU2VsZWN0b3JzIjoiYW55In0sImdldF91cmwiOnsidXJsUGFydHMiOiJzcGVjaWZpYyIsInByb3RvY29sIjp0cnVlLCJob3N0Ijp0cnVlfX0KLAoiX19jY2RfZ2FfbGFzdCI6e30KLAoiX19lIjp7InJlYWRfZXZlbnRfZGF0YSI6eyJldmVudERhdGFBY2Nlc3MiOiJzcGVjaWZpYyIsImtleVBhdHRlcm5zIjpbImV2ZW50Il19fQosCiJfX2djdCI6eyJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e319CiwKIl9fb2d0XzFwX2RhdGFfdjIiOnsiZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSI6eyJsaW1pdERhdGFTb3VyY2VzIjp0cnVlLCJhbGxvd0F1dG9EYXRhU291cmNlcyI6dHJ1ZSwiYWxsb3dNYW51YWxEYXRhU291cmNlcyI6ZmFsc2UsImFsbG93Q29kZURhdGFTb3VyY2VzIjpmYWxzZX19CiwKIl9fc2V0X3Byb2R1Y3Rfc2V0dGluZ3MiOnt9CgoKfQoKCgosInNlY3VyaXR5X2dyb3VwcyI6ewoiZ29vZ2xlIjpbCiJfX2MiCiwKIl9fY2NkX2NvbnZlcnNpb25fbWFya2luZyIKLAoiX19jY2RfZW1fZG93bmxvYWQiCiwKIl9fY2NkX2VtX291dGJvdW5kX2NsaWNrIgosCiJfX2NjZF9lbV9wYWdlX3ZpZXciCiwKIl9fY2NkX2VtX3Njcm9sbCIKLAoiX19jY2RfZW1fc2l0ZV9zZWFyY2giCiwKIl9fY2NkX2VtX3ZpZGVvIgosCiJfX2NjZF9nYV9maXJzdCIKLAoiX19jY2RfZ2FfbGFzdCIKLAoiX19lIgosCiJfX2djdCIKLAoiX19vZ3RfMXBfZGF0YV92MiIKLAoiX19zZXRfcHJvZHVjdF9zZXR0aW5ncyIKCl0KCgp9CgoKCgoKfTsKCgoKCnZhciBrLGFhPXR5cGVvZiBPYmplY3QuY3JlYXRlPT0iZnVuY3Rpb24iP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifSxiYT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfSxjYT1mdW5jdGlvbihhKXtmb3IodmFyIGI9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdLGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXTtpZihkJiZkLk1hdGg9PU1hdGgpcmV0dXJuIGR9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTsKfSxoYT1jYSh0aGlzKSxpYT10eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbCgieCIpPT09InN5bWJvbCIsa2E9e30sbGE9e30sbmE9ZnVuY3Rpb24oYSxiLGMpe2lmKCFjfHxhIT1udWxsKXt2YXIgZD1sYVtiXTtpZihkPT1udWxsKXJldHVybiBhW2JdO3ZhciBlPWFbZF07cmV0dXJuIGUhPT12b2lkIDA/ZTphW2JdfX0sb2E9ZnVuY3Rpb24oYSxiLGMpe2lmKGIpYTp7dmFyIGQ9YS5zcGxpdCgiLiIpLGU9ZC5sZW5ndGg9PT0xLGY9ZFswXSxnOyFlJiZmIGluIGthP2c9a2E6Zz1oYTtmb3IodmFyIGg9MDtoPGQubGVuZ3RoLTE7aCsrKXt2YXIgbD1kW2hdO2lmKCEobCBpbiBnKSlicmVhayBhO2c9Z1tsXX12YXIgbj1kW2QubGVuZ3RoLTFdLHA9aWEmJmM9PT0iZXM2Ij9nW25dOm51bGwscT1iKHApO2lmKHEhPW51bGwpaWYoZSliYShrYSxuLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cX0pO2Vsc2UgaWYocSE9PXApe2lmKGxhW25dPT09dm9pZCAwKXt2YXIgcj0KTWF0aC5yYW5kb20oKSoxRTk+Pj4wO2xhW25dPWlhP2hhLlN5bWJvbChuKToiJGpzY3AkIityKyIkIitufWJhKGcsbGFbbl0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpxfSl9fX0scGE7aWYoaWEmJnR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y9PSJmdW5jdGlvbiIpcGE9T2JqZWN0LnNldFByb3RvdHlwZU9mO2Vsc2V7dmFyIHJhO2E6e3ZhciB0YT17YTohMH0sdWE9e307dHJ5e3VhLl9fcHJvdG9fXz10YTtyYT11YS5hO2JyZWFrIGF9Y2F0Y2goYSl7fXJhPSExfXBhPXJhP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbH0KdmFyIHZhPXBhLHdhPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9YWEoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYodmEpdmEoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKGMhPSJwcm90b3R5cGUiKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXTthLkZ0PWIucHJvdG90eXBlfSx4YT1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX0sbT1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07aWYoYilyZXR1cm4gYi5jYWxsKGEpO2lmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpcmV0dXJue25leHQ6eGEoYSl9Owp0aHJvdyBFcnJvcihTdHJpbmcoYSkrIiBpcyBub3QgYW4gaXRlcmFibGUgb3IgQXJyYXlMaWtlIik7fSx5YT1mdW5jdGlvbihhKXtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTtyZXR1cm4gY30sdz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEFycmF5P2E6eWEobShhKSl9LEFhPWZ1bmN0aW9uKGEpe3JldHVybiB6YShhLGEpfSx6YT1mdW5jdGlvbihhLGIpe2EucmF3PWI7T2JqZWN0LmZyZWV6ZSYmKE9iamVjdC5mcmVlemUoYSksT2JqZWN0LmZyZWV6ZShiKSk7cmV0dXJuIGF9LEJhPWlhJiZ0eXBlb2YgbmEoT2JqZWN0LCJhc3NpZ24iKT09ImZ1bmN0aW9uIj9uYShPYmplY3QsImFzc2lnbiIpOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJObyBudWxsaXNoIGFyZyIpO2E9T2JqZWN0KGEpO2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTsKaWYoZClmb3IodmFyIGUgaW4gZClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKSYmKGFbZV09ZFtlXSl9cmV0dXJuIGF9O29hKCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8QmF9LCJlczYiKTt2YXIgQ2E9ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO30sRGE9ZnVuY3Rpb24oKXt0aGlzLmZhPSExO3RoaXMuUj1udWxsO3RoaXMuamE9dm9pZCAwO3RoaXMuSD0xO3RoaXMuTj10aGlzLlo9MDt0aGlzLkxhPXRoaXMuSz1udWxsfSxFYT1mdW5jdGlvbihhKXtpZihhLmZhKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTthLmZhPSEwfTtEYS5wcm90b3R5cGUueWE9ZnVuY3Rpb24oYSl7dGhpcy5qYT1hfTsKdmFyIEdhPWZ1bmN0aW9uKGEsYil7YS5LPXthbzpiLGlzRXhjZXB0aW9uOiEwfTthLkg9YS5afHxhLk59O0RhLnByb3RvdHlwZS5nZXROZXh0QWRkcmVzc0pzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkh9O0RhLnByb3RvdHlwZS5nZXRZaWVsZFJlc3VsdEpzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmphfTtEYS5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuSz17cmV0dXJuOmF9O3RoaXMuSD10aGlzLk59O0RhLnByb3RvdHlwZVsicmV0dXJuIl09RGEucHJvdG90eXBlLnJldHVybjtEYS5wcm90b3R5cGUuQWo9ZnVuY3Rpb24oYSl7dGhpcy5LPXtuZDphfTt0aGlzLkg9dGhpcy5OfTtEYS5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPURhLnByb3RvdHlwZS5BajtEYS5wcm90b3R5cGUuYWM9ZnVuY3Rpb24oYSxiKXt0aGlzLkg9YjtyZXR1cm57dmFsdWU6YX19O0RhLnByb3RvdHlwZS55aWVsZD1EYS5wcm90b3R5cGUuYWM7CkRhLnByb3RvdHlwZS54cz1mdW5jdGlvbihhLGIpe3ZhciBjPW0oYSksZD1jLm5leHQoKTtDYShkKTtpZihkLmRvbmUpdGhpcy5qYT1kLnZhbHVlLHRoaXMuSD1iO2Vsc2UgcmV0dXJuIHRoaXMuUj1jLHRoaXMuYWMoZC52YWx1ZSxiKX07RGEucHJvdG90eXBlLnlpZWxkQWxsPURhLnByb3RvdHlwZS54cztEYS5wcm90b3R5cGUubmQ9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O0RhLnByb3RvdHlwZS5qdW1wVG89RGEucHJvdG90eXBlLm5kO0RhLnByb3RvdHlwZS5Eaj1mdW5jdGlvbigpe3RoaXMuSD0wfTtEYS5wcm90b3R5cGUuanVtcFRvRW5kPURhLnByb3RvdHlwZS5EajtEYS5wcm90b3R5cGUuTmo9ZnVuY3Rpb24oYSxiKXt0aGlzLlo9YTtiIT12b2lkIDAmJih0aGlzLk49Yil9O0RhLnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9RGEucHJvdG90eXBlLk5qO0RhLnByb3RvdHlwZS52Zz1mdW5jdGlvbihhKXt0aGlzLlo9MDt0aGlzLk49YXx8MH07CkRhLnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9RGEucHJvdG90eXBlLnZnO0RhLnByb3RvdHlwZS5Jaj1mdW5jdGlvbihhLGIpe3RoaXMuSD1hO3RoaXMuWj1ifHwwfTtEYS5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1EYS5wcm90b3R5cGUuSWo7RGEucHJvdG90eXBlLlBoPWZ1bmN0aW9uKGEpe3RoaXMuWj1hfHwwO3ZhciBiPXRoaXMuSy5hbzt0aGlzLks9bnVsbDtyZXR1cm4gYn07RGEucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1EYS5wcm90b3R5cGUuUGg7RGEucHJvdG90eXBlLmtkPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuTGFbY109dGhpcy5LOnRoaXMuTGE9W3RoaXMuS107dGhpcy5aPWF8fDA7dGhpcy5OPWJ8fDB9O0RhLnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1EYS5wcm90b3R5cGUua2Q7CkRhLnByb3RvdHlwZS5oZT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuTGEuc3BsaWNlKGJ8fDApWzBdLGQ9dGhpcy5LPXRoaXMuS3x8YztkP2QuaXNFeGNlcHRpb24/dGhpcy5IPXRoaXMuWnx8dGhpcy5OOmQubmQhPXZvaWQgMCYmdGhpcy5OPGQubmQ/KHRoaXMuSD1kLm5kLHRoaXMuSz1udWxsKTp0aGlzLkg9dGhpcy5OOnRoaXMuSD1hfTtEYS5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9RGEucHJvdG90eXBlLmhlO0RhLnByb3RvdHlwZS5mZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEhhKGEpfTtEYS5wcm90b3R5cGUuZm9ySW49RGEucHJvdG90eXBlLmZlO3ZhciBIYT1mdW5jdGlvbihhKXt0aGlzLks9YTt0aGlzLkg9W107Zm9yKHZhciBiIGluIGEpdGhpcy5ILnB1c2goYik7dGhpcy5ILnJldmVyc2UoKX07SGEucHJvdG90eXBlLmhvPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLkgubGVuZ3RoPjA7KXt2YXIgYT10aGlzLkgucG9wKCk7aWYoYSBpbiB0aGlzLkspcmV0dXJuIGF9cmV0dXJuIG51bGx9OwpIYS5wcm90b3R5cGUuZ2V0TmV4dD1IYS5wcm90b3R5cGUuaG87CnZhciBJYT1mdW5jdGlvbihhKXt0aGlzLkg9bmV3IERhO3RoaXMuSz1hfSxMYT1mdW5jdGlvbihhLGIpe0VhKGEuSCk7dmFyIGM9YS5ILlI7aWYoYylyZXR1cm4gSmEoYSwicmV0dXJuImluIGM/Y1sicmV0dXJuIl06ZnVuY3Rpb24oZCl7cmV0dXJue3ZhbHVlOmQsZG9uZTohMH19LGIsYS5ILnJldHVybik7YS5ILnJldHVybihiKTtyZXR1cm4gS2EoYSl9LEphPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1iLmNhbGwoYS5ILlIsYyk7Q2EoZSk7aWYoIWUuZG9uZSlyZXR1cm4gYS5ILmZhPSExLGU7dmFyIGY9ZS52YWx1ZX1jYXRjaChnKXtyZXR1cm4gYS5ILlI9bnVsbCxHYShhLkgsZyksS2EoYSl9YS5ILlI9bnVsbDtkLmNhbGwoYS5ILGYpO3JldHVybiBLYShhKX0sS2E9ZnVuY3Rpb24oYSl7Zm9yKDthLkguSDspdHJ5e3ZhciBiPWEuSyhhLkgpO2lmKGIpcmV0dXJuIGEuSC5mYT0hMSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChkKXthLkguamE9dm9pZCAwLEdhKGEuSCwKZCl9YS5ILmZhPSExO2lmKGEuSC5LKXt2YXIgYz1hLkguSzthLkguSz1udWxsO2lmKGMuaXNFeGNlcHRpb24pdGhyb3cgYy5hbztyZXR1cm57dmFsdWU6Yy5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX0sTWE9ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3ZhciBjO0VhKGEuSCk7YS5ILlI/Yz1KYShhLGEuSC5SLm5leHQsYixhLkgueWEpOihhLkgueWEoYiksYz1LYShhKSk7cmV0dXJuIGN9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7dmFyIGM7RWEoYS5IKTthLkguUj9jPUphKGEsYS5ILlJbInRocm93Il0sYixhLkgueWEpOihHYShhLkgsYiksYz1LYShhKSk7cmV0dXJuIGN9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBMYShhLGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LE5hPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1hKG5ldyBJYShiKSk7dmEmJmEucHJvdG90eXBlJiZ2YShjLAphLnByb3RvdHlwZSk7cmV0dXJuIGN9LE9hPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPU51bWJlcih0aGlzKSxiPVtdLGM9YTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWJbYy1hXT1hcmd1bWVudHNbY107cmV0dXJuIGJ9LFFhPWZ1bmN0aW9uKGEpe3JldHVybiBhfTsvKgoKIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAoqLwp2YXIgUmE9dGhpc3x8c2VsZixTYT1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5GdD1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EubnY9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLGg9MjtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaC0yXT1hcmd1bWVudHNbaF07cmV0dXJuIGIucHJvdG90eXBlW2VdLmFwcGx5KGQsZyl9fTt2YXIgVGE9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9YTt0aGlzLmRhdGE9Yn07dmFyIFVhPWZ1bmN0aW9uKCl7dGhpcy5tYXA9e307dGhpcy5IPXt9fTtVYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hcFsiZHVzdC4iK2FdfTtVYS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9ImR1c3QuIithO3RoaXMuSC5oYXNPd25Qcm9wZXJ0eShjKXx8KHRoaXMubWFwW2NdPWIpfTtVYS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eSgiZHVzdC4iK2EpfTtVYS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe3ZhciBiPSJkdXN0LiIrYTt0aGlzLkguaGFzT3duUHJvcGVydHkoYil8fGRlbGV0ZSB0aGlzLm1hcFtiXX07CnZhciBWYT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYS5tYXApaWYoYS5tYXAuaGFzT3duUHJvcGVydHkoZCkpe3ZhciBlPWQuc3Vic3RyaW5nKDUpO3N3aXRjaChiKXtjYXNlIDE6Yy5wdXNoKGUpO2JyZWFrO2Nhc2UgMjpjLnB1c2goYS5tYXBbZF0pO2JyZWFrO2Nhc2UgMzpjLnB1c2goW2UsYS5tYXBbZF1dKX19cmV0dXJuIGN9O1VhLnByb3RvdHlwZS5GYT1mdW5jdGlvbigpe3JldHVybiBWYSh0aGlzLDEpfTtVYS5wcm90b3R5cGUuaGM9ZnVuY3Rpb24oKXtyZXR1cm4gVmEodGhpcywyKX07VWEucHJvdG90eXBlLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsMyl9O3ZhciBXYT1mdW5jdGlvbigpe307V2EucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7fTt2YXIgWGE9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXt9O3RoaXMucHJlZml4PSJndG0uIn07az1YYS5wcm90b3R5cGU7ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnZhbHVlW3RoaXMucHJlZml4K1N0cmluZyhhKV09Yn07ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVbdGhpcy5wcmVmaXgrU3RyaW5nKGEpXX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWUuaGFzT3duUHJvcGVydHkodGhpcy5wcmVmaXgrU3RyaW5nKGEpKX07ay5kZWxldGU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wcmVmaXgrU3RyaW5nKGEpO3JldHVybiB0aGlzLnZhbHVlLmhhc093blByb3BlcnR5KGIpPyhkZWxldGUgdGhpcy52YWx1ZVtiXSwhMCk6ITF9O2suY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXt9fTsKay52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBmdW5jdGlvbiBjKCl7dmFyIGQsZSxmO3JldHVybiBOYShjLGZ1bmN0aW9uKGcpe3N3aXRjaChnLkgpe2Nhc2UgMTpnLnZnKDIpLGU9Zy5mZShhLnZhbHVlKTtjYXNlIDQ6aWYoKGQ9ZS5obygpKT09bnVsbCl7Zy5uZCgyKTticmVha31pZighYS52YWx1ZS5oYXNPd25Qcm9wZXJ0eShkKSl7Zy5uZCg0KTticmVha31mPVFhO3JldHVybiBnLmFjKGEudmFsdWVbZF0sOCk7Y2FzZSA4OmYoZy5qYSk7Zy5uZCg0KTticmVhaztjYXNlIDI6Zy5rZCgpLGcuaGUoMCl9fSl9KCl9O2hhLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFhhLnByb3RvdHlwZSx7c2l6ZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudmFsdWUpLmxlbmd0aH19fSk7CmZ1bmN0aW9uIFlhKCl7dHJ5e2lmKE1hcClyZXR1cm4gbmV3IE1hcH1jYXRjaChhKXt9cmV0dXJuIG5ldyBYYX07dmFyIFphPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZXM9W119O1phLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZXMuaW5kZXhPZihhKT09PS0xJiZ0aGlzLnZhbHVlcy5wdXNoKGEpfTtaYS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlcy5pbmRleE9mKGEpPi0xfTt2YXIgJGE9ZnVuY3Rpb24oYSxiKXt0aGlzLmZhPWE7dGhpcy5wYXJlbnQ9Yjt0aGlzLlI9dGhpcy5LPXZvaWQgMDt0aGlzLkhiPSExO3RoaXMuTj1mdW5jdGlvbihkLGUsZil7cmV0dXJuIGQuYXBwbHkoZSxmKX07dGhpcy5IPVlhKCk7dmFyIGM7YTp7dHJ5e2lmKFNldCl7Yz1uZXcgU2V0O2JyZWFrIGF9fWNhdGNoKGQpe31jPW5ldyBaYX10aGlzLlo9Y307JGEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe2FiKHRoaXMsYSxiLCExKX07JGEucHJvdG90eXBlLlFoPWZ1bmN0aW9uKGEsYil7YWIodGhpcyxhLGIsITApfTt2YXIgYWI9ZnVuY3Rpb24oYSxiLGMsZCl7YS5IYnx8YS5aLmhhcyhiKXx8KGQmJmEuWi5hZGQoYiksYS5ILnNldChiLGMpKX07az0kYS5wcm90b3R5cGU7Cmsuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5IYnx8KCF0aGlzLkguaGFzKGEpJiZ0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuaGFzKGEpP3RoaXMucGFyZW50LnNldChhLGIpOnRoaXMuWi5oYXMoYSl8fHRoaXMuSC5zZXQoYSxiKSl9O2suZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkguaGFzKGEpP3RoaXMuSC5nZXQoYSk6dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuZ2V0KGEpOnZvaWQgMH07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuISF0aGlzLkguaGFzKGEpfHwhKCF0aGlzLnBhcmVudHx8IXRoaXMucGFyZW50LmhhcyhhKSl9O2sud2I9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgJGEodGhpcy5mYSx0aGlzKTt0aGlzLksmJmEuUWIodGhpcy5LKTthLnNkKHRoaXMuTik7YS51ZSh0aGlzLlIpO3JldHVybiBhfTtrLmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmF9O2suUWI9ZnVuY3Rpb24oYSl7dGhpcy5LPWF9O2suZm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LfTsKay5zZD1mdW5jdGlvbihhKXt0aGlzLk49YX07ay5Qaj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk59O2suWmE9ZnVuY3Rpb24oKXt0aGlzLkhiPSEwfTtrLnVlPWZ1bmN0aW9uKGEpe3RoaXMuUj1hfTtrLnhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUn07dmFyIGJiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtkPUVycm9yLmNhbGwodGhpcyxhLm1lc3NhZ2UpO3RoaXMubWVzc2FnZT1kLm1lc3NhZ2U7InN0YWNrImluIGQmJih0aGlzLnN0YWNrPWQuc3RhY2spO3RoaXMudm89YTt0aGlzLlNuPWM9PT12b2lkIDA/ITE6Yzt0aGlzLks9W107dGhpcy5IPWJ9O3dhKGJiLEVycm9yKTt2YXIgY2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBiYj9hOm5ldyBiYihhLHZvaWQgMCwhMCl9O3ZhciBkYj1ZYSgpO2Z1bmN0aW9uIGViKGEsYil7Zm9yKHZhciBjLGQ9bShiKSxlPWQubmV4dCgpOyFlLmRvbmUmJiEoYz1mYihhLGUudmFsdWUpLGMgaW5zdGFuY2VvZiBUYSk7ZT1kLm5leHQoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gZmIoYSxiKXt0cnl7dmFyIGM9YlswXSxkPWIuc2xpY2UoMSksZT1TdHJpbmcoYyksZj1kYi5oYXMoZSk/ZGIuZ2V0KGUpOmEuZ2V0KGUpO2lmKCFmfHx0eXBlb2YgZi5pbnZva2UhPT0iZnVuY3Rpb24iKXRocm93IGNiKEVycm9yKCJBdHRlbXB0aW5nIHRvIGV4ZWN1dGUgbm9uLWZ1bmN0aW9uICIrYlswXSsiLiIpKTtyZXR1cm4gZi5hcHBseShhLGQpfWNhdGNoKGgpe3ZhciBnPWEuZm8oKTtnJiZnKGgsYi5jb250ZXh0P3tpZDpiWzBdLGxpbmU6Yi5jb250ZXh0LmxpbmV9Om51bGwpO3Rocm93IGg7fX07dmFyIGdiPWZ1bmN0aW9uKCl7dGhpcy5LPW5ldyBXYTt0aGlzLkg9bmV3ICRhKHRoaXMuSyl9O2s9Z2IucHJvdG90eXBlO2suamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LfTtrLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSC5RYihhKX07ay5zZD1mdW5jdGlvbihhKXt0aGlzLkguc2QoYSl9O2suZXhlY3V0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yayhbYV0uY29uY2F0KHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSkpfTtrLnJrPWZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9bShPYS5hcHBseSgwLGFyZ3VtZW50cykpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWE9ZmIodGhpcy5ILGMudmFsdWUpO3JldHVybiBhfTtrLkpxPWZ1bmN0aW9uKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKSxjPXRoaXMuSC53YigpO2MudWUoYSk7Zm9yKHZhciBkLGU9bShiKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSlkPWZiKGMsZi52YWx1ZSk7cmV0dXJuIGR9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLkguWmEoKX07dmFyIGhiPWZ1bmN0aW9uKGEsYil7dGhpcy5SPWE7dGhpcy5wYXJlbnQ9Yjt0aGlzLk49dGhpcy5IPXZvaWQgMDt0aGlzLkhiPSExO3RoaXMuSz1mdW5jdGlvbihjLGQsZSl7cmV0dXJuIGMuYXBwbHkoZCxlKX07dGhpcy52YWx1ZXM9bmV3IFVhfTtoYi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYil7amIodGhpcyxhLGIsITEpfTtoYi5wcm90b3R5cGUuUWg9ZnVuY3Rpb24oYSxiKXtqYih0aGlzLGEsYiwhMCl9O3ZhciBqYj1mdW5jdGlvbihhLGIsYyxkKXtpZighYS5IYilpZihkKXt2YXIgZT1hLnZhbHVlcztlLnNldChiLGMpO2UuSFsiZHVzdC4iK2JdPSEwfWVsc2UgYS52YWx1ZXMuc2V0KGIsYyl9O2s9aGIucHJvdG90eXBlO2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5IYnx8KCF0aGlzLnZhbHVlcy5oYXMoYSkmJnRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5oYXMoYSk/dGhpcy5wYXJlbnQuc2V0KGEsYik6dGhpcy52YWx1ZXMuc2V0KGEsYikpfTsKay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVzLmhhcyhhKT90aGlzLnZhbHVlcy5nZXQoYSk6dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuZ2V0KGEpOnZvaWQgMH07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuISF0aGlzLnZhbHVlcy5oYXMoYSl8fCEoIXRoaXMucGFyZW50fHwhdGhpcy5wYXJlbnQuaGFzKGEpKX07ay53Yj1mdW5jdGlvbigpe3ZhciBhPW5ldyBoYih0aGlzLlIsdGhpcyk7dGhpcy5IJiZhLlFiKHRoaXMuSCk7YS5zZCh0aGlzLkspO2EudWUodGhpcy5OKTtyZXR1cm4gYX07ay5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJ9O2suUWI9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O2suZm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IfTtrLnNkPWZ1bmN0aW9uKGEpe3RoaXMuSz1hfTtrLlBqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuS307ay5aYT1mdW5jdGlvbigpe3RoaXMuSGI9ITB9O2sudWU9ZnVuY3Rpb24oYSl7dGhpcy5OPWF9O2sueGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OfTt2YXIga2I9ZnVuY3Rpb24oKXt0aGlzLk5hPSExO3RoaXMubGE9bmV3IFVhfTtrPWtiLnByb3RvdHlwZTtrLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5nZXQoYSl9O2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5OYXx8dGhpcy5sYS5zZXQoYSxiKX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuaGFzKGEpfTtrLnJlbW92ZT1mdW5jdGlvbihhKXt0aGlzLk5hfHx0aGlzLmxhLnJlbW92ZShhKX07ay5GYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLkZhKCl9O2suaGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5oYygpfTtrLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuZmMoKX07ay5aYT1mdW5jdGlvbigpe3RoaXMuTmE9ITB9O2suSGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07ZnVuY3Rpb24gbGIoKXtmb3IodmFyIGE9bWIsYj17fSxjPTA7YzxhLmxlbmd0aDsrK2MpYlthW2NdXT1jO3JldHVybiBifWZ1bmN0aW9uIG5iKCl7dmFyIGE9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjthKz1hLnRvTG93ZXJDYXNlKCkrIjAxMjM0NTY3ODktXyI7cmV0dXJuIGErIi4ifXZhciBtYixvYjtmdW5jdGlvbiBwYihhKXttYj1tYnx8bmIoKTtvYj1vYnx8bGIoKTtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7Yys9Myl7dmFyIGQ9YysxPGEubGVuZ3RoLGU9YysyPGEubGVuZ3RoLGY9YS5jaGFyQ29kZUF0KGMpLGc9ZD9hLmNoYXJDb2RlQXQoYysxKTowLGg9ZT9hLmNoYXJDb2RlQXQoYysyKTowLGw9Zj4+MixuPShmJjMpPDw0fGc+PjQscD0oZyYxNSk8PDJ8aD4+NixxPWgmNjM7ZXx8KHE9NjQsZHx8KHA9NjQpKTtiLnB1c2gobWJbbF0sbWJbbl0sbWJbcF0sbWJbcV0pfXJldHVybiBiLmpvaW4oIiIpfQpmdW5jdGlvbiBxYihhKXtmdW5jdGlvbiBiKGwpe2Zvcig7ZDxhLmxlbmd0aDspe3ZhciBuPWEuY2hhckF0KGQrKykscD1vYltuXTtpZihwIT1udWxsKXJldHVybiBwO2lmKCEvXltcc1x4YTBdKiQvLnRlc3QobikpdGhyb3cgRXJyb3IoIlVua25vd24gYmFzZTY0IGVuY29kaW5nIGF0IGNoYXI6ICIrbik7fXJldHVybiBsfW1iPW1ifHxuYigpO29iPW9ifHxsYigpO2Zvcih2YXIgYz0iIixkPTA7Oyl7dmFyIGU9YigtMSksZj1iKDApLGc9Yig2NCksaD1iKDY0KTtpZihoPT09NjQmJmU9PT0tMSlyZXR1cm4gYztjKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU8PDJ8Zj4+NCk7ZyE9PTY0JiYoYys9U3RyaW5nLmZyb21DaGFyQ29kZShmPDw0JjI0MHxnPj4yKSxoIT09NjQmJihjKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGc8PDYmMTkyfGgpKSl9fTt2YXIgcmI9e307ZnVuY3Rpb24gc2IoYSxiKXt2YXIgYz1yYlthXTtjfHwoYz1yYlthXT1bXSk7Y1tiXT0hMH1mdW5jdGlvbiB0Yigpe2RlbGV0ZSByYi5HQTRfRVZFTlR9ZnVuY3Rpb24gdWIoKXt2YXIgYT12Yi5ILnNsaWNlKCk7cmIuR1RBR19FVkVOVF9GRUFUVVJFX0NIQU5ORUw9YX1mdW5jdGlvbiB3YihhKXtmb3IodmFyIGI9W10sYz0wLGQ9MDtkPGEubGVuZ3RoO2QrKylkJTg9PT0wJiZkPjAmJihiLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjKSksYz0wKSxhW2RdJiYoY3w9MTw8ZCU4KTtjPjAmJmIucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtyZXR1cm4gcGIoYi5qb2luKCIiKSkucmVwbGFjZSgvXC4rJC8sIiIpfTtmdW5jdGlvbiB4Yigpe31mdW5jdGlvbiB5YihhKXtyZXR1cm4gdHlwZW9mIGE9PT0iZnVuY3Rpb24ifWZ1bmN0aW9uIHpiKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmcifWZ1bmN0aW9uIEFiKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIiJiYhaXNOYU4oYSl9ZnVuY3Rpb24gQmIoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YTpbYV19ZnVuY3Rpb24gQ2IoYSxiKXtpZihhJiZBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGFbY10mJmIoYVtjXSkpcmV0dXJuIGFbY119ZnVuY3Rpb24gRGIoYSxiKXtpZighQWIoYSl8fCFBYihiKXx8YT5iKWE9MCxiPTIxNDc0ODM2NDc7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooYi1hKzEpK2EpfQpmdW5jdGlvbiBFYihhLGIpe2Zvcih2YXIgYz1uZXcgRmIsZD0wO2Q8YS5sZW5ndGg7ZCsrKWMuc2V0KGFbZF0sITApO2Zvcih2YXIgZT0wO2U8Yi5sZW5ndGg7ZSsrKWlmKGMuZ2V0KGJbZV0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEdiKGEsYil7Zm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJmIoYyxhW2NdKX1mdW5jdGlvbiBIYihhKXtyZXR1cm4hIWEmJihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk9PT0iW29iamVjdCBBcmd1bWVudHNdInx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsImNhbGxlZSIpKX1mdW5jdGlvbiBJYihhKXtyZXR1cm4gTWF0aC5yb3VuZChOdW1iZXIoYSkpfHwwfWZ1bmN0aW9uIEpiKGEpe3JldHVybiJmYWxzZSI9PT1TdHJpbmcoYSkudG9Mb3dlckNhc2UoKT8hMTohIWF9CmZ1bmN0aW9uIEtiKGEpe3ZhciBiPVtdO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKFN0cmluZyhhW2NdKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gTGIoYSl7cmV0dXJuIGE/YS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik6IiJ9ZnVuY3Rpb24gTWIoKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSl9ZnVuY3Rpb24gTmIoKXtyZXR1cm4gTWIoKS5nZXRUaW1lKCl9dmFyIEZiPWZ1bmN0aW9uKCl7dGhpcy5wcmVmaXg9Imd0bS4iO3RoaXMudmFsdWVzPXt9fTtGYi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy52YWx1ZXNbdGhpcy5wcmVmaXgrYV09Yn07RmIucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZXNbdGhpcy5wcmVmaXgrYV19O0ZiLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXQoYSkhPT12b2lkIDB9OwpmdW5jdGlvbiBPYihhLGIsYyl7cmV0dXJuIGEmJmEuaGFzT3duUHJvcGVydHkoYik/YVtiXTpjfWZ1bmN0aW9uIFBiKGEpe3ZhciBiPWE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYil7dmFyIGM9YjtiPXZvaWQgMDt0cnl7YygpfWNhdGNoKGQpe319fX1mdW5jdGlvbiBRYihhLGIpe2Zvcih2YXIgYyBpbiBiKWIuaGFzT3duUHJvcGVydHkoYykmJihhW2NdPWJbY10pfWZ1bmN0aW9uIFJiKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGEubGVuZ3RoO2QrKyljLnB1c2goYVtkXSksYy5wdXNoLmFwcGx5KGMsYlthW2RdXXx8W10pO3JldHVybiBjfWZ1bmN0aW9uIFNiKGEsYil7cmV0dXJuIGEubGVuZ3RoPj1iLmxlbmd0aCYmYS5zdWJzdHJpbmcoMCxiLmxlbmd0aCk9PT1ifWZ1bmN0aW9uIFRiKGEsYil7cmV0dXJuIGEubGVuZ3RoPj1iLmxlbmd0aCYmYS5zdWJzdHJpbmcoYS5sZW5ndGgtYi5sZW5ndGgsYS5sZW5ndGgpPT09Yn0KZnVuY3Rpb24gVWIoYSxiLGMpe2M9Y3x8W107Zm9yKHZhciBkPWEsZT0wO2U8Yi5sZW5ndGgtMTtlKyspe2lmKCFkLmhhc093blByb3BlcnR5KGJbZV0pKXJldHVybjtkPWRbYltlXV07aWYoYy5pbmRleE9mKGQpPj0wKXJldHVybn1yZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYz17fSxkPWMsZT1hLnNwbGl0KCIuIiksZj0wO2Y8ZS5sZW5ndGgtMTtmKyspZD1kW2VbZl1dPXt9O2RbZVtlLmxlbmd0aC0xXV09YjtyZXR1cm4gY312YXIgV2I9L15cd3sxLDl9JC87ZnVuY3Rpb24gWWIoYSxiKXthPWF8fHt9O2I9Ynx8IiwiO3ZhciBjPVtdO0diKGEsZnVuY3Rpb24oZCxlKXtXYi50ZXN0KGQpJiZlJiZjLnB1c2goZCl9KTtyZXR1cm4gYy5qb2luKGIpfQpmdW5jdGlvbiBaYihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7ZDwxMjg/Yi5wdXNoKGQpOmQ8MjA0OD9iLnB1c2goMTkyfGQ+PjYsMTI4fGQmNjMpOmQ8NTUyOTZ8fGQ+PTU3MzQ0P2IucHVzaCgyMjR8ZD4+MTIsMTI4fGQ+PjYmNjMsMTI4fGQmNjMpOihkPTY1NTM2KygoZCYxMDIzKTw8MTB8YS5jaGFyQ29kZUF0KCsrYykmMTAyMyksYi5wdXNoKDI0MHxkPj4xOCwxMjh8ZD4+MTImNjMsMTI4fGQ+PjYmNjMsMTI4fGQmNjMpKX1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYil9ZnVuY3Rpb24gJGIoYSl7aWYoIWEpcmV0dXJuIGE7dmFyIGI9YTt0cnl7Yj1kZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goZCl7fXZhciBjPWIuc3BsaXQoIiwiKTtyZXR1cm4gYy5sZW5ndGg9PT0yJiZjWzBdPT09Y1sxXT9jWzBdOmF9CmZ1bmN0aW9uIGFjKGEsYixjKXtmdW5jdGlvbiBkKG4pe3ZhciBwPW4uc3BsaXQoIj0iKVswXTtpZihhLmluZGV4T2YocCk8MClyZXR1cm4gbjtpZihjIT09dm9pZCAwKXJldHVybiBwKyI9IitjfWZ1bmN0aW9uIGUobil7cmV0dXJuIG4uc3BsaXQoIiYiKS5tYXAoZCkuZmlsdGVyKGZ1bmN0aW9uKHApe3JldHVybiBwIT09dm9pZCAwfSkuam9pbigiJiIpfXZhciBmPWIuaHJlZi5zcGxpdCgvWz8jXS8pWzBdLGc9Yi5zZWFyY2gsaD1iLmhhc2g7Z1swXT09PSI/IiYmKGc9Zy5zdWJzdHJpbmcoMSkpO2hbMF09PT0iIyImJihoPWguc3Vic3RyaW5nKDEpKTtnPWUoZyk7aD1lKGgpO2chPT0iIiYmKGc9Ij8iK2cpO2ghPT0iIiYmKGg9IiMiK2gpO3ZhciBsPSIiK2YrZytoO2xbbC5sZW5ndGgtMV09PT0iLyImJihsPWwuc3Vic3RyaW5nKDAsbC5sZW5ndGgtMSkpO3JldHVybiBsfQpmdW5jdGlvbiBiYyhhKXtmb3IodmFyIGI9MDtiPDM7KytiKXRyeXt2YXIgYz1kZWNvZGVVUklDb21wb25lbnQoYSkucmVwbGFjZSgvXCsvZywiICIpO2lmKGM9PT1hKWJyZWFrO2E9Y31jYXRjaChkKXtyZXR1cm4iIn1yZXR1cm4gYX1mdW5jdGlvbiBjYygpe3ZhciBhPUEsYjthOnt2YXIgYz1hLmNyeXB0b3x8YS5tc0NyeXB0bztpZihjJiZjLmdldFJhbmRvbVZhbHVlcyl0cnl7dmFyIGQ9bmV3IFVpbnQ4QXJyYXkoMjUpO2MuZ2V0UmFuZG9tVmFsdWVzKGQpO2I9YnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx3KGQpKSkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKTticmVhayBhfWNhdGNoKGUpe31iPXZvaWQgMH1yZXR1cm4gYn07LyoKCiBDb3B5cmlnaHQgR29vZ2xlIExMQwogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyIGRjPWdsb2JhbFRoaXMudHJ1c3RlZFR5cGVzLGVjO2Z1bmN0aW9uIGZjKCl7dmFyIGE9bnVsbDtpZighZGMpcmV0dXJuIGE7dHJ5e3ZhciBiPWZ1bmN0aW9uKGMpe3JldHVybiBjfTthPWRjLmNyZWF0ZVBvbGljeSgiZ29vZyNodG1sIix7Y3JlYXRlSFRNTDpiLGNyZWF0ZVNjcmlwdDpiLGNyZWF0ZVNjcmlwdFVSTDpifSl9Y2F0Y2goYyl7fXJldHVybiBhfWZ1bmN0aW9uIGhjKCl7ZWM9PT12b2lkIDAmJihlYz1mYygpKTtyZXR1cm4gZWN9O3ZhciBpYz1mdW5jdGlvbihhKXt0aGlzLkg9YX07aWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSCsiIn07ZnVuY3Rpb24gamMoYSl7dmFyIGI9YSxjPWhjKCksZD1jP2MuY3JlYXRlU2NyaXB0VVJMKGIpOmI7cmV0dXJuIG5ldyBpYyhkKX1mdW5jdGlvbiBrYyhhKXtpZihhIGluc3RhbmNlb2YgaWMpcmV0dXJuIGEuSDt0aHJvdyBFcnJvcigiIik7fTt2YXIgbGM9QWEoWyIiXSksbWM9emEoWyJceDAwIl0sWyJcXDAiXSksbmM9emEoWyJcbiJdLFsiXFxuIl0pLG9jPXphKFsiXHgwMCJdLFsiXFx1MDAwMCJdKTtmdW5jdGlvbiBwYyhhKXtyZXR1cm4gYS50b1N0cmluZygpLmluZGV4T2YoImAiKT09PS0xfXBjKGZ1bmN0aW9uKGEpe3JldHVybiBhKGxjKX0pfHxwYyhmdW5jdGlvbihhKXtyZXR1cm4gYShtYyl9KXx8cGMoZnVuY3Rpb24oYSl7cmV0dXJuIGEobmMpfSl8fHBjKGZ1bmN0aW9uKGEpe3JldHVybiBhKG9jKX0pO3ZhciBxYz1mdW5jdGlvbihhKXt0aGlzLkg9YX07cWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSH07dmFyIHJjPWZ1bmN0aW9uKGEpe3RoaXMuSnM9YX07ZnVuY3Rpb24gc2MoYSl7cmV0dXJuIG5ldyByYyhmdW5jdGlvbihiKXtyZXR1cm4gYi5zdWJzdHIoMCxhLmxlbmd0aCsxKS50b0xvd2VyQ2FzZSgpPT09YSsiOiJ9KX12YXIgdGM9W3NjKCJkYXRhIiksc2MoImh0dHAiKSxzYygiaHR0cHMiKSxzYygibWFpbHRvIiksc2MoImZ0cCIpLG5ldyByYyhmdW5jdGlvbihhKXtyZXR1cm4vXlteOl0qKFsvPyNdfCQpLy50ZXN0KGEpfSldO2Z1bmN0aW9uIHVjKGEpe3ZhciBiO2I9Yj09PXZvaWQgMD90YzpiO2lmKGEgaW5zdGFuY2VvZiBxYylyZXR1cm4gYTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXTtpZihkIGluc3RhbmNlb2YgcmMmJmQuSnMoYSkpcmV0dXJuIG5ldyBxYyhhKX19dmFyIHZjPS9eXHMqKD8hamF2YXNjcmlwdDopKD86W1x3Ky4tXSs6fFteOi8/I10qKD86Wy8/I118JCkpL2k7CmZ1bmN0aW9uIHdjKGEpe3ZhciBiO2lmKGEgaW5zdGFuY2VvZiBxYylpZihhIGluc3RhbmNlb2YgcWMpYj1hLkg7ZWxzZSB0aHJvdyBFcnJvcigiIik7ZWxzZSBiPXZjLnRlc3QoYSk/YTp2b2lkIDA7cmV0dXJuIGJ9O2Z1bmN0aW9uIHhjKGEsYil7dmFyIGM9d2MoYik7YyE9PXZvaWQgMCYmKGEuYWN0aW9uPWMpfTtmdW5jdGlvbiB5YyhhLGIpe3Rocm93IEVycm9yKGI9PT12b2lkIDA/InVuZXhwZWN0ZWQgdmFsdWUgIithKyIhIjpiKTt9O3ZhciB6Yz1mdW5jdGlvbihhKXt0aGlzLkg9YX07emMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSCsiIn07dmFyIEJjPWZ1bmN0aW9uKCl7dGhpcy5IPUFjWzBdLnRvTG93ZXJDYXNlKCl9O0JjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkh9O2Z1bmN0aW9uIENjKGEsYil7dmFyIGM9W25ldyBCY107aWYoYy5sZW5ndGg9PT0wKXRocm93IEVycm9yKCIiKTt2YXIgZD1jLm1hcChmdW5jdGlvbihmKXt2YXIgZztpZihmIGluc3RhbmNlb2YgQmMpZz1mLkg7ZWxzZSB0aHJvdyBFcnJvcigiIik7cmV0dXJuIGd9KSxlPWIudG9Mb3dlckNhc2UoKTtpZihkLmV2ZXJ5KGZ1bmN0aW9uKGYpe3JldHVybiBlLmluZGV4T2YoZikhPT0wfSkpdGhyb3cgRXJyb3IoJ0F0dHJpYnV0ZSAiJytiKyciIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgYWxsb3dlZCBwcmVmaXhlcy4nKTthLnNldEF0dHJpYnV0ZShiLCJ0cnVlIil9O3ZhciBEYz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT09InN0cmluZyIpcmV0dXJuIHR5cGVvZiBiIT09InN0cmluZyJ8fGIubGVuZ3RoIT0xPy0xOmEuaW5kZXhPZihiLDApO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9OyJBUlRJQ0xFIFNFQ1RJT04gTkFWIEFTSURFIEgxIEgyIEgzIEg0IEg1IEg2IEhFQURFUiBGT09URVIgQUREUkVTUyBQIEhSIFBSRSBCTE9DS1FVT1RFIE9MIFVMIExIIExJIERMIERUIEREIEZJR1VSRSBGSUdDQVBUSU9OIE1BSU4gRElWIEVNIFNUUk9ORyBTTUFMTCBTIENJVEUgUSBERk4gQUJCUiBSVUJZIFJCIFJUIFJUQyBSUCBEQVRBIFRJTUUgQ09ERSBWQVIgU0FNUCBLQkQgU1VCIFNVUCBJIEIgVSBNQVJLIEJESSBCRE8gU1BBTiBCUiBXQlIgTk9CUiBJTlMgREVMIFBJQ1RVUkUgUEFSQU0gVFJBQ0sgTUFQIFRBQkxFIENBUFRJT04gQ09MR1JPVVAgQ09MIFRCT0RZIFRIRUFEIFRGT09UIFRSIFREIFRIIFNFTEVDVCBEQVRBTElTVCBPUFRHUk9VUCBPUFRJT04gT1VUUFVUIFBST0dSRVNTIE1FVEVSIEZJRUxEU0VUIExFR0VORCBERVRBSUxTIFNVTU1BUlkgTUVOVSBESUFMT0cgU0xPVCBDQU5WQVMgRk9OVCBDRU5URVIgQUNST05ZTSBCQVNFRk9OVCBCSUcgRElSIEhHUk9VUCBTVFJJS0UgVFQiLnNwbGl0KCIgIikuY29uY2F0KFsiQlVUVE9OIiwKIklOUFVUIl0pO2Z1bmN0aW9uIEVjKGEpe3JldHVybiBhPT09bnVsbD8ibnVsbCI6YT09PXZvaWQgMD8idW5kZWZpbmVkIjphfTt2YXIgQT13aW5kb3csRmM9W10sR2M9d2luZG93Lmhpc3RvcnksQj1kb2N1bWVudCxIYz1uYXZpZ2F0b3I7ZnVuY3Rpb24gSWMoKXt2YXIgYTt0cnl7YT1IYy5zZXJ2aWNlV29ya2VyfWNhdGNoKGIpe3JldHVybn1yZXR1cm4gYX12YXIgSmM9Qi5jdXJyZW50U2NyaXB0LEtjPUpjJiZKYy5zcmM7ZnVuY3Rpb24gTWMoYSxiKXt2YXIgYz1BLGQ9Y1thXTtjW2FdPWQ9PT12b2lkIDA/YjpkO3JldHVybiBjW2FdfWZ1bmN0aW9uIE5jKGEpe3JldHVybihIYy51c2VyQWdlbnR8fCIiKS5pbmRleE9mKGEpIT09LTF9ZnVuY3Rpb24gT2MoKXtyZXR1cm4gTmMoIkZpcmVmb3giKXx8TmMoIkZ4aU9TIil9ZnVuY3Rpb24gUGMoKXtyZXR1cm4oTmMoIkdTQSIpfHxOYygiR29vZ2xlQXBwIikpJiYoTmMoImlQaG9uZSIpfHxOYygiaVBhZCIpKX1mdW5jdGlvbiBRYygpe3JldHVybiBOYygiRWRnLyIpfHxOYygiRWRnQS8iKXx8TmMoIkVkZ2lPUy8iKX0KdmFyIFJjPXthc3luYzoxLG5vbmNlOjEsb25lcnJvcjoxLG9ubG9hZDoxLHNyYzoxLHR5cGU6MX0sU2M9e2hlaWdodDoxLG9ubG9hZDoxLHNyYzoxLHN0eWxlOjEsd2lkdGg6MX07ZnVuY3Rpb24gVGMoYSxiLGMpe2ImJkdiKGIsZnVuY3Rpb24oZCxlKXtkPWQudG9Mb3dlckNhc2UoKTtjLmhhc093blByb3BlcnR5KGQpfHxhLnNldEF0dHJpYnV0ZShkLGUpfSl9CmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7dmFyIGY9Qi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtUYyhmLGQsUmMpO2YudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtmLmFzeW5jPWQmJmQuYXN5bmM9PT0hMT8hMTohMDt2YXIgZztnPWpjKEVjKGEpKTtmLnNyYz1rYyhnKTt2YXIgaCxsPWYub3duZXJEb2N1bWVudDtsPWw9PT12b2lkIDA/ZG9jdW1lbnQ6bDt2YXIgbixwLHE9KHA9KG49bCkucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOnAuY2FsbChuLCJzY3JpcHRbbm9uY2VdIik7KGg9cT09bnVsbD8iIjpxLm5vbmNlfHxxLmdldEF0dHJpYnV0ZSgibm9uY2UiKXx8IiIpJiZmLnNldEF0dHJpYnV0ZSgibm9uY2UiLGgpO2ImJihmLm9ubG9hZD1iKTtjJiYoZi5vbmVycm9yPWMpO2U/ZS5hcHBlbmRDaGlsZChmKTpWYy5CcyhmKTtyZXR1cm4gZn0KZnVuY3Rpb24gV2MoKXtpZihLYyl7dmFyIGE9S2MudG9Mb3dlckNhc2UoKTtpZihhLmluZGV4T2YoImh0dHBzOi8vIik9PT0wKXJldHVybiAyO2lmKGEuaW5kZXhPZigiaHR0cDovLyIpPT09MClyZXR1cm4gM31yZXR1cm4gMX1mdW5jdGlvbiBYYyhhLGIsYyxkLGUsZil7Zj1mPT09dm9pZCAwPyEwOmY7dmFyIGc9ZSxoPSExO2d8fChnPUIuY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksaD0hMCk7VGMoZyxjLFNjKTtkJiZHYihkLGZ1bmN0aW9uKG4scCl7Zy5kYXRhc2V0W25dPXB9KTtmJiYoZy5oZWlnaHQ9IjAiLGcud2lkdGg9IjAiLGcuc3R5bGUuZGlzcGxheT0ibm9uZSIsZy5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKTthIT09dm9pZCAwJiYoZy5zcmM9YSk7aWYoaCl7dmFyIGw9Qi5ib2R5JiZCLmJvZHkubGFzdENoaWxkfHxCLmJvZHl8fEIuaGVhZDtsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcsbCl9YiYmKGcub25sb2FkPWIpO3JldHVybiBnfQpmdW5jdGlvbiBaYygpe3JldHVybiBWYy5Fci5hcHBseShWYyx3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpfWZ1bmN0aW9uICRjKGEsYixjLGQpe2EuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKGIsYywhIWQpfWZ1bmN0aW9uIGFkKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfWZ1bmN0aW9uIGJkKGEpe0Euc2V0VGltZW91dChhLDApfWZ1bmN0aW9uIGNkKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQsZT0oZD1BKS5zZXRJbnRlcnZhbC5hcHBseShkLFthLGJdLmNvbmNhdCh3KGMpKSk7RmMucHVzaChlKTtyZXR1cm4gZX0KZnVuY3Rpb24gZGQoYSl7dmFyIGI9QTt5YihiLnF1ZXVlTWljcm90YXNrKT9iLnF1ZXVlTWljcm90YXNrKGEpOnliKGIuUHJvbWlzZSkmJmIuUHJvbWlzZS5yZXNvbHZlP2IuUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe2EoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk6YmQoYSl9ZnVuY3Rpb24gZWQoYSxiKXtyZXR1cm4gYSYmYiYmYS5hdHRyaWJ1dGVzJiZhLmF0dHJpYnV0ZXNbYl0/YS5hdHRyaWJ1dGVzW2JdLnZhbHVlOm51bGx9ZnVuY3Rpb24gZmQoYSl7dmFyIGI9YS5pbm5lclRleHR8fGEudGV4dENvbnRlbnR8fCIiO2ImJmIhPT0iICImJihiPWIucmVwbGFjZSgvXltcc1x4YTBdKy9nLCIiKSxiPWIucmVwbGFjZSgvW1xzXHhhMF0rJC9nLCIiKSk7YiYmKGI9Yi5yZXBsYWNlKC8oXHhhMCt8XHN7Mix9fFxufFxyXHQpL2csIiAiKSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGdkKGEpe3ZhciBiPUIuY3JlYXRlRWxlbWVudCgiZGl2IiksYz1iLGQsZT1FYygiQTxkaXY+IithKyI8L2Rpdj4iKSxmPWhjKCksZz1mP2YuY3JlYXRlSFRNTChlKTplO2Q9bmV3IHpjKGcpO2lmKGMubm9kZVR5cGU9PT0xJiYvXihzY3JpcHR8c3R5bGUpJC9pLnRlc3QoYy50YWdOYW1lKSl0aHJvdyBFcnJvcigiIik7dmFyIGg7aWYoZCBpbnN0YW5jZW9mIHpjKWg9ZC5IO2Vsc2UgdGhyb3cgRXJyb3IoIiIpO2MuaW5uZXJIVE1MPWg7Yj1iLmxhc3RDaGlsZDtmb3IodmFyIGw9W107YiYmYi5maXJzdENoaWxkOylsLnB1c2goYi5yZW1vdmVDaGlsZChiLmZpcnN0Q2hpbGQpKTtyZXR1cm4gbH0KZnVuY3Rpb24gaGQoYSxiLGMpe2M9Y3x8MTAwO2Zvcih2YXIgZD17fSxlPTA7ZTxiLmxlbmd0aDtlKyspZFtiW2VdXT0hMDtmb3IodmFyIGY9YSxnPTA7ZiYmZzw9YztnKyspe2lmKGRbU3RyaW5nKGYudGFnTmFtZSkudG9Mb3dlckNhc2UoKV0pcmV0dXJuIGY7Zj1mLnBhcmVudEVsZW1lbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaWQoYSxiLGMpe3ZhciBkO3RyeXtkPUhjLnNlbmRCZWFjb24mJkhjLnNlbmRCZWFjb24oYSl9Y2F0Y2goZSl7c2IoIlRBR0dJTkciLDE1KX1kP2I9PW51bGx8fGIoKTpaYyhhLGIsYyl9ZnVuY3Rpb24gamQoYSxiKXt0cnl7aWYoSGMuc2VuZEJlYWNvbiE9PXZvaWQgMClyZXR1cm4gSGMuc2VuZEJlYWNvbihhLGIpfWNhdGNoKGMpe3NiKCJUQUdHSU5HIiwxNSl9cmV0dXJuITF9ZnVuY3Rpb24ga2QoKXtyZXR1cm4gSGMuc2VuZEJlYWNvbiE9PXZvaWQgMH0KdmFyIGxkPXtjYWNoZToibm8tc3RvcmUiLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixrZWVwYWxpdmU6ITAsbWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixyZWRpcmVjdDoiZm9sbG93In07CmZ1bmN0aW9uIG1kKGEsYixjLGQsZSl7aWYobmQoKSl7dmFyIGY9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxsZCk7YiYmKGYuYm9keT1iKTtjJiYoYy5hdHRyaWJ1dGlvblJlcG9ydGluZyYmKGYuYXR0cmlidXRpb25SZXBvcnRpbmc9Yy5hdHRyaWJ1dGlvblJlcG9ydGluZyksYy5icm93c2luZ1RvcGljcyE9PXZvaWQgMCYmKGYuYnJvd3NpbmdUb3BpY3M9Yy5icm93c2luZ1RvcGljcyksYy5jcmVkZW50aWFscyYmKGYuY3JlZGVudGlhbHM9Yy5jcmVkZW50aWFscyksYy5rZWVwYWxpdmUhPT12b2lkIDAmJihmLmtlZXBhbGl2ZT1jLmtlZXBhbGl2ZSksYy5tZXRob2QmJihmLm1ldGhvZD1jLm1ldGhvZCksYy5tb2RlJiYoZi5tb2RlPWMubW9kZSkpO3RyeXt2YXIgZz1BLmZldGNoKGEsZik7aWYoZylyZXR1cm4gZy50aGVuKGZ1bmN0aW9uKGwpe2wmJihsLm9rfHxsLnN0YXR1cz09PTApP2Q9PW51bGx8fGQoKTplPT1udWxsfHxlKCl9KS5jYXRjaChmdW5jdGlvbigpe2U9PQpudWxsfHxlKCl9KSwhMH1jYXRjaChsKXt9fWlmKChjPT1udWxsPzA6Yy5RZyl8fChjPT1udWxsPzA6Yy5jcmVkZW50aWFscykmJmMuY3JlZGVudGlhbHMhPT0iaW5jbHVkZSIpcmV0dXJuIGU9PW51bGx8fGUoKSwhMTtpZihiKXt2YXIgaD1qZChhLGIpO2g/ZD09bnVsbHx8ZCgpOmU9PW51bGx8fGUoKTtyZXR1cm4gaH1WYy53dChhLGQsZSk7cmV0dXJuITB9ZnVuY3Rpb24gbmQoKXtyZXR1cm4geWIoQS5mZXRjaCl9ZnVuY3Rpb24gb2QoYSxiKXt2YXIgYz1hW2JdO2MmJnR5cGVvZiBjLmFuaW1WYWw9PT0ic3RyaW5nIiYmKGM9Yy5hbmltVmFsKTtyZXR1cm4gY31mdW5jdGlvbiBwZCgpe3ZhciBhPUEucGVyZm9ybWFuY2U7aWYoYSYmeWIoYS5ub3cpKXJldHVybiBhLm5vdygpfQpmdW5jdGlvbiBxZCgpe3ZhciBhLGI9QS5wZXJmb3JtYW5jZTtpZihiJiZiLmdldEVudHJpZXNCeVR5cGUpdHJ5e3ZhciBjPWIuZ2V0RW50cmllc0J5VHlwZSgibmF2aWdhdGlvbiIpO2MmJmMubGVuZ3RoPjAmJihhPWNbMF0udHlwZSl9Y2F0Y2goZCl7cmV0dXJuImUifWlmKCFhKXJldHVybiJ1Ijtzd2l0Y2goYSl7Y2FzZSAibmF2aWdhdGUiOnJldHVybiJuIjtjYXNlICJiYWNrX2ZvcndhcmQiOnJldHVybiJoIjtjYXNlICJyZWxvYWQiOnJldHVybiJyIjtjYXNlICJwcmVyZW5kZXIiOnJldHVybiJwIjtkZWZhdWx0OnJldHVybiJ4In19ZnVuY3Rpb24gcmQoKXtyZXR1cm4gQS5wZXJmb3JtYW5jZXx8dm9pZCAwfWZ1bmN0aW9uIHNkKCl7dmFyIGE9QS53ZWJQaXhlbHNNYW5hZ2VyO3JldHVybiBhP2EuY3JlYXRlU2hvcGlmeUV4dGVuZCE9PXZvaWQgMDohMX0KdmFyIFZjPXtFcjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uZXcgSW1hZ2UoMSwxKTtUYyhlLGQse30pO2Uub25sb2FkPWZ1bmN0aW9uKCl7ZS5vbmxvYWQ9bnVsbDtiJiZiKCl9O2Uub25lcnJvcj1mdW5jdGlvbigpe2Uub25lcnJvcj1udWxsO2MmJmMoKX07ZS5zcmM9YTtyZXR1cm4gZX0sQnM6ZnVuY3Rpb24oYSl7dmFyIGI9Qi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF18fEIuYm9keXx8Qi5oZWFkO2IucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKX0sd3Q6aWR9O2Z1bmN0aW9uIHRkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkmJnRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gdWQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKT09PXRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gdmQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKXx8dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiB3ZChhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSksZD10aGlzLmV2YWx1YXRlKGIpO3JldHVybiBTdHJpbmcoYykuaW5kZXhPZihTdHJpbmcoZCkpPi0xfWZ1bmN0aW9uIHhkKGEsYil7dmFyIGM9U3RyaW5nKHRoaXMuZXZhbHVhdGUoYSkpLGQ9U3RyaW5nKHRoaXMuZXZhbHVhdGUoYikpO3JldHVybiBjLnN1YnN0cmluZygwLGQubGVuZ3RoKT09PWR9CmZ1bmN0aW9uIHlkKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKSxkPXRoaXMuZXZhbHVhdGUoYik7c3dpdGNoKGMpe2Nhc2UgInBhZ2VMb2NhdGlvbiI6dmFyIGU9QS5sb2NhdGlvbi5ocmVmO2QgaW5zdGFuY2VvZiBrYiYmZC5nZXQoInN0cmlwUHJvdG9jb2wiKSYmKGU9ZS5yZXBsYWNlKC9eaHR0cHM/OlwvXC8vLCIiKSk7cmV0dXJuIGV9fTsvKgogalF1ZXJ5IChjKSAyMDA1LCAyMDEyIGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIGpxdWVyeS5vcmcvbGljZW5zZS4KKi8KdmFyIHpkPS9cW29iamVjdCAoQm9vbGVhbnxOdW1iZXJ8U3RyaW5nfEZ1bmN0aW9ufEFycmF5fERhdGV8UmVnRXhwKVxdLyxBZD1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBTdHJpbmcoYSk7dmFyIGI9emQuZXhlYyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0KGEpKSk7cmV0dXJuIGI/YlsxXS50b0xvd2VyQ2FzZSgpOiJvYmplY3QifSxCZD1mdW5jdGlvbihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoT2JqZWN0KGEpLGIpfSxDZD1mdW5jdGlvbihhKXtpZighYXx8QWQoYSkhPSJvYmplY3QifHxhLm5vZGVUeXBlfHxhPT1hLndpbmRvdylyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUJkKGEsImNvbnN0cnVjdG9yIikmJiFCZChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWZvcih2YXIgYiBpbiBhKTtyZXR1cm4gYj09PXZvaWQgMHx8CkJkKGEsYil9LEVkPWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8KEFkKGEpPT0iYXJyYXkiP1tdOnt9KSxkO2ZvcihkIGluIGEpaWYoQmQoYSxkKSl7dmFyIGU9YVtkXTtBZChlKT09ImFycmF5Ij8oQWQoY1tkXSkhPSJhcnJheSImJihjW2RdPVtdKSxjW2RdPUVkKGUsY1tkXSkpOkNkKGUpPyhDZChjW2RdKXx8KGNbZF09e30pLGNbZF09RWQoZSxjW2RdKSk6Y1tkXT1lfXJldHVybiBjfTtmdW5jdGlvbiBGZChhKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIiYmYT49MCYmaXNGaW5pdGUoYSkmJmElMT09PTB8fHR5cGVvZiBhPT09InN0cmluZyImJmFbMF0hPT0iLSImJmE9PT0iIitwYXJzZUludChhKX07dmFyIEdkPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9bXTphO3RoaXMubGE9bmV3IFVhO3RoaXMudmFsdWVzPVtdO3RoaXMuTmE9ITE7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKEZkKGIpP3RoaXMudmFsdWVzW051bWJlcihiKV09YVtOdW1iZXIoYildOnRoaXMubGEuc2V0KGIsYVtiXSkpfTtrPUdkLnByb3RvdHlwZTtrLnRvU3RyaW5nPWZ1bmN0aW9uKGEpe2lmKGEmJmEuaW5kZXhPZih0aGlzKT49MClyZXR1cm4iIjtmb3IodmFyIGI9W10sYz0wO2M8dGhpcy52YWx1ZXMubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy52YWx1ZXNbY107ZD09PW51bGx8fGQ9PT12b2lkIDA/Yi5wdXNoKCIiKTpkIGluc3RhbmNlb2YgR2Q/KGE9YXx8W10sYS5wdXNoKHRoaXMpLGIucHVzaChkLnRvU3RyaW5nKGEpKSxhLnBvcCgpKTpiLnB1c2goU3RyaW5nKGQpKX1yZXR1cm4gYi5qb2luKCIsIil9OwprLnNldD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLk5hKWlmKGE9PT0ibGVuZ3RoIil7aWYoIUZkKGIpKXRocm93IGNiKEVycm9yKCJSYW5nZUVycm9yOiBMZW5ndGggcHJvcGVydHkgbXVzdCBiZSBhIHZhbGlkIGludGVnZXIuIikpO3RoaXMudmFsdWVzLmxlbmd0aD1OdW1iZXIoYil9ZWxzZSBGZChhKT90aGlzLnZhbHVlc1tOdW1iZXIoYSldPWI6dGhpcy5sYS5zZXQoYSxiKX07ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0ibGVuZ3RoIj90aGlzLmxlbmd0aCgpOkZkKGEpP3RoaXMudmFsdWVzW051bWJlcihhKV06dGhpcy5sYS5nZXQoYSl9O2subGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aH07ay5GYT1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmxhLkZhKCksYj0wO2I8dGhpcy52YWx1ZXMubGVuZ3RoO2IrKyl0aGlzLnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShiKSYmYS5wdXNoKFN0cmluZyhiKSk7cmV0dXJuIGF9OwprLmhjPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubGEuaGMoKSxiPTA7Yjx0aGlzLnZhbHVlcy5sZW5ndGg7YisrKXRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGIpJiZhLnB1c2godGhpcy52YWx1ZXNbYl0pO3JldHVybiBhfTtrLmZjPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubGEuZmMoKSxiPTA7Yjx0aGlzLnZhbHVlcy5sZW5ndGg7YisrKXRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGIpJiZhLnB1c2goW1N0cmluZyhiKSx0aGlzLnZhbHVlc1tiXV0pO3JldHVybiBhfTtrLnJlbW92ZT1mdW5jdGlvbihhKXtGZChhKT9kZWxldGUgdGhpcy52YWx1ZXNbTnVtYmVyKGEpXTp0aGlzLk5hfHx0aGlzLmxhLnJlbW92ZShhKX07ay5wb3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMucG9wKCl9O2sucHVzaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5wdXNoLmFwcGx5KHRoaXMudmFsdWVzLHcoT2EuYXBwbHkoMCxhcmd1bWVudHMpKSl9O2suc2hpZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMuc2hpZnQoKX07Cmsuc3BsaWNlPWZ1bmN0aW9uKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpO3JldHVybiBiPT09dm9pZCAwJiZjLmxlbmd0aD09PTA/bmV3IEdkKHRoaXMudmFsdWVzLnNwbGljZShhKSk6bmV3IEdkKHRoaXMudmFsdWVzLnNwbGljZS5hcHBseSh0aGlzLnZhbHVlcyxbYSxifHwwXS5jb25jYXQodyhjKSkpKX07ay51bnNoaWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLnVuc2hpZnQuYXBwbHkodGhpcy52YWx1ZXMsdyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIEZkKGEpJiZ0aGlzLnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShhKXx8dGhpcy5sYS5oYXMoYSl9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLk5hPSEwO09iamVjdC5mcmVlemUodGhpcy52YWx1ZXMpfTtrLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmF9OwpmdW5jdGlvbiBIZChhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGgoKTtjKyspYS5oYXMoYykmJihiW2NdPWEuZ2V0KGMpKTtyZXR1cm4gYn07dmFyIElkPWZ1bmN0aW9uKGEsYil7dGhpcy5mdW5jdGlvbk5hbWU9YTt0aGlzLmllPWI7dGhpcy5sYT1uZXcgVWE7dGhpcy5OYT0hMX07az1JZC5wcm90b3R5cGU7ay50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bmN0aW9uTmFtZX07ay5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVuY3Rpb25OYW1lfTtrLmdldEtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdkKHRoaXMuRmEoKSl9O2suaW52b2tlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmllLmNhbGwuYXBwbHkodGhpcy5pZSxbbmV3IEpkKHRoaXMsYSldLmNvbmNhdCh3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpKX07ay5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmllLmFwcGx5KG5ldyBKZCh0aGlzLGEpLGIpfTtrLk5jPWZ1bmN0aW9uKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTt0cnl7cmV0dXJuIHRoaXMuaW52b2tlLmFwcGx5KHRoaXMsW2FdLmNvbmNhdCh3KGIpKSl9Y2F0Y2goYyl7fX07CmsuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmdldChhKX07ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLk5hfHx0aGlzLmxhLnNldChhLGIpfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5oYXMoYSl9O2sucmVtb3ZlPWZ1bmN0aW9uKGEpe3RoaXMuTmF8fHRoaXMubGEucmVtb3ZlKGEpfTtrLkZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuRmEoKX07ay5oYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmhjKCl9O2suZmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5mYygpfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMH07ay5IYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5hfTt2YXIgS2Q9ZnVuY3Rpb24oYSxiKXtJZC5jYWxsKHRoaXMsYSxiKX07d2EoS2QsSWQpO3ZhciBMZD1mdW5jdGlvbihhLGIpe0lkLmNhbGwodGhpcyxhLGIpfTt3YShMZCxJZCk7dmFyIEpkPWZ1bmN0aW9uKGEsYil7dGhpcy5pZT1hO3RoaXMuVD1ifTsKSmQucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuVDtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9mYihiLGEpOmF9O0pkLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWUuZ2V0TmFtZSgpfTtKZC5wcm90b3R5cGUuamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ULmplKCl9O3ZhciBNZD1mdW5jdGlvbigpe3RoaXMubWFwPW5ldyBNYXB9O01kLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm1hcC5zZXQoYSxiKX07TWQucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tYXAuZ2V0KGEpfTt2YXIgTmQ9ZnVuY3Rpb24oKXt0aGlzLmtleXM9W107dGhpcy52YWx1ZXM9W119O05kLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmtleXMucHVzaChhKTt0aGlzLnZhbHVlcy5wdXNoKGIpfTtOZC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMua2V5cy5pbmRleE9mKGEpO2lmKGI+LTEpcmV0dXJuIHRoaXMudmFsdWVzW2JdfTtmdW5jdGlvbiBPZCgpe3RyeXtyZXR1cm4gTWFwP25ldyBNZDpuZXcgTmR9Y2F0Y2goYSl7cmV0dXJuIG5ldyBOZH19O3ZhciBQZD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgUGQpcmV0dXJuIGE7dmFyIGI7YTppZihhPT12b2lkIDB8fEFycmF5LmlzQXJyYXkoYSl8fENkKGEpKWI9ITA7ZWxzZXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgImJvb2xlYW4iOmNhc2UgIm51bWJlciI6Y2FzZSAic3RyaW5nIjpjYXNlICJmdW5jdGlvbiI6Yj0hMDticmVhayBhfWI9ITF9aWYoYil0aHJvdyBFcnJvcigiVHlwZSBvZiBnaXZlbiB2YWx1ZSBoYXMgYW4gZXF1aXZhbGVudCBQaXhpZSB0eXBlLiIpO3RoaXMudmFsdWU9YX07UGQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O1BkLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcodGhpcy52YWx1ZSl9O3ZhciBTZD1mdW5jdGlvbihhKXt0aGlzLnByb21pc2U9YTt0aGlzLk5hPSExO3RoaXMubGE9bmV3IFVhO3RoaXMubGEuc2V0KCJ0aGVuIixSZCh0aGlzKSk7dGhpcy5sYS5zZXQoImNhdGNoIixSZCh0aGlzLCEwKSk7dGhpcy5sYS5zZXQoImZpbmFsbHkiLFJkKHRoaXMsITEsITApKX07az1TZC5wcm90b3R5cGU7ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuZ2V0KGEpfTtrLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuTmF8fHRoaXMubGEuc2V0KGEsYil9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmhhcyhhKX07ay5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy5OYXx8dGhpcy5sYS5yZW1vdmUoYSl9O2suRmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5GYSgpfTtrLmhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuaGMoKX07ay5mYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmZjKCl9Owp2YXIgUmQ9ZnVuY3Rpb24oYSxiLGMpe2I9Yj09PXZvaWQgMD8hMTpiO2M9Yz09PXZvaWQgMD8hMTpjO3JldHVybiBuZXcgS2QoIiIsZnVuY3Rpb24oZCxlKXtiJiYoZT1kLGQ9dm9pZCAwKTtjJiYoZT1kKTtkIGluc3RhbmNlb2YgS2R8fChkPXZvaWQgMCk7ZSBpbnN0YW5jZW9mIEtkfHwoZT12b2lkIDApO3ZhciBmPXRoaXMuVC53YigpLGc9ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RyeXtyZXR1cm4gYz8obC5pbnZva2UoZiksYS5wcm9taXNlKTpsLmludm9rZShmLG4pfWNhdGNoKHApe3JldHVybiBQcm9taXNlLnJlamVjdChwIGluc3RhbmNlb2YgRXJyb3I/bmV3IFBkKHApOlN0cmluZyhwKSl9fX0saD1hLnByb21pc2UudGhlbihkJiZnKGQpLGUmJmcoZSkpO3JldHVybiBuZXcgU2QoaCl9KX07U2QucHJvdG90eXBlLlphPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMH07U2QucHJvdG90eXBlLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmF9O2Z1bmN0aW9uIFRkKGEsYixjKXt2YXIgZD1PZCgpLGU9ZnVuY3Rpb24oZyxoKXtmb3IodmFyIGw9Zy5GYSgpLG49MDtuPGwubGVuZ3RoO24rKyloW2xbbl1dPWYoZy5nZXQobFtuXSkpfSxmPWZ1bmN0aW9uKGcpe2lmKGc9PT1udWxsfHxnPT09dm9pZCAwKXJldHVybiBnO3ZhciBoPWQuZ2V0KGcpO2lmKGgpcmV0dXJuIGg7aWYoZyBpbnN0YW5jZW9mIEdkKXt2YXIgbD1bXTtkLnNldChnLGwpO2Zvcih2YXIgbj1nLkZhKCkscD0wO3A8bi5sZW5ndGg7cCsrKWxbbltwXV09ZihnLmdldChuW3BdKSk7cmV0dXJuIGx9aWYoZyBpbnN0YW5jZW9mIFNkKXJldHVybiBnLnByb21pc2UudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gVGQodSxiLDEpfSxmdW5jdGlvbih1KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoVGQodSxiLDEpKX0pO2lmKGcgaW5zdGFuY2VvZiBrYil7dmFyIHE9e307ZC5zZXQoZyxxKTtlKGcscSk7cmV0dXJuIHF9aWYoZyBpbnN0YW5jZW9mIEtkKXt2YXIgcj1mdW5jdGlvbigpe2Zvcih2YXIgdT0KW10sdj0wO3Y8YXJndW1lbnRzLmxlbmd0aDt2KyspdVt2XT1VZChhcmd1bWVudHNbdl0sYixjKTt2YXIgeD1uZXcgaGIoYj9iLmplKCk6bmV3IFdhKTtiJiZ4LnVlKGIueGIoKSk7cmV0dXJuIGYoZy5hcHBseSh4LHUpKX07ZC5zZXQoZyxyKTtlKGcscik7cmV0dXJuIHJ9dmFyIHQ9ITE7c3dpdGNoKGMpe2Nhc2UgMTp0PSEwO2JyZWFrO2Nhc2UgMjp0PSExO2JyZWFrO2Nhc2UgMzp0PSExO2JyZWFrO2RlZmF1bHQ6fWlmKGcgaW5zdGFuY2VvZiBQZCYmdClyZXR1cm4gZy5nZXRWYWx1ZSgpO3N3aXRjaCh0eXBlb2YgZyl7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAibnVtYmVyIjpjYXNlICJzdHJpbmciOmNhc2UgInVuZGVmaW5lZCI6cmV0dXJuIGc7Y2FzZSAib2JqZWN0IjppZihnPT09Cm51bGwpcmV0dXJuIG51bGx9fTtyZXR1cm4gZihhKX0KZnVuY3Rpb24gVWQoYSxiLGMpe3ZhciBkPU9kKCksZT1mdW5jdGlvbihnLGgpe2Zvcih2YXIgbCBpbiBnKWcuaGFzT3duUHJvcGVydHkobCkmJmguc2V0KGwsZihnW2xdKSl9LGY9ZnVuY3Rpb24oZyl7dmFyIGg9ZC5nZXQoZyk7aWYoaClyZXR1cm4gaDtpZihBcnJheS5pc0FycmF5KGcpfHxIYihnKSl7dmFyIGw9bmV3IEdkO2Quc2V0KGcsbCk7Zm9yKHZhciBuIGluIGcpZy5oYXNPd25Qcm9wZXJ0eShuKSYmbC5zZXQobixmKGdbbl0pKTtyZXR1cm4gbH1pZihDZChnKSl7dmFyIHA9bmV3IGtiO2Quc2V0KGcscCk7ZShnLHApO3JldHVybiBwfWlmKHR5cGVvZiBnPT09ImZ1bmN0aW9uIil7dmFyIHE9bmV3IEtkKCIiLGZ1bmN0aW9uKCl7Zm9yKHZhciB1PU9hLmFwcGx5KDAsYXJndW1lbnRzKSx2PVtdLHg9MDt4PHUubGVuZ3RoO3grKyl2W3hdPVRkKHRoaXMuZXZhbHVhdGUodVt4XSksYixjKTtyZXR1cm4gZih0aGlzLlQuUGooKShnLGcsdikpfSk7ZC5zZXQoZyxxKTtlKGcscSk7cmV0dXJuIHF9dmFyIHI9dHlwZW9mIGc7aWYoZz09PW51bGx8fHI9PT0ic3RyaW5nInx8cj09PSJudW1iZXIifHxyPT09ImJvb2xlYW4iKXJldHVybiBnO3ZhciB0PSExO3N3aXRjaChjKXtjYXNlIDE6dD0hMDticmVhaztjYXNlIDI6dD0hMTticmVhaztkZWZhdWx0On1pZihnIT09dm9pZCAwJiZ0KXJldHVybiBuZXcgUGQoZyl9O3JldHVybiBmKGEpfTt2YXIgVmQ9e3N1cHBvcnRlZE1ldGhvZHM6ImNvbmNhdCBldmVyeSBmaWx0ZXIgZm9yRWFjaCBoYXNPd25Qcm9wZXJ0eSBpbmRleE9mIGpvaW4gbGFzdEluZGV4T2YgbWFwIHBvcCBwdXNoIHJlZHVjZSByZWR1Y2VSaWdodCByZXZlcnNlIHNoaWZ0IHNsaWNlIHNvbWUgc29ydCBzcGxpY2UgdW5zaGlmdCB0b1N0cmluZyIuc3BsaXQoIiAiKSxjb25jYXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPHRoaXMubGVuZ3RoKCk7YysrKWIucHVzaCh0aGlzLmdldChjKSk7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylpZihhcmd1bWVudHNbZF1pbnN0YW5jZW9mIEdkKWZvcih2YXIgZT1hcmd1bWVudHNbZF0sZj0wO2Y8ZS5sZW5ndGgoKTtmKyspYi5wdXNoKGUuZ2V0KGYpKTtlbHNlIGIucHVzaChhcmd1bWVudHNbZF0pO3JldHVybiBuZXcgR2QoYil9LGV2ZXJ5OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD0wO2Q8dGhpcy5sZW5ndGgoKSYmCmQ8YztkKyspaWYodGhpcy5oYXMoZCkmJiFiLmludm9rZShhLHRoaXMuZ2V0KGQpLGQsdGhpcykpcmV0dXJuITE7cmV0dXJuITB9LGZpbHRlcjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9W10sZT0wO2U8dGhpcy5sZW5ndGgoKSYmZTxjO2UrKyl0aGlzLmhhcyhlKSYmYi5pbnZva2UoYSx0aGlzLmdldChlKSxlLHRoaXMpJiZkLnB1c2godGhpcy5nZXQoZSkpO3JldHVybiBuZXcgR2QoZCl9LGZvckVhY2g6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5sZW5ndGgoKSxkPTA7ZDx0aGlzLmxlbmd0aCgpJiZkPGM7ZCsrKXRoaXMuaGFzKGQpJiZiLmludm9rZShhLHRoaXMuZ2V0KGQpLGQsdGhpcyl9LGhhc093blByb3BlcnR5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaGFzKGIpfSxpbmRleE9mOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGU9Yz09PXZvaWQgMD8wOk51bWJlcihjKTtlPDAmJihlPU1hdGgubWF4KGQrZSwwKSk7Zm9yKHZhciBmPQplO2Y8ZDtmKyspaWYodGhpcy5oYXMoZikmJnRoaXMuZ2V0KGYpPT09YilyZXR1cm4gZjtyZXR1cm4tMX0sam9pbjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDx0aGlzLmxlbmd0aCgpO2QrKyljLnB1c2godGhpcy5nZXQoZCkpO3JldHVybiBjLmpvaW4oYil9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGU9ZC0xO2MhPT12b2lkIDAmJihlPWM8MD9kK2M6TWF0aC5taW4oYyxlKSk7Zm9yKHZhciBmPWU7Zj49MDtmLS0paWYodGhpcy5oYXMoZikmJnRoaXMuZ2V0KGYpPT09YilyZXR1cm4gZjtyZXR1cm4tMX0sbWFwOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD1bXSxlPTA7ZTx0aGlzLmxlbmd0aCgpJiZlPGM7ZSsrKXRoaXMuaGFzKGUpJiYoZFtlXT1iLmludm9rZShhLHRoaXMuZ2V0KGUpLGUsdGhpcykpO3JldHVybiBuZXcgR2QoZCl9LHBvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvcCgpfSxwdXNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2guYXBwbHkodGhpcywKdyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKX0scmVkdWNlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGUsZj0wO2lmKGMhPT12b2lkIDApZT1jO2Vsc2V7aWYoZD09PTApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlIG9uIExpc3Qgd2l0aCBubyBlbGVtZW50cy4iKSk7Zm9yKHZhciBnPTA7ZzxkO2crKylpZih0aGlzLmhhcyhnKSl7ZT10aGlzLmdldChnKTtmPWcrMTticmVha31pZihnPT09ZCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBSZWR1Y2Ugb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTt9Zm9yKHZhciBoPWY7aDxkO2grKyl0aGlzLmhhcyhoKSYmKGU9Yi5pbnZva2UoYSxlLHRoaXMuZ2V0KGgpLGgsdGhpcykpO3JldHVybiBlfSxyZWR1Y2VSaWdodDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5sZW5ndGgoKSxlLGY9ZC0xO2lmKGMhPT12b2lkIDApZT1jO2Vsc2V7aWYoZD09PTApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlUmlnaHQgb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTsKZm9yKHZhciBnPTE7Zzw9ZDtnKyspaWYodGhpcy5oYXMoZC1nKSl7ZT10aGlzLmdldChkLWcpO2Y9ZC0oZysxKTticmVha31pZihnPmQpdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlUmlnaHQgb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTt9Zm9yKHZhciBoPWY7aD49MDtoLS0pdGhpcy5oYXMoaCkmJihlPWIuaW52b2tlKGEsZSx0aGlzLmdldChoKSxoLHRoaXMpKTtyZXR1cm4gZX0scmV2ZXJzZTpmdW5jdGlvbigpe2Zvcih2YXIgYT1IZCh0aGlzKSxiPWEubGVuZ3RoLTEsYz0wO2I+PTA7Yi0tLGMrKylhLmhhc093blByb3BlcnR5KGIpP3RoaXMuc2V0KGMsYVtiXSk6dGhpcy5yZW1vdmUoYyk7cmV0dXJuIHRoaXN9LHNoaWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hpZnQoKX0sc2xpY2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubGVuZ3RoKCk7Yj09PXZvaWQgMCYmKGI9MCk7Yj1iPDA/TWF0aC5tYXgoZCtiLDApOk1hdGgubWluKGIsZCk7Yz1jPT09CnZvaWQgMD9kOmM8MD9NYXRoLm1heChkK2MsMCk6TWF0aC5taW4oYyxkKTtjPU1hdGgubWF4KGIsYyk7Zm9yKHZhciBlPVtdLGY9YjtmPGM7ZisrKWUucHVzaCh0aGlzLmdldChmKSk7cmV0dXJuIG5ldyBHZChlKX0sc29tZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9MDtkPHRoaXMubGVuZ3RoKCkmJmQ8YztkKyspaWYodGhpcy5oYXMoZCkmJmIuaW52b2tlKGEsdGhpcy5nZXQoZCksZCx0aGlzKSlyZXR1cm4hMDtyZXR1cm4hMX0sc29ydDpmdW5jdGlvbihhLGIpe3ZhciBjPUhkKHRoaXMpO2I9PT12b2lkIDA/Yy5zb3J0KCk6Yy5zb3J0KGZ1bmN0aW9uKGUsZil7cmV0dXJuIE51bWJlcihiLmludm9rZShhLGUsZikpfSk7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspYy5oYXNPd25Qcm9wZXJ0eShkKT90aGlzLnNldChkLGNbZF0pOnRoaXMucmVtb3ZlKGQpO3JldHVybiB0aGlzfSxzcGxpY2U6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLnNwbGljZS5hcHBseSh0aGlzLApbYixjXS5jb25jYXQodyhPYS5hcHBseSgzLGFyZ3VtZW50cykpKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdW5zaGlmdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy51bnNoaWZ0LmFwcGx5KHRoaXMsdyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKX19O3ZhciBXZD17Y2hhckF0OjEsY29uY2F0OjEsaW5kZXhPZjoxLGxhc3RJbmRleE9mOjEsbWF0Y2g6MSxyZXBsYWNlOjEsc2VhcmNoOjEsc2xpY2U6MSxzcGxpdDoxLHN1YnN0cmluZzoxLHRvTG93ZXJDYXNlOjEsdG9Mb2NhbGVMb3dlckNhc2U6MSx0b1N0cmluZzoxLHRvVXBwZXJDYXNlOjEsdG9Mb2NhbGVVcHBlckNhc2U6MSx0cmltOjF9LFhkPW5ldyBUYSgiYnJlYWsiKSxZZD1uZXcgVGEoImNvbnRpbnVlIik7ZnVuY3Rpb24gWmQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSt0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uICRkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkmJnRoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIGFlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyk7aWYoIShmIGluc3RhbmNlb2YgR2QpKXRocm93IEVycm9yKCJFcnJvcjogTm9uLUxpc3QgYXJndW1lbnQgZ2l2ZW4gdG8gQXBwbHkgaW5zdHJ1Y3Rpb24uIik7aWYoZD09PW51bGx8fGQ9PT12b2lkIDApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogQ2FuJ3QgcmVhZCBwcm9wZXJ0eSAiK2UrIiBvZiAiK2QrIi4iKSk7dmFyIGc9dHlwZW9mIGQ9PT0ibnVtYmVyIjtpZih0eXBlb2YgZD09PSJib29sZWFuInx8Zyl7aWYoZT09PSJ0b1N0cmluZyIpe2lmKGcmJmYubGVuZ3RoKCkpe3ZhciBoPVRkKGYuZ2V0KDApKTt0cnl7cmV0dXJuIGQudG9TdHJpbmcoaCl9Y2F0Y2godSl7fX1yZXR1cm4gZC50b1N0cmluZygpfXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6ICIrZCsiLiIrZSsiIGlzIG5vdCBhIGZ1bmN0aW9uLiIpKTt9aWYodHlwZW9mIGQ9PT0KInN0cmluZyIpe2lmKFdkLmhhc093blByb3BlcnR5KGUpKXt2YXIgbD1UZChmLHZvaWQgMCwxKTtyZXR1cm4gVWQoZFtlXS5hcHBseShkLGwpLHRoaXMuVCl9dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogIitlKyIgaXMgbm90IGEgZnVuY3Rpb24iKSk7fWlmKGQgaW5zdGFuY2VvZiBHZCl7aWYoZC5oYXMoZSkpe3ZhciBuPWQuZ2V0KFN0cmluZyhlKSk7aWYobiBpbnN0YW5jZW9mIEtkKXt2YXIgcD1IZChmKTtyZXR1cm4gbi5hcHBseSh0aGlzLlQscCl9dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogIitlKyIgaXMgbm90IGEgZnVuY3Rpb24iKSk7fWlmKFZkLnN1cHBvcnRlZE1ldGhvZHMuaW5kZXhPZihlKT49MCl7dmFyIHE9SGQoZik7cmV0dXJuIFZkW2VdLmNhbGwuYXBwbHkoVmRbZV0sW2QsdGhpcy5UXS5jb25jYXQodyhxKSkpfX1pZihkIGluc3RhbmNlb2YgS2R8fGQgaW5zdGFuY2VvZiBrYnx8ZCBpbnN0YW5jZW9mIFNkKXtpZihkLmhhcyhlKSl7dmFyIHI9ZC5nZXQoZSk7CmlmKHIgaW5zdGFuY2VvZiBLZCl7dmFyIHQ9SGQoZik7cmV0dXJuIHIuYXBwbHkodGhpcy5ULHQpfXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6ICIrZSsiIGlzIG5vdCBhIGZ1bmN0aW9uIikpO31pZihlPT09InRvU3RyaW5nIilyZXR1cm4gZCBpbnN0YW5jZW9mIEtkP2QuZ2V0TmFtZSgpOmQudG9TdHJpbmcoKTtpZihlPT09Imhhc093blByb3BlcnR5IilyZXR1cm4gZC5oYXMoZi5nZXQoMCkpfWlmKGQgaW5zdGFuY2VvZiBQZCYmZT09PSJ0b1N0cmluZyIpcmV0dXJuIGQudG9TdHJpbmcoKTt0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBPYmplY3QgaGFzIG5vICciK2UrIicgcHJvcGVydHkuIikpO30KZnVuY3Rpb24gYmUoYSxiKXthPXRoaXMuZXZhbHVhdGUoYSk7aWYodHlwZW9mIGEhPT0ic3RyaW5nIil0aHJvdyBFcnJvcigiSW52YWxpZCBrZXkgbmFtZSBnaXZlbiBmb3IgYXNzaWdubWVudC4iKTt2YXIgYz10aGlzLlQ7aWYoIWMuaGFzKGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFzc2lnbiB0byB1bmRlZmluZWQgdmFsdWUgIitiKTt2YXIgZD10aGlzLmV2YWx1YXRlKGIpO2Muc2V0KGEsZCk7cmV0dXJuIGR9ZnVuY3Rpb24gY2UoKXt2YXIgYT1PYS5hcHBseSgwLGFyZ3VtZW50cyksYj10aGlzLlQud2IoKSxjPWViKGIsYSk7aWYoYyBpbnN0YW5jZW9mIFRhKXJldHVybiBjfWZ1bmN0aW9uIGRlKCl7cmV0dXJuIFhkfWZ1bmN0aW9uIGVlKGEpe2Zvcih2YXIgYj10aGlzLmV2YWx1YXRlKGEpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShiW2NdKTtpZihkIGluc3RhbmNlb2YgVGEpcmV0dXJuIGR9fQpmdW5jdGlvbiBmZSgpe2Zvcih2YXIgYT10aGlzLlQsYj0wO2I8YXJndW1lbnRzLmxlbmd0aC0xO2IrPTIpe3ZhciBjPWFyZ3VtZW50c1tiXTtpZih0eXBlb2YgYz09PSJzdHJpbmciKXt2YXIgZD10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiKzFdKTthLlFoKGMsZCl9fX1mdW5jdGlvbiBnZSgpe3JldHVybiBZZH1mdW5jdGlvbiBoZShhLGIpe3JldHVybiBuZXcgVGEoYSx0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBpZShhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKSxkO2Q9bmV3IEdkO2Zvcih2YXIgZT10aGlzLmV2YWx1YXRlKGIpLGY9MDtmPGUubGVuZ3RoO2YrKylkLnB1c2goZVtmXSk7dmFyIGc9WzUxLGEsZF0uY29uY2F0KHcoYykpO3RoaXMuVC5hZGQoYSx0aGlzLmV2YWx1YXRlKGcpKX1mdW5jdGlvbiBqZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpL3RoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIGtlKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKSxkPXRoaXMuZXZhbHVhdGUoYiksZT1jIGluc3RhbmNlb2YgUGQsZj1kIGluc3RhbmNlb2YgUGQ7cmV0dXJuIGV8fGY/ZSYmZj9jLmdldFZhbHVlKCk9PT1kLmdldFZhbHVlKCk6ITE6Yz09ZH1mdW5jdGlvbiBsZSgpe2Zvcih2YXIgYSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylhPXRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2JdKTtyZXR1cm4gYX1mdW5jdGlvbiBtZShhLGIsYyxkKXtmb3IodmFyIGU9MDtlPGIoKTtlKyspe3ZhciBmPWEoYyhlKSksZz1lYihmLGQpO2lmKGcgaW5zdGFuY2VvZiBUYSl7aWYoZy50eXBlPT09ImJyZWFrIilicmVhaztpZihnLnR5cGU9PT0icmV0dXJuIilyZXR1cm4gZ319fQpmdW5jdGlvbiBuZShhLGIsYyl7aWYodHlwZW9mIGI9PT0ic3RyaW5nIilyZXR1cm4gbWUoYSxmdW5jdGlvbigpe3JldHVybiBiLmxlbmd0aH0sZnVuY3Rpb24oZil7cmV0dXJuIGZ9LGMpO2lmKGIgaW5zdGFuY2VvZiBrYnx8YiBpbnN0YW5jZW9mIFNkfHxiIGluc3RhbmNlb2YgR2R8fGIgaW5zdGFuY2VvZiBLZCl7dmFyIGQ9Yi5GYSgpLGU9ZC5sZW5ndGg7cmV0dXJuIG1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gZX0sZnVuY3Rpb24oZil7cmV0dXJuIGRbZl19LGMpfX1mdW5jdGlvbiBvZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBuZShmdW5jdGlvbihoKXtnLnNldChkLGgpO3JldHVybiBnfSxlLGYpfQpmdW5jdGlvbiBwZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBuZShmdW5jdGlvbihoKXt2YXIgbD1nLndiKCk7bC5RaChkLGgpO3JldHVybiBsfSxlLGYpfWZ1bmN0aW9uIHFlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIG5lKGZ1bmN0aW9uKGgpe3ZhciBsPWcud2IoKTtsLmFkZChkLGgpO3JldHVybiBsfSxlLGYpfWZ1bmN0aW9uIHJlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIHNlKGZ1bmN0aW9uKGgpe2cuc2V0KGQsaCk7cmV0dXJuIGd9LGUsZil9CmZ1bmN0aW9uIHRlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIHNlKGZ1bmN0aW9uKGgpe3ZhciBsPWcud2IoKTtsLlFoKGQsaCk7cmV0dXJuIGx9LGUsZil9ZnVuY3Rpb24gdWUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gc2UoZnVuY3Rpb24oaCl7dmFyIGw9Zy53YigpO2wuYWRkKGQsaCk7cmV0dXJuIGx9LGUsZil9CmZ1bmN0aW9uIHNlKGEsYixjKXtpZih0eXBlb2YgYj09PSJzdHJpbmciKXJldHVybiBtZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGIubGVuZ3RofSxmdW5jdGlvbihkKXtyZXR1cm4gYltkXX0sYyk7aWYoYiBpbnN0YW5jZW9mIEdkKXJldHVybiBtZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGIubGVuZ3RoKCl9LGZ1bmN0aW9uKGQpe3JldHVybiBiLmdldChkKX0sYyk7dGhyb3cgY2IoRXJyb3IoIlRoZSB2YWx1ZSBpcyBub3QgaXRlcmFibGUuIikpO30KZnVuY3Rpb24gdmUoYSxiLGMsZCl7ZnVuY3Rpb24gZShxLHIpe2Zvcih2YXIgdD0wO3Q8Zi5sZW5ndGgoKTt0Kyspe3ZhciB1PWYuZ2V0KHQpO3IuYWRkKHUscS5nZXQodSkpfX12YXIgZj10aGlzLmV2YWx1YXRlKGEpO2lmKCEoZiBpbnN0YW5jZW9mIEdkKSl0aHJvdyBFcnJvcigiVHlwZUVycm9yOiBOb24tTGlzdCBhcmd1bWVudCBnaXZlbiB0byBGb3JMZXQgaW5zdHJ1Y3Rpb24uIik7dmFyIGc9dGhpcy5ULGg9dGhpcy5ldmFsdWF0ZShkKSxsPWcud2IoKTtmb3IoZShnLGwpO2ZiKGwsYik7KXt2YXIgbj1lYihsLGgpO2lmKG4gaW5zdGFuY2VvZiBUYSl7aWYobi50eXBlPT09ImJyZWFrIilicmVhaztpZihuLnR5cGU9PT0icmV0dXJuIilyZXR1cm4gbn12YXIgcD1nLndiKCk7ZShsLHApO2ZiKHAsYyk7bD1wfX0KZnVuY3Rpb24gd2UoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZD10aGlzLlQsZT10aGlzLmV2YWx1YXRlKGIpO2lmKCEoZSBpbnN0YW5jZW9mIEdkKSl0aHJvdyBFcnJvcigiRXJyb3I6IG5vbi1MaXN0IHZhbHVlIGdpdmVuIGZvciBGbiBhcmd1bWVudCBuYW1lcy4iKTtyZXR1cm4gbmV3IEtkKGEsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZj1PYS5hcHBseSgwLGFyZ3VtZW50cyksZz1kLndiKCk7Zy54YigpPT09dm9pZCAwJiZnLnVlKHRoaXMuVC54YigpKTtmb3IodmFyIGg9W10sbD0wO2w8Zi5sZW5ndGg7bCsrKXt2YXIgbj10aGlzLmV2YWx1YXRlKGZbbF0pO2hbbF09bn1mb3IodmFyIHA9ZS5nZXQoImxlbmd0aCIpLHE9MDtxPHA7cSsrKXE8aC5sZW5ndGg/Zy5hZGQoZS5nZXQocSksaFtxXSk6Zy5hZGQoZS5nZXQocSksdm9pZCAwKTtnLmFkZCgiYXJndW1lbnRzIixuZXcgR2QoaCkpO3ZhciByPWViKGcsYyk7aWYociBpbnN0YW5jZW9mIFRhKXJldHVybiByLnR5cGU9PT0KInJldHVybiI/ci5kYXRhOnJ9fSgpKX1mdW5jdGlvbiB4ZShhKXt2YXIgYj10aGlzLmV2YWx1YXRlKGEpLGM9dGhpcy5UO2lmKHllJiYhYy5oYXMoYikpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKGIrIiBpcyBub3QgZGVmaW5lZC4iKTtyZXR1cm4gYy5nZXQoYil9CmZ1bmN0aW9uIHplKGEsYil7dmFyIGMsZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKTtpZihkPT09dm9pZCAwfHxkPT09bnVsbCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mICIrZCsiIChyZWFkaW5nICciK2UrIicpIikpO2lmKGQgaW5zdGFuY2VvZiBrYnx8ZCBpbnN0YW5jZW9mIFNkfHxkIGluc3RhbmNlb2YgR2R8fGQgaW5zdGFuY2VvZiBLZCljPWQuZ2V0KGUpO2Vsc2UgaWYodHlwZW9mIGQ9PT0ic3RyaW5nIillPT09Imxlbmd0aCI/Yz1kLmxlbmd0aDpGZChlKSYmKGM9ZFtlXSk7ZWxzZSBpZihkIGluc3RhbmNlb2YgUGQpcmV0dXJuO3JldHVybiBjfWZ1bmN0aW9uIEFlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk+dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBCZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpPj10aGlzLmV2YWx1YXRlKGIpfQpmdW5jdGlvbiBDZShhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSksZD10aGlzLmV2YWx1YXRlKGIpO2MgaW5zdGFuY2VvZiBQZCYmKGM9Yy5nZXRWYWx1ZSgpKTtkIGluc3RhbmNlb2YgUGQmJihkPWQuZ2V0VmFsdWUoKSk7cmV0dXJuIGM9PT1kfWZ1bmN0aW9uIERlKGEsYil7cmV0dXJuIUNlLmNhbGwodGhpcyxhLGIpfWZ1bmN0aW9uIEVlKGEsYixjKXt2YXIgZD1bXTt0aGlzLmV2YWx1YXRlKGEpP2Q9dGhpcy5ldmFsdWF0ZShiKTpjJiYoZD10aGlzLmV2YWx1YXRlKGMpKTt2YXIgZT1lYih0aGlzLlQsZCk7aWYoZSBpbnN0YW5jZW9mIFRhKXJldHVybiBlfXZhciB5ZT0hMTsKZnVuY3Rpb24gRmUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKTx0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIEdlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk8PXRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gSGUoKXtmb3IodmFyIGE9bmV3IEdkLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiXSk7YS5wdXNoKGMpfXJldHVybiBhfWZ1bmN0aW9uIEllKCl7Zm9yKHZhciBhPW5ldyBrYixiPTA7Yjxhcmd1bWVudHMubGVuZ3RoLTE7Yis9Mil7dmFyIGM9U3RyaW5nKHRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2JdKSksZD10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiKzFdKTthLnNldChjLGQpfXJldHVybiBhfWZ1bmN0aW9uIEplKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkldGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24gS2UoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSp0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIExlKGEpe3JldHVybi10aGlzLmV2YWx1YXRlKGEpfWZ1bmN0aW9uIE1lKGEpe3JldHVybiF0aGlzLmV2YWx1YXRlKGEpfWZ1bmN0aW9uIE5lKGEsYil7cmV0dXJuIWtlLmNhbGwodGhpcyxhLGIpfWZ1bmN0aW9uIE9lKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gUGUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKXx8dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBRZShhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSk7dGhpcy5ldmFsdWF0ZShiKTtyZXR1cm4gY31mdW5jdGlvbiBSZShhKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKX1mdW5jdGlvbiBTZSgpe3JldHVybiBPYS5hcHBseSgwLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVGUoYSl7cmV0dXJuIG5ldyBUYSgicmV0dXJuIix0aGlzLmV2YWx1YXRlKGEpKX0KZnVuY3Rpb24gVWUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKTtpZihkPT09bnVsbHx8ZD09PXZvaWQgMCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBDYW4ndCBzZXQgcHJvcGVydHkgIitlKyIgb2YgIitkKyIuIikpOyhkIGluc3RhbmNlb2YgS2R8fGQgaW5zdGFuY2VvZiBHZHx8ZCBpbnN0YW5jZW9mIGtiKSYmZC5zZXQoU3RyaW5nKGUpLGYpO3JldHVybiBmfWZ1bmN0aW9uIFZlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSktdGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24gV2UoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKTtpZighQXJyYXkuaXNBcnJheShlKXx8IUFycmF5LmlzQXJyYXkoZikpdGhyb3cgRXJyb3IoIkVycm9yOiBNYWxmb3JtZWQgc3dpdGNoIGluc3RydWN0aW9uLiIpO2Zvcih2YXIgZyxoPSExLGw9MDtsPGUubGVuZ3RoO2wrKylpZihofHxkPT09dGhpcy5ldmFsdWF0ZShlW2xdKSlpZihnPXRoaXMuZXZhbHVhdGUoZltsXSksZyBpbnN0YW5jZW9mIFRhKXt2YXIgbj1nLnR5cGU7aWYobj09PSJicmVhayIpcmV0dXJuO2lmKG49PT0icmV0dXJuInx8bj09PSJjb250aW51ZSIpcmV0dXJuIGd9ZWxzZSBoPSEwO2lmKGYubGVuZ3RoPT09ZS5sZW5ndGgrMSYmKGc9dGhpcy5ldmFsdWF0ZShmW2YubGVuZ3RoLTFdKSxnIGluc3RhbmNlb2YgVGEmJihnLnR5cGU9PT0icmV0dXJuInx8Zy50eXBlPT09ImNvbnRpbnVlIikpKXJldHVybiBnfQpmdW5jdGlvbiBYZShhLGIsYyl7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk/dGhpcy5ldmFsdWF0ZShiKTp0aGlzLmV2YWx1YXRlKGMpfWZ1bmN0aW9uIFllKGEpe3ZhciBiPXRoaXMuZXZhbHVhdGUoYSk7cmV0dXJuIGIgaW5zdGFuY2VvZiBLZD8iZnVuY3Rpb24iOnR5cGVvZiBifWZ1bmN0aW9uIFplKCl7Zm9yKHZhciBhPXRoaXMuVCxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKyl7dmFyIGM9YXJndW1lbnRzW2JdO3R5cGVvZiBjIT09InN0cmluZyJ8fGEuYWRkKGMsdm9pZCAwKX19CmZ1bmN0aW9uICRlKGEsYixjLGQpe3ZhciBlPXRoaXMuZXZhbHVhdGUoZCk7aWYodGhpcy5ldmFsdWF0ZShjKSl7dmFyIGY9ZWIodGhpcy5ULGUpO2lmKGYgaW5zdGFuY2VvZiBUYSl7aWYoZi50eXBlPT09ImJyZWFrIilyZXR1cm47aWYoZi50eXBlPT09InJldHVybiIpcmV0dXJuIGZ9fWZvcig7dGhpcy5ldmFsdWF0ZShhKTspe3ZhciBnPWViKHRoaXMuVCxlKTtpZihnIGluc3RhbmNlb2YgVGEpe2lmKGcudHlwZT09PSJicmVhayIpYnJlYWs7aWYoZy50eXBlPT09InJldHVybiIpcmV0dXJuIGd9dGhpcy5ldmFsdWF0ZShiKX19ZnVuY3Rpb24gYWYoYSl7cmV0dXJufk51bWJlcih0aGlzLmV2YWx1YXRlKGEpKX1mdW5jdGlvbiBiZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSk8PE51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBjZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSk+Pk51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX0KZnVuY3Rpb24gZGYoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpPj4+TnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGVmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKSZOdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gZmYoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpXk51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBnZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSl8TnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGhmKCl7fQpmdW5jdGlvbiBrZihhLGIsYyl7dHJ5e3ZhciBkPXRoaXMuZXZhbHVhdGUoYik7aWYoZCBpbnN0YW5jZW9mIFRhKXJldHVybiBkfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGJiJiZoLlNuKSl0aHJvdyBoO3ZhciBlPXRoaXMuVC53YigpO2EhPT0iIiYmKGggaW5zdGFuY2VvZiBiYiYmKGg9aC52byksZS5hZGQoYSxuZXcgUGQoaCkpKTt2YXIgZj10aGlzLmV2YWx1YXRlKGMpLGc9ZWIoZSxmKTtpZihnIGluc3RhbmNlb2YgVGEpcmV0dXJuIGd9fWZ1bmN0aW9uIGxmKGEsYil7dmFyIGMsZDt0cnl7ZD10aGlzLmV2YWx1YXRlKGEpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIGJiJiZmLlNuKSl0aHJvdyBmO2M9Zn12YXIgZT10aGlzLmV2YWx1YXRlKGIpO2lmKGUgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZTtpZihjKXRocm93IGM7aWYoZCBpbnN0YW5jZW9mIFRhKXJldHVybiBkfTt2YXIgbmY9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IGdiO21mKHRoaXMpfTtuZi5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ILnJrKGEpfTt2YXIgbWY9ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oYyxkKXt2YXIgZT1uZXcgTGQoU3RyaW5nKGMpLGQpO2UuWmEoKTt2YXIgZj1TdHJpbmcoYyk7YS5ILkguc2V0KGYsZSk7ZGIuc2V0KGYsZSl9O2IoIm1hcCIsSWUpO2IoImFuZCIsdGQpO2IoImNvbnRhaW5zIix3ZCk7YigiZXF1YWxzIix1ZCk7Yigib3IiLHZkKTtiKCJzdGFydHNXaXRoIix4ZCk7YigidmFyaWFibGUiLHlkKX07bmYucHJvdG90eXBlLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSC5RYihhKX07dmFyIHBmPWZ1bmN0aW9uKCl7dGhpcy5LPSExO3RoaXMuSD1uZXcgZ2I7b2YodGhpcyk7dGhpcy5LPSEwfTtwZi5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihhKXtyZXR1cm4gcWYodGhpcy5ILnJrKGEpKX07dmFyIHJmPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcWYoYS5ILkpxKGIsYykpfTtwZi5wcm90b3R5cGUuWmE9ZnVuY3Rpb24oKXt0aGlzLkguWmEoKX07CnZhciBvZj1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihjLGQpe3ZhciBlPVN0cmluZyhjKSxmPW5ldyBMZChlLGQpO2YuWmEoKTthLkguSC5zZXQoZSxmKTtkYi5zZXQoZSxmKX07YigwLFpkKTtiKDEsJGQpO2IoMixhZSk7YigzLGJlKTtiKDU2LGVmKTtiKDU3LGJmKTtiKDU4LGFmKTtiKDU5LGdmKTtiKDYwLGNmKTtiKDYxLGRmKTtiKDYyLGZmKTtiKDUzLGNlKTtiKDQsZGUpO2IoNSxlZSk7Yig2OCxrZik7Yig1MixmZSk7Yig2LGdlKTtiKDQ5LGhlKTtiKDcsSGUpO2IoOCxJZSk7Yig5LGVlKTtiKDUwLGllKTtiKDEwLGplKTtiKDEyLGtlKTtiKDEzLGxlKTtiKDY3LGxmKTtiKDUxLHdlKTtiKDQ3LG9lKTtiKDU0LHBlKTtiKDU1LHFlKTtiKDYzLHZlKTtiKDY0LHJlKTtiKDY1LHRlKTtiKDY2LHVlKTtiKDE1LHhlKTtiKDE2LHplKTtiKDE3LHplKTtiKDE4LEFlKTtiKDE5LEJlKTtiKDIwLENlKTtiKDIxLERlKTtiKDIyLEVlKTtiKDIzLEZlKTtiKDI0LEdlKTtiKDI1LEplKTtiKDI2LApLZSk7YigyNyxMZSk7YigyOCxNZSk7YigyOSxOZSk7Yig0NSxPZSk7YigzMCxQZSk7YigzMixRZSk7YigzMyxRZSk7YigzNCxSZSk7YigzNSxSZSk7Yig0NixTZSk7YigzNixUZSk7Yig0MyxVZSk7YigzNyxWZSk7YigzOCxXZSk7YigzOSxYZSk7Yig0MCxZZSk7Yig0NCxoZik7Yig0MSxaZSk7Yig0MiwkZSl9O3BmLnByb3RvdHlwZS5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkguamUoKX07cGYucHJvdG90eXBlLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSC5RYihhKX07cGYucHJvdG90eXBlLnNkPWZ1bmN0aW9uKGEpe3RoaXMuSC5zZChhKX07CmZ1bmN0aW9uIHFmKGEpe2lmKGEgaW5zdGFuY2VvZiBUYXx8YSBpbnN0YW5jZW9mIEtkfHxhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkfHxhIGluc3RhbmNlb2YgUGR8fGE9PT1udWxsfHxhPT09dm9pZCAwfHx0eXBlb2YgYT09PSJzdHJpbmcifHx0eXBlb2YgYT09PSJudW1iZXIifHx0eXBlb2YgYT09PSJib29sZWFuIilyZXR1cm4gYX07dmFyIHNmPWZ1bmN0aW9uKGEpe3RoaXMubWVzc2FnZT1hfTtmdW5jdGlvbiB0ZihhKXthLnF2PSEwO3JldHVybiBhfTt2YXIgdWY9dGYoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciJ9KSx2Zj10ZihmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIn0pLHdmPXRmKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJib29sZWFuIn0pO2Z1bmN0aW9uIHhmKGEpe3ZhciBiPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIlthXTtyZXR1cm4gYj09PXZvaWQgMD9uZXcgc2YoIlZhbHVlICIrYSsiIGNhbiBub3QgYmUgZW5jb2RlZCBpbiB3ZWItc2FmZSBiYXNlNjQgZGljdGlvbmFyeS4iKTpifTtmdW5jdGlvbiB5ZihhKXtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiIxIjtjYXNlIDI6Y2FzZSA0OnJldHVybiIwIjtkZWZhdWx0OnJldHVybiItIn19O3ZhciB6Zj0vXlsxLTlhLXpBLVpfLV1bMS05YS1jXVsxLTlhLXZdXGQkLztmdW5jdGlvbiBBZihhLGIpe2Zvcih2YXIgYz0iIixkPSEwO2E+Nzspe3ZhciBlPWEmMzE7YT4+PTU7ZD9kPSExOmV8PTMyO2M9IiIreGYoZSkrY31hPDw9MjtkfHwoYXw9MzIpO3JldHVybiBjPSIiK3hmKGF8YikrY31mdW5jdGlvbiBCZihhLGIpe3JldHVybiBiPT09dm9pZCAwfHxiPT09MD8iIjoiIitBZihhLDEpK3hmKGIpfQpmdW5jdGlvbiBDZihhLGIpe3ZhciBjO3ZhciBkPWEuaGksZT1hLmJrO2Q9PT12b2lkIDA/Yz0iIjooZXx8KGU9MCksYz0iIitBZigxLDEpK3hmKGQ8PDJ8ZSkpO3ZhciBmPSI0IitjK0JmKDIsYS5xciksZyxoPWEuSW87Zz1oJiZ6Zi50ZXN0KGgpPyIiK0FmKDMsMikraDoiIjt2YXIgbDt2YXIgbj1hLmN0aWQ7aWYobiYmYil7dmFyIHA9QWYoNSwzKSxxPW4uc3BsaXQoIi0iKSxyPXFbMF0udG9VcHBlckNhc2UoKTtpZihyIT09IkdUTSImJnIhPT0iT1BUIilsPSIiO2Vsc2V7dmFyIHQ9cVsxXTtsPSIiK3AreGYoMSt0Lmxlbmd0aCkrKGEuTHN8fDApK3R9fWVsc2UgbD0iIjt2YXIgdT1hLmNhbm9uaWNhbElkLHY9YS5tYyx4PWEuenYseT1mK2crQmYoNCxhLkRvKStsK0JmKDYsYS5EdCkrKHU/IiIrQWYoNywzKSt4Zih1Lmxlbmd0aCkrdToiIikrKHY/IiIrQWYoOCwzKSt4Zih2Lmxlbmd0aCkrdjoiIikrKHg/IiIrQWYoOSwzKSt4Zih4Lmxlbmd0aCkreDoiIiksejt2YXIgQz1hLnpyO0M9CkM9PT12b2lkIDA/e306Qztmb3IodmFyIEQ9W10sST1tKE9iamVjdC5rZXlzKEMpKSxHPUkubmV4dCgpOyFHLmRvbmU7Rz1JLm5leHQoKSl7dmFyIE49Ry52YWx1ZTtEW051bWJlcihOKV09Q1tOXX1pZihELmxlbmd0aCl7dmFyIFM9QWYoMTAsMyksVztpZihELmxlbmd0aD09PTApVz14ZigwKTtlbHNle2Zvcih2YXIgZWE9W10samE9MCxmYT0hMSxzYT0wO3NhPEQubGVuZ3RoO3NhKyspe2ZhPSEwO3ZhciBkYT1zYSU2O0Rbc2FdJiYoamF8PTE8PGRhKTtkYT09PTUmJihlYS5wdXNoKHhmKGphKSksamE9MCxmYT0hMSl9ZmEmJmVhLnB1c2goeGYoamEpKTtXPWVhLmpvaW4oIiIpfXZhciBtYT1XO3o9IiIrUyt4ZihtYS5sZW5ndGgpK21hfWVsc2Ugej0iIjt2YXIgUGE9YS5VcyxGYT1hLm50O3JldHVybiB5K3orKFBhPyIiK0FmKDExLDMpK3hmKFBhLmxlbmd0aCkrUGE6IiIpKyhGYT8iIitBZigxMywzKSt4ZihGYS5sZW5ndGgpK0ZhOiIiKStCZigxNCxhLkV0KStCZigxNSxhLnJ2KStCZigxNiwKYS5Bdil9O2Z1bmN0aW9uIERmKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hLmNoYXJDb2RlQXQoZCk7ZTwxMjg/YltjKytdPWU6KGU8MjA0OD9iW2MrK109ZT4+NnwxOTI6KChlJjY0NTEyKT09NTUyOTYmJmQrMTxhLmxlbmd0aCYmKGEuY2hhckNvZGVBdChkKzEpJjY0NTEyKT09NTYzMjA/KGU9NjU1MzYrKChlJjEwMjMpPDwxMCkrKGEuY2hhckNvZGVBdCgrK2QpJjEwMjMpLGJbYysrXT1lPj4xOHwyNDAsYltjKytdPWU+PjEyJjYzfDEyOCk6YltjKytdPWU+PjEyfDIyNCxiW2MrK109ZT4+NiY2M3wxMjgpLGJbYysrXT1lJjYzfDEyOCl9cmV0dXJuIGJ9O2Z1bmN0aW9uIEVmKGEsYil7Zm9yKHZhciBjPXFiKGIpLGQ9bmV3IFVpbnQ4QXJyYXkoYy5sZW5ndGgpLGU9MDtlPGMubGVuZ3RoO2UrKylkW2VdPWMuY2hhckNvZGVBdChlKTtpZihkLmxlbmd0aCE9PTMyKXRocm93IEVycm9yKCJLZXkgaXMgbm90IDMyIGJ5dGVzLiIpO3JldHVybiBGZihhLGQpfWZ1bmN0aW9uIEZmKGEsYil7aWYoYT09PSIiKXJldHVybiIiO3ZhciBjPVpiKGEpLGQ9Yi5zbGljZSgtMiksZT1bXS5jb25jYXQodyhkKSx3KGMpKS5tYXAoZnVuY3Rpb24oZyxoKXtyZXR1cm4gZ15iW2glYi5sZW5ndGhdfSksZj1uZXcgVWludDhBcnJheShbXS5jb25jYXQodyhlKSx3KGQpKSk7cmV0dXJuIHBiKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHcoZikpKS5yZXBsYWNlKC9cLiskLywiIil9O3ZhciBHZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYil7cmV0dXJue3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9fX1yZXR1cm57Y3A6YSgiY29uc2VudCIpLFprOmEoImNvbnZlcnRfY2FzZV90byIpLGFsOmEoImNvbnZlcnRfZmFsc2VfdG8iKSxibDphKCJjb252ZXJ0X251bGxfdG8iKSxlcDphKCJjb252ZXJ0X3RvX2Jvb2xlYW4iKSxhaDphKCJjb252ZXJ0X3RvX251bWJlciIpLGZsOmEoImNvbnZlcnRfdHJ1ZV90byIpLGlsOmEoImNvbnZlcnRfdW5kZWZpbmVkX3RvIiksWXQ6YSgiZGVidWdfbW9kZV9tZXRhZGF0YSIpLFliOmEoImZ1bmN0aW9uIiksUm06YSgiaW5zdGFuY2VfbmFtZSIpLE5xOmEoImxpdmVfb25seSIpLE9xOmEoIm1hbHdhcmVfZGlzYWJsZWQiKSxNRVRBREFUQTphKCJtZXRhZGF0YSIpLFJxOmEoIm9yaWdpbmFsX2FjdGl2aXR5X2lkIiksVHU6YSgib3JpZ2luYWxfdmVuZG9yX3RlbXBsYXRlX2lkIiksU3U6YSgib25jZV9vbl9sb2FkIiksUXE6YSgib25jZV9wZXJfZXZlbnQiKSwKa246YSgib25jZV9wZXJfbG9hZCIpLFZ1OmEoInByaW9yaXR5X292ZXJyaWRlIiksWXU6YSgicmVzcGVjdGVkX2NvbnNlbnRfdHlwZXMiKSx0bjphKCJzZXR1cF90YWdzIikseWo6YSgidGFnX2lkIiksRG46YSgidGVhcmRvd25fdGFncyIpLHBsOmEoImRpc2FibGVkX2luX2dvb2dsZV9tb2RlIiksRnE6YSgiZ2VuZXJhdGVkX3RhZ2dpbmdfbWV0YWRhdGEiKX19KCk7ZnVuY3Rpb24gSGYoYSxiKXt2YXIgYz17fTtjW0dmLlliXT0iX18iK2E7Zm9yKHZhciBkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbInZ0cF8iK2RdPWJbZF0pO3JldHVybiBjfTtmdW5jdGlvbiBJZihhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjLGQ7cmV0dXJuKChjPWRhdGEpPT1udWxsPzA6KGQ9Yy5ibG9iKT09bnVsbD8wOmQuaGFzT3duUHJvcGVydHkoYSkpPyEhZGF0YS5ibG9iW2FdOmJ9ZnVuY3Rpb24gRShhKXt2YXIgYjtiPWI9PT12b2lkIDA/IiI6Yjt2YXIgYyxkO3JldHVybigoYz1kYXRhKT09bnVsbD8wOihkPWMuYmxvYik9PW51bGw/MDpkLmhhc093blByb3BlcnR5KGEpKT9TdHJpbmcoZGF0YS5ibG9iW2FdKTpifWZ1bmN0aW9uIEpmKGEpe3ZhciBiLGM7cmV0dXJuKChiPWRhdGEpPT1udWxsPzA6KGM9Yi5ibG9iKT09bnVsbD8wOmMuaGFzT3duUHJvcGVydHkoYSkpP051bWJlcihkYXRhLmJsb2JbYV0pOjB9ZnVuY3Rpb24gS2YoYSl7dmFyIGI7Yj1iPT09dm9pZCAwP1tdOmI7dmFyIGMsZCxlPShjPWRhdGEpPT1udWxsP3ZvaWQgMDooZD1jLmJsb2IpPT1udWxsP3ZvaWQgMDpkW2FdO3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6Yn0KZnVuY3Rpb24gTGYoYSl7dmFyIGI7Yj1iPT09dm9pZCAwPyIiOmI7dmFyIGM9TWYoNDYpO3JldHVybiBjJiYoYz09bnVsbD8wOmMuaGFzT3duUHJvcGVydHkoYSkpP1N0cmluZyhjW2FdKTpifWZ1bmN0aW9uIE5mKGEsYil7dmFyIGM9TWYoNDYpO3JldHVybiBjJiYoYz09bnVsbD8wOmMuaGFzT3duUHJvcGVydHkoYSkpP051bWJlcihjW2FdKTpifWZ1bmN0aW9uIE1mKGEpe3ZhciBiLGM7cmV0dXJuKGI9ZGF0YSk9PW51bGw/dm9pZCAwOihjPWIuYmxvYik9PW51bGw/dm9pZCAwOmNbYV19O3ZhciBPZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7ZD1FcnJvci5jYWxsKHRoaXMsYyk7dGhpcy5tZXNzYWdlPWQubWVzc2FnZTsic3RhY2siaW4gZCYmKHRoaXMuc3RhY2s9ZC5zdGFjayk7dGhpcy5wZXJtaXNzaW9uSWQ9YTt0aGlzLnBhcmFtZXRlcnM9Yjt0aGlzLm5hbWU9IlBlcm1pc3Npb25FcnJvciJ9O3dhKE9mLEVycm9yKTtPZi5wcm90b3R5cGUuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2V9O2Z1bmN0aW9uIFBmKGEsYil7aWYoQXJyYXkuaXNBcnJheShhKSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImNvbnRleHQiLHt2YWx1ZTp7bGluZTpiWzBdfX0pO2Zvcih2YXIgYz0xO2M8YS5sZW5ndGg7YysrKVBmKGFbY10sYltjXSl9fTtmdW5jdGlvbiBRZigpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjO3ZhciBkPVJmO2EgaW5zdGFuY2VvZiBiYj8oYS5IPWQsYz1hKTpjPW5ldyBiYihhLGQpO3ZhciBlPWM7YiYmZS5LLnB1c2goYik7dGhyb3cgZTt9fWZ1bmN0aW9uIFJmKGEpe2lmKCFhLmxlbmd0aClyZXR1cm4gYTthLnB1c2goe2lkOiJtYWluIixsaW5lOjB9KTtmb3IodmFyIGI9YS5sZW5ndGgtMTtiPjA7Yi0tKUFiKGFbYl0uaWQpJiZhLnNwbGljZShiKyssMSk7Zm9yKHZhciBjPWEubGVuZ3RoLTE7Yz4wO2MtLSlhW2NdLmxpbmU9YVtjLTFdLmxpbmU7YS5zcGxpY2UoMCwxKTtyZXR1cm4gYX07dmFyIFNmPVJlZ0V4cCgiW14wLTlcXC4rLV0iLCJnIiksVGY9UmVnRXhwKCJbXjAtOVxcLCstXSIsImciKSxVZj1SZWdFeHAoIlteMC05Ky1dIiwiZyIpOwpmdW5jdGlvbiBWZihhLGIpe2lmKHR5cGVvZiBhPT09Im51bWJlciIpcmV0dXJuIGE7dmFyIGM9U3RyaW5nKGEpLGQ7aWYoYj09PSJBVVRPTUFUSUMiKXt2YXIgZT0oYy5tYXRjaCgvXC4vZyl8fFtdKS5sZW5ndGgsZj0oYy5tYXRjaCgvLC9nKXx8W10pLmxlbmd0aCxnPSJOT05FIjtpZihlPjAmJmY+MCl7dmFyIGg9Yy5sYXN0SW5kZXhPZigiLiIpPmMubGFzdEluZGV4T2YoIiwiKTtoJiZlPT09MT9nPSJQRVJJT0QiOmh8fGYhPT0xfHwoZz0iQ09NTUEiKX1lbHNlIGU9PT0xP2c9KGMuc3BsaXQoIi4iKVsxXS5tYXRjaCgvWzAtOV0vZyl8fFtdKS5sZW5ndGghPT0zPyJQRVJJT0QiOiJOT05FIjpmPT09MSYmKGc9KGMuc3BsaXQoIiwiKVsxXS5tYXRjaCgvWzAtOV0vZyl8fFtdKS5sZW5ndGghPT0zPyJDT01NQSI6Ik5PTkUiKTtkPWd9ZWxzZSBkPWI9PT0iQ09NTUEiPyJDT01NQSI6IlBFUklPRCI7dmFyIGwsbjtkPT09IlBFUklPRCI/KGw9Ii4iLG49U2YpOmQ9PT0iQ09NTUEiPyhsPSIsIiwKbj1UZik6KGw9IiIsbj1VZik7dmFyIHA9Yy5yZXBsYWNlKG4sIiIpO2lmKGwhPT0iIiYmcC5zcGxpdChsKS5sZW5ndGg+MilyZXR1cm4gYTt2YXIgcT1wLnJlcGxhY2UoLywvZywiLiIpO2lmKHE9PT0iIilyZXR1cm4gYTt2YXIgcj1OdW1iZXIocSk7cmV0dXJuIGlzTmFOKHIpP2E6cn07dmFyIFdmPVtdLFhmPXt9O2Z1bmN0aW9uIFlmKGEpe3JldHVybiBXZlthXT09PXZvaWQgMD8hMTpXZlthXX07dmFyIFpmPWZ1bmN0aW9uKCl7dGhpcy5IPXt9fSwkZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7KGQ9YS5IKVtiXSE9bnVsbHx8KGRbYl09W10pO2EuSFtiXS5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGMuYXBwbHkobnVsbCx3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpfSl9O2Z1bmN0aW9uIGFnKGEsYixjLGQpe2lmKGEpZm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPXZvaWQgMCxnPSJBIHBvbGljeSBmdW5jdGlvbiBkZW5pZWQgdGhlIHBlcm1pc3Npb24gcmVxdWVzdCI7dHJ5e2Y9YVtlXShiLGMsZCksZys9Ii4ifWNhdGNoKGgpe2c9dHlwZW9mIGg9PT0ic3RyaW5nIj9nKygiOiAiK2gpOmggaW5zdGFuY2VvZiBFcnJvcj9nKygiOiAiK2gubWVzc2FnZSk6ZysiLiJ9aWYoIWYpdGhyb3cgbmV3IE9mKGMsZCxnKTt9fQpmdW5jdGlvbiBiZyhhLGIpe3ZhciBjPWNnKGRnLkgsYixmdW5jdGlvbigpe3JldHVybnt9fSk7dHJ5e3JldHVybiBjKGEpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBjZyhhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe2lmKGQpe3ZhciBlPWEuSFtkXSxmPWEuSC5hbGw7aWYoZXx8Zil7dmFyIGc9Yy5hcHBseSh2b2lkIDAsW2RdLmNvbmNhdCh3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpKTthZyhlLGIsZCxnKTthZyhmLGIsZCxnKX19fX07dmFyIGdnPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzO3RoaXMuSz17fTt0aGlzLkg9bmV3IFpmO3ZhciBlPXt9LGY9e30sZz1jZyh0aGlzLkgsYSxmdW5jdGlvbihoKXtyZXR1cm4gaCYmZVtoXT9lW2hdLmFwcGx5KHZvaWQgMCxbaF0uY29uY2F0KHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSkpOnt9fSk7R2IoYixmdW5jdGlvbihoLGwpe2Z1bmN0aW9uIG4ocSl7dmFyIHI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2lmKCFwW3FdKXRocm93IGVnKHEse30sIlRoZSByZXF1ZXN0ZWQgYWRkaXRpb25hbCBwZXJtaXNzaW9uICIrcSsiIGlzIG5vdCBjb25maWd1cmVkLiIpO2cuYXBwbHkobnVsbCxbcV0uY29uY2F0KHcocikpKX12YXIgcD17fTtHYihsLGZ1bmN0aW9uKHEscil7dmFyIHQ9ZmcocSxyLGMpO3BbcV09dC5hc3NlcnQ7ZVtxXXx8KGVbcV09dC5hYSk7dC5PbiYmIWZbcV0mJihmW3FdPXQuT24pfSk7ZC5LW2hdPWZ1bmN0aW9uKHEscil7dmFyIHQ9cFtxXTtpZighdCl0aHJvdyBlZyhxLAp7fSwiVGhlIHJlcXVlc3RlZCBwZXJtaXNzaW9uICIrcSsiIGlzIG5vdCBjb25maWd1cmVkLiIpO3ZhciB1PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTt0LmFwcGx5KHZvaWQgMCx1KTtnLmFwcGx5KHZvaWQgMCx1KTt2YXIgdj1mW3FdO3YmJnYuYXBwbHkobnVsbCxbbl0uY29uY2F0KHcodS5zbGljZSgxKSkpKX19KX0saGc9ZnVuY3Rpb24oYSl7cmV0dXJuIGRnLktbYV18fGZ1bmN0aW9uKCl7fX07CmZ1bmN0aW9uIGZnKGEsYixjKXt0cnl7dmFyIGQ9Y1siX18iK2FdO2lmKCFkKXRocm93IEVycm9yKCJObyBmdW5jdGlvbiBmb3VuZCBmb3IgcGVybWlzc2lvbjogIithKyIuIik7dmFyIGU9SGYoYSxiKTtlLnZ0cF9wZXJtaXNzaW9uTmFtZT1hO2UudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcj1lZztkZWxldGUgZVtHZi5ZYl07cmV0dXJuIGQoZSl9Y2F0Y2goZil7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihnKXt0aHJvdyBuZXcgT2YoZyx7fSwiUGVybWlzc2lvbiAiK2crIiBpcyB1bmtub3duLiIpO30sYWE6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgT2YoYSx7fSwiUGVybWlzc2lvbiAiK2ErIiBpcyB1bmtub3duLiIpO319fX1mdW5jdGlvbiBlZyhhLGIsYyl7cmV0dXJuIG5ldyBPZihhLGIsYyl9O3ZhciBpZz1FKDUpLGpnPUUoMjApLGtnPUUoMSksbGc9ITE7dmFyIG1nPXt9O21nLlBvPUlmKDI5KTttZy5Lcj1JZigyOCk7ZnVuY3Rpb24gbmcoYSl7dmFyIGI9MSxjLGQsZTtpZihhKWZvcihiPTAsZD1hLmxlbmd0aC0xO2Q+PTA7ZC0tKWU9YS5jaGFyQ29kZUF0KGQpLGI9KGI8PDYmMjY4NDM1NDU1KStlKyhlPDwxNCksYz1iJjI2NjMzODMwNCxiPWMhPT0wP2JeYz4+MjE6YjtyZXR1cm4gYn07dmFyIG9nPWZ1bmN0aW9uKGEpe3RoaXMuY2FjaGU9YX07b2cucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXt2YXIgYj1uZyhhKSxjPXRoaXMuY2FjaGUuZ2V0KGIpO2lmKCFjKXJldHVybntwcm9taXNlOnZvaWQgMCxLajowfTtpZihEYXRlLm5vdygpPj1jLnRpbWVzdGFtcCs5RTUpcmV0dXJuIHRoaXMuY2FjaGUuZGVsZXRlKGIpLHtwcm9taXNlOnZvaWQgMCxLajozfTt2YXIgZD1jLnJlc29sdmVkVmFsdWU/MjoxO3JldHVybntwcm9taXNlOmMucmVzb2x2ZWRWYWx1ZT9Qcm9taXNlLnJlc29sdmUoYy5yZXNvbHZlZFZhbHVlKTpjLnByb21pc2UsS2o6ZH19O29nLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz17cHJvbWlzZTpiLHJlc29sdmVkVmFsdWU6dm9pZCAwLHRpbWVzdGFtcDpEYXRlLm5vdygpfTt0aGlzLmNhY2hlLnNldChuZyhhKSxjKTtiLnRoZW4oZnVuY3Rpb24oZCl7Yy5yZXNvbHZlZFZhbHVlPWR9KX07ZnVuY3Rpb24gcGcoYSl7c3dpdGNoKGEpe2Nhc2UgMDpicmVhaztjYXNlIDk6cmV0dXJuImU0IjtjYXNlIDY6cmV0dXJuImU1IjtjYXNlIDE0OnJldHVybiJlNiI7ZGVmYXVsdDpyZXR1cm4iZTcifX07dmFyIEY9e0Q6e1hhOiJhZF9wZXJzb25hbGl6YXRpb24iLGthOiJhZF9zdG9yYWdlIixtYToiYWRfdXNlcl9kYXRhIixyYToiYW5hbHl0aWNzX3N0b3JhZ2UiLG5jOiJyZWdpb24iLHNhOiJjb25zZW50X3VwZGF0ZWQiLFlnOiJ3YWl0X2Zvcl91cGRhdGUiLGVoOiJlbmRwb2ludF90eXBlIixxcDoiYXBwX3JlbW92ZSIscnA6ImFwcF9zdG9yZV9yZWZ1bmQiLHRwOiJhcHBfc3RvcmVfc3Vic2NyaXB0aW9uX2NhbmNlbCIsdXA6ImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY29udmVydCIsdnA6ImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fcmVuZXciLHdwOiJjb25zZW50X3VwZGF0ZSIseHA6ImNvbnZlcnNpb24iLHZsOiJhZGRfcGF5bWVudF9pbmZvIix3bDoiYWRkX3NoaXBwaW5nX2luZm8iLHhlOiJhZGRfdG9fY2FydCIseWU6InJlbW92ZV9mcm9tX2NhcnQiLHhsOiJ2aWV3X2NhcnQiLEFkOiJiZWdpbl9jaGVja291dCIsZXU6ImdlbmVyYXRlX2xlYWQiLHplOiJzZWxlY3RfaXRlbSIsb2M6InZpZXdfaXRlbV9saXN0IiwKUWM6InNlbGVjdF9wcm9tb3Rpb24iLHFjOiJ2aWV3X3Byb21vdGlvbiIsSWI6InB1cmNoYXNlIixBZToicmVmdW5kIixyYzoidmlld19pdGVtIix5bDoiYWRkX3RvX3dpc2hsaXN0Iix5cDoiZXhjZXB0aW9uIix6cDoiZmlyc3Rfb3BlbiIsQXA6ImZpcnN0X3Zpc2l0Iix3YToiZ3RhZy5jb25maWciLEpiOiJndGFnLmdldCIsQnA6ImluX2FwcF9wdXJjaGFzZSIsc2M6InBhZ2VfdmlldyIsQ3A6InNjcmVlbl92aWV3IixEcDoic2Vzc2lvbl9zdGFydCIsRXA6InNvdXJjZV91cGRhdGUiLEZwOiJ0aW1pbmdfY29tcGxldGUiLEdwOiJ0cmFja19zb2NpYWwiLHlmOiJ1c2VyX2VuZ2FnZW1lbnQiLEhwOiJ1c2VyX2lkX3VwZGF0ZSIsZmg6ImJyYWlkX2xpbmtfZGVjb3JhdGlvbl9zb3VyY2UiLGdoOiJicmFpZF9zdG9yYWdlX3NvdXJjZSIsQmQ6ImdjbGlkX2xpbmtfZGVjb3JhdGlvbl9zb3VyY2UiLENkOiJnY2xpZF9zdG9yYWdlX3NvdXJjZSIsU2I6ImdjbGdiIixsYjoiZ2NsaWQiLHpsOiJnY2xpZF9sZW4iLApCZToiZ2NsZ3MiLENlOiJnY2xscCIsRGU6ImdjbHN0IixtYjoiYWRzX2RhdGFfcmVkYWN0aW9uIix6ZjoiZ2FkX3NvdXJjZSIsQWY6ImdhZF9zb3VyY2Vfc3JjIixEZDoiZ2NsaWRfdXJsIixBbDoiZ2Nsc3JjIixCZjoiZ2JyYWlkIixFZToid2JyYWlkIixSYzoiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uX3NpZ25hbHMiLHJpOiJhbGxvd19jdXN0b21fc2NyaXB0cyIsaGg6ImFsbG93X2Rpc3BsYXlfZmVhdHVyZXMiLHNpOiJhbGxvd19lbmhhbmNlZF9jb252ZXJzaW9ucyIsU2M6ImFsbG93X2dvb2dsZV9zaWduYWxzIix1aToiYWxsb3dfaW50ZXJlc3RfZ3JvdXBzIixJcDoiYXBwX2lkIixKcDoiYXBwX2luc3RhbGxlcl9pZCIsS3A6ImFwcF9uYW1lIixMcDoiYXBwX3ZlcnNpb24iLEVkOiJhdWlkIixmdToiYXV0b19kZXRlY3Rpb25fZW5hYmxlZCIsQmw6ImF1dG9fZXZlbnQiLENsOiJhd19yZW1hcmtldGluZyIsaWg6ImF3X3JlbWFya2V0aW5nX29ubHkiLENmOiJkaXNjb3VudCIsRGY6ImF3X2ZlZWRfY291bnRyeSIsCkVmOiJhd19mZWVkX2xhbmd1YWdlIixIYToiaXRlbXMiLEZmOiJhd19tZXJjaGFudF9pZCIsd2k6ImF3X2Jhc2tldF90eXBlIixHZjoiY2FtcGFpZ25fY29udGVudCIsSGY6ImNhbXBhaWduX2lkIixJZjoiY2FtcGFpZ25fbWVkaXVtIixKZjoiY2FtcGFpZ25fbmFtZSIsS2Y6ImNhbXBhaWduIixMZjoiY2FtcGFpZ25fc291cmNlIixNZjoiY2FtcGFpZ25fdGVybSIsS2I6ImNsaWVudF9pZCIsRGw6InJuZCIseGk6ImNvbnNlbnRfdXBkYXRlX3R5cGUiLE1wOiJjb250ZW50X2dyb3VwIixOcDoiY29udGVudF90eXBlIixGZDoiY29udmVyc2lvbl9jb29raWVfcHJlZml4Iix5aToiY29udmVyc2lvbl9pZCIsdWM6ImNvbnZlcnNpb25fbGlua2VyIixIZDoiY29udmVyc2lvbl9saW5rZXJfZGlzYWJsZWQiLEZlOiJjb252ZXJzaW9uX2FwaSIsemk6Il8mcmNiIixqaDoiY29va2llX2RlcHJlY2F0aW9uIixMYjoiY29va2llX2RvbWFpbiIsQ2I6ImNvb2tpZV9leHBpcmVzIixUYjoiY29va2llX2ZsYWdzIiwKSWQ6ImNvb2tpZV9uYW1lIix2YzoiY29va2llX3BhdGgiLG5iOiJjb29raWVfcHJlZml4IixKZDoiY29va2llX3VwZGF0ZSIsVGM6ImNvdW50cnkiLGViOiJjdXJyZW5jeSIsR2U6ImN1c3RvbWVyX2xpZmV0aW1lX3ZhbHVlIixraDoiY3VzdG9tZXJfdHlwZSIsSGU6ImN1c3RvbV9tYXAiLEFpOiJnY2xkY19saW5rX2RlY29yYXRpb25fc291cmNlIixCaToiZ2NsZGNfc3RvcmFnZV9zb3VyY2UiLE5mOiJnY2xkYyIsS2Q6ImRjbGlkIixFbDoiZGVidWdfbW9kZSIsT2E6ImRldmVsb3Blcl9pZCIsT3A6ImRpc2FibGVfbWVyY2hhbnRfcmVwb3J0ZWRfcHVyY2hhc2VzIixVYzoiZGNfY3VzdG9tX3BhcmFtcyIsUHA6ImRjX25hdHVyYWxfc2VhcmNoIixRcDoiZHluYW1pY19ldmVudF9zZXR0aW5ncyIsRmw6ImFmZmlsaWF0aW9uIixtaDoiY2hlY2tvdXRfb3B0aW9uIixDaToiY2hlY2tvdXRfc3RlcCIsR2w6ImNvdXBvbiIsT2Y6Iml0ZW1fbGlzdF9uYW1lIixEaToibGlzdF9uYW1lIixScDoicHJvbW90aW9ucyIsCkxkOiJzaGlwcGluZyIsSGw6InRheCIsbmg6ImVuZ2FnZW1lbnRfdGltZV9tc2VjIixvaDoiZW5oYW5jZWRfY2xpZW50X2lkIixTcDoiZW5oYW5jZWRfY29udmVyc2lvbnMiLGd1OiJlbmhhbmNlZF9jb252ZXJzaW9uc19hdXRvbWF0aWNfc2V0dGluZ3MiLEllOiJlc3RpbWF0ZWRfZGVsaXZlcnlfZGF0ZSIsUGY6ImV2ZW50X2NhbGxiYWNrIixUcDoiZXZlbnRfY2F0ZWdvcnkiLFZjOiJldmVudF9kZXZlbG9wZXJfaWRfc3RyaW5nIixNZDoiZXZlbnRfaWQiLEVpOiJfZXZlbnRfam9pbl9pZCIsVXA6ImV2ZW50X2xhYmVsIixVYjoiZXZlbnQiLElsOiJfJmFlIixGaToiZXZlbnRfc2V0dGluZ3MiLHBoOiJldmVudF90aW1lb3V0IixWcDoiZGVzY3JpcHRpb24iLFdwOiJmYXRhbCIsWHA6ImV4cGVyaW1lbnRzIixOZDoiZXh0X2NsaWVudF9pZCIsR2k6ImZpcmViYXNlX2lkIixRZjoiZmlyc3RfcGFydHlfY29sbGVjdGlvbiIsUmY6Il94XzIwIixWYjoiX3hfMTkiLFlwOiJmbGlnaHRfZXJyb3JfY29kZSIsClpwOiJmbGlnaHRfZXJyb3JfbWVzc2FnZSIsSGk6ImZsX2FjdGl2aXR5X2NhdGVnb3J5IixJaToiZmxfYWN0aXZpdHlfZ3JvdXAiLHFoOiJmbF9hZHZlcnRpc2VyX2lkIixKaToibWF0Y2hfaWQiLEpsOiJmbF9yYW5kb21fbnVtYmVyIixLbDoidHJhbiIsTGw6InUiLHJoOiJnYWNfZ2NsaWQiLEplOiJnYWNfd2JyYWlkIixNbDoiZ2FjX3dicmFpZF9tdWx0aXBsZV9jb252ZXJzaW9ucyIsYXE6ImdhX3Jlc3RyaWN0X2RvbWFpbiIsTmw6ImdhX3RlbXBfY2xpZW50X2lkIixicToiZ2FfdGVtcF9lY2lkIixLZToiZ2Rwcl9hcHBsaWVzIixzaDoiX2d0X21ldGFkYXRhIixPbDoiZ2VvX2dyYW51bGFyaXR5IixTZjoidmFsdWVfY2FsbGJhY2siLFRmOiJ2YWx1ZV9rZXkiLFRhOiJnb29nbGVfYW5hbHlzaXNfcGFyYW1zIixMZToiX2dvb2dsZV9uZyIsY3E6Il9vbm8iLFVmOiJnb29nbGVfc2lnbmFscyIsZnE6Imdvb2dsZV90bGQiLHRoOiJncHBfc2lkIix1aDoiZ3BwX3N0cmluZyIsT2Q6Imdyb3VwcyIsClBsOiJnc2FfZXhwZXJpbWVudF9pZCIsVmY6Imd0YWdfZXZlbnRfZmVhdHVyZV91c2FnZSIsUWw6Imd0bV91cCIsTWU6ImlmcmFtZV9zdGF0ZSIsV2Y6Imlnbm9yZV9yZWZlcnJlciIsUmw6ImludGVybmFsX3RyYWZmaWNfcmVzdWx0cyIsU2w6Il9pc19mcG0iLFljOiJpc19sZWdhY3lfY29udmVydGVkIixaYzoiaXNfbGVnYWN5X2xvYWRlZCIsS2k6ImlzX3Bhc3N0aHJvdWdoIixQZDoiX2xwcyIsdGI6Imxhbmd1YWdlIixMaToibGVnYWN5X2RldmVsb3Blcl9pZF9zdHJpbmciLERiOiJsaW5rZXIiLFhmOiJhY2NlcHRfaW5jb21pbmciLHdjOiJkZWNvcmF0ZV9mb3JtcyIsQWE6ImRvbWFpbnMiLGFkOiJ1cmxfcG9zaXRpb24iLFFkOiJtZXJjaGFudF9mZWVkX2xhYmVsIixSZDoibWVyY2hhbnRfZmVlZF9sYW5ndWFnZSIsU2Q6Im1lcmNoYW50X2lkIixUbDoibWV0aG9kIixncToibmFtZSIsVWw6Im5hdmlnYXRpb25fdHlwZSIsTmU6Im5ld19jdXN0b21lciIsTWk6Im5vbl9pbnRlcmFjdGlvbiIsCmhxOiJvcHRpbWl6ZV9pZCIsVmw6InBhZ2VfaG9zdG5hbWUiLFlmOiJwYWdlX3BhdGgiLFVhOiJwYWdlX3JlZmVycmVyIixNYjoicGFnZV90aXRsZSIsaXE6InBhc3NlbmdlcnMiLFdsOiJwaG9uZV9jb252ZXJzaW9uX2NhbGxiYWNrIixqcToicGhvbmVfY29udmVyc2lvbl9jb3VudHJ5X2NvZGUiLFhsOiJwaG9uZV9jb252ZXJzaW9uX2Nzc19jbGFzcyIsa3E6InBob25lX2NvbnZlcnNpb25faWRzIixZbDoicGhvbmVfY29udmVyc2lvbl9udW1iZXIiLFpsOiJwaG9uZV9jb252ZXJzaW9uX29wdGlvbnMiLGxxOiJfcGxhdGludW1fcmVxdWVzdF9zdGF0dXMiLG1xOiJfcHJvdGVjdGVkX2F1ZGllbmNlX2VuYWJsZWQiLHdoOiJxdWFudGl0eSIseGg6InJlZGFjdF9kZXZpY2VfaW5mbyIsYW06InJlZmVycmFsX2V4Y2x1c2lvbl9kZWZpbml0aW9uIixodToiX3JlcXVlc3Rfc3RhcnRfdGltZSIsV2I6InJlc3RyaWN0ZWRfZGF0YV9wcm9jZXNzaW5nIixucToicmV0b2tlbiIsb3E6InNhbXBsZV9yYXRlIiwKTmk6InNjcmVlbl9uYW1lIixiZDoic2NyZWVuX3Jlc29sdXRpb24iLGJtOiJfc2NyaXB0X3NvdXJjZSIscHE6InNlYXJjaF90ZXJtIixUZDoic2VuZF9wYWdlX3ZpZXciLFhiOiJzZW5kX3RvIixPaToic2VydmVyX2NvbnRhaW5lcl8zcF9lbnJpY2htZW50IixkZDoic2VydmVyX2NvbnRhaW5lcl91cmwiLHFxOiJzZXNzaW9uX2F0dHJpYnV0ZXNfZW5jb2RlZCIseWg6InNlc3Npb25fZHVyYXRpb24iLHpoOiJzZXNzaW9uX2VuZ2FnZWQiLFBpOiJzZXNzaW9uX2VuZ2FnZWRfdGltZSIseGM6InNlc3Npb25faWQiLEFoOiJzZXNzaW9uX251bWJlciIsWmY6Il9zaGFyZWRfdXNlcl9pZCIsVWQ6ImRlbGl2ZXJ5X3Bvc3RhbF9jb2RlIixpdToiX3RhZ19maXJpbmdfZGVsYXkiLGp1OiJfdGFnX2ZpcmluZ190aW1lIixrdToidGVtcG9yYXJ5X2NsaWVudF9pZCIsUWk6InRlc3Rvbmx5IixycToiX3RpbWV6b25lIixQZToidG9wbW9zdF91cmwiLFFlOiJ0cmFja2luZ19pZCIsUmk6InRyYWZmaWNfdHlwZSIsClBhOiJ0cmFuc2FjdGlvbl9pZCIsZG06InRyYW5zYWN0aW9uX2lkX3NvdXJjZSIseWM6InRyYW5zcG9ydF91cmwiLHNxOiJ0cmlwX3R5cGUiLFZkOiJ1cGRhdGUiLHpjOiJ1cmxfcGFzc3Rocm91Z2giLGZtOiJ1cHRncyIsY2c6Il91c2VyX2FnZW50X2FyY2hpdGVjdHVyZSIsZGc6Il91c2VyX2FnZW50X2JpdG5lc3MiLGVnOiJfdXNlcl9hZ2VudF9mdWxsX3ZlcnNpb25fbGlzdCIsZmc6Il91c2VyX2FnZW50X21vYmlsZSIsZ2c6Il91c2VyX2FnZW50X21vZGVsIixoZzoiX3VzZXJfYWdlbnRfcGxhdGZvcm0iLGlnOiJfdXNlcl9hZ2VudF9wbGF0Zm9ybV92ZXJzaW9uIixqZzoiX3VzZXJfYWdlbnRfd293NjQiLEFjOiJ1c2VyX2RhdGEiLGdtOiJ1c2VyX2RhdGFfYXV0b19sYXRlbmN5IixobToidXNlcl9kYXRhX2F1dG9fbWV0YSIsaW06InVzZXJfZGF0YV9hdXRvX211bHRpIixqbToidXNlcl9kYXRhX2F1dG9fc2VsZWN0b3JzIixrbToidXNlcl9kYXRhX2F1dG9fc3RhdHVzIixCYzoidXNlcl9kYXRhX21vZGUiLApsbToidXNlcl9kYXRhX3NldHRpbmdzIixmYjoidXNlcl9pZCIsV2Q6InVzZXJfcHJvcGVydGllcyIsb206Il91c2VyX3JlZ2lvbiIsa2c6InVzX3ByaXZhY3lfc3RyaW5nIixRYToidmFsdWUiLHFtOiJ3YnJhaWRfbXVsdGlwbGVfY29udmVyc2lvbnMiLGVkOiJfZnBtX3BhcmFtZXRlcnMiLFdpOiJfaG9zdF9uYW1lIixWbToiX2luX3BhZ2VfY29tbWFuZCIsWWk6Il9pcF9vdmVycmlkZSIsWm06Il9pc19wYXNzdGhyb3VnaF9jaWQiLEpoOiJfbWVhc3VyZW1lbnRfdHlwZSIsZGU6Im5vbl9wZXJzb25hbGl6ZWRfYWRzIixvajoiX3NzdF9wYXJhbWV0ZXJzIixZcToic2d0bV9nZW9fdXNlcl9jb3VudHJ5IixHZDoiY29udmVyc2lvbl9sYWJlbCIsemE6InBhZ2VfbG9jYXRpb24iLFdjOiJfZXh0cmFjdGVkX2RhdGEiLFhjOiJnbG9iYWxfZGV2ZWxvcGVyX2lkX3N0cmluZyIsT2U6InRjX3ByaXZhY3lfc3RyaW5nIn19O3ZhciBIPXtKOntTbzoiYWJvcnRfd2l0aG91dF9mYWlsIixraToiYWNjZXB0X2J5X2RlZmF1bHQiLEJrOiJhZGRfdGFnX3RpbWluZyIsRGs6ImFkc19jb25zZW50X2dyYW50ZWQiLHZkOiJhZHNfZXZlbnRfcGFnZV92aWV3Iix3ZDoiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uIixRdDoiYXV0b19ldmVudCIsS2s6ImJhdGNoX29uX25hdmlnYXRpb24iLFhnOiJiaXNjb3R0aV9qb2luX2lkIixQazoiY2xpZW50X2lkX3NvdXJjZSIsdWY6ImNvbnNlbnRfZXZlbnRfaWQiLHZmOiJjb25zZW50X3ByaW9yaXR5X2lkIixTdDoiY29uc2VudF9zdGF0ZSIsc2E6ImNvbnNlbnRfdXBkYXRlZCIsd2Y6ImNvbnZlcnNpb25fbGlua2VyX2VuYWJsZWQiLFR0OiJjb252ZXJzaW9uX21hcmtpbmdfY2FsbGVkIixHYToiY29va2llX29wdGlvbnMiLG9sOiJkY19yYW5kb20iLFp0OiJkZWR1cGVfaWQiLFBjOiJlbV9ldmVudCIsYnU6ImVuZHBvaW50X2Zvcl9kZWJ1ZyIsdGw6ImVuaGFuY2VkX2NsaWVudF9pZF9zb3VyY2UiLApwcDoiZW5oYW5jZWRfbWF0Y2hfcmVzdWx0IixybToiZXVpZF9sb2dnZWRfaW5fc3RhdGUiLGxnOiJldWlkX21vZGVfZW5hYmxlZCIsdHE6ImV2ZW50X3Byb3ZlbmFuY2UiLG11OiJldmVudF9zb3VyY2UiLEViOiJldmVudF9zdGFydF90aW1lc3RhbXBfbXMiLHdtOiJldmVudF91c2FnZSIsQ2g6ImV4dHJhX3RhZ19leHBlcmltZW50X2lkcyIscHU6ImFkZF9wYXJhbWV0ZXIiLFVpOiJjb3VudGluZ19tZXRob2QiLERoOiJzZW5kX2FzX2lmcmFtZSIscXU6InBhcmFtZXRlcl9vcmRlciIsRWg6InBhcnNlZF90YXJnZXQiLHN1OiJmb3JtX2V2ZW50X2NhbmNlbGVkIixBcToiZ2E0X2NvbGxlY3Rpb25fc3ViZG9tYWluIixWaToiZ2E0X3JlcXVlc3RfZmxhZ3MiLE5tOiJnYnJhaWRfY29va2llX21hcmtlZCIsUW06Imd0bV9leHRyYWN0ZWRfZGF0YSIsQ2M6ImhhbmRsZV9pbnRlcm5hbGx5Iix1dToiaGFzX2dhX2NvbnZlcnNpb25fY29uc2VudHMiLGRhOiJoaXRfdHlwZSIsRGM6ImhpdF90eXBlX292ZXJyaWRlIiwKSHE6Imlnbm9yZV9kdXBlX2NvbmZpZyIsT3U6ImlzX2NvbmZpZ19jb21tYW5kIixHaDoiaXNfY29uc2VudF91cGRhdGUiLG1nOiJpc19jb252ZXJzaW9uIixXbToiaXNfZWNvbW1lcmNlIixYbToiaXNfZWNfY21fc3BsaXQiLGFlOiJpc19leHRlcm5hbF9ldmVudCIsbmc6ImlzX2ZpcnN0X3Zpc2l0IixZbToiaXNfZmlyc3RfdmlzaXRfY29udmVyc2lvbiIsWmk6ImlzX2ZsX2ZhbGxiYWNrX2NvbnZlcnNpb25fZmxvd19hbGxvd2VkIixmZDoiaXNfZnBtX2VuY3J5cHRpb24iLGFqOiJpc19mcG1fc3BsaXQiLG9iOiJpc19nY3BfYnJvd3NlciIsYmo6ImlzX2dvb2dsZV9tZWFzdXJlbWVudF9hbGxvd2VkIixjajoiaXNfZ29vZ2xlX3NpZ25hbHNfZW5hYmxlZCIsYmU6ImlzX21lcmNoYW50X2NlbnRlciIsSGg6ImlzX25ld190b19zaXRlIixFYzoiaXNfcGVyc29uYWxpemF0aW9uIixkajoiaXNfc2VydmVyX3NpZGVfZGVzdGluYXRpb24iLFRlOiJpc19zZXNzaW9uX3N0YXJ0IixibjoiaXNfc2Vzc2lvbl9zdGFydF9jb252ZXJzaW9uIiwKUHU6ImlzX3NndG1fZ2FfYWRzX2NvbnZlcnNpb25fc3R1ZHlfY29udHJvbF9ncm91cCIsUXU6ImlzX3NndG1fcHJlaGl0IixkbjoiaXNfc2d0bV9zZXJ2aWNlX3dvcmtlciIsSWg6ImlzX3NwbGl0X2NvbnZlcnNpb24iLElxOiJpc19zeW4iLEZjOiJpc190ZXN0X2V2ZW50IixvZzoiam9pbl9pZCIsZWo6ImpvaW5fZWxhcHNlZCIscGc6ImpvaW5fdGltZXJfc2VjIixnbjoibG9jYWxfc3RvcmFnZV9hd19jb252ZXJzaW9uX2NvdW50ZXJzIixXZToidHVubmVsX3VwZGF0ZWQiLFV1OiJwcmVoaXRfZm9yX3JldHJ5IixXdToicHJvbWlzZXMiLFh1OiJyZWNvcmRfYXdfbGF0ZW5jeSIsWGU6InJlZGFjdF9hZHNfZGF0YSIsWWU6InJlZGFjdF9jbGlja19pZHMiLHBuOiJyZW1hcmtldGluZ19vbmx5Iixsajoic2VuZF9jY21fcGFyYWxsZWxfcGluZyIsaGQ6InNlbmRfZG91YmxlY2xpY2tfam9pbiIsTWg6InNlbmRfZnBtX2dlb19qb2luIixOaDoic2VuZF9mcG1fZ29vZ2xlX2pvaW4iLFp1OiJzZW5kX2NjbV9wYXJhbGxlbF90ZXN0X3BpbmciLApybjoic2VuZF9nb29nbGVfbWVhc3VyZW1lbnQiLHJnOiJzZW5kX3RsZF9qb2luIixzZzoic2VuZF90b19kZXN0aW5hdGlvbnMiLG1qOiJzZW5kX3RvX3RhcmdldHMiLHNuOiJzZW5kX3VzZXJfZGF0YV9oaXQiLHBqOiJzZXJ2aWNlX3dvcmtlcl9jb250ZXh0IixOYjoic291cmNlX2Nhbm9uaWNhbF9pZCIsSmE6InNwZWN1bGF0aXZlIix5bjoic3BlY3VsYXRpdmVfaW5fbWVzc2FnZSIsQW46InN1cHByZXNzX3NjcmlwdF9sb2FkIixCbjoic3luX29yX21vZCIsemo6InRyYW5zaWVudF9lY3NpZCIsdGc6InRyYW5zbWlzc2lvbl90eXBlIixZYToidXNlcl9kYXRhIixndjoidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljIixodjoidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljX2dldHRlciIsR246InVzZXJfZGF0YV9mcm9tX2NvZGUiLGlyOiJ1c2VyX2RhdGFfZnJvbV9tYW51YWwiLGp2OiJ1c2VyX2RhdGFfbW9kZSIsdWc6InVzZXJfaWRfdXBkYXRlZCJ9fTsKdmFyIHRnPWZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9MDtHYihhLGZ1bmN0aW9uKGUsZil7aWYoZiE9bnVsbCl7dmFyIGc9KCIiK2YpLnJlcGxhY2UoL34vZywifn4iKTtpZihxZy5oYXNPd25Qcm9wZXJ0eShlKSliW3FnW2VdXT1nO2Vsc2UgaWYocmcuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBoPXJnW2VdO2IuaGFzT3duUHJvcGVydHkoaCl8fChiW2hdPWcpfWVsc2UgaWYoZT09PSJjYXRlZ29yeSIpZm9yKHZhciBsPWcuc3BsaXQoIi8iLDUpLG49MDtuPGwubGVuZ3RoO24rKyl7dmFyIHA9YixxPXNnW25dLHI9bFtuXTtwLmhhc093blByb3BlcnR5KHEpfHwocFtxXT1yKX1lbHNlIGlmKGM8Mjcpe3ZhciB0PVN0cmluZy5mcm9tQ2hhckNvZGUoYzwxMD80OCtjOjY1K2MtMTApO2JbImsiK3RdPSgiIitTdHJpbmcoZSkpLnJlcGxhY2UoL34vZywifn4iKTtiWyJ2Iit0XT1nO2MrK319fSk7dmFyIGQ9W107R2IoYixmdW5jdGlvbihlLGYpe2QucHVzaCgiIitlK2YpfSk7cmV0dXJuIGQuam9pbigifiIpfSwKcWc9e2l0ZW1faWQ6ImlkIixpdGVtX25hbWU6Im5tIixpdGVtX2JyYW5kOiJiciIsaXRlbV9jYXRlZ29yeToiY2EiLGl0ZW1fY2F0ZWdvcnkyOiJjMiIsaXRlbV9jYXRlZ29yeTM6ImMzIixpdGVtX2NhdGVnb3J5NDoiYzQiLGl0ZW1fY2F0ZWdvcnk1OiJjNSIsaXRlbV92YXJpYW50OiJ2YSIscHJpY2U6InByIixxdWFudGl0eToicXQiLGNvdXBvbjoiY3AiLGl0ZW1fbGlzdF9uYW1lOiJsbiIsaW5kZXg6ImxwIixpdGVtX2xpc3RfaWQ6ImxpIixkaXNjb3VudDoiZHMiLGFmZmlsaWF0aW9uOiJhZiIscHJvbW90aW9uX2lkOiJwaSIscHJvbW90aW9uX25hbWU6InBuIixjcmVhdGl2ZV9uYW1lOiJjbiIsY3JlYXRpdmVfc2xvdDoiY3MiLGxvY2F0aW9uX2lkOiJsbyJ9LHJnPXtpZDoiaWQiLG5hbWU6Im5tIixicmFuZDoiYnIiLHZhcmlhbnQ6InZhIixsaXN0X25hbWU6ImxuIixsaXN0X3Bvc2l0aW9uOiJscCIsbGlzdDoibG4iLHBvc2l0aW9uOiJscCIsY3JlYXRpdmU6ImNuIn0sc2c9WyJjYSIsCiJjMiIsImMzIiwiYzQiLCJjNSJdO3ZhciB1Zz1mdW5jdGlvbihhKXt2YXIgYj1bXTtHYihhLGZ1bmN0aW9uKGMsZCl7ZCE9bnVsbCYmYi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChjKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhkKSkpfSk7cmV0dXJuIGIuam9pbigiJiIpfSx2Zz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe3RoaXMuYmFzZVVybD1iO3RoaXMuZW5kcG9pbnQ9Yzt0aGlzLmRlc3RpbmF0aW9uSWQ9Zjt0aGlzLmV2ZW50SWQ9Zzt0aGlzLnByaW9yaXR5SWQ9aDt0aGlzLkJhPWEuQmE7dGhpcy52ZT1hLnZlO3RoaXMuTGo9YS5Majt0aGlzLk49ZDt0aGlzLks9dWcoYS5CYSk7dGhpcy5IPXVnKGEuTGopO3RoaXMuUj10aGlzLkgubGVuZ3RoO2lmKGUmJnRoaXMuUj4xNjM4NCl0aHJvdyBFcnJvcigiRVZFTlRfVE9PX0xBUkdFIik7fTsKdmFyIHdnPWZ1bmN0aW9uKCl7dGhpcy5ldmVudHM9W107dGhpcy5IPSIiO3RoaXMuQmE9e307dGhpcy5iYXNlVXJsPSIiO3RoaXMuTj0wO3RoaXMuSz0xO3RoaXMuZW5kcG9pbnQ9MH07d2cucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5SKGEpPyh0aGlzLmV2ZW50cy5wdXNoKGEpLHRoaXMuSD1hLkssdGhpcy5CYT1hLkJhLHRoaXMuYmFzZVVybD1hLmJhc2VVcmwsdGhpcy5OKz1hLlIsdGhpcy5LPWEuTix0aGlzLmVuZHBvaW50PWEuZW5kcG9pbnQsdGhpcy5kZXN0aW5hdGlvbklkPWEuZGVzdGluYXRpb25JZCx0aGlzLlo9YS5ldmVudElkLHRoaXMuZmE9YS5wcmlvcml0eUlkLCEwKTohMX07d2cucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZXZlbnRzLmxlbmd0aD90aGlzLmV2ZW50cy5sZW5ndGg+PTIwfHxhLlIrdGhpcy5OPj0xNjM4ND8hMTp0aGlzLmJhc2VVcmw9PT1hLmJhc2VVcmwmJnRoaXMuSz09PWEuTiYmdGhpcy5qYShhKTohMH07CndnLnByb3RvdHlwZS5qYT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5IPT09YS5LfTt2YXIgSj17VTp7a3A6MSxtcDoyLEVuOjMsbm46NCxxbDo1LHJsOjYsRXE6NyxucDo4LERxOjksanA6MTAsaHA6MTEseG46MTIsdm46MTMsTms6MTQsVW86MTUsV286MTYsaG46MTcsc2w6MTgsZm46MTksbHA6MjAsUHE6MjEsYXA6MjIsVm86MjMsWG86MjQsbmw6MjUsTGs6MjYsZXI6MjcsSm06MjgsVW06MjksVG06MzAsU206MzEsTW06MzIsS206MzMsTG06MzQsR206MzUsRm06MzYsSG06MzcsSW06MzgsQnE6MzksQ3E6NDAsVXE6NDF9fTtKLlVbSi5VLmtwXT0iQ1JFQVRFX0VWRU5UX1NPVVJDRSI7Si5VW0ouVS5tcF09IkVESVRfRVZFTlQiO0ouVVtKLlUuRW5dPSJUUkFGRklDX1RZUEUiO0ouVVtKLlUubm5dPSJSRUZFUlJBTF9FWENMVVNJT04iO0ouVVtKLlUucWxdPSJFQ09NTUVSQ0VfRlJPTV9HVE1fVEFHIjtKLlVbSi5VLnJsXT0iRUNPTU1FUkNFX0ZST01fR1RNX1VBX1NDSEVNQSI7Si5VW0ouVS5FcV09IkdBX1NFTkQiO0ouVVtKLlUubnBdPSJFTV9GT1JNIjsKSi5VW0ouVS5EcV09IkdBX0dBTV9MSU5LIjtKLlVbSi5VLmpwXT0iQ1JFQVRFX0VWRU5UX0FVVE9fUEFHRV9QQVRIIjtKLlVbSi5VLmhwXT0iQ1JFQVRFRF9FVkVOVCI7Si5VW0ouVS54bl09IlNJREVMT0FERUQiO0ouVVtKLlUudm5dPSJTR1RNX0xFR0FDWV9DT05GSUdVUkFUSU9OIjtKLlVbSi5VLk5rXT0iQ0NEX0VNX0VWRU5UIjtKLlVbSi5VLlVvXT0iQVVUT19SRURBQ1RfRU1BSUwiO0ouVVtKLlUuV29dPSJBVVRPX1JFREFDVF9RVUVSWV9QQVJBTSI7Si5VW0ouVS5obl09Ik1VTFRJUExFX1BBR0VWSUVXX0ZST01fQ09ORklHIjtKLlVbSi5VLnNsXT0iRU1fRVZFTlRfU0VOVF9CRUZPUkVfQ09ORklHIjtKLlVbSi5VLmZuXT0iTE9BREVEX1ZJQV9DU1RfT1JfU0lERUxPQURJTkciO0ouVVtKLlUubHBdPSJERUNPREVEX1BBUkFNX01BVENIIjtKLlVbSi5VLlBxXT0iTk9OX0RFQ09ERURfUEFSQU1fTUFUQ0giO0ouVVtKLlUuYXBdPSJDQ0RfRVZFTlRfU0dUTSI7CkouVVtKLlUuVm9dPSJBVVRPX1JFREFDVF9FTUFJTF9TR1RNIjtKLlVbSi5VLlhvXT0iQVVUT19SRURBQ1RfUVVFUllfUEFSQU1fU0dUTSI7Si5VW0ouVS5ubF09IkRBSUxZX0xJTUlUX1JFQUNIRUQiO0ouVVtKLlUuTGtdPSJCVVJTVF9MSU1JVF9SRUFDSEVEIjtKLlVbSi5VLmVyXT0iU0hBUkVEX1VTRVJfSURfU0VUX0FGVEVSX1JFUVVFU1QiO0ouVVtKLlUuSm1dPSJHQTRfTVVMVElQTEVfU0VTU0lPTl9DT09LSUVTIjtKLlVbSi5VLlVtXT0iSU5WQUxJRF9HQTRfU0VTU0lPTl9DT1VOVCI7Si5VW0ouVS5UbV09IklOVkFMSURfR0E0X0xBU1RfRVZFTlRfVElNRVNUQU1QIjtKLlVbSi5VLlNtXT0iSU5WQUxJRF9HQTRfSk9JTl9USU1FUiI7Si5VW0ouVS5NbV09IkdBNF9TVEFMRV9TRVNTSU9OX0NPT0tJRV9TRUxFQ1RFRCI7Si5VW0ouVS5LbV09IkdBNF9TRVNTSU9OX0NPT0tJRV9HUzFfUkVBRCI7Si5VW0ouVS5MbV09IkdBNF9TRVNTSU9OX0NPT0tJRV9HUzJfUkVBRCI7CkouVVtKLlUuR21dPSJHQTRfRExfUEFSQU1fUkVDT1ZFUllfQVZBSUxBQkxFIjtKLlVbSi5VLkZtXT0iR0E0X0RMX1BBUkFNX1JFQ09WRVJZX0FQUExJRUQiO0ouVVtKLlUuSG1dPSJHQTRfR09PR0xFX01FQVNVUkVNRU5UX0FMTE9XRUQiO0ouVVtKLlUuSW1dPSJHQTRfR09PR0xFX1NJR05BTFNfRU5BQkxFRCI7Si5VW0ouVS5CcV09IkdBNF9GQUxMQkFDS19SRVFVRVNUIjtKLlVbSi5VLkNxXT0iR0FfQURTX0xJTktfQkVGT1JFX0NPTlZFUlNJT05fTUFSS0lORyI7Si5VW0ouVS5VcV09IlBMQVRJTlVNX0VMSUdJQkxFIjt2YXIgeGc9e30seWc9KHhnLnVhYT0hMCx4Zy51YWI9ITAseGcudWFmdmw9ITAseGcudWFtYj0hMCx4Zy51YW09ITAseGcudWFwPSEwLHhnLnVhcHY9ITAseGcudWF3PSEwLHhnKTsKdmFyIEJnPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5ldmVudHM7aWYoYy5sZW5ndGg9PT0xKXJldHVybiB6ZyhjWzBdLGIpO3ZhciBkPVtdO2EuSCYmZC5wdXNoKGEuSCk7Zm9yKHZhciBlPXt9LGY9MDtmPGMubGVuZ3RoO2YrKylHYihjW2ZdLnZlLGZ1bmN0aW9uKHQsdSl7dSE9bnVsbCYmKGVbdF09ZVt0XXx8e30sZVt0XVtTdHJpbmcodSldPWVbdF1bU3RyaW5nKHUpXSsxfHwxKX0pO3ZhciBnPXt9O0diKGUsZnVuY3Rpb24odCx1KXt2YXIgdix4PS0xLHk9MDtHYih1LGZ1bmN0aW9uKHosQyl7eSs9Qzt2YXIgRD0oei5sZW5ndGgrdC5sZW5ndGgrMikqKEMtMSk7RD54JiYodj16LHg9RCl9KTt5PT09Yy5sZW5ndGgmJihnW3RdPXYpfSk7QWcoZyxkKTtiJiZkLnB1c2goIl9zPSIrYik7Zm9yKHZhciBoPWQuam9pbigiJiIpLGw9W10sbj17fSxwPTA7cDxjLmxlbmd0aDtuPXtmazp2b2lkIDB9LHArKyl7dmFyIHE9W107bi5maz17fTtHYihjW3BdLnZlLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih1LAp2KXtnW3VdIT09IiIrdiYmKHQuZmtbdV09dil9fShuKSk7Y1twXS5IJiZxLnB1c2goY1twXS5IKTtBZyhuLmZrLHEpO2wucHVzaChxLmpvaW4oIiYiKSl9dmFyIHI9bC5qb2luKCJcclxuIik7cmV0dXJue3BhcmFtczpoLGJvZHk6cn19LHpnPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107YS5LJiZjLnB1c2goYS5LKTtiJiZjLnB1c2goIl9zPSIrYik7QWcoYS52ZSxjKTt2YXIgZD0hMTthLkgmJihjLnB1c2goYS5IKSxkPSEwKTt2YXIgZT1jLmpvaW4oIiYiKSxmPSIiLGc9ZS5sZW5ndGgrYS5iYXNlVXJsLmxlbmd0aCsxO2QmJmc+MjA0OCYmKGY9Yy5wb3AoKSxlPWMuam9pbigiJiIpKTtyZXR1cm57cGFyYW1zOmUsYm9keTpmfX0sQWc9ZnVuY3Rpb24oYSxiKXtHYihhLGZ1bmN0aW9uKGMsZCl7ZCE9bnVsbCYmYi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChjKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGQpKX0pfTsKdmFyIEVnPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWEsZT1iW2NdO2lmKCFDZy5leGVjKGUpKXRocm93IEVycm9yKCJJbnZhbGlkIGtleSB3aWxkY2FyZCIpO3ZhciBmPWUuaW5kZXhPZigiLioiKSxnPWYhPT0tMSYmZj09PWUubGVuZ3RoLTIsaD1nP2Uuc2xpY2UoMCxlLmxlbmd0aC0yKTplLGw7YTppZihkLmxlbmd0aD09PTApbD0hMTtlbHNle2Zvcih2YXIgbj1kLnNwbGl0KCIuIikscD0wO3A8bi5sZW5ndGg7cCsrKWlmKCFEZy5leGVjKG5bcF0pKXtsPSExO2JyZWFrIGF9bD0hMH1pZighbHx8aC5sZW5ndGg+ZC5sZW5ndGh8fCFnJiZkLmxlbmd0aCE9PWUubGVuZ3RoPzA6Zz9TYihkLGgpJiYoZD09PWh8fGQuY2hhckF0KGgubGVuZ3RoKT09PSIuIik6ZD09PWgpcmV0dXJuITB9cmV0dXJuITF9LERnPS9eW2EteiRfXVtcdy0kXSokL2ksQ2c9L14oPzpbYS16XyRdW2Etei1fJDAtOV0qXC4pKlthLXpfJF1bYS16LV8kMC05XSooPzpcLlwqKT8kL2k7CnZhciBGZz1bIm1hdGNoZXMiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiXTtmdW5jdGlvbiBHZyhhLGIpe2lmKCFhKXJldHVybiExO3RyeXtmb3IodmFyIGM9MDtjPEZnLmxlbmd0aDtjKyspe3ZhciBkPUZnW2NdO2lmKGFbZF0hPW51bGwpcmV0dXJuIGFbZF0oYil9fWNhdGNoKGUpe31yZXR1cm4hMX1mdW5jdGlvbiBIZyhhLGIpe3ZhciBjPVN0cmluZyhhKSxkPVN0cmluZyhiKSxlPWMubGVuZ3RoLWQubGVuZ3RoO3JldHVybiBlPj0wJiZjLmluZGV4T2YoZCxlKT09PWV9ZnVuY3Rpb24gSWcoYSxiKXtyZXR1cm4gU3RyaW5nKGEpLnNwbGl0KCIsIikuaW5kZXhPZihTdHJpbmcoYikpPj0wfQpmdW5jdGlvbiBKZyhhLGIsYyxkKXt2YXIgZT1jPyJpIjp2b2lkIDA7dHJ5e3ZhciBmPVN0cmluZyhiKStTdHJpbmcoZSksZz1kPT1udWxsP3ZvaWQgMDpkLmdldChmKTtnfHwoZz1uZXcgUmVnRXhwKGIsZSksZD09bnVsbHx8ZC5zZXQoZixnKSk7cmV0dXJuIGcudGVzdChhKX1jYXRjaChoKXtyZXR1cm4hMX19ZnVuY3Rpb24gS2coYSxiKXtyZXR1cm4gU3RyaW5nKGEpLmluZGV4T2YoU3RyaW5nKGIpKT49MH1mdW5jdGlvbiBMZyhhLGIpe3JldHVybiBTdHJpbmcoYSk9PT1TdHJpbmcoYil9ZnVuY3Rpb24gTWcoYSxiKXtyZXR1cm4gTnVtYmVyKGEpPj1OdW1iZXIoYil9ZnVuY3Rpb24gTmcoYSxiKXtyZXR1cm4gTnVtYmVyKGEpPD1OdW1iZXIoYil9ZnVuY3Rpb24gT2coYSxiKXtyZXR1cm4gTnVtYmVyKGEpPk51bWJlcihiKX1mdW5jdGlvbiBQZyhhLGIpe3JldHVybiBOdW1iZXIoYSk8TnVtYmVyKGIpfQpmdW5jdGlvbiBRZyhhLGIpe3JldHVybiBTYihTdHJpbmcoYSksU3RyaW5nKGIpKX07ZnVuY3Rpb24gWGcoYSl7dmFyIGI9YS5zZWFyY2g7cmV0dXJuIGEucHJvdG9jb2wrIi8vIithLmhvc3RuYW1lK2EucGF0aG5hbWUrKGI/YisiJnJpY2hzc3Rzc2UiOiI/cmljaHNzdHNzZSIpfTt2YXIgWWc9ZnVuY3Rpb24oKXt0aGlzLlI9IiJ9LCRnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9Yi5mYWxsYmFja191cmwsZD1iLmZhbGxiYWNrX3VybF9tZXRob2Q7aWYoYyYmZCl7dmFyIGU9e307WmcoYSwoZVtkXT1bY10sZS5vcHRpb25zPXt9LGUpKX19fSxhaD1mdW5jdGlvbihhLGIsYyl7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGQ9bShhKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTt0eXBlb2YgZj09PSJzdHJpbmciJiZjKGYsYil9fSxaZz1mdW5jdGlvbihhLGIpe2lmKGIpZm9yKHZhciBjPUNkKGIub3B0aW9ucyk/Yi5vcHRpb25zOnt9LGQ9bShPYmplY3Qua2V5cyhiKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWUsZz1iW2ZdO3N3aXRjaChmKXtjYXNlICJzZW5kX3BpeGVsIjphaChnLGMsZnVuY3Rpb24oaCxsKXtyZXR1cm4gdm9pZCBhLksoaCxsKX0pO2JyZWFrO2Nhc2UgImZldGNoIjphaChnLApjLGZ1bmN0aW9uKGgsbCl7cmV0dXJuIHZvaWQgYS5IKGgsbCl9KX19fTt2YXIgYmg9L14oW2Etel1bYS16MC05XSopOighfFw/KShcKnxzdHJpbmd8Ym9vbGVhbnxudW1iZXJ8Rm58UGl4aWVNYXB8TGlzdHxPcGFxdWVWYWx1ZSkkL2ksY2g9e0ZuOiJmdW5jdGlvbiIsUGl4aWVNYXA6Ik9iamVjdCIsTGlzdDoiQXJyYXkifTsKZnVuY3Rpb24gZGgoYSxiKXtmb3IodmFyIGM9WyJpbnB1dDohKiJdLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9YmguZXhlYyhjW2RdKTtpZighZSl0aHJvdyBFcnJvcigiSW50ZXJuYWwgRXJyb3IgaW4gIithKTt2YXIgZj1lWzFdLGc9ZVsyXT09PSIhIixoPWVbM10sbD1iW2RdO2lmKGw9PW51bGwpe2lmKGcpdGhyb3cgRXJyb3IoIkVycm9yIGluICIrYSsiLiBSZXF1aXJlZCBhcmd1bWVudCAiK2YrIiBub3Qgc3VwcGxpZWQuIik7fWVsc2UgaWYoaCE9PSIqIil7dmFyIG49dHlwZW9mIGw7bCBpbnN0YW5jZW9mIEtkP249IkZuIjpsIGluc3RhbmNlb2YgR2Q/bj0iTGlzdCI6bCBpbnN0YW5jZW9mIGtiP249IlBpeGllTWFwIjpsIGluc3RhbmNlb2YgU2Q/bj0iUGl4aWVQcm9taXNlIjpsIGluc3RhbmNlb2YgUGQmJihuPSJPcGFxdWVWYWx1ZSIpO2lmKG4hPT1oKXRocm93IEVycm9yKCJFcnJvciBpbiAiK2ErIi4gQXJndW1lbnQgIitmKyIgaGFzIHR5cGUgIisoKGNoW25dfHxuKSsiLCB3aGljaCBkb2VzIG5vdCBtYXRjaCByZXF1aXJlZCB0eXBlICIpKwooKGNoW2hdfHxoKSsiLiIpKTt9fX1mdW5jdGlvbiBLKGEsYixjKXtmb3IodmFyIGQ9W10sZT1tKGMpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2cgaW5zdGFuY2VvZiBLZD9kLnB1c2goImZ1bmN0aW9uIik6ZyBpbnN0YW5jZW9mIEdkP2QucHVzaCgiQXJyYXkiKTpnIGluc3RhbmNlb2Yga2I/ZC5wdXNoKCJPYmplY3QiKTpnIGluc3RhbmNlb2YgU2Q/ZC5wdXNoKCJQcm9taXNlIik6ZyBpbnN0YW5jZW9mIFBkP2QucHVzaCgiT3BhcXVlVmFsdWUiKTpkLnB1c2godHlwZW9mIGcpfXJldHVybiBFcnJvcigiQXJndW1lbnQgZXJyb3IgaW4gIithKyIuIEV4cGVjdGVkIGFyZ3VtZW50IHR5cGVzIFsiKyhiLmpvaW4oIiwiKSsiXSwgYnV0IHJlY2VpdmVkIFsiKSsoZC5qb2luKCIsIikrIl0uIikpfWZ1bmN0aW9uIGVoKGEpe3JldHVybiBhIGluc3RhbmNlb2Yga2J9ZnVuY3Rpb24gZmgoYSl7cmV0dXJuIGVoKGEpfHxhPT09bnVsbHx8Z2goYSl9CmZ1bmN0aW9uIGhoKGEpe3JldHVybiBhIGluc3RhbmNlb2YgS2R9ZnVuY3Rpb24gaWgoYSl7cmV0dXJuIGhoKGEpfHxhPT09bnVsbHx8Z2goYSl9ZnVuY3Rpb24gamgoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBHZH1mdW5jdGlvbiBraChhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIFBkfWZ1bmN0aW9uIGxoKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmcifWZ1bmN0aW9uIG1oKGEpe3JldHVybiBsaChhKXx8YT09PW51bGx8fGdoKGEpfWZ1bmN0aW9uIG5oKGEpe3JldHVybiB0eXBlb2YgYT09PSJib29sZWFuIn1mdW5jdGlvbiBvaChhKXtyZXR1cm4gbmgoYSl8fGdoKGEpfWZ1bmN0aW9uIHBoKGEpe3JldHVybiBuaChhKXx8YT09PW51bGx8fGdoKGEpfWZ1bmN0aW9uIHFoKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIifWZ1bmN0aW9uIGdoKGEpe3JldHVybiBhPT09dm9pZCAwfTtmdW5jdGlvbiByaChhKXtyZXR1cm4iIithfQpmdW5jdGlvbiBzaChhLGIpe3ZhciBjPVtdO3JldHVybiBjfTtmdW5jdGlvbiB0aChhLGIpe3ZhciBjPW5ldyBLZChhLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSxlPTA7ZTxkLmxlbmd0aDtlKyspZFtlXT10aGlzLmV2YWx1YXRlKGRbZV0pO3RyeXtyZXR1cm4gYi5hcHBseSh0aGlzLGQpfWNhdGNoKGcpe3Rocm93IGNiKGcpO319KTtjLlphKCk7cmV0dXJuIGN9CmZ1bmN0aW9uIHVoKGEsYil7dmFyIGM9bmV3IGtiLGQ7Zm9yKGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXt2YXIgZT1iW2RdO3liKGUpP2Muc2V0KGQsdGgoYSsiXyIrZCxlKSk6Q2QoZSk/Yy5zZXQoZCx1aChhKyJfIitkLGUpKTooQWIoZSl8fHpiKGUpfHx0eXBlb2YgZT09PSJib29sZWFuIikmJmMuc2V0KGQsZSl9Yy5aYSgpO3JldHVybiBjfTtmdW5jdGlvbiB3aChhLGIpe2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTtpZighbWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dmFyIGM9e30sZD1uZXcga2I7cmV0dXJuIGQ9dWgoIkFzc2VydEFwaVN1YmplY3QiLApjKX07ZnVuY3Rpb24geGgoYSxiKXtpZighbWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7aWYoYSBpbnN0YW5jZW9mIFNkKXRocm93IEVycm9yKCJBcmd1bWVudCBhY3R1YWwgY2Fubm90IGhhdmUgdHlwZSBQcm9taXNlLiBBc3NlcnRpb25zIG9uIGFzeW5jaHJvbm91cyBjb2RlIGFyZW4ndCBzdXBwb3J0ZWQuIik7dmFyIGM9e30sZD1uZXcga2I7cmV0dXJuIGQ9dWgoIkFzc2VydFRoYXRTdWJqZWN0IixjKX07ZnVuY3Rpb24geWgoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBiPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxjPVtdLGQ9dGhpcy5ULGU9MDtlPGIubGVuZ3RoOysrZSljLnB1c2goVGQoYltlXSxkKSk7cmV0dXJuIFVkKGEuYXBwbHkobnVsbCxjKSl9fWZ1bmN0aW9uIHpoKCl7Zm9yKHZhciBhPU1hdGgsYj1BaCxjPXt9LGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXTthLmhhc093blByb3BlcnR5KGUpJiYoY1tlXT15aChhW2VdLmJpbmQoYSkpKX1yZXR1cm4gY307ZnVuY3Rpb24gQmgoYSl7cmV0dXJuIGEhPW51bGwmJlNiKGEsIl9fY3Z0XyIpfTtmdW5jdGlvbiBDaChhKXt2YXIgYjtyZXR1cm4gYn07ZnVuY3Rpb24gRGgoYSl7dmFyIGI7cmV0dXJuIGJ9O2Z1bmN0aW9uIEVoKGEpe3RyeXtyZXR1cm4gZW5jb2RlVVJJKGEpfWNhdGNoKGIpe319O2Z1bmN0aW9uIEZoKGEpe3RyeXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9Y2F0Y2goYil7fX07ZnVuY3Rpb24gR2goYSxiKXt2YXIgYz0hMTt2YXIgZD1KU09OLnBhcnNlKGEpO2lmKCFkKXRocm93IEVycm9yKCJJbnZhbGlkIGJvb2xlYW4gZXhwcmVzc2lvbiBzdHJpbmcgd2FzIGdpdmVuLiIpO2M9SGgoZCxiKTtyZXR1cm4gY30KdmFyIEloPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe2lmKGE9PT12b2lkIDApcmV0dXJuO2E9YVtiW2NdXX1yZXR1cm4gYX0sSmg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnByZUhpdDtpZihjKXt2YXIgZD1hWzBdO3N3aXRjaChkKXtjYXNlICJoaXREYXRhIjpyZXR1cm4gYS5sZW5ndGg8Mj92b2lkIDA6SWgoYy5nZXRIaXREYXRhKGFbMV0pLGEuc2xpY2UoMikpO2Nhc2UgIm1ldGFkYXRhIjpyZXR1cm4gYS5sZW5ndGg8Mj92b2lkIDA6SWgoYy5nZXRNZXRhZGF0YShhWzFdKSxhLnNsaWNlKDIpKTtjYXNlICJldmVudE5hbWUiOnJldHVybiBjLmdldEV2ZW50TmFtZSgpO2Nhc2UgImRlc3RpbmF0aW9uSWQiOnJldHVybiBjLmdldERlc3RpbmF0aW9uSWQoKTtkZWZhdWx0OnRocm93IEVycm9yKGQrIiBpcyBub3QgYSB2YWxpZCBmaWVsZCB0aGF0IGNhbiBiZSBhY2Nlc3NlZFxuICAgICAgICAgICAgICAgICAgICAgIGZyb20gUHJlSGl0IGRhdGEuIik7fX19LApLaD1mdW5jdGlvbihhLGIpe2lmKGEpe2lmKGEuY29udGV4dFZhbHVlIT09dm9pZCAwKXt2YXIgYzthOnt2YXIgZD1hLmNvbnRleHRWYWx1ZSxlPWQua2V5UGFydHM7aWYoZSYmZS5sZW5ndGghPT0wKXt2YXIgZj1kLm5hbWVzcGFjZVR5cGU7c3dpdGNoKGYpe2Nhc2UgMTpjPUpoKGUsYik7YnJlYWsgYTtjYXNlIDI6dmFyIGc9Yi5tYWNybztjPWc/Z1tlWzBdXTp2b2lkIDA7YnJlYWsgYTtkZWZhdWx0OnRocm93IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZSBUeXBlIHVzZWQ6ICIrZik7fX1jPXZvaWQgMH1yZXR1cm4gY31pZihhLmJvb2xlYW5FeHByZXNzaW9uVmFsdWUhPT12b2lkIDApcmV0dXJuIEhoKGEuYm9vbGVhbkV4cHJlc3Npb25WYWx1ZSxiKTtpZihhLmJvb2xlYW5WYWx1ZSE9PXZvaWQgMClyZXR1cm4hIWEuYm9vbGVhblZhbHVlO2lmKGEuc3RyaW5nVmFsdWUhPT12b2lkIDApcmV0dXJuIFN0cmluZyhhLnN0cmluZ1ZhbHVlKTtpZihhLmludGVnZXJWYWx1ZSE9PXZvaWQgMClyZXR1cm4gTnVtYmVyKGEuaW50ZWdlclZhbHVlKTsKaWYoYS5kb3VibGVWYWx1ZSE9PXZvaWQgMClyZXR1cm4gTnVtYmVyKGEuZG91YmxlVmFsdWUpO3Rocm93IEVycm9yKCJVbmtub3duIGZpZWxkIHVzZWQgZm9yIHZhcmlhYmxlIG9mIHR5cGUgRXhwcmVzc2lvblZhbHVlOiIrYSk7fX0sSGg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmFyZ3M7aWYoIUFycmF5LmlzQXJyYXkoYyl8fGMubGVuZ3RoPT09MCl0aHJvdyBFcnJvcignSW52YWxpZCBib29sZWFuIGV4cHJlc3Npb24gZm9ybWF0LiBFeHBlY3RlZCAiYXJncyI6JytjKyIgcHJvcGVydHkgdG9cbiAgICAgICAgIGJlIG5vbi1lbXB0eSBhcnJheS4iKTt2YXIgZD1mdW5jdGlvbihnKXtyZXR1cm4gS2goZyxiKX07c3dpdGNoKGEudHlwZSl7Y2FzZSAxOmZvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWlmKGQoY1tlXSkpcmV0dXJuITA7cmV0dXJuITE7Y2FzZSAyOmZvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7ZisrKWlmKCFkKGNbZl0pKXJldHVybiExO3JldHVybiBjLmxlbmd0aD4wO2Nhc2UgMzpyZXR1cm4hZChjWzBdKTsKY2FzZSA0OnJldHVybiBKZyhkKGNbMF0pLGQoY1sxXSksITEsYi5yZWdleENhY2hlKTtjYXNlIDU6cmV0dXJuIExnKGQoY1swXSksZChjWzFdKSk7Y2FzZSA2OnJldHVybiBRZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgNzpyZXR1cm4gSGcoZChjWzBdKSxkKGNbMV0pKTtjYXNlIDg6cmV0dXJuIEtnKGQoY1swXSksZChjWzFdKSk7Y2FzZSA5OnJldHVybiBQZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgMTA6cmV0dXJuIE5nKGQoY1swXSksZChjWzFdKSk7Y2FzZSAxMTpyZXR1cm4gT2coZChjWzBdKSxkKGNbMV0pKTtjYXNlIDEyOnJldHVybiBNZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgMTM6cmV0dXJuIElnKGQoY1swXSksU3RyaW5nKGQoY1sxXSkpKTtkZWZhdWx0OnRocm93IEVycm9yKCdJbnZhbGlkIGJvb2xlYW4gZXhwcmVzc2lvbiBmb3JtYXQuIEV4cGVjdGVkICJ0eXBlIiBwcm9wZXJ0eSB0b2JlIGEgcG9zaXRpdmUgaW50ZWdlciB3aGljaCBpcyBsZXNzIHRoYW4gMTQuJyk7fX07CmZ1bmN0aW9uIExoKGEpe2lmKCFtaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nfHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7fTtmdW5jdGlvbiBNaChhKXt2YXIgYj1UZChhKTtyZXR1cm4gbmcoYj8iIitiOiIiKX07ZnVuY3Rpb24gTmgoYSxiKXtpZighcWgoYSl8fCFxaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsibnVtYmVyIiwibnVtYmVyIl0sYXJndW1lbnRzKTtyZXR1cm4gRGIoYSxiKX07ZnVuY3Rpb24gT2goKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07ZnVuY3Rpb24gUGgoYSl7aWYoYT09PW51bGwpcmV0dXJuIm51bGwiO2lmKGEgaW5zdGFuY2VvZiBHZClyZXR1cm4iYXJyYXkiO2lmKGEgaW5zdGFuY2VvZiBLZClyZXR1cm4iZnVuY3Rpb24iO2lmKGEgaW5zdGFuY2VvZiBQZCl7dmFyIGI9YS5nZXRWYWx1ZSgpO2lmKChiPT1udWxsP3ZvaWQgMDpiLmNvbnN0cnVjdG9yKT09PXZvaWQgMHx8Yi5jb25zdHJ1Y3Rvci5uYW1lPT09dm9pZCAwKXt2YXIgYz1TdHJpbmcoYik7cmV0dXJuIGMuc3Vic3RyaW5nKDgsYy5sZW5ndGgtMSl9cmV0dXJuIFN0cmluZyhiLmNvbnN0cnVjdG9yLm5hbWUpfXJldHVybiB0eXBlb2YgYX07ZnVuY3Rpb24gUWgoYSl7ZnVuY3Rpb24gYihjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dHJ5e3JldHVybiBjKGQpfWNhdGNoKGUpeyhsZ3x8bWcuUG8pJiZhLmNhbGwodGhpcyxlLm1lc3NhZ2UpfX19cmV0dXJue3BhcnNlOmIoZnVuY3Rpb24oYyl7cmV0dXJuIFVkKEpTT04ucGFyc2UoYykpfSksc3RyaW5naWZ5OmIoZnVuY3Rpb24oYyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFRkKGMpKX0pLHB1YmxpY05hbWU6IkpTT04ifX07ZnVuY3Rpb24gUmgoYSl7cmV0dXJuIEliKFRkKGEsdGhpcy5UKSl9O2Z1bmN0aW9uIFNoKGEpe3JldHVybiBOdW1iZXIoVGQoYSx0aGlzLlQpKX07ZnVuY3Rpb24gVGgoYSl7cmV0dXJuIGE9PT1udWxsPyJudWxsIjphPT09dm9pZCAwPyJ1bmRlZmluZWQiOmEudG9TdHJpbmcoKX07ZnVuY3Rpb24gVWgoYSxiLGMpe3ZhciBkPW51bGwsZT0hMTtyZXR1cm4gZT9kOm51bGx9O3ZhciBBaD0iZmxvb3IgY2VpbCByb3VuZCBtYXggbWluIGFicyBwb3cgc3FydCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBWaCgpe3ZhciBhPXt9O3JldHVybntXcjpmdW5jdGlvbihiKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShiKT9hW2JdOnZvaWQgMH0sS286ZnVuY3Rpb24oYixjKXthW2JdPWN9LHJlc2V0OmZ1bmN0aW9uKCl7YT17fX19fWZ1bmN0aW9uIFdoKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEtkLnByb3RvdHlwZS5pbnZva2UuYXBwbHkoYSxbYl0uY29uY2F0KHcoT2EuYXBwbHkoMCxhcmd1bWVudHMpKSkpfX0KZnVuY3Rpb24gWGgoYSxiKXtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsImFueSJdLGFyZ3VtZW50cyk7fQpmdW5jdGlvbiBZaChhLGIpe2lmKCFsaChhKXx8IWVoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJQaXhpZU1hcCJdLGFyZ3VtZW50cyk7fTt2YXIgWmg9e307dmFyICRoPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBrYjtpZihhIGluc3RhbmNlb2YgR2QpZm9yKHZhciBjPWEuRmEoKSxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07YS5oYXMoZSkmJmIuc2V0KGUsYS5nZXQoZSkpfWVsc2UgaWYoYSBpbnN0YW5jZW9mIEtkKWZvcih2YXIgZj1hLkZhKCksZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgaD1mW2ddO2Iuc2V0KGgsYS5nZXQoaCkpfWVsc2UgZm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspYi5zZXQobCxhW2xdKTtyZXR1cm4gYn07ClpoLmtleXM9ZnVuY3Rpb24oYSl7ZGgodGhpcy5nZXROYW1lKCksYXJndW1lbnRzKTtpZihhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBLZHx8dHlwZW9mIGE9PT0ic3RyaW5nIilhPSRoKGEpO2lmKGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkKXJldHVybiBuZXcgR2QoYS5GYSgpKTtyZXR1cm4gbmV3IEdkfTsKWmgudmFsdWVzPWZ1bmN0aW9uKGEpe2RoKHRoaXMuZ2V0TmFtZSgpLGFyZ3VtZW50cyk7aWYoYSBpbnN0YW5jZW9mIEdkfHxhIGluc3RhbmNlb2YgS2R8fHR5cGVvZiBhPT09InN0cmluZyIpYT0kaChhKTtpZihhIGluc3RhbmNlb2Yga2J8fGEgaW5zdGFuY2VvZiBTZClyZXR1cm4gbmV3IEdkKGEuaGMoKSk7cmV0dXJuIG5ldyBHZH07ClpoLmVudHJpZXM9ZnVuY3Rpb24oYSl7ZGgodGhpcy5nZXROYW1lKCksYXJndW1lbnRzKTtpZihhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBLZHx8dHlwZW9mIGE9PT0ic3RyaW5nIilhPSRoKGEpO2lmKGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkKXJldHVybiBuZXcgR2QoYS5mYygpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gbmV3IEdkKGIpfSkpO3JldHVybiBuZXcgR2R9OwpaaC5mcmVlemU9ZnVuY3Rpb24oYSl7KGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkfHxhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBLZCkmJmEuWmEoKTtyZXR1cm4gYX07WmguZGVsZXRlPWZ1bmN0aW9uKGEsYil7aWYoYSBpbnN0YW5jZW9mIGtiJiYhYS5IYigpKXJldHVybiBhLnJlbW92ZShiKSwhMDtyZXR1cm4hMX07ZnVuY3Rpb24gTChhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKSxkPWEuVC54YigpO2lmKCFkKXRocm93IEVycm9yKCJNaXNzaW5nIHByb2dyYW0gc3RhdGUuIik7aWYoZC5pdCl7dHJ5e2QuUm4uYXBwbHkobnVsbCxbYl0uY29uY2F0KHcoYykpKX1jYXRjaChlKXt0aHJvdyBzYigiVEFHR0lORyIsMjEpLGU7fXJldHVybn1kLlJuLmFwcGx5KG51bGwsW2JdLmNvbmNhdCh3KGMpKSl9O3ZhciBhaT1mdW5jdGlvbigpe3RoaXMuSz17fTt0aGlzLkg9e307dGhpcy5OPSEwO307YWkucHJvdG90eXBlLmdldD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY29udGFpbnMoYSk/dGhpcy5LW2FdOnZvaWQgMDtyZXR1cm4gY307YWkucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLksuaGFzT3duUHJvcGVydHkoYSl9OwphaS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjKXtpZih0aGlzLmNvbnRhaW5zKGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFkZCBhIGZ1bmN0aW9uIHdoaWNoIGFscmVhZHkgZXhpc3RzOiAiK2ErIi4iKTtpZih0aGlzLkguaGFzT3duUHJvcGVydHkoYSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYWRkIGFuIEFQSSB3aXRoIGFuIGV4aXN0aW5nIHByaXZhdGUgQVBJIG5hbWU6ICIrYSsiLiIpO3RoaXMuS1thXT1jP3ZvaWQgMDp5YihiKT90aChhLGIpOnVoKGEsYil9O2Z1bmN0aW9uIGJpKGEsYil7dmFyIGM9dm9pZCAwO3JldHVybiBjfTtmdW5jdGlvbiBjaSgpe3ZhciBhPXt9OwpyZXR1cm4gYX07dmFyIGRpPXt9LGVpPShkaVtGLkQuc2FdPSJnY3UiLGRpW0YuRC5laF09ImVwdCIsZGlbRi5ELlNiXT0iZ2NsZ2IiLGRpW0YuRC5sYl09ImdjbGF3IixkaVtGLkQuemxdPSJnY2xpZF9sZW4iLGRpW0YuRC5CZV09ImdjbGdzIixkaVtGLkQuQ2VdPSJnY2xscCIsZGlbRi5ELkRlXT0iZ2Nsc3QiLGRpW0YuRC5FZF09ImF1aWQiLGRpW0YuRC5CbF09ImFlIixkaVtGLkQuQ2ZdPSJkc2NudCIsZGlbRi5ELkRmXT0iZmNudHIiLGRpW0YuRC5FZl09ImZsbmciLGRpW0YuRC5GZl09Im1pZCIsZGlbRi5ELndpXT0iYnR0eXBlIixkaVtGLkQuS2JdPSJnYWNpZCIsZGlbRi5ELkdkXT0ibGFiZWwiLGRpW0YuRC5GZV09ImNhcGkiLGRpW0YuRC5qaF09InBzY2RsIixkaVtGLkQuZWJdPSJjdXJyZW5jeV9jb2RlIixkaVtGLkQuR2VdPSJ2ZGx0diIsZGlbRi5ELmtoXT0iY2xvY3QiLGRpW0YuRC5FbF09Il9kYmciLGRpW0YuRC5JZV09Im9lZGVsZCIsZGlbRi5ELlZjXT0iZWRpZCIsZGlbRi5ELk1kXT0iZXZuaWQiLApkaVtGLkQuRWldPSJldmppZCIsZGlbRi5ELk5kXT0iZXhjaWQiLGRpW0YuRC5yaF09ImdhYyIsZGlbRi5ELkplXT0iZ2FjZ2IiLGRpW0YuRC5NbF09ImdhY21jb3YiLGRpW0YuRC5LZV09ImdkcHIiLGRpW0YuRC5YY109ImdkaWQiLGRpW0YuRC5MZV09Il9uZyIsZGlbRi5ELmNxXT0iX29ubyIsZGlbRi5ELnRoXT0iZ3BwX3NpZCIsZGlbRi5ELnVoXT0iZ3BwIixkaVtGLkQuUGxdPSJnc2FleHAiLGRpW0YuRC5WZl09Il90dSIsZGlbRi5ELk1lXT0iZnJtIixkaVtGLkQuS2ldPSJndG1fdXAiLGRpW0YuRC5QZF09ImxwcyIsZGlbRi5ELkxpXT0iZGlkIixkaVtGLkQuUWRdPSJmY250ciIsZGlbRi5ELlJkXT0iZmxuZyIsZGlbRi5ELlNkXT0ibWlkIixkaVtGLkQuTmVdPXZvaWQgMCxkaVtGLkQuTWJdPSJ0aWJhIixkaVtGLkQuV2JdPSJyZHAiLGRpW0YuRC54Y109ImVjc2lkIixkaVtGLkQuWmZdPSJnYV91aWQiLGRpW0YuRC5VZF09ImRlbG9wYyIsZGlbRi5ELk9lXT0iZ2Rwcl9jb25zZW50IiwKZGlbRi5ELlBhXT0ib2lkIixkaVtGLkQuZG1dPSJvaWRzcmMiLGRpW0YuRC5mbV09InVwdGdzIixkaVtGLkQuY2ddPSJ1YWEiLGRpW0YuRC5kZ109InVhYiIsZGlbRi5ELmVnXT0idWFmdmwiLGRpW0YuRC5mZ109InVhbWIiLGRpW0YuRC5nZ109InVhbSIsZGlbRi5ELmhnXT0idWFwIixkaVtGLkQuaWddPSJ1YXB2IixkaVtGLkQuamddPSJ1YXciLGRpW0YuRC5nbV09ImVjX2xhdCIsZGlbRi5ELmhtXT0iZWNfbWV0YSIsZGlbRi5ELmltXT0iZWNfbSIsZGlbRi5ELmptXT0iZWNfc2VsIixkaVtGLkQua21dPSJlY19zIixkaVtGLkQuQmNdPSJlY19tb2RlIixkaVtGLkQuZmJdPSJ1c2VySWQiLGRpW0YuRC5rZ109InVzX3ByaXZhY3kiLGRpW0YuRC5RYV09InZhbHVlIixkaVtGLkQucW1dPSJtY292IixkaVtGLkQuV2ldPSJobiIsZGlbRi5ELlZtXT0iZ3RtX2VlIixkaVtGLkQuWWldPSJ1aXAiLGRpW0YuRC5KaF09Im10IixkaVtGLkQuZGVdPSJucGEiLGRpW0YuRC5ZcV09InNnX3VjIixkaVtGLkQueWldPQpudWxsLGRpW0YuRC5iZF09bnVsbCxkaVtGLkQudGJdPW51bGwsZGlbRi5ELkhhXT1udWxsLGRpW0YuRC56YV09bnVsbCxkaVtGLkQuVWFdPW51bGwsZGlbRi5ELlBlXT1udWxsLGRpW0YuRC5lZF09bnVsbCxkaVtGLkQuc2hdPW51bGwsZGlbRi5ELkJkXT1udWxsLGRpW0YuRC5DZF09bnVsbCxkaVtGLkQuZmhdPW51bGwsZGlbRi5ELmdoXT1udWxsLGRpW0YuRC5UYV09bnVsbCxkaVtGLkQuV2NdPW51bGwsZGkpO2Z1bmN0aW9uIGZpKGEsYil7aWYoYSl7dmFyIGM9YS5zcGxpdCgieCIpO2MubGVuZ3RoPT09MiYmKGdpKGIsInVfdyIsY1swXSksZ2koYiwidV9oIixjWzFdKSl9fWZ1bmN0aW9uIGhpKGEpe3ZhciBiPWlpO2I9Yj09PXZvaWQgMD9qaTpiO3JldHVybiBraShsaShhLGIpKX1mdW5jdGlvbiBraShhKXtyZXR1cm4oYXx8W10pLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4hIWJ9KS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIigiK1ttaShiLnZhbHVlKSxtaShiLnF1YW50aXR5KSxtaShiLml0ZW1faWQpLG1pKGIuc3RhcnRfZGF0ZSksbWkoYi5lbmRfZGF0ZSldLmpvaW4oIioiKSsiKSJ9KS5qb2luKCIiKX0KZnVuY3Rpb24gbGkoYSxiKXtyZXR1cm4oYXx8W10pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hIWN9KS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJue2l0ZW1faWQ6YihjKSxxdWFudGl0eTpjLnF1YW50aXR5LHZhbHVlOmMucHJpY2Usc3RhcnRfZGF0ZTpjLnN0YXJ0X2RhdGUsZW5kX2RhdGU6Yy5lbmRfZGF0ZX19KX1mdW5jdGlvbiBqaShhKXtyZXR1cm5bYS5pdGVtX2lkLGEuaWQsYS5pdGVtX25hbWVdLmZpbmQoZnVuY3Rpb24oYil7cmV0dXJuIGIhPW51bGx9KX1mdW5jdGlvbiBuaShhKXtpZihhJiZhLmxlbmd0aClyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGImJmIuZXN0aW1hdGVkX2RlbGl2ZXJ5X2RhdGU/Yi5lc3RpbWF0ZWRfZGVsaXZlcnlfZGF0ZToiIn0pLmpvaW4oIiwiKX1mdW5jdGlvbiBnaShhLGIsYyl7Yz09PXZvaWQgMHx8Yz09PW51bGx8fGM9PT0iIiYmIXlnW2JdfHwoYVtiXT1jKX0KZnVuY3Rpb24gbWkoYSl7cmV0dXJuIHR5cGVvZiBhIT09Im51bWJlciImJnR5cGVvZiBhIT09InN0cmluZyI/IiI6YS50b1N0cmluZygpfTtmdW5jdGlvbiBvaSgpe3RoaXMuYmxvY2tTaXplPS0xfTtmdW5jdGlvbiBwaShhLGIpe3RoaXMuYmxvY2tTaXplPS0xO3RoaXMuYmxvY2tTaXplPTY0O3RoaXMuTj1SYS5VaW50OEFycmF5P25ldyBVaW50OEFycmF5KHRoaXMuYmxvY2tTaXplKTpBcnJheSh0aGlzLmJsb2NrU2l6ZSk7dGhpcy5SPXRoaXMuSz0wO3RoaXMuSD1bXTt0aGlzLmZhPWE7dGhpcy5aPWI7dGhpcy5qYT1SYS5JbnQzMkFycmF5P25ldyBJbnQzMkFycmF5KDY0KTpBcnJheSg2NCk7cWk9PT12b2lkIDAmJihSYS5JbnQzMkFycmF5P3FpPW5ldyBJbnQzMkFycmF5KHJpKTpxaT1yaSk7dGhpcy5yZXNldCgpfVNhKHBpLG9pKTtmb3IodmFyIHNpPVtdLHRpPTA7dGk8NjM7dGkrKylzaVt0aV09MDt2YXIgdWk9W10uY29uY2F0KDEyOCxzaSk7CnBpLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuUj10aGlzLks9MDt2YXIgYTtpZihSYS5JbnQzMkFycmF5KWE9bmV3IEludDMyQXJyYXkodGhpcy5aKTtlbHNle3ZhciBiPXRoaXMuWixjPWIubGVuZ3RoO2lmKGM+MCl7Zm9yKHZhciBkPUFycmF5KGMpLGU9MDtlPGM7ZSsrKWRbZV09YltlXTthPWR9ZWxzZSBhPVtdfXRoaXMuSD1hfTsKdmFyIHZpPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLk4sYz1hLmphLGQ9MCxlPTA7ZTxiLmxlbmd0aDspY1tkKytdPWJbZV08PDI0fGJbZSsxXTw8MTZ8YltlKzJdPDw4fGJbZSszXSxlPWQqNDtmb3IodmFyIGY9MTY7Zjw2NDtmKyspe3ZhciBnPWNbZi0xNV18MCxoPWNbZi0yXXwwO2NbZl09KChjW2YtMTZdfDApKygoZz4+Pjd8Zzw8MjUpXihnPj4+MTh8Zzw8MTQpXmc+Pj4zKXwwKSsoKGNbZi03XXwwKSsoKGg+Pj4xN3xoPDwxNSleKGg+Pj4xOXxoPDwxMyleaD4+PjEwKXwwKXwwfWZvcih2YXIgbD1hLkhbMF18MCxuPWEuSFsxXXwwLHA9YS5IWzJdfDAscT1hLkhbM118MCxyPWEuSFs0XXwwLHQ9YS5IWzVdfDAsdT1hLkhbNl18MCx2PWEuSFs3XXwwLHg9MDt4PDY0O3grKyl7dmFyIHk9KChsPj4+MnxsPDwzMCleKGw+Pj4xM3xsPDwxOSleKGw+Pj4yMnxsPDwxMCkpKyhsJm5ebCZwXm4mcCl8MCx6PSh2Kygocj4+PjZ8cjw8MjYpXihyPj4+MTF8cjw8MjEpXihyPj4+MjV8cjw8NykpfAowKSsoKChyJnRefnImdSkrKHFpW3hdfDApfDApKyhjW3hdfDApfDApfDA7dj11O3U9dDt0PXI7cj1xK3p8MDtxPXA7cD1uO249bDtsPXoreXwwfWEuSFswXT1hLkhbMF0rbHwwO2EuSFsxXT1hLkhbMV0rbnwwO2EuSFsyXT1hLkhbMl0rcHwwO2EuSFszXT1hLkhbM10rcXwwO2EuSFs0XT1hLkhbNF0rcnwwO2EuSFs1XT1hLkhbNV0rdHwwO2EuSFs2XT1hLkhbNl0rdXwwO2EuSFs3XT1hLkhbN10rdnwwfTsKcGkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihhLGIpe2I9PT12b2lkIDAmJihiPWEubGVuZ3RoKTt2YXIgYz0wLGQ9dGhpcy5LO2lmKHR5cGVvZiBhPT09InN0cmluZyIpZm9yKDtjPGI7KXRoaXMuTltkKytdPWEuY2hhckNvZGVBdChjKyspLGQ9PXRoaXMuYmxvY2tTaXplJiYodmkodGhpcyksZD0wKTtlbHNle3ZhciBlLGY9dHlwZW9mIGE7ZT1mIT0ib2JqZWN0Ij9mOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmY6Im51bGwiO2lmKGU9PSJhcnJheSJ8fGU9PSJvYmplY3QiJiZ0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIiKWZvcig7YzxiOyl7dmFyIGc9YVtjKytdO2lmKCEoIm51bWJlciI9PXR5cGVvZiBnJiYwPD1nJiYyNTU+PWcmJmc9PShnfDApKSl0aHJvdyBFcnJvcigibWVzc2FnZSBtdXN0IGJlIGEgYnl0ZSBhcnJheSIpO3RoaXMuTltkKytdPWc7ZD09dGhpcy5ibG9ja1NpemUmJih2aSh0aGlzKSxkPTApfWVsc2UgdGhyb3cgRXJyb3IoIm1lc3NhZ2UgbXVzdCBiZSBzdHJpbmcgb3IgYXJyYXkiKTsKfXRoaXMuSz1kO3RoaXMuUis9Yn07cGkucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBhPVtdLGI9dGhpcy5SKjg7dGhpcy5LPDU2P3RoaXMudXBkYXRlKHVpLDU2LXRoaXMuSyk6dGhpcy51cGRhdGUodWksdGhpcy5ibG9ja1NpemUtKHRoaXMuSy01NikpO2Zvcih2YXIgYz02MztjPj01NjtjLS0pdGhpcy5OW2NdPWImMjU1LGIvPTI1Njt2aSh0aGlzKTtmb3IodmFyIGQ9MCxlPTA7ZTx0aGlzLmZhO2UrKylmb3IodmFyIGY9MjQ7Zj49MDtmLT04KWFbZCsrXT10aGlzLkhbZV0+PmYmMjU1O3JldHVybiBhfTsKdmFyIHJpPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsCjQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSxxaTtmdW5jdGlvbiB3aSgpe3BpLmNhbGwodGhpcyw4LHhpKX1TYSh3aSxwaSk7dmFyIHhpPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV07dmFyIHlpPS9eWzAtOUEtRmEtZl17NjR9JC87ZnVuY3Rpb24gemkoYSl7dHJ5e3JldHVybihuZXcgVGV4dEVuY29kZXIpLmVuY29kZShhKX1jYXRjaChiKXtyZXR1cm4gWmIoYSl9fWZ1bmN0aW9uIEFpKGEpe3ZhciBiPUE7aWYoYT09PSIifHxhPT09ImUwIilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpO3ZhciBjO2lmKChjPWIuY3J5cHRvKT09bnVsbD8wOmMuc3VidGxlKXtpZih5aS50ZXN0KGEpKXJldHVybiBQcm9taXNlLnJlc29sdmUoYSk7dHJ5e3ZhciBkPXppKGEpO3JldHVybiBiLmNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixkKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBCaShlLGIpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4iZTIifSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgiZTIiKX19ZWxzZSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCJlMSIpfQpmdW5jdGlvbiBDaShhKXt0cnl7dmFyIGI9bmV3IHdpO2IudXBkYXRlKHppKGEpKTtyZXR1cm4gYi5kaWdlc3QoKX1jYXRjaChjKXtyZXR1cm4iZTIifX1mdW5jdGlvbiBEaShhKXt2YXIgYj1BO2lmKGE9PT0iInx8YT09PSJlMCJ8fHlpLnRlc3QoYSkpcmV0dXJuIGE7dmFyIGM9Q2koYSk7aWYoYz09PSJlMiIpcmV0dXJuImUyIjt0cnl7cmV0dXJuIEJpKGMsYil9Y2F0Y2goZCl7cmV0dXJuImUyIn19ZnVuY3Rpb24gQmkoYSxiKXt2YXIgYz1BcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGEpKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZCl9KS5qb2luKCIiKTtyZXR1cm4gYi5idG9hKGMpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPSskLywiIil9O2Z1bmN0aW9uIEVpKCl7Zm9yKHZhciBhPSExLGI9ITEsYz0wO2E9PT1iOylpZihhPURiKDAsMSk9PT0wLGI9RGIoMCwxKT09PTAsYysrLGM+MzApcmV0dXJuO3JldHVybiBhfXZhciBHaT17c2s6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBGaS5zayhhLGIsYyl9fSxIaT1mdW5jdGlvbigpe3RoaXMuc3R1ZGllcz17fTt0aGlzLkg9RWl9OwpIaS5wcm90b3R5cGUuc2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc3R1ZGllc1tiXTtpZighKChjPT09dm9pZCAwP0RiKDAsOTk5OSk6YyUxRTQpPGQucHJvYmFiaWxpdHkqKGQuY29udHJvbElkMj80OjIpKjFFNCkpcmV0dXJuIGE7YTp7dmFyIGU9ZC5zdHVkeUlkLGY9ZC5leHBlcmltZW50SWQsZz1kLmNvbnRyb2xJZCxoPWQuY29udHJvbElkMjtpZighKChhLmV4cHx8e30pW2ZdfHwoYS5leHB8fHt9KVtnXXx8aCYmKGEuZXhwfHx7fSlbaF0pKXt2YXIgbD1jIT09dm9pZCAwP2MlMj09PTA6dGhpcy5IKCk7aWYobCE9PXZvaWQgMCl7dmFyIG49bD8wOjE7aWYoaCl7dmFyIHA9YyE9PXZvaWQgMD8oYz4+MSklMj09PTA6dGhpcy5IKCk7aWYocD09PXZvaWQgMClicmVhayBhO258PShwPzA6MSk8PDF9bj09PTA/SWkoYSxmLGUpOm49PT0xP0lpKGEsZyxlKTpuPT09MiYmSWkoYSxoLGUpfX19cmV0dXJuIGF9Owp2YXIgS2k9ZnVuY3Rpb24oYSxiKXt2YXIgYz1GaTtyZXR1cm4gYy5zdHVkaWVzW2JdP0ppKGMsYil8fCEhKGEuZXhwfHx7fSlbYy5zdHVkaWVzW2JdLmV4cGVyaW1lbnRJZF06ITF9LExpPWZ1bmN0aW9uKGEsYil7dmFyIGM9Rmk7cmV0dXJuIGMuc3R1ZGllc1tiXSYmYy5zdHVkaWVzW2JdLmNvbnRyb2xJZCYmIUppKGMsYik/ISEoYS5leHB8fHt9KVtjLnN0dWRpZXNbYl0uY29udHJvbElkXTohMX0sTWk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1GaTtyZXR1cm4gYy5zdHVkaWVzW2JdJiZjLnN0dWRpZXNbYl0uY29udHJvbElkMiYmIUppKGMsYik/ISEoYS5leHB8fHt9KVtjLnN0dWRpZXNbYl0uY29udHJvbElkMl06ITF9LE5pPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEuZXhwfHx7fSxkPW0oT2JqZWN0LmtleXMoYykubWFwKE51bWJlcikpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2lmKGNbZl09PT1iKXJldHVybiBmfX0sSmk9ZnVuY3Rpb24oYSwKYil7cmV0dXJuISFhLnN0dWRpZXNbYl0uYWN0aXZlfHxhLnN0dWRpZXNbYl0ucHJvYmFiaWxpdHk+LjV9LElpPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmV4cHx8e307ZFtiXT1jO2EuZXhwPWR9LEZpPW5ldyBIaTt2YXIgaWo9ZnVuY3Rpb24oKXt0aGlzLkg9QS5nb29nbGVfdGFnX21hbmFnZXI9QS5nb29nbGVfdGFnX21hbmFnZXJ8fHt9fSxqajtmdW5jdGlvbiBraihhLGIpe2xqKCk7dmFyIGM9amo7cmV0dXJuIGMuSFthXT1jLkhbYV18fGIoKX1mdW5jdGlvbiBtaihhKXtsaigpO3JldHVybiBqai5IW2FdfWZ1bmN0aW9uIG5qKGEsYil7bGooKTtqai5IW2FdPWJ9ZnVuY3Rpb24gb2ooYSl7dmFyIGI9RSg1KTtsaigpO3ZhciBjPWpqO2MuSFtiXT1jLkhbYl18fGF9ZnVuY3Rpb24gcGooKXt2YXIgYT1FKDE5KTtsaigpO3ZhciBiPWpqO3JldHVybiBiLkhbYV09Yi5IW2FdfHx7fX1mdW5jdGlvbiBxaigpe3ZhciBhPUUoMTkpO2xqKCk7cmV0dXJuIGpqLkhbYV19ZnVuY3Rpb24gcmooKXtsaigpO3ZhciBhPWpqLGI9YS5ILnNlcXVlbmNlfHwxO2EuSC5zZXF1ZW5jZT1iKzE7cmV0dXJuIGJ9ZnVuY3Rpb24gbGooKXtqanx8KGpqPW5ldyBpail9O3ZhciBzaj1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiAwO2Nhc2UgNDkxOnJldHVybiAxMjtjYXNlIDQ4MDpyZXR1cm4gMTE7Y2FzZSA0OTk6cmV0dXJuIDEwO2Nhc2UgNTAwOnJldHVybiA2O2Nhc2UgNDIxOnJldHVybiA5O2Nhc2UgNTYxOnJldHVybiAxNztjYXNlIDQ4MjpyZXR1cm4gMTU7Y2FzZSA1NzA6cmV0dXJuIDE5O2Nhc2UgNDk1OnJldHVybiAxMztjYXNlIDUxNDpyZXR1cm4gMTY7Y2FzZSA1NzM6cmV0dXJuIDE4O2Nhc2UgMjM1OnJldHVybiA4O2Nhc2UgNTM6cmV0dXJuIDE7Y2FzZSA1NDpyZXR1cm4gMjtjYXNlIDUyOnJldHVybiA0O2Nhc2UgNzU6cmV0dXJuIDN9fSx0aj1mdW5jdGlvbihhLGIpe2EuTltiXT0hMDt2YXIgYz1zaihiKTtjIT09dm9pZCAwJiYoV2ZbY109ITApfSxNPWZ1bmN0aW9uKGEpe3JldHVybiEhdWouTlthXX0sdWo9bmV3IGZ1bmN0aW9uKCl7dGhpcy5OPVtdO3RoaXMuSz1bXTt0aGlzLkg9W107CnRqKHRoaXMsMTMyKTt2YXIgYT1OZig2LDZFNCk7WGZbMV09YTt2YXIgYj1OZig3LDEpO1hmWzNdPWI7dmFyIGM9TmYoMzUsNTApO1hmWzJdPWM7dmFyIGQ9TmYoNjksMTc3NjQ0ODkyMCk7WGZbNF09ZDsKdGoodGhpcyw0MzUpO3RqKHRoaXMsMTQxKTsKfTt2YXIgdmo9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IFNldDt0aGlzLks9bmV3IFNldH0seGo9ZnVuY3Rpb24oYSl7dmFyIGI9d2ouSDthPWE9PT12b2lkIDA/W106YTt2YXIgYz1bXS5jb25jYXQodyhiLkgpKS5jb25jYXQoW10uY29uY2F0KHcoYi5LKSkpLmNvbmNhdChhKTtjLnNvcnQoZnVuY3Rpb24oZCxlKXtyZXR1cm4gZC1lfSk7cmV0dXJuIGN9LHlqPWZ1bmN0aW9uKCl7dmFyIGE9W10uY29uY2F0KHcod2ouSC5IKSk7YS5zb3J0KGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGItY30pO3JldHVybiBhfSx6aj1mdW5jdGlvbigpe3ZhciBhPXdqLkgsYj1FKDQ0KTthLkg9bmV3IFNldDtpZihiIT09IiIpZm9yKHZhciBjPW0oYi5zcGxpdCgifiIpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9TnVtYmVyKGQudmFsdWUpO2lzTmFOKGUpfHxhLkguYWRkKGUpfX07dmFyIEFqPXt9LEJqPXtfX2NsOjEsX19lY2w6MSxfX2VobDoxLF9fZXZsOjEsX19mYWw6MSxfX2ZpbDoxLF9fZnNsOjEsX19obDoxLF9famVsOjEsX19sY2w6MSxfX3NkbDoxLF9fdGw6MSxfX3l0bDoxfSxDaj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHtfX3BhdXNlZDoxLF9fdGc6MX0sQmopLERqLEVqPSExO0RqPUVqO3ZhciBGaj0iIjtBai5xaj1Gajt2YXIgd2o9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPW5ldyB2an07dmFyIEdqPS86WzAtOV0rJC8sSGo9L15cZCtcLmZsc1wuZG91YmxlY2xpY2tcLm5ldCQvO2Z1bmN0aW9uIElqKGEsYixjLGQpe3ZhciBlPUpqKGEsISFkLGIpLGYsZztyZXR1cm4gYz8oZz1lW2JdKSE9bnVsbD9nOltdOihmPWVbYl0pPT1udWxsP3ZvaWQgMDpmWzBdfWZ1bmN0aW9uIEpqKGEsYixjKXtmb3IodmFyIGQ9e30sZT1tKGEuc3BsaXQoIiYiKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPW0oZi52YWx1ZS5zcGxpdCgiPSIpKSxoPWcubmV4dCgpLnZhbHVlLGw9eWEoZyksbj1kZWNvZGVVUklDb21wb25lbnQoaC5yZXBsYWNlKC9cKy9nLCIgIikpO2lmKGM9PT12b2lkIDB8fG49PT1jKXt2YXIgcD1sLmpvaW4oIj0iKTtkW25dfHwoZFtuXT1bXSk7ZFtuXS5wdXNoKGI/cDpkZWNvZGVVUklDb21wb25lbnQocC5yZXBsYWNlKC9cKy9nLCIgIikpKX19cmV0dXJuIGR9CmZ1bmN0aW9uIEtqKGEpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEpfWNhdGNoKGIpe319ZnVuY3Rpb24gTGooYSxiLGMsZCxlKXtiJiYoYj1TdHJpbmcoYikudG9Mb3dlckNhc2UoKSk7aWYoYj09PSJwcm90b2NvbCJ8fGI9PT0icG9ydCIpYS5wcm90b2NvbD1NaihhLnByb3RvY29sKXx8TWooQS5sb2NhdGlvbi5wcm90b2NvbCk7Yj09PSJwb3J0Ij9hLnBvcnQ9U3RyaW5nKE51bWJlcihhLmhvc3RuYW1lP2EucG9ydDpBLmxvY2F0aW9uLnBvcnQpfHwoYS5wcm90b2NvbD09PSJodHRwIj84MDphLnByb3RvY29sPT09Imh0dHBzIj80NDM6IiIpKTpiPT09Imhvc3QiJiYoYS5ob3N0bmFtZT0oYS5ob3N0bmFtZXx8QS5sb2NhdGlvbi5ob3N0bmFtZSkucmVwbGFjZShHaiwiIikudG9Mb3dlckNhc2UoKSk7cmV0dXJuIE5qKGEsYixjLGQsZSl9CmZ1bmN0aW9uIE5qKGEsYixjLGQsZSl7dmFyIGYsZz1NaihhLnByb3RvY29sKTtiJiYoYj1TdHJpbmcoYikudG9Mb3dlckNhc2UoKSk7c3dpdGNoKGIpe2Nhc2UgInVybF9ub19mcmFnbWVudCI6Zj1PaihhKTticmVhaztjYXNlICJwcm90b2NvbCI6Zj1nO2JyZWFrO2Nhc2UgImhvc3QiOmY9YS5ob3N0bmFtZS5yZXBsYWNlKEdqLCIiKS50b0xvd2VyQ2FzZSgpO2lmKGMpe3ZhciBoPS9ed3d3XGQqXC4vLmV4ZWMoZik7aCYmaFswXSYmKGY9Zi5zdWJzdHJpbmcoaFswXS5sZW5ndGgpKX1icmVhaztjYXNlICJwb3J0IjpmPVN0cmluZyhOdW1iZXIoYS5wb3J0KXx8KGc9PT0iaHR0cCI/ODA6Zz09PSJodHRwcyI/NDQzOiIiKSk7YnJlYWs7Y2FzZSAicGF0aCI6YS5wYXRobmFtZXx8YS5ob3N0bmFtZXx8c2IoIlRBR0dJTkciLDEpO2Y9YS5wYXRobmFtZS5zdWJzdHJpbmcoMCwxKT09PSIvIj9hLnBhdGhuYW1lOiIvIithLnBhdGhuYW1lO3ZhciBsPWYuc3BsaXQoIi8iKTsoZHx8W10pLmluZGV4T2YobFtsLmxlbmd0aC0KMV0pPj0wJiYobFtsLmxlbmd0aC0xXT0iIik7Zj1sLmpvaW4oIi8iKTticmVhaztjYXNlICJxdWVyeSI6Zj1hLnNlYXJjaC5yZXBsYWNlKCI/IiwiIik7ZSYmKGY9SWooZixlLCExKSk7YnJlYWs7Y2FzZSAiZXh0ZW5zaW9uIjp2YXIgbj1hLnBhdGhuYW1lLnNwbGl0KCIuIik7Zj1uLmxlbmd0aD4xP25bbi5sZW5ndGgtMV06IiI7Zj1mLnNwbGl0KCIvIilbMF07YnJlYWs7Y2FzZSAiZnJhZ21lbnQiOmY9YS5oYXNoLnJlcGxhY2UoIiMiLCIiKTticmVhaztkZWZhdWx0OmY9YSYmYS5ocmVmfXJldHVybiBmfWZ1bmN0aW9uIE1qKGEpe3JldHVybiBhP2EucmVwbGFjZSgiOiIsIiIpLnRvTG93ZXJDYXNlKCk6IiJ9ZnVuY3Rpb24gT2ooYSl7dmFyIGI9IiI7aWYoYSYmYS5ocmVmKXt2YXIgYz1hLmhyZWYuaW5kZXhPZigiIyIpO2I9YzwwP2EuaHJlZjphLmhyZWYuc3Vic3RyaW5nKDAsYyl9cmV0dXJuIGJ9dmFyIFBqPXt9LFFqPTA7CmZ1bmN0aW9uIFJqKGEpe3ZhciBiPVBqW2FdO2lmKCFiKXt2YXIgYz1CLmNyZWF0ZUVsZW1lbnQoImEiKTthJiYoYy5ocmVmPWEpO3ZhciBkPWMucGF0aG5hbWU7ZFswXSE9PSIvIiYmKGF8fHNiKCJUQUdHSU5HIiwxKSxkPSIvIitkKTt2YXIgZT1jLmhvc3RuYW1lLnJlcGxhY2UoR2osIiIpO2I9e2hyZWY6Yy5ocmVmLHByb3RvY29sOmMucHJvdG9jb2wsaG9zdDpjLmhvc3QsaG9zdG5hbWU6ZSxwYXRobmFtZTpkLHNlYXJjaDpjLnNlYXJjaCxoYXNoOmMuaGFzaCxwb3J0OmMucG9ydH07UWo8NSYmKFBqW2FdPWIsUWorKyl9cmV0dXJuIGJ9ZnVuY3Rpb24gU2ooYSxiLGMpe3ZhciBkPVJqKGEpO3JldHVybiBhYyhiLGQsYyl9CmZ1bmN0aW9uIFRqKGEpe3ZhciBiPVJqKEEubG9jYXRpb24uaHJlZiksYz1MaihiLCJob3N0IiwhMSk7aWYoYyYmYy5tYXRjaChIaikpe3ZhciBkPUxqKGIsInBhdGgiKTtpZihkKXt2YXIgZT1kLnNwbGl0KGErIj0iKTtpZihlLmxlbmd0aD4xKXJldHVybiBlWzFdLnNwbGl0KCI7IilbMF0uc3BsaXQoIj8iKVswXX19fTt2YXIgVWo9eyJodHRwczovL3d3dy5nb29nbGUuY29tIjoiL2ciLCJodHRwczovL3d3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSI6Ii9hcyIsImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iOiIvZ3MifSxWaj1bIi9hcy9kL2NjbS9jb252ZXJzaW9uIiwiL2cvZC9jY20vY29udmVyc2lvbiIsIi9ncy9jY20vY29udmVyc2lvbiIsIi9kL2NjbS9mb3JtLWRhdGEiXTtmdW5jdGlvbiBXaigpe3JldHVybiBJZig0Nyk/SmYoNTQpIT09MTohMX1mdW5jdGlvbiBYaigpe3ZhciBhPUUoMTgpLGI9YS5sZW5ndGg7cmV0dXJuIGFbYi0xXT09PSIvIj9hLnN1YnN0cmluZygwLGItMSk6YX0KZnVuY3Rpb24gWWooYSxiKXtpZihhKXt2YXIgYz0iIithO2MuaW5kZXhPZigiaHR0cDovLyIpIT09MCYmYy5pbmRleE9mKCJodHRwczovLyIpIT09MCYmKGM9Imh0dHBzOi8vIitjKTtjW2MubGVuZ3RoLTFdPT09Ii8iJiYoYz1jLnN1YnN0cmluZygwLGMubGVuZ3RoLTEpKTtyZXR1cm4gUmooIiIrYytiKS5ocmVmfX1mdW5jdGlvbiBaaihhKXtpZihhaygpKXJldHVybiBZaihhLCIvYW5hbHl0aWNzLmpzIil9ZnVuY3Rpb24gYmsoYSl7cmV0dXJuIGE9PT0yfHxhPT09M31mdW5jdGlvbiBjayhhKXtyZXR1cm4gTSg1ODgpJiZhPT09M31mdW5jdGlvbiBhaygpe3JldHVybiBXaigpfHxJZig1MCl9ZnVuY3Rpb24gZGsoKXtyZXR1cm4hIUFqLnFqJiZBai5xai5zcGxpdCgiQEAiKS5qb2luKCIiKSE9PSJTR1RNX1RPS0VOIn0KZnVuY3Rpb24gZWsoYSl7Zm9yKHZhciBiPW0oW0YuRC5kZCxGLkQueWNdKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9TyhhLGMudmFsdWUpO2lmKGQpcmV0dXJuIGR9fWZ1bmN0aW9uIGZrKGEsYixjKXtjPWM9PT12b2lkIDA/IiI6YztpZighV2ooKSlyZXR1cm4gYTt2YXIgZD1iP1VqW2FdfHwiIjoiIjtkPT09Ii9ncyImJihjPSIiKTtyZXR1cm4iIitYaigpK2QrY31mdW5jdGlvbiBnayhhKXtpZihXaigpKWZvcih2YXIgYj1tKFZqKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTtpZihTYihhLCIiK1hqKCkrZCkpcmV0dXJuIjo6In19CmZ1bmN0aW9uIGhrKCl7dmFyIGE9QTtpZighYSlyZXR1cm4hMTt0cnl7aWYoYT09PWEudG9wKXJldHVybiExO3ZhciBiPWEubG9jYXRpb24ucGF0aG5hbWU7cmV0dXJuIGIuaW5kZXhPZigiL18vc2VydmljZV93b3JrZXIvIikhPT0tMSYmVGIoYiwiL3N3X2lmcmFtZS5odG1sIil9Y2F0Y2goYyl7cmV0dXJuITF9fTt2YXIgaWs9L2d0YWdbLlwvXWpzLyxqaz0vZ3RtWy5cL11qcy8sbGs9ZnVuY3Rpb24oYSl7dmFyIGI9a2s7aWYoKGEuc2NyaXB0Q29udGFpbmVySWR8fCIiKS5pbmRleE9mKCJHVE0tIik+PTApe3ZhciBjO2E6e3ZhciBkLGU9KGQ9YS5zY3JpcHRFbGVtZW50KT09bnVsbD92b2lkIDA6ZC5zcmM7aWYoZSl7Zm9yKHZhciBmPUlmKDQ3KSxnPVJqKGUpLGg9Zj9nLnBhdGhuYW1lOiIiK2cuaG9zdG5hbWUrZy5wYXRobmFtZSxsPUIuc2NyaXB0cyxuPSIiLHA9MDtwPGwubGVuZ3RoOysrcCl7dmFyIHE9bFtwXTtpZighKHEuaW5uZXJIVE1MLmxlbmd0aD09PTB8fCFmJiZxLmlubmVySFRNTC5pbmRleE9mKGEuc2NyaXB0Q29udGFpbmVySWR8fCJTSE9VTERfTk9UX0JFX1NFVCIpPDB8fHEuaW5uZXJIVE1MLmluZGV4T2YoaCk8MCkpe2lmKHEuaW5uZXJIVE1MLmluZGV4T2YoIihmdW5jdGlvbih3LGQscyxsLGkpIik+PTApe2M9U3RyaW5nKHApO2JyZWFrIGF9bj1TdHJpbmcocCl9fWlmKG4pe2M9Cm47YnJlYWsgYX19Yz12b2lkIDB9dmFyIHI9YztpZihyKXJldHVybiBiLkg9ITAscn12YXIgdD1bXS5zbGljZS5jYWxsKEIuc2NyaXB0cyk7cmV0dXJuIGEuc2NyaXB0RWxlbWVudD9TdHJpbmcodC5pbmRleE9mKGEuc2NyaXB0RWxlbWVudCkpOiItMSJ9LG1rPWZ1bmN0aW9uKGEpe2lmKGtrLkgpcmV0dXJuIjEiO3ZhciBiLGM9KGI9YS5zY3JpcHRFbGVtZW50KT09bnVsbD92b2lkIDA6Yi5zcmM7aWYoYyl7aWYoaWsudGVzdChjKSlyZXR1cm4iMyI7aWYoamsudGVzdChjKSlyZXR1cm4iMiJ9cmV0dXJuIjAifSxraz1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9ITF9O2Z1bmN0aW9uIFAoYSl7c2IoIkdUTSIsYSl9O2Z1bmN0aW9uIG5rKGEpe3ZhciBiPW9rKCkuZGVzdGluYXRpb25BcnJheVthXSxjPW9rKCkuZGVzdGluYXRpb25bYV07cmV0dXJuIGImJmIubGVuZ3RoPjA/YlswXTpjfWZ1bmN0aW9uIHBrKGEsYil7dmFyIGM9b2soKTtjLnBlbmRpbmd8fChjLnBlbmRpbmc9W10pO0NiKGMucGVuZGluZyxmdW5jdGlvbihkKXtyZXR1cm4gZC50YXJnZXQuY3RpZD09PWEuY3RpZCYmZC50YXJnZXQuaXNEZXN0aW5hdGlvbj09PWEuaXNEZXN0aW5hdGlvbn0pfHxjLnBlbmRpbmcucHVzaCh7dGFyZ2V0OmEsb25Mb2FkOmJ9KX1mdW5jdGlvbiBxaygpe3ZhciBhPUEuZ29vZ2xlX3RhZ3NfZmlyc3RfcGFydHk7QXJyYXkuaXNBcnJheShhKXx8KGE9W10pO2Zvcih2YXIgYj17fSxjPW0oYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpYltkLnZhbHVlXT0hMDtyZXR1cm4gT2JqZWN0LmZyZWV6ZShiKX0KdmFyIHJrPWZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXI9e307dGhpcy5kZXN0aW5hdGlvbj17fTt0aGlzLmRlc3RpbmF0aW9uQXJyYXk9e307dGhpcy5jYW5vbmljYWw9e307dGhpcy5wZW5kaW5nPVtdO3RoaXMuaW5qZWN0ZWRGaXJzdFBhcnR5Q29udGFpbmVycz17fTt0aGlzLmluamVjdGVkRmlyc3RQYXJ0eUNvbnRhaW5lcnM9cWsoKX07CmZ1bmN0aW9uIG9rKCl7dmFyIGE9TWMoImdvb2dsZV90YWdfZGF0YSIse30pLGI9YS50aWRyO2ImJnR5cGVvZiBiPT09Im9iamVjdCJ8fChiPW5ldyByayxhLnRpZHI9Yik7dmFyIGM9YjtjLmNvbnRhaW5lcnx8KGMuY29udGFpbmVyPXt9KTtjLmRlc3RpbmF0aW9ufHwoYy5kZXN0aW5hdGlvbj17fSk7Yy5kZXN0aW5hdGlvbkFycmF5fHwoYy5kZXN0aW5hdGlvbkFycmF5PXt9KTtjLmNhbm9uaWNhbHx8KGMuY2Fub25pY2FsPXt9KTtjLnBlbmRpbmd8fChjLnBlbmRpbmc9W10pO2MuaW5qZWN0ZWRGaXJzdFBhcnR5Q29udGFpbmVyc3x8KGMuaW5qZWN0ZWRGaXJzdFBhcnR5Q29udGFpbmVycz1xaygpKTtyZXR1cm4gY307ZnVuY3Rpb24gc2soKXtyZXR1cm4gSWYoNykmJnRrKCkuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gYT09PUUoNSl9KX1mdW5jdGlvbiB1aygpe3ZhciBhO3JldHVybihhPUtmKDU1KSkhPW51bGw/YTpbXX1mdW5jdGlvbiB2aygpe3JldHVybiBFKDYpfHwiXyIrRSg1KX1mdW5jdGlvbiB3aygpe3ZhciBhPUUoMTApO3JldHVybiBhP2Euc3BsaXQoInwiKTpbRSg1KV19ZnVuY3Rpb24gdGsoKXt2YXIgYT1LZig1OSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIHR5cGVvZiBiPT09InN0cmluZyJ9KS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuaW5kZXhPZigiR1RNLSIpIT09MH0pOltdfWZ1bmN0aW9uIHhrKCl7dmFyIGE9eWsoemsoKSksYj1hJiZhLnBhcmVudDtpZihiKXJldHVybiB5ayhiKX0KZnVuY3Rpb24gQWsoKXt2YXIgYT15ayh6aygpKTtpZihhKXtmb3IoO2EucGFyZW50Oyl7dmFyIGI9eWsoYS5wYXJlbnQpO2lmKCFiKWJyZWFrO2E9Yn1yZXR1cm4gYX19ZnVuY3Rpb24geWsoYSl7dmFyIGI9b2soKTtyZXR1cm4gYS5pc0Rlc3RpbmF0aW9uP25rKGEuY3RpZCk6Yi5jb250YWluZXJbYS5jdGlkXX1mdW5jdGlvbiBCaygpe3ZhciBhPW9rKCk7aWYoYS5wZW5kaW5nKXtmb3IodmFyIGIsYz1bXSxkPSExLGU9d2soKSxmPXRrKCksZz17fSxoPTA7aDxhLnBlbmRpbmcubGVuZ3RoO2c9e1JnOnZvaWQgMH0saCsrKWcuUmc9YS5wZW5kaW5nW2hdLENiKGcuUmcudGFyZ2V0LmlzRGVzdGluYXRpb24/ZjplLGZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbj09PWwuUmcudGFyZ2V0LmN0aWR9fShnKSk/ZHx8KGI9Zy5SZy5vbkxvYWQsZD0hMCk6Yy5wdXNoKGcuUmcpO2EucGVuZGluZz1jO2lmKGIpdHJ5e2IodmsoKSl9Y2F0Y2gobCl7fX19CmZ1bmN0aW9uIENrKCl7Zm9yKHZhciBhPUUoNSksYj13aygpLGM9dGsoKSxkPXVrKCksZT1mdW5jdGlvbihxLHIpe3ZhciB0PXtjYW5vbmljYWxDb250YWluZXJJZDpFKDYpLHNjcmlwdENvbnRhaW5lcklkOmEsc3RhdGU6Mixjb250YWluZXJzOmIuc2xpY2UoKSxkZXN0aW5hdGlvbnM6Yy5zbGljZSgpfTtKYyYmKHQuc2NyaXB0RWxlbWVudD1KYyk7S2MmJih0LnNjcmlwdFNvdXJjZT1LYyk7eGsoKT09PXZvaWQgMCYmKHQuaHRtbExvYWRPcmRlcj1sayh0KSx0LmxvYWRTY3JpcHRUeXBlPW1rKHQpKTt2YXIgdSx2O3N3aXRjaChyKXtjYXNlIDA6dT1mdW5jdGlvbih6KXtmLmNvbnRhaW5lcltxXT16fTt2PWYuY29udGFpbmVyW3FdO2JyZWFrO2Nhc2UgMTp1PWZ1bmN0aW9uKHope2YuZGVzdGluYXRpb25BcnJheVtxXT1mLmRlc3RpbmF0aW9uQXJyYXlbcV18fFtdO2YuZGVzdGluYXRpb25BcnJheVtxXS51bnNoaWZ0KHopfTt2YXIgeCx5PSgoeD1mLmRlc3RpbmF0aW9uQXJyYXlbcV0pPT0KbnVsbD92b2lkIDA6eFswXSl8fGYuZGVzdGluYXRpb25bcV07IXl8fHkuc3RhdGUhPT0wJiZ5LnN0YXRlIT09MXx8KHY9eSk7YnJlYWs7Y2FzZSAyOnU9ZnVuY3Rpb24oeil7Zi5kZXN0aW5hdGlvbkFycmF5W3FdPWYuZGVzdGluYXRpb25BcnJheVtxXXx8W107Zi5kZXN0aW5hdGlvbkFycmF5W3FdLnB1c2goeil9LHY9dm9pZCAwfXUmJih2Pyh2LnN0YXRlPT09MCYmUCg5MyksbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx2LHQpKTp1KHQpKX0sZj1vaygpLGc9bShiKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSllKGgudmFsdWUsMCk7Zm9yKHZhciBsPW0oYyksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7ZC5pbmNsdWRlcyhwKT9lKHAsMSk6ZShwLDIpfWYuY2Fub25pY2FsW3ZrKCldPXt9O0JrKCl9ZnVuY3Rpb24gRGsoKXt2YXIgYT12aygpO3JldHVybiEhb2soKS5jYW5vbmljYWxbYV19CmZ1bmN0aW9uIEVrKGEpe3JldHVybiEhb2soKS5jb250YWluZXJbYV19ZnVuY3Rpb24gRmsoKXt2YXIgYT16aygpLGI9eWsoYSk7cmV0dXJuIGImJmIuY29udGV4dH1mdW5jdGlvbiBHayhhKXt2YXIgYj1uayhhKTtyZXR1cm4gYj9iLnN0YXRlIT09MDohMX1mdW5jdGlvbiB6aygpe3JldHVybntjdGlkOkUoNSksaXNEZXN0aW5hdGlvbjpJZig3KX19ZnVuY3Rpb24gSGsoYSxiLGMpe3ZhciBkPXprKCksZT1vaygpLmNvbnRhaW5lclthXTtlJiZlLnN0YXRlIT09M3x8KG9rKCkuY29udGFpbmVyW2FdPXtzdGF0ZToxLGNvbnRleHQ6YixwYXJlbnQ6ZH0scGsoe2N0aWQ6YSxpc0Rlc3RpbmF0aW9uOiExfSxjKSl9ZnVuY3Rpb24gSWsoYSxiLGMpe3ZhciBkPW9rKCksZT1uayhhKTtlP2Uuc3RhdGU9MTooZT17Y29udGV4dDpiLHN0YXRlOjEscGFyZW50OnprKCl9LGQuZGVzdGluYXRpb25BcnJheVthXT1bZV0pO3BrKHtjdGlkOmEsaXNEZXN0aW5hdGlvbjohMH0sYyl9CmZ1bmN0aW9uIEprKGEsYixjLGQpe3ZhciBlPW9rKCksZj1uayhhKTtmP2Yuc3RhdGU9MDooZj17c3RhdGU6MCx0cmFuc3BvcnRVcmw6Yixjb250ZXh0OmMscGFyZW50OnprKCl9LGUuZGVzdGluYXRpb25BcnJheVthXT1bZl0pO3BrKHtjdGlkOmEsaXNEZXN0aW5hdGlvbjohMH0sZCk7UCg5MSl9ZnVuY3Rpb24gS2soKXt2YXIgYT1vaygpLmNvbnRhaW5lcixiO2ZvcihiIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShiKSYmYVtiXS5zdGF0ZT09PTEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gTGsoKXt2YXIgYT17fTtHYihvaygpLmRlc3RpbmF0aW9uLGZ1bmN0aW9uKGIsYyl7KGM9PW51bGw/dm9pZCAwOmMuc3RhdGUpPT09MCYmKGFbYl09Yyl9KTtHYihvaygpLmRlc3RpbmF0aW9uQXJyYXksZnVuY3Rpb24oYixjKXt2YXIgZD1jWzBdOyhkPT1udWxsP3ZvaWQgMDpkLnN0YXRlKT09PTAmJihhW2JdPWQpfSk7cmV0dXJuIGF9CmZ1bmN0aW9uIE1rKGEpe3JldHVybiEhKGEmJmEucGFyZW50JiZhLmNvbnRleHQmJmEuY29udGV4dC5zb3VyY2U9PT0xJiZhLnBhcmVudC5jdGlkLmluZGV4T2YoIkdUTS0iKSE9PTApfWZ1bmN0aW9uIE5rKCl7Zm9yKHZhciBhPW9rKCksYj1tKHdrKCkpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWlmKGEuaW5qZWN0ZWRGaXJzdFBhcnR5Q29udGFpbmVyc1tjLnZhbHVlXSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIE9rPWZ1bmN0aW9uKCl7fTtPay5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIn07dmFyIFBrPW5ldyBPazt2YXIgWGs9ZnVuY3Rpb24oKXt0aGlzLnN0b3JhZ2U9WWEoKX07WGsucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuc3RvcmFnZS5zZXQoU3RyaW5nKGEpLGIpfTtYay5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KFN0cmluZyhhKSl9O3ZhciBZaztmdW5jdGlvbiBaayhhLGIpe1lrfHwoWWs9bmV3IFhrKTtZay5zZXQoYSxiKX1mdW5jdGlvbiAkayhhKXtZa3x8KFlrPW5ldyBYayk7cmV0dXJuIFlrLmdldChhKX1mdW5jdGlvbiBhbChhLGIpe1lrfHwoWWs9bmV3IFhrKTt2YXIgYz1ZaztjLnN0b3JhZ2UuaGFzKFN0cmluZyhhKSl8fGMuc3RvcmFnZS5zZXQoU3RyaW5nKGEpLGIoKSk7cmV0dXJuIGMuc3RvcmFnZS5nZXQoU3RyaW5nKGEpKX07ZnVuY3Rpb24gYmwoYSxiKXtmdW5jdGlvbiBjKGcpe3ZhciBoPVJqKGcpLGw9TGooaCwicHJvdG9jb2wiKSxuPUxqKGgsImhvc3QiLCEwKSxwPUxqKGgsInBvcnQiKSxxPUxqKGgsInBhdGgiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1wvJC8sIiIpO2lmKGw9PT12b2lkIDB8fGw9PT0iaHR0cCImJnA9PT0iODAifHxsPT09Imh0dHBzIiYmcD09PSI0NDMiKWw9IndlYiIscD0iZGVmYXVsdCI7cmV0dXJuW2wsbixwLHFdfWZvcih2YXIgZD1jKFN0cmluZyhhKSksZT1jKFN0cmluZyhiKSksZj0wO2Y8ZC5sZW5ndGg7ZisrKWlmKGRbZl0hPT1lW2ZdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGNsKGEpe3JldHVybiBkbChhKT8xOjB9CmZ1bmN0aW9uIGRsKGEpe3ZhciBiPWEuYXJnMCxjPWEuYXJnMTtpZihhLmFueV9vZiYmQXJyYXkuaXNBcnJheShjKSl7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPUVkKGEse30pO0VkKHthcmcxOmNbZF0sYW55X29mOnZvaWQgMH0sZSk7aWYoY2woZSkpcmV0dXJuITB9cmV0dXJuITF9c3dpdGNoKGFbImZ1bmN0aW9uIl0pe2Nhc2UgIl9jbiI6cmV0dXJuIEtnKGIsYyk7Y2FzZSAiX2NzcyI6cmV0dXJuIEdnKGIsYyk7Y2FzZSAiX2V3IjpyZXR1cm4gSGcoYixjKTtjYXNlICJfZXEiOnJldHVybiBMZyhiLGMpO2Nhc2UgIl9nZSI6cmV0dXJuIE1nKGIsYyk7Y2FzZSAiX2d0IjpyZXR1cm4gT2coYixjKTtjYXNlICJfbGMiOnJldHVybiBJZyhiLGMpO2Nhc2UgIl9sZSI6cmV0dXJuIE5nKGIsYyk7Y2FzZSAiX2x0IjpyZXR1cm4gUGcoYixjKTtjYXNlICJfcmUiOnJldHVybiBKZyhiLGMsYS5pZ25vcmVfY2FzZSxhbCgzLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXB9KSk7Y2FzZSAiX3N3IjpyZXR1cm4gUWcoYiwKYyk7Y2FzZSAiX3VtIjpyZXR1cm4gYmwoYixjKX1yZXR1cm4hMX07ZnVuY3Rpb24gZWwoYSxiLGMsZCxlKXtpZihBcnJheS5pc0FycmF5KGEpKXt2YXIgZjtzd2l0Y2goYVswXSl7Y2FzZSAiZnVuY3Rpb25faWQiOnJldHVybiBhWzFdO2Nhc2UgImxpc3QiOmY9W107Zm9yKHZhciBnPTE7ZzxhLmxlbmd0aDtnKyspZi5wdXNoKGVsKGFbZ10sYixjLGQsZSkpO3JldHVybiBmO2Nhc2UgIm1hY3JvIjp2YXIgaD1kW2FbMV1dO3JldHVybiBoP2guZXZhbHVhdGUoYixlKTp2b2lkIDA7Y2FzZSAibWFwIjpmPXt9O2Zvcih2YXIgbD0xO2w8YS5sZW5ndGg7bCs9MilmW2VsKGFbbF0sYixjLGQsZSldPWVsKGFbbCsxXSxiLGMsZCxlKTtyZXR1cm4gZjtjYXNlICJ0ZW1wbGF0ZSI6Zj1bXTtmb3IodmFyIG49ITEscD0xO3A8YS5sZW5ndGg7cCsrKXt2YXIgcT1lbChhW3BdLGIsYyxkLGUpO2YucHVzaChxKX1yZXR1cm4gZi5qb2luKCIiKTtjYXNlICJlc2NhcGUiOmY9ZWwoYVsxXSxiLGMsZCxlKTtmPVN0cmluZyhmKTtmb3IodmFyIHk9Mjt5PGEubGVuZ3RoO3krKylVaVthW3ldXSYmKGY9VWlbYVt5XV0oZikpO3JldHVybiBmO2Nhc2UgInRhZyI6dmFyIHo9YVsxXTtpZighY1t6XSl0aHJvdyBFcnJvcigiVW5hYmxlIHRvIHJlc29sdmUgdGFnIHJlZmVyZW5jZSAiKwp6KyIuIik7cmV0dXJue2JvOmFbMl0saW5kZXg6en07Y2FzZSAiemIiOnZhciBDPXt9LEQ9KENbR2YuWWJdPWFbMV0sQy5hcmcwPWVsKGFbMl0sYixjLGQsZSksQy5hcmcxPWVsKGFbM10sYixjLGQsZSksQy5pZ25vcmVfY2FzZT1lbChhWzVdLGIsYyxkLGUpLEMpLEk9Y2woRCksRz0hIWFbNF07cmV0dXJuIEd8fEkhPT0yP0chPT0oST09PTEpOm51bGw7ZGVmYXVsdDp0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBleHBhbmQgdW5rbm93biBWYWx1ZSB0eXBlOiAiK2FbMF0rIi4iKTt9fXJldHVybiBhfTtmdW5jdGlvbiBmbChhKXtyZXR1cm4gYSYmYS5pbmRleE9mKCJwZW5kaW5nOiIpPT09MD9nbChhLnN1YnN0cig4KSk6ITF9ZnVuY3Rpb24gZ2woYSl7aWYoYT09bnVsbHx8YS5sZW5ndGg9PT0wKXJldHVybiExO3ZhciBiPU51bWJlcihhKSxjPU5iKCk7cmV0dXJuIGI8YyszRTUmJmI+Yy05RTV9O3ZhciBobD0hMSxpbD0hMSxqbD0hMSxrbD0wLGxsPSExLG1sPXZvaWQgMCxubD1bXTtmdW5jdGlvbiBvbChhKXtpZihrbD09PTApbGwmJm5sJiYobmwubGVuZ3RoPj0xMDAmJm5sLnNoaWZ0KCksbmwucHVzaChhKSk7ZWxzZSBpZihwbCgpKXt2YXIgYj1FKDQxKSxjPU1jKGIsW10pO2MubGVuZ3RoPj01MCYmYy5zaGlmdCgpO2MucHVzaChhKX19ZnVuY3Rpb24gcWwoKXtpbHx8KHJsKCksc2woa2wpKX1mdW5jdGlvbiBzbChhKXtpZighaWx8fGtsPT09MiYmYT09PTEpaWYoaWw9ITAsamwmJihhZChCLCJUQVByb2REZWJ1Z1NpZ25hbCIscWwpLGpsPSExKSxtbCE9PXZvaWQgMCYmKEEuY2xlYXJUaW1lb3V0KG1sKSxtbD12b2lkIDApLGtsPWEsYT09PTEpe3ZhciBiPW5sO25sPXZvaWQgMDtiPT1udWxsfHxiLmZvckVhY2goZnVuY3Rpb24oYyl7b2woYyl9KX19CmZ1bmN0aW9uIHJsKCl7dmFyIGE9Qi5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXRhZy1hc3Npc3RhbnQtcHJvZC1wcmVzZW50Iik7Z2woYSk/a2w9MTohZmwoYSl8fGhsfHxqbD9rbD0yOihqbD0hMCwkYyhCLCJUQVByb2REZWJ1Z1NpZ25hbCIscWwsITEpLG1sPUEuc2V0VGltZW91dChmdW5jdGlvbigpe2lsfHwocmwoKSxzbChrbCkpO2hsPSEwfSwyMDApKX1mdW5jdGlvbiBwbCgpe2lmKCFsbClyZXR1cm4hMTtzd2l0Y2goa2wpe2Nhc2UgMTpjYXNlIDA6cmV0dXJuITA7Y2FzZSAyOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiB0bCgpe3ZhciBhPU1jKCJnb29nbGVfdGFnX2RhdGEiLHt9KTtyZXR1cm4gYS5pY3M9YS5pY3N8fG5ldyB1bH12YXIgdWw9ZnVuY3Rpb24oKXt0aGlzLmVudHJpZXM9e307dGhpcy53YWl0UGVyaW9kVGltZWRPdXQ9dGhpcy53YXNTZXRMYXRlPXRoaXMuYWNjZXNzZWRBbnk9dGhpcy5hY2Nlc3NlZERlZmF1bHQ9dGhpcy51c2VkSW1wbGljaXQ9dGhpcy51c2VkVXBkYXRlPXRoaXMudXNlZERlZmF1bHQ9dGhpcy51c2VkRGVjbGFyZT10aGlzLmFjdGl2ZT0hMTt0aGlzLkg9W119Owp1bC5wcm90b3R5cGUuZGVmYXVsdD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt0aGlzLnVzZWREZWZhdWx0fHx0aGlzLnVzZWREZWNsYXJlfHwhdGhpcy5hY2Nlc3NlZERlZmF1bHQmJiF0aGlzLmFjY2Vzc2VkQW55fHwodGhpcy53YXNTZXRMYXRlPSEwKTt0aGlzLnVzZWREZWZhdWx0PXRoaXMuYWN0aXZlPSEwO3NiKCJUQUdHSU5HIiwxOSk7Yj09bnVsbD9zYigiVEFHR0lORyIsMTgpOnZsKHRoaXMsYSxiPT09ImdyYW50ZWQiLGMsZCxlLGYsZyl9O3VsLnByb3RvdHlwZS53YWl0Rm9yVXBkYXRlPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl2bCh0aGlzLGFbZF0sdm9pZCAwLHZvaWQgMCwiIiwiIixiLGMpfTsKdmFyIHZsPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGw9YS5lbnRyaWVzLG49bFtiXXx8e30scD1uLnJlZ2lvbixxPWQmJnpiKGQpP2QudG9VcHBlckNhc2UoKTp2b2lkIDA7ZT1lLnRvVXBwZXJDYXNlKCk7Zj1mLnRvVXBwZXJDYXNlKCk7aWYoZT09PSIifHxxPT09Znx8KHE9PT1lP3AhPT1mOiFxJiYhcCkpe3ZhciByPSEhKGcmJmc+MCYmbi51cGRhdGU9PT12b2lkIDApLHQ9e3JlZ2lvbjpxLGRlY2xhcmVfcmVnaW9uOm4uZGVjbGFyZV9yZWdpb24saW1wbGljaXQ6bi5pbXBsaWNpdCxkZWZhdWx0OmMhPT12b2lkIDA/YzpuLmRlZmF1bHQsZGVjbGFyZTpuLmRlY2xhcmUsdXBkYXRlOm4udXBkYXRlLHF1aWV0OnJ9O2lmKGUhPT0iInx8bi5kZWZhdWx0IT09ITEpbFtiXT10O3ImJkEuc2V0VGltZW91dChmdW5jdGlvbigpe2xbYl09PT10JiZ0LnF1aWV0JiYoc2IoIlRBR0dJTkciLDIpLGEud2FpdFBlcmlvZFRpbWVkT3V0PSEwLGEuY2xlYXJUaW1lb3V0KGIsdm9pZCAwLGgpLAphLm5vdGlmeUxpc3RlbmVycygpKX0sZyl9fTtrPXVsLnByb3RvdHlwZTtrLmNsZWFyVGltZW91dD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W2FdLGU9Yy5kZWxlZ2F0ZWRDb25zZW50VHlwZXMsZjtmb3IoZiBpbiBlKWUuaGFzT3duUHJvcGVydHkoZikmJmVbZl09PT1hJiZkLnB1c2goZik7dmFyIGc9dGhpcy5lbnRyaWVzW2FdfHx7fSxoPXRoaXMuZ2V0Q29uc2VudFN0YXRlKGEsYyk7aWYoZy5xdWlldCl7Zy5xdWlldD0hMTtmb3IodmFyIGw9bShkKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl3bCh0aGlzLG4udmFsdWUpfWVsc2UgaWYoYiE9PXZvaWQgMCYmaCE9PWIpZm9yKHZhciBwPW0oZCkscT1wLm5leHQoKTshcS5kb25lO3E9cC5uZXh0KCkpd2wodGhpcyxxLnZhbHVlKX07CmsudXBkYXRlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLnVzZWREZWZhdWx0fHx0aGlzLnVzZWREZWNsYXJlfHx0aGlzLnVzZWRVcGRhdGV8fCF0aGlzLmFjY2Vzc2VkQW55fHwodGhpcy53YXNTZXRMYXRlPSEwKTt0aGlzLnVzZWRVcGRhdGU9dGhpcy5hY3RpdmU9ITA7aWYoYiE9bnVsbCl7dmFyIGQ9dGhpcy5nZXRDb25zZW50U3RhdGUoYSxjKSxlPXRoaXMuZW50cmllczsoZVthXT1lW2FdfHx7fSkudXBkYXRlPWI9PT0iZ3JhbnRlZCI7dGhpcy5jbGVhclRpbWVvdXQoYSxkLGMpfX07CmsuZGVjbGFyZT1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMudXNlZERlY2xhcmU9dGhpcy5hY3RpdmU9ITA7dmFyIGY9dGhpcy5lbnRyaWVzLGc9ZlthXXx8e30saD1nLmRlY2xhcmVfcmVnaW9uLGw9YyYmemIoYyk/Yy50b1VwcGVyQ2FzZSgpOnZvaWQgMDtkPWQudG9VcHBlckNhc2UoKTtlPWUudG9VcHBlckNhc2UoKTtpZihkPT09IiJ8fGw9PT1lfHwobD09PWQ/aCE9PWU6IWwmJiFoKSl7dmFyIG49e3JlZ2lvbjpnLnJlZ2lvbixkZWNsYXJlX3JlZ2lvbjpsLGRlY2xhcmU6Yj09PSJncmFudGVkIixpbXBsaWNpdDpnLmltcGxpY2l0LGRlZmF1bHQ6Zy5kZWZhdWx0LHVwZGF0ZTpnLnVwZGF0ZSxxdWlldDpnLnF1aWV0fTtpZihkIT09IiJ8fGcuZGVjbGFyZSE9PSExKWZbYV09bn19OwprLmltcGxpY2l0PWZ1bmN0aW9uKGEsYil7dGhpcy51c2VkSW1wbGljaXQ9ITA7dmFyIGM9dGhpcy5lbnRyaWVzLGQ9Y1thXT1jW2FdfHx7fTtkLmltcGxpY2l0IT09ITEmJihkLmltcGxpY2l0PWI9PT0iZ3JhbnRlZCIpfTsKay5nZXRDb25zZW50U3RhdGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmVudHJpZXMsZD1jW2FdfHx7fSxlPWQudXBkYXRlO2lmKGUhPT12b2lkIDApcmV0dXJuIGU/MToyO2lmKGIudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzKXt2YXIgZj1iLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzW2FdO2lmKGY9PT0zKXJldHVybiAxO2lmKGY9PT0yKXJldHVybiAyfWVsc2UgaWYoZT1kLmRlZmF1bHQsZSE9PXZvaWQgMClyZXR1cm4gZT8xOjI7aWYoYj09bnVsbD8wOmIuZGVsZWdhdGVkQ29uc2VudFR5cGVzLmhhc093blByb3BlcnR5KGEpKXt2YXIgZz1iLmRlbGVnYXRlZENvbnNlbnRUeXBlc1thXSxoPWNbZ118fHt9O2U9aC51cGRhdGU7aWYoZSE9PXZvaWQgMClyZXR1cm4gZT8xOjI7aWYoYi51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHMpe3ZhciBsPWIuY29udGFpbmVyU2NvcGVkRGVmYXVsdHNbZ107aWYobD09PTMpcmV0dXJuIDE7aWYobD09PTIpcmV0dXJuIDJ9ZWxzZSBpZihlPQpoLmRlZmF1bHQsZSE9PXZvaWQgMClyZXR1cm4gZT8xOjJ9ZT1kLmRlY2xhcmU7aWYoZSE9PXZvaWQgMClyZXR1cm4gZT8xOjI7ZT1kLmltcGxpY2l0O3JldHVybiBlIT09dm9pZCAwP2U/Mzo0OjB9O2suYWRkTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLkgucHVzaCh7Y29uc2VudFR5cGVzOmEsaWU6Yn0pfTt2YXIgd2w9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGEuSC5sZW5ndGg7KytjKXt2YXIgZD1hLkhbY107QXJyYXkuaXNBcnJheShkLmNvbnNlbnRUeXBlcykmJmQuY29uc2VudFR5cGVzLmluZGV4T2YoYikhPT0tMSYmKGQueG89ITApfX07dWwucHJvdG90eXBlLm5vdGlmeUxpc3RlbmVycz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8dGhpcy5ILmxlbmd0aDsrK2Mpe3ZhciBkPXRoaXMuSFtjXTtpZihkLnhvKXtkLnhvPSExO3RyeXtkLmllKHtjb25zZW50RXZlbnRJZDphLGNvbnNlbnRQcmlvcml0eUlkOmJ9KX1jYXRjaChlKXt9fX19O3ZhciB4bD0hMSx5bD0hMSx6bD17fSxBbD17ZGVsZWdhdGVkQ29uc2VudFR5cGVzOnt9LGNvcmVQbGF0Zm9ybVNlcnZpY2VzOnt9LHVzZWRDb3JlUGxhdGZvcm1TZXJ2aWNlczohMSxzZWxlY3RlZEFsbENvcmVQbGF0Zm9ybVNlcnZpY2VzOiExLGNvbnRhaW5lclNjb3BlZERlZmF1bHRzOih6bC5hZF9zdG9yYWdlPTEsemwuYW5hbHl0aWNzX3N0b3JhZ2U9MSx6bC5hZF91c2VyX2RhdGE9MSx6bC5hZF9wZXJzb25hbGl6YXRpb249MSx6bCksdXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzOiExfTtmdW5jdGlvbiBCbChhKXt2YXIgYj10bCgpO2IuYWNjZXNzZWRBbnk9ITA7cmV0dXJuKHpiKGEpP1thXTphKS5ldmVyeShmdW5jdGlvbihjKXtzd2l0Y2goYi5nZXRDb25zZW50U3RhdGUoYyxBbCkpe2Nhc2UgMTpjYXNlIDM6cmV0dXJuITA7Y2FzZSAyOmNhc2UgNDpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0pfQpmdW5jdGlvbiBDbChhKXt2YXIgYj10bCgpO2IuYWNjZXNzZWRBbnk9ITA7cmV0dXJuIGIuZ2V0Q29uc2VudFN0YXRlKGEsQWwpfWZ1bmN0aW9uIERsKGEpe3ZhciBiPXRsKCk7Yi5hY2Nlc3NlZEFueT0hMDtyZXR1cm4hKGIuZW50cmllc1thXXx8e30pLnF1aWV0fWZ1bmN0aW9uIEVsKCl7aWYoIVlmKDUpKXJldHVybiExO3ZhciBhPXRsKCk7YS5hY2Nlc3NlZEFueT0hMDtpZihhLmFjdGl2ZSlyZXR1cm4hMDtpZighQWwudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzKXJldHVybiExO2Zvcih2YXIgYj1tKE9iamVjdC5rZXlzKEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzKSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpaWYoQWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHNbYy52YWx1ZV0hPT0xKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEZsKGEsYil7dGwoKS5hZGRMaXN0ZW5lcihhLGIpfQpmdW5jdGlvbiBHbChhLGIpe3RsKCkubm90aWZ5TGlzdGVuZXJzKGEsYil9ZnVuY3Rpb24gSGwoYSxiKXtpZihiLmV2ZXJ5KERsKSlhKHt9KTtlbHNle3ZhciBjPSExO0ZsKGIsZnVuY3Rpb24oZCl7IWMmJmIuZXZlcnkoRGwpJiYoYz0hMCxhKGQpKX0pfX0KZnVuY3Rpb24gSWwoYSxiKXt2YXIgYz16YihiKT9bYl06YixkPXt9LGU9ZnVuY3Rpb24oKXtyZXR1cm4gYy5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIEJsKGgpJiYhZFtoXX0pfSxmPWUoKTtpZihmLmxlbmd0aCE9PWMubGVuZ3RoKXt2YXIgZz1mdW5jdGlvbihoKXtmb3IodmFyIGw9bShoKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSlkW24udmFsdWVdPSEwfTtnKGYpO0ZsKGMsZnVuY3Rpb24oaCl7ZnVuY3Rpb24gbChxKXtxLmxlbmd0aCE9PTAmJihnKHEpLGguY29uc2VudFR5cGVzPXEsYShoKSl9dmFyIG49ZSgpO2lmKG4ubGVuZ3RoIT09MCl7dmFyIHA9T2JqZWN0LmtleXMoZCkubGVuZ3RoO24ubGVuZ3RoK3A+PWMubGVuZ3RoP2wobik6QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bChlKCkpfSw1MDApfX0pfX07dmFyIEpsPSExO2Z1bmN0aW9uIEtsKGEsYil7dmFyIGM9d2soKSxkPXRrKCk7RSgyNik7dmFyIGU9SWYoNDcpPzA6SWYoNTApPzE6MyxmPVhqKCk7aWYocGwoKSl7dmFyIGc9TGwoIklOSVQiKTtnLmNvbnRhaW5lckxvYWRTb3VyY2U9YSE9bnVsbD9hOjA7YiYmKGcucGFyZW50VGFyZ2V0UmVmZXJlbmNlPWIpO2cuYWxpYXNlcz1jO2cuZGVzdGluYXRpb25zPWQ7ZSE9PXZvaWQgMCYmKGcuZ3RnPXtzb3VyY2U6ZSxtUGF0aDpmIT1udWxsP2Y6IiJ9KTtvbChnKX19CmZ1bmN0aW9uIE1sKGEpe3ZhciBiLGMsZCxlO2I9YS50YXJnZXRJZDtjPWEucmVxdWVzdDtkPWEucWI7ZT1hLmlzQmF0Y2hlZDt2YXIgZjtpZihmPXBsKCkpe3ZhciBnO2E6c3dpdGNoKGMuZW5kcG9pbnQpe2Nhc2UgNjg6Y2FzZSA2OTpjYXNlIDE5OmNhc2UgNjI6Y2FzZSA0NzpnPSEwO2JyZWFrIGE7ZGVmYXVsdDpnPSExfWY9IWd9aWYoZil7dmFyIGg9TGwoIkdUQUdfSElUIix7ZXZlbnRJZDpkLmV2ZW50SWQscHJpb3JpdHlJZDpkLnByaW9yaXR5SWR9KTtoLnRhcmdldD1iO2gudXJsPWMudXJsO2MucG9zdEJvZHkmJihoLnBvc3RCb2R5PWMucG9zdEJvZHkpO2gucGFyYW1ldGVyRW5jb2Rpbmc9Yy5wYXJhbWV0ZXJFbmNvZGluZztoLmVuZHBvaW50PWMuZW5kcG9pbnQ7ZSE9PXZvaWQgMCYmKGguaXNCYXRjaGVkPWUpO29sKGgpfX1mdW5jdGlvbiBObChhKXtwbCgpJiZNbChhKCkpfQpmdW5jdGlvbiBMbChhLGIpe2I9Yj09PXZvaWQgMD97fTpiO2IuZ3JvdXBJZD1PbDt2YXIgYyxkPWIsZT1QbCxmPXtwdWJsaWNJZDpRbH07ZC5ldmVudElkIT1udWxsJiYoZi5ldmVudElkPWQuZXZlbnRJZCk7ZC5wcmlvcml0eUlkIT1udWxsJiYoZi5wcmlvcml0eUlkPWQucHJpb3JpdHlJZCk7ZC5ldmVudE5hbWUmJihmLmV2ZW50TmFtZT1kLmV2ZW50TmFtZSk7ZC5ncm91cElkJiYoZi5ncm91cElkPWQuZ3JvdXBJZCk7ZC50YWdOYW1lJiYoZi50YWdOYW1lPWQudGFnTmFtZSk7Yz17Y29udGFpbmVyUHJvZHVjdDoiR1RNIixrZXk6Zix2ZXJzaW9uOmUsbWVzc2FnZVR5cGU6YX07Yy5jb250YWluZXJQcm9kdWN0PUpsPyJPR1QiOiJHVE0iO2Mua2V5LnRhcmdldFJlZj1SbDtyZXR1cm4gY312YXIgUWw9IiIsUGw9IiIsUmw9e2N0aWQ6IiIsaXNEZXN0aW5hdGlvbjohMX0sT2w7CmZ1bmN0aW9uIFNsKGEpe3ZhciBiPUUoNSksYz1JZig0NSksZD1zaygpLGU9RSg2KSxmPUUoMSk7RSgyMyk7a2w9MDtsbD0hMDtybCgpO09sPWE7UWw9YjtQbD1mO0psPWM7Umw9e2N0aWQ6Yixpc0Rlc3RpbmF0aW9uOmQsY2Fub25pY2FsSWQ6ZX19O2Z1bmN0aW9uIFRsKGEsYixjLGQpe2lmKHBsKCkpe3ZhciBlPWIuTTtNbCh7dGFyZ2V0SWQ6ZHx8W2IudGFyZ2V0LmRlc3RpbmF0aW9uSWRdLHJlcXVlc3Q6e3VybDphLHBhcmFtZXRlckVuY29kaW5nOjIsZW5kcG9pbnQ6Y30scWI6e2V2ZW50SWQ6ZS5ldmVudElkLHByaW9yaXR5SWQ6ZS5wcmlvcml0eUlkfSxGajp7ZXZlbnRJZDpRKGIsSC5KLnVmKSxwcmlvcml0eUlkOlEoYixILkoudmYpfX0pfX07ZnVuY3Rpb24gVWwoYSxiLGMpe3ZhciBkPSJodHRwczovLyIrYStiO3JldHVybiBjP2Z1bmN0aW9uKCl7cmV0dXJuIFdqKCk/WGooKStjK2I6ZH06ZnVuY3Rpb24oKXtyZXR1cm4gZH19O3ZhciBWbD17fSxXbD0oVmxbMjJdPVVsKCJ3d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20iLCIvY2NtL2NvbnZlcnNpb24iLCIvYXMvZCIpLFZsWzYwXT1VbCgicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvY2NtL2NvbnZlcnNpb24iLCIvZ3MiKSxWbFsyM109VWwoInd3dy5nb29nbGUuY29tIiwiL2NjbS9jb252ZXJzaW9uIiwiL2cvZCIpLFZsKTt2YXIgWGw9e30sWWw9KFhsWzVdPVVsKCJ3d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20iLCIvcGFnZWFkL2NvbnZlcnNpb24iKSxYbFs2XT1VbCgicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvcGFnZWFkL2NvbnZlcnNpb24iLCIvZ3MiKSxYbFs4XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcGFnZWFkLzFwLWNvbnZlcnNpb24iKSxYbFs2Nl09VWwoInd3dy5nb29nbGUuY29tIiwiL3BhZ2VhZC91Y29udmVyc2lvbiIpLFhsWzYzXT1VbCgid3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIiwiL3BhZ2VhZC9jb252ZXJzaW9uIiksWGxbNjRdPVVsKCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9wYWdlYWQvY29udmVyc2lvbiIsIi9ncyIpLFhsWzY1XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcGFnZWFkLzFwLWNvbnZlcnNpb24iKSxYbFs3NF09ZnVuY3Rpb24oKXtyZXR1cm4gWGooKSsiL2FzL3AvYyJ9LFhsKTt2YXIgWmw9e30sJGw9KFpsWzQ1XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvY2NtL2NvbGxlY3QiKSxabFs0Nl09VWwoInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIiwiL2NjbS9jb2xsZWN0IiwiL2dzIiksWmxbNjldPVVsKCJhZC5kb3VibGVjbGljay5uZXQiLCIvY2NtL3MvY29sbGVjdCIpLFpsWzU4XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcGFnZWFkL3NldF9wYXJ0aXRpb25lZF9jb29raWUiKSxabFs1N109VWwoInd3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSIsIi9wYWdlYWQvc2V0X3BhcnRpdGlvbmVkX2Nvb2tpZSIpLFpsKTt2YXIgYW09e30sYm09KGFtWzldPVVsKCJnb29nbGVhZHMuZy5kb3VibGVjbGljay5uZXQiLCIvcGFnZWFkL3ZpZXd0aHJvdWdoY29udmVyc2lvbiIpLGFtWzY4XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcm1rdC9jb2xsZWN0IiksYW0pO3ZhciBjbT17fSxkbT0oY21bMTFdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvZm9ybS1kYXRhIiwiL2QiKSxjbVsyMV09VWwoInd3dy5nb29nbGUuY29tIiwiL2NjbS9mb3JtLWRhdGEiLCIvZCIpLGNtWzcyXT1VbCgiZ29vZ2xlLmNvbSIsIi9wYWdlYWQvZm9ybS1kYXRhIiwiL2QiKSxjbVs3M109VWwoImdvb2dsZS5jb20iLCIvY2NtL2Zvcm0tZGF0YSIsIi9kIiksY20pO3ZhciBlbT17fSxmbT0oZW1bNTFdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi90cmF2ZWwvZmxpZ2h0cy9jbGljay9jb252ZXJzaW9uIiksZW0pO3ZhciBnbT17fSxobT0oZ21bMV09ZnVuY3Rpb24oKXtyZXR1cm4iaHR0cHM6Ly9hZC5kb3VibGVjbGljay5uZXQvYWN0aXZpdHk7In0sZ21bMl09ZnVuY3Rpb24oKXtyZXR1cm4oV2ooKT9YaigpOiJodHRwczovL2FkZS5nb29nbGVzeW5kaWNhdGlvbi5jb20iKSsiL2RkbS9hY3Rpdml0eSIrKE0oNDY3KT8iOyI6Ii8iKX0sZ21bM109ZnVuY3Rpb24oYSl7cmV0dXJuImh0dHBzOi8vIithLmxyKyIuZmxzLmRvdWJsZWNsaWNrLm5ldC9hY3Rpdml0eWk7In0sZ20pO2Z1bmN0aW9uIGltKGEpe3NiKCJIRUFMVEgiLGEpfTt2YXIgam09e2JhOntQdDoiYXdfdXNlcl9kYXRhX2NhY2hlIixvaToiY29va2llX2RlcHJlY2F0aW9uX2xhYmVsIixiaDoiZGlhZ25vc3RpY3NfcGFnZV9pZCIsb3A6ImVtZW1vIixkdToiZW1fcmVnaXN0cnkiLFNpOiJlYWIiLHJ1OiJmbF91c2VyX2RhdGFfY2FjaGUiLHR1OiJnYTRfdXNlcl9kYXRhX2NhY2hlIixMdToiaWRjX3B2X2NsYWltIixTZToiaXBfZ2VvX2RhdGFfY2FjaGUiLFhpOiJpcF9nZW9fZmV0Y2hfaW5fcHJvZ3Jlc3MiLGpuOiJuYl9kYXRhIixUcToicGFnZV9leHBlcmltZW50X2lkcyIsbG46InBsZCIsVmU6InB0X2RhdGEiLG1uOiJwdF9saXN0ZW5lcl9zZXQiLGtqOiJyZXRyeV9jb250YWluZXJzIixPaDoic2VydmljZV93b3JrZXJfZW5kcG9pbnQiLFpxOiJzaGFyZWRfdXNlcl9pZCIsYXI6InNoYXJlZF91c2VyX2lkX3JlcXVlc3RlZCIsc2o6InNoYXJlZF91c2VyX2lkX3NvdXJjZSIsYnY6ImF3aCIsaHI6InVuaXZlcnNhbF9jbGFpbV9yZWdpc3RyeSJ9fTt2YXIga209ZnVuY3Rpb24oYSl7cmV0dXJuIHRmKGZ1bmN0aW9uKGIpe2Zvcih2YXIgYyBpbiBhKWlmKGI9PT1hW2NdJiYhL15bMC05XSskLy50ZXN0KGMpKXJldHVybiEwO3JldHVybiExfSl9KGptLmJhKTsKZnVuY3Rpb24gbG0oYSxiKXtiPWI9PT12b2lkIDA/ITE6YjtpZihrbShhKSl7dmFyIGMsZCxlPShkPShjPU1jKCJnb29nbGVfdGFnX2RhdGEiLHt9KSkueGNkKSE9bnVsbD9kOmMueGNkPXt9O2lmKGVbYV0pcmV0dXJuIGVbYV07aWYoYil7dmFyIGY9dm9pZCAwLGc9MSxoPXt9LGw9e3NldDpmdW5jdGlvbihuKXtmPW47bC5ub3RpZnkoKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHN1YnNjcmliZTpmdW5jdGlvbihuKXtoW1N0cmluZyhnKV09bjtyZXR1cm4gZysrfSx1bnN1YnNjcmliZTpmdW5jdGlvbihuKXt2YXIgcD1TdHJpbmcobik7cmV0dXJuIGguaGFzT3duUHJvcGVydHkocCk/KGRlbGV0ZSBoW3BdLCEwKTohMX0sbm90aWZ5OmZ1bmN0aW9uKCl7Zm9yKHZhciBuPW0oT2JqZWN0LmtleXMoaCkpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKXt2YXIgcT1wLnZhbHVlO3RyeXtoW3FdKGEsZil9Y2F0Y2gocil7fX19fTtyZXR1cm4gZVthXT1sfX19CmZ1bmN0aW9uIG1tKGEsYil7dmFyIGM9bG0oYSwhMCk7YyYmYy5zZXQoYil9ZnVuY3Rpb24gbm0oYSl7dmFyIGI7cmV0dXJuKGI9bG0oYSkpPT1udWxsP3ZvaWQgMDpiLmdldCgpfWZ1bmN0aW9uIG9tKGEsYil7dmFyIGM9bG0oYSk7aWYoIWMpe2M9bG0oYSwhMCk7aWYoIWMpcmV0dXJuO2Muc2V0KGIpfXJldHVybiBjLmdldCgpfWZ1bmN0aW9uIHBtKGEsYil7aWYodHlwZW9mIGI9PT0iZnVuY3Rpb24iKXt2YXIgYztyZXR1cm4oYz1sbShhLCEwKSk9PW51bGw/dm9pZCAwOmMuc3Vic2NyaWJlKGIpfX1mdW5jdGlvbiBxbShhLGIpe3ZhciBjPWxtKGEpO3JldHVybiBjP2MudW5zdWJzY3JpYmUoYik6ITF9O3ZhciBzbT1mdW5jdGlvbigpe3RoaXMuSD17fTt0aGlzLks9ITF9O3NtLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5LfHwodGhpcy5IPXRtKCksdGhpcy5IWyIwIl0mJm9tKGptLmJhLlNlLEpTT04uc3RyaW5naWZ5KHRoaXMuSCkpKX07CnZhciB4bT1mdW5jdGlvbigpe3ZhciBhPXVtLGI9dm0sYz12b2lkIDAsZD1mdW5jdGlvbigpe2MhPT12b2lkIDAmJnFtKGptLmJhLlNlLGMpO3RyeXt2YXIgZj1ubShqbS5iYS5TZSk7Yi5IPUpTT04ucGFyc2UoZil9Y2F0Y2goZyl7UCgxMjMpLGltKDIpLGIuSD17fX1iLks9ITA7YSgpfSxlPW5tKGptLmJhLlNlKTtlP2QoZSk6KGM9cG0oam0uYmEuU2UsZCksd20oKSl9LHdtPWZ1bmN0aW9uKCl7aWYoIW5tKGptLmJhLlhpKSl7bW0oam0uYmEuWGksITApO3ZhciBhPWZ1bmN0aW9uKGIpe21tKGptLmJhLlNlLGJ8fCJ7fSIpO21tKGptLmJhLlhpLCExKX07dHJ5e0EuZmV0Y2goImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vY2NtL2dlbyIse21ldGhvZDoiR0VUIixjYWNoZToibm8tc3RvcmUiLG1vZGU6ImNvcnMiLGNyZWRlbnRpYWxzOiJvbWl0In0pLnRoZW4oZnVuY3Rpb24oYil7Yi5vaz9iLnRleHQoKS50aGVuKGZ1bmN0aW9uKGMpe2EoYyl9LGZ1bmN0aW9uKCl7YSgpfSk6YSgpfSxmdW5jdGlvbigpe2EoKX0pfWNhdGNoKGIpe2EoKX19fSwKdG09ZnVuY3Rpb24oKXt2YXIgYT1FKDIyKTt0cnl7cmV0dXJuIEpTT04ucGFyc2UocWIoYSkpfWNhdGNoKGIpe3JldHVybiBQKDEyMyksaW0oMikse319fSx5bT1mdW5jdGlvbigpe3JldHVybiB2bS5IWyIwIl18fCIifSx6bT1mdW5jdGlvbigpe3JldHVybiB2bS5IWyIxIl18fCIifSxBbT1mdW5jdGlvbigpe3ZhciBhPXZtLGI9ITE7Yj0hIWEuSFsiMiJdO3JldHVybiBifSxCbT1mdW5jdGlvbigpe3JldHVybiB2bS5IWyI2Il0hPT0hMX0sQ209ZnVuY3Rpb24oKXt2YXIgYT12bSxiPSExO2I9ISFhLkhbIjkiXTtyZXR1cm4gYn0sRG09ZnVuY3Rpb24oKXt2YXIgYT12bSxiPSIiO2I9YS5IWyI0Il18fCIiOwpyZXR1cm4gYn0sRW09ZnVuY3Rpb24oKXt2YXIgYT12bSxiPSIiO2I9YS5IWyIzIl18fCIiO3JldHVybiBifSx2bT1uZXcgc207ZnVuY3Rpb24gRm0oYSl7YT1hPT09dm9pZCAwPyJnL2NvbGxlY3QiOmE7cmV0dXJuImh0dHBzOi8vIisoRG0oKXx8Ind3dyIpKyIuZ29vZ2xlLWFuYWx5dGljcy5jb20vIithfWZ1bmN0aW9uIEdtKGEpe2E9YT09PXZvaWQgMD8iZy9jb2xsZWN0IjphO3ZhciBiPURtKCk7cmV0dXJuImh0dHBzOi8vIisoYj9iKyIuIjoiIikrImFuYWx5dGljcy5nb29nbGUuY29tLyIrYX12YXIgSG09e30sSW09KEhtWzE3XT1mdW5jdGlvbigpe3JldHVybiBXaigpJiYhRG0oKT9YaigpKyIvYWcvZy9jIjpHbSgpfSxIbVsxNl09ZnVuY3Rpb24oKXtyZXR1cm4gV2ooKSYmIURtKCk/WGooKSsiL2dhL2cvYyI6Rm0oKX0sSG1bNjddPWZ1bmN0aW9uKCl7dmFyIGE7YT1hPT09dm9pZCAwPyJnL2NvbGxlY3QiOmE7cmV0dXJuIERtKCk/IiI6Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vIithfSxIbSk7ZnVuY3Rpb24gSm0oYSxiLGMpe3ZhciBkPVVsKGIsIi9tZWFzdXJlbWVudC9jb252ZXJzaW9uIixjKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRG0oKT9hKCJtZWFzdXJlbWVudC9jb252ZXJzaW9uIik6ZCgpfX12YXIgS209e30sTG09KEttWzU1XT1KbShGbSwicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvZ3MiKSxLbVs1NF09Sm0oR20sInd3dy5nb29nbGUuY29tIiwiL2ciKSxLbSk7dmFyIE1tPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sV2wsWWwsJGwsYm0sZG0sZm0saG0sTG0sSW0pO2Z1bmN0aW9uIE5tKGEsYil7dmFyIGM9T2JqZWN0LmtleXMoYikuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBiW2RdIT1udWxsfSkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkKyI9IitiW2RdfSkuam9pbigiJiIpO3JldHVybiBNbVthXSh2b2lkIDApKyI/IitjfTt2YXIgT209e30sUG09KE9tLnRkcD0xLE9tLmV4cD0xLE9tLmd0bT0xLE9tLnBpZD0xLE9tLmRsPTEsT20uc2VxPTEsT20udD0xLE9tLnY9MSxPbSksUm09ZnVuY3Rpb24oKXt2YXIgYT1RbTtyZXR1cm4gT2JqZWN0LmtleXMoYS5IKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGEuSFtiXX0pfSxTbT1mdW5jdGlvbihhLGIsYyl7aWYoYS5IW2JdPT09dm9pZCAwfHwoYz09PXZvaWQgMD8wOmMpKWEuSFtiXT0hMH0sVG09ZnVuY3Rpb24oYSl7YS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1BtW2JdfHwoUW0uSFtiXT0hMSl9KX0sUW09bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9O3RoaXMuSz17fX07ZnVuY3Rpb24gVW0oYSxiLGMpe3ZhciBkPWM9PT12b2lkIDA/ITA6YyxlPVFtO2UuS1thXT1iOyhkPT09dm9pZCAwfHxkKSYmU20oZSxhKX1mdW5jdGlvbiBWbShhLGIpe1NtKFFtLGEsYj09PXZvaWQgMD8hMTpiKX07ZnVuY3Rpb24gV20oYSl7dmFyIGI9MDthLkdjLmZvckVhY2goZnVuY3Rpb24oYyl7Ynw9MTw8Y30pO3JldHVybiBifWZ1bmN0aW9uIFhtKCl7cmV0dXJue3RvdGFsOjAsamI6MCxHYzpuZXcgU2V0LGxmOnt9fX1mdW5jdGlvbiBZbShhLGIsYyxkKXt2YXIgZT1PYmplY3Qua2V5cyhhLm5mKS5zb3J0KGZ1bmN0aW9uKGYsZyl7cmV0dXJuIE51bWJlcihmKS1OdW1iZXIoZyl9KS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuW2YsYihhLm5mW2ZdKV19KS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGZbMV0hPT12b2lkIDB9KS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuam9pbihjKX0pLmpvaW4oZCk7cmV0dXJuIGU/ZTp2b2lkIDB9CmZ1bmN0aW9uIFptKGEsYil7dmFyIGMsZCxlO2M9Yz09PXZvaWQgMD8iXyI6YztkPWQ9PT12b2lkIDA/IjsiOmQ7ZT1lPT09dm9pZCAwPyJ+IjplO2Zvcih2YXIgZj1bXSxnPW0oT2JqZWN0LmtleXMoYS5sZikuc29ydCgpKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZSxuPVltKGEubGZbbF0sYixjLGQpO2lmKG4pe3ZhciBwPXZvaWQgMDtmLnB1c2goIiIrKChwPWwpIT1udWxsP3A6IiIpK2Qrbil9fXJldHVybiBmLmxlbmd0aD9mLmpvaW4oZSk6dm9pZCAwfQpmdW5jdGlvbiAkbShhKXthLmpiPTA7YS5HYy5jbGVhcigpO2Zvcih2YXIgYj1tKE9iamVjdC5rZXlzKGEubGYpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9YS5sZltjLnZhbHVlXTtkLmpiPTA7ZC5HYy5jbGVhcigpO2Zvcih2YXIgZT1tKE9iamVjdC5rZXlzKGQubmYpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9ZC5uZltmLnZhbHVlXTtnLmpiPTA7Zy5HYy5jbGVhcigpfX19CmZ1bmN0aW9uIGFuKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwPzE6ZDthLnRvdGFsKz1kO2EuamIrPWQ7dmFyIGYsZz1iPT09dm9pZCAwPyIiOmI7Zj1hLmxmW2ddfHwoYS5sZltnXT17dG90YWw6MCxqYjowLEdjOm5ldyBTZXQsbmY6e319KTtmLnRvdGFsKz1kO2YuamIrPWQ7dmFyIGgsbD1TdHJpbmcoYyk7aD1mLm5mW2xdfHwoZi5uZltsXT17dG90YWw6MCxqYjowLEdjOm5ldyBTZXR9KTtoLnRvdGFsKz1kO2guamIrPWQ7ZSE9PXZvaWQgMCYmKGEuR2MuYWRkKGUpLGYuR2MuYWRkKGUpLGguR2MuYWRkKGUpKX07dmFyIGJuPWZ1bmN0aW9uKCl7dGhpcy5IPVhtKCl9O2JuLnByb3RvdHlwZS5pbmNyZW1lbnQ9ZnVuY3Rpb24oYSxiKXthbih0aGlzLkgsYSxiKX07dmFyIGNuPW5ldyBibjtmdW5jdGlvbiBkbihhKXt2YXIgYj1TdHJpbmcoYVtHZi5ZYl18fCIiKS5yZXBsYWNlKC9fL2csIiIpO3JldHVybiBTYihiLCJjdnQiKT8iY3Z0IjpifXZhciBlbj1BLmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCI/Z3RtX2xhdGVuY3k9Iik+PTB8fEEubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoIiZndG1fbGF0ZW5jeT0iKT49MDt2YXIgZ249ZnVuY3Rpb24oKXt2YXIgYT1mbjtyZXR1cm4gTSg2MDMpJiZJZig2NSwhMSkmJiFhLlp9LGZuPW5ldyBmdW5jdGlvbihhKXt0aGlzLlI9YSgpO3ZhciBiPUpmKDI3KTt0aGlzLk49ZW58fHRoaXMuUjxiO3ZhciBjPUpmKDQyKTt0aGlzLlo9ZW58fHRoaXMuUj49MS1jO3ZhciBkPU0oNjAzKSYmSWYoNjUsITEpO3RoaXMuSz10aGlzLlp8fGQ7dmFyIGU9SmYoMjcpLGY9SmYoNjMpO3RoaXMuSD1lbnx8Zj09PTF8fHRoaXMuUj49ZSYmdGhpcy5SPGUrZn0oZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb20oKX0pO3ZhciBobj1mdW5jdGlvbigpe3RoaXMuSD17fX07aG4ucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGEsYixjKXtpZihmbi5LKXt2YXIgZD1qbihiLGMpO2lmKGQpe3ZhciBlLGY9YjtmPT09NCYmKGY9NSk7dmFyIGc9dGhpcy5IW2ZdO2d8fChnPXRoaXMuSFtmXT17fSk7ZT1nO3ZhciBoPWVbZF07aHx8KGg9ZVtkXT1bXSk7aC5wdXNoKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYSkpO2NuLmluY3JlbWVudChhLmRlc3RpbmF0aW9uSWQsYS5lbmRwb2ludCk7YS5lbmRwb2ludCE9PTU2JiZhLmVuZHBvaW50IT09NjEmJlZtKCJtZGUiLCEwKX19fTsKdmFyIG1uPWZ1bmN0aW9uKGEsYil7dmFyIGM9a24sZD1qbihhLGIpO2lmKGQpe3ZhciBlPWxuKGMsYSk7aWYoZSl7dmFyIGY9ZVtkXTtmJiYoZVtkXT1mLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4hZy5Fb30pKX19fSxsbj1mdW5jdGlvbihhLGIpe2I9PT00JiYoYj01KTtyZXR1cm4gYS5IW2JdfSxqbj1mdW5jdGlvbihhLGIpe3ZhciBjPWI7aWYoYlswXT09PSIvIil7dmFyIGQ7Yz0oKGQ9QS5sb2NhdGlvbik9PW51bGw/dm9pZCAwOmQub3JpZ2luKStifXRyeXt2YXIgZT1uZXcgVVJMKGMpO3JldHVybiBhPT09Mj9lLm9yaWdpbjplLm9yaWdpbitlLnBhdGhuYW1lfWNhdGNoKGYpe319LGtuPW5ldyBobjsKZnVuY3Rpb24gbm4oYSl7c3dpdGNoKGEpe2Nhc2UgInNjcmlwdC1zcmMiOnJldHVybiA0O2Nhc2UgInNjcmlwdC1zcmMtZWxlbSI6cmV0dXJuIDU7Y2FzZSAiZnJhbWUtc3JjIjpyZXR1cm4gMjtjYXNlICJjb25uZWN0LXNyYyI6cmV0dXJuIDE7Y2FzZSAiaW1nLXNyYyI6cmV0dXJuIDN9fTtmdW5jdGlvbiBvbihhLGIsYyl7dmFyIGQsZT1hLkdvb2dsZWJRaENzTztlfHwoZT17fSxhLkdvb2dsZWJRaENzTz1lKTtkPWU7aWYoZFtiXSlyZXR1cm4hMTtkW2JdPVtdO2RbYl1bMF09YztyZXR1cm4hMH07dmFyIHBuLHFuO2E6e2Zvcih2YXIgcm49WyJDTE9TVVJFX0ZMQUdTIl0sc249UmEsdG49MDt0bjxybi5sZW5ndGg7dG4rKylpZihzbj1zbltyblt0bl1dLHNuPT1udWxsKXtxbj1udWxsO2JyZWFrIGF9cW49c259dmFyIHVuPXFuJiZxbls2MTA0MDEzMDFdO3BuPXVuIT1udWxsP3VuOiExO2Z1bmN0aW9uIHZuKCl7dmFyIGE9UmEubmF2aWdhdG9yO2lmKGEpe3ZhciBiPWEudXNlckFnZW50O2lmKGIpcmV0dXJuIGJ9cmV0dXJuIiJ9dmFyIHduLHhuPVJhLm5hdmlnYXRvcjt3bj14bj94bi51c2VyQWdlbnREYXRhfHxudWxsOm51bGw7ZnVuY3Rpb24geW4oYSl7aWYoIXBufHwhd24pcmV0dXJuITE7Zm9yKHZhciBiPTA7Yjx3bi5icmFuZHMubGVuZ3RoO2IrKyl7dmFyIGM9d24uYnJhbmRzW2JdLmJyYW5kO2lmKGMmJmMuaW5kZXhPZihhKSE9LTEpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gem4oYSl7cmV0dXJuIHZuKCkuaW5kZXhPZihhKSE9LTF9O2Z1bmN0aW9uIEFuKCl7cmV0dXJuIHBuPyEhd24mJnduLmJyYW5kcy5sZW5ndGg+MDohMX1mdW5jdGlvbiBCbigpe3JldHVybiBBbigpPyExOnpuKCJPcGVyYSIpfWZ1bmN0aW9uIENuKCl7cmV0dXJuIHpuKCJGaXJlZm94Iil8fHpuKCJGeGlPUyIpfWZ1bmN0aW9uIERuKCl7cmV0dXJuIEFuKCk/eW4oIkNocm9taXVtIik6KHpuKCJDaHJvbWUiKXx8em4oIkNyaU9TIikpJiYhKEFuKCk/MDp6bigiRWRnZSIpKXx8em4oIlNpbGsiKX07ZnVuY3Rpb24gRW4oKXtyZXR1cm4gcG4/ISF3biYmISF3bi5wbGF0Zm9ybTohMX1mdW5jdGlvbiBGbigpe3JldHVybiB6bigiaVBob25lIikmJiF6bigiaVBvZCIpJiYhem4oImlQYWQiKX1mdW5jdGlvbiBHbigpe0ZuKCl8fHpuKCJpUGFkIil8fHpuKCJpUG9kIil9O3ZhciBIbj1mdW5jdGlvbihhKXtIblsiICJdKGEpO3JldHVybiBhfTtIblsiICJdPWZ1bmN0aW9uKCl7fTtCbigpO0FuKCl8fHpuKCJUcmlkZW50Iil8fHpuKCJNU0lFIik7em4oIkVkZ2UiKTshem4oIkdlY2tvIil8fHZuKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSE9LTEmJiF6bigiRWRnZSIpfHx6bigiVHJpZGVudCIpfHx6bigiTVNJRSIpfHx6bigiRWRnZSIpO3ZuKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSE9LTEmJiF6bigiRWRnZSIpJiZ6bigiTW9iaWxlIik7RW4oKXx8em4oIk1hY2ludG9zaCIpO0VuKCl8fHpuKCJXaW5kb3dzIik7KEVuKCk/d24ucGxhdGZvcm09PT0iTGludXgiOnpuKCJMaW51eCIpKXx8RW4oKXx8em4oIkNyT1MiKTtFbigpfHx6bigiQW5kcm9pZCIpO0ZuKCk7em4oImlQYWQiKTt6bigiaVBvZCIpO0duKCk7dm4oKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImthaW9zIik7Q24oKTtGbigpfHx6bigiaVBvZCIpO3puKCJpUGFkIik7IXpuKCJBbmRyb2lkIil8fERuKCl8fENuKCl8fEJuKCl8fHpuKCJTaWxrIik7RG4oKTshem4oIlNhZmFyaSIpfHxEbigpfHwoQW4oKT8wOnpuKCJDb2FzdCIpKXx8Qm4oKXx8KEFuKCk/MDp6bigiRWRnZSIpKXx8KEFuKCk/eW4oIk1pY3Jvc29mdCBFZGdlIik6em4oIkVkZy8iKSl8fChBbigpP3luKCJPcGVyYSIpOnpuKCJPUFIiKSl8fENuKCl8fHpuKCJTaWxrIil8fHpuKCJBbmRyb2lkIil8fEduKCk7dmFyIEluPXt9LEpuPW51bGw7CmZ1bmN0aW9uIEtuKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hLmNoYXJDb2RlQXQoZCk7ZT4yNTUmJihiW2MrK109ZSYyNTUsZT4+PTgpO2JbYysrXT1lfXZhciBmPTQ7Zj09PXZvaWQgMCYmKGY9MCk7aWYoIUpuKXtKbj17fTtmb3IodmFyIGc9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ii5zcGxpdCgiIiksaD1bIisvPSIsIisvIiwiLV89IiwiLV8uIiwiLV8iXSxsPTA7bDw1O2wrKyl7dmFyIG49Zy5jb25jYXQoaFtsXS5zcGxpdCgiIikpO0luW2xdPW47Zm9yKHZhciBwPTA7cDxuLmxlbmd0aDtwKyspe3ZhciBxPW5bcF07Sm5bcV09PT12b2lkIDAmJihKbltxXT1wKX19fWZvcih2YXIgcj1JbltmXSx0PUFycmF5KE1hdGguZmxvb3IoYi5sZW5ndGgvMykpLHU9cls2NF18fCIiLHY9MCx4PTA7djxiLmxlbmd0aC0yO3YrPTMpe3ZhciB5PWJbdl0sej1iW3YrMV0sQz1iW3YrMl0sCkQ9clt5Pj4yXSxJPXJbKHkmMyk8PDR8ej4+NF0sRz1yWyh6JjE1KTw8MnxDPj42XSxOPXJbQyY2M107dFt4KytdPSIiK0QrSStHK059dmFyIFM9MCxXPXU7c3dpdGNoKGIubGVuZ3RoLXYpe2Nhc2UgMjpTPWJbdisxXSxXPXJbKFMmMTUpPDwyXXx8dTtjYXNlIDE6dmFyIGVhPWJbdl07dFt4XT0iIityW2VhPj4yXStyWyhlYSYzKTw8NHxTPj40XStXK3V9cmV0dXJuIHQuam9pbigiIil9O3ZhciBMbj1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07dmFyIE1uPVJlZ0V4cCgiXig/OihbXjovPyMuXSspOik/KD86Ly8oPzooW15cXFxcLz8jXSopQCk/KFteXFxcXC8/I10qPykoPzo6KFswLTldKykpPyg/PVtcXFxcLz8jXXwkKSk/KFtePyNdKyk/KD86XFw/KFteI10qKSk/KD86IyhbXFxzXFxTXSopKT8kIik7ZnVuY3Rpb24gTm4oYSxiLGMsZCl7Zm9yKHZhciBlPWIsZj1jLmxlbmd0aDsoZT1hLmluZGV4T2YoYyxlKSk+PTAmJmU8ZDspe3ZhciBnPWEuY2hhckNvZGVBdChlLTEpO2lmKGc9PTM4fHxnPT02Myl7dmFyIGg9YS5jaGFyQ29kZUF0KGUrZik7aWYoIWh8fGg9PTYxfHxoPT0zOHx8aD09MzUpcmV0dXJuIGV9ZSs9ZisxfXJldHVybi0xfXZhciBPbj0vI3wkLzsKZnVuY3Rpb24gUG4oYSxiKXt2YXIgYz1hLnNlYXJjaChPbiksZD1ObihhLDAsYixjKTtpZihkPDApcmV0dXJuIG51bGw7dmFyIGU9YS5pbmRleE9mKCImIixkKTtpZihlPDB8fGU+YyllPWM7ZCs9Yi5sZW5ndGgrMTtyZXR1cm4gTG4oYS5zbGljZShkLGUhPT0tMT9lOjApKX12YXIgUW49L1s/Jl0oJHwjKS87CmZ1bmN0aW9uIFJuKGEsYixjKXtmb3IodmFyIGQsZT1hLnNlYXJjaChPbiksZj0wLGcsaD1bXTsoZz1ObihhLGYsYixlKSk+PTA7KWgucHVzaChhLnN1YnN0cmluZyhmLGcpKSxmPU1hdGgubWluKGEuaW5kZXhPZigiJiIsZykrMXx8ZSxlKTtoLnB1c2goYS5zbGljZShmKSk7ZD1oLmpvaW4oIiIpLnJlcGxhY2UoUW4sIiQxIik7dmFyIGwsbj1jIT1udWxsPyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGMpKToiIjt2YXIgcD1iK247aWYocCl7dmFyIHEscj1kLmluZGV4T2YoIiMiKTtyPDAmJihyPWQubGVuZ3RoKTt2YXIgdD1kLmluZGV4T2YoIj8iKSx1O3Q8MHx8dD5yPyh0PXIsdT0iIik6dT1kLnN1YnN0cmluZyh0KzEscik7cT1bZC5zbGljZSgwLHQpLHUsZC5zbGljZShyKV07dmFyIHY9cVsxXTtxWzFdPXA/dj92KyImIitwOnA6djtsPXFbMF0rKHFbMV0/Ij8iK3FbMV06IiIpK3FbMl19ZWxzZSBsPWQ7cmV0dXJuIGx9O2Z1bmN0aW9uIFNuKGEsYixjLGQsZSxmLGcsaCl7dmFyIGw9UG4oYywiZm10Iik7aWYoZCl7dmFyIG49UG4oYywicmFuZG9tIikscD1QbihjLCJsYWJlbCIpfHwiIjtpZighbilyZXR1cm47dmFyIHE9S24oTG4ocCkrIjoiK0xuKG4pKTtpZighb24oYSxxLGQpKXJldHVybn1sJiZOdW1iZXIobCkhPT00PyhjPVJuKGMsInJmbXQiLGwpLGM9Um4oYywiZm10Iiw0KSk6bHx8KGM9Um4oYywiZm10Iiw0KSk7VWMoYyxmdW5jdGlvbigpe2c9PW51bGx8fFRuKGcpO2g9PW51bGx8fFVuKGgsYyk7YS5nb29nbGVfbm9GdXJ0aGVyUmVkaXJlY3RzJiZkJiYoYS5nb29nbGVfbm9GdXJ0aGVyUmVkaXJlY3RzPW51bGwsZCgpKX0sZnVuY3Rpb24oKXtnPT1udWxsfHxUbihnKTtoPT1udWxsfHxVbihoLGMpO2U9PW51bGx8fGUoKX0sZixiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXS5wYXJlbnRFbGVtZW50fHx2b2lkIDApO3JldHVybiBjfTtmdW5jdGlvbiBWbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSwxLGJbMF0pO2lkLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gV24oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsMSxiWzBdKTtyZXR1cm4gamQuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBYbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSwzLGJbMF0pO1pjLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gWW4oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsMSxiWzBdKTtyZXR1cm4gbWQuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBabihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSw1LGJbMF0pO1VjLmFwcGx5KG51bGwsdyhiKSl9CmZ1bmN0aW9uICRuKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtiWzBdJiZrbi5yZWdpc3RlcihhLDIsYlswXSk7WGMuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBhbyhhKXt2YXIgYj1Tbi5hcHBseShudWxsLHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSk7YiYma24ucmVnaXN0ZXIoYSw0LGIpO3JldHVybiBifTt2YXIgYm89e01hOntSZTowLFVlOjEsTGg6Mn19O2JvLk1hW2JvLk1hLlJlXT0iRlVMTF9UUkFOU01JU1NJT04iO2JvLk1hW2JvLk1hLlVlXT0iTElNSVRFRF9UUkFOU01JU1NJT04iO2JvLk1hW2JvLk1hLkxoXT0iTk9fVFJBTlNNSVNTSU9OIjt2YXIgY289e2lhOntnZDowLGNiOjEseGQ6MixaYjozfX07Y28uaWFbY28uaWEuZ2RdPSJOT19RVUVVRSI7Y28uaWFbY28uaWEuY2JdPSJBRFMiO2NvLmlhW2NvLmlhLnhkXT0iQU5BTFlUSUNTIjtjby5pYVtjby5pYS5aYl09Ik1PTklUT1JJTkciO3ZhciBlbz1mdW5jdGlvbihhLGIpe3RoaXMuSD1hO3RoaXMuY29uc2VudFR5cGVzPWJ9O2VvLnByb3RvdHlwZS5pc0NvbnNlbnRHcmFudGVkPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuSCl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnNlbnRUeXBlcy5ldmVyeShmdW5jdGlvbihhKXtyZXR1cm4gQmwoYSl9KTtjYXNlIDE6cmV0dXJuIHRoaXMuY29uc2VudFR5cGVzLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIEJsKGEpfSk7ZGVmYXVsdDp5Yyh0aGlzLkgsImNvbnNlbnRzUmVxdWlyZWQgaGFkIGFuIHVua25vd24gdHlwZSIpfX07CnZhciBmbz1uZXcgZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzLkg9KGFbY28uaWEuZ2RdPWJvLk1hLlJlLGFbY28uaWEuY2JdPWJvLk1hLlJlLGFbY28uaWEueGRdPWJvLk1hLlJlLGFbY28uaWEuWmJdPWJvLk1hLlJlLGEpO3ZhciBiPXt9O3RoaXMuSz0oYltjby5pYS5nZF09bmV3IGVvKDAsW10pLGJbY28uaWEuY2JdPW5ldyBlbygwLFsiYWRfc3RvcmFnZSJdKSxiW2NvLmlhLnhkXT1uZXcgZW8oMCxbImFuYWx5dGljc19zdG9yYWdlIl0pLGJbY28uaWEuWmJdPW5ldyBlbygxLFsiYWRfc3RvcmFnZSIsImFuYWx5dGljc19zdG9yYWdlIl0pLGIpfTt2YXIgaG89ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLnR5cGU9YTt0aGlzLkg9W107RmwoZm8uS1thXS5jb25zZW50VHlwZXMsZnVuY3Rpb24oKXtnbyhiKXx8Yi5mbHVzaCgpfSl9O2hvLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgYT1tKHRoaXMuSCksYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpe3ZhciBjPWIudmFsdWU7YygpfXRoaXMuSD1bXX07dmFyIGdvPWZ1bmN0aW9uKGEpe3JldHVybiBmby5IW2EudHlwZV09PT1iby5NYS5MaCYmIWZvLktbYS50eXBlXS5pc0NvbnNlbnRHcmFudGVkKCl9LGlvPWZ1bmN0aW9uKGEsYil7Z28oYSk/YS5ILnB1c2goYik6YigpfSxqbz1mdW5jdGlvbigpe3RoaXMuSD1uZXcgTWFwfSxsbz1mdW5jdGlvbihhKXt2YXIgYj1rbztiLkguaGFzKGEpfHxiLkguc2V0KGEsbmV3IGhvKGEpKTtyZXR1cm4gYi5ILmdldChhKX07am8ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5ILmNsZWFyKCl9Owp2YXIga289bmV3IGpvO3ZhciBtbz1bImZpbiIsImZzIiwibWNjIiwibmNjIl0sbm89ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwPyExOmE7dmFyIGI9Um0oKSxjPVFtLkssZD1iLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gY1tlXSE9PXZvaWQgMCYmKGF8fCFtby5pbmNsdWRlcyhlKSl9KTtUbShkKTtyZXR1cm4gZC5tYXAoZnVuY3Rpb24oZSl7dmFyIGY9Y1tlXTt0eXBlb2YgZj09PSJmdW5jdGlvbiImJihmPWYoKSk7cmV0dXJuIGY/IiYiK2UrIj0iK2Y6IiJ9KS5qb2luKCIiKSsiJno9MCJ9LG9vPWZ1bmN0aW9uKGEpe3ZhciBiPSJodHRwczovLyIrRSgyMSksYz0iL3RkP2lkPSIrRSg1KTtyZXR1cm4iIitmayhiKStjK2F9LHBvPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/ITE6YjtjPWM9PT12b2lkIDA/ITE6YztpZigkaygyNikmJmZuLksmJkUoNSkmJihjfHwhZ24oKSkpe3ZhciBkPWxvKGNvLmlhLlpiKTtpZihnbyhkKSlhLkh8fChhLkg9ITAsaW8oZCxmdW5jdGlvbigpe3JldHVybiBwbyhhKX0pKTsKZWxzZXtiJiZVbSgiZmluIiwiMSIpO3ZhciBlPW5vKGIpLGY9b28oZSksZz17ZGVzdGluYXRpb25JZDpFKDUpLGVuZHBvaW50OjYxfTtiP1luKGcsZix2b2lkIDAse1FnOiEwfSx2b2lkIDAsZnVuY3Rpb24oKXtaYyhmKyImaW1nPTEiKX0pOlhuKGcsZik7YS5IPSExO3FvKGUpfX19LHFvPWZ1bmN0aW9uKGEpe2lmKEtjJiYoU2IoS2MsImh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tLyIpfHxJZig0NykpJiYhKGEuaW5kZXhPZigiJmNzcD0iKTwwJiZhLmluZGV4T2YoIiZtZGU9Iik8MCkpe3ZhciBiO2E6e3RyeXtpZihLYyl7Yj1uZXcgVVJMKEtjKTticmVhayBhfX1jYXRjaChjKXt9Yj12b2lkIDB9YiYmVWMoIiIrS2MrKEtjLmluZGV4T2YoIj8iKT49MD8iJiI6Ij8iKSsiaXNfdGQ9MSIrYSl9fSxybz1mdW5jdGlvbihhKXtSbSgpLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIVBtW2JdfSkmJnBvKGEsITApfSxzbz1uZXcgZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0hMTsKJGMoQSwicGFnZWhpZGUiLGZ1bmN0aW9uKCl7cm8oYSl9KX07ZnVuY3Rpb24gdG8oYSxiKXtwbyhzbyxhPT09dm9pZCAwPyExOmEsYj09PXZvaWQgMD8hMTpiKX07dmFyIHVvPVsiYWRfc3RvcmFnZSIsImFuYWx5dGljc19zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIiwiYWRfcGVyc29uYWxpemF0aW9uIl0sdm89W0YuRC5kZCxGLkQueWMsRi5ELlFmLEYuRC5LYixGLkQueGMsRi5ELmZiLEYuRC5EYixGLkQubmIsRi5ELkxiLEYuRC52Y10seW89ZnVuY3Rpb24oKXt2YXIgYT13bzshYS5SJiZhLkgmJih1by5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBBbC5jb250YWluZXJTY29wZWREZWZhdWx0c1tiXSE9PTF9KXx8eG8oIm1iYyIpKTthLlI9ITB9LHhvPWZ1bmN0aW9uKGEpe2ZuLksmJihVbShhLCIxIiksdG8oKSl9LHpvPWZ1bmN0aW9uKGEsYil7dmFyIGM9d287aWYoIWMuTltiXSYmKGMuTltiXT0hMCxjLktbYl0pKWZvcih2YXIgZD1tKHZvKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSlpZihPKGEsZS52YWx1ZSkpe3hvKCJlcmMiKTticmVha319LHdvPW5ldyBmdW5jdGlvbigpe3RoaXMuUj10aGlzLkg9ITE7dGhpcy5OPXt9O3RoaXMuSz17fX07dmFyIEFvPXt9LEJvPU9iamVjdC5mcmVlemUoKEFvW0YuRC5SY109MSxBb1tGLkQuaGhdPTEsQW9bRi5ELnNpXT0xLEFvW0YuRC5TY109MSxBb1tGLkQuSGFdPTEsQW9bRi5ELkxiXT0xLEFvW0YuRC5DYl09MSxBb1tGLkQuVGJdPTEsQW9bRi5ELklkXT0xLEFvW0YuRC52Y109MSxBb1tGLkQubmJdPTEsQW9bRi5ELkpkXT0xLEFvW0YuRC5IZV09MSxBb1tGLkQuT2FdPTEsQW9bRi5ELlFwXT0xLEFvW0YuRC5QZl09MSxBb1tGLkQuRmldPTEsQW9bRi5ELnBoXT0xLEFvW0YuRC5XY109MSxBb1tGLkQuUWZdPTEsQW9bRi5ELmFxXT0xLEFvW0YuRC5UYV09MSxBb1tGLkQuVWZdPTEsQW9bRi5ELmZxXT0xLEFvW0YuRC5PZF09MSxBb1tGLkQuUmxdPTEsQW9bRi5ELlljXT0xLEFvW0YuRC5aY109MSxBb1tGLkQuRGJdPTEsQW9bRi5ELmFtXT0xLEFvW0YuRC5XYl09MSxBb1tGLkQuVGRdPTEsQW9bRi5ELlhiXT0xLEFvW0YuRC5PaV09MSxBb1tGLkQuZGRdPTEsQW9bRi5ELnloXT0xLEFvW0YuRC5QaV09CjEsQW9bRi5ELlVkXT0xLEFvW0YuRC55Y109MSxBb1tGLkQuVmRdPTEsQW9bRi5ELmxtXT0xLEFvW0YuRC5XZF09MSxBb1tGLkQuZWRdPTEsQW9bRi5ELm9qXT0xLEFvKSk7T2JqZWN0LmZyZWV6ZShbRi5ELnphLEYuRC5VYSxGLkQuTWIsRi5ELnRiLEYuRC5OaSxGLkQuZmIsRi5ELkdpLEYuRC5NcF0pOwp2YXIgQ289e30sRG89T2JqZWN0LmZyZWV6ZSgoQ29bRi5ELnFwXT0xLENvW0YuRC5ycF09MSxDb1tGLkQudHBdPTEsQ29bRi5ELnVwXT0xLENvW0YuRC52cF09MSxDb1tGLkQuenBdPTEsQ29bRi5ELkFwXT0xLENvW0YuRC5CcF09MSxDb1tGLkQuRHBdPTEsQ29bRi5ELnlmXT0xLENvKSksRW89e30sRm89T2JqZWN0LmZyZWV6ZSgoRW9bRi5ELnZsXT0xLEVvW0YuRC53bF09MSxFb1tGLkQueGVdPTEsRW9bRi5ELnllXT0xLEVvW0YuRC54bF09MSxFb1tGLkQuQWRdPTEsRW9bRi5ELnplXT0xLEVvW0YuRC5vY109MSxFb1tGLkQuUWNdPTEsRW9bRi5ELnFjXT0xLEVvW0YuRC5JYl09MSxFb1tGLkQuQWVdPTEsRW9bRi5ELnJjXT0xLEVvW0YuRC55bF09MSxFbykpLEdvPU9iamVjdC5mcmVlemUoW0YuRC5SYyxGLkQuU2MsRi5ELkpkLEYuRC5RZixGLkQuV2YsRi5ELlRkLEYuRC5PaSxGLkQuVmRdKSxIbz1PYmplY3QuZnJlZXplKFtdLmNvbmNhdCh3KEdvKSkpLElvPU9iamVjdC5mcmVlemUoW0YuRC5DYiwKRi5ELnBoLEYuRC55aCxGLkQuUGksRi5ELm5oXSksSm89T2JqZWN0LmZyZWV6ZShbXS5jb25jYXQodyhJbykpKSxLbz17fSxMbz0oS29bRi5ELmthXT0iMSIsS29bRi5ELnJhXT0iMiIsS29bRi5ELm1hXT0iMyIsS29bRi5ELlhhXT0iNCIsS28pLE1vPXt9LE5vPU9iamVjdC5mcmVlemUoKE1vLnNlYXJjaD0icyIsTW8ueW91dHViZT0ieSIsTW8ucGxheXN0b3JlPSJwIixNby5zaG9wcGluZz0iaCIsTW8uYWRzPSJhIixNby5tYXBzPSJtIixNbykpO2Z1bmN0aW9uIE9vKGEpe3JldHVybiB0eXBlb2YgYSE9PSJvYmplY3QifHxhPT09bnVsbD97fTphfWZ1bmN0aW9uIFBvKGEpe3JldHVybiBhPT09dm9pZCAwfHxhPT09bnVsbD8iIjp0eXBlb2YgYT09PSJvYmplY3QiP2EudG9TdHJpbmcoKTpTdHJpbmcoYSl9ZnVuY3Rpb24gUW8oYSl7aWYoYSE9PXZvaWQgMCYmYSE9PW51bGwpcmV0dXJuIFBvKGEpfTt2YXIgUm89W0YuRC5rYSxGLkQucmEsRi5ELm1hLEYuRC5YYV07ZnVuY3Rpb24gU28oYSl7Zm9yKHZhciBiPW0oYVtGLkQubmNdfHxbIiJdKSxjPWIubmV4dCgpLGQ9e307IWMuZG9uZTtkPXtyZWdpb246dm9pZCAwfSxjPWIubmV4dCgpKWQucmVnaW9uPWMudmFsdWUsR2IoYSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZixnKXtpZihmIT09Ri5ELm5jKXt2YXIgaD1QbyhnKSxsPWUucmVnaW9uLG49eW0oKSxwPXptKCk7eWw9ITA7eGwmJnNiKCJUQUdHSU5HIiwyMCk7dGwoKS5kZWNsYXJlKGYsaCxsLG4scCl9fX0oZCkpfQpmdW5jdGlvbiBUbyhhKXt5bygpO3ZhciBiPWFsKDE3LGZ1bmN0aW9uKCl7cmV0dXJuITF9KSxjPWFsKDE2LGZ1bmN0aW9uKCl7cmV0dXJuITF9KTshYiYmYyYmeG8oImNyYyIpO1prKDE3LCEwKTt2YXIgZD1hW0YuRC5ZZ107ZCYmUCg0MSk7dmFyIGU9YVtGLkQubmNdO2U/UCg0MCk6ZT1bIiJdO2Zvcih2YXIgZj1tKGUpLGc9Zi5uZXh0KCksaD17fTshZy5kb25lO2g9e0JvOnZvaWQgMH0sZz1mLm5leHQoKSloLkJvPWcudmFsdWUsR2IoYSxmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24obixwKXtpZihuIT09Ri5ELm5jJiZuIT09Ri5ELllnKXt2YXIgcT1RbyhwKSxyPWwuQm8sdD1OdW1iZXIoZCksdT15bSgpLHY9em0oKTt0PXQ9PT12b2lkIDA/MDp0O3hsPSEwO3lsJiZzYigiVEFHR0lORyIsMjApO3RsKCkuZGVmYXVsdChuLHEscix1LHYsdCxBbCl9fX0oaCkpfQpmdW5jdGlvbiBVbyhhKXtBbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM9ITA7dmFyIGI9YVtGLkQubmNdO2lmKGIpe3ZhciBjPUFycmF5LmlzQXJyYXkoYik/YjpbYl07aWYoIWMuaW5jbHVkZXMoem0oKSkmJiFjLmluY2x1ZGVzKHltKCkpKXJldHVybn1HYihhLGZ1bmN0aW9uKGQsZSl7c3dpdGNoKGQpe2Nhc2UgImFkX3N0b3JhZ2UiOmNhc2UgImFuYWx5dGljc19zdG9yYWdlIjpjYXNlICJhZF91c2VyX2RhdGEiOmNhc2UgImFkX3BlcnNvbmFsaXphdGlvbiI6YnJlYWs7ZGVmYXVsdDpyZXR1cm59QWwudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzPSEwO0FsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzW2RdPWU9PT0iZ3JhbnRlZCI/MzoyfSl9CmZ1bmN0aW9uIFZvKGEsYil7eW8oKTtaaygxNiwhMCk7R2IoYSxmdW5jdGlvbihjLGQpe3ZhciBlPVBvKGQpO3hsPSEwO3lsJiZzYigiVEFHR0lORyIsMjApO3RsKCkudXBkYXRlKGMsZSxBbCl9KTtHbChiLmV2ZW50SWQsYi5wcmlvcml0eUlkKX1mdW5jdGlvbiBXbyhhKXthLmhhc093blByb3BlcnR5KCJhbGwiKSYmKEFsLnNlbGVjdGVkQWxsQ29yZVBsYXRmb3JtU2VydmljZXM9ITAsR2IoTm8sZnVuY3Rpb24oYil7QWwuY29yZVBsYXRmb3JtU2VydmljZXNbYl09YS5hbGw9PT0iZ3JhbnRlZCI7QWwudXNlZENvcmVQbGF0Zm9ybVNlcnZpY2VzPSEwfSkpO0diKGEsZnVuY3Rpb24oYixjKXtiIT09ImFsbCImJihBbC5jb3JlUGxhdGZvcm1TZXJ2aWNlc1tiXT1jPT09ImdyYW50ZWQiLEFsLnVzZWRDb3JlUGxhdGZvcm1TZXJ2aWNlcz0hMCl9KX0KZnVuY3Rpb24gWG8oYSl7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtyZXR1cm4gYS5ldmVyeShmdW5jdGlvbihiKXtyZXR1cm4gQmwoYil9KX1mdW5jdGlvbiBZbygpe3ZhciBhPVpvO0FycmF5LmlzQXJyYXkoYSl8fChhPVthXSk7cmV0dXJuIGEuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gQmwoYil9KX1mdW5jdGlvbiAkbyhhLGIpe0ZsKGEsYil9ZnVuY3Rpb24gYXAoYSxiKXtJbChhLGIpfWZ1bmN0aW9uIGJwKGEsYil7SGwoYSxiKX1mdW5jdGlvbiBjcCgpe3ZhciBhPVtGLkQua2EsRi5ELlhhLEYuRC5tYV07dGwoKS53YWl0Rm9yVXBkYXRlKGEsNTAwLEFsKX1mdW5jdGlvbiBkcChhKXtmb3IodmFyIGI9bShhKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTt0bCgpLmNsZWFyVGltZW91dChkLHZvaWQgMCxBbCl9R2woKX0KZnVuY3Rpb24gZXAoYSl7Zm9yKHZhciBiPXt9LGM9bShhLnNwbGl0KCJ8IikpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWJbZC52YWx1ZV09ITA7cmV0dXJuIGJ9O3ZhciBmcD1PYmplY3QuZnJlZXplKFtGLkQua2EsRi5ELm1hXSk7CnZhciBocD1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1tKE9iamVjdC5rZXlzKGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTtiW2dwW2VdfHxlXT1hW2VdfXJldHVybiBifSxpcD1mdW5jdGlvbihhKXtyZXR1cm4hIVEoYSxILkoudmQpJiZSKGEsRi5ELlBkKT09PSIxIiYmUihhLEYuRC5IZCkhPT0iMSImJlhvKGZwKX0sanA9ZnVuY3Rpb24oYSxiKXtpZighaXAoYSkpcmV0dXJuITE7dmFyIGM9UWMoKXx8T2MoKT81ODo1NyxkPU5tKGMsaHAoYikpO1RsKGQsYSxjKTtZbih7ZGVzdGluYXRpb25JZDphLnRhcmdldC5kZXN0aW5hdGlvbklkLGVuZHBvaW50OmMsZXZlbnRJZDphLk0uZXZlbnRJZCxwcmlvcml0eUlkOmEuTS5wcmlvcml0eUlkfSxkKyImZm10PTgiLHZvaWQgMCx7UWc6ITAsbWV0aG9kOiJHRVQifSxmdW5jdGlvbigpe30sZnVuY3Rpb24oKXtaYyhkKyImZm10PTMiKX0pO3JldHVybiEwfSxrcD17fSxncD0oa3AuZGw9InVybCIsa3AuZHI9CiJyZWYiLGtwLnVpZD0idXNlcklkIixrcCk7dmFyIGxwPWZ1bmN0aW9uKGEsYil7dmFyIGM9e30sZD1mdW5jdGlvbihlKXtiW2VdIT1udWxsJiZiW2VdIT09IiImJihjW2VdPWJbZV0pfTtNKDQ3NCkmJmQoIl9nc2lkIik7UihhLEYuRC5IZCkhPT0iMSImJihkKCJnY2xpZCIpLGQoImdjbHNyYyIpLGQoImF1aWQiKSxkKCJkY2xpZCIpKTtpZihPYmplY3Qua2V5cyhjKS5sZW5ndGgpcmV0dXJuIGQoImd0bSIpLGN9Owp2YXIgbXA9e30sbnA9KG1wW0YuRC5zYV09ImdjdSIsbXBbRi5ELlNiXT0iZ2NsZ2IiLG1wW0YuRC5sYl09ImdjbGF3IixtcFtGLkQuemZdPSJnYWRfc291cmNlIixtcFtGLkQuQWZdPSJnYWRfc291cmNlX3NyYyIsbXBbRi5ELkRkXT0iZ2NsaWQiLG1wW0YuRC5BbF09ImdjbHNyYyIsbXBbRi5ELkJmXT0iZ2JyYWlkIixtcFtGLkQuRWVdPSJ3YnJhaWQiLG1wW0YuRC5FZF09ImF1aWQiLG1wW0YuRC5CbF09ImFlIixtcFtGLkQuSGFdPW51bGwsbXBbRi5ELkRsXT0icm5kIixtcFtGLkQuSGRdPSJuY2wiLG1wW0YuRC5OZl09ImdjbGRjIixtcFtGLkQuS2RdPSJkY2xpZCIsbXBbRi5ELlZjXT0iZWRpZCIsbXBbRi5ELlViXT0iZW4iLG1wW0YuRC5LZV09ImdkcHIiLG1wW0YuRC5YY109ImdkaWQiLG1wW0YuRC5UYV09bnVsbCxtcFtGLkQuTGVdPSJfbmciLG1wW0YuRC50aF09ImdwcF9zaWQiLG1wW0YuRC51aF09ImdwcCIsbXBbRi5ELlZmXT0iX3R1IixtcFtGLkQuUWxdPSJndG1fdXAiLG1wW0YuRC5NZV09CiJmcm0iLG1wW0YuRC5QZF09ImxwcyIsbXBbRi5ELkxpXT0iZGlkIixtcFtGLkQuVWxdPSJuYXZ0IixtcFtGLkQuemFdPSJkbCIsbXBbRi5ELlVhXT0iZHIiLG1wW0YuRC5NYl09ImR0IixtcFtGLkQuYm1dPSJzY3JzcmMiLG1wW0YuRC5aZl09ImdhX3VpZCIsbXBbRi5ELk9lXT0iZ2Rwcl9jb25zZW50IixtcFtGLkQuUWldPSJ0ZXN0b25seSIsbXBbRi5ELnJxXT0idV90eiIsbXBbRi5ELlBlXT0idG9wIixtcFtGLkQuUWVdPSJ0aWQiLG1wW0YuRC5mYl09InVpZCIsbXBbRi5ELmtnXT0idXNfcHJpdmFjeSIsbXBbRi5ELmVkXT1udWxsLG1wW0YuRC5kZV09Im5wYSIsbXApO2Z1bmN0aW9uIG9wKGEsYil7aWYoYiE9bnVsbCYmYiE9PSIiKXt2YXIgYz1iPT09ITA/IjEiOmI9PT0hMT8iMCI6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhiKSk7aWYoU2IoYSwiXyYiKSlyZXR1cm57a2V5OmEuc3Vic3RyaW5nKDIpLHZhbHVlOmN9O3ZhciBkPW5wW2FdO2lmKGQhPT1udWxsKXJldHVybiBkP3trZXk6ZCx2YWx1ZTpjfTp7a2V5OkFiKGIpPyJlcG4uIithOiJlcC4iK2EsdmFsdWU6Y319fTtmdW5jdGlvbiBwcChhKXthPWE9PT12b2lkIDA/W106YTtyZXR1cm4geGooYSkuam9pbigifiIpfTtmdW5jdGlvbiBxcCgpe3ZhciBhPVtdLGI9TnVtYmVyKCcnKXx8MCxjPU51bWJlcignJyl8fDA7Y3x8KGM9Yi8xMDApO3ZhciBkPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIHR9KCk7YS5wdXNoKHt1azoyMjgsc3R1ZHlJZDoyMjgsZXhwZXJpbWVudElkOjEwNTE3NzE1NCxjb250cm9sSWQ6MTA1MTc3MTU1LGNvbnRyb2xJZDI6MTA1MjU1MjQ1LHByb2JhYmlsaXR5OmMsYWN0aXZlOmQsWmU6MH0pO3ZhciBlPU51bWJlcignJyl8fAowLGY9TnVtYmVyKCcnKXx8MDtmfHwoZj1lLzEwMCk7dmFyIGc9ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gdH0oKTthLnB1c2goe3VrOjIzNSxzdHVkeUlkOjIzNSxleHBlcmltZW50SWQ6MTA1MzU3MTUwLGNvbnRyb2xJZDoxMDUzNTcxNTEsY29udHJvbElkMjowLHByb2JhYmlsaXR5OmYsYWN0aXZlOmcsWmU6MX0pO3ZhciBoPU51bWJlcignJyl8fDAsbD1OdW1iZXIoJycpfHwKMDtsfHwobD1oLzEwMCk7dmFyIG49ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gdH0oKTthLnB1c2goe3VrOjI2NixzdHVkeUlkOjI2NixleHBlcmltZW50SWQ6MTE1NzE4NTI5LGNvbnRyb2xJZDoxMTU3MTg1MzAsY29udHJvbElkMjoxMTU3MTg1MzEscHJvYmFiaWxpdHk6bCxhY3RpdmU6bixaZTowfSk7dmFyIHA9TnVtYmVyKCcnKXx8MCxxPU51bWJlcignJyl8fAowO3F8fChxPXAvMTAwKTt2YXIgcj1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiB0fSgpO2EucHVzaCh7dWs6MjY3LHN0dWR5SWQ6MjY3LGV4cGVyaW1lbnRJZDoxMTU3MTg1MjYsY29udHJvbElkOjExNTcxODUyNyxjb250cm9sSWQyOjExNTcxODUyOCxwcm9iYWJpbGl0eTpxLGFjdGl2ZTpyLFplOjB9KTtyZXR1cm4gYX07dmFyIHJwPWZ1bmN0aW9uKCl7dGhpcy5LPXt9O3RoaXMuSD17fTt0aGlzLk49e307dGhpcy5SPW5ldyBTZXR9LHhwPWZ1bmN0aW9uKGEsYil7dmFyIGM9YixkPWI9YS5OW2Muc3R1ZHlJZF0/bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjLHthY3RpdmU6ITB9KTpjLGU9Rmk7ZC5jb250cm9sSWQyJiZkLnByb2JhYmlsaXR5PD0uMjV8fChkPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZCx7Y29udHJvbElkMjowfSkpO2Uuc3R1ZGllc1tkLnN0dWR5SWRdPWQ7Yi5mb2N1c2VkJiYoYS5LW2Iuc3R1ZHlJZF09ITApO2lmKGIuWmU9PT0xKXt2YXIgZj1iLnN0dWR5SWQ7c3AoYSx0cCgpLGYpO3VwKGEsZik/dGoodWosZik6dnAoYSxmKT91ai5LW2ZdPSEwOndwKGEsZikmJih1ai5IW2ZdPSEwKX1lbHNlIGlmKGIuWmU9PT0wKXt2YXIgZz1iLnN0dWR5SWQ7c3AoYSxhLkgsZyk7dXAoYSxnKT90aih1aixnKTp2cChhLGcpP3VqLktbZ109ITA6d3AoYSxnKSYmCih1ai5IW2ddPSEwKX19LHNwPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPUZpO2lmKGUuc3R1ZGllc1tjXSl7dmFyIGY9ZS5zdHVkaWVzW2NdLGc9Zi5leHBlcmltZW50SWQsaD1mLnByb2JhYmlsaXR5O2lmKCEoYi5zdHVkaWVzfHx7fSlbY10pe3ZhciBsPWIuc3R1ZGllc3x8e307bFtjXT0hMDtiLnN0dWRpZXM9bDtpZighZS5zdHVkaWVzW2NdLmFjdGl2ZSlpZihlLnN0dWRpZXNbY10ucHJvYmFiaWxpdHk+LjUpSWkoYixnLGMpO2Vsc2UgaWYoIShoPD0wfHxoPjEpKXt2YXIgbj12b2lkIDA7aWYoZCl7dmFyIHA9Q2koZCsifiIrYyk7aWYocD09PSJlMiIpbj0tMTtlbHNle2Zvcih2YXIgcT1uZXcgVWludDhBcnJheShwKSxyPUJpZ0ludCgwKSx0PW0ocSksdT10Lm5leHQoKTshdS5kb25lO3U9dC5uZXh0KCkpcj1yPDxCaWdJbnQoOCl8QmlnSW50KHUudmFsdWUpO249TnVtYmVyKHIlQmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSl9fUdpLnNrKGIsYyxuKX19fWlmKCFhLktbY10pe3ZhciB2PQpOaShiLGMpO3YmJndqLkguSy5hZGQodil9fSx0cD1mdW5jdGlvbigpe3JldHVybiBvbShqbS5iYS5UcSx7fSl9LHVwPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHAoKTtyZXR1cm4gS2koYyxiKXx8S2koYS5ILGIpfSx2cD1mdW5jdGlvbihhLGIpe3ZhciBjPXRwKCk7cmV0dXJuIExpKGMsYil8fExpKGEuSCxiKX0sd3A9ZnVuY3Rpb24oYSxiKXt2YXIgYz10cCgpO3JldHVybiBNaShjLGIpfHxNaShhLkgsYil9LHlwOwpmdW5jdGlvbiB6cCgpe2lmKCF5cCl7dmFyIGE9eXA9bmV3IHJwLGIsYyxkPSgoYj1BKT09bnVsbD92b2lkIDA6KGM9Yi5sb2NhdGlvbik9PW51bGw/dm9pZCAwOmMuaGFzaCl8fCIiO2lmKGRbMF09PT0iIyImJmRbMV09PT0iXyImJmRbMl09PT0idCImJmRbM109PT0iZSImJmRbNF09PT0iPSIpe3ZhciBlPWQuc3Vic3RyaW5nKDUpO2lmKGUpZm9yKHZhciBmPW0oZS5zcGxpdCgifiIpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9TnVtYmVyKGcudmFsdWUpO2gmJihhLk5baF09ITAsdGoodWosaCkpfX1mb3IodmFyIGw9bShxcCgpKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl4cChhLG4udmFsdWUpO2Zvcih2YXIgcD1bXSxxPW0oTWYoNTYpfHxbXSkscj1xLm5leHQoKTshci5kb25lO3I9cS5uZXh0KCkpe3ZhciB0PXIudmFsdWUsdT17c3R1ZHlJZDp0WzFdLGFjdGl2ZTohIXRbMl0scHJvYmFiaWxpdHk6dFszXXx8MCxleHBlcmltZW50SWQ6dFs0XXx8CjAsY29udHJvbElkOnRbNV18fDAsY29udHJvbElkMjp0WzZdfHwwfSx2PTA7c3dpdGNoKHRbN10pe2Nhc2UgMjp2PTE7YnJlYWs7Y2FzZSAzOnY9MjticmVhaztjYXNlIDE6Y2FzZSA0OmNhc2UgNTpjYXNlIDA6dj0wfXZhciB4O2E6c3dpdGNoKHUuc3R1ZHlJZCl7Y2FzZSA1Njc6Y2FzZSA0NjI6eD0hMDticmVhayBhO2RlZmF1bHQ6eD0hMX12YXIgeT1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHUse1plOnYsZm9jdXNlZDp4fSk7KHkuYWN0aXZlfHx5LnByb2JhYmlsaXR5Pi41JiZ5LmV4cGVyaW1lbnRJZHx8eS5leHBlcmltZW50SWQmJnkuY29udHJvbElkKSYmcC5wdXNoKHkpfWZvcih2YXIgej1tKHApLEM9ei5uZXh0KCk7IUMuZG9uZTtDPXoubmV4dCgpKXhwKGEsQy52YWx1ZSl9fQpmdW5jdGlvbiBBcChhLGIpe3pwKCk7dmFyIGM9eXA7c3AoYyx0cCgpLGEsYik7dXAoYyxhKT90aih1aixhKTp2cChjLGEpP3VqLktbYV09ITA6d3AoYyxhKSYmKHVqLkhbYV09ITApfWZ1bmN0aW9uIEJwKCl7enAoKTt2YXIgYT15cCxiPXVwKGEsNTY3KTtpZihhLktbNTY3XSl7dmFyIGMsZD10cCgpOyhjPU5pKGQsNTY3KXx8TmkoYS5ILDU2NykpJiZhLlIuYWRkKGMpfXJldHVybiBifWZ1bmN0aW9uIENwKGEpe3pwKCk7dmFyIGI9bmV3IFNldCh5cC5SKTtpZihhKWZvcih2YXIgYz1RKGEsSC5KLkNoKXx8W10sZD1tKGMpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWIuYWRkKGUudmFsdWUpO3JldHVybiBwcChbXS5jb25jYXQodyhiKSkpfTtmdW5jdGlvbiBEcChhKXt2YXIgYj1hLmxvY2F0aW9uLmhyZWY7aWYoYT09PWEudG9wKXJldHVybnt1cmw6YixJczohMH07dmFyIGM9ITEsZD1hLmRvY3VtZW50O2QmJmQucmVmZXJyZXImJihiPWQucmVmZXJyZXIsYS5wYXJlbnQ9PT1hLnRvcCYmKGM9ITApKTt2YXIgZT1hLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucztpZihlKXt2YXIgZj1lW2UubGVuZ3RoLTFdLGc7ZiYmKChnPWIpPT1udWxsP3ZvaWQgMDpnLmluZGV4T2YoZikpPT09LTEmJihjPSExLGI9Zil9cmV0dXJue3VybDpiLElzOmN9fWZ1bmN0aW9uIEVwKGEpe3RyeXt2YXIgYjtpZihiPSEhYSYmYS5sb2NhdGlvbi5ocmVmIT1udWxsKWE6e3RyeXtIbihhLmZvbyk7Yj0hMDticmVhayBhfWNhdGNoKGMpe31iPSExfXJldHVybiBifWNhdGNoKGMpe3JldHVybiExfX1mdW5jdGlvbiBGcCgpe2Zvcih2YXIgYT1BLGI9YTthJiZhIT09YS5wYXJlbnQ7KWE9YS5wYXJlbnQsRXAoYSkmJihiPWEpO3JldHVybiBifTt2YXIgR3A9ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbigpe307Yy5wcm90b3R5cGU9YS5wcm90b3R5cGU7dmFyIGQ9bmV3IGM7YS5hcHBseShkLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIGR9LEhwPWZ1bmN0aW9uKGEpe3ZhciBiPWE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYil7dmFyIGM9YjtiPW51bGw7YygpfX19O2Z1bmN0aW9uIElwKGEsYil7aWYoYSlmb3IodmFyIGMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmYihhW2NdLGMsYSl9O2Z1bmN0aW9uIEpwKGEpe3ZhciBiPWEuc3BsaXQoL1s/I10vKSxjPS9bP10vLnRlc3QoYSk/Ij8iK2JbMV06IiI7cmV0dXJue3prOmJbMF0scGFyYW1zOmMsZnJhZ21lbnQ6L1sjXS8udGVzdChhKT8iIyIrKGM/YlsyXTpiWzFdKToiIn19ZnVuY3Rpb24gS3AoYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2lmKGIubGVuZ3RoPT09MClyZXR1cm4gamMoYVswXSk7Zm9yKHZhciBjPWFbMF0sZD0wO2Q8Yi5sZW5ndGg7ZCsrKWMrPWVuY29kZVVSSUNvbXBvbmVudChiW2RdKSthW2QrMV07cmV0dXJuIGpjKGMpfQpmdW5jdGlvbiBMcChhLGIsYyxkKXtmdW5jdGlvbiBlKGcsaCl7ZyE9bnVsbCYmKEFycmF5LmlzQXJyYXkoZyk/Zy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3JldHVybiBlKGwsaCl9KTooYis9ZitlbmNvZGVVUklDb21wb25lbnQoaCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChnKSxmPSImIikpfXZhciBmPWIubGVuZ3RoPyImIjoiPyI7ZC5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmKGQ9T2JqZWN0LmVudHJpZXMoZCkpO0FycmF5LmlzQXJyYXkoZCk/ZC5mb3JFYWNoKGZ1bmN0aW9uKGcpe3JldHVybiBlKGdbMV0sZ1swXSl9KTpkLmZvckVhY2goZSk7cmV0dXJuIGpjKGErYitjKX1mdW5jdGlvbiBNcChhLGIpe3ZhciBjPUpwKGtjKGEpLnRvU3RyaW5nKCkpLGQ9Yy56ay5zbGljZSgtMSk9PT0iLyI/IiI6Ii8iLGU9Yy56aytkK2VuY29kZVVSSUNvbXBvbmVudChiKTtyZXR1cm4gamMoZStjLnBhcmFtcytjLmZyYWdtZW50KX07dmFyIE5wPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEsZD0wO2Q8NTA7KytkKXt2YXIgZTt0cnl7ZT0hKCFjLmZyYW1lc3x8IWMuZnJhbWVzW2JdKX1jYXRjaChoKXtlPSExfWlmKGUpcmV0dXJuIGM7dmFyIGY7YTp7dHJ5e3ZhciBnPWMucGFyZW50O2lmKGcmJmchPT1jKXtmPWc7YnJlYWsgYX19Y2F0Y2goaCl7fWY9bnVsbH1pZighKGM9ZikpYnJlYWt9cmV0dXJuIG51bGx9LE9wPWZ1bmN0aW9uKGEpe3ZhciBiPUE7aWYoYi50b3A9PWIpcmV0dXJuIDA7aWYoYT09PXZvaWQgMD8wOmEpe3ZhciBjPWIubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zO2lmKGMpcmV0dXJuIGNbYy5sZW5ndGgtMV09PWIubG9jYXRpb24ub3JpZ2luPzE6Mn1yZXR1cm4gRXAoYi50b3ApPzE6Mn0sUHA9ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwP2RvY3VtZW50OmE7cmV0dXJuIGEuY3JlYXRlRWxlbWVudCgiaW1nIil9O2Z1bmN0aW9uIFFwKGEpe2Zvcih2YXIgYj1bXSxjPUIuY29va2llLnNwbGl0KCI7IiksZD1uZXcgUmVnRXhwKCJeXFxzKiIrKGF8fCJfZ2FjIikrIl8oVUEtXFxkKy1cXGQrKT1cXHMqKC4rPylcXHMqJCIpLGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXS5tYXRjaChkKTtmJiZiLnB1c2goe3VkOmZbMV0sdmFsdWU6ZlsyXSx0aW1lc3RhbXA6TnVtYmVyKGZbMl0uc3BsaXQoIi4iKVsxXSl8fDB9KX1iLnNvcnQoZnVuY3Rpb24oZyxoKXtyZXR1cm4gaC50aW1lc3RhbXAtZy50aW1lc3RhbXB9KTtyZXR1cm4gYn0KZnVuY3Rpb24gUnAoYSxiKXt2YXIgYz1RcChhKSxkPXt9O2lmKCFjfHwhYy5sZW5ndGgpcmV0dXJuIGQ7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWNbZV0udmFsdWUuc3BsaXQoIi4iKTtpZighKGZbMF0hPT0iMSJ8fGImJmYubGVuZ3RoPDN8fCFiJiZmLmxlbmd0aCE9PTMpJiZOdW1iZXIoZlsxXSkpe2RbY1tlXS51ZF18fChkW2NbZV0udWRdPVtdKTt2YXIgZz17dmVyc2lvbjpmWzBdLHRpbWVzdGFtcDpOdW1iZXIoZlsxXSkqMUUzLGdjbGlkOmZbMl19O2ImJmYubGVuZ3RoPjMmJihnLmxhYmVscz1mLnNsaWNlKDMpKTtkW2NbZV0udWRdLnB1c2goZyl9fXJldHVybiBkfTtmdW5jdGlvbiBTcChhKXtyZXR1cm4gYS5vcmlnaW4hPT0ibnVsbCJ9O3ZhciBUcD17fSxVcD0oVHAuaz17bmE6L15bXHctXSskL30sVHAuYj17bmE6L15bXHctXSskLyxuazohMH0sVHAuaT17bmE6L15bMS05XVxkKiQvfSxUcC5oPXtuYTovXlxkKyQvfSxUcC50PXtuYTovXlsxLTldXGQqJC99LFRwLmQ9e25hOi9eW0EtWmEtejAtOV8tXSskL30sVHAuaj17bmE6L15cZCskL30sVHAudT17bmE6L15bMS05XVxkKiQvfSxUcC5sPXtuYTovXlswMV0kL30sVHAubz17bmE6L15bMS05XVxkKiQvfSxUcC5nPXtuYTovXlswMV0kL30sVHAucz17bmE6L14uKyQvfSxUcC5tPXtuYTovXlswMV0kL30sVHApO3ZhciBWcD17fSxacD0oVnBbNV09e2ppOnsyOldwfSxaajoiMiIsUmg6WyJrIiwiaSIsImIiLCJ1Il19LFZwWzRdPXtqaTp7MjpXcCxHQ0w6WHB9LFpqOiIyIixSaDpbImsiLCJpIiwiYiIsIm0iXX0sVnBbMl09e2ppOntHUzI6V3AsR1MxOllwfSxaajoiR1MyIixSaDoic29ndGpsaGQiLnNwbGl0KCIiKX0sVnApO2Z1bmN0aW9uICRwKGEsYixjKXt2YXIgZD1acFtiXTtpZihkKXt2YXIgZT1hLnNwbGl0KCIuIilbMF07Yz09bnVsbHx8YyhlKTtpZihlKXt2YXIgZj1kLmppW2VdO2lmKGYpcmV0dXJuIGYoYSxiKX19fQpmdW5jdGlvbiBXcChhLGIpe3ZhciBjPWEuc3BsaXQoIi4iKTtpZihjLmxlbmd0aD09PTMpe3ZhciBkPWNbMl07aWYoZC5pbmRleE9mKCIkIik9PT0tMSYmZC5pbmRleE9mKCIlMjQiKSE9PS0xKXRyeXtkPWRlY29kZVVSSUNvbXBvbmVudChkKX1jYXRjaCh0KXt9dmFyIGU9e30sZj1acFtiXTtpZihmKXtmb3IodmFyIGc9Zi5SaCxoPW0oZC5zcGxpdCgiJCIpKSxsPWgubmV4dCgpOyFsLmRvbmU7bD1oLm5leHQoKSl7dmFyIG49bC52YWx1ZSxwPW5bMF07aWYoZy5pbmRleE9mKHApIT09LTEpdHJ5e3ZhciBxPWRlY29kZVVSSUNvbXBvbmVudChuLnN1YnN0cmluZygxKSkscj1VcFtwXTtyJiYoci5uaz8oZVtwXT1lW3BdfHxbXSxlW3BdLnB1c2gocSkpOmVbcF09cSl9Y2F0Y2godCl7fX1yZXR1cm4gZX19fWZ1bmN0aW9uIGFxKGEsYixjKXt2YXIgZD1acFtiXTtpZihkKXJldHVybltkLlpqLGN8fCIxIixicShhLGIpXS5qb2luKCIuIil9CmZ1bmN0aW9uIGJxKGEsYil7dmFyIGM9WnBbYl07aWYoYyl7Zm9yKHZhciBkPVtdLGU9bShjLlJoKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZSxoPVVwW2ddO2lmKGgpe3ZhciBsPWFbZ107aWYobCE9PXZvaWQgMClpZihoLm5rJiZBcnJheS5pc0FycmF5KGwpKWZvcih2YXIgbj1tKGwpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKWQucHVzaChlbmNvZGVVUklDb21wb25lbnQoIiIrZytwLnZhbHVlKSk7ZWxzZSBkLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KCIiK2crbCkpfX1yZXR1cm4gZC5qb2luKCIkIil9fWZ1bmN0aW9uIFhwKGEpe3ZhciBiPWEuc3BsaXQoIi4iKTtiLnNoaWZ0KCk7dmFyIGM9Yi5zaGlmdCgpLGQ9Yi5zaGlmdCgpLGU9e307cmV0dXJuIGUuaz1kLGUuaT1jLGUuYj1iLGV9CmZ1bmN0aW9uIFlwKGEpe3ZhciBiPWEuc3BsaXQoIi4iKS5zbGljZSgyKTtpZighKGIubGVuZ3RoPDV8fGIubGVuZ3RoPjcpKXt2YXIgYz17fTtyZXR1cm4gYy5zPWJbMF0sYy5vPWJbMV0sYy5nPWJbMl0sYy50PWJbM10sYy5qPWJbNF0sYy5sPWJbNV0sYy5oPWJbNl0sY319O2Z1bmN0aW9uIGNxKGEsYixjLGQpe3ZhciBlO3JldHVybihlPWRxKGZ1bmN0aW9uKGYpe3JldHVybiBmPT09YX0sYixjLGQpW2FdKSE9bnVsbD9lOltdfWZ1bmN0aW9uIGRxKGEsYixjLGQpe3ZhciBlO2lmKGVxKGQpKXtmb3IodmFyIGY9e30sZz1TdHJpbmcoYnx8ZnEoKSkuc3BsaXQoIjsiKSxoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciBsPWdbaF0uc3BsaXQoIj0iKSxuPWxbMF0udHJpbSgpO2lmKG4mJmEobikpe3ZhciBwPWwuc2xpY2UoMSkuam9pbigiPSIpLnRyaW0oKTtwJiZjJiYocD1kZWNvZGVVUklDb21wb25lbnQocCkpO3ZhciBxPXZvaWQgMCxyPXZvaWQgMDsoKHE9Zilbcj1uXXx8KHFbcl09W10pKS5wdXNoKHApfX1lPWZ9ZWxzZSBlPXt9O3JldHVybiBlfQpmdW5jdGlvbiBncShhLGIsYyxkLGUpe2lmKGVxKGUpKXt2YXIgZj1ocShhLGQsZSk7aWYoZi5sZW5ndGg9PT0xKXJldHVybiBmWzBdO2lmKGYubGVuZ3RoIT09MCl7Zj1pcShmLGZ1bmN0aW9uKGcpe3JldHVybiBnLkpyfSxiKTtpZihmLmxlbmd0aD09PTEpcmV0dXJuIGZbMF07Zj1pcShmLGZ1bmN0aW9uKGcpe3JldHVybiBnLldzfSxjKTtyZXR1cm4gZlswXX19fWZ1bmN0aW9uIGpxKGEsYixjLGQpe3ZhciBlPWZxKCksZj1BO1NwKGYpJiYoZi5kb2N1bWVudC5jb29raWU9YSk7dmFyIGc9ZnEoKTtyZXR1cm4gZSE9PWd8fGMhPT12b2lkIDAmJmNxKGIsZywhMSxkKS5pbmRleE9mKGMpPj0wfQpmdW5jdGlvbiBrcShhLGIsYyxkKXtmdW5jdGlvbiBlKHgseSx6KXtpZih6PT1udWxsKXJldHVybiBkZWxldGUgaFt5XSx4O2hbeV09ejtyZXR1cm4geCsiOyAiK3krIj0iK3p9ZnVuY3Rpb24gZih4LHkpe2lmKHk9PW51bGwpcmV0dXJuIHg7aFt5XT0hMDtyZXR1cm4geCsiOyAiK3l9aWYoIWVxKGMuTWMpKXJldHVybiAyO3ZhciBnO2I9PW51bGw/Zz1hKyI9ZGVsZXRlZDsgZXhwaXJlcz0iKyhuZXcgRGF0ZSgwKSkudG9VVENTdHJpbmcoKTooYy5lbmNvZGUmJihiPWVuY29kZVVSSUNvbXBvbmVudChiKSksYj1scShiKSxnPWErIj0iK2IpO3ZhciBoPXt9O2c9ZShnLCJwYXRoIixjLnBhdGgpO3ZhciBsO2MuZXhwaXJlcyBpbnN0YW5jZW9mIERhdGU/bD1jLmV4cGlyZXMudG9VVENTdHJpbmcoKTpjLmV4cGlyZXMhPW51bGwmJihsPSIiK2MuZXhwaXJlcyk7Zz1lKGcsImV4cGlyZXMiLGwpO2c9ZShnLCJtYXgtYWdlIixjLk9zKTtnPWUoZywic2FtZXNpdGUiLGMucnQpO2Muc2VjdXJlJiYKKGc9ZihnLCJzZWN1cmUiKSk7dmFyIG49Yy5kb21haW47aWYobiYmbi50b0xvd2VyQ2FzZSgpPT09ImF1dG8iKXtmb3IodmFyIHA9bXEoKSxxPXZvaWQgMCxyPSExLHQ9MDt0PHAubGVuZ3RoOysrdCl7dmFyIHU9cFt0XSE9PSJub25lIj9wW3RdOnZvaWQgMCx2PWUoZywiZG9tYWluIix1KTt2PWYodixjLmZsYWdzKTt0cnl7ZCYmZChhLGgpfWNhdGNoKHgpe3E9eDtjb250aW51ZX1yPSEwO2lmKCFucSh1LGMucGF0aCkmJmpxKHYsYSxiLGMuTWMpKXJldHVybiAwfWlmKHEmJiFyKXRocm93IHE7cmV0dXJuIDF9biYmbi50b0xvd2VyQ2FzZSgpIT09Im5vbmUiJiYoZz1lKGcsImRvbWFpbiIsbikpO2c9ZihnLGMuZmxhZ3MpO2QmJmQoYSxoKTtyZXR1cm4gbnEobixjLnBhdGgpPzE6anEoZyxhLGIsYy5NYyk/MDoxfWZ1bmN0aW9uIG9xKGEsYixjKXtjLnBhdGg9PW51bGwmJihjLnBhdGg9Ii8iKTtjLmRvbWFpbnx8KGMuZG9tYWluPSJhdXRvIik7cmV0dXJuIGtxKGEsYixjKX0KZnVuY3Rpb24gaXEoYSxiLGMpe2Zvcih2YXIgZD1bXSxlPVtdLGYsZz0wO2c8YS5sZW5ndGg7ZysrKXt2YXIgaD1hW2ddLGw9YihoKTtsPT09Yz9kLnB1c2goaCk6Zj09PXZvaWQgMHx8bDxmPyhlPVtoXSxmPWwpOmw9PT1mJiZlLnB1c2goaCl9cmV0dXJuIGQubGVuZ3RoPjA/ZDplfWZ1bmN0aW9uIGhxKGEsYixjKXtmb3IodmFyIGQ9W10sZT1jcShhLHZvaWQgMCx2b2lkIDAsYyksZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdLnNwbGl0KCIuIiksaD1nLnNoaWZ0KCk7aWYoIWJ8fCFofHxiLmluZGV4T2YoaCkhPT0tMSl7dmFyIGw9Zy5zaGlmdCgpO2lmKGwpe3ZhciBuPWwuc3BsaXQoIi0iKTtkLnB1c2goe0JyOmVbZl0sQ3I6Zy5qb2luKCIuIiksSnI6TnVtYmVyKG5bMF0pfHwxLFdzOk51bWJlcihuWzFdKXx8MX0pfX19cmV0dXJuIGR9ZnVuY3Rpb24gbHEoYSl7YSYmYS5sZW5ndGg+MTIwMCYmKGE9YS5zdWJzdHJpbmcoMCwxMjAwKSk7cmV0dXJuIGF9CnZhciBwcT0vXih3d3dcLik/Z29vZ2xlKFwuY29tPyk/KFwuW2Etel17Mn0pPyQvLHFxPS8oXnxcLilkb3VibGVjbGlja1wubmV0JC9pO2Z1bmN0aW9uIG5xKGEsYil7cmV0dXJuIGEhPT12b2lkIDAmJihxcS50ZXN0KEEuZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUpfHxiPT09Ii8iJiZwcS50ZXN0KGEpKX1mdW5jdGlvbiBycShhKXtpZighYSlyZXR1cm4gMTt2YXIgYj1hO1lmKDQpJiZhPT09Im5vbmUiJiYoYj1BLmRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lKTtiPWIuaW5kZXhPZigiLiIpPT09MD9iLnN1YnN0cmluZygxKTpiO3JldHVybiBiLnNwbGl0KCIuIikubGVuZ3RofWZ1bmN0aW9uIHNxKGEpe2lmKCFhfHxhPT09Ii8iKXJldHVybiAxO2FbMF0hPT0iLyImJihhPSIvIithKTthW2EubGVuZ3RoLTFdIT09Ii8iJiYoYSs9Ii8iKTtyZXR1cm4gYS5zcGxpdCgiLyIpLmxlbmd0aC0xfQpmdW5jdGlvbiB0cShhLGIpe3ZhciBjPSIiK3JxKGEpLGQ9c3EoYik7ZD4xJiYoYys9Ii0iK2QpO3JldHVybiBjfQp2YXIgZnE9ZnVuY3Rpb24oKXt2YXIgYT1BO3JldHVybiBTcChhKT9hLmRvY3VtZW50LmNvb2tpZToiIn0sZXE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJllmKDUpPyhBcnJheS5pc0FycmF5KGEpP2E6W2FdKS5ldmVyeShmdW5jdGlvbihiKXtyZXR1cm4gRGwoYikmJkJsKGIpfSk6ITB9LG1xPWZ1bmN0aW9uKCl7dmFyIGE9W10sYj1BLmRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lLnNwbGl0KCIuIik7aWYoYi5sZW5ndGg9PT00KXt2YXIgYz1iW2IubGVuZ3RoLTFdO2lmKE51bWJlcihjKS50b1N0cmluZygpPT09YylyZXR1cm5bIm5vbmUiXX1mb3IodmFyIGQ9Yi5sZW5ndGgtMjtkPj0wO2QtLSlhLnB1c2goYi5zbGljZShkKS5qb2luKCIuIikpO3ZhciBlPUEuZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU7cXEudGVzdChlKXx8cHEudGVzdChlKXx8YS5wdXNoKCJub25lIik7cmV0dXJuIGF9O2Z1bmN0aW9uIHVxKGEsYixjLGQpe3ZhciBlLGY9TnVtYmVyKGEucGQhPW51bGw/YS5wZDp2b2lkIDApO2YhPT0wJiYoZT1uZXcgRGF0ZSgoYnx8TmIoKSkrMUUzKihmfHw3Nzc2RTMpKSk7cmV0dXJue3BhdGg6YS5wYXRoLGRvbWFpbjphLmRvbWFpbixmbGFnczphLmZsYWdzLGVuY29kZTohIWMsZXhwaXJlczplLE1jOmR9fTt2YXIgdnE9bmV3IE1hcChbWzUsImFkX3N0b3JhZ2UiXSxbNCxbImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXV0sWzIsImFuYWx5dGljc19zdG9yYWdlIl1dKTtmdW5jdGlvbiB3cShhLGIsYyl7aWYoWnBbYl0pe2Zvcih2YXIgZD1bXSxlPWNxKGEsdm9pZCAwLHZvaWQgMCx2cS5nZXQoYikpLGY9bShlKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9JHAoZy52YWx1ZSxiLGMpO2gmJmQucHVzaCh4cShoKSl9cmV0dXJuIGR9fQpmdW5jdGlvbiB5cShhKXt2YXIgYj16cTtpZihacFsyXSl7Zm9yKHZhciBjPXt9LGQ9ZHEoYSx2b2lkIDAsdm9pZCAwLHZxLmdldCgyKSksZT1PYmplY3Qua2V5cyhkKS5zb3J0KCksZj1tKGUpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWZvcih2YXIgaD1nLnZhbHVlLGw9bShkW2hdKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9JHAobi52YWx1ZSwyLGIpO3AmJihjW2hdfHwoY1toXT1bXSksY1toXS5wdXNoKHhxKHApKSl9cmV0dXJuIGN9fWZ1bmN0aW9uIEFxKGEsYixjLGQsZSl7ZD1kfHx7fTt2YXIgZj10cShkLmRvbWFpbixkLnBhdGgpLGc9YXEoYixjLGYpO2lmKCFnKXJldHVybiAxO3ZhciBoPXVxKGQsZSx2b2lkIDAsdnEuZ2V0KGMpKTtyZXR1cm4gb3EoYSxnLGgpfWZ1bmN0aW9uIEJxKGEsYil7dmFyIGM9Yi5uYTtyZXR1cm4gdHlwZW9mIGM9PT0iZnVuY3Rpb24iP2MoYSk6Yy50ZXN0KGEpfQpmdW5jdGlvbiB4cShhKXtmb3IodmFyIGI9bShPYmplY3Qua2V5cyhhKSksYz1iLm5leHQoKSxkPXt9OyFjLmRvbmU7ZD17QWc6dm9pZCAwfSxjPWIubmV4dCgpKXt2YXIgZT1jLnZhbHVlLGY9YVtlXTtkLkFnPVVwW2VdO2QuQWc/ZC5BZy5uaz9hW2VdPUFycmF5LmlzQXJyYXkoZik/Zi5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBCcShoLGcuQWcpfX0oZCkpOnZvaWQgMDp0eXBlb2YgZj09PSJzdHJpbmciJiZCcShmLGQuQWcpfHwoYVtlXT12b2lkIDApOmFbZV09dm9pZCAwfXJldHVybiBhfTt2YXIgQ3E7ZnVuY3Rpb24gRHEoKXtmdW5jdGlvbiBhKGcpe2MoZy50YXJnZXR8fGcuc3JjRWxlbWVudHx8e30pfWZ1bmN0aW9uIGIoZyl7ZChnLnRhcmdldHx8Zy5zcmNFbGVtZW50fHx7fSl9dmFyIGM9RXEsZD1GcSxlPUdxKCk7aWYoIWUuaW5pdCl7JGMoQiwibW91c2Vkb3duIixhKTskYyhCLCJrZXl1cCIsYSk7JGMoQiwic3VibWl0IixiKTt2YXIgZj1IVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLnN1Ym1pdDtIVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLnN1Ym1pdD1mdW5jdGlvbigpe2QodGhpcyk7Zi5jYWxsKHRoaXMpfTtlLmluaXQ9ITB9fWZ1bmN0aW9uIEhxKGEsYixjLGQsZSl7dmFyIGY9e2NhbGxiYWNrOmEsZG9tYWluczpiLGZyYWdtZW50OmM9PT0yLHBsYWNlbWVudDpjLGZvcm1zOmQsc2FtZUhvc3Q6ZX07R3EoKS5kZWNvcmF0b3JzLnB1c2goZil9CmZ1bmN0aW9uIElxKGEsYixjKXtmb3IodmFyIGQ9R3EoKS5kZWNvcmF0b3JzLGU9e30sZj0wO2Y8ZC5sZW5ndGg7KytmKXt2YXIgZz1kW2ZdLGg7aWYoaD0hY3x8Zy5mb3JtcylhOnt2YXIgbD1nLmRvbWFpbnMsbj1hLHA9ISFnLnNhbWVIb3N0O2lmKGwmJihwfHxuIT09Qi5sb2NhdGlvbi5ob3N0bmFtZSkpZm9yKHZhciBxPTA7cTxsLmxlbmd0aDtxKyspaWYobFtxXWluc3RhbmNlb2YgUmVnRXhwKXtpZihsW3FdLnRlc3Qobikpe2g9ITA7YnJlYWsgYX19ZWxzZSBpZihuLmluZGV4T2YobFtxXSk+PTB8fHAmJmxbcV0uaW5kZXhPZihuKT49MCl7aD0hMDticmVhayBhfWg9ITF9aWYoaCl7dmFyIHI9Zy5wbGFjZW1lbnQ7cj09PXZvaWQgMCYmKHI9Zy5mcmFnbWVudD8yOjEpO3I9PT1iJiZRYihlLGcuY2FsbGJhY2soKSl9fXJldHVybiBlfQpmdW5jdGlvbiBHcSgpe3ZhciBhPU1jKCJnb29nbGVfdGFnX2RhdGEiLHt9KSxiPWEuZ2w7YiYmYi5kZWNvcmF0b3JzfHwoYj17ZGVjb3JhdG9yczpbXX0sYS5nbD1iKTtyZXR1cm4gYn07dmFyIEpxPS8oLio/KVwqKC4qPylcKiguKikvLEtxPS9eaHR0cHM/OlwvXC8oW15cL10qPylcLj9jZG5cLmFtcHByb2plY3RcLm9yZ1wvPyguKikvLExxPS9eKD86d3d3XC58bVwufGFtcFwuKSsvLE1xPS8oW14/I10rKShcP1teI10qKT8oIy4qKT8vO2Z1bmN0aW9uIE5xKGEpe3ZhciBiPU1xLmV4ZWMoYSk7aWYoYilyZXR1cm57aGs6YlsxXSxxdWVyeTpiWzJdLGZyYWdtZW50OmJbM119fWZ1bmN0aW9uIE9xKGEpe3JldHVybiBuZXcgUmVnRXhwKCIoLio/KShefCYpIithKyI9KFteJl0qKSY/KC4qKSIpfQpmdW5jdGlvbiBQcShhLGIpe3ZhciBjPVtIYy51c2VyQWdlbnQsKG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpLEhjLnVzZXJMYW5ndWFnZXx8SGMubGFuZ3VhZ2UsTWF0aC5mbG9vcihOYigpLzYwLzFFMyktKGI9PT12b2lkIDA/MDpiKSxhXS5qb2luKCIqIiksZDtpZighKGQ9Q3EpKXtmb3IodmFyIGU9QXJyYXkoMjU2KSxmPTA7ZjwyNTY7ZisrKXtmb3IodmFyIGc9ZixoPTA7aDw4O2grKylnPWcmMT9nPj4+MV4zOTg4MjkyMzg0Omc+Pj4xO2VbZl09Z31kPWV9Q3E9ZDtmb3IodmFyIGw9NDI5NDk2NzI5NSxuPTA7bjxjLmxlbmd0aDtuKyspbD1sPj4+OF5DcVsobF5jLmNoYXJDb2RlQXQobikpJjI1NV07cmV0dXJuKChsXi0xKT4+PjApLnRvU3RyaW5nKDM2KX0KZnVuY3Rpb24gUXEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPVJqKEEubG9jYXRpb24uaHJlZiksZD1jLnNlYXJjaC5yZXBsYWNlKCI/IiwiIiksZT1JaihkLCJfZ2wiLCExLCEwKXx8IiI7Yi5xdWVyeT1ScShlKXx8e307dmFyIGY9TGooYywiZnJhZ21lbnQiKSxnO3ZhciBoPS0xO2lmKFNiKGYsIl9nbD0iKSloPTQ7ZWxzZXt2YXIgbD1mLmluZGV4T2YoIiZfZ2w9Iik7bD4wJiYoaD1sKzMrMil9aWYoaDwwKWc9dm9pZCAwO2Vsc2V7dmFyIG49Zi5pbmRleE9mKCImIixoKTtnPW48MD9mLnN1YnN0cmluZyhoKTpmLnN1YnN0cmluZyhoLG4pfWIuZnJhZ21lbnQ9UnEoZ3x8IiIpfHx7fTthJiZTcShjLGQsZil9fWZ1bmN0aW9uIFRxKGEsYil7dmFyIGM9T3EoYSkuZXhlYyhiKSxkPWI7aWYoYyl7dmFyIGU9Y1syXSxmPWNbNF07ZD1jWzFdO2YmJihkPWQrZStmKX1yZXR1cm4gZH0KZnVuY3Rpb24gU3EoYSxiLGMpe2Z1bmN0aW9uIGQoZyxoKXt2YXIgbD1UcSgiX2dsIixnKTtsLmxlbmd0aCYmKGw9aCtsKTtyZXR1cm4gbH1pZihHYyYmR2MucmVwbGFjZVN0YXRlKXt2YXIgZT1PcSgiX2dsIik7aWYoZS50ZXN0KGIpfHxlLnRlc3QoYykpe3ZhciBmPUxqKGEsInBhdGgiKTtiPWQoYiwiPyIpO2M9ZChjLCIjIik7R2MucmVwbGFjZVN0YXRlKHt9LCIiLCIiK2YrYitjKX19fWZ1bmN0aW9uIFVxKGEsYil7dmFyIGM9UXEoISFiKSxkPUdxKCk7ZC5kYXRhfHwoZC5kYXRhPXtxdWVyeTp7fSxmcmFnbWVudDp7fX0sYyhkLmRhdGEpKTt2YXIgZT17fSxmPWQuZGF0YTtmJiYoUWIoZSxmLnF1ZXJ5KSxhJiZRYihlLGYuZnJhZ21lbnQpKTtyZXR1cm4gZX0KdmFyIFJxPWZ1bmN0aW9uKGEpe3RyeXt2YXIgYj1WcShhLDMpO2lmKGIhPT12b2lkIDApe2Zvcih2YXIgYz17fSxkPWI/Yi5zcGxpdCgiKiIpOltdLGU9MDtlKzE8ZC5sZW5ndGg7ZSs9Mil7dmFyIGY9ZFtlXSxnPXFiKGRbZSsxXSk7Y1tmXT1nfXNiKCJUQUdHSU5HIiw2KTtyZXR1cm4gY319Y2F0Y2goaCl7c2IoIlRBR0dJTkciLDgpfX07ZnVuY3Rpb24gVnEoYSxiKXtpZihhKXt2YXIgYzthOntmb3IodmFyIGQ9YSxlPTA7ZTwzOysrZSl7dmFyIGY9SnEuZXhlYyhkKTtpZihmKXtjPWY7YnJlYWsgYX1kPUtqKGQpfHwiIn1jPXZvaWQgMH12YXIgZz1jO2lmKGcmJmdbMV09PT0iMSIpe3ZhciBoPWdbM10sbDthOntmb3IodmFyIG49Z1syXSxwPTA7cDxiOysrcClpZihuPT09UHEoaCxwKSl7bD0hMDticmVhayBhfWw9ITF9aWYobClyZXR1cm4gaDtzYigiVEFHR0lORyIsNyl9fX0KZnVuY3Rpb24gV3EoYSxiLGMsZCxlKXtmdW5jdGlvbiBmKHApe3A9VHEoYSxwKTt2YXIgcT1wLmNoYXJBdChwLmxlbmd0aC0xKTtwJiZxIT09IiYiJiYocCs9IiYiKTtyZXR1cm4gcCtufWQ9ZD09PXZvaWQgMD8hMTpkO2U9ZT09PXZvaWQgMD8hMTplO3ZhciBnPU5xKGMpO2lmKCFnKXJldHVybiIiO3ZhciBoPWcucXVlcnl8fCIiLGw9Zy5mcmFnbWVudHx8IiIsbj1hKyI9IitiO2Q/bC5zdWJzdHJpbmcoMSkubGVuZ3RoIT09MCYmZXx8KGw9IiMiK2YobC5zdWJzdHJpbmcoMSkpKTpoPSI/IitmKGguc3Vic3RyaW5nKDEpKTtyZXR1cm4iIitnLmhrK2grbH0KZnVuY3Rpb24gWHEoYSxiKXtmdW5jdGlvbiBjKG4scCxxKXt2YXIgcjthOntmb3IodmFyIHQgaW4gbilpZihuLmhhc093blByb3BlcnR5KHQpKXtyPSEwO2JyZWFrIGF9cj0hMX1pZihyKXt2YXIgdSx2PVtdLHg7Zm9yKHggaW4gbilpZihuLmhhc093blByb3BlcnR5KHgpKXt2YXIgeT1uW3hdO3khPT12b2lkIDAmJnk9PT15JiZ5IT09bnVsbCYmeS50b1N0cmluZygpIT09IltvYmplY3QgT2JqZWN0XSImJih2LnB1c2goeCksdi5wdXNoKHBiKFN0cmluZyh5KSkpKX12YXIgej12LmpvaW4oIioiKTt1PVsiMSIsUHEoeiksel0uam9pbigiKiIpO2Q/KFlmKDMpfHxZZigxKXx8IXApJiZZcSgiX2dsIix1LGEscCxxKTpacSgiX2dsIix1LGEscCxxKX19dmFyIGQ9KGEudGFnTmFtZXx8IiIpLnRvVXBwZXJDYXNlKCk9PT0iRk9STSIsZT1JcShiLDEsZCksZj1JcShiLDIsZCksZz1JcShiLDQsZCksaD1JcShiLDMsZCk7YyhlLCExLCExKTtjKGYsITAsITEpO1lmKDEpJiZjKGcsITAsITApO2Zvcih2YXIgbCBpbiBoKWguaGFzT3duUHJvcGVydHkobCkmJgokcShsLGhbbF0sYSl9ZnVuY3Rpb24gJHEoYSxiLGMpe2MudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImEiP1pxKGEsYixjKTpjLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJmb3JtIiYmWXEoYSxiLGMpfWZ1bmN0aW9uIFpxKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwPyExOmQ7ZT1lPT09dm9pZCAwPyExOmU7dmFyIGY7aWYoZj1jLmhyZWYpe3ZhciBnO2lmKCEoZz1kKSl7dmFyIGg9QS5sb2NhdGlvbi5ocmVmLGw9TnEoYy5ocmVmKSxuPU5xKGgpO2c9IShsJiZuJiZsLmhrPT09bi5oayYmbC5xdWVyeT09PW4ucXVlcnkmJmwuZnJhZ21lbnQpfWY9Z31pZihmKXt2YXIgcD1XcShhLGIsYy5ocmVmLGQsZSk7dmMudGVzdChwKSYmKGMuaHJlZj1wKX19CmZ1bmN0aW9uIFlxKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwPyExOmQ7ZT1lPT09dm9pZCAwPyExOmU7aWYoYyl7dmFyIGY9Yy5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpfHwiIjtpZihmKXt2YXIgZz0oYy5tZXRob2R8fCIiKS50b0xvd2VyQ2FzZSgpO2lmKGchPT0iZ2V0Inx8ZCl7aWYoZz09PSJnZXQifHxnPT09InBvc3QiKXt2YXIgaD1XcShhLGIsZixkLGUpO3ZjLnRlc3QoaCkmJihjLmFjdGlvbj1oKX19ZWxzZXtmb3IodmFyIGw9Yy5jaGlsZE5vZGVzfHxbXSxuPSExLHA9MDtwPGwubGVuZ3RoO3ArKyl7dmFyIHE9bFtwXTtpZihxLm5hbWU9PT1hKXtxLnNldEF0dHJpYnV0ZSgidmFsdWUiLGIpO249ITA7YnJlYWt9fWlmKCFuKXt2YXIgcj1CLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7ci5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKTtyLnNldEF0dHJpYnV0ZSgibmFtZSIsYSk7ci5zZXRBdHRyaWJ1dGUoInZhbHVlIixiKTtjLmFwcGVuZENoaWxkKHIpfX19fX0KZnVuY3Rpb24gRXEoYSl7dHJ5e3ZhciBiO2E6e2Zvcih2YXIgYz1hLGQ9MTAwO2MmJmQ+MDspe2lmKGMuaHJlZiYmYy5ub2RlTmFtZS5tYXRjaCgvXmEoPzpyZWEpPyQvaSkpe2I9YzticmVhayBhfWM9Yy5wYXJlbnROb2RlO2QtLX1iPW51bGx9dmFyIGU9YjtpZihlKXt2YXIgZj1lLnByb3RvY29sO2YhPT0iaHR0cDoiJiZmIT09Imh0dHBzOiJ8fFhxKGUsZS5ob3N0bmFtZSl9fWNhdGNoKGcpe319ZnVuY3Rpb24gRnEoYSl7dHJ5e3ZhciBiPWEuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTtpZihiKXt2YXIgYz1MaihSaihiKSwiaG9zdCIpO1hxKGEsYyl9fWNhdGNoKGQpe319ZnVuY3Rpb24gYXIoYSxiLGMsZCl7RHEoKTt2YXIgZT1jPT09ImZyYWdtZW50Ij8yOjE7ZD0hIWQ7SHEoYSxiLGUsZCwhMSk7ZT09PTImJnNiKCJUQUdHSU5HIiwyMyk7ZCYmc2IoIlRBR0dJTkciLDI0KX0KZnVuY3Rpb24gYnIoYSxiKXtEcSgpO0hxKGEsW05qKEEubG9jYXRpb24sImhvc3QiLCEwKV0sYiwhMCwhMCl9ZnVuY3Rpb24gY3IoKXt2YXIgYT1CLmxvY2F0aW9uLmhvc3RuYW1lLGI9S3EuZXhlYyhCLnJlZmVycmVyKTtpZighYilyZXR1cm4hMTt2YXIgYz1iWzJdLGQ9YlsxXSxlPSIiO2lmKGMpe3ZhciBmPWMuc3BsaXQoIi8iKSxnPWZbMV07ZT1nPT09InMiP0tqKGZbMl0pfHwiIjpLaihnKXx8IiJ9ZWxzZSBpZihkKXtpZihkLmluZGV4T2YoInhuLS0iKT09PTApcmV0dXJuITE7ZT1kLnJlcGxhY2UoLy0vZywiLiIpLnJlcGxhY2UoL1wuXC4vZywiLSIpfXZhciBoPWEucmVwbGFjZShMcSwiIiksbD1lLnJlcGxhY2UoTHEsIiIpO3JldHVybiBoPT09bHx8VGIoaCwiLiIrbCl9ZnVuY3Rpb24gZHIoYSxiKXtyZXR1cm4gYT09PSExPyExOmF8fGJ8fGNyKCl9O3ZhciBlcj1mdW5jdGlvbihhKXt0aGlzLnZhbHVlPTA7dGhpcy52YWx1ZT1hPT09dm9pZCAwPzA6YX07ZXIucHJvdG90eXBlLnNldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZXw9MTw8YX07dmFyIGZyPWZ1bmN0aW9uKGEsYil7Yjw9MHx8KGEudmFsdWV8PTE8PGItMSl9O2VyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX07ZXIucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKGEpe3RoaXMudmFsdWUmPX4oMTw8YSl9O2VyLnByb3RvdHlwZS5jbGVhckFsbD1mdW5jdGlvbigpe3RoaXMudmFsdWU9MH07ZXIucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZT09PWEudmFsdWV9O2Z1bmN0aW9uIGdyKGEpe2lmKGEpdHJ5e3JldHVybiBuZXcgVWludDhBcnJheShhdG9iKGEucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikpLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuY2hhckNvZGVBdCgwKX0pKX1jYXRjaChiKXt9fWZ1bmN0aW9uIGhyKGEsYil7dmFyIGM9MCxkPTAsZSxmPWI7ZG97aWYoZj49YS5sZW5ndGgpcmV0dXJuO2U9YVtmKytdO2N8PShlJjEyNyk8PGQ7ZCs9N313aGlsZShlJjEyOCk7cmV0dXJuW2MsZl19O2Z1bmN0aW9uIGlyKCl7dmFyIGE9U3RyaW5nLGI9QS5sb2NhdGlvbi5ob3N0bmFtZSxjPUEubG9jYXRpb24ucGF0aG5hbWUsZD1iPWJjKGIpO2Quc3BsaXQoIi4iKS5sZW5ndGg+MiYmKGQ9ZC5yZXBsYWNlKC9eKHd3d1swLTldKnx3ZWJ8ZnRwfHdhcHxob21lfG18d3xhbXB8bW9iaWxlKVwuLywiIikpO2I9ZDtjPWJjKGMpO3ZhciBlPWMuc3BsaXQoIjsiKVswXTtlPWUucmVwbGFjZSgvXC8oYXJ8c2xwfHdlYnxpbmRleCk/XC8/JC8sIiIpO3JldHVybiBhKG5nKCgiIitiK2UpLnRvTG93ZXJDYXNlKCkpKX07dmFyIGpyPVsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdO2Z1bmN0aW9uIGtyKGEsYil7aWYoIWEpcmV0dXJuIHNiKCJUQUdHSU5HIiwzMiksMTA7aWYoYj09PW51bGx8fGI9PT12b2lkIDB8fGI9PT0iIilyZXR1cm4gc2IoIlRBR0dJTkciLDMzKSwxMTt2YXIgYz1scighMSk7aWYoYy5lcnJvciE9PTApcmV0dXJuIHNiKCJUQUdHSU5HIiwzNCksYy5lcnJvcjtpZighYy52YWx1ZSlyZXR1cm4gc2IoIlRBR0dJTkciLDM1KSwyO2MudmFsdWVbYV09Yjt2YXIgZD1tcihjKTtkIT09MCYmc2IoIlRBR0dJTkciLDM2KTtyZXR1cm4gZH0KZnVuY3Rpb24gbnIoYSl7aWYoIWEpcmV0dXJuIHNiKCJUQUdHSU5HIiwyNykse2Vycm9yOjEwfTt2YXIgYj1scigpO2lmKGIuZXJyb3IhPT0wKXJldHVybiBzYigiVEFHR0lORyIsMjkpLGI7aWYoIWIudmFsdWUpcmV0dXJuIHNiKCJUQUdHSU5HIiwzMCkse2Vycm9yOjJ9O2lmKCEoYSBpbiBiLnZhbHVlKSlyZXR1cm4gc2IoIlRBR0dJTkciLDMxKSx7dmFsdWU6dm9pZCAwLGVycm9yOjE1fTt2YXIgYz1iLnZhbHVlW2FdO3JldHVybiBjPT09bnVsbHx8Yz09PXZvaWQgMHx8Yz09PSIiPyhzYigiVEFHR0lORyIsMjgpLHt2YWx1ZTp2b2lkIDAsZXJyb3I6MTF9KTp7dmFsdWU6YyxlcnJvcjowfX0KZnVuY3Rpb24gb3IoYSl7aWYoYSl7dmFyIGI9bHIoITEpO2IuZXJyb3IhPT0wP3NiKCJUQUdHSU5HIiwzOCk6Yi52YWx1ZT9hIGluIGIudmFsdWU/KGRlbGV0ZSBiLnZhbHVlW2FdLG1yKGIpIT09MCYmc2IoIlRBR0dJTkciLDQxKSk6c2IoIlRBR0dJTkciLDQwKTpzYigiVEFHR0lORyIsMzkpfWVsc2Ugc2IoIlRBR0dJTkciLDM3KX0KZnVuY3Rpb24gbHIoYSl7YT1hPT09dm9pZCAwPyEwOmE7aWYoIUJsKGpyKSlyZXR1cm4gc2IoIlRBR0dJTkciLDQzKSx7ZXJyb3I6M307dHJ5e2lmKCFBLmxvY2FsU3RvcmFnZSlyZXR1cm4gc2IoIlRBR0dJTkciLDQ0KSx7ZXJyb3I6MX19Y2F0Y2goZil7cmV0dXJuIHNiKCJUQUdHSU5HIiw0NSkse2Vycm9yOjE0fX12YXIgYj17c2NoZW1hOiJnY2wiLHZlcnNpb246MX0sYz12b2lkIDA7dHJ5e2M9QS5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiX2djbF9scyIpfWNhdGNoKGYpe3JldHVybiBzYigiVEFHR0lORyIsNDYpLHtlcnJvcjoxM319dHJ5e2lmKGMpe3ZhciBkPUpTT04ucGFyc2UoYyk7aWYoZCYmdHlwZW9mIGQ9PT0ib2JqZWN0IiliPWQ7ZWxzZSByZXR1cm4gc2IoIlRBR0dJTkciLDQ3KSx7ZXJyb3I6MTJ9fX1jYXRjaChmKXtyZXR1cm4gc2IoIlRBR0dJTkciLDQ4KSx7ZXJyb3I6OH19aWYoYi5zY2hlbWEhPT0iZ2NsIilyZXR1cm4gc2IoIlRBR0dJTkciLDQ5KSx7ZXJyb3I6NH07CmlmKGIudmVyc2lvbiE9PTEpcmV0dXJuIHNiKCJUQUdHSU5HIiw1MCkse2Vycm9yOjV9O3RyeXt2YXIgZT1wcihiKTthJiZlJiZtcih7dmFsdWU6YixlcnJvcjowfSl9Y2F0Y2goZil7cmV0dXJuIHNiKCJUQUdHSU5HIiw0OCkse2Vycm9yOjh9fXJldHVybnt2YWx1ZTpiLGVycm9yOjB9fQpmdW5jdGlvbiBwcihhKXtpZighYXx8dHlwZW9mIGEhPT0ib2JqZWN0IilyZXR1cm4hMTtpZigiZXhwaXJlcyJpbiBhJiYidmFsdWUiaW4gYSl7dmFyIGI7dHlwZW9mIGEuZXhwaXJlcz09PSJudW1iZXIiP2I9YS5leHBpcmVzOmI9dHlwZW9mIGEuZXhwaXJlcz09PSJzdHJpbmciP051bWJlcihhLmV4cGlyZXMpOk5hTjtpZihpc05hTihiKXx8IShEYXRlLm5vdygpPD1iKSlyZXR1cm4gYS52YWx1ZT1udWxsLGEuZXJyb3I9OSxzYigiVEFHR0lORyIsNTQpLCEwfWVsc2V7Zm9yKHZhciBjPSExLGQ9bShPYmplY3Qua2V5cyhhKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpYz1wcihhW2UudmFsdWVdKXx8YztyZXR1cm4gY31yZXR1cm4hMX0KZnVuY3Rpb24gbXIoYSl7aWYoYS5lcnJvcilyZXR1cm4gYS5lcnJvcjtpZighYS52YWx1ZSlyZXR1cm4gc2IoIlRBR0dJTkciLDQyKSwyO3ZhciBiPWEudmFsdWUsYzt0cnl7Yz1KU09OLnN0cmluZ2lmeShiKX1jYXRjaChkKXtyZXR1cm4gc2IoIlRBR0dJTkciLDUyKSw2fXRyeXtBLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJfZ2NsX2xzIixjKX1jYXRjaChkKXtyZXR1cm4gc2IoIlRBR0dJTkciLDUzKSw3fXJldHVybiAwfTt2YXIgcXI9e30scnI9KHFyLmdjbGlkPSEwLHFyLmRjbGlkPSEwLHFyLmdicmFpZD0hMCxxci53YnJhaWQ9ITAscXIpLHNyPS9eXHcrJC8sdHI9L15bXHctXSskLyx1cj17fSx2cj0odXIuYXc9IkZQR0NMQVciLHVyKSx3cj17fSx4cj0od3IuYWc9Il9hZyIsd3IuZ2I9Il9nYiIsd3IuYXc9Il9hdyIsd3IuZGM9Il9kYyIsd3IuZ2Y9Il9nZiIsd3IuaGE9Il9oYSIsd3IuZ3A9Il9ncCIsd3IuZ3M9Il9ncyIsd3IpLHlyPS9eKD86d3d3XC4pP2dvb2dsZSg/OlwuY29tPyk/KD86XC5bYS16XXsyfXQ/KT8kLyx6cj0vXnd3d1wuZ29vZ2xlYWRzZXJ2aWNlc1wuY29tJC87ZnVuY3Rpb24gQXIoKXtyZXR1cm5bImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXX1mdW5jdGlvbiBCcihhKXtyZXR1cm4hWWYoNSl8fEJsKGEpfWZ1bmN0aW9uIENyKGEsYil7ZnVuY3Rpb24gYygpe3ZhciBkPUJyKGIpO2QmJmEoKTtyZXR1cm4gZH1IbChmdW5jdGlvbigpe2MoKXx8SWwoYyxiKX0sYil9CmZ1bmN0aW9uIERyKGEpe3JldHVybiBFcihhKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2NsaWR9KX1mdW5jdGlvbiBGcihhKXtyZXR1cm4gR3IoYSkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiLmdjbGlkfSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmdjbGlkfSl9ZnVuY3Rpb24gR3IoYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1IcihhLnByZWZpeCksZD1JcigiZ2IiLGMpLGU9SXIoImFnIixjKTtpZighZXx8IWQpcmV0dXJuW107dmFyIGY9ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uemc9bDtyZXR1cm4gbn19LGc9RXIoZCxiKS5tYXAoZigiZ2IiKSksaD1KcihlKS5tYXAoZigiYWciKSk7cmV0dXJuIGcuY29uY2F0KGgpLnNvcnQoZnVuY3Rpb24obCxuKXtyZXR1cm4gbi50aW1lc3RhbXAtbC50aW1lc3RhbXB9KX0KZnVuY3Rpb24gS3IoYSxiLGMsZCxlKXt2YXIgZj1DYihhLGZ1bmN0aW9uKGcpe3JldHVybiBnLmdjbGlkPT09Yn0pO2Y/KGYudGltZXN0YW1wPGMmJihmLnRpbWVzdGFtcD1jLGYub2Q9ZSksZi5sYWJlbHM9THIoZi5sYWJlbHN8fFtdLGR8fFtdKSk6YS5wdXNoKHt2ZXJzaW9uOiIyIixnY2xpZDpiLHRpbWVzdGFtcDpjLGxhYmVsczpkLG9kOmV9KX1mdW5jdGlvbiBNcihhKXtmb3IodmFyIGI9d3EoYSw1KXx8W10sYz1bXSxkPW0oYiksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWUsZz1mLGg9TnIoZik7aCYmS3IoYyxnLmssaCxnLmJ8fFtdLGYudSl9cmV0dXJuIGMuc29ydChmdW5jdGlvbihsLG4pe3JldHVybiBuLnRpbWVzdGFtcC1sLnRpbWVzdGFtcH0pfQpmdW5jdGlvbiBFcihhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPVtdO09yKGMsYSwxKTtpZihiKWlmKFRiKGEsIl9hdyIpKXt2YXIgZD1QcigpO2QmJihkLm9kPXZvaWQgMCxkLm9hPWQub2F8fFsyXSxRcihjLGQpKTtPcihjLCJnY2xfYXciLDIpfWVsc2UgVGIoYSwiX2diIikmJllmKDYpJiZPcihjLCJnY2xfZ2IiLDIpO2Muc29ydChmdW5jdGlvbihlLGYpe3JldHVybiBmLnRpbWVzdGFtcC1lLnRpbWVzdGFtcH0pO3JldHVybiBScihjKX1mdW5jdGlvbiBTcihhLGIpe2Zvcih2YXIgYz1bXSxkPW0oYSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7Yy5pbmNsdWRlcyhmKXx8Yy5wdXNoKGYpfWZvcih2YXIgZz1tKGIpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlO2MuaW5jbHVkZXMobCl8fGMucHVzaChsKX1yZXR1cm4gY30KZnVuY3Rpb24gUXIoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO2Zvcih2YXIgZCxlLGY9bShhKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZTtpZihoLmdjbGlkPT09Yi5nY2xpZCl7ZD1oO2JyZWFrfWgucWEmJmIucWEmJmgucWEuZXF1YWxzKGIucWEpJiYoZT1oKX1pZihkKXt2YXIgbCxuLHA9KGw9ZC5xYSkhPW51bGw/bDpuZXcgZXIscT0obj1iLnFhKSE9bnVsbD9uOm5ldyBlcjtwLnZhbHVlfD1xLnZhbHVlO2QucWE9cDtkLnRpbWVzdGFtcDxiLnRpbWVzdGFtcCYmKGQudGltZXN0YW1wPWIudGltZXN0YW1wLGQub2Q9Yi5vZCk7ZC5sYWJlbHM9U3IoZC5sYWJlbHN8fFtdLGIubGFiZWxzfHxbXSk7ZC5vYT1TcihkLm9hfHxbXSxiLm9hfHxbXSl9ZWxzZSBjJiZlP25hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3QsZSxiKTphLnB1c2goYil9CmZ1bmN0aW9uIFRyKGEpe2lmKCFhKXJldHVybiBuZXcgZXI7dmFyIGI9bmV3IGVyO2lmKGE9PT0xKXJldHVybiBmcihiLDIpLGZyKGIsMyksYjtmcihiLGEpO3JldHVybiBifQpmdW5jdGlvbiBQcigpe3ZhciBhPW5yKCJnY2xpZCIpO2lmKCFhfHxhLmVycm9yfHwhYS52YWx1ZXx8dHlwZW9mIGEudmFsdWUhPT0ib2JqZWN0IilyZXR1cm4gbnVsbDt2YXIgYj1hLnZhbHVlO3RyeXtpZighKCJ2YWx1ZSJpbiBiJiZiLnZhbHVlKXx8dHlwZW9mIGIudmFsdWUhPT0ib2JqZWN0IilyZXR1cm4gbnVsbDt2YXIgYz1iLnZhbHVlLGQ9Yy52YWx1ZTtpZighZHx8IWQubWF0Y2godHIpKXJldHVybiBudWxsO3ZhciBlPWMubGlua0RlY29yYXRpb25Tb3VyY2UsZj1jLmxpbmtEZWNvcmF0aW9uU291cmNlcyxnPW5ldyBlcjt0eXBlb2YgZT09PSJudW1iZXIiP2c9VHIoZSk6dHlwZW9mIGY9PT0ibnVtYmVyIiYmKGcudmFsdWU9Zik7cmV0dXJue3ZlcnNpb246IiIsZ2NsaWQ6ZCx0aW1lc3RhbXA6TnVtYmVyKGMuY3JlYXRpb25UaW1lTXMpfHwwLGxhYmVsczpbXSxxYTpnLG9hOlsyXX19Y2F0Y2goaCl7cmV0dXJuIG51bGx9fQpmdW5jdGlvbiBVcihhKXt2YXIgYj1ucihhKTtpZihiLmVycm9yIT09MClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGIudmFsdWUucmVkdWNlKGZ1bmN0aW9uKGMsZCl7aWYoIWQudmFsdWV8fHR5cGVvZiBkLnZhbHVlIT09Im9iamVjdCIpcmV0dXJuIGM7dmFyIGU9ZC52YWx1ZSxmPWUudmFsdWU7aWYoIWZ8fCFmLm1hdGNoKHRyKSlyZXR1cm4gYzt2YXIgZz1uZXcgZXIsaD1lLmxpbmtEZWNvcmF0aW9uU291cmNlczt0eXBlb2YgaD09PSJudW1iZXIiJiYoZy52YWx1ZT1oKTt2YXIgbDtjLnB1c2goe3ZlcnNpb246IiIsZ2NsaWQ6Zix0aW1lc3RhbXA6TnVtYmVyKGUuY3JlYXRpb25UaW1lTXMpfHwwLGV4cGlyZXM6TnVtYmVyKGQuZXhwaXJlcyl8fDAsbGFiZWxzOihsPWUubGFiZWxzKSE9bnVsbD9sOltdLHFhOmcsb2E6WzJdfSk7cmV0dXJuIGN9LFtdKX1jYXRjaChjKXtyZXR1cm4gbnVsbH19CmZ1bmN0aW9uIE9yKGEsYixjKXtpZihjPT09MSlmb3IodmFyIGQ9Y3EoYixCLmNvb2tpZSx2b2lkIDAsQXIoKSksZT1tKGQpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1WcihmLnZhbHVlLnNwbGl0KCIuIikpLGg9Zy5sZW5ndGg9PT0wP251bGw6e3ZlcnNpb246Z1swXSxnY2xpZDpnWzJdLHRpbWVzdGFtcDooTnVtYmVyKGdbMV0pfHwwKSoxRTMsbGFiZWxzOmcuc2xpY2UoMyl9O2ghPW51bGwmJihoLm9kPXZvaWQgMCxoLnFhPW5ldyBlcixoLm9hPVtjXSxRcihhLGgpKX1lbHNlIGlmKGM9PT0yKXt2YXIgbD1VcihiKTtpZihsKWZvcih2YXIgbj1tKGwpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKXt2YXIgcT1wLnZhbHVlO3Eub2Q9dm9pZCAwO3Eub2E9cS5vYTtRcihhLHEpfX19CmZ1bmN0aW9uIFpyKGEpe3ZhciBiPUVyKGEpLGM9VXIoImdjbF9kYyIpO2lmKGMpZm9yKHZhciBkPW0oYyksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7Zi5vZD12b2lkIDA7Zi5vYT1mLm9hfHxbMl07UXIoYixmKX1iLnNvcnQoZnVuY3Rpb24oZyxoKXt2YXIgbD1nLm9hJiZnLm9hLmluY2x1ZGVzKDEpLG49aC5vYSYmaC5vYS5pbmNsdWRlcygxKTtyZXR1cm4gbCYmIW4/LTE6IWwmJm4/MTpoLnRpbWVzdGFtcC1nLnRpbWVzdGFtcH0pO3JldHVybiBScihiKX1mdW5jdGlvbiBKcihhKXtyZXR1cm4gTXIoYSkubWFwKGZ1bmN0aW9uKGIpe2IucWE9bmV3IGVyO2Iub2E9WzFdO3JldHVybiBifSl9CmZ1bmN0aW9uIExyKGEsYil7aWYoIWEubGVuZ3RoKXJldHVybiBiO2lmKCFiLmxlbmd0aClyZXR1cm4gYTt2YXIgYz17fTtyZXR1cm4gYS5jb25jYXQoYikuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBjLmhhc093blByb3BlcnR5KGQpPyExOmNbZF09ITB9KX1mdW5jdGlvbiBIcihhKXtyZXR1cm4gYSYmdHlwZW9mIGE9PT0ic3RyaW5nIiYmYS5tYXRjaChzcik/YToiX2djbCJ9ZnVuY3Rpb24gJHIoYSxiKXtpZihhKXt2YXIgYz17dmFsdWU6YSxxYTpuZXcgZXJ9O2ZyKGMucWEsYik7cmV0dXJuIGN9fQpmdW5jdGlvbiBhcyhhLGIsYyl7dmFyIGQ9UmooYSksZT1MaihkLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xzcmMiKSxmPSRyKExqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbGlkIiksYz80OjIpO2lmKGImJighZnx8IWUpKXt2YXIgZz1kLmhhc2gucmVwbGFjZSgiIyIsIiIpO2Z8fChmPSRyKElqKGcsImdjbGlkIiwhMSksMykpO2V8fChlPUlqKGcsImdjbHNyYyIsITEpKX1yZXR1cm4gZiYmKGU9PT12b2lkIDB8fGU9PT0iYXcifHxlPT09ImF3LmRzInx8WWYoOCkmJmU9PT0iYXcuZHYiKT9bZl06W119CmZ1bmN0aW9uIGJzKGEsYil7dmFyIGM9UmooYSksZD1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xpZCIpLGU9TGooYywicXVlcnkiLCExLHZvaWQgMCwiZ2Nsc3JjIiksZj1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJ3YnJhaWQiKTtmPSRiKGYpO3ZhciBnPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsImdicmFpZCIpLGg9TGooYywicXVlcnkiLCExLHZvaWQgMCwiZ2FkX3NvdXJjZSIpLGw9TGooYywicXVlcnkiLCExLHZvaWQgMCwiZGNsaWQiKTtpZihiJiYhKGQmJmUmJmYmJmcpKXt2YXIgbj1jLmhhc2gucmVwbGFjZSgiIyIsIiIpO2Q9ZHx8SWoobiwiZ2NsaWQiLCExKTtlPWV8fElqKG4sImdjbHNyYyIsITEpO2Y9Znx8SWoobiwid2JyYWlkIiwhMSk7Zz1nfHxJaihuLCJnYnJhaWQiLCExKTtoPWh8fElqKG4sImdhZF9zb3VyY2UiLCExKX1yZXR1cm4gY3MoZCxlLGwsZixnLGgpfQpmdW5jdGlvbiBkcyhhLGIsYyl7dmFyIGQ9UmooYSksZT1MaihkLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xzcmMiKSxmPSRyKExqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbGlkIiksYz80OjIpLGc9JHIoTGooZCwicXVlcnkiLCExLHZvaWQgMCwiZGNsaWQiKSxjPzQ6Mik7aWYoYiYmKCFlfHwhZikpe3ZhciBoPWQuaGFzaC5yZXBsYWNlKCIjIiwiIik7Znx8KGY9JHIoSWooaCwiZ2NsaWQiLCExKSwzKSk7ZXx8KGU9SWooaCwiZ2Nsc3JjIiwhMSkpfXJldHVybiBmJiZlJiYoZT09PSJhdy5kcyJ8fGU9PT0iYXcuZHYifHxlPT09IjNwLmRzInx8ZT09PSJkcyIpP1tmXTpnP1tnXTpbXX1mdW5jdGlvbiBlcygpe3JldHVybiBicyhBLmxvY2F0aW9uLmhyZWYsITApfQpmdW5jdGlvbiBjcyhhLGIsYyxkLGUsZil7dmFyIGc9e30saD1mdW5jdGlvbihsLG4pe2dbbl18fChnW25dPVtdKTtnW25dLnB1c2gobCl9O2cuZ2NsaWQ9YTtnLmdjbHNyYz1iO2cuZGNsaWQ9YztpZihhIT09dm9pZCAwJiZhLm1hdGNoKHRyKSlzd2l0Y2goYil7Y2FzZSB2b2lkIDA6aChhLCJhdyIpO2JyZWFrO2Nhc2UgImF3LmRzIjpoKGEsImF3Iik7aChhLCJkYyIpO2JyZWFrO2Nhc2UgImF3LmR2IjpZZig4KSYmKGgoYSwiYXciKSxoKGEsImRjIikpO2JyZWFrO2Nhc2UgImRzIjpoKGEsImRjIik7YnJlYWs7Y2FzZSAiM3AuZHMiOmgoYSwiZGMiKTticmVhaztjYXNlICJnZiI6aChhLCJnZiIpO2JyZWFrO2Nhc2UgImhhIjpoKGEsImhhIil9YyYmaChjLCJkYyIpO2QhPT12b2lkIDAmJnRyLnRlc3QoZCkmJihnLndicmFpZD1kLGgoZCwiZ2IiKSk7ZSE9PXZvaWQgMCYmdHIudGVzdChlKSYmKGcuZ2JyYWlkPWUsaChlLCJhZyIpKTtmIT09dm9pZCAwJiZ0ci50ZXN0KGYpJiYoZy5nYWRfc291cmNlPQpmLGgoZiwiZ3MiKSk7cmV0dXJuIGd9ZnVuY3Rpb24gZnMoKXtmb3IodmFyIGE9ZXMoKSxiPSEwLGM9bShPYmplY3Qua2V5cyhhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpaWYoYVtkLnZhbHVlXSE9PXZvaWQgMCl7Yj0hMTticmVha31iJiYoYT1icyhBLmRvY3VtZW50LnJlZmVycmVyLCExKSxhLmdhZF9zb3VyY2U9dm9pZCAwKTtyZXR1cm4gYX1mdW5jdGlvbiBncyhhKXt2YXIgYj1mcygpO2hzKGIsITEsYSl9CmZ1bmN0aW9uIGlzKGEpe3ZhciBiPWFzKEEubG9jYXRpb24uaHJlZiwhMCwhMSk7Yi5sZW5ndGh8fChiPWFzKEEuZG9jdW1lbnQucmVmZXJyZXIsITEsITApKTthPWF8fHt9O2pzKGEpO2lmKGIubGVuZ3RoKXt2YXIgYz1iWzBdLGQ9TmIoKSxlPXVxKGEsZCwhMCksZj1BcigpLGc9ZnVuY3Rpb24oKXtCcihmKSYmZS5leHBpcmVzIT09dm9pZCAwJiZrcigiZ2NsaWQiLHt2YWx1ZTp7dmFsdWU6Yy52YWx1ZSxjcmVhdGlvblRpbWVNczpkLGxpbmtEZWNvcmF0aW9uU291cmNlczpjLnFhLmdldCgpfSxleHBpcmVzOk51bWJlcihlLmV4cGlyZXMpfSl9O0hsKGZ1bmN0aW9uKCl7ZygpO0JyKGYpfHxJbChnLGYpfSxmKX19CmZ1bmN0aW9uIGpzKGEpe3ZhciBiPUIucmVmZXJyZXI/TGooUmooQi5yZWZlcnJlciksImhvc3QiKToiIjtpZih5ci50ZXN0KGIpfHx6ci50ZXN0KGIpfHxrcygpKXt2YXIgYzthOntmb3IodmFyIGQ9UmooQS5sb2NhdGlvbi5ocmVmKSxlPUpqKExqKGQsInF1ZXJ5IikpLGY9bShPYmplY3Qua2V5cyhlKSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWcudmFsdWU7aWYoIXJyW2hdKXt2YXIgbD1lW2hdWzBdfHwiIixuO2lmKCFsfHxsLmxlbmd0aDw1MHx8bC5sZW5ndGg+MjAwKW49ITE7ZWxzZXt2YXIgcD1ncihsKSxxO2lmKHApYzp7dmFyIHI9cDtpZihyJiZyLmxlbmd0aCE9PTApe3ZhciB0PTA7dHJ5e2Zvcih2YXIgdT0xMDt0PHIubGVuZ3RoJiYhKHUtLTw9MCk7KXt2YXIgdj1ocihyLHQpO2lmKHY9PT12b2lkIDApYnJlYWs7dmFyIHg9bSh2KSx5PXgubmV4dCgpLnZhbHVlLHo9eC5uZXh0KCkudmFsdWUsQz15LEQ9eixJPUMmNztpZihDPj4zPT09MTYzODIpe2lmKEkhPT0KMClicmVhazt2YXIgRz1ocihyLEQpO2lmKEc9PT12b2lkIDApYnJlYWs7cT1tKEcpLm5leHQoKS52YWx1ZT09PTE7YnJlYWsgY312YXIgTjtkOnt2YXIgUz12b2lkIDAsVz1yLGVhPUQ7c3dpdGNoKEkpe2Nhc2UgMDpOPShTPWhyKFcsZWEpKT09bnVsbD92b2lkIDA6U1sxXTticmVhayBkO2Nhc2UgMTpOPWVhKzg7YnJlYWsgZDtjYXNlIDI6dmFyIGphPWhyKFcsZWEpO2lmKGphPT09dm9pZCAwKWJyZWFrO3ZhciBmYT1tKGphKSxzYT1mYS5uZXh0KCkudmFsdWU7Tj1mYS5uZXh0KCkudmFsdWUrc2E7YnJlYWsgZDtjYXNlIDU6Tj1lYSs0O2JyZWFrIGR9Tj12b2lkIDB9aWYoTj09PXZvaWQgMHx8Tj5yLmxlbmd0aHx8Tjw9dClicmVhazt0PU59fWNhdGNoKG1hKXt9fXE9ITF9ZWxzZSBxPSExO249cX1pZihuKXtjPWw7YnJlYWsgYX19fWM9dm9pZCAwfXZhciBkYT1jO2RhJiZscygiZ2NsX2F3IixkYSw3LGEpfX0KZnVuY3Rpb24gbHMoYSxiLGMsZCl7bXMoYSxbe3ZlcnNpb246IiIsZ2NsaWQ6Yix0aW1lc3RhbXA6TmIoKSxxYTpUcihjKX1dLGQpfQpmdW5jdGlvbiBtcyhhLGIsYyl7Yz1jfHx7fTt2YXIgZD1BcigpLGU9ZnVuY3Rpb24oKXtpZihCcihkKSYmYi5sZW5ndGg+MCl7dmFyIGY9VXIoYSl8fFtdO2IuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgaD11cShjLGcudGltZXN0YW1wLCEwKTtoLmV4cGlyZXMhPT12b2lkIDAmJlFyKGYse3ZlcnNpb246IiIsZ2NsaWQ6Zy5nY2xpZCx0aW1lc3RhbXA6Zy50aW1lc3RhbXAsZXhwaXJlczpOdW1iZXIoaC5leHBpcmVzKSxxYTpnLnFhLGxhYmVsczpnLmxhYmVsc30sITApfSk7Zi5sZW5ndGgmJmtyKGEsZi5tYXAoZnVuY3Rpb24oZyl7dmFyIGg9e3ZhbHVlOmcuZ2NsaWQsY3JlYXRpb25UaW1lTXM6Zy50aW1lc3RhbXAsbGlua0RlY29yYXRpb25Tb3VyY2VzOmcucWE/Zy5xYS5nZXQoKTowfSxsO2lmKChsPWcubGFiZWxzKT09bnVsbD8wOmwubGVuZ3RoKWgubGFiZWxzPWcubGFiZWxzO3JldHVybnt2YWx1ZTpoLGV4cGlyZXM6TnVtYmVyKGcuZXhwaXJlcyl9fSkpfX07SGwoZnVuY3Rpb24oKXtCcihkKT8KZSgpOklsKGUsZCl9LGQpfQpmdW5jdGlvbiBocyhhLGIsYyxkLGUpe2M9Y3x8e307ZT1lfHxbXTt2YXIgZj1IcihjLnByZWZpeCksZz1kfHxOYigpLGg9TWF0aC5yb3VuZChnLzFFMyksbD1BcigpLG49ITEscD0hMSxxPVlmKDkpLHI9ZnVuY3Rpb24oKXtpZihCcihsKSl7dmFyIHQ9dXEoYyxnLCEwKTt0Lk1jPWw7Zm9yKHZhciB1PWZ1bmN0aW9uKFcsZWEpe3ZhciBqYT1JcihXLGYpO2phJiYob3EoamEsZWEsdCksVyE9PSJnYiImJihuPSEwKSl9LHY9ZnVuY3Rpb24oVyl7dmFyIGVhPVsiR0NMIixoLFddO2UubGVuZ3RoPjAmJmVhLnB1c2goZS5qb2luKCIuIikpO3JldHVybiBlYS5qb2luKCIuIil9LHg9bShbImF3IiwiZGMiLCJnZiIsImhhIiwiZ3AiXSkseT14Lm5leHQoKTsheS5kb25lO3k9eC5uZXh0KCkpe3ZhciB6PXkudmFsdWU7YVt6XSYmdSh6LHYoYVt6XVswXSkpfWlmKCghbnx8cSkmJmEuZ2Ipe3ZhciBDPWEuZ2JbMF0sRD1JcigiZ2IiLGYpOyFiJiZFcihEKS5zb21lKGZ1bmN0aW9uKFcpe3JldHVybiBXLmdjbGlkPT09QyYmClcubGFiZWxzJiZXLmxhYmVscy5sZW5ndGg+MH0pfHx1KCJnYiIsdihDKSl9fWlmKCFwJiZhLmdicmFpZCYmQnIoImFkX3N0b3JhZ2UiKSYmKHA9ITAsIW58fHEpKXt2YXIgST1hLmdicmFpZCxHPUlyKCJhZyIsZik7aWYoYnx8IUpyKEcpLnNvbWUoZnVuY3Rpb24oVyl7cmV0dXJuIFcuZ2NsaWQ9PT1JJiZXLmxhYmVscyYmVy5sYWJlbHMubGVuZ3RoPjB9KSl7dmFyIE49e30sUz0oTi5rPUksTi5pPSIiK2gsTi5iPWUsTik7QXEoRyxTLDUsYyxnKX19bnMoYSxmLGcsYyl9O0hsKGZ1bmN0aW9uKCl7cigpO0JyKGwpfHxJbChyLGwpfSxsKX0KZnVuY3Rpb24gbnMoYSxiLGMsZCl7aWYoYS5nYWRfc291cmNlIT09dm9pZCAwJiZCcigiYWRfc3RvcmFnZSIpKXt2YXIgZT1xZCgpO2lmKGUhPT0iciImJmUhPT0iaCIpe3ZhciBmPWEuZ2FkX3NvdXJjZSxnPUlyKCJncyIsYik7aWYoZyl7dmFyIGg9TWF0aC5mbG9vcigoTmIoKS0ocGQoKXx8MCkpLzFFMyksbCxuPWlyKCkscD17fTtsPShwLms9ZixwLmk9IiIraCxwLnU9bixwKTtBcShnLGwsNSxkLGMpfX19fWZ1bmN0aW9uIG9zKGEsYixjKXtmb3IodmFyIGQ9d3EoYixjKSxlPTA7ZTxkLmxlbmd0aDsrK2UpaWYoTnIoZFtlXSk+YSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gcHMoYSl7dmFyIGI9cXMsYz1ycyhhLnByZWZpeCk7Q3IoZnVuY3Rpb24oKXtmb3IodmFyIGQ9SHIoYS5wcmVmaXgpLGU9bShiKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZSxoPWNbZ107aWYoaCl7dmFyIGw9TWF0aC5taW4oc3MoaCksTmIoKSksbj11cShhLGwsITApO24uTWM9QXIoKTt2YXIgcD1JcihnLGQpO3AmJm9xKHAsaCxuKX19dmFyIHE9VXEoITApO2hzKGNzKHEuZ2NsaWQscS5nY2xzcmMpLCExLGEpfSxBcigpKX0KZnVuY3Rpb24gcnMoYSl7dmFyIGI9VXEoITApLGM9SHIoYSksZD17fSxlO2ZvcihlIGluIHhyKWlmKHhyLmhhc093blByb3BlcnR5KGUpKXt2YXIgZj1lLGc9SXIoZixjKTtpZihnIT09dm9pZCAwKXt2YXIgaD1iW2ddO2lmKGgpe3ZhciBsPXNzKGgpLG47YTp7Zm9yKHZhciBwPU1hdGgubWluKGwsTmIoKSl8fE5iKCkscT1jcShnLEIuY29va2llLHZvaWQgMCxBcigpKSxyPTA7cjxxLmxlbmd0aDsrK3IpaWYoc3MocVtyXSk+cCl7bj0hMDticmVhayBhfW49ITF9bnx8KGRbZl09aCl9fX1yZXR1cm4gZH0KZnVuY3Rpb24gdHMoYSl7dmFyIGI9WyJhZyJdLGM9VXEoITApLGQ9SHIoYS5wcmVmaXgpO0NyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxiLmxlbmd0aDsrK2Upe3ZhciBmPUlyKGJbZV0sZCk7aWYoZil7dmFyIGc9Y1tmXTtpZihnKXt2YXIgaD0kcChnLDUpO2lmKGgpe3ZhciBsPU5yKGgpO2x8fChsPU5iKCkpO2lmKG9zKGwsZiw1KSlicmVhaztoLmk9IiIrTWF0aC5yb3VuZChsLzFFMyk7QXEoZixoLDUsYSxsKX19fX19LFsiYWRfc3RvcmFnZSJdKX1mdW5jdGlvbiBJcihhLGIpe3ZhciBjPXhyW2FdO2lmKGMhPT12b2lkIDApcmV0dXJuIGIrY31mdW5jdGlvbiBzcyhhKXtyZXR1cm4gVnIoYS5zcGxpdCgiLiIpKS5sZW5ndGghPT0wPyhOdW1iZXIoYS5zcGxpdCgiLiIpWzFdKXx8MCkqMUUzOjB9ZnVuY3Rpb24gTnIoYSl7cmV0dXJuIGE/KE51bWJlcihhLmkpfHwwKSoxRTM6MH0KZnVuY3Rpb24gVnIoYSl7cmV0dXJuIGEubGVuZ3RoPDN8fGFbMF0hPT0iR0NMIiYmYVswXSE9PSIxInx8IS9eXGQrJC8udGVzdChhWzFdKXx8IXRyLnRlc3QoYVsyXSk/W106YX1mdW5jdGlvbiB1cyhhLGIsYyxkKXt2YXIgZT1xcztpZihBcnJheS5pc0FycmF5KGEpJiZTcChBKSl7dmFyIGY9SHIoZCksZz1mdW5jdGlvbigpe2Zvcih2YXIgaD17fSxsPTA7bDxlLmxlbmd0aDsrK2wpe3ZhciBuPUlyKGVbbF0sZik7aWYobil7dmFyIHA9Y3EobixCLmNvb2tpZSx2b2lkIDAsQXIoKSk7cC5sZW5ndGgmJihoW25dPXAuc29ydCgpW3AubGVuZ3RoLTFdKX19cmV0dXJuIGh9O0NyKGZ1bmN0aW9uKCl7YXIoZyxhLGIsYyl9LEFyKCkpfX0KZnVuY3Rpb24gdnMoYSxiLGMpe3ZhciBkPXFzO2lmKFlmKDEzKSYmQXJyYXkuaXNBcnJheShhKSYmU3AoQSkpe3ZhciBlPWZ1bmN0aW9uKCl7Zm9yKHZhciBmPXt9LGc9MDtnPGQubGVuZ3RoOysrZyl7dmFyIGg9dnJbZFtnXV07aWYoaCl7dmFyIGw9Y3EoaCxCLmNvb2tpZSx2b2lkIDAsQXIoKSk7aWYobC5sZW5ndGgpe2Zvcih2YXIgbj12b2lkIDAscD0wLHE9bShsKSxyPXEubmV4dCgpOyFyLmRvbmU7cj1xLm5leHQoKSl7dmFyIHQ9ci52YWx1ZSx1PSRwKHQsNCk7aWYodSYmKHUubT09PSIxInx8WWYoMTYpKSl7dmFyIHY9TnIodSk7dj49cCYmKHA9dixuPXQpfX1uJiYoZltoXT1uKX19fXJldHVybiBmfTtDcihmdW5jdGlvbigpe2FyKGUsYSxiLGMpfSxBcigpKX19CmZ1bmN0aW9uIHdzKGEsYixjLGQpe2lmKEFycmF5LmlzQXJyYXkoYSkmJlNwKEEpKXt2YXIgZT1bImFnIl0sZj1IcihkKSxnPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPXt9LGw9MDtsPGUubGVuZ3RoOysrbCl7dmFyIG49SXIoZVtsXSxmKTtpZighbilyZXR1cm57fTt2YXIgcD13cShuLDUpO2lmKHAubGVuZ3RoKXt2YXIgcT1wLnNvcnQoZnVuY3Rpb24ocix0KXtyZXR1cm4gTnIodCktTnIocil9KVswXTtoW25dPWFxKHEsNSl9fXJldHVybiBofTtDcihmdW5jdGlvbigpe2FyKGcsYSxiLGMpfSxbImFkX3N0b3JhZ2UiXSl9fWZ1bmN0aW9uIFJyKGEpe3JldHVybiBhLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gdHIudGVzdChiLmdjbGlkKX0pfQpmdW5jdGlvbiB4cyhhLGIpe2lmKFNwKEEpKXtmb3IodmFyIGM9SHIoYi5wcmVmaXgpLGQ9e30sZT0wO2U8YS5sZW5ndGg7ZSsrKXhyW2FbZV1dJiYoZFthW2VdXT14clthW2VdXSk7Q3IoZnVuY3Rpb24oKXtHYihkLGZ1bmN0aW9uKGYsZyl7dmFyIGg9Y3EoYytnLEIuY29va2llLHZvaWQgMCxBcigpKTtoLnNvcnQoZnVuY3Rpb24odCx1KXtyZXR1cm4gc3ModSktc3ModCl9KTtpZihoLmxlbmd0aCl7dmFyIGw9aFswXSxuPXNzKGwpLHA9VnIobC5zcGxpdCgiLiIpKS5sZW5ndGghPT0wP2wuc3BsaXQoIi4iKS5zbGljZSgzKTpbXSxxPXt9LHI7cj1WcihsLnNwbGl0KCIuIikpLmxlbmd0aCE9PTA/bC5zcGxpdCgiLiIpWzJdOnZvaWQgMDtxW2ZdPVtyXTtocyhxLCEwLGIsbixwKX19KX0sQXIoKSl9fQpmdW5jdGlvbiB5cyhhKXt2YXIgYj1bImFnIl0sYz1bImdicmFpZCJdO0NyKGZ1bmN0aW9uKCl7Zm9yKHZhciBkPUhyKGEucHJlZml4KSxlPTA7ZTxiLmxlbmd0aDsrK2Upe3ZhciBmPUlyKGJbZV0sZCk7aWYoIWYpYnJlYWs7dmFyIGc9d3EoZiw1KTtpZihnLmxlbmd0aCl7dmFyIGg9Zy5zb3J0KGZ1bmN0aW9uKHEscil7cmV0dXJuIE5yKHIpLU5yKHEpfSlbMF0sbD1OcihoKSxuPWguYixwPXt9O3BbY1tlXV09aC5rO2hzKHAsITAsYSxsLG4pfX19LFsiYWRfc3RvcmFnZSJdKX1mdW5jdGlvbiB6cyhhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7KytjKWlmKGFbYltjXV0pcmV0dXJuITA7cmV0dXJuITF9CmZ1bmN0aW9uIEFzKGEpe2Z1bmN0aW9uIGIoaCxsLG4pe24mJihoW2xdPW4pfWlmKEVsKCkpe3ZhciBjPWVzKCksZDthLmluY2x1ZGVzKCJnYWRfc291cmNlIikmJihkPWMuZ2FkX3NvdXJjZSE9PXZvaWQgMD9jLmdhZF9zb3VyY2U6VXEoITEpLl9ncyk7aWYoenMoYyxhKXx8ZCl7dmFyIGU9e307YihlLCJnY2xpZCIsYy5nY2xpZCk7YihlLCJkY2xpZCIsYy5kY2xpZCk7YihlLCJnY2xzcmMiLGMuZ2Nsc3JjKTtiKGUsIndicmFpZCIsYy53YnJhaWQpO2IoZSwiZ2JyYWlkIixjLmdicmFpZCk7YnIoZnVuY3Rpb24oKXtyZXR1cm4gZX0sMyk7dmFyIGY9e30sZz0oZi5fdXA9IjEiLGYpO2IoZywiX2dzIixkKTticihmdW5jdGlvbigpe3JldHVybiBnfSwxKX19fWZ1bmN0aW9uIGtzKCl7dmFyIGE9UmooQS5sb2NhdGlvbi5ocmVmKTtyZXR1cm4gTGooYSwicXVlcnkiLCExLHZvaWQgMCwiZ2FkX3NvdXJjZSIpfQpmdW5jdGlvbiBCcyhhKXtpZighWWYoMSkpcmV0dXJuIG51bGw7dmFyIGI9VXEoITApLmdhZF9zb3VyY2U7aWYoYiE9bnVsbClyZXR1cm4gQS5sb2NhdGlvbi5oYXNoPSIiLGI7aWYoWWYoMikpe2I9a3MoKTtpZihiIT1udWxsKXJldHVybiBiO3ZhciBjPWVzKCk7aWYoenMoYyxhKSlyZXR1cm4iMCJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ3MoYSl7dmFyIGI9QnMoYSk7YiE9bnVsbCYmYnIoZnVuY3Rpb24oKXt2YXIgYz17fTtyZXR1cm4gYy5nYWRfc291cmNlPWIsY30sNCl9CmZ1bmN0aW9uIERzKGEsYixjKXt2YXIgZD1bXTtpZihiLmxlbmd0aD09PTApcmV0dXJuIGQ7Zm9yKHZhciBlPXt9LGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGc9YltmXSxoPWcuemc/Zy56ZzoiZ2NsIjtpZigoZy5sYWJlbHN8fFtdKS5pbmRleE9mKGMpPT09LTEpe2EucHVzaCgwKTt2YXIgbD0hMSxuPXZvaWQgMDtpZigobj1nLm9hKT09bnVsbD8wOm4uaW5jbHVkZXMoMikpbD0hMDt2YXIgcD12b2lkIDA7KChwPWcub2EpPT1udWxsPzA6cC5pbmNsdWRlcygxKSkmJiFlW2hdJiYobD0hMCxlW2hdPSEwKTtsJiZkLnB1c2goZyl9ZWxzZXthLnB1c2goMSk7dmFyIHE9dm9pZCAwO2lmKChxPWcub2EpPT1udWxsPzA6cS5pbmNsdWRlcygxKSllW2hdPSEwfX1yZXR1cm4gZH0KZnVuY3Rpb24gRXMoYSxiLGMsZCxlKXtlPWU9PT12b2lkIDA/ITE6ZTt2YXIgZj1bXTtjPWN8fHt9O2lmKCFCcihBcigpKSlyZXR1cm4gZjt2YXIgZz1FcihhLGUpLGg9RHMoZixnLGIpO2lmKGgubGVuZ3RoJiYhZCl7Zm9yKHZhciBsPVtdLG49ITEscD1tKGgpLHE9cC5uZXh0KCk7IXEuZG9uZTtxPXAubmV4dCgpKXt2YXIgcj1xLnZhbHVlLHQ9cix1PXQudmVyc2lvbix2PXQuZ2NsaWQseD10LnRpbWVzdGFtcCx5PXQub2Esej0odC5sYWJlbHN8fFtdKS5jb25jYXQoW2JdKSxDPXZvaWQgMDtpZigoKEM9eSk9PW51bGw/MDpDLmluY2x1ZGVzKDEpKSYmIW4pe3ZhciBEPVt1LE1hdGgucm91bmQoeC8xRTMpLHZdLmNvbmNhdCh6KS5qb2luKCIuIiksST11cShjLHgsITApO0kuTWM9QXIoKTtvcShhLEQsSSk7bj0hMH12YXIgRz12b2lkIDA7ZSYmKChHPXkpPT1udWxsPzA6Ry5pbmNsdWRlcygyKSkmJmwucHVzaChuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHIse2xhYmVsczp6fSkpfWwubGVuZ3RoJiYKbXMoImdjbF9nYiIsbCxjKX1yZXR1cm4gZn0KZnVuY3Rpb24gRnMoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO3ZhciBkPVtdO2I9Ynx8e307dmFyIGU9R3IoYixjKSxmPURzKGQsZSxhKTtpZihmLmxlbmd0aCl7Zm9yKHZhciBnPVtdLGg9e30sbD1tKGYpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlLHE9SHIoYi5wcmVmaXgpLHI9SXIocC56ZyxxKTtpZighcilyZXR1cm4gZDt2YXIgdD1wLHU9dC52ZXJzaW9uLHY9dC5nY2xpZCx4PXQudGltZXN0YW1wLHk9dC5vYSx6PU1hdGgucm91bmQoeC8xRTMpLEM9THIodC5sYWJlbHN8fFtdLFthXSksRD12b2lkIDA7aWYoKEQ9eSk9PW51bGw/MDpELmluY2x1ZGVzKDEpKWlmKHAuemc9PT0iYWciJiYhaC5hZyl7dmFyIEk9e30sRz0oSS5rPXYsSS5pPSIiK3osSS5iPUMsSSk7QXEocixHLDUsYix4KTtoLmFnPSEwfWVsc2UgaWYocC56Zz09PSJnYiImJiFoLmdiKXt2YXIgTj1bdSx6LHZdLmNvbmNhdChDKS5qb2luKCIuIiksUz11cShiLHgsITApO1MuTWM9CkFyKCk7b3EocixOLFMpO2guZ2I9ITB9dmFyIFc9dm9pZCAwO2MmJigoVz15KT09bnVsbD8wOlcuaW5jbHVkZXMoMikpJiZnLnB1c2gobmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxwLHtsYWJlbHM6Q30pKX1nLmxlbmd0aCYmbXMoImdjbF9nYiIsZyxiKX1yZXR1cm4gZH1mdW5jdGlvbiBHcyhhLGIpe3ZhciBjPUhyKGIpLGQ9SXIoYSxjKTtpZighZClyZXR1cm4gMDt2YXIgZTtlPWE9PT0iYWciP0pyKGQpOkVyKGQpO2Zvcih2YXIgZj0wLGc9MDtnPGUubGVuZ3RoO2crKylmPU1hdGgubWF4KGYsZVtnXS50aW1lc3RhbXApO3JldHVybiBmfWZ1bmN0aW9uIEhzKGEpe2Zvcih2YXIgYj0wLGM9bShPYmplY3Qua2V5cyhhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZm9yKHZhciBlPWFbZC52YWx1ZV0sZj0wO2Y8ZS5sZW5ndGg7ZisrKWI9TWF0aC5tYXgoYixOdW1iZXIoZVtmXS50aW1lc3RhbXApKTtyZXR1cm4gYn0KZnVuY3Rpb24gSXMoYSl7dmFyIGI9TWF0aC5tYXgoR3MoImF3IixhKSxIcyhCcihBcigpKT9ScCgpOnt9KSksYz1NYXRoLm1heChHcygiZ2IiLGEpLEhzKEJyKEFyKCkpP1JwKCJfZ2FjX2diIiwhMCk6e30pKTtjPU1hdGgubWF4KGMsR3MoImFnIixhKSk7cmV0dXJuIGM+Yn07dmFyIEpzPVJlZ0V4cCgiXlVBLVxcZCstXFxkKyUzQVtcXHctXSsoPzolMkNbXFx3LV0rKSooPzolM0JVQS1cXGQrLVxcZCslM0FbXFx3LV0rKD86JTJDW1xcdy1dKykqKSokIiksS3M9L15+P1tcdy1dKyg/Olwufj9bXHctXSspKiQvLExzPS9eXGQrXC5mbHNcLmRvdWJsZWNsaWNrXC5uZXQkLyxNcz0vO2dhYz0oW147P10rKS8sTnM9LztnYWNnYj0oW147P10rKS87CmZ1bmN0aW9uIE9zKGEsYil7aWYoTHMudGVzdChCLmxvY2F0aW9uLmhvc3QpKXt2YXIgYz1CLmxvY2F0aW9uLmhyZWYubWF0Y2goYik7cmV0dXJuIGMmJmMubGVuZ3RoPT09MiYmY1sxXS5tYXRjaChKcyk/S2ooY1sxXSl8fCIiOiIifWZvcih2YXIgZD1bXSxlPW0oT2JqZWN0LmtleXMoYSkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXtmb3IodmFyIGc9Zi52YWx1ZSxoPVtdLGw9YVtnXSxuPTA7bjxsLmxlbmd0aDtuKyspaC5wdXNoKGxbbl0uZ2NsaWQpO2QucHVzaChnKyI6IitoLmpvaW4oIiwiKSl9cmV0dXJuIGQubGVuZ3RoPjA/ZC5qb2luKCI7Iik6IiJ9CmZ1bmN0aW9uIFBzKGEsYixjKXtmb3IodmFyIGQ9QnIoQXIoKSk/UnAoIl9nYWNfZ2IiLCEwKTp7fSxlPVtdLGY9ITEsZz1tKE9iamVjdC5rZXlzKGQpKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZSxuPUVzKCJfZ2FjX2diXyIrbCxhLGIsYyk7Zj1mfHxuLmxlbmd0aCE9PTAmJm4uc29tZShmdW5jdGlvbihwKXtyZXR1cm4gcD09PTF9KTtlLnB1c2gobCsiOiIrbi5qb2luKCIsIikpfXJldHVybntScjpmP2Uuam9pbigiOyIpOiIiLFFyOk9zKGQsTnMpfX1mdW5jdGlvbiBRcyhhKXt2YXIgYj1CLmxvY2F0aW9uLmhyZWYubWF0Y2gobmV3IFJlZ0V4cCgiOyIrYSsiPShbXjs/XSspIikpO3JldHVybiBiJiZiLmxlbmd0aD09PTImJmJbMV0ubWF0Y2goS3MpP2JbMV06dm9pZCAwfQpmdW5jdGlvbiBScyhhKXt2YXIgYj17fSxjLGQsZTtMcy50ZXN0KEIubG9jYXRpb24uaG9zdCkmJihjPVFzKCJnY2xncyIpLGQ9UXMoImdjbHN0IiksZT1RcygiZ2NsbHAiKSk7aWYoYyYmZCYmZSliLkVnPWMsYi5XaD1kLGIuVWg9ZTtlbHNle3ZhciBmPU5iKCksZz1NcigoYXx8Il9nY2wiKSsiX2dzIiksaD1nLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcC5nY2xpZH0pLGw9Zy5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIGYtcC50aW1lc3RhbXB9KSxuPWcubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLm9kfSk7aC5sZW5ndGg+MCYmbC5sZW5ndGg+MCYmbi5sZW5ndGg+MCYmKGIuRWc9aC5qb2luKCIuIiksYi5XaD1sLmpvaW4oIi4iKSxiLlVoPW4uam9pbigiLiIpKX1yZXR1cm4gYn0KZnVuY3Rpb24gU3MoYSxiKXt2YXIgYz1hLnNwbGl0KCIuIiksZD1iP2Iuc3BsaXQoIi4iKTpbXSxlPWQubGVuZ3RoPT09Yy5sZW5ndGg/ZDp2b2lkIDA7cmV0dXJuIGMubWFwKGZ1bmN0aW9uKGYsZyl7dmFyIGg9e2djbGlkOmZ9O2lmKGUpe3ZhciBsPWVbZ10uc3BsaXQoIl8iKTtpZihsLmxlbmd0aD09PTIpe2gucWE9bmV3IGVyKE51bWJlcihsWzBdKSk7dmFyIG47dmFyIHA9TnVtYmVyKGxbMV0pO2lmKHA9PT0wKW49WzBdO2Vsc2V7dmFyIHE9W107cCYxJiZxLnB1c2goMSk7cCYyJiZxLnB1c2goMik7cCY0JiZxLnB1c2goMyk7cCY4JiZxLnB1c2goNCk7cCYxNiYmcS5wdXNoKDUpO249cX1oLm9hPW59fXJldHVybiBofSl9CmZ1bmN0aW9uIFRzKGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO2lmKExzLnRlc3QoQi5sb2NhdGlvbi5ob3N0KSl7dmFyIGU9UXMoYyk7aWYoZSl7aWYoWWYoMTcpKXt2YXIgZj1RcyhjKyJfc3JjIik7cmV0dXJuIFNzKGUsZil9aWYoZCl7dmFyIGc9bmV3IGVyO2ZyKGcsMik7ZnIoZywzKTtyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcChmdW5jdGlvbihyKXtyZXR1cm57Z2NsaWQ6cixxYTpnLG9hOlsxXX19KX1yZXR1cm4gZS5zcGxpdCgiLiIpLm1hcChmdW5jdGlvbihyKXtyZXR1cm57Z2NsaWQ6cixxYTpuZXcgZXIsb2E6WzFdfX0pfX1lbHNle2lmKGI9PT0iZ2NsaWQiKXtmb3IodmFyIGg9RXIoKGF8fCJfZ2NsIikrIl9hdyIsZCksbD1OdW1iZXIoWGZbNF09PT12b2lkIDA/MDpYZls0XSksbj1tKFVzKCkpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKXt2YXIgcT1wLnZhbHVlO3EudGltZXN0YW1wPmwmJlFyKGgscSl9cmV0dXJuIGh9aWYoYj09PSJ3YnJhaWQiKXJldHVybiBFcigoYXx8CiJfZ2NsIikrIl9nYiIsZCk7aWYoYj09PSJicmFpZHMiKXJldHVybiBHcih7cHJlZml4OmF9LGQpfXJldHVybltdfWZ1bmN0aW9uIFVzKCl7cmV0dXJuKHdxKHZyLmF3LDQpfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhLm09PT0iMSJ9KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJue2djbGlkOmEuayx0aW1lc3RhbXA6TnVtYmVyKGEuaSksdmVyc2lvbjoiIixvYTpbNV19fSl9ZnVuY3Rpb24gVnMoYSl7Zm9yKHZhciBiPTAsYz1tKGEpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2U+MCYmKGJ8PTE8PGUtMSl9cmV0dXJuIGIudG9TdHJpbmcoKX1mdW5jdGlvbiBXcyhhKXtyZXR1cm4gTHMudGVzdChCLmxvY2F0aW9uLmhvc3QpPyEoUXMoImdjbGF3Iil8fFFzKCJnYWMiKSk6SXMoYSl9CmZ1bmN0aW9uIFhzKGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO3ZhciBlO2U9Yz9GcyhhLGIsZCk6RXMoKGImJmIucHJlZml4fHwiX2djbCIpKyJfZ2IiLGEsYix2b2lkIDAsZCk7cmV0dXJuIGUubGVuZ3RoPT09MHx8ZS5ldmVyeShmdW5jdGlvbihmKXtyZXR1cm4gZj09PTB9KT8iIjplLmpvaW4oIi4iKX07CnZhciBZcz1mdW5jdGlvbihhKXt2YXIgYjtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1raigiYWRzX3BhZ2V2aWV3IixmdW5jdGlvbigpe3JldHVybnt9fSk7aWYoY1thXSlyZXR1cm4hMTtifHwoY1thXT0hMCk7cmV0dXJuITB9LFpzPWZ1bmN0aW9uKGEpe3JldHVybiBTaihhLCJnY2xpZCBkY2xpZCBnYnJhaWQgd2JyYWlkIGdjbGF3IGdjbGRjIGdjbGhhIGdjbGdmIGdjbGdiIF9nbCIuc3BsaXQoIiAiKSwiMCIpfSxhdD1mdW5jdGlvbigpe3ZhciBhPVJqKEEubG9jYXRpb24uaHJlZiksYj12b2lkIDAsYz12b2lkIDAsZD1MaihhLCJxdWVyeSIsITEsdm9pZCAwLCJnYWRfc291cmNlIiksZT1MaihhLCJxdWVyeSIsITEsdm9pZCAwLCJnYWRfY2FtcGFpZ25pZCIpLGYsZz1hLmhhc2gucmVwbGFjZSgiIyIsIiIpLm1hdGNoKCRzKTtmPWc/Z1sxXTp2b2lkIDA7ZCYmZj8oYj1kLGM9MSk6ZD8oYj1kLGM9Mik6ZiYmKGI9ZixjPTMpO3JldHVybntEZzpiLFNyOmMsVGg6ZX19LGJ0PWZ1bmN0aW9uKGEpe3ZhciBiPQpPcCghMSk9PT0xP0EudG9wLmxvY2F0aW9uLmhyZWY6QS5sb2NhdGlvbi5ocmVmO3JldHVybiBhKGIpfSxjdD1mdW5jdGlvbihhKXt2YXIgYj1bXTtHYihhLGZ1bmN0aW9uKGMsZCl7ZD1ScihkKTtmb3IodmFyIGU9W10sZj0wO2Y8ZC5sZW5ndGg7ZisrKWUucHVzaChkW2ZdLmdjbGlkKTtlLmxlbmd0aCYmYi5wdXNoKGMrIjoiK2Uuam9pbigiLCIpKX0pO3JldHVybiBiLmpvaW4oIjsiKX0sZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWR0KGEpO2lmKGQpcmV0dXJuIGQ7dmFyIGU9SHIoYik7aWYoZT09PSJfZ2NsIil7dmFyIGY9IVhvKGZwKSYmYyxnPVtdO2E9PT0iYXciP2c9YXMoQS5sb2NhdGlvbi5ocmVmLCEwLCExKTphPT09ImRjIiYmKGc9ZHMoQS5sb2NhdGlvbi5ocmVmLCEwLCExKSk7aWYoZy5sZW5ndGg+MClyZXR1cm4gZj9be3ZlcnNpb246IkdDTCIsdGltZXN0YW1wOjAsZ2NsaWQ6IjAifV06Zy5tYXAoZnVuY3Rpb24obCl7cmV0dXJue3ZlcnNpb246IkdDTCIsdGltZXN0YW1wOjAsCmdjbGlkOmwudmFsdWUscWE6bC5xYSxvYTpbMV19fSl9dmFyIGg9SXIoYSxlKTtyZXR1cm4gaD9hPT09ImF3Ij9FcihoLE0oNTYyKSk6WnIoaCk6W119LGR0PWZ1bmN0aW9uKGEpe3ZhciBiPVRqKCJnY2wiK2EpLGM9YT09PSJkYyJ8fGE9PT0iYXciP1RqKCJnY2wiK2ErIl9zcmMiKTp2b2lkIDA7aWYoYilyZXR1cm4gU3MoYixjKX0sZnQ9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT0iYXcifHxhPT09ImRjInx8YT09PSJnYiIpe3ZhciBkPVRqKCJnY2wiK2EpO2lmKGQpcmV0dXJuIGQuc3BsaXQoIi4iKX12YXIgZT1IcihiKTtpZihlPT09Il9nY2wiKXt2YXIgZj0hWG8oZnApJiZjLGc7Zz1lcygpW2FdfHxbXTtpZihnLmxlbmd0aD4wKXJldHVybiBmP1siMCJdOmd9dmFyIGg9SXIoYSxlKTtyZXR1cm4gaD9EcihoKTpbXX0sZ3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKCFSKGEsYil8fCFSKGEsYykpcmV0dXJuIiI7dmFyIGQ9UihhLGIpLnNwbGl0KCIuIiksZT1SKGEsYykuc3BsaXQoIi4iKTtyZXR1cm4gZC5sZW5ndGgmJgplLmxlbmd0aCYmZC5sZW5ndGg9PT1lLmxlbmd0aCYmZFswXSYmZVswXT9kLm1hcChmdW5jdGlvbihmLGcpe3JldHVybiBmKyJfIitlW2ddfSkuam9pbigiLiIpOiIifSwkcz0vXmdhZF9zb3VyY2VbXz1dKFxkKykkLztmdW5jdGlvbiBodChhLGIsYyl7dmFyIGQ9UihhLEYuRC5UYSk7aWYoZCYmdHlwZW9mIGQ9PT0ib2JqZWN0Iilmb3IodmFyIGU9bShPYmplY3Qua2V5cyhkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWUsaD1kW2ddO2lmKGghPT12b2lkIDApe2g9PT1udWxsJiYoaD0iIik7dmFyIGw9ImdhcC4iK2csbj1TdHJpbmcoaCk7Yz9jKGwsbik6YltsXT1ufX19O3ZhciBpdD0hMSxqdD1bXTtmdW5jdGlvbiBrdCgpe2lmKCFpdCl7aXQ9ITA7Zm9yKHZhciBhPWp0Lmxlbmd0aC0xO2E+PTA7YS0tKWp0W2FdKCk7anQ9W119fTtmdW5jdGlvbiBsdChhKXt2YXIgYj1bXSxjPTAsZDtmb3IoZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifTtmdW5jdGlvbiBtdChhLGIsYyl7cmV0dXJuIHR5cGVvZiBhLmFkZEV2ZW50TGlzdGVuZXI9PT0iZnVuY3Rpb24iPyhhLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKSwhMCk6ITF9ZnVuY3Rpb24gbnQoYSxiLGMpe3R5cGVvZiBhLnJlbW92ZUV2ZW50TGlzdGVuZXI9PT0iZnVuY3Rpb24iJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCExKX07ZnVuY3Rpb24gb3QoYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHN8fChhLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cz1bXSk7dmFyIGU9UHAoYS5kb2N1bWVudCk7aWYoYyl7dmFyIGY9ZnVuY3Rpb24oKXtpZihjKXt2YXIgZz1hLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cyxoPURjKGcsZSk7aD49MCYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGcsaCwxKX1udChlLCJsb2FkIixmKTtudChlLCJlcnJvciIsZil9O210KGUsImxvYWQiLGYpO210KGUsImVycm9yIixmKX1kJiYoZS5hdHRyaWJ1dGlvblNyYz0iIik7ZS5zcmM9YjthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cy5wdXNoKGUpfQpmdW5jdGlvbiBwdChhKXt2YXIgYjtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD10Y2ZlIjtJcChhLGZ1bmN0aW9uKGQsZSl7aWYoZHx8ZD09PTApYys9IiYiK2UrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpfSk7cXQoYyxiKX0KZnVuY3Rpb24gcXQoYSxiKXt2YXIgYz13aW5kb3csZDtiPWI9PT12b2lkIDA/ITE6YjtkPWQ9PT12b2lkIDA/ITE6ZDtpZihjLmZldGNoKXt2YXIgZT17a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixyZWRpcmVjdDoiZm9sbG93IixtZXRob2Q6ImdldCIsbW9kZToibm8tY29ycyJ9O2QmJihlLm1vZGU9ImNvcnMiLCJzZXRBdHRyaWJ1dGlvblJlcG9ydGluZyJpbiBYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU/ZS5hdHRyaWJ1dGlvblJlcG9ydGluZz17ZXZlbnRTb3VyY2VFbGlnaWJsZToidHJ1ZSIsdHJpZ2dlckVsaWdpYmxlOiJmYWxzZSJ9OmUuaGVhZGVycz17IkF0dHJpYnV0aW9uLVJlcG9ydGluZy1FbGlnaWJsZSI6ImV2ZW50LXNvdXJjZSJ9KTtjLmZldGNoKGEsZSl9ZWxzZSBvdChjLGEsYj09PXZvaWQgMD8hMTpiLGQ9PT12b2lkIDA/ITE6ZCl9O2Z1bmN0aW9uIHJ0KCl7dGhpcy5mYT10aGlzLmZhO3RoaXMuUj10aGlzLlJ9cnQucHJvdG90eXBlLmZhPSExO3J0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5mYXx8KHRoaXMuZmE9ITAsdGhpcy5OKCkpfTtydC5wcm90b3R5cGVbU3ltYm9sLmRpc3Bvc2VdPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCl9O3J0LnByb3RvdHlwZS5hZGRPbkRpc3Bvc2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3RoaXMuZmE/YiE9PXZvaWQgMD9hLmNhbGwoYik6YSgpOih0aGlzLlJ8fCh0aGlzLlI9W10pLGImJihhPWEuYmluZChiKSksdGhpcy5SLnB1c2goYSkpfTtydC5wcm90b3R5cGUuTj1mdW5jdGlvbigpe2lmKHRoaXMuUilmb3IoO3RoaXMuUi5sZW5ndGg7KXRoaXMuUi5zaGlmdCgpKCl9O2Z1bmN0aW9uIHN0KGEpe2EuYWRkdGxDb25zZW50PT09dm9pZCAwfHx2ZihhLmFkZHRsQ29uc2VudCl8fChhLmFkZHRsQ29uc2VudD12b2lkIDApO2EuZ2RwckFwcGxpZXM9PT12b2lkIDB8fHdmKGEuZ2RwckFwcGxpZXMpfHwoYS5nZHByQXBwbGllcz12b2lkIDApO3JldHVybiBhLnRjU3RyaW5nIT09dm9pZCAwJiYhdmYoYS50Y1N0cmluZyl8fGEubGlzdGVuZXJJZCE9PXZvaWQgMCYmIXVmKGEubGlzdGVuZXJJZCk/MjphLmNtcFN0YXR1cyYmYS5jbXBTdGF0dXMhPT0iZXJyb3IiPzA6M312YXIgdHQ9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/e306YjtydC5jYWxsKHRoaXMpO3RoaXMuSD1udWxsO3RoaXMuamE9e307dGhpcy55YT0wO3RoaXMuWj1udWxsO3RoaXMuSz1hO3ZhciBjO3RoaXMudGltZW91dE1zPShjPWIudGltZW91dE1zKSE9bnVsbD9jOjUwMDt2YXIgZDt0aGlzLkVqPShkPWIuRWopIT1udWxsP2Q6ITF9O3dhKHR0LHJ0KTsKdHQucHJvdG90eXBlLk49ZnVuY3Rpb24oKXt0aGlzLmphPXt9O3RoaXMuWiYmKG50KHRoaXMuSywibWVzc2FnZSIsdGhpcy5aKSxkZWxldGUgdGhpcy5aKTtkZWxldGUgdGhpcy5qYTtkZWxldGUgdGhpcy5LO2RlbGV0ZSB0aGlzLkg7cnQucHJvdG90eXBlLk4uY2FsbCh0aGlzKX07dmFyIHZ0PWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYS5LLl9fdGNmYXBpPT09ImZ1bmN0aW9uInx8dXQoYSkhPW51bGx9Owp0dC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9e2ludGVybmFsQmxvY2tPbkVycm9yczp0aGlzLkVqfSxkPUhwKGZ1bmN0aW9uKCl7YShjKX0pLGU9MDt0aGlzLnRpbWVvdXRNcyE9PS0xJiYoZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSI7Yy5pbnRlcm5hbEVycm9yU3RhdGU9MTtkKCl9LHRoaXMudGltZW91dE1zKSk7dmFyIGY9ZnVuY3Rpb24oZyxoKXtjbGVhclRpbWVvdXQoZSk7Zz8oYz1nLGMuaW50ZXJuYWxFcnJvclN0YXRlPXN0KGMpLGMuaW50ZXJuYWxCbG9ja09uRXJyb3JzPWIuRWosaCYmYy5pbnRlcm5hbEVycm9yU3RhdGU9PT0wfHwoYy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSIsaHx8KGMuaW50ZXJuYWxFcnJvclN0YXRlPTMpKSk6KGMudGNTdHJpbmc9InRjdW5hdmFpbGFibGUiLGMuaW50ZXJuYWxFcnJvclN0YXRlPTMpO2EoYyl9O3RyeXt3dCh0aGlzLCJhZGRFdmVudExpc3RlbmVyIiwKZil9Y2F0Y2goZyl7Yy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSIsYy5pbnRlcm5hbEVycm9yU3RhdGU9MyxlJiYoY2xlYXJUaW1lb3V0KGUpLGU9MCksZCgpfX07dHQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7YSYmYS5saXN0ZW5lcklkJiZ3dCh0aGlzLCJyZW1vdmVFdmVudExpc3RlbmVyIixudWxsLGEubGlzdGVuZXJJZCl9Owp2YXIgenQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2Q9ZD09PXZvaWQgMD8iNzU1IjpkO3ZhciBlO2E6e2lmKGEucHVibGlzaGVyJiZhLnB1Ymxpc2hlci5yZXN0cmljdGlvbnMpe3ZhciBmPWEucHVibGlzaGVyLnJlc3RyaWN0aW9uc1tiXTtpZihmIT09dm9pZCAwKXtlPWZbZD09PXZvaWQgMD8iNzU1IjpkXTticmVhayBhfX1lPXZvaWQgMH12YXIgZz1lO2lmKGc9PT0wKXJldHVybiExO3ZhciBoPWM7Yz09PTI/KGg9MCxnPT09MiYmKGg9MSkpOmM9PT0zJiYoaD0xLGc9PT0xJiYoaD0wKSk7dmFyIGw7aWYoaD09PTApaWYoYS5wdXJwb3NlJiZhLnZlbmRvcil7dmFyIG49eHQoYS52ZW5kb3IuY29uc2VudHMsZD09PXZvaWQgMD8iNzU1IjpkKTtsPW4mJmI9PT0iMSImJmEucHVycG9zZU9uZVRyZWF0bWVudCYmYS5wdWJsaXNoZXJDQz09PSJDSCI/ITA6biYmeHQoYS5wdXJwb3NlLmNvbnNlbnRzLGIpfWVsc2UgbD0hMDtlbHNlIGw9aD09PTE/YS5wdXJwb3NlJiZhLnZlbmRvcj94dChhLnB1cnBvc2UubGVnaXRpbWF0ZUludGVyZXN0cywKYikmJnh0KGEudmVuZG9yLmxlZ2l0aW1hdGVJbnRlcmVzdHMsZD09PXZvaWQgMD8iNzU1IjpkKTohMDohMDtyZXR1cm4gbH0seHQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hKCFhfHwhYVtiXSl9LHd0PWZ1bmN0aW9uKGEsYixjLGQpe2N8fChjPWZ1bmN0aW9uKCl7fSk7dmFyIGU9YS5LO2lmKHR5cGVvZiBlLl9fdGNmYXBpPT09ImZ1bmN0aW9uIil7dmFyIGY9ZS5fX3RjZmFwaTtmKGIsMixjLGQpfWVsc2UgaWYodXQoYSkpe0F0KGEpO3ZhciBnPSsrYS55YTthLmphW2ddPWM7aWYoYS5IKXt2YXIgaD17fTthLkgucG9zdE1lc3NhZ2UoKGguX190Y2ZhcGlDYWxsPXtjb21tYW5kOmIsdmVyc2lvbjoyLGNhbGxJZDpnLHBhcmFtZXRlcjpkfSxoKSwiKiIpfX1lbHNlIGMoe30sITEpfSx1dD1mdW5jdGlvbihhKXtpZihhLkgpcmV0dXJuIGEuSDthLkg9TnAoYS5LLCJfX3RjZmFwaUxvY2F0b3IiKTtyZXR1cm4gYS5IfSxBdD1mdW5jdGlvbihhKXtpZighYS5aKXt2YXIgYj1mdW5jdGlvbihjKXtpZihjLnNvdXJjZT09PQphLkgpdHJ5e3ZhciBkO2Q9KHZmKGMuZGF0YSk/SlNPTi5wYXJzZShjLmRhdGEpOmMuZGF0YSkuX190Y2ZhcGlSZXR1cm47YS5qYVtkLmNhbGxJZF0oZC5yZXR1cm5WYWx1ZSxkLnN1Y2Nlc3MpfWNhdGNoKGUpe319O2EuWj1iO210KGEuSywibWVzc2FnZSIsYil9fSxCdD1mdW5jdGlvbihhKXtpZihhLmdkcHJBcHBsaWVzPT09ITEpcmV0dXJuITA7YS5pbnRlcm5hbEVycm9yU3RhdGU9PT12b2lkIDAmJihhLmludGVybmFsRXJyb3JTdGF0ZT1zdChhKSk7cmV0dXJuIGEuY21wU3RhdHVzPT09ImVycm9yInx8YS5pbnRlcm5hbEVycm9yU3RhdGUhPT0wP2EuaW50ZXJuYWxCbG9ja09uRXJyb3JzPyhwdCh7ZTpTdHJpbmcoYS5pbnRlcm5hbEVycm9yU3RhdGUpfSksITEpOiEwOmEuY21wU3RhdHVzIT09ImxvYWRlZCJ8fGEuZXZlbnRTdGF0dXMhPT0idGNsb2FkZWQiJiZhLmV2ZW50U3RhdHVzIT09InVzZXJhY3Rpb25jb21wbGV0ZSI/ITE6ITB9O3ZhciBDdD17MTowLDM6MCw0OjAsNzozLDk6MywxMDozfTtmdW5jdGlvbiBEdCgpe3JldHVybiBraigidGNmIixmdW5jdGlvbigpe3JldHVybnt9fSl9dmFyIEV0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0dChBLHt0aW1lb3V0TXM6LTF9KX07CmZ1bmN0aW9uIEZ0KCl7dmFyIGE9RHQoKSxiPUV0KCk7dnQoYikmJiFHdCgpJiYhSHQoKSYmUCgxMjQpO2lmKCFhLmFjdGl2ZSYmdnQoYikpe0d0KCkmJihhLmFjdGl2ZT0hMCxhLnB1cnBvc2VzPXt9LGEuY21wSWQ9MCxhLnRjZlBvbGljeVZlcnNpb249MCx0bCgpLmFjdGl2ZT0hMCxhLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIik7Y3AoKTt0cnl7Yi5hZGRFdmVudExpc3RlbmVyKGZ1bmN0aW9uKGMpe2lmKGMuaW50ZXJuYWxFcnJvclN0YXRlIT09MClJdChhKSxkcChbRi5ELmthLEYuRC5YYSxGLkQubWFdKSx0bCgpLmFjdGl2ZT0hMDtlbHNlIGlmKGEuZ2RwckFwcGxpZXM9Yy5nZHByQXBwbGllcyxhLmNtcElkPWMuY21wSWQsYS5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGU9Yy5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGUsSHQoKSYmKGEuYWN0aXZlPSEwKSwhSnQoYyl8fEd0KCl8fEh0KCkpe2EudGNmUG9saWN5VmVyc2lvbj1jLnRjZlBvbGljeVZlcnNpb247dmFyIGQ7aWYoYy5nZHByQXBwbGllcz09PQohMSl7dmFyIGU9e30sZjtmb3IoZiBpbiBDdClDdC5oYXNPd25Qcm9wZXJ0eShmKSYmKGVbZl09ITApO2Q9ZTtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyl9ZWxzZSBpZihKdChjKSl7dmFyIGc9e30saDtmb3IoaCBpbiBDdClpZihDdC5oYXNPd25Qcm9wZXJ0eShoKSlpZihoPT09IjEiKXt2YXIgbCxuPWMscD17VXI6ITB9O3A9cD09PXZvaWQgMD97fTpwO2w9QnQobik/bi5nZHByQXBwbGllcz09PSExPyEwOm4udGNTdHJpbmc9PT0idGN1bmF2YWlsYWJsZSI/IXAuaWRwY0FwcGxpZXM6KHAuaWRwY0FwcGxpZXN8fG4uZ2RwckFwcGxpZXMhPT12b2lkIDB8fHAuVXIpJiYocC5pZHBjQXBwbGllc3x8dmYobi50Y1N0cmluZykmJm4udGNTdHJpbmcubGVuZ3RoKT96dChuLCIxIiwwKTohMDohMTtnWyIxIl09bH1lbHNlIGdbaF09enQoYyxoLEN0W2hdKTtkPWd9aWYoZCl7YS50Y1N0cmluZz1jLnRjU3RyaW5nfHwidGNlbXB0eSI7YS5wdXJwb3Nlcz1kO3ZhciBxPXt9LHI9KHFbRi5ELmthXT0KYS5wdXJwb3Nlc1siMSJdPyJncmFudGVkIjoiZGVuaWVkIixxKTthLmdkcHJBcHBsaWVzIT09ITA/KGRwKFtGLkQua2EsRi5ELlhhLEYuRC5tYV0pLHRsKCkuYWN0aXZlPSEwKToocltGLkQuWGFdPWEucHVycG9zZXNbIjMiXSYmYS5wdXJwb3Nlc1siNCJdPyJncmFudGVkIjoiZGVuaWVkIix0eXBlb2YgYS50Y2ZQb2xpY3lWZXJzaW9uPT09Im51bWJlciImJmEudGNmUG9saWN5VmVyc2lvbj49ND9yW0YuRC5tYV09YS5wdXJwb3Nlc1siMSJdJiZhLnB1cnBvc2VzWyI3Il0/ImdyYW50ZWQiOiJkZW5pZWQiOmRwKFtGLkQubWFdKSxWbyhyLHtldmVudElkOjB9LHtnZHByQXBwbGllczphP2EuZ2RwckFwcGxpZXM6dm9pZCAwLHRjU3RyaW5nOkt0KCl8fCIifSkpfX1lbHNlIGRwKFtGLkQua2EsRi5ELlhhLEYuRC5tYV0pfSl9Y2F0Y2goYyl7SXQoYSksZHAoW0YuRC5rYSxGLkQuWGEsRi5ELm1hXSksdGwoKS5hY3RpdmU9ITB9fX0KZnVuY3Rpb24gSXQoYSl7YS50eXBlPSJlIjthLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIn1mdW5jdGlvbiBKdChhKXtyZXR1cm4gYS5ldmVudFN0YXR1cz09PSJ0Y2xvYWRlZCJ8fGEuZXZlbnRTdGF0dXM9PT0idXNlcmFjdGlvbmNvbXBsZXRlInx8YS5ldmVudFN0YXR1cz09PSJjbXB1aXNob3duIn1mdW5jdGlvbiBHdCgpe3JldHVybiBBLmd0YWdfZW5hYmxlX3RjZl9zdXBwb3J0PT09ITB9ZnVuY3Rpb24gSHQoKXtyZXR1cm4gRHQoKS5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGU9PT0hMH1mdW5jdGlvbiBLdCgpe3ZhciBhPUR0KCk7aWYoYS5hY3RpdmUpcmV0dXJuIGEudGNTdHJpbmd9ZnVuY3Rpb24gTHQoKXt2YXIgYT1EdCgpO2lmKGEuYWN0aXZlJiZhLmdkcHJBcHBsaWVzIT09dm9pZCAwKXJldHVybiBhLmdkcHJBcHBsaWVzPyIxIjoiMCJ9CmZ1bmN0aW9uIE10KGEpe2lmKCFDdC5oYXNPd25Qcm9wZXJ0eShTdHJpbmcoYSkpKXJldHVybiEwO3ZhciBiPUR0KCk7cmV0dXJuIGIuYWN0aXZlJiZiLnB1cnBvc2VzPyEhYi5wdXJwb3Nlc1tTdHJpbmcoYSldOiEwfTt2YXIgTnQ9W0YuRC5rYSxGLkQucmEsRi5ELm1hLEYuRC5YYV0sT3Q9e30sUHQ9KE90W0YuRC5rYV09MSxPdFtGLkQucmFdPTIsT3QpO2Z1bmN0aW9uIFF0KGEpe2lmKGE9PT12b2lkIDApcmV0dXJuIDA7c3dpdGNoKE8oYSxGLkQuUmMpKXtjYXNlIHZvaWQgMDpyZXR1cm4gMTtjYXNlICExOnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIDJ9fWZ1bmN0aW9uIFJ0KCl7cmV0dXJuKE0oMTgzKT9MZigxNikuc3BsaXQoIn4iKTpMZigxNykuc3BsaXQoIn4iKSkuaW5kZXhPZih6bSgpKSE9PS0xJiZIYy5nbG9iYWxQcml2YWN5Q29udHJvbD09PSEwfWZ1bmN0aW9uIFN0KGEpe2lmKFJ0KCkpcmV0dXJuITE7dmFyIGI9UXQoYSk7aWYoYj09PTMpcmV0dXJuITE7c3dpdGNoKENsKEYuRC5YYSkpe2Nhc2UgMTpjYXNlIDM6cmV0dXJuITA7Y2FzZSAyOnJldHVybiExO2Nhc2UgNDpyZXR1cm4gYj09PTI7Y2FzZSAwOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fQpmdW5jdGlvbiBUdCgpe3JldHVybiBFbCgpfHwhQmwoRi5ELmthKXx8IUJsKEYuRC5yYSl9ZnVuY3Rpb24gVXQoKXt2YXIgYT17fSxiO2ZvcihiIGluIFB0KVB0Lmhhc093blByb3BlcnR5KGIpJiYoYVtQdFtiXV09Q2woYikpO3JldHVybiJHMSIreWYoYVsxXXx8MCkreWYoYVsyXXx8MCl9dmFyIFZ0PXt9LFd0PShWdFtGLkQua2FdPTAsVnRbRi5ELnJhXT0xLFZ0W0YuRC5tYV09MixWdFtGLkQuWGFdPTMsVnQpO2Z1bmN0aW9uIFh0KGEpe3N3aXRjaChhKXtjYXNlIHZvaWQgMDpyZXR1cm4gMTtjYXNlICEwOnJldHVybiAzO2Nhc2UgITE6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19CmZ1bmN0aW9uIFl0KGEpe2Zvcih2YXIgYj0iMSIsYz0wO2M8TnQubGVuZ3RoO2MrKyl7dmFyIGQ9YixlLGY9TnRbY10sZz1BbC5kZWxlZ2F0ZWRDb25zZW50VHlwZXNbZl07ZT1nPT09dm9pZCAwPzA6V3QuaGFzT3duUHJvcGVydHkoZyk/MTJ8V3RbZ106ODt2YXIgaD10bCgpO2guYWNjZXNzZWRBbnk9ITA7dmFyIGw9aC5lbnRyaWVzW2ZdfHx7fTtlPWU8PDJ8WHQobC5pbXBsaWNpdCk7Yj1kKygiIisiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbZV0rIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW1h0KGwuZGVjbGFyZSk8PDR8WHQobC5kZWZhdWx0KTw8MnxYdChsLnVwZGF0ZSldKX12YXIgbj1iLHA9KFJ0KCk/MTowKTw8MyxxPShFbCgpPzE6MCk8PDIscj1RdChhKTtiPW4rIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW3B8CnF8cl07cmV0dXJuIGIrPSIiKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltBbC5jb250YWluZXJTY29wZWREZWZhdWx0cy5hZF9zdG9yYWdlPDw0fEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzLmFuYWx5dGljc19zdG9yYWdlPDwyfEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzLmFkX3VzZXJfZGF0YV0rIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iWyhBbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM/MTowKTw8MnxBbC5jb250YWluZXJTY29wZWREZWZhdWx0cy5hZF9wZXJzb25hbGl6YXRpb25dfWZ1bmN0aW9uIFp0KCl7cmV0dXJuIEJsKEYuRC5tYSk/ImEiOiItIn1mdW5jdGlvbiAkdCgpe3JldHVybiBCbSgpfHwoR3QoKXx8SHQoKSkmJkx0KCk9PT0iMSI/IjEiOiIwIn0KZnVuY3Rpb24gYXUoKXtyZXR1cm4oQm0oKT8hMDohKCFHdCgpJiYhSHQoKSkmJkx0KCk9PT0iMSIpfHwhQmwoRi5ELm1hKX0KZnVuY3Rpb24gYnUoKXt2YXIgYT0iMCIsYj0iMCIsYzt2YXIgZD1EdCgpO2M9ZC5hY3RpdmU/ZC5jbXBJZDp2b2lkIDA7dHlwZW9mIGM9PT0ibnVtYmVyIiYmYz49MCYmYzw9NDA5NSYmKGE9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2M+PjYmNjNdLGI9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2MmNjNdKTt2YXIgZT0iMCIsZjt2YXIgZz1EdCgpO2Y9Zy5hY3RpdmU/Zy50Y2ZQb2xpY3lWZXJzaW9uOnZvaWQgMDt0eXBlb2YgZj09PSJudW1iZXIiJiZmPj0wJiZmPD02MyYmKGU9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2ZdKTt2YXIgaD0wO0JtKCkmJihofD0xKTtMdCgpPT09IjEiJiYoaHw9Mik7R3QoKSYmKGh8PTQpO3ZhciBsO3ZhciBuPUR0KCk7bD1uLmVuYWJsZUFkdmVydGlzZXJDb25zZW50TW9kZSE9PQp2b2lkIDA/bi5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGU/IjEiOiIwIjp2b2lkIDA7bD09PSIxIiYmKGh8PTgpO3RsKCkud2FpdFBlcmlvZFRpbWVkT3V0JiYoaHw9MTYpO3JldHVybiIxIithK2IrZSsiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbaF19O3ZhciBjdT17VUE6MSxBVzoyLERDOjMsRzo0LEdGOjUsR1Q6MTIsR1RNOjE0LEhBOjYsTUM6N307CmZ1bmN0aW9uIGR1KGEpe2E9YT09PXZvaWQgMD97fTphO3ZhciBiPUUoNSkuc3BsaXQoIi0iKVswXS50b1VwcGVyQ2FzZSgpLGMsZD17Y3RpZDpFKDUpLERvOkpmKDE1KSxJbzpFKDE0KSxMczpJZig3KT8yOjEsRHQ6YS5wZixjYW5vbmljYWxJZDpFKDYpLG50OihjPUFrKCkpPT1udWxsP3ZvaWQgMDpjLmNhbm9uaWNhbENvbnRhaW5lcklkLEV0OmEuVGc9PT12b2lkIDA/dm9pZCAwOmEuVGc/MTA6MTJ9O2QuY2Fub25pY2FsSWQhPT1hLm1jJiYoZC5tYz1hLm1jKTt2YXIgZT14aygpO2QuVXM9ZT9lLmNhbm9uaWNhbENvbnRhaW5lcklkOnZvaWQgMDtJZig0NSk/KGQuaGk9Y3VbYl0sZC5oaXx8KGQuaGk9MCkpOmQuaGk9RGo/MTM6MTA7SWYoNDcpPyhkLmJrPTAsZC5xcj0yKTpJZig1MCk/ZC5iaz0xOmQuYms9Mzt2YXIgZj1hLGc9ezY6ITF9O0pmKDU0KT09PTI/Z1s3XT0hMDpKZig1NCk9PT0xJiYoZ1syXT0hMCk7aWYoS2Mpe3ZhciBoPUxqKFJqKEtjKSwiaG9zdCIpO2gmJihnWzhdPQpoLm1hdGNoKC9eKHd3d1wuKT9nb29nbGV0YWdtYW5hZ2VyXC5jb20kLyk9PT1udWxsKX12YXIgbDtnWzldPShsPWYuZWYpIT1udWxsP2w6ITE7dmFyIG49RmsoKSxwO2dbMTBdPShwPW49PW51bGw/dm9pZCAwOm4uZnJvbUNvbnRhaW5lckV4ZWN1dGlvbikhPW51bGw/cDohMTtkLnpyPWc7cmV0dXJuIENmKGQsYS5Qbil9Owp2YXIgZnU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9bShldShhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWUsZj1SKGEsZSksZz1RKGEsSC5KLlllKTtNKDU4OSkmJmcmJihlPT09Ri5ELnphfHxlPT09Ri5ELlVhfHxlPT09Ri5ELlBlKSYmdHlwZW9mIGY9PT0ic3RyaW5nIiYmKGY9WnMoZikpO3ZhciBoPW9wKGUsZik7aCYmKCFnfHxlIT09Ri5ELkRkJiZlIT09Ri5ELktkJiZlIT09Ri5ELkVlJiZlIT09Ri5ELkJmfHwoaC52YWx1ZT0iMCIpLE0oNTA0KSYmKGU9PT1GLkQuTWQ/aC5rZXk9ImV2bmlkIjplPT09Ri5ELk5kJiYoaC5rZXk9ImV4Y2lkIikpLGJbaC5rZXldPWgudmFsdWUpfWIuZ3RtPWR1KHttYzpRKGEsSC5KLk5iKSxUZzphLk0uaXNHdG1FdmVudCxlZjpRKGEsSC5KLkNjKX0pO1R0KCkmJihiLmdjcz1iLmdjc3x8VXQoKSk7Yi5nY2Q9Yi5nY2R8fFl0KGEuTSk7YXUoKSYmKGIuZG1hX2Nwcz1adCgpKTtiLmRtYT0kdCgpO3Z0KEV0KCkpJiYKKGIudGNmZD1idSgpKTt2YXIgbD1DcChhKTtsJiYoYi50YWdfZXhwPWwpO2lmKFEoYSxILkouQmspKXtiLnRmdD1TdHJpbmcoTmIoKSk7dmFyIG49cGQoKTtuIT09dm9pZCAwJiYoYi50ZmQ9U3RyaW5nKE1hdGgucm91bmQobikpKX1iLmFwdmU9IjEiO2IuYXB2Zj1uZCgpPyJmIjoibmYiO2ZvLkhbY28uaWEuY2JdIT09Ym8uTWEuVWV8fGZvLktbY28uaWEuY2JdLmlzQ29uc2VudEdyYW50ZWQoKXx8KGIubGltaXRlZF9hZHM9IjEiKTt2YXIgcD1RKGEsSC5KLlhnKTtNKDQ3NCkmJnAhPW51bGwmJnAhPT0iIiYmKGIuX2dzaWQ9cCk7aHQoYSxiLGZ1bmN0aW9uKHEscil7YltxXT1lbmNvZGVVUklDb21wb25lbnQocil9KTtyZXR1cm4gYn07dmFyIGd1PWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5lbmRwb2ludD1hO3RoaXMuZmE9Yzt0aGlzLmphPWQ7dGhpcy5wYXJhbWV0ZXJFbmNvZGluZz1lO3RoaXMuWj1iLnNsaWNlKCl9O2d1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuIFhvKHRoaXMuWil9O2d1LnByb3RvdHlwZS5pc1N1cHBvcnRlZD1mdW5jdGlvbigpe3JldHVybiEwfTtndS5wcm90b3R5cGUuUj1mdW5jdGlvbigpe3ZhciBhPU1tW3RoaXMuZW5kcG9pbnRdKHZvaWQgMCk7cmV0dXJuIFNiKGEsImh0dHBzOi8vIik/YS5zdWJzdHJpbmcoOCk6U2IoYSwiaHR0cDovLyIpP2Euc3Vic3RyaW5nKDcpOmF9O3ZhciBodT1mdW5jdGlvbihhLGIpe3RoaXMubWV0aG9kTmFtZT1hO3RoaXMuUj1ifTtodS5wcm90b3R5cGUuc2VuZFJlcXVlc3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKHRoaXMuaXNTdXBwb3J0ZWQoKSlpZigoYz09bnVsbD92b2lkIDA6Yy5ib2R5KT09PXZvaWQgMHx8dGhpcy5IKCkpdHJ5e3RoaXMuSyhhLGIsYyl9Y2F0Y2goZCl7YS5yZChkKX1lbHNlIGEucmQoIlJlcXVlc3QgbWV0aG9kICIrdGhpcy5tZXRob2ROYW1lKyIgZG9lcyBub3Qgc3VwcG9ydCBhIHJlcXVlc3QgYm9keS4iKTtlbHNlIGEucmQoIlJlcXVlc3QgbWV0aG9kICIrdGhpcy5tZXRob2ROYW1lKyIgaXMgbm90IHN1cHBvcnRlZC4iKX07dmFyIGl1PWZ1bmN0aW9uKCl7aHUuY2FsbCh0aGlzLCJJbWFnZVBpeGVsIiwzKX07d2EoaXUsaHUpO2l1LnByb3RvdHlwZS5pc1N1cHBvcnRlZD1mdW5jdGlvbigpe3JldHVybiEwfTtpdS5wcm90b3R5cGUuSD1mdW5jdGlvbigpe3JldHVybiExfTsKaXUucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiLGMpe1pjKGIsZnVuY3Rpb24oKXthLmpmKCl9LGZ1bmN0aW9uKCl7YS5vbkZhaWx1cmUodm9pZCAwKX0sYz09bnVsbD92b2lkIDA6Yy5hZil9O3ZhciBqdT1mdW5jdGlvbigpe2h1LmNhbGwodGhpcywiU2VuZEJlYWNvbiIsMSl9O3dhKGp1LGh1KTtqdS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4ga2QoKX07anUucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtyZXR1cm4hMH07anUucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiLGMpe2pkKGIsYz09bnVsbD92b2lkIDA6Yy5ib2R5KT9hLmpmKCk6YS5yZCh2b2lkIDApfTt2YXIga3U9ZnVuY3Rpb24oKXtodS5jYWxsKHRoaXMsIkZldGNoIiwxKX07d2Eoa3UsaHUpO2t1LnByb3RvdHlwZS5pc1N1cHBvcnRlZD1mdW5jdGlvbigpe3JldHVybiB5YihBLmZldGNoKX07a3UucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtyZXR1cm4hMH07Cmt1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjKXtBLmZldGNoKGIsYz09bnVsbD92b2lkIDA6Yy5HYikudGhlbihmdW5jdGlvbihkKXtpZihkLm9rKWEucGUoZCk7ZWxzZSBpZihkLnN0YXR1cz09PTApYS5qZigpO2Vsc2UgYS5vbkZhaWx1cmUoIkZldGNoIGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrZC5zdGF0dXMrIi4iKX0pLmNhdGNoKGZ1bmN0aW9uKGQpe2EucmQoZCl9KX07dmFyIGx1PW5ldyBpdSxtdT1uZXcganUsbnU9bmV3IGt1O3ZhciBvdT1mdW5jdGlvbigpe307b3UucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtyZXR1cm5bXX07CnZhciBwdT1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD9bImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXTpiO2d1LmNhbGwodGhpcyxhLGIsMSwhMCwyKX07d2EocHUsZ3UpO3B1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEpe2lmKHRoaXMuWi5sZW5ndGgpe3ZhciBiPVEoYSxILkouRGspO2lmKGIhPT12b2lkIDApcmV0dXJuIGJ9cmV0dXJuIGd1LnByb3RvdHlwZS5LLmNhbGwodGhpcyxhKX07cHUucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdShhKTthLnRhcmdldC5kZXN0aW5hdGlvbklkJiYoYy50aWQ9YS50YXJnZXQuZGVzdGluYXRpb25JZCk7Yi5tZXRob2QgaW5zdGFuY2VvZiBrdT9jLmZtdD0iOCI6Yi5tZXRob2QgaW5zdGFuY2VvZiBqdT9jLmZtdD0iNSI6Yi5tZXRob2QgaW5zdGFuY2VvZiBpdSYmKGMuZm10PSIzIik7cmV0dXJuIGN9O3B1LnByb3RvdHlwZS55YT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuTihhLGIpO3JldHVybiI/IitPYmplY3Qua2V5cyhjKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQrCiI9IitjW2RdfSkuam9pbigiJiIpfTtwdS5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy55YShhLGIpLGU9e307aWYoYi5tZXRob2QgaW5zdGFuY2VvZiBrdSl7ZS5HYj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGxkKTtpZih0aGlzLmVuZHBvaW50PT09NTh8fHRoaXMuZW5kcG9pbnQ9PT01NyllLkdiLm1ldGhvZD0iR0VUIjt0aGlzLmVuZHBvaW50IT09NDV8fHF1LksoYSl8fChlLkdiLmNyZWRlbnRpYWxzPSJvbWl0IixkKz0iJmdhcC51Y2ZiPTEiKX1jKGQsZSl9O3ZhciBxdT1uZXcgcHUoNDUpLHJ1PW5ldyBwdSg0NSxbXSksc3U9bmV3IHB1KDQ2LFtdKSx0dT1mdW5jdGlvbigpe3B1LmNhbGwodGhpcyw2OSl9O3dhKHR1LHB1KTt0dS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oYSl7dmFyIGI9TSg0NzQpJiYoISFSKGEsIl9nc2lkIil8fCEhUShhLEguSi5YZykpLGM9UihhLEYuRC5IZCkhPT0iMSImJighIVIoYSwiZ2NsaWQiKXx8CiEhUihhLCJkY2xpZCIpfHwhIVIoYSwiZ2Nsc3JjIil8fCEhUihhLCJhdWlkIikpO3JldHVybiBifHxjfTt0dS5wcm90b3R5cGUuTj1mdW5jdGlvbihhLGIpe3ZhciBjPWZ1KGEpLGQ9bHAoYSxjKXx8e307T2JqZWN0LmtleXMoZCkubGVuZ3RoPjAmJihiLm1ldGhvZCBpbnN0YW5jZW9mIGt1P2QuZm10PSI4IjpiLm1ldGhvZCBpbnN0YW5jZW9mIGp1P2QuZm10PSI1IjpiLm1ldGhvZCBpbnN0YW5jZW9mIGl1JiYoZC5mbXQ9IjMiKSk7cmV0dXJuIGR9O3ZhciB1dT1uZXcgdHUsdnU9ZnVuY3Rpb24oKXtwdS5jYWxsKHRoaXMsNDUpfTt3YSh2dSxwdSk7dnUucHJvdG90eXBlLlI9ZnVuY3Rpb24oKXtyZXR1cm4gWGooKSsiL2cvZC9jY20vY29sbGVjdCJ9O3Z1LnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9cHUucHJvdG90eXBlLk4uY2FsbCh0aGlzLGEsYik7Y1siZ2FwLjFwZmIiXT0iMSI7cmV0dXJuIGN9O3ZhciB3dT1mdW5jdGlvbihhKXtwdS5jYWxsKHRoaXMsYSxbImFkX3N0b3JhZ2UiLAoiYWRfdXNlcl9kYXRhIl0pfTt3YSh3dSxwdSk7d3UucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz1wdS5wcm90b3R5cGUuTi5jYWxsKHRoaXMsYSxiKTtyZXR1cm4gaHAoYyl9O3ZhciB4dT1uZXcgd3UoNTgpLHl1PW5ldyB3dSg1NyksenU9ZnVuY3Rpb24oKXt9O3dhKHp1LG91KTt6dS5wcm90b3R5cGUuSD1mdW5jdGlvbihhKXt2YXIgYj1xdS5LKGEpLGM9Yj9xdTpzdSxkPVt7ZW5kcG9pbnQ6YyxtZXRob2Q6bmQoKT9udTptdX0se2VuZHBvaW50OmMsbWV0aG9kOmx1fV07Yj9NKDUxNykmJklmKDQ3KSYmZC5wdXNoKHtlbmRwb2ludDpuZXcgdnUsbWV0aG9kOm51fSk6TSg2MDApJiZkLnB1c2goe2VuZHBvaW50OnJ1LG1ldGhvZDpudX0pO3JldHVybiBkfTt6dS5wcm90b3R5cGUuSz1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPSEhUShhLEguSi52ZCksZD1SKGEsRi5ELlBkKT09PSIxIixlPVIoYSxGLkQuSGQpPT09IjEiLGY9cXUuSyhhKSxnPWMmJmQmJiFlJiZmO2lmKGcpe3ZhciBoPQpRYygpfHxPYygpP3h1Onl1O2IucHVzaChbe2VuZHBvaW50OmgsbWV0aG9kOm51fSx7ZW5kcG9pbnQ6aCxtZXRob2Q6bHV9XSl9ZiYmKGd8fFEoYSxILkouaGQpKSYmYi5wdXNoKFt7ZW5kcG9pbnQ6dXUsbWV0aG9kOm5kKCk/bnU6bHV9XSk7cmV0dXJuIGJ9O3ZhciBBdT1uZXcgenU7dmFyIFQ9e1c6e0prOjEsbmo6MixGazozLG1sOjQsR2s6NSx5ZDo2LGtsOjcsTXE6OCxxbjo5LEhrOjEwLElrOjExLEZoOjEyLERtOjEzLEFtOjE0LENtOjE1LHptOjE2LEJtOjE3LHltOjE4LFRvOjE5LHhxOjIwLHlxOjIxLGZqOjIyLHVuOjI0LE9tOjI1LFNrOjI2LFRrOjI3LFJrOjI4LFVrOjI5LHJqOjMwLE9rOjMxLFpvOjMyfX07VC5XW1QuVy5Ka109IkFMTE9XX0lOVEVSRVNUX0dST1VQUyI7VC5XW1QuVy5ual09IlNFUlZFUl9DT05UQUlORVJfVVJMIjtULldbVC5XLkZrXT0iQURTX0RBVEFfUkVEQUNUSU9OIjtULldbVC5XLm1sXT0iQ1VTVE9NRVJfTElGRVRJTUVfVkFMVUUiO1QuV1tULlcuR2tdPSJBTExPV19DVVNUT01fU0NSSVBUUyI7VC5XW1QuVy55ZF09IkFOWV9DT09LSUVfUEFSQU1TIjtULldbVC5XLmtsXT0iQ09PS0lFX0VYUElSRVMiO1QuV1tULlcuTXFdPSJMRUdBQ1lfRU5IQU5DRURfQ09OVkVSU0lPTl9KU19WQVJJQUJMRSI7VC5XW1QuVy5xbl09IlJFU1RSSUNURURfREFUQV9QUk9DRVNTSU5HIjsKVC5XW1QuVy5Ia109IkFMTE9XX0RJU1BMQVlfRkVBVFVSRVMiO1QuV1tULlcuSWtdPSJBTExPV19HT09HTEVfU0lHTkFMUyI7VC5XW1QuVy5GaF09IkdFTkVSQVRFRF9UUkFOU0FDVElPTl9JRCI7VC5XW1QuVy5EbV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX1VOS05PV04iO1QuV1tULlcuQW1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9TVEFOREFSRCI7VC5XW1QuVy5DbV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX1VOSVFVRSI7VC5XW1QuVy56bV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX1BFUl9TRVNTSU9OIjtULldbVC5XLkJtXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfVFJBTlNBQ1RJT05TIjtULldbVC5XLnltXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfSVRFTVNfU09MRCI7VC5XW1QuVy5Ub109IkFEU19PR1RfVjFfVVNBR0UiO1QuV1tULlcueHFdPSJGT1JNX0lOVEVSQUNUSU9OX1BFUk1JU1NJT05fREVOSUVEIjsKVC5XW1QuVy55cV09IkZPUk1fU1VCTUlUX1BFUk1JU1NJT05fREVOSUVEIjtULldbVC5XLmZqXT0iTUlDUk9UQVNLX05PVF9TVVBQT1JURUQiO1QuV1tULlcudW5dPSJTRVRfRU5DUllQVEVEX0RBVEFfVE9fQ0FDSEUiO1QuV1tULlcuT21dPSJHRVRfRU5DUllQVEVEX0RBVEFfRlJPTV9DQUNIRSI7VC5XW1QuVy5Ta109IkNPTkZJR19ERVRFQ1RFRF9XSVRIX05PX1BBUkFNIjtULldbVC5XLlRrXT0iQ09ORklHX0RFVEVDVEVEX1dJVEhfUEFSQU0iO1QuV1tULlcuUmtdPSJDT05GSUdfQ09OU0VOVF9TRVRfQkVGT1JFIjtULldbVC5XLlVrXT0iQ09ORklHX1NFVF9VU0VEX0JFRk9SRSI7VC5XW1QuVy5yal09IlNIQURPV19ET01fQVVUT19QSUkiO1QuV1tULlcuT2tdPSJDQ0RfVVNFUl9EQVRBX1dFQl9PTl9DT05GSUciO1QuV1tULlcuWm9dPSJCTEVOREVEX1VTRVJfREFUQSI7dmFyIEJ1PXt9LEN1PShCdVtGLkQudWldPVQuVy5KayxCdVtGLkQuZGRdPVQuVy5uaixCdVtGLkQueWNdPVQuVy5uaixCdVtGLkQubWJdPVQuVy5GayxCdVtGLkQuR2VdPVQuVy5tbCxCdVtGLkQucmldPVQuVy5HayxCdVtGLkQuSmRdPVQuVy55ZCxCdVtGLkQubmJdPVQuVy55ZCxCdVtGLkQuTGJdPVQuVy55ZCxCdVtGLkQuSWRdPVQuVy55ZCxCdVtGLkQudmNdPVQuVy55ZCxCdVtGLkQuVGJdPVQuVy55ZCxCdVtGLkQuQ2JdPVQuVy5rbCxCdVtGLkQuV2JdPVQuVy5xbixCdVtGLkQuaGhdPVQuVy5IayxCdVtGLkQuU2NdPVQuVy5JayxCdSksRHU9e30sRXU9KER1LnVua25vd249VC5XLkRtLER1LnN0YW5kYXJkPVQuVy5BbSxEdS51bmlxdWU9VC5XLkNtLER1LnBlcl9zZXNzaW9uPVQuVy56bSxEdS50cmFuc2FjdGlvbnM9VC5XLkJtLER1Lml0ZW1zX3NvbGQ9VC5XLnltLER1KTt2YXIgRnU9ZnVuY3Rpb24oYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO3NiKCJHVEFHX0VWRU5UX0ZFQVRVUkVfQ0hBTk5FTCIsYik7YyYmKGEuSFtiXT0hMCl9LHZiPW5ldyBmdW5jdGlvbigpe3RoaXMuSD1bXX07ZnVuY3Rpb24gR3UoYSl7RnUodmIsYSwhMSl9ZnVuY3Rpb24gSHUoYSxiKXt2YXIgYz1iPT09dm9pZCAwPyExOmIsZD12YjtjPWM9PT12b2lkIDA/ITE6Yztmb3IodmFyIGU9T2JqZWN0LmtleXMoYSksZj1tKE9iamVjdC5rZXlzKEN1KSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWcudmFsdWU7ZS5pbmNsdWRlcyhoKSYmRnUoZCxDdVtoXSxjKX19O2Z1bmN0aW9uIEl1KGEsYil7YT9hLnRoZW4oYik6Yih2b2lkIDApfWZ1bmN0aW9uIEp1KGEpe3JldHVybiBQcm9taXNlLmFsbFNldHRsZWQoYSkudGhlbihmdW5jdGlvbihiKXtyZXR1cm4gYi5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMuc3RhdHVzPT09ImZ1bGZpbGxlZCJ9KS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMudmFsdWV9KX0pfWZ1bmN0aW9uIEt1KCl7dmFyIGEsYjtyZXR1cm57cHJvbWlzZTpuZXcgUHJvbWlzZShmdW5jdGlvbihjLGQpe2E9YztiPWR9KSxyZXNvbHZlOmEscmVqZWN0OmJ9fTtmdW5jdGlvbiBMdShhLGIsYyxkLGUsZil7dmFyIGc9Yy5zbGljZSgpLGg7ZD09bnVsbHx8KGg9ZC51dik9PW51bGx8fGguY2FsbChkLGEsYixjLGUpO3ZhciBsPUt1KCksbj1sLnByb21pc2UscD1sLnJlc29sdmUscT1bXSxyPWZ1bmN0aW9uKCl7cChxKTt2YXIgdTtkPT1udWxsfHwodT1kLlJzKT09bnVsbHx8dS5jYWxsKGQsYSxiLGMsZSxxKX0sdD1mdW5jdGlvbigpe3ZhciB1PWcuc2hpZnQoKTt1P3UubWV0aG9kLmlzU3VwcG9ydGVkKCk/TXUoYSxiLHUuZW5kcG9pbnQsZCxxLHUubWV0aG9kLGUsZix0LHIpOnQoKTpyKCl9O3QoKTtyZXR1cm4gbn0KZnVuY3Rpb24gTXUoYSxiLGMsZCxlLGYsZyxoLGwsbil7dmFyIHA9Yy5SKGEpLHE9e3RrOmIsZW5kcG9pbnQ6Yyxpc1ByaW1hcnk6ZyxzYjp2b2lkIDAscGs6ZixqdDp7fX0scj0hMSx0PWZ1bmN0aW9uKHosQyl7aWYocilQKDE4Nyk7ZWxzZSBpZihyPSEwLCF1KXt2YXIgRD1DfHx7fSxJPUQuYm9keSxHPUQuR2IsTj1ELmFmO0M9T2JqZWN0LmZyZWV6ZShuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LEk/e2JvZHk6SX06e30sRz97R2I6R306e30sTj97YWY6Tn06e30pKTtpZihJJiYhZi5IKCkpeCgpLGwoKTtlbHNle3ZhciBTPU51KHopLFc9cFswXT09PSIvIj8iIitwK1M6Imh0dHBzOi8vIitwK1M7cS5zYj1XO3EuanQ9Qzt2YXIgZWE7ZD09bnVsbHx8KGVhPWQuU3MpPT1udWxsfHxlYS5jYWxsKGQsYSxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHEpKTt2YXIgamE9e2Rlc3RpbmF0aW9uSWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxlbmRwb2ludDpjLmVuZHBvaW50LApldmVudElkOmEuTS5ldmVudElkLHByaW9yaXR5SWQ6YS5NLnByaW9yaXR5SWR9O2YuUj09PXZvaWQgMHx8Yy5mYSE9PTImJihjLmZhIT09MXx8ZS5sZW5ndGgpfHxrbi5yZWdpc3RlcihqYSxmLlIsVyk7dmFyIGZhPWZ1bmN0aW9uKGRhLG1hKXt4KCk7aWYocS5zdGF0dXMhPT12b2lkIDApcmV0dXJuIFAoMTkyKSwhMTtxLnN0YXR1cz1kYTtlLnB1c2gocSk7dmFyIFBhO2Q9PW51bGx8fChQYT1kLnVvKT09bnVsbHx8UGEuY2FsbChkLGEsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxxKSxtYSk7cmV0dXJuITB9LHNhPXtGbzpqYSxyZDpmdW5jdGlvbigpe2ZhKDIpJiZsKCl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe2ZhKDMpJiZsKCl9LHBlOmZ1bmN0aW9uKGRhKXtmYShkYS5zdGF0dXM9PT0wPzE6ZGEub2s/MDozLGRhKSYmbigpfSxqZjpmdW5jdGlvbigpe2ZhKDEpJiZuKCl9fTtPdShjLGEsVyxTLEkpO2Yuc2VuZFJlcXVlc3Qoc2EsVyxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LAp7fSxJJiZ7Ym9keTpJfSxHJiZ7R2I6R30sTiYme2FmOk59KSl9fX0sdT0hMSx2LHg9ZnVuY3Rpb24oKXt2IT09dm9pZCAwJiYoQS5jbGVhclRpbWVvdXQodiksdj12b2lkIDApfTtNKDU3NCkmJih2PUEuc2V0VGltZW91dChmdW5jdGlvbigpe3Y9dm9pZCAwO3U9ITA7aWYocS5zdGF0dXM9PT12b2lkIDApe3Euc3RhdHVzPTQ7cS5zYj09PXZvaWQgMCYmKHEuc2I9IltmYWlsZWQgdG8gYnVpbGRdICIrcCk7ZS5wdXNoKHEpO3ZhciB6O2Q9PW51bGx8fCh6PWQudW8pPT1udWxsfHx6LmNhbGwoZCxhLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scSksdm9pZCAwKTtsKCl9fSw1RTMpKTt2YXIgeT17SWM6cCxtZXRob2Q6Zix5djplLGlzUHJpbWFyeTpnLEN0Omh9O3RyeXtjLkgoYSx5LHQpfWNhdGNoKHope3goKSxQKDE4OCksbCgpfX0KZnVuY3Rpb24gT3UoYSxiLGMsZCxlKXtpZihhLmphKXt2YXIgZj1iLnRhcmdldC5kZXN0aW5hdGlvbklkLGc9YS5lbmRwb2ludDtpZihnPT09NDV8fGc9PT00Nnx8Zz09PTY5fHxnPT09NTh8fGc9PT01Nyl7dmFyIGg9L1s/Jl10aWRzPShbXiZdKykvLmV4ZWMoZCk7Zj1oP2RlY29kZVVSSUNvbXBvbmVudChoWzFdKS5zcGxpdCgifiIpOltmXX1NbCh7dGFyZ2V0SWQ6ZixyZXF1ZXN0Om5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30se3VybDpjLHBhcmFtZXRlckVuY29kaW5nOmEucGFyYW1ldGVyRW5jb2RpbmcsZW5kcG9pbnQ6YS5lbmRwb2ludH0sZT97cG9zdEJvZHk6ZX06e30pLHFiOntldmVudElkOmIuTS5ldmVudElkLHByaW9yaXR5SWQ6Yi5NLnByaW9yaXR5SWR9LEZqOntldmVudElkOlEoYixILkoudWYpLHByaW9yaXR5SWQ6UShiLEguSi52Zil9fSl9fQpmdW5jdGlvbiBOdShhKXtyZXR1cm4gYSYmYSE9PSI/Ij9hWzBdIT09Ij8iPyI/Ii5jb25jYXQoYSk6YToiIn07ZnVuY3Rpb24gUHUoYSxiLGMsZCxlKXt2YXIgZjtlPT1udWxsfHwoZj1lLnZ2KT09bnVsbHx8Zi5jYWxsKGUsYSxiKTtpZighYy5sZW5ndGgpe3ZhciBnO2U9PW51bGx8fChnPWUuVHMpPT1udWxsfHxnLmNhbGwoZSxhLGIsW10pO3JldHVybiBQcm9taXNlLnJlc29sdmUoW10pfXZhciBoPVtdLGw9e3RrOmIsbWs6YyxqazpkfTtoLnB1c2goTHUoYSxiLGMsZSwhMCxsKSk7Zm9yKHZhciBuPW0oZCkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpaC5wdXNoKEx1KGEsYixwLnZhbHVlLGUsITEsbCkpO3JldHVybiBKdShoKS50aGVuKGZ1bmN0aW9uKHEpe2Zvcih2YXIgcj1bXSx0PW0ocSksdT10Lm5leHQoKTshdS5kb25lO3U9dC5uZXh0KCkpci5wdXNoLmFwcGx5KHIsdyh1LnZhbHVlKSk7dmFyIHY7ZT09bnVsbHx8KHY9ZS5Ucyk9PW51bGx8fHYuY2FsbChlLGEsYixyKTtyZXR1cm4gcn0pfTtmdW5jdGlvbiBRdShhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKSxkO2I9PW51bGx8fChkPWIud3YpPT1udWxsfHxkLmNhbGwoYixhLGMpO2Zvcih2YXIgZT1bXSxmPW0oYyksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZS5wdXNoKFJ1KGEsZy52YWx1ZSkpO2Zvcih2YXIgaD1bXSxsPW0oZSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7aC5wdXNoKFB1KGEscC50ayxwLm1rLHAuamssYikpfUp1KGgpLnRoZW4oZnVuY3Rpb24ocSl7Zm9yKHZhciByPVtdLHQ9bShxKSx1PXQubmV4dCgpOyF1LmRvbmU7dT10Lm5leHQoKSlyLnB1c2guYXBwbHkocix3KHUudmFsdWUpKTt2YXIgdjtiPT1udWxsfHwodj1iLlFzKT09bnVsbHx8di5jYWxsKGIsYSxjLHIpfSl9CmZ1bmN0aW9uIFJ1KGEsYil7dmFyIGM9ZnVuY3Rpb24oZil7cmV0dXJuIGYubWV0aG9kLmlzU3VwcG9ydGVkKCkmJmYuZW5kcG9pbnQuaXNTdXBwb3J0ZWQoYSkmJmYuZW5kcG9pbnQuSyhhKX0sZD0oYi5IKGEpfHxbXSkuZmlsdGVyKGMpLGU9W107ZC5sZW5ndGgmJihlPShiLksoYSl8fFtdKS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuZmlsdGVyKGMpfSkuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBmLmxlbmd0aD4wfSkpO3JldHVybnt0azpiLG1rOmQsams6ZX19Owp2YXIgU3U9ZnVuY3Rpb24oYSxiKXtpZihNKDUxNykmJklmKDQ3KSYmYT09PTQ1KXJldHVybiBYaigpKyIvZy9kL2NjbS9jb2xsZWN0PyIrYi5zcGxpdCgiPyIpWzFdKyImZ2FwLjFwZmI9MSJ9LFd1PWZ1bmN0aW9uKCl7dmFyIGE9YWwoMzAsZnVuY3Rpb24oKXtyZXR1cm5bXX0pO2lmKGEubGVuZ3RoKXtmb3IodmFyIGI9e30sYz1tKGEpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlLGY9VHUoZS5rZSwiYXB2YyIpLGc9VHUoZS5rZSwidGZ0IiksaD1UdShlLmtlLCJ0ZmQiKSxsPVR1KGUua2UsInRpZCIpLG49Tm0oZS5lbmRwb2ludCxlLmtlKSxwPWJbbl09YltuXXx8e3hrOltdLFpoOltdfTtwLlpoLnB1c2goZSk7bD8ocC54ay5wdXNoKGwpLHAudWR8fChwLnVkPWwpKTpwLnhrLnB1c2goIiIpO2Y9PT0iMSImJihwLlFuPSEwKTtpZihnfHxoKXAuTm49ITB9YS5sZW5ndGg9MDtmb3IodmFyIHE9bShPYmplY3Qua2V5cyhiKSkscj1xLm5leHQoKSx0PXt9OyFyLmRvbmU7dD0Ke3lrOnZvaWQgMH0scj1xLm5leHQoKSl7dmFyIHU9ci52YWx1ZSx2PWJbdV07dC55az12LnhrO3ZhciB4PXQueWsuZmlsdGVyKGZ1bmN0aW9uKEQpe3JldHVybiBmdW5jdGlvbihJLEcpe3JldHVybiBELnlrLmluZGV4T2YoSSk9PT1HfX0odCkpLmZpbHRlcihmdW5jdGlvbihEKXtyZXR1cm4hIUR9KTtpZihNKDQyNykpe3ZhciB5PVV1KHYseCk7UXUoeSx2b2lkIDAsQXUpfWVsc2V7dmFyIHo9dSsiJmFwdmM9Iisodi5Rbj8iMSI6IjAiKTt4Lmxlbmd0aCYmKHorPSImdGlkcz0iK3guam9pbigifiIpKTt2LnVkJiYoeis9IiZ0aWQ9Iit2LnVkKTtpZih2Lk5uKXt6Kz0iJnRmdD0iK1N0cmluZyhOYigpKTt2YXIgQz1wZCgpO0MhPT12b2lkIDAmJih6Kz0iJnRmZD0iK1N0cmluZyhNYXRoLnJvdW5kKEMpKSl9VnUodi5aaFswXS5ldmVudCx6LHYuWmhbMF0uZW5kcG9pbnQseC5sZW5ndGg/eDpbIiJdKX19fX0sVHU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hW2JdO2lmKGMhPT12b2lkIDApcmV0dXJuIGRlbGV0ZSBhW2JdLApjfSxWdT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT17ZGVzdGluYXRpb25JZDphLnRhcmdldC5kZXN0aW5hdGlvbklkLGVuZHBvaW50OmMsZXZlbnRJZDphLk0uZXZlbnRJZCxwcmlvcml0eUlkOmEuTS5wcmlvcml0eUlkfSxmPWZ1bmN0aW9uKGwsbil7dmFyIHA9YitYdShsKTtUbChwLGEsYyxkKTtyZXR1cm4gbihwKX07aWYobmQoKSl7dmFyIGc9ZnVuY3Rpb24oKXt9LGg9U3UoYyxiKTtoIT09dm9pZCAwJiYoZz1mdW5jdGlvbigpe1luKGUsaCtYdSg4KSx2b2lkIDAse1FnOiEwfSl9KTtmKDgsZnVuY3Rpb24obCl7WW4oZSxsLHZvaWQgMCx7UWc6ITB9LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe1pjKGIrWHUoMyksZnVuY3Rpb24oKXt9LGcpfSl9KX1lbHNlIGYoNSxmdW5jdGlvbihsKXtyZXR1cm4gV24oZSxsKX0pfHxaYyhiK1h1KDMpKX0sVXU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLlpoWzBdLGQ9eyJfJmFwdmMiOmEuUW4/IjEiOiIwIn07Yi5sZW5ndGg+MCYmKGRbIl8mdGlkcyJdPQpiLmpvaW4oIn4iKSk7aWYoYS5Obil7ZFsiXyZ0ZnQiXT1TdHJpbmcoTmIoKSk7dmFyIGU9cGQoKTtlIT09dm9pZCAwJiYoZFsiXyZ0ZmQiXT1TdHJpbmcoTWF0aC5yb3VuZChlKSkpfXJldHVybiBZdShjLmV2ZW50LGEudWR8fCIiLGQpfSxZdT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxhLnRhcmdldCx7ZGVzdGluYXRpb25JZDpifSksZT1adShhLHt0YXJnZXQ6ZH0pO2J8fFUoZSxGLkQuUWUpO2Zvcih2YXIgZj1tKE9iamVjdC5rZXlzKGMpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZTtVKGUsaCxjW2hdKX1yZXR1cm4gZX0sWHU9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgODpjYXNlIDM6Y2FzZSA1OnJldHVybiImZm10PSIrYTtkZWZhdWx0OnJldHVybiIifX0sJHU9ZnVuY3Rpb24oYSxiKXthPVp1KGEpO1YoYSxILkouRGssWG8oZnApKTtUdCgpJiZVKGEsIl8mZ2NzIixVdCgpKTsKVShhLCJfJmdjZCIsWXQoYS5NKSk7dmFyIGM9WG8oZnApPzQ1OjQ2LGQ9ZnVuY3Rpb24oKXt2YXIgZj1iLnRpZDtpZihNKDQyNykpe3ZhciBnPVl1KGEsZixiKTtRdShnLHZvaWQgMCxBdSl9ZWxzZXt2YXIgaD1ObShjLGIpO1Z1KGEsaCxjLFtmXSl9fTtpZih5YihBLnF1ZXVlTWljcm90YXNrKSl7dmFyIGU9YWwoMzAsZnVuY3Rpb24oKXtyZXR1cm5bXX0pO2lmKGUubGVuZ3RoPT09MCl0cnl7QS5xdWV1ZU1pY3JvdGFzayhXdSl9Y2F0Y2goZil7R3UoVC5XLmZqKTtkKCk7cmV0dXJufWI9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxiKTtlLnB1c2goe2V2ZW50OmEsa2U6YixlbmRwb2ludDpjfSl9ZWxzZSBHdShULlcuZmopLGQoKX07dmFyIFg9e1Y6e01rOiJjYWxsX2NvbnZlcnNpb24iLHpkOiJjY21fY29udmVyc2lvbiIsUWs6ImNvbW1vbl9hdyIseGE6ImNvbnZlcnNpb24iLHdxOiJmbG9vZGxpZ2h0IixZZDoiZ2FfY29udmVyc2lvbiIsWmQ6ImdjcF9yZW1hcmtldGluZyIsS2E6InBhZ2VfdmlldyIsdWI6InJlbWFya2V0aW5nIixPYjoidXNlcl9kYXRhX2xlYWQiLEZiOiJ1c2VyX2RhdGFfd2ViIn19O2Z1bmN0aW9uIGJ2KGEsYil7YiYmR2IoYixmdW5jdGlvbihjLGQpe3R5cGVvZiBkIT09Im9iamVjdCImJmQhPT12b2lkIDAmJihhWyIxcC4iK2NdPVN0cmluZyhkKSl9KX07dmFyIG12PXtOZzoidmFsdWUiLHBiOiJjb252ZXJzaW9uQ291bnQiLE9nOjF9LG52PXtOZzoidGltZW91dHMiLHBiOiJ0aW1lb3V0cyIsT2c6MH0sb3Y9e05nOiJlb3BDb3VudCIscGI6ImVuZE9mUGFnZUNvdW50IixPZzowfSxwdj17Tmc6ImVycm9ycyIscGI6ImVycm9ycyIsT2c6MH0scXY9W212LG52LHB2LG92XTtmdW5jdGlvbiBydihhLGIpe2I9Yj09PXZvaWQgMD8xOmI7aWYoIXN2KGEpKXJldHVybnt9O3ZhciBjPXR2KHF2KSxkPWNbYS5wYl07aWYoZD09PXZvaWQgMHx8ZD09PS0xKXJldHVybiBjO3ZhciBlPXt9LGY9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjLChlW2EucGJdPWQrYixlKSk7cmV0dXJuIHV2KGYpP2Y6Y30KZnVuY3Rpb24gdHYoYSl7dmFyIGI7YTp7dmFyIGM9bnIoImdjbF9jdHIiKTtpZihjLmVycm9yPT09MCYmYy52YWx1ZSYmdHlwZW9mIGMudmFsdWU9PT0ib2JqZWN0Iil7dmFyIGQ9Yy52YWx1ZTt0cnl7Yj0idmFsdWUiaW4gZCYmdHlwZW9mIGQudmFsdWU9PT0ib2JqZWN0Ij9kLnZhbHVlOnZvaWQgMDticmVhayBhfWNhdGNoKHApe319Yj12b2lkIDB9Zm9yKHZhciBlPWIsZj17fSxnPW0oYSksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciBsPWgudmFsdWU7aWYoZSYmc3YobCkpe3ZhciBuPWVbbC5OZ107bj09PXZvaWQgMHx8TnVtYmVyLmlzTmFOKG4pP2ZbbC5wYl09LTE6ZltsLnBiXT1OdW1iZXIobil9ZWxzZSBmW2wucGJdPS0xfXJldHVybiBmfQpmdW5jdGlvbiB1dihhLGIpe2I9Ynx8e307Zm9yKHZhciBjPU5iKCksZD11cShiLGMsITApLGU9e30sZj1tKHF2KSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZSxsPWFbaC5wYl07bCE9PXZvaWQgMCYmbCE9PS0xJiYoZVtoLk5nXT1sKX1lLmNyZWF0aW9uVGltZU1zPWM7cmV0dXJuIGtyKCJnY2xfY3RyIix7dmFsdWU6ZSxleHBpcmVzOk51bWJlcihkLmV4cGlyZXMpfSk9PT0wPyEwOiExfWZ1bmN0aW9uIHN2KGEpe3JldHVybiBCbChbImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXSk/IWEuZnR8fFlmKGEuZnQpOiExfWZ1bmN0aW9uIHZ2KGEpe3JldHVybiBCbChbImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXSk/IWEuQXN8fFlmKGEuQXMpOiExfTtmdW5jdGlvbiB3digpe2lmKHh2KCkpe3ZhciBhPW5yKCJsYXN0X2NvbnZzIik7aWYoYS5lcnJvcj09PTAmJmEudmFsdWUmJnR5cGVvZiBhLnZhbHVlPT09Im9iamVjdCIpe3ZhciBiPWEudmFsdWU7aWYoYi52YWx1ZSYmQXJyYXkuaXNBcnJheShiLnZhbHVlKSl7dmFyIGM9Yi52YWx1ZTtpZighKGMubGVuZ3RoPjEpKXtmb3IodmFyIGQ9W10sZT1tKGMpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2lmKHR5cGVvZiBnIT09Im9iamVjdCJ8fGc9PT1udWxsfHx0eXBlb2YgZy5yYW5kb20hPT0ibnVtYmVyInx8dHlwZW9mIGcubGFiZWwhPT0ic3RyaW5nInx8Zy5sYWJlbC5sZW5ndGg+MjAwKXJldHVybjtkLnB1c2goe3JhbmRvbTpnLnJhbmRvbSxsYWJlbDpnLmxhYmVsfSl9cmV0dXJuIGR9fX19fQpmdW5jdGlvbiB5dihhLGIpeyF4digpfHxhLmxlbmd0aD4xfHxhLmxlbmd0aD09PTEmJmFbMF0ubGFiZWwubGVuZ3RoPjIwMHx8KGI9Ynx8e30sa3IoImxhc3RfY29udnMiLHt2YWx1ZTphLGV4cGlyZXM6TnVtYmVyKHVxKGIpLmV4cGlyZXMpfSkpfWZ1bmN0aW9uIHh2KCl7cmV0dXJuIEJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKSYmWWYoMTEpfTtmdW5jdGlvbiB6dihhKXt2YXIgYj1NYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMjE0NzQ4MzY0Nyk7cmV0dXJuIGE/U3RyaW5nKGJebmcoYSkmMjE0NzQ4MzY0Nyk6U3RyaW5nKGIpfWZ1bmN0aW9uIEF2KGEpe3JldHVyblt6dihhKSxNYXRoLnJvdW5kKE5iKCkvMUUzKV0uam9pbigiLiIpfWZ1bmN0aW9uIEJ2KGEsYixjLGQsZSl7dmFyIGY9cnEoYiksZztyZXR1cm4oZz1ncShhLGYsc3EoYyksZCxlKSk9PW51bGw/dm9pZCAwOmcuQ3J9O3ZhciBDdj1bIjEiXSxEdj17fSxFdj17fTtmdW5jdGlvbiBGdihhKXtyZXR1cm4gRXZbR3YoYSldfWZ1bmN0aW9uIEh2KGEsYil7Yj1iPT09dm9pZCAwPyEwOmI7dmFyIGM9R3YoYS5wcmVmaXgpO2lmKER2W2NdKUl2KGEpLEp2KGEpO2Vsc2UgaWYoS3YoYyxhLnBhdGgsYS5kb21haW4pKXt2YXIgZD1GdihhLnByZWZpeCl8fHtpZDp2b2lkIDAsa2M6dm9pZCAwfTtiJiZMdihhLGQpO0l2KGEpO0p2KGEpfWVsc2V7dmFyIGU9VGooImF1aWRkYyIpO2lmKGUpc2IoIlRBR0dJTkciLDE3KSxEdltjXT1lO2Vsc2UgaWYoYil7dmFyIGY9R3YoYS5wcmVmaXgpLGc9QXYoKTtNdihmLGcsYSk7S3YoYyxhLnBhdGgsYS5kb21haW4pO0l2KGEsITApO0p2KGEsITApfX19CmZ1bmN0aW9uIEl2KGEsYil7KGI9PT12b2lkIDA/MDpiKSYmc3YobXYpJiZvcigiZ2NsX2N0ciIpO2lmKHZ2KG12KSYmdHYoW212XSlbbXYucGJdPT09LTEpe2Zvcih2YXIgYz17fSxkPShjW212LnBiXT0wLGMpLGU9bShxdiksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7ZyE9PW12JiZ2dihnKSYmKGRbZy5wYl09MCl9dXYoZCxhKX19ZnVuY3Rpb24gSnYoYSxiKXsoYj09PXZvaWQgMD8wOmIpJiZ4digpJiZvcigibGFzdF9jb252cyIpOyFCbChbImFkX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiXSl8fCFZZigxMil8fHd2KCl8fHl2KFtdLGEpfQpmdW5jdGlvbiBMdihhLGIpe3ZhciBjPUd2KGEucHJlZml4KSxkPUR2W2NdO2lmKGQpe3ZhciBlPWQuc3BsaXQoIi4iKTtpZihlLmxlbmd0aD09PTIpe3ZhciBmPU51bWJlcihlWzFdKXx8MDtpZihmKXt2YXIgZz1kO1lmKDE5KSYmYi5maT9nPWQrIi4iKyhiLnNlc3Npb25JZHx8Ii0uLSIpKyIuIisoYi5rYz9iLmtjOk1hdGguZmxvb3IoTmIoKS8xRTMpKSsiLiIrYi5maSsiLiIrKGIuTGM/Yi5MYzpNYXRoLmZsb29yKE5iKCkvMUUzKSk6Yi5zZXNzaW9uSWQmJihnPWQrIi4iK2Iuc2Vzc2lvbklkKyIuIisoYi5rYz9iLmtjOk1hdGguZmxvb3IoTmIoKS8xRTMpKSk7TXYoYyxnLGEsZioxRTMpfX19fWZ1bmN0aW9uIE12KGEsYixjLGQpe3ZhciBlO2U9WyIxIix0cShjLmRvbWFpbixjLnBhdGgpLGJdLmpvaW4oIi4iKTt2YXIgZj11cShjLGQpO2YuTWM9TnYoKTtvcShhLGUsZil9CmZ1bmN0aW9uIEt2KGEsYixjKXt2YXIgZD1CdihhLGIsYyxDdixOdigpKTtpZighZClyZXR1cm4hMTtPdihhLGQpO3JldHVybiEwfWZ1bmN0aW9uIE92KGEsYil7dmFyIGM9Yi5zcGxpdCgiLiIpO2lmKGMubGVuZ3RoPT09MylFdlthXT17c2Vzc2lvbklkOmNbMF0rIi4iK2NbMV0sa2M6TnVtYmVyKGNbMl0pfHwwLExjOjB9O2Vsc2UgaWYoYy5sZW5ndGg+PTImJihEdlthXT1jWzBdKyIuIitjWzFdLGMuc2hpZnQoKSxjLnNoaWZ0KCksYy5sZW5ndGg+PTMpKXt2YXIgZD17c2Vzc2lvbklkOmNbMF09PT0iLSI/dm9pZCAwOmNbMF0rIi4iK2NbMV0sa2M6TnVtYmVyKGNbMl0pfHwwLExjOjB9O2lmKFlmKDE5KSYmYy5sZW5ndGg+PTYpe3ZhciBlPWNbM10rIi4iK2NbNF0sZj1OdW1iZXIoY1s1XSl8fDA7ZSYmZiE9PTAmJihkLmZpPWUsZC5MYz1mKX1FdlthXT1kfX1mdW5jdGlvbiBHdihhKXtyZXR1cm4oYXx8Il9nY2wiKSsiX2F1In0KZnVuY3Rpb24gUHYoYSl7ZnVuY3Rpb24gYigpe0JsKGMpJiZhKCl9dmFyIGM9TnYoKTtIbChmdW5jdGlvbigpe2IoKTtCbChjKXx8SWwoYixjKX0sYyl9ZnVuY3Rpb24gUXYoYSl7dmFyIGI9VXEoITApLGM9R3YoYS5wcmVmaXgpO1B2KGZ1bmN0aW9uKCl7dmFyIGQ9YltjXTtpZihkKXtPdihjLGQpO3ZhciBlPU51bWJlcihEdltjXS5zcGxpdCgiLiIpWzFdKSoxRTM7aWYoZSl7c2IoIlRBR0dJTkciLDE2KTt2YXIgZj11cShhLGUpO2YuTWM9TnYoKTt2YXIgZz1bIjEiLHRxKGEuZG9tYWluLGEucGF0aCksZF0uam9pbigiLiIpO29xKGMsZyxmKX19fSl9ZnVuY3Rpb24gUnYoYSxiLGMsZCxlKXtlPWV8fHt9O3ZhciBmPWZ1bmN0aW9uKCl7dmFyIGc9e30saD1CdihhLGUucGF0aCxlLmRvbWFpbixDdixOdigpKTtoJiYoZ1thXT1oKTtyZXR1cm4gZ307UHYoZnVuY3Rpb24oKXthcihmLGIsYyxkKX0pfQpmdW5jdGlvbiBOdigpe3JldHVyblsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdfTt2YXIgVnY9ImVtYWlsIGVtYWlsX2FkZHJlc3Mgc2hhMjU2X2VtYWlsX2FkZHJlc3MgcGhvbmVfbnVtYmVyIHNoYTI1Nl9waG9uZV9udW1iZXIgZmlyc3RfbmFtZSBsYXN0X25hbWUiLnNwbGl0KCIgIiksV3Y9ImZpcnN0X25hbWUgc2hhMjU2X2ZpcnN0X25hbWUgbGFzdF9uYW1lIHNoYTI1Nl9sYXN0X25hbWUgc3RyZWV0IHNoYTI1Nl9zdHJlZXQgY2l0eSByZWdpb24gY291bnRyeSBwb3N0YWxfY29kZSIuc3BsaXQoIiAiKTtmdW5jdGlvbiBYdihhLGIpe2lmKCFiLl90YWdfbWV0YWRhdGEpe2Zvcih2YXIgYz17fSxkPTAsZT0wO2U8YS5sZW5ndGg7ZSsrKWQrPVl2KGFbZV0sYixjKT8xOjA7ZD4wJiYoYi5fdGFnX21ldGFkYXRhPWMpfX0KZnVuY3Rpb24gWXYoYSxiLGMpe3ZhciBkPWJbYV07aWYoZD09PXZvaWQgMHx8ZD09PW51bGwpcmV0dXJuITE7Y1thXT1BcnJheS5pc0FycmF5KGQpP2QubWFwKGZ1bmN0aW9uKCl7cmV0dXJue21vZGU6ImMifX0pOnttb2RlOiJjIn07cmV0dXJuITB9ZnVuY3Rpb24gWnYoYSl7aWYoTSg1MjMpJiZhKXtYdihWdixhKTtmb3IodmFyIGI9QmIoYS5hZGRyZXNzKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY107ZCYmWHYoV3YsZCl9dmFyIGU9YS5ob21lX2FkZHJlc3M7ZSYmWHYoV3YsZSl9fQpmdW5jdGlvbiAkdihhLGIsYyl7ZnVuY3Rpb24gZChmLGcpe2c9U3RyaW5nKGcpLnN1YnN0cmluZygwLDEwMCk7ZS5wdXNoKCIiK2YrZW5jb2RlVVJJQ29tcG9uZW50KGcpKX1pZighYylyZXR1cm4iIjt2YXIgZT1bXTtkKCJpIixTdHJpbmcoYSkpO2QoImYiLGIpO2MubW9kZSYmZCgibSIsYy5tb2RlKTtjLmlzUHJlSGFzaGVkJiZkKCJwIiwiMSIpO2MucmF3TGVuZ3RoJiZkKCJyIixTdHJpbmcoYy5yYXdMZW5ndGgpKTtjLm5vcm1hbGl6ZWRMZW5ndGgmJmQoIm4iLFN0cmluZyhjLm5vcm1hbGl6ZWRMZW5ndGgpKTtjLmxvY2F0aW9uJiZkKCJsIixjLmxvY2F0aW9uKTtjLnNlbGVjdG9yJiZkKCJzIixjLnNlbGVjdG9yKTtyZXR1cm4gZS5qb2luKCIuIil9O3ZhciBhdz12b2lkIDA7ZnVuY3Rpb24gYncoKXtpZighYXcpe3ZhciBhPW9tKGptLmJhLm9wLG5ldyBNYXApO2F3PW5ldyBvZyhhKX1yZXR1cm4gYXd9Owp2YXIgY3c9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIGE7Zm9yKHZhciBiPXt9LGM9bShPYmplY3Qua2V5cyhhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7ZSE9PSJhZGRyZXNzIiYmZSE9PSJwaG9uZV9udW1iZXIiJiZlIT09InNoYTI1Nl9waG9uZV9udW1iZXIiJiYoYltlXT1hW2VdKX1yZXR1cm4gYn0sZnc9ZnVuY3Rpb24oYSl7dmFyIGI9TSg1MjMpLGM9WyJ0di4xIl0sZD1bInR2ZC4xIl0sZT1kdyhhKTtpZihlKXJldHVybiBjLnB1c2goZSkse2hhc1VwZDohMSxPbzpjLmpvaW4oIn4iKSxZbjpjLmpvaW4oIn4iKSxlbmNyeXB0aW9uS2V5U3RyaW5nOnZvaWQgMCxpaTp7fSxtZXRhZGF0YVBhcmFtOmI/ZC5qb2luKCJ+Iik6dm9pZCAwfTt2YXIgZj17fSxnPTA7dmFyIGg9MCxsPWV3KGEsZnVuY3Rpb24ocSxyLHQpe2grKzt2YXIgdT1xLnZhbHVlLHY7CmlmKHQpe3ZhciB4PXIrIl9fIitnKys7dj0iJHt1c2VyRGF0YS4iK3grInxzaGEyNTZ9IjtmW3hdPXV9ZWxzZSB2PWVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQodSkpO3EuaW5kZXghPT12b2lkIDAmJihyKz1xLmluZGV4KTtjLnB1c2gocisiLiIrdik7aWYoYil7dmFyIHk9JHYoaCxyLHEubWV0YWRhdGEpO3kmJmQucHVzaCh5KX19KS5oYXNVcGQsbj1kLmpvaW4oIn4iKTt2YXIgcD1jLmpvaW4oIn4iKTtyZXR1cm57aGFzVXBkOmwsT286cCxpaTp7dXNlckRhdGE6Zn0sWW46InR2LjF+JHsiKyhwKyJ8IisoTSg1NTUpPyJlbmNyeXB0X3dpdGhfbWVtbyI6ImVuY3J5cHQiKSsifSIpLGVuY3J5cHRpb25LZXlTdHJpbmc6RSg0MyksbWV0YWRhdGFQYXJhbTpiP246dm9pZCAwfX0saHc9ZnVuY3Rpb24oYSl7aWYoIShhIT1udWxsJiZPYmplY3Qua2V5cyhhKS5sZW5ndGg+MCkpcmV0dXJuITE7CnZhciBiPWd3KGEpO3JldHVybiBldyhiLGZ1bmN0aW9uKCl7fSkuaGFzVXBkfSxldz1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD9mdW5jdGlvbigpe306Yjtmb3IodmFyIGM9ITEsZD0hMSxlPW0oYSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7aWYoZy52YWx1ZSl7dmFyIGg9aXdbZy5uYW1lXTtpZihoKXt2YXIgbD1qdyhnKTtsJiYoYz0hMCk7ZD0hMDtiKGcsaCxsKX19fXJldHVybntoYXNVcGQ6ZCxoYXNVcGRUb0hhc2g6Y319LGp3PWZ1bmN0aW9uKGEpe3ZhciBiPWt3KGEubmFtZSksYz0vXmVcZCskLy50ZXN0KGEudmFsdWUpLGQ7aWYoZD1iJiYhYyl7dmFyIGU9YS52YWx1ZTtkPSEobHcudGVzdChlKXx8eWkudGVzdChlKSl9cmV0dXJuIGR9LGt3PWZ1bmN0aW9uKGEpe3JldHVybiBtdy5pbmRleE9mKGEpIT09LTF9LHN3PWZ1bmN0aW9uKGEsYixjKXtpZih5YihBLlByb21pc2UpKXRyeXt2YXIgZD0hMTt2YXIgZT1ndyhhLGQpLGY9bncoZSkudGhlbihmdW5jdGlvbihoKXt2YXIgbD1oLnliLG49bC5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIVNiKHEubmFtZSwicmF3Iil9KSxwPW93KHt5YjpufSk7cmV0dXJue3Jlc3VsdDp7cGFyYW06cC5wYXJhbSxoYXNVcGRUb0hhc2g6cC5oYXNVcGRUb0hhc2gsaGFzVXBkOnAuaGFzVXBkLGhhZEVycm9yOnAuaGFkRXJyb3IsbWV0YWRhdGFQYXJhbTpwLm1ldGFkYXRhUGFyYW19LHliOmx9fSk7cmV0dXJuIGYudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gaC5yZXN1bHR9KX1jYXRjaChoKXt9fSxxdz1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA7cmV0dXJuIGJ9LG93PWZ1bmN0aW9uKGEpe3ZhciBiPU0oNTIzKSxjPWEueWIsZD1bInR2LjEiXSxlPVsidHZkLjEiXSxmPWR3KGMpO2lmKGYpcmV0dXJuIGQucHVzaChmKSx7cGFyYW06ZC5qb2luKCJ+IiksaGFzVXBkVG9IYXNoOiExLGhhc1VwZDohMSxoYWRFcnJvcjohMCxtZXRhZGF0YVBhcmFtOmI/ZS5qb2luKCJ+Iik6dm9pZCAwfTt2YXIgZz1jLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4hancocSl9KSxoPTAsbD1ldyhnLGZ1bmN0aW9uKHEscil7aCsrO3ZhciB0PXEudmFsdWUsdT1xLmluZGV4O3UhPT12b2lkIDAmJihyKz11KTtkLnB1c2gocisiLiIrdCk7aWYoYil7dmFyIHY9JHYoaCxyLHEubWV0YWRhdGEpO3YmJmUucHVzaCh2KX19KSxuPWwuaGFzVXBkVG9IYXNoLHA9bC5oYXNVcGQ7cmV0dXJue3BhcmFtOmVuY29kZVVSSUNvbXBvbmVudChkLmpvaW4oIn4iKSksCmhhc1VwZFRvSGFzaDpuLGhhc1VwZDpwLGhhZEVycm9yOiExLG1ldGFkYXRhUGFyYW06Yj9lLmpvaW4oIn4iKTp2b2lkIDB9fSxkdz1mdW5jdGlvbihhKXtpZihhLmxlbmd0aD09PTEmJmFbMF0ubmFtZT09PSJlcnJvcl9jb2RlIilyZXR1cm4gaXcuZXJyb3JfY29kZSsiLiIrYVswXS52YWx1ZX0scHc9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg9PT0xJiZhWzBdLm5hbWU9PT0iZXJyb3JfY29kZSIpcmV0dXJuITE7Zm9yKHZhciBiPW0oYSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWMudmFsdWU7aWYoaXdbZC5uYW1lXSYmZC52YWx1ZSlyZXR1cm4hMH1yZXR1cm4hMX0sZ3c9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1bXTtpZihBLmxvY2F0aW9uLnByb3RvY29sIT09Imh0dHBzOiIpcmV0dXJuIGMucHVzaCh7bmFtZToiZXJyb3JfY29kZSIsdmFsdWU6ImUzIixpbmRleDp2b2lkIDB9KSxjO3ZhciBkPWMucHVzaCxlPWQuYXBwbHksZj1bXSwKZz1mLmNvbmNhdCxoLGw9YS5fdGFnX21ldGFkYXRhfHx7fTtoPVtdLmNvbmNhdCh3KHR3KHtuYW1lOiJlbWFpbCIscmF3OmEuZW1haWwsU2E6YS5zaGEyNTZfZW1haWxfYWRkcmVzcyxhYjpsLmVtYWlsLG1kOmwuc2hhMjU2X2VtYWlsX2FkZHJlc3N9LHV3KSksdyh0dyh7bmFtZToicGhvbmVfbnVtYmVyIixyYXc6YS5waG9uZV9udW1iZXIsU2E6YS5zaGEyNTZfcGhvbmVfbnVtYmVyLGFiOmwucGhvbmVfbnVtYmVyLG1kOmwuc2hhMjU2X3Bob25lX251bWJlcn0sdncpKSk7dmFyIG49dyhoKSxwLHE9YS5fdGFnX21ldGFkYXRhfHx7fSxyPWEuaG9tZV9hZGRyZXNzfHx7fSx0PXIuX3RhZ19tZXRhZGF0YXx8e307cD1bXS5jb25jYXQodyh0dyh7bmFtZToiZmlyc3RfbmFtZSIscmF3OmEuZmlyc3RfbmFtZSxTYTphLnNoYTI1Nl9maXJzdF9uYW1lLGFiOnEuZmlyc3RfbmFtZSxtZDpxLnNoYTI1Nl9maXJzdF9uYW1lfSx3dyh4dykpKSx3KHR3KHtuYW1lOiJsYXN0X25hbWUiLHJhdzphLmxhc3RfbmFtZSwKU2E6YS5zaGEyNTZfbGFzdF9uYW1lLGFiOnEubGFzdF9uYW1lLG1kOnEuc2hhMjU2X2xhc3RfbmFtZX0sd3coeHcpKSksdyh0dyh7bmFtZToic3RyZWV0IixyYXc6ci5zdHJlZXQsU2E6ci5zaGEyNTZfc3RyZWV0LGFiOnQuc3RyZWV0LG1kOnQuc2hhMjU2X3N0cmVldH0sd3coeXcpKSksdyh0dyh7bmFtZToiY2l0eSIscmF3OnIuY2l0eSxhYjp0LmNpdHl9LHd3KHl3KSkpLHcodHcoe25hbWU6InBvc3RhbF9jb2RlIixyYXc6ci5wb3N0YWxfY29kZSxhYjp0LnBvc3RhbF9jb2RlfSx3dyh6dykpKSx3KHR3KHtuYW1lOiJyZWdpb24iLHJhdzpyLnJlZ2lvbixhYjp0LnJlZ2lvbn0sd3coeXcpKSksdyh0dyh7bmFtZToiY291bnRyeSIscmF3OnIuY291bnRyeSxhYjp0LmNvdW50cnl9LHd3KHp3KSkpKTtmb3IodmFyIHU9dyhwKSx2PVtdLHg9QmIoYS5hZGRyZXNzfHx7fSkseT0wO3k8eC5sZW5ndGg7eSsrKXtmb3IodmFyIHo9eFt5XSxDPXouX3RhZ19tZXRhZGF0YXx8e30sRD1bXS5jb25jYXQodyh0dyh7bmFtZToiZmlyc3RfbmFtZSIsCnJhdzp6LmZpcnN0X25hbWUsU2E6ei5zaGEyNTZfZmlyc3RfbmFtZSxhYjpDLmZpcnN0X25hbWUsbWQ6Qy5zaGEyNTZfZmlyc3RfbmFtZX0seHcpKSx3KHR3KHtuYW1lOiJsYXN0X25hbWUiLHJhdzp6Lmxhc3RfbmFtZSxTYTp6LnNoYTI1Nl9sYXN0X25hbWUsYWI6Qy5sYXN0X25hbWUsbWQ6Qy5zaGEyNTZfbGFzdF9uYW1lfSx4dykpLHcodHcoe25hbWU6InN0cmVldCIscmF3Onouc3RyZWV0LFNhOnouc2hhMjU2X3N0cmVldCxhYjpDLnN0cmVldCxtZDpDLnNoYTI1Nl9zdHJlZXR9LHl3KSksdyh0dyh7bmFtZToiY2l0eSIscmF3OnouY2l0eSxhYjpDLmNpdHl9LHl3KSksdyh0dyh7bmFtZToicG9zdGFsX2NvZGUiLHJhdzp6LnBvc3RhbF9jb2RlLGFiOkMucG9zdGFsX2NvZGV9LHp3KSksdyh0dyh7bmFtZToicmVnaW9uIixyYXc6ei5yZWdpb24sYWI6Qy5yZWdpb259LHl3KSksdyh0dyh7bmFtZToiY291bnRyeSIscmF3OnouY291bnRyeSxhYjpDLmNvdW50cnl9LHp3KSkpLEk9MDtJPApELmxlbmd0aDtJKyspRFtJXS5pbmRleD15O3YucHVzaC5hcHBseSh2LHcoRCkpfWUuY2FsbChkLGMsZy5jYWxsKGYsbix1LHcodikpKTtpZihiJiZCcCgpKXt2YXIgRz1jLnB1c2gsTj1HLmFwcGx5LFM9W107Uy5wdXNoLmFwcGx5KFMsW10uY29uY2F0KHcoQXcoe25hbWU6InJhd19lbWFpbCIscmF3OmEuZW1haWwsU2E6YS5zaGEyNTZfZW1haWxfYWRkcmVzc30pKSx3KEF3KHtuYW1lOiJyYXdfcGhvbmVfbnVtYmVyIixyYXc6YS5waG9uZV9udW1iZXIsU2E6YS5zaGEyNTZfcGhvbmVfbnVtYmVyfSkpKSk7Zm9yKHZhciBXPUJiKGEuYWRkcmVzc3x8e30pLGVhPTA7ZWE8Vy5sZW5ndGg7ZWErKyl7dmFyIGphPVdbZWFdO1MucHVzaC5hcHBseShTLFtdLmNvbmNhdCh3KEF3KHtuYW1lOiJyYXdfZmlyc3RfbmFtZSIscmF3OmphLmZpcnN0X25hbWUsU2E6amEuc2hhMjU2X2ZpcnN0X25hbWV9LGVhKSksdyhBdyh7bmFtZToicmF3X2xhc3RfbmFtZSIscmF3OmphLmxhc3RfbmFtZSxTYTpqYS5zaGEyNTZfbGFzdF9uYW1lfSwKZWEpKSx3KEF3KHtuYW1lOiJyYXdfc3RyZWV0IixyYXc6amEuc3RyZWV0LFNhOmphLnNoYTI1Nl9zdHJlZXR9LGVhKSkpKX1pZihhLmZpcnN0X25hbWV8fGEuaG9tZV9hZGRyZXNzKXtTLnB1c2guYXBwbHkoUyxbXS5jb25jYXQodyhBdyh7bmFtZToicmF3X2ZpcnN0X25hbWUiLHJhdzphLmZpcnN0X25hbWUsU2E6YS5zaGEyNTZfZmlyc3RfbmFtZX0pKSx3KEF3KHtuYW1lOiJyYXdfbGFzdF9uYW1lIixyYXc6YS5sYXN0X25hbWUsU2E6YS5zaGEyNTZfbGFzdF9uYW1lfSkpKSk7dmFyIGZhPWEuaG9tZV9hZGRyZXNzfHx7fTtTLnB1c2guYXBwbHkoUyx3KEF3KHtuYW1lOiJyYXdfc3RyZWV0IixyYXc6ZmEuc3RyZWV0LFNhOmZhLnNoYTI1Nl9zdHJlZXR9KSkpfU4uY2FsbChHLGMsdyhTKSl9cmV0dXJuIGN9LHd3PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtQKDY0KTtyZXR1cm4gYShiKX19LEF3PWZ1bmN0aW9uKGEsYil7dmFyIGM9W107aWYoYS5TYSlyZXR1cm4gYztmb3IodmFyIGQ9CkJiKGEucmF3KSxlPTA7ZTxkLmxlbmd0aDsrK2Upe3ZhciBmPUJ3KGRbZV0pO2lmKGYmJiF5aS50ZXN0KGYpKWlmKC9eZVxkKyQvLnRlc3QoZikpYy5wdXNoKHtuYW1lOmEubmFtZSx2YWx1ZTpmLGluZGV4OmJ9KTtlbHNle3ZhciBnPWMsaD1nLnB1c2gsbD1hLm5hbWUsbjt2YXIgcD1BO3RyeXtuPUJpKEFycmF5LmZyb20oWmIoZikpLHApfWNhdGNoKHEpe249ImUwIn1oLmNhbGwoZyx7bmFtZTpsLHZhbHVlOm4saW5kZXg6Yn0pfX1yZXR1cm4gY30sdHc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPU0oNTIzKSxlPWEucmF3LGY9ZD9hLmFiOnZvaWQgMDtDdyhlLCExKTthLlNhJiYoZSYmUCg5MCksZT1hLlNhLGY9ZD9hLm1kOnZvaWQgMCxDdyhlLCEwKSk7Zm9yKHZhciBnPUJiKGUpLGg9QmIoZiksbD0wO2w8Zy5sZW5ndGg7KytsKXt2YXIgbjt2YXIgcD1hLm5hbWUscT1iLHI9aFtsXSx0PUJ3KGdbbF0pO2lmKHQhPT0iIilpZih5aS50ZXN0KHQpKXtyJiYoci5pc1ByZUhhc2hlZD0hMCk7CnZhciB1PXtuYW1lOnAsdmFsdWU6dCxpbmRleDp2b2lkIDB9O3ImJih1Lm1ldGFkYXRhPXIpO249dX1lbHNle3ZhciB2PXEodCkseD17bmFtZTpwLHZhbHVlOnYsaW5kZXg6dm9pZCAwfTtyJiYoeC5tZXRhZGF0YT1yLHYmJihyLnJhd0xlbmd0aD1TdHJpbmcodCkubGVuZ3RoLHIubm9ybWFsaXplZExlbmd0aD12Lmxlbmd0aCkpO249eH1lbHNlIG49dm9pZCAwO3ZhciB5PW47eSYmYy5wdXNoKHkpfXJldHVybiBjfSxDdz1mdW5jdGlvbihhLGIpe2lmKHpiKGEpfHxBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgYz1CYihhKSxkPTA7ZDxjLmxlbmd0aDsrK2Qpe3ZhciBlPUJ3KGNbZF0pLGY9eWkudGVzdChlKTtiJiYhZiYmUCg4OSk7IWImJmYmJlAoODgpfX0sRHc9ZnVuY3Rpb24oYSl7dmFyIGI9YT9ndyhhKTpbXTtyZXR1cm4gb3coe3liOmJ9KX0sRXc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEhPW51bGwmJk9iamVjdC5rZXlzKGEpLmxlbmd0aD4wJiZ5YihBLlByb21pc2UpP2d3KGEpLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIudmFsdWUmJgprdyhiLm5hbWUpJiYheWkudGVzdChiLnZhbHVlKX0pOiExfSxCdz1mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjp6YihhKT9MYihTdHJpbmcoYSkpOiJlMCJ9LHp3PWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoRncsIiIpfSx4dz1mdW5jdGlvbihhKXtyZXR1cm4geXcoYS5yZXBsYWNlKC9ccy9nLCIiKSl9LHl3PWZ1bmN0aW9uKGEpe3JldHVybiBMYihhLnJlcGxhY2UoR3csIiIpLnRvTG93ZXJDYXNlKCkpfSx2dz1mdW5jdGlvbihhKXthPWEucmVwbGFjZSgvW1xzLSgpLy5dL2csIiIpO2EuY2hhckF0KDApIT09IisiJiYoYT0iKyIrYSk7cmV0dXJuKE0oNTk3KT9IdzpJdykudGVzdChhKT9hOiJlMCJ9LHV3PWZ1bmN0aW9uKGEpe3ZhciBiPWEudG9Mb3dlckNhc2UoKS5zcGxpdCgiQCIpO2lmKGIubGVuZ3RoPT09Mil7dmFyIGM9YlswXTsvXihnbWFpbHxnb29nbGVtYWlsKVwuLy50ZXN0KGJbMV0pJiYoYz1jLnJlcGxhY2UoL1wuL2csIiIpKTtjPWMrIkAiK2JbMV07aWYoSncudGVzdChjKSlyZXR1cm4gY31yZXR1cm4iZTAifSwKS3c9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24oYil7Yi52YWx1ZSYma3coYi5uYW1lKSYmKGIudmFsdWU9RGkoYi52YWx1ZSkpfSkse3liOmF9fWNhdGNoKGIpe3JldHVybnt5YjpbXX19fSxudz1mdW5jdGlvbihhKXtyZXR1cm4gYS5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBiLnZhbHVlJiZrdyhiLm5hbWUpfSk/eWIoQS5Qcm9taXNlKT9Qcm9taXNlLmFsbChhLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi52YWx1ZSYma3coYi5uYW1lKT9BaShiLnZhbHVlKS50aGVuKGZ1bmN0aW9uKGMpe2IudmFsdWU9Y30pOlByb21pc2UucmVzb2x2ZSgpfSkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm57eWI6YX19KS5jYXRjaChmdW5jdGlvbigpe3JldHVybnt5YjpbXX19KTp7dGhlbjpmdW5jdGlvbihiKXtiKHt5YjpbXX0pfX06UHJvbWlzZS5yZXNvbHZlKHt5YjphfSl9LEd3PS9bMC05YH4hQCMkJV4mKigpX1wtKz06Ozw+LC4/fC9cXFtcXV0vZyxKdz0vXlxTK0BcUytcLlxTKyQvLApJdz0vXlwrXGR7MTAsMTV9JC8sSHc9L15cK1xkezcsMTV9JC8sRnc9L1sufl0vZyxsdz0vXlswLTlBLVphLXpfLV17NDN9JC8sTHc9WyJyZW0iLCJycG4iLCJyZm4iLCJybG4iLCJyc2EiXSxNdz17fSxpdz0oTXcuZW1haWw9ImVtIixNdy5waG9uZV9udW1iZXI9InBuIixNdy5maXJzdF9uYW1lPSJmbiIsTXcubGFzdF9uYW1lPSJsbiIsTXcuc3RyZWV0PSJzYSIsTXcuY2l0eT0iY3QiLE13LnJlZ2lvbj0icmciLE13LmNvdW50cnk9ImNvIixNdy5wb3N0YWxfY29kZT0icGMiLE13LmVycm9yX2NvZGU9ImVjIixNdy5yYXdfZW1haWw9InJlbSIsTXcucmF3X3Bob25lX251bWJlcj0icnBuIixNdy5yYXdfZmlyc3RfbmFtZT0icmZuIixNdy5yYXdfbGFzdF9uYW1lPSJybG4iLE13LnJhd19zdHJlZXQ9InJzYSIsTXcpO3ZhciBtdz1PYmplY3QuZnJlZXplKFsiZW1haWwiLAoicGhvbmVfbnVtYmVyIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsInN0cmVldCJdKTt2YXIgbXg9T2JqZWN0LmZyZWV6ZSh7YXR0cmlidXRpb25zcmM6IiJ9KSxueD1PYmplY3QuZnJlZXplKHtldmVudFNvdXJjZUVsaWdpYmxlOiExLHRyaWdnZXJFbGlnaWJsZTohMH0pO2Z1bmN0aW9uIG94KCl7dmFyIGE9WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlO3JldHVybiBhJiZ5YihhLnNldEF0dHJpYnV0aW9uUmVwb3J0aW5nKX07dmFyIHB4PU9iamVjdC5mcmVlemUoe2NhY2hlOiJuby1zdG9yZSIsY3JlZGVudGlhbHM6ImluY2x1ZGUiLG1ldGhvZDoiR0VUIixrZWVwYWxpdmU6ITAscmVkaXJlY3Q6ImZvbGxvdyJ9KTsKZnVuY3Rpb24gcXgoYSxiLGMsZCxlLGYpe2lmKCF5YihBLmZldGNoKSlyZXR1cm4gZj09bnVsbHx8Zih2b2lkIDAsdm9pZCAwKSwhMTt2YXIgZz1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHB4KTtiJiYoZy5ib2R5PWIsZy5tZXRob2Q9IlBPU1QiKTtuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LGcsZCk7QS5mZXRjaChhLGcpLnRoZW4oZnVuY3Rpb24oaCl7aWYoaC5vayl7aWYoaC5ib2R5KXt2YXIgbD1oLmJvZHkuZ2V0UmVhZGVyKCksbj1uZXcgVGV4dERlY29kZXI7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHApe2Z1bmN0aW9uIHEoKXtsLnJlYWQoKS50aGVuKGZ1bmN0aW9uKHIpe3ZhciB0O3Q9ci5kb25lO3ZhciB1PW4uZGVjb2RlKHIudmFsdWUse3N0cmVhbTohdH0pO3U9Yy5SK3U7Zm9yKHZhciB2PXUuaW5kZXhPZigiXG5cbiIpO3YhPT0tMTspe3ZhciB4PVpnLHk7YTp7dmFyIHo9bSh1LnN1YnN0cmluZygwLHYpLnNwbGl0KCJcbiIpKSxDPQp6Lm5leHQoKS52YWx1ZSxEPXoubmV4dCgpLnZhbHVlO2lmKFNiKEMsImV2ZW50OiBtZXNzYWdlIikmJlNiKEQsImRhdGE6ICIpKXt2YXIgST1ELnN1YnN0cmluZyg2KTt0cnl7eT1KU09OLnBhcnNlKEkpO2JyZWFrIGF9Y2F0Y2goRyl7fX15PXZvaWQgMH14KGMseSk7dT11LnN1YnN0cmluZyh2KzIpO3Y9dS5pbmRleE9mKCJcblxuIil9Yy5SPXU7dD8oZT09bnVsbHx8ZShoKSxwKCkpOnEoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZT09bnVsbHx8ZShoKTtwKCl9KX1xKCl9KX1lPT1udWxsfHxlKGgpfWVsc2UgZj09bnVsbHx8ZihoLHZvaWQgMCl9KS5jYXRjaChmdW5jdGlvbihoKXtmPT1udWxsfHxmKHZvaWQgMCxoKX0pO3JldHVybiEwfTt2YXIgcng9ZnVuY3Rpb24oYSl7aHUuY2FsbCh0aGlzLCJGZXRjaFJpY2hSZXNwb25zZSIsMSk7dGhpcy5OPWF9O3dhKHJ4LGh1KTtyeC5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4geWIoQS5mZXRjaCl9O3J4LnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3J4LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjKXtxeChiLGM9PW51bGw/dm9pZCAwOmMuYm9keSx0aGlzLk4sYz09bnVsbD92b2lkIDA6Yy5HYixhLnBlLGZ1bmN0aW9uKGQsZSl7YS5vbkZhaWx1cmUoZSl9KX07dmFyIEN4PWZ1bmN0aW9uKCl7WWcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt3YShDeCxZZyk7Q3gucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiKXtaYyhhLHZvaWQgMCwkZyh0aGlzLGIpLGIuYXR0cmlidXRpb25fcmVwb3J0aW5nJiZveCgpP214Ont9KX07Q3gucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmF0dHJpYnV0aW9uX3JlcG9ydGluZyYmb3goKT97YXR0cmlidXRpb25SZXBvcnRpbmc6bnh9Ont9LGQ9JGcodGhpcyxiKTtiLnByb2Nlc3NfcmVzcG9uc2U/cXgoYSx2b2lkIDAsdGhpcyxjLHZvaWQgMCxkKTptZChhLHZvaWQgMCxjLHZvaWQgMCxkKX07dmFyIFF4PWZ1bmN0aW9uKGEsYil7dGhpcy5IPWE7dGhpcy50aW1lb3V0TXM9Yjt0aGlzLlJiPXZvaWQgMH0sUng9ZnVuY3Rpb24oYSl7YS5SYnx8KGEuUmI9c2V0VGltZW91dChmdW5jdGlvbigpe2EuSCgpO2EuUmI9dm9pZCAwfSxhLnRpbWVvdXRNcykpfSxUbj1mdW5jdGlvbihhKXthLlJiJiYoY2xlYXJUaW1lb3V0KGEuUmIpLGEuUmI9dm9pZCAwKX07dmFyIFN4PWZ1bmN0aW9uKCl7dmFyIGE9TmYoNjYsMCk7dGhpcy5LPVtdO3RoaXMuUj1hO3RoaXMuSD1ZYSgpfSxVeD1mdW5jdGlvbihhKXt2YXIgYj1UeDtiLksucHVzaChhKTtiLk58fChiLk49ZnVuY3Rpb24oKXtmb3IodmFyIGM9bShiLkspLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO3RyeXtlKCl9Y2F0Y2gobCl7fX1mb3IodmFyIGY9bShiLkgudmFsdWVzKCkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD12b2lkIDA7KGg9Zy52YWx1ZS53ZSk9PW51bGx8fFRuKGgpfWIuSC5jbGVhcigpfSwkYyhBLCJwYWdlaGlkZSIsYi5OKSl9LFZ4PWZ1bmN0aW9uKGEpe3ZhciBiPWEubWF0Y2goTW4pWzNdfHxudWxsLGM9KGI/ZGVjb2RlVVJJKGIpOmIpfHwiIixkPVBuKGEsImxhYmVsIil8fCIiLGU9UG4oYSwicmFuZG9tIil8fCIiO3JldHVybiBjKyI6IitMbihkKSsiOiIrTG4oZSl9LFd4PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1UeCwKZT1WeChhKTtpZighKGQuSC5oYXMoZSl8fGQuSC5zaXplPj1kLlIpKXt2YXIgZj17fTtiJiZiPjAmJmMmJihmLndlPW5ldyBReChjLGIpKTtkLkguc2V0KGUsZik7dmFyIGc7KGc9Zi53ZSk9PW51bGx8fFJ4KGcpfX0sVW49ZnVuY3Rpb24oYSxiKXt2YXIgYz1WeChiKSxkLGU7KGQ9YS5ILmdldChjKSk9PW51bGx8fChlPWQud2UpPT1udWxsfHxUbihlKTthLkguZGVsZXRlKGMpfTtTeC5wcm90b3R5cGUuZ2V0U2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkguc2l6ZX07dmFyIGRnO2Z1bmN0aW9uIGh5KGEsYil7dmFyIGM7KGM9ZGcpPT1udWxsfHwkZihjLkgsYSxiKX07dmFyIGl5PUFhKFsiLyJdKSxqeT1mdW5jdGlvbihhKXt0aGlzLkg9YTt0aGlzLmZhaWx1cmVUeXBlPXZvaWQgMH07ankucHJvdG90eXBlLmlvPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9dGhpcy5ILmFjdGl2ZTtkPyhkLnBvc3RNZXNzYWdlKHt0eXBlOjEsY29tbWFuZDphfSksYih7ZGF0YToiIn0pKTpjKHtmYWlsdXJlVHlwZToxMyxkYXRhOiIifSl9Y2F0Y2goZSl7Yyh7ZmFpbHVyZVR5cGU6MTEsZGF0YTplLm1lc3NhZ2V9KX19O3ZhciBreT1mdW5jdGlvbihhLGIpe3RoaXMuZmFpbHVyZVR5cGU9YTt0aGlzLkg9Yn07a3kucHJvdG90eXBlLmlvPWZ1bmN0aW9uKGEsYixjKXtjKHtmYWlsdXJlVHlwZTp0aGlzLmZhaWx1cmVUeXBlLGRhdGE6ImYiK3RoaXMuZmFpbHVyZVR5cGUrKCJ0IisoKG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5IKSl9KX07CnZhciBueT1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3RoaXMuaW5pdFRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCk7dGhpcy5IPW5ldyBreSgxNSx0aGlzLmluaXRUaW1lKTt2YXIgYz1uZXcgUHJvbWlzZShmdW5jdGlvbihlKXtBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKCl9LDIwKX0pLGQ9bHkoYSkudGhlbihmdW5jdGlvbihlKXtiLkg9bmV3IGp5KGUpO215KGIsZSl9KS5jYXRjaChmdW5jdGlvbigpe2IuSD1uZXcga3koNCxiLmluaXRUaW1lKX0pO3RoaXMuSz1Qcm9taXNlLnJhY2UoW2MsZF0pfSxteT1mdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGQpe2QmJmQuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZC5zdGF0ZT09PSJyZWR1bmRhbnQiKXt2YXIgZT1iLmFjdGl2ZTtlJiZlLnN0YXRlIT09InJlZHVuZGFudCJ8fChhLkg9bmV3IGt5KDEwLGEuaW5pdFRpbWUpKX19KX07YyhiLmFjdGl2ZSk7YyhiLndhaXRpbmcpO2MoYi5pbnN0YWxsaW5nKTsKYi5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmb3VuZCIsZnVuY3Rpb24oKXtjKGIuaW5zdGFsbGluZyl9KX07bnkucHJvdG90eXBlLmRlbGVnYXRlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzO3RoaXMuSy50aGVuKGZ1bmN0aW9uKCl7ZC5ILmlvKGEsYixjKX0pfTtueS5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gMn07CnZhciBseT1mdW5jdGlvbihhKXt2YXIgYixjPUxmKDExKTtjPUxmKDEwKTtiPWM7dmFyIGQ9e3Njb3BlOihUYihhLmhyZWYsIi8iKT9hLmhyZWYuc2xpY2UoMCwtMSk6YS5ocmVmKSsiL18vc2VydmljZV93b3JrZXIifTtiJiYoZC51cGRhdGVWaWFDYWNoZT0iYWxsIik7dmFyIGUsZj1veShhLGIpLGc9bmV3IE1hcChbWyJwYXRoIixhLnBhdGhuYW1lXV0pLGg9SnAoa2MoZikudG9TdHJpbmcoKSk7ZT1McChoLnprLGgucGFyYW1zLGguZnJhZ21lbnQsZyk7dmFyIGw9SWMoKSxuPWtjKGUpO3RyeXtyZXR1cm4gbC5yZWdpc3RlcihuLGQpfWNhdGNoKHApe3RyeXtyZXR1cm4gbC5yZWdpc3RlcihuLnRvU3RyaW5nKCksZCl9Y2F0Y2gocSl7cmV0dXJuIFByb21pc2UucmVqZWN0KHEpfX19OwpmdW5jdGlvbiBveShhLGIpe2Zvcih2YXIgYz1LcChpeSksZD1hLnBhdGhuYW1lLnNwbGl0KCIvIikuZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiBoLmxlbmd0aD4wfSksZT1bXS5jb25jYXQodyhkKSxbIl8iLCJzZXJ2aWNlX3dvcmtlciIsYiwic3cuanMiXSksZj1tKGUpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWM9TXAoYyxnLnZhbHVlKTtyZXR1cm4gY307ZnVuY3Rpb24gcHkoYSl7dmFyIGI9bm0oam0uYmEuT2gpLGM9Yj09bnVsbD92b2lkIDA6YlthXTtjfHxhIT09ImxpdGUifHwoYz1iPT1udWxsP3ZvaWQgMDpiLmZ1bGwpO3JldHVybiBjfXZhciBxeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cHkoImZ1bGwiKTtkP2QuZGVsZWdhdGUoYSxiLGMpOmMoe2ZhaWx1cmVUeXBlOjE2fSl9O2Z1bmN0aW9uIHJ5KGEsYixjLGQsZSl7cXkoe2NvbW1hbmRUeXBlOjAscGFyYW1zOnt1cmw6YSxtZXRob2Q6MSx0ZW1wbGF0ZXM6Yixib2R5OiIiLHByb2Nlc3NSZXNwb25zZTohMSxlbmNyeXB0aW9uS2V5U3RyaW5nOmUsc29SZWZlcnJlcjpBLmxvY2F0aW9uLmhyZWZ9fSxjLGZ1bmN0aW9uKGYpe2QoZi5mYWlsdXJlVHlwZSxmLmRhdGEpfSl9O3ZhciBEeT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPTA7dGhpcy5LPSExO00oNDYyKSYmVW0oImZzIixmdW5jdGlvbigpe3JldHVybiBhLkg+MCYmYS5IPDU/U3RyaW5nKGEuSCk6dm9pZCAwfSwhMSl9LEV5O2Z1bmN0aW9uIEZ5KGEsYil7RXl8fChFeT1uZXcgRHkpO3ZhciBjPUV5O00oNDYyKSYmZm4uSyYmKGI9PT0iZ3RtLmZvcm1TdWJtaXQifHxiPT09ImZvcm1fc3VibWl0IiYmSWYoNDUpKSYmKGE9PT0xfHxjLkspJiYoYy5LPSEwLGMuSD1hLGEhPT01P1ZtKCJmcyIpOlFtLkguZnM9ITEpfTt2YXIgR3k9ZnVuY3Rpb24oYSl7aWYoUShhLEguSi5kYSk9PT1YLlYuS2Epe3ZhciBiPWZ1KGEpO2lmKCFNKDQyNykmJihqcChhLGIpfHxRKGEsSC5KLmhkKSkmJlhvKGZwKSl7dmFyIGM9bHAoYSxiKTtpZihjKXt2YXIgZD1ObSg2OSxjKTtUbChkLGEsNjkpO1luKHtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6NjksZXZlbnRJZDphLk0uZXZlbnRJZCxwcmlvcml0eUlkOmEuTS5wcmlvcml0eUlkfSxkKX19dmFyIGU9eWIoYS5NLm9uU3VjY2Vzcyk/YS5NLm9uU3VjY2Vzczp4YjskdShhLGIpO2UoKX19O3ZhciBIeT17WDp7V3E6MCxFazoxLFpnOjIsWGs6MyxtaTo0LFZrOjUsV2s6NixZazo3LG5pOjgsdG06OSxzbToxMCxUaToxMSx2bToxMixCaDoxMyxFbToxNCxpajoxNSxTcToxNixqZDoxNyx1ajoxOCx2ajoxOSx3ajoyMCxDbjoyMSx4ajoyMn19O0h5LlhbSHkuWC5XcV09IlJFU0VSVkVEX1pFUk8iO0h5LlhbSHkuWC5Fa109IkFEU19DT05WRVJTSU9OX0hJVCI7SHkuWFtIeS5YLlpnXT0iQ09OVEFJTkVSX0VYRUNVVEVfU1RBUlQiO0h5LlhbSHkuWC5Ya109IkNPTlRBSU5FUl9TRVRVUF9FTkQiO0h5LlhbSHkuWC5taV09IkNPTlRBSU5FUl9TRVRVUF9TVEFSVCI7SHkuWFtIeS5YLlZrXT0iQ09OVEFJTkVSX0JMT0NLSU5HX0VORCI7SHkuWFtIeS5YLldrXT0iQ09OVEFJTkVSX0VYRUNVVEVfRU5EIjtIeS5YW0h5LlguWWtdPSJDT05UQUlORVJfWUlFTERfRU5EIjtIeS5YW0h5LlgubmldPSJDT05UQUlORVJfWUlFTERfU1RBUlQiO0h5LlhbSHkuWC50bV09IkVWRU5UX0VYRUNVVEVfRU5EIjsKSHkuWFtIeS5YLnNtXT0iRVZFTlRfRVZBTFVBVElPTl9FTkQiO0h5LlhbSHkuWC5UaV09IkVWRU5UX0VWQUxVQVRJT05fU1RBUlQiO0h5LlhbSHkuWC52bV09IkVWRU5UX1NFVFVQX0VORCI7SHkuWFtIeS5YLkJoXT0iRVZFTlRfU0VUVVBfU1RBUlQiO0h5LlhbSHkuWC5FbV09IkdBNF9DT05WRVJTSU9OX0hJVCI7SHkuWFtIeS5YLmlqXT0iUEFHRV9MT0FEIjtIeS5YW0h5LlguU3FdPSJQQUdFVklFVyI7SHkuWFtIeS5YLmpkXT0iU05JUFBFVF9MT0FEIjtIeS5YW0h5LlgudWpdPSJUQUdfQ0FMTEJBQ0tfRVJST1IiO0h5LlhbSHkuWC52al09IlRBR19DQUxMQkFDS19GQUlMVVJFIjtIeS5YW0h5Llgud2pdPSJUQUdfQ0FMTEJBQ0tfU1VDQ0VTUyI7SHkuWFtIeS5YLkNuXT0iVEFHX0VYRUNVVEVfRU5EIjtIeS5YW0h5LlgueGpdPSJUQUdfRVhFQ1VURV9TVEFSVCI7dmFyIEl5PXt9O0l5Llg9SHkuWDt2YXIgSnk9e1J1OiJMIixYcToiUyIsa3Y6IlkiLFJ0OiJCIixudToiRSIsTnU6IkkiLGZ2OiJUQyIsdnU6IkhUQyIsb3U6IkYiLE11OiJDIn0sS3k9e1hxOiJTIixsdToiViIsYXU6IkUiLGR2OiJ0YWcifSxMeT17fSxNeT0oTHlbSXkuWC52al09IjYiLEx5W0l5Llgud2pdPSI1IixMeVtJeS5YLnVqXT0iNyIsTHkpO2Z1bmN0aW9uIE55KGEpe3ZhciBiPUUoNSksYz1OdW1iZXIoYS5ldmVudElkKSxkPU51bWJlcihhLnRhZ0lkKTtyZXR1cm4oU2IoYiwiR1RNLSIpP2I6IkdUTS0iK2IpKyI6IisoQWIoYyk/YysiOiI6IiIpKyhBYihkKT9kKyI6IjoiIikrYS5zdGFnZX07ZnVuY3Rpb24gT3koKXt2YXIgYT1yZCgpO3JldHVybiEhKGEmJmEubWFyayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZhLm1lYXN1cmUgaW5zdGFuY2VvZiBGdW5jdGlvbiYmYS5jbGVhck1lYXN1cmVzIGluc3RhbmNlb2YgRnVuY3Rpb24mJmEuY2xlYXJNYXJrcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKX07dmFyIFB5PWZ1bmN0aW9uKCl7dGhpcy5IPXt9fSxReTtmdW5jdGlvbiBSeSgpe1F5fHwoUXk9bmV3IFB5KTtyZXR1cm4gUXl9ZnVuY3Rpb24gU3koYSl7dmFyIGI9UnkoKSxjPU55KGEpO3JldHVybiBiLkhbY119ZnVuY3Rpb24gVHkoYSxiKXt2YXIgYzthOnt2YXIgZD1SeSgpO2lmKE95KCkpe3ZhciBlPU55KGEpLGYsZztpZihmPShnPXJkKCkpPT1udWxsP3ZvaWQgMDpnLm1hcmsoZSxiKSl7Yz1kLkhbZV09ZjticmVhayBhfX1jPXZvaWQgMH1yZXR1cm4gY307ZnVuY3Rpb24gVXkoYSxiKXtpZihPeSgpKXthLmVudHJ5PU55KGEpO3ZhciBjPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYSk7Yy5zdGFnZT1iO2RlbGV0ZSBjLnNlbnQ7dmFyIGQ9U3koYj09PUl5LlguamQ/e3N0YWdlOkl5LlguamR9OmMpLGU9U3koYSk7aWYoZCYmZSYmIShkLnN0YXJ0VGltZT5lLnN0YXJ0VGltZSkpe2Muc3RhZ2U9YisiOiIrYS5zdGFnZTt2YXIgZj1OeShjKSxnPXtzdGFydDpkLm5hbWUsZW5kOmUubmFtZX0saCxsO3JldHVybihsPShoPXJkKCkpPT1udWxsP3ZvaWQgMDpoLm1lYXN1cmUoZixnKSk9PW51bGw/dm9pZCAwOmwuZHVyYXRpb259fX07dmFyIFd5PWZ1bmN0aW9uKCl7dmFyIGE9NTtWeS5Sbz4wJiYoYT1WeS5Sbyk7dGhpcy5LPWE7dGhpcy5IPTA7dGhpcy5OPVtdfSxYeT1mdW5jdGlvbihhKXtyZXR1cm4gYS5IPGEuSz8hMTpOYigpLWEuTlthLkglYS5LXTwxRTN9LFl5PWZ1bmN0aW9uKGEpe3ZhciBiPWEuSCsrJWEuSzthLk5bYl09TmIoKX07dmFyIFZ5PXtSbzpOZigzLDApfSwkeT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy55YT1bXTt0aGlzLkg9dm9pZCAwO3RoaXMuWj17fTt0aGlzLks9dm9pZCAwO3RoaXMuamE9bmV3IFd5O3RoaXMuTGE9MUUzO3RoaXMuUj10aGlzLk49ITE7dGhpcy5mYT1EYigpO1p5KHRoaXMsZnVuY3Rpb24oKXt2YXIgYj1bWyJ2IiwiMyJdLFsidCIsInQiXSxbInBpZCIsU3RyaW5nKGEuZmEpXV0sYz1kdSgpO2MmJmIucHVzaChbImd0bSIsY10pO3JldHVybiBifSk7Y2QoZnVuY3Rpb24oKXthLmZhPURiKCl9LDg2NEU1KX0sWnk9ZnVuY3Rpb24oYSxiKXthLnlhLnB1c2goYil9LGF6PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLkg7aWYoZD09PXZvaWQgMClpZihjKWQ9cmooKTtlbHNlIHJldHVybiIiO2Zvcih2YXIgZT1bZmsoImh0dHBzOi8vIitFKDIxKSksIi9hIiwiP2lkPSIrRSg1KV0sZj1tKGEueWEpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWZvcih2YXIgaD1nLnZhbHVlLGw9Cmgoe2V2ZW50SWQ6ZCx0ZjohIWJ9KSxuPW0obCkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPW0ocC52YWx1ZSkscj1xLm5leHQoKS52YWx1ZSx0PXEubmV4dCgpLnZhbHVlO2UucHVzaCgiJiIrcisiPSIrdCl9ZS5wdXNoKCImej0wIik7cmV0dXJuIGUuam9pbigiIil9LGJ6PWZ1bmN0aW9uKGEpe2lmKCRrKDI2KSYmKGEuSyYmKEEuY2xlYXJUaW1lb3V0KGEuSyksYS5LPXZvaWQgMCksYS5IIT09dm9pZCAwJiZhLlIpKXt2YXIgYj1sbyhjby5pYS5aYik7aWYoZ28oYikpYS5OfHwoYS5OPSEwLGlvKGIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBieihhKX0pKTtlbHNlIGlmKGEuWlthLkhdfHxYeShhLmphKXx8YS5MYS0tPD0wKVAoMSksYS5aW2EuSF09ITA7ZWxzZXtZeShhLmphKTt2YXIgYz1heihhLCEwKTtYbih7ZGVzdGluYXRpb25JZDpFKDUpLGVuZHBvaW50OjU2LGV2ZW50SWQ6YS5IfSxjKTthLlI9ITE7YS5OPSExfX19LGN6PWZ1bmN0aW9uKGEpe2EuS3x8KGEuSz0KQS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYnooYSl9LDUwMCkpfSxlej1mdW5jdGlvbihhKXt2YXIgYj1kejtiLlpbYV18fChhIT09Yi5IJiYoYnooYiksYi5IPWEpLGIuUj0hMCxjeihiKSxheihiKS5sZW5ndGg+PTIwMjImJmJ6KGIpKX0sZHo7ZnVuY3Rpb24gZnooYSl7Z3ooKTtaeShkeixhKX1mdW5jdGlvbiBoeigpe3ZhciBhO2E9YT09PXZvaWQgMD8hMTphO2d6KCk7dmFyIGI9YSxjPWR6O2I9Yj09PXZvaWQgMD8hMTpiO2lmKGZuLk4mJiRrKDI2KSl7dmFyIGQ9YXooYywhMCwhMCk7Yj9Wbih7ZGVzdGluYXRpb25JZDpFKDUpLGVuZHBvaW50OjU2LGV2ZW50SWQ6Yy5IfSxkKTpYbih7ZGVzdGluYXRpb25JZDpFKDUpLGVuZHBvaW50OjU2LGV2ZW50SWQ6Yy5IfSxkKX19ZnVuY3Rpb24gZ3ooKXtkenx8KGR6PW5ldyAkeSl9O2Z1bmN0aW9uIGl6KCl7ZnVuY3Rpb24gYShjLGQpe3ZhciBlPXdiKHJiW2RdfHxbXSk7ZSYmYi5wdXNoKFtjLGVdKX12YXIgYj1bXTthKCJ1IiwiR1RNIik7YSgidXQiLCJUQUdHSU5HIik7YSgiaCIsIkhFQUxUSCIpO3JldHVybiBifTt2YXIgano9Imh0dHBzOi8vIitFKDIxKSxrej1mdW5jdGlvbigpe3RoaXMuTj0hMTt0aGlzLlI9W107dGhpcy5aPVtdO3RoaXMuSD17VEM6MCxIVEM6MH07dGhpcy5LPXt9fSxsej1mdW5jdGlvbihhLGIsYyxkKXthLktbYl18fChhLktbYl09e30pO2EuS1tiXVtjXT1kfSxvej1mdW5jdGlvbihhKXt2YXIgYj0iIixjPSIiLGQ9bXooKTtBYihkKSYmKGEuSC5JPU1hdGguZmxvb3IoZCkpO2M9bnooYS5ILEp5KS50b1N0cmluZygpO2Zvcih2YXIgZT1tKE9iamVjdC5rZXlzKGEuSykpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlLGg9YS5LW2ddLm5hbWUsbD0iIixuPW56KGEuS1tnXSxLeSk7biYmKGw9aCsiLiIrbi50b1N0cmluZygpLGIrPSJ+IitsKX12YXIgcD0ifkFXQ1QiK2EuUi5qb2luKCIuIikscT0ifkdBIithLlouam9pbigiLiIpLHI9IiZjY2lkPSIrdmsoKS50b1N0cmluZygpKyImY2lkPSIrRSg1KS50b1N0cmluZygpKyImbD0iK2MrYisoYS5SLmxlbmd0aD8KcDoiIikrKGEuWi5sZW5ndGg/cToiIik7aWYoTSgyMTQpKXt2YXIgdCx1PSh0PXJkKCkpPT1udWxsP3ZvaWQgMDp0LmdldEVudHJpZXNCeU5hbWUoS2MpLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gU3RyaW5nKHYuZHVyYXRpb24pfSkuam9pbigiLiIpO3UmJihyKz0iflNTIit1KX1yZXR1cm4gcn0scHo9ZnVuY3Rpb24oYSxiKXtpZighYi5zdGFnZXx8YS5OfHwhT3koKXx8U3koYikpcmV0dXJuITE7dmFyIGMsZD0oYz1yZCgpKT09bnVsbD92b2lkIDA6Yy50aW1lT3JpZ2luO2lmKCFBYihkKSlhLk49ITA7ZWxzZSBpZihBYigkaygyNSkpJiYhU3koe3N0YWdlOkl5LlguamR9KSYmIWEuTiYmT3koKSl0cnl7dmFyIGU9TnVtYmVyKCRrKDI1KSk7VHkoe3N0YWdlOkl5LlguamR9LHtzdGFydFRpbWU6TWF0aC5tYXgoZS1kLDApfSk7VHkoe3N0YWdlOkl5LlguaWp9LHtzdGFydFRpbWU6MH0pO3ZhciBmPVV5KHtzdGFnZTpJeS5YLmpkfSxJeS5YLmlqKTtmJiYoYS5ILkw9TWF0aC5mbG9vcihmKSl9Y2F0Y2goZyl7YS5OPQohMH1pZihhLk4pcmV0dXJuITE7dHJ5e2lmKCFUeShiKSlyZXR1cm4hMX1jYXRjaChnKXtyZXR1cm4gYS5OPSEwLCExfXJldHVybiEwfSxxej1mdW5jdGlvbihhLGIsYyl7aWYocHooYSxiKSl0cnl7dmFyIGQ9VXkoYixjKTtpZihkKXJldHVybiBNYXRoLmZsb29yKGQpfWNhdGNoKGUpe2EuTj0hMH19LHN6PWZ1bmN0aW9uKCl7dmFyIGE9cnooKTtweihhLHtzdGFnZTpJeS5YLm1pfSl9LHR6PWZ1bmN0aW9uKCl7dmFyIGE9cnooKSxiPXF6KGEse3N0YWdlOkl5LlguWGt9LEl5LlgubWkpO2IhPT12b2lkIDAmJihhLkguUz1iKX0sdXo9ZnVuY3Rpb24oKXt2YXIgYT1yeigpO3B6KGEse3N0YWdlOkl5Llgubml9KX0sdno9ZnVuY3Rpb24oYSxiKXt2YXIgYz1yeigpO3B6KGMse3N0YWdlOkl5LlguQmgsZXZlbnRJZDphfSk7Yy5LW2FdJiZjLktbYV0ubmFtZXx8bHooYyxhLCJuYW1lIixTYihiLCJndG0uIik/YjoiKiIpfSx3ej1mdW5jdGlvbihhKXt2YXIgYj1yeigpLGM9cXooYix7c3RhZ2U6SXkuWC52bSwKZXZlbnRJZDphfSxJeS5YLkJoKTtjIT09dm9pZCAwJiZseihiLGEsIlMiLGMpfSx5ej1mdW5jdGlvbihhLGIpe3ZhciBjPXJ6KCksZD1xeihjLHtzdGFnZTpJeS5YLnRtLGV2ZW50SWQ6YX0sSXkuWC5CaCk7ZCE9PXZvaWQgMCYmbHooYyxhLCJFIixkKTtpZihiPT09Imd0bS5sb2FkIil7dmFyIGU9cXooYyx7c3RhZ2U6SXkuWC5Xa30sSXkuWC5aZyk7ZSE9PXZvaWQgMCYmKGMuSC5FPWUpO2lvKGxvKGNvLmlhLlpiKSxmdW5jdGlvbigpe2lmKCFjLk4mJk95KCkmJkUoNSkpe3ZhciBmPXh6KCk7ZiE9PXZvaWQgMCYmKGMuSC5GPU1hdGguZmxvb3IoZikpO3RyeXtmb3IodmFyIGc9aXooe2V2ZW50SWQ6MCx0ZjohMX0pLGg9W10sbD1tKGcpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1tKG4udmFsdWUpLHE9cC5uZXh0KCkudmFsdWUscj1wLm5leHQoKS52YWx1ZTtoLnB1c2goIiYiK3ErIj0iK3IpfXZhciB0PUNwKCksdT1bW2ZrKGp6KSwiL2E/dj0zJnQ9bCIsIiZwaWQ9IisKRGIoKS50b1N0cmluZygpLCImcnY9IitFKDE0KSx0PyImdGFnX2V4cD0iK3Q6IiIsaC5qb2luKCIiKV0uam9pbigiIiksIiZndG09IixkdSgpLG96KGMpXS5qb2luKCIiKTtpZih1Lmxlbmd0aD4yMDIyKXt2YXIgdj1NYXRoLm1heCh1Lmxhc3RJbmRleE9mKCIuVFMiLDIwMjIpLHUubGFzdEluZGV4T2YoIn4iLDIwMjIpKTt1PXUuc2xpY2UoMCx2KX1Ybih7ZGVzdGluYXRpb25JZDpFKDUpLGVuZHBvaW50OjU2fSx1KX1jYXRjaCh4KXt9fX0pfX0seno7ZnVuY3Rpb24gcnooKXt6enx8KHp6PW5ldyBreik7cmV0dXJuIHp6fWZ1bmN0aW9uIG16KCl7dHJ5e3ZhciBhO3JldHVybigoYT1yZCgpKT09bnVsbD92b2lkIDA6YS5nZXRFbnRyaWVzQnlUeXBlKCJuYXZpZ2F0aW9uIilbMF0pLmRvbUludGVyYWN0aXZlfWNhdGNoKGIpe319CmZ1bmN0aW9uIG56KGEsYil7cmV0dXJuIE9iamVjdC5rZXlzKGIpLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYltjXX0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYVtjXSE9PXZvaWQgMH0pLm1hcChmdW5jdGlvbihjKXtyZXR1cm4oIiIrKGM9PT0idGFnIj8iIjpjKSkuY29uY2F0KGFbY10udG9TdHJpbmcoKSl9KS5qb2luKCIuIil9ZnVuY3Rpb24gQXooYSl7dmFyIGI9cnooKSxjPXF6KGIse3N0YWdlOkl5LlguRW0sZXZlbnRJZDphfSxJeS5YLmpkKTtjIT09dm9pZCAwJiZiLloucHVzaChjKX1mdW5jdGlvbiBCeihhKXt2YXIgYj1yeigpLGM9cXooYix7c3RhZ2U6SXkuWC5FayxldmVudElkOmF9LEl5LlguamQpO2MhPT12b2lkIDAmJmIuUi5wdXNoKGMpfWZ1bmN0aW9uIEN6KGEpe3ZhciBiPXJ6KCk7cHooYix7c3RhZ2U6SXkuWC5UaSxldmVudElkOmF9KX0KZnVuY3Rpb24gRHooYSl7dmFyIGI9cnooKSxjPXF6KGIse3N0YWdlOkl5Llguc20sZXZlbnRJZDphfSxJeS5YLlRpKTtjIT09dm9pZCAwJiZseihiLGEsIlYiLGMpfWZ1bmN0aW9uIHh6KCl7dHJ5e3ZhciBhLGI7cmV0dXJuKGI9KGE9cmQoKSk9PW51bGw/dm9pZCAwOmEuZ2V0RW50cmllc0J5VHlwZSgicGFpbnQiKS5maW5kKGZ1bmN0aW9uKGMpe3JldHVybiBjLm5hbWU9PT0iZmlyc3QtY29udGVudGZ1bC1wYWludCJ9KSk9PW51bGw/dm9pZCAwOmIuc3RhcnRUaW1lfWNhdGNoKGMpe319ZnVuY3Rpb24gRXooYSxiKXt2YXIgYz1yeigpO3B6KGMse3N0YWdlOkl5LlgueGosZXZlbnRJZDphLmlkLHRhZ0lkOk51bWJlcihiW0dmLnlqXSl9KX0KZnVuY3Rpb24gRnooYSxiLGMpe3ZhciBkPXJ6KCksZT1kbihiKSxmPU51bWJlcihiW0dmLnlqXSksZz1xeihkLHtzdGFnZTpjLGV2ZW50SWQ6YS5pZCx0YWdJZDpmfSxJeS5YLnhqKTtpZihnIT09dm9pZCAwJiZkLktbYS5pZF0pe3ZhciBoPWQuS1thLmlkXS50YWd8fCIiLGwsbj0obD1NeVtjXSkhPW51bGw/bDoiMSIscD1uZXcgUmVnRXhwKCJUU1xcZCIrZSsiLlRJIitmKSxxPSJUUyIrbitlKyIuVEkiK2YrIi5URSIrZztoLnNlYXJjaChwKT49MD9uIT09IjEiJiZseihkLGEuaWQsInRhZyIsaC5yZXBsYWNlKHAscS5yZXBsYWNlKCIuVEUiK2csIiIpKSk6KGx6KGQsYS5pZCwidGFnIiwoaD9oKyIuIjoiIikrcSksZT09PSJodG1sIiYmKGQuSC5IVEMrPTEpLGQuSC5UQys9MSl9fTt2YXIgS3o9e2dqOnticDoiMSIsdXE6IjIiLFZxOiIzIn19Owp2YXIgTHo9e30sTXo9T2JqZWN0LmZyZWV6ZSgoTHpbRi5ELmZoXT0xLEx6W0YuRC5naF09MSxMeltGLkQuQmRdPTEsTHpbRi5ELkNkXT0xLEx6W0YuRC5SY109MSxMeltGLkQuc2ldPTEsTHpbRi5ELnVpXT0xLEx6W0YuRC5DbF09MSxMeltGLkQuaWhdPTEsTHpbRi5ELkNmXT0xLEx6W0YuRC5EZl09MSxMeltGLkQuRWZdPTEsTHpbRi5ELkhhXT0xLEx6W0YuRC5GZl09MSxMeltGLkQuRmRdPTEsTHpbRi5ELnVjXT0xLEx6W0YuRC5IZF09MSxMeltGLkQuTGJdPTEsTHpbRi5ELkNiXT0xLEx6W0YuRC5UYl09MSxMeltGLkQubmJdPTEsTHpbRi5ELmViXT0xLEx6W0YuRC5HZV09MSxMeltGLkQua2hdPTEsTHpbRi5ELk9hXT0xLEx6W0YuRC5PcF09MSxMeltGLkQuU3BdPTEsTHpbRi5ELkllXT0xLEx6W0YuRC5HaV09MSxMeltGLkQuUWZdPTEsTHpbRi5ELlRhXT0xLEx6W0YuRC5ZY109MSxMeltGLkQuWmNdPTEsTHpbRi5ELnRiXT0xLEx6W0YuRC5RZF09MSxMeltGLkQuUmRdPTEsTHpbRi5ELlNkXT0KMSxMeltGLkQuTmVdPTEsTHpbRi5ELnphXT0xLEx6W0YuRC5VYV09MSxMeltGLkQuV2xdPTEsTHpbRi5ELlhsXT0xLEx6W0YuRC5ZbF09MSxMeltGLkQuWmxdPTEsTHpbRi5ELldiXT0xLEx6W0YuRC5UZF09MSxMeltGLkQuWGJdPTEsTHpbRi5ELmRkXT0xLEx6W0YuRC5VZF09MSxMeltGLkQuUWVdPTEsTHpbRi5ELlBhXT0xLEx6W0YuRC55Y109MSxMeltGLkQuVmRdPTEsTHpbRi5ELnpjXT0xLEx6W0YuRC5BY109MSxMeltGLkQuZmJdPTEsTHpbRi5ELlFhXT0xLEx6KSksTno9e30sT3o9KE56W0YuRC5VY109MSxOeltGLkQuUHBdPTEsTnpbRi5ELkhlXT0xLE56W0YuRC5yaV09MSxOei5vcmVmPTEsTnopO3ZhciBQeixRejsKZnVuY3Rpb24gUnooYSxiKXt2YXIgYz1hW0dmLlliXSxkPWImJmIuZXZlbnQ7aWYoIWMpdGhyb3cgRXJyb3IoIkVycm9yOiBObyBmdW5jdGlvbiBuYW1lIGdpdmVuIGZvciBmdW5jdGlvbiBjYWxsLiIpO3ZhciBlPVF6W2NdLGY9e30sZztmb3IoZyBpbiBhKWEuaGFzT3duUHJvcGVydHkoZykmJihTYihnLCJ2dHBfIik/ZltlIT09dm9pZCAwP2c6Zy5zdWJzdHJpbmcoNCldPWFbZ106Zz09PUdmLkZxLnRvU3RyaW5nKCkmJihmW2UhPT12b2lkIDA/InZ0cF9ndG1HZW5lcmF0ZWRUYWdnaW5nTWV0YWRhdGEiOmddPWFbZ10pKTtJZig2MSkmJmUmJihmLnZ0cF9leHRyYUV4cGVyaW1lbnRJZHM9ITApO2UmJmQmJmQuY2FjaGVkTW9kZWxWYWx1ZXMmJihmLnZ0cF9ndG1DYWNoZWRWYWx1ZXM9ZC5jYWNoZWRNb2RlbFZhbHVlcyk7YiYmZSYmKGYudnRwX2d0bUVudGl0eUluZGV4PWIuaW5kZXgsZi52dHBfZ3RtRW50aXR5TmFtZT1iLm5hbWUpO3JldHVybiBlIT09dm9pZCAwP2UoZik6UHooYyxmLApiKX12YXIgVHo9ZnVuY3Rpb24oKXt2YXIgYT1TejtpZihNKDU4NSkmJmZuLkspe3ZhciBiPUUoNSkuaW5kZXhPZigiR1RNLSIpPT09MCYmSWYoNjIpLGMsZD0oKGM9RmsoKSk9PW51bGw/dm9pZCAwOmMuc291cmNlKT09PTE7YiYmIWR8fGEuSHx8KGEuSD0hMCxVbSgiYWJsIiwiMSIpLHRvKCkpfX0sU3o9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPSExfTt2YXIgVXo9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5IPWE7dGhpcy5pbmRleD1iO3RoaXMudGFncz1jO3RoaXMubWFjcm9zPWQ7dGhpcy5uYW1lPVN0cmluZyh0aGlzLkhbR2YuUm1dfHwiIil9OwpVei5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oYSxiKXtpZighYlt0aGlzLmluZGV4XSYmIWEuaXNCbG9ja2VkKHRoaXMuSCkpe2JbdGhpcy5pbmRleF09ITA7dGhpcy5IW0dmLnBsLnRvU3RyaW5nKCldJiZUeigpO3ZhciBjPXRoaXMubmFtZSxkO3RyeXt2YXIgZT17fSxmO2ZvcihmIGluIHRoaXMuSCl0aGlzLkguaGFzT3duUHJvcGVydHkoZikmJihlW2ZdPWVsKHRoaXMuSFtmXSxhLHRoaXMudGFncyx0aGlzLm1hY3JvcyxiKSk7ZS52dHBfZ3RtRXZlbnRJZD1hLmlkO2EucHJpb3JpdHlJZCYmKGUudnRwX2d0bVByaW9yaXR5SWQ9YS5wcmlvcml0eUlkKTt2YXIgZz1kPVJ6KGUse2V2ZW50OmEsaW5kZXg6dGhpcy5pbmRleCx0eXBlOjIsbmFtZTpjfSk7ZVtHZi5aa10mJnR5cGVvZiBnPT09InN0cmluZyImJihnPWVbR2YuWmtdPT09MT9nLnRvTG93ZXJDYXNlKCk6Zy50b1VwcGVyQ2FzZSgpKTtlLmhhc093blByb3BlcnR5KEdmLmFoKSYmKGc9WWYoMTgpP2VbR2YuYWhdPT09MT8KVmYoZywiUEVSSU9EIik6ZVtHZi5haF09PT0yP1ZmKGcsIkNPTU1BIik6VmYoZywiQVVUT01BVElDIik6ZVtHZi5haF09PT0xP1ZmKGcsIlBFUklPRCIpOlZmKGcsIkNPTU1BIikpO2UuaGFzT3duUHJvcGVydHkoR2YuYmwpJiZnPT09bnVsbCYmKGc9ZVtHZi5ibF0pO2UuaGFzT3duUHJvcGVydHkoR2YuaWwpJiZnPT09dm9pZCAwJiYoZz1lW0dmLmlsXSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5lcCkmJihnPUpiKGcpKTtlLmhhc093blByb3BlcnR5KEdmLmZsKSYmZz09PSEwJiYoZz1lW0dmLmZsXSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5hbCkmJmc9PT0hMSYmKGc9ZVtHZi5hbF0pO2Q9Z31jYXRjaChoKXthLmxvZ01hY3JvRXJyb3ImJmEubG9nTWFjcm9FcnJvcihoLE51bWJlcih0aGlzLmluZGV4KSxjKSxkPSExfWJbdGhpcy5pbmRleF09ITE7cmV0dXJuIGR9fTtVei5wcm90b3R5cGUuRmc9ZnVuY3Rpb24oKXtyZXR1cm4gbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx0aGlzLkgpfTt2YXIgVno9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuSD1hO3RoaXMudGFncz1iO3RoaXMubWFjcm9zPWN9O1Z6LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhLGIpe3RyeXtmb3IodmFyIGM9e30sZD1tKE9iamVjdC5rZXlzKHRoaXMuSCkpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2NbZl09Zj09PSJmdW5jdGlvbiI/dGhpcy5IW2ZdOmVsKHRoaXMuSFtmXSxhLHRoaXMudGFncyx0aGlzLm1hY3JvcyxiKX1yZXR1cm4gY2woYyl9Y2F0Y2goZyl7SlNPTi5zdHJpbmdpZnkodGhpcy5IKX1yZXR1cm4gMn07VnoucHJvdG90eXBlLkZnPWZ1bmN0aW9uKCl7cmV0dXJuIG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sdGhpcy5IKX07dmFyIFd6PWZ1bmN0aW9uKGEsYil7dGhpcy5pbmRleD1iO3RoaXMuTj1bXTt0aGlzLlI9W107dGhpcy5LPVtdO3RoaXMuSD1bXTt0aGlzLm5hbWU9IiI7Zm9yKHZhciBjPW0oYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPW0oZC52YWx1ZSksZj1lLm5leHQoKS52YWx1ZSxnPXlhKGUpLGg9ZixsPWc7aD09PSJpZiI/dGhpcy5OPWw6aD09PSJ1bmxlc3MiP3RoaXMuUj1sOmg9PT0iYWRkIj90aGlzLks9bDpoPT09ImJsb2NrIj90aGlzLkg9bDpoPT09InJ1bGVOYW1lIiYmKHRoaXMubmFtZT1sWzBdKX19OwpXei5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1Yeih0aGlzLGIpLGQ9W10sZT1bXTtjPyhkLnB1c2guYXBwbHkoZCx3KHRoaXMuSykpLGUucHVzaC5hcHBseShlLHcodGhpcy5IKSkpOmM9PT1udWxsJiZlLnB1c2guYXBwbHkoZSx3KHRoaXMuSCkpO3JldHVybntmaXJpbmdUYWdzOmQsYmxvY2tpbmdUYWdzOmV9fTsKdmFyIFh6PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPW0oYS5OKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9YihkLnZhbHVlKTtpZihlPT09MClyZXR1cm4hMTtpZihlPT09MilyZXR1cm4gbnVsbH1mb3IodmFyIGY9bShhLlIpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1iKGcudmFsdWUpO2lmKGg9PT0yKXJldHVybiBudWxsO2lmKGg9PT0xKXJldHVybiExfXJldHVybiEwfTtXei5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9O3ZhciBZej1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLklhPWE7dGhpcy5pbmRleD1iO3RoaXMudGFncz1jO3RoaXMubWFjcm9zPWQ7dGhpcy5PPVN0cmluZyh0aGlzLklhW0dmLlliXSk7dGhpcy5uYW1lPVN0cmluZyh0aGlzLklhW0dmLlJtXXx8IiIpO3RoaXMudGFnSWQ9TnVtYmVyKHRoaXMuSWFbR2YueWpdKX07Cll6LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwP3t9OmM7dmFyIGQsZT1jO2U9ZT09PXZvaWQgMD97fTplO3ZhciBmPXt9LGc7Zm9yKGcgaW4gdGhpcy5JYSl0aGlzLklhLmhhc093blByb3BlcnR5KGcpJiYoZltnXT1lbCh0aGlzLklhW2ddLGEsdGhpcy50YWdzLHRoaXMubWFjcm9zLFtdKSk7ZD1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGYsZSk7ZC52dHBfZ3RtVGFnSWQ9dGhpcy50YWdJZDt0aGlzLklhW0dmLnBsLnRvU3RyaW5nKCldJiZUeigpO1J6KGQse2V2ZW50OmEsaW5kZXg6dGhpcy5pbmRleCx0eXBlOjEsbmFtZTp0aGlzLm5hbWV9KX07WXoucHJvdG90eXBlLkZnPWZ1bmN0aW9uKCl7cmV0dXJuIG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sdGhpcy5JYSl9Owp2YXIgWno9ZnVuY3Rpb24oYSxiKXtpZihhLklhW0dmLnRuXSlyZXR1cm4gZWwoYS5JYVtHZi50bl0sYixhLnRhZ3MsYS5tYWNyb3MsW10pfSwkej1mdW5jdGlvbihhLGIpe2lmKGEuSWFbR2YuRG5dKXJldHVybiBlbChhLklhW0dmLkRuXSxiLGEudGFncyxhLm1hY3JvcyxbXSl9LGFBPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5JYVtHZi5jcF07aWYoYylyZXR1cm4gZWwoYyxiLGEudGFncyxhLm1hY3JvcyxbXSl9O1l6LnByb3RvdHlwZS5nZXRNZXRhZGF0YT1mdW5jdGlvbihhKXtyZXR1cm4gZWwodGhpcy5JYVtHZi5NRVRBREFUQV0sYSx0aGlzLnRhZ3MsdGhpcy5tYWNyb3MsW10pfTtZei5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9O3ZhciBiQT1mdW5jdGlvbigpe3RoaXMubWFjcm9zPVtdO3RoaXMucnVsZXM9W107dGhpcy5wcmVkaWNhdGVzPVtdO3RoaXMudGFncz1bXTt0aGlzLnZrPVtdfTtiQS5wcm90b3R5cGUuZ2V0UnVsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ydWxlc307dmFyIGNBPW5ldyBiQTtmdW5jdGlvbiBkQShhLGIsYyxkKXt2YXIgZT1XYygpLGY7aWYoZT09PTEpYTp7dmFyIGc9RSgzKTtnPWcudG9Mb3dlckNhc2UoKTtmb3IodmFyIGg9Imh0dHBzOi8vIitnLGw9Imh0dHA6Ly8iK2csbj0xLHA9Qi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikscT0wO3E8cC5sZW5ndGgmJnE8MTAwO3ErKyl7dmFyIHI9cFtxXS5zcmM7aWYocil7cj1yLnRvTG93ZXJDYXNlKCk7aWYoci5pbmRleE9mKGwpPT09MCl7Zj0zO2JyZWFrIGF9bj09PTEmJnIuaW5kZXhPZihoKT09PTAmJihuPTIpfX1mPW59ZWxzZSBmPWU7cmV0dXJuKGY9PT0yfHxkfHwiaHR0cDoiIT09QS5sb2NhdGlvbi5wcm90b2NvbD9hOmIpK2N9O3ZhciBlQT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5LPXt9O3RoaXMuSD17fTtmeihmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGEuSylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYS5LLGQpJiZjLnB1c2goZCsifiIrYS5LW2RdKTt2YXIgZT1bXSxmO2ZvcihmIGluIGEuSClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYS5ILGYpJiZlLnB1c2goZisifiIrYS5IW2ZdKTtiLnRmJiYoYS5LPXt9LGEuSD17fSk7dmFyIGc9W107Yy5sZW5ndGg+MCYmZy5wdXNoKFsiYmNzIixjLmpvaW4oIi4iKV0pO2UubGVuZ3RoPjAmJmcucHVzaChbImJldCIsZS5qb2luKCIuIildKTtyZXR1cm4gZ30pfSxmQTtmdW5jdGlvbiBnQSgpe2ZBfHwoZkE9bmV3IGVBKX07ZnVuY3Rpb24gaEEoYSxiLGMsZCxlKXtpZighRWsoYSkpe2QubG9hZEV4cGVyaW1lbnRzPXlqKCk7SGsoYSxkLGUpO3ZhciBmPWlBKGEpLGc9ZnVuY3Rpb24oKXtvaygpLmNvbnRhaW5lclthXSYmKG9rKCkuY29udGFpbmVyW2FdLnN0YXRlPTMpO2pBKCl9LGg9e2Rlc3RpbmF0aW9uSWQ6YSxlbmRwb2ludDowfTtpZihXaigpKXt2YXIgbD1YaigpLG49bCsiLyIra0EoZixhKTtabihoLG4sdm9pZCAwLGZ1bmN0aW9uKCl7bEEoYSxuLGwrIi8iK2YsaCxnKX0pfWVsc2V7dmFyIHA9U2IoYSwiR1RNLSIpLHE9ZGsoKSxyPWM/Ii9ndGFnL2pzIjoiL2d0bS5qcyIsdD1tQShiLHIrZixhKTtpZighdCl7dmFyIHU9RSgzKStyO3EmJktjJiZwJiYodT1LYy5yZXBsYWNlKC9eKD86aHR0cHM/OlwvXC8pPy9pLCIiKS5zcGxpdCgvWz8jXS8pWzBdKTt0PWRBKCJodHRwczovLyIsImh0dHA6Ly8iLHUrZil9Wm4oaCx0LHZvaWQgMCxnKX19fQpmdW5jdGlvbiBqQSgpe0trKCl8fEdiKExrKCksZnVuY3Rpb24oYSxiKXtuQShhLGIudHJhbnNwb3J0VXJsLGIuY29udGV4dCk7UCg5Mil9KX1mdW5jdGlvbiBuQShhLGIsYyxkKXtpZighR2soYSkpaWYoYy5sb2FkRXhwZXJpbWVudHN8fChjLmxvYWRFeHBlcmltZW50cz15aigpKSxLaygpKUprKGEsYixjLGQpO2Vsc2V7SWsoYSxjLGQpO3ZhciBlPXtkZXN0aW5hdGlvbklkOmEsZW5kcG9pbnQ6MH07aWYoV2ooKSl7dmFyIGY9WGooKSxnPSJndGQiK2lBKGEsITApLGg9ZisiLyIra0EoZyxhKTtabihlLGgsdm9pZCAwLGZ1bmN0aW9uKCl7bEEoYSxoLGYrIi8iK2csZSl9KX1lbHNle3ZhciBsPSIvZ3RhZy9kZXN0aW5hdGlvbiIraUEoYSwhMCksbj1tQShiLGwsYSk7bnx8KG49ZEEoImh0dHBzOi8vIiwiaHR0cDovLyIsRSgzKStsKSk7Wm4oZSxuKX19fQpmdW5jdGlvbiBsQShhLGIsYyxkLGUpe2lmKE0oNDEzKSl7Z0EoKTt2YXIgZj1mQTtpZihmbi5OKXt2YXIgZz1BLnBlcmZvcm1hbmNlLGg9LTE7aWYoZyYmZy5nZXRFbnRyaWVzQnlUeXBlKXt2YXIgbD1SaihiKS5ocmVmLG49Zy5nZXRFbnRyaWVzQnlOYW1lKGwpLnBvcCgpO2lmKCFuKWZvcih2YXIgcD1nLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIikscT0wO3E8cC5sZW5ndGg7cSsrKXt2YXIgcj1wW3FdO2lmKHIubmFtZSYmci5uYW1lLmluZGV4T2YoYikhPT0tMSl7bj1yO2JyZWFrfX1uJiZuLnJlc3BvbnNlU3RhdHVzIT09dm9pZCAwJiYoaD1uLnJlc3BvbnNlU3RhdHVzKX1mLktbYV09aH1QKDE5MCk7dmFyIHQ9bm0oam0uYmEua2opfHx7fTt0W2FdPSEwO21tKGptLmJhLmtqLHQpO3ZhciB1PWMrKGMuaW5kZXhPZigiPyIpPT09LTE/Ij9mPTEiOiImZj0xIik7ZT9abihkLHUsdm9pZCAwLGUpOlpuKGQsdSl9ZWxzZSBlJiZlKCl9CmZ1bmN0aW9uIGlBKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9Ij9pZD0iK2VuY29kZVVSSUNvbXBvbmVudChhKSxkPUUoMTkpO2QhPT0iZGF0YUxheWVyIiYmKGMrPSImbD0iK2QpO3ZhciBlPVNiKGEsIkdUTS0iKTtpZighZXx8YiljKz0iJmN4PWMiO2UmJklmKDYyKSYmKGMrPSImZ29vZ2xlX29ubHk9dHJ1ZSIpO3ZhciBmPWMsZyxoPXtEbzpKZigxNSksSW86RSgxNCl9O2c9Q2YoaCk7Yz1mKygiJmd0bT0iK2cpO2RrKCkmJihjKz0iJnNpZ249IitBai5xaik7dmFyIGw9YyxuPUpmKDU0KTtpZihuPT09MSl7bCs9IiZmcHM9ZmMiO3ZhciBwPUUoNjApO3AmJihsKz0iJmdkZXY9IitwKX1lbHNlIG49PT0yJiYobCs9IiZmcHM9ZmUiKTtyZXR1cm4gbH0KZnVuY3Rpb24ga0EoYSxiKXtpZighTSg0MTMpfHwhWGooKSlyZXR1cm4gYTt2YXIgYz1FKDU4KTtpZighYylyZXR1cm4gUCgxODIpLGE7dHJ5e3ZhciBkPU5iKCksZT1FZihhLGMpLGY9TmIoKS1kO2dBKCk7dmFyIGc9ZkE7Zm4uTiYmKGcuSFtiXT1mKTtyZXR1cm4gZX1jYXRjaChoKXtyZXR1cm4gUCgxODMpLGF9fWZ1bmN0aW9uIG1BKGEsYixjKXtpZihhaygpJiZhKXt2YXIgZD1FKDU4KSxlPVhqKCk7aWYoZCYmZSl0cnl7dmFyIGY9TmIoKTtiPWUrIi8iK0VmKGIsZCk7dmFyIGc9TmIoKS1mO2dBKCk7dmFyIGg9ZkE7Zm4uTiYmKGguSFtjXT1nKX1jYXRjaChsKXtQKDE4Myl9cmV0dXJuIFlqKGEsYil9fTt2YXIgcEE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSz1uZXcgRmI7dGhpcy5IPXt9O3RoaXMuTj17fTt0aGlzLlI9e25hbWU6RSgxOSksc2V0OmZ1bmN0aW9uKGIsYyl7RWQoVmIoYixjKSxhLkgpO29BKGEpfSxnZXQ6ZnVuY3Rpb24oYil7cmV0dXJuIGEuZ2V0KGIsMil9LHJlc2V0OmZ1bmN0aW9uKCl7YS5LPW5ldyBGYjthLkg9e307b0EoYSl9fX07cEEucHJvdG90eXBlLmdldD1mdW5jdGlvbihhLGIpe3JldHVybiBiIT0yP3RoaXMuSy5nZXQoYSk6cUEodGhpcyxhKX07dmFyIHFBPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iLnNwbGl0KCIuIik7Yz1jfHxbXTtmb3IodmFyIGU9YS5ILGY9MDtmPGQubGVuZ3RoO2YrKyl7aWYoZT09PW51bGwpcmV0dXJuITE7aWYoZT09PXZvaWQgMClicmVhaztlPWVbZFtmXV07aWYoYy5pbmRleE9mKGUpIT09LTEpcmV0dXJufXJldHVybiBlfTsKcEEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuTi5oYXNPd25Qcm9wZXJ0eShhKXx8KHRoaXMuSy5zZXQoYSxiKSxFZChWYihhLGIpLHRoaXMuSCksb0EodGhpcykpfTt2YXIgc0E9ZnVuY3Rpb24oKXtmb3IodmFyIGE9WyJndG0uYWxsb3dsaXN0IiwiZ3RtLmJsb2NrbGlzdCIsImd0bS53aGl0ZWxpc3QiLCJndG0uYmxhY2tsaXN0IiwidGFnVHlwZUJsYWNrbGlzdCJdLGI9ckEsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9Yi5nZXQoZCwxKTtpZihBcnJheS5pc0FycmF5KGUpfHxDZChlKSllPUVkKGUsbnVsbCk7Yi5OW2RdPWV9fSxvQT1mdW5jdGlvbihhLGIpe0diKGEuTixmdW5jdGlvbihjLGQpe2EuSy5zZXQoYyxkKTtFZChWYihjKSxhLkgpO0VkKFZiKGMsZCksYS5IKTtiJiZkZWxldGUgYS5OW2NdfSl9LHJBPW5ldyBwQSx0QT1yQS5SO2Z1bmN0aW9uIHVBKGEsYil7cmV0dXJuIHJBLmdldChhLGIpfQpmdW5jdGlvbiB2QShhLGIpe3ZhciBjPWI9PT12b2lkIDA/MjpiLGQ9ckEsZSxmPShjPT09dm9pZCAwPzI6YykhPT0xP3FBKGQsYSk6ZC5LLmdldChhKTtBZChmKT09PSJhcnJheSJ8fEFkKGYpPT09Im9iamVjdCI/ZT1FZChmLG51bGwpOmU9ZjtyZXR1cm4gZX07dmFyIHdBPW5ldyBSZWdFeHAoL14oLipcLik/KGdvb2dsZXx5b3V0dWJlfGJsb2dnZXJ8d2l0aGdvb2dsZSkoXC5jb20/KT8oXC5bYS16XXsyfSk/XC4/JC8pLHhBPXtjbDpbImVjbCJdLGN1c3RvbVBpeGVsczpbIm5vbkdvb2dsZVBpeGVscyJdLGVjbDpbImNsIl0sZWhsOlsiaGwiXSxnYWF3YzpbImdvb2d0YWciXSxobDpbImVobCJdLGh0bWw6WyJjdXN0b21TY3JpcHRzIiwiY3VzdG9tUGl4ZWxzIiwibm9uR29vZ2xlUGl4ZWxzIiwibm9uR29vZ2xlU2NyaXB0cyIsIm5vbkdvb2dsZUlmcmFtZXMiXSxjdXN0b21TY3JpcHRzOlsiaHRtbCIsImN1c3RvbVBpeGVscyIsIm5vbkdvb2dsZVBpeGVscyIsIm5vbkdvb2dsZVNjcmlwdHMiLCJub25Hb29nbGVJZnJhbWVzIl0sbm9uR29vZ2xlUGl4ZWxzOltdLG5vbkdvb2dsZVNjcmlwdHM6WyJub25Hb29nbGVQaXhlbHMiXSxub25Hb29nbGVJZnJhbWVzOlsibm9uR29vZ2xlUGl4ZWxzIl19LHlBPXtjbDpbImVjbCJdLGN1c3RvbVBpeGVsczpbImN1c3RvbVNjcmlwdHMiLAoiaHRtbCJdLGVjbDpbImNsIl0sZWhsOlsiaGwiXSxnYWF3YzpbImdvb2d0YWciXSxobDpbImVobCJdLGh0bWw6WyJjdXN0b21TY3JpcHRzIl0sY3VzdG9tU2NyaXB0czpbImh0bWwiXSxub25Hb29nbGVQaXhlbHM6WyJjdXN0b21QaXhlbHMiLCJjdXN0b21TY3JpcHRzIiwiaHRtbCIsIm5vbkdvb2dsZVNjcmlwdHMiLCJub25Hb29nbGVJZnJhbWVzIl0sbm9uR29vZ2xlU2NyaXB0czpbImN1c3RvbVNjcmlwdHMiLCJodG1sIl0sbm9uR29vZ2xlSWZyYW1lczpbImN1c3RvbVNjcmlwdHMiLCJodG1sIiwibm9uR29vZ2xlU2NyaXB0cyJdfSx6QT0iZ29vZ2xlIGN1c3RvbVBpeGVscyBjdXN0b21TY3JpcHRzIGh0bWwgbm9uR29vZ2xlUGl4ZWxzIG5vbkdvb2dsZVNjcmlwdHMgbm9uR29vZ2xlSWZyYW1lcyIuc3BsaXQoIiAiKTsKZnVuY3Rpb24gQUEoKXt2YXIgYT11QSgiZ3RtLmFsbG93bGlzdCIpfHx1QSgiZ3RtLndoaXRlbGlzdCIpO2EmJlAoOSk7SWYoNjIpJiYoYT12b2lkIDApO0JBKCkmJihJZig2Mik/UCgxMTYpOihQKDExNyksSWYoNDgpJiYoYT1bXSx3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nJiZ3aW5kb3cuY29uc29sZS5sb2coIkdUTSBibG9ja2VkLiBTZWUgZ28vMTM2ODc3MjguIikpKSk7dmFyIGI9YSYmUmIoS2IoYSkseEEpLGM9dUEoImd0bS5ibG9ja2xpc3QiKXx8dUEoImd0bS5ibGFja2xpc3QiKTtjfHwoYz11QSgidGFnVHlwZUJsYWNrbGlzdCIpKSYmUCgzKTtjP1AoOCk6Yz1bXTtCQSgpJiYoYz1LYihjKSxjLnB1c2goIm5vbkdvb2dsZVBpeGVscyIsIm5vbkdvb2dsZVNjcmlwdHMiLCJzYW5kYm94ZWRTY3JpcHRzIikpO0tiKGMpLmluZGV4T2YoImdvb2dsZSIpPj0wJiZQKDIpO3ZhciBkPWMmJlJiKEtiKGMpLHlBKSxlPXt9O3JldHVybiBmdW5jdGlvbihmKXt2YXIgZz1mJiYKZltHZi5ZYl07aWYoIWd8fHR5cGVvZiBnIT09InN0cmluZyIpcmV0dXJuITA7Zz1nLnJlcGxhY2UoL15fKi8sIiIpO2lmKGVbZ10hPT12b2lkIDApcmV0dXJuIGVbZ107dmFyIGg9YWwoMjcsZnVuY3Rpb24oKXtyZXR1cm57fX0pW2ddfHxbXSxsPSEwO2EmJihsPWwmJkNBKGcsaCxiKSk7dmFyIG49ITE7YyYmKG49REEoZyxoLGQpKTt2YXIgcD0hbHx8bjshcCYmKGguaW5kZXhPZigic2FuZGJveGVkU2NyaXB0cyIpPT09LTF8fGImJmIuaW5kZXhPZigic2FuZGJveGVkU2NyaXB0cyIpIT09LTE/MDpFYihkLHpBKSkmJihwPSEwKTtyZXR1cm4gZVtnXT1wfX1mdW5jdGlvbiBDQShhLGIsYyl7aWYoYy5pbmRleE9mKGEpPDApaWYoYiYmYi5sZW5ndGg+MClmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7aWYoYy5pbmRleE9mKGJbZF0pPDApcmV0dXJuIFAoMTEpLCExfWVsc2UgcmV0dXJuITE7cmV0dXJuITB9CmZ1bmN0aW9uIERBKGEsYixjKXt2YXIgZD1jLmluZGV4T2YoYSk+PTA7aWYoZClyZXR1cm4gZDt2YXIgZT1FYihjLGJ8fFtdKTtlJiZQKDEwKTtyZXR1cm4gZX1mdW5jdGlvbiBCQSgpe3JldHVybiB3QS50ZXN0KEEubG9jYXRpb24mJkEubG9jYXRpb24uaG9zdG5hbWUpfTtmdW5jdGlvbiBFQShhKXtmb3IodmFyIGI9W10sYz1bXSxkPUZBKGEpLGU9bShjQS5nZXRSdWxlcygpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7Zm9yKHZhciBnPWYudmFsdWUuZXZhbHVhdGUoYSxkKSxoPWcuZmlyaW5nVGFncyxsPWcuYmxvY2tpbmdUYWdzLG49MDtuPGgubGVuZ3RoO24rKyliW2hbbl1dPSEwO2Zvcih2YXIgcD0wO3A8bC5sZW5ndGg7cCsrKWNbbFtwXV09ITB9Zm9yKHZhciBxPVtdLHI9MDtyPGNBLnRhZ3MubGVuZ3RoO3IrKyliW3JdJiYhY1tyXSYmKHFbcl09ITApO3JldHVybiBxfWZ1bmN0aW9uIEZBKGEpe3ZhciBiPVtdO3JldHVybiBmdW5jdGlvbihjKXtiW2NdPT09dm9pZCAwJiYoYltjXT1jQS5wcmVkaWNhdGVzW2NdLmV2YWx1YXRlKGEsW10pKTtyZXR1cm4gYltjXX19O3ZhciBHQT1mdW5jdGlvbigpe3RoaXMuSz0wO3RoaXMuSD17fX07R0EucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0rK3RoaXMuSzt0aGlzLkhbYV09dGhpcy5IW2FdfHx7fTt0aGlzLkhbYV1bU3RyaW5nKGQpXT17bGlzdGVuZXI6YixyZjpjfTtyZXR1cm4gZH07R0EucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5IW2FdLGQ9U3RyaW5nKGIpO2lmKCFjfHwhY1tkXSlyZXR1cm4hMTtkZWxldGUgY1tkXTtyZXR1cm4hMH07dmFyIElBPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107R2IoSEEuSFthXSxmdW5jdGlvbihkLGUpe2MuaW5kZXhPZihlLmxpc3RlbmVyKTwwJiYoZS5yZj09PXZvaWQgMHx8Yi5pbmRleE9mKGUucmYpPj0wKSYmYy5wdXNoKGUubGlzdGVuZXIpfSk7cmV0dXJuIGN9O2Z1bmN0aW9uIEpBKGEsYixjKXtyZXR1cm57ZW50aXR5VHlwZTphLGluZGV4SW5PcmlnaW5Db250YWluZXI6YixuYW1lSW5PcmlnaW5Db250YWluZXI6YyxvcmlnaW5Db250YWluZXJJZDpFKDUpLG9yaWdpbkNJZDp2aygpfX07ZnVuY3Rpb24gS0EoYSxiKXtpZihkYXRhLmVudGl0aWVzKXt2YXIgYz1kYXRhLmVudGl0aWVzW2FdO2lmKGMpcmV0dXJuIGNbYl19fTt2YXIgTUE9ZnVuY3Rpb24oYSxiKXt0aGlzLkg9ITE7dGhpcy5SPVtdO3RoaXMuZXZlbnREYXRhPXt0YWdzOltdfTt0aGlzLlo9ITE7dGhpcy5LPXRoaXMuTj0wO0xBKHRoaXMsYSxiKX0sTkE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoQ2ouaGFzT3duUHJvcGVydHkoYil8fGI9PT0iX196b25lIilyZXR1cm4tMTt2YXIgZT17fTtDZChkKSYmKGU9RWQoZCxlKSk7ZS5pZD1jO2Uuc3RhdHVzPSJ0aW1lb3V0IjtyZXR1cm4gYS5ldmVudERhdGEudGFncy5wdXNoKGUpLTF9LE9BPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuZXZlbnREYXRhLnRhZ3NbYl07ZSYmKGUuc3RhdHVzPWMsZS5leGVjdXRpb25UaW1lPWQpfSxQQT1mdW5jdGlvbihhKXtpZighYS5IKXtmb3IodmFyIGI9YS5SLGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdKCk7YS5IPSEwO2EuUi5sZW5ndGg9MH19LExBPWZ1bmN0aW9uKGEsYixjKXtiIT09dm9pZCAwJiZhLndnKGIpO2MmJkEuc2V0VGltZW91dChmdW5jdGlvbigpe1BBKGEpfSwKTnVtYmVyKGMpKX07TUEucHJvdG90eXBlLndnPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1QYihmdW5jdGlvbigpe2JkKGZ1bmN0aW9uKCl7YShFKDUpLGIuZXZlbnREYXRhKX0pfSk7dGhpcy5IP2MoKTp0aGlzLlIucHVzaChjKX07dmFyIFFBPWZ1bmN0aW9uKGEpe2EuTisrO3JldHVybiBQYihmdW5jdGlvbigpe2EuSysrO2EuWiYmYS5LPj1hLk4mJlBBKGEpfSl9LFJBPWZ1bmN0aW9uKGEpe2EuWj0hMDthLks+PWEuTiYmUEEoYSl9O2Z1bmN0aW9uIFNBKCl7cmV0dXJuIEFbVEEoKV19CmZ1bmN0aW9uIFRBKCl7cmV0dXJuIEEuR29vZ2xlQW5hbHl0aWNzT2JqZWN0fHwiZ2EifXZhciBXQT1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9e319O2Z1bmN0aW9uIFhBKCl7YTp7dmFyIGE9RSg1KTt9fQpmdW5jdGlvbiBZQShhLGIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPVNBKCksZD1jJiZjLmdldEJ5TmFtZSYmYy5nZXRCeU5hbWUoYSk7aWYoZCl7dmFyIGU9ZC5nZXQoInNlbmRIaXRUYXNrIik7ZC5zZXQoInNlbmRIaXRUYXNrIixmdW5jdGlvbihmKXt2YXIgZz1mLmdldCgiaGl0UGF5bG9hZCIpLGg9Zi5nZXQoImhpdENhbGxiYWNrIiksbD1nLmluZGV4T2YoIiZ0aWQ9IitiKTwwO2wmJihmLnNldCgiaGl0UGF5bG9hZCIsZy5yZXBsYWNlKC8mdGlkPVVBLVswLTldKy1bMC05XSsvLCImdGlkPSIrYiksITApLGYuc2V0KCJoaXRDYWxsYmFjayIsdm9pZCAwLCEwKSk7ZShmKTtsJiYoZi5zZXQoImhpdFBheWxvYWQiLGcsITApLGYuc2V0KCJoaXRDYWxsYmFjayIsaCwhMCksZi5zZXQoIl94XzE5Iix2b2lkIDAsITApLGUoZikpfSl9fX07dmFyIGFCPVsiZXMiLCIxIl0sYkI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuZXZlbnREYXRhPXt9O3RoaXMuSD17fTtmeihmdW5jdGlvbihiKXt2YXIgYzt2YXIgZD1iLmV2ZW50SWQsZT1iLnRmO2lmKGEuZXZlbnREYXRhW2RdKXt2YXIgZj1bXTthLkhbZF18fGYucHVzaChhQik7Zi5wdXNoLmFwcGx5KGYsdyhhLmV2ZW50RGF0YVtkXSkpO2UmJihhLkhbZF09ITApO2M9Zn1lbHNlIGM9W107cmV0dXJuIGN9KX0sY0I7ZnVuY3Rpb24gZEIoYSxiKXt2YXIgYztpZigoYz1jQikhPW51bGwmJmZuLk4pe3ZhciBkPWMuZXZlbnREYXRhLGU7ZT1iLm1hdGNoKC9eKGd0bXxndGFnKVwuLyk/ZW5jb2RlVVJJQ29tcG9uZW50KGIpOiIqIjtkW2FdPVtbImUiLGVdLFsiZWlkIixTdHJpbmcoYSldXTtneigpO2V6KGEpfX07dmFyIGVCPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9e307dGhpcy5LPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjPWIuZXZlbnRJZCxkPWIudGYsZT1bXSxmPWEuSFtjXXx8W107Zi5sZW5ndGgmJmUucHVzaChbInRyIixmLmpvaW4oIi4iKV0pO3ZhciBnPWEuS1tjXXx8W107Zy5sZW5ndGgmJmUucHVzaChbInRpIixnLmpvaW4oIi4iKV0pO2QmJihkZWxldGUgYS5IW2NdLGRlbGV0ZSBhLktbY10pO3JldHVybiBlfSl9LGZCOwpmdW5jdGlvbiBnQihhLGIsYyl7ZkJ8fChmQj1uZXcgZUIpO3ZhciBkPWZCO2lmKGZuLk4mJmIpe3ZhciBlPWRuKGIpO2QuSFthXT1kLkhbYV18fFtdO2QuSFthXS5wdXNoKGMrZSk7dmFyIGY9YltHZi5ZYl07aWYoIWYpdGhyb3cgRXJyb3IoIkVycm9yOiBObyBmdW5jdGlvbiBuYW1lIGdpdmVuIGZvciBmdW5jdGlvbiBjYWxsLiIpO3ZhciBnPShReltmXT8iMSI6IjIiKStlO2QuS1thXT1kLktbYV18fFtdO2QuS1thXS5wdXNoKGcpO2d6KCk7ZXooYSl9fTtmdW5jdGlvbiBoQihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7aUIoKS5hZGRSZXN0cmljdGlvbigwLGEsYixjKX1mdW5jdGlvbiBqQigpe3ZhciBhPXZrKCk7cmV0dXJuIGlCKCkuZ2V0UmVzdHJpY3Rpb25zKDAsYSl9ZnVuY3Rpb24ga0IoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO2lCKCkuYWRkUmVzdHJpY3Rpb24oMSxhLGIsYyl9ZnVuY3Rpb24gbEIoKXt2YXIgYT12aygpO3JldHVybiBpQigpLmdldFJlc3RyaWN0aW9ucygxLGEpfXZhciBtQj1mdW5jdGlvbigpe3RoaXMuY29udGFpbmVyPXt9O3RoaXMuSD17fX0sbkI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNvbnRhaW5lcltiXTtjfHwoYz17X2VudGl0eTp7aW50ZXJuYWw6W10sZXh0ZXJuYWw6W119LF9ldmVudDp7aW50ZXJuYWw6W10sZXh0ZXJuYWw6W119fSxhLmNvbnRhaW5lcltiXT1jKTtyZXR1cm4gY307Cm1CLnByb3RvdHlwZS5hZGRSZXN0cmljdGlvbj1mdW5jdGlvbihhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDtpZighZHx8IXRoaXMuSFtiXSl7dmFyIGU9bkIodGhpcyxiKTthPT09MD9kP2UuX2VudGl0eS5leHRlcm5hbC5wdXNoKGMpOmUuX2VudGl0eS5pbnRlcm5hbC5wdXNoKGMpOmE9PT0xJiYoZD9lLl9ldmVudC5leHRlcm5hbC5wdXNoKGMpOmUuX2V2ZW50LmludGVybmFsLnB1c2goYykpfX07Cm1CLnByb3RvdHlwZS5nZXRSZXN0cmljdGlvbnM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uQih0aGlzLGIpO2lmKGE9PT0wKXt2YXIgZCxlO3JldHVybltdLmNvbmNhdCh3KChjPT1udWxsP3ZvaWQgMDooZD1jLl9lbnRpdHkpPT1udWxsP3ZvaWQgMDpkLmludGVybmFsKXx8W10pLHcoKGM9PW51bGw/dm9pZCAwOihlPWMuX2VudGl0eSk9PW51bGw/dm9pZCAwOmUuZXh0ZXJuYWwpfHxbXSkpfWlmKGE9PT0xKXt2YXIgZixnO3JldHVybltdLmNvbmNhdCh3KChjPT1udWxsP3ZvaWQgMDooZj1jLl9ldmVudCk9PW51bGw/dm9pZCAwOmYuaW50ZXJuYWwpfHxbXSksdygoYz09bnVsbD92b2lkIDA6KGc9Yy5fZXZlbnQpPT1udWxsP3ZvaWQgMDpnLmV4dGVybmFsKXx8W10pKX1yZXR1cm5bXX07Cm1CLnByb3RvdHlwZS5nZXRFeHRlcm5hbFJlc3RyaWN0aW9ucz1mdW5jdGlvbihhLGIpe3ZhciBjPW5CKHRoaXMsYiksZCxlO3JldHVybiBhPT09MD8oYz09bnVsbD92b2lkIDA6KGQ9Yy5fZW50aXR5KT09bnVsbD92b2lkIDA6ZC5leHRlcm5hbCl8fFtdOihjPT1udWxsP3ZvaWQgMDooZT1jLl9ldmVudCk9PW51bGw/dm9pZCAwOmUuZXh0ZXJuYWwpfHxbXX07bUIucHJvdG90eXBlLnJlbW92ZUV4dGVybmFsUmVzdHJpY3Rpb25zPWZ1bmN0aW9uKGEpe3ZhciBiPW5CKHRoaXMsYSk7Yi5fZXZlbnQmJihiLl9ldmVudC5leHRlcm5hbD1bXSk7Yi5fZW50aXR5JiYoYi5fZW50aXR5LmV4dGVybmFsPVtdKTt0aGlzLkhbYV09ITB9O2Z1bmN0aW9uIGlCKCl7cmV0dXJuIGtqKCJyIixmdW5jdGlvbigpe3JldHVybiBuZXcgbUJ9KX07ZnVuY3Rpb24gb0IoYSxiLGMsZCl7dmFyIGU9Y0EudGFnc1thXSxmPXBCKGEsYixjLGQpO2lmKCFmKXJldHVybiBudWxsO3ZhciBnPVp6KGUsYyk7aWYoZyYmZy5sZW5ndGgpe3ZhciBoPWdbMF07Zj1vQihoLmluZGV4LHtvblN1Y2Nlc3M6ZixvbkZhaWx1cmU6aC5ibz09PTE/Yi50ZXJtaW5hdGU6Zix0ZXJtaW5hdGU6Yi50ZXJtaW5hdGV9LGMsZCl9cmV0dXJuIGZ9CmZ1bmN0aW9uIHBCKGEsYixjLGQpe2Z1bmN0aW9uIGUoKXtmdW5jdGlvbiB5KCl7aW0oMyk7dmFyIFM9TmIoKS1OO0pBKDEsYSxmLmdldE5hbWUoKSk7Z0IoYy5pZCxnLCI3Iik7T0EoYy5sZCxELCJleGNlcHRpb24iLFMpO2ZuLkgmJkZ6KGMsZyxJeS5YLnVqKTtJfHwoST0hMCxsKCkpfWlmKGYuSWFbR2YuT3FdKWwoKTtlbHNle3ZhciB6PWFBKGYsYyk7aWYoeiE9bnVsbClmb3IodmFyIEM9MDtDPHoubGVuZ3RoO0MrKylpZighWG8oeltDXSkpe2woKTtyZXR1cm59dmFyIEQ9TkEoYy5sZCxmLk8sZi50YWdJZCxmLmdldE1ldGFkYXRhKGMpKSxJPSExLEc9e3Z0cF9ndG1PblN1Y2Nlc3M6ZnVuY3Rpb24oKXtpZighSSl7ST0hMDt2YXIgUz1OYigpLU47Z0IoYy5pZCxnLCI1Iik7T0EoYy5sZCxELCJzdWNjZXNzIixTKTtmbi5IJiZGeihjLGcsSXkuWC53aik7aCgpfX0sdnRwX2d0bU9uRmFpbHVyZTpmdW5jdGlvbigpe2lmKCFJKXtJPSEwO3ZhciBTPU5iKCktTjtnQihjLmlkLGcsIjYiKTsKT0EoYy5sZCxELCJmYWlsdXJlIixTKTtmbi5IJiZGeihjLGcsSXkuWC52aik7bCgpfX19O0cudnRwX2d0bUV2ZW50SWQ9Yy5pZDtjLnByaW9yaXR5SWQmJihHLnZ0cF9ndG1Qcmlvcml0eUlkPWMucHJpb3JpdHlJZCk7Z0IoYy5pZCxnLCIxIik7Zm4uSCYmRXooYyxnKTt2YXIgTj1OYigpO3RyeXtmLmV2YWx1YXRlKGMsZCxHKX1jYXRjaChTKXt5KFMpfWZuLkgmJkZ6KGMsZyxJeS5YLkNuKX19dmFyIGY9Y0EudGFnc1thXSxnPWYuRmcoKSxoPWIub25TdWNjZXNzLGw9Yi5vbkZhaWx1cmUsbj1iLnRlcm1pbmF0ZTtpZihjLmlzQmxvY2tlZChnKSlyZXR1cm4gbnVsbDt2YXIgcD0keihmLGMpO2lmKHAmJnAubGVuZ3RoKXt2YXIgcT1wWzBdLHI9b0IocS5pbmRleCx7b25TdWNjZXNzOmgsb25GYWlsdXJlOmwsdGVybWluYXRlOm59LGMsZCk7aWYoIXIpcmV0dXJuIG51bGw7aD1yO2w9cS5ibz09PTI/bjpyfWlmKGYuSWFbR2Yua25dfHxmLklhW0dmLlFxXSl7dmFyIHQ9Zi5JYVtHZi5rbl0/CmNBLnZrOmMudmssdT1oLHY9bDtpZighdFthXSl7dmFyIHg9cUIoYSx0LFBiKGUpKTtoPXgub25TdWNjZXNzO2w9eC5vbkZhaWx1cmV9cmV0dXJuIGZ1bmN0aW9uKCl7dFthXSh1LHYpfX1yZXR1cm4gZX1mdW5jdGlvbiBxQihhLGIsYyl7dmFyIGQ9W10sZT1bXTtiW2FdPXJCKGQsZSxjKTtyZXR1cm57b25TdWNjZXNzOmZ1bmN0aW9uKCl7YlthXT1zQjtmb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKylkW2ZdKCl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe2JbYV09dEI7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspZVtmXSgpfX19ZnVuY3Rpb24gckIoYSxiLGMpe3JldHVybiBmdW5jdGlvbihkLGUpe2EucHVzaChkKTtiLnB1c2goZSk7YygpfX1mdW5jdGlvbiBzQihhKXthKCl9ZnVuY3Rpb24gdEIoYSxiKXtiKCl9O3ZhciB3Qj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxjQS50YWdzLmxlbmd0aDtkKyspaWYoYVtkXSl7dmFyIGU9Y0EudGFnc1tkXTt2YXIgZj1RQShiLmxkKTt0cnl7dmFyIGc9b0IoZCx7b25TdWNjZXNzOmYsb25GYWlsdXJlOmYsdGVybWluYXRlOmZ9LGIsZCk7aWYoZyl7dmFyIGg9UXpbZS5PXTtjLnB1c2goe05vOmQscHJpb3JpdHlPdmVycmlkZTooaD9oLnByaW9yaXR5T3ZlcnJpZGV8fDA6MCl8fEtBKGUuTywxKXx8MCxleGVjdXRlOmd9KX1lbHNlIHVCKGQsYiksZigpfWNhdGNoKG4pe2YoKX19Yy5zb3J0KHZCKTtmb3IodmFyIGw9MDtsPGMubGVuZ3RoO2wrKyljW2xdLmV4ZWN1dGUoKTtyZXR1cm4gYy5sZW5ndGg+MH07CmZ1bmN0aW9uIHhCKGEsYil7aWYoIUhBKXJldHVybiExO3ZhciBjPWFbImd0bS50cmlnZ2VycyJdJiZTdHJpbmcoYVsiZ3RtLnRyaWdnZXJzIl0pLGQ9SUEoYS5ldmVudCxjP1N0cmluZyhjKS5zcGxpdCgiLCIpOltdKTtpZighZC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDsrK2Upe3ZhciBmPVFBKGIpO3RyeXtkW2VdKGEsZil9Y2F0Y2goZyl7ZigpfX1yZXR1cm4hMH1mdW5jdGlvbiB2QihhLGIpe3ZhciBjLGQ9Yi5wcmlvcml0eU92ZXJyaWRlLGU9YS5wcmlvcml0eU92ZXJyaWRlO2M9ZD5lPzE6ZDxlPy0xOjA7dmFyIGY7aWYoYyE9PTApZj1jO2Vsc2V7dmFyIGc9YS5ObyxoPWIuTm87Zj1nPmg/MTpnPGg/LTE6MH1yZXR1cm4gZn0KZnVuY3Rpb24gdUIoYSxiKXtpZihmbi5OKXt2YXIgYz1mdW5jdGlvbihkKXt2YXIgZT1iLmlzQmxvY2tlZChjQS50YWdzW2RdLkZnKCkpPyIzIjoiNCIsZj1aeihjQS50YWdzW2RdLGIpO2YmJmYubGVuZ3RoJiZjKGZbMF0uaW5kZXgpO2dCKGIuaWQsY0EudGFnc1tkXS5GZygpLGUpO3ZhciBnPSR6KGNBLnRhZ3NbZF0sYik7ZyYmZy5sZW5ndGgmJmMoZ1swXS5pbmRleCl9O2MoYSl9fXZhciBIQTtmdW5jdGlvbiB5Qigpe0hBfHwoSEE9bmV3IEdBKTtyZXR1cm4gSEF9CmZ1bmN0aW9uIHpCKGEpe3ZhciBiPWFbImd0bS51bmlxdWVFdmVudElkIl0sYz1hWyJndG0ucHJpb3JpdHlJZCJdLGQ9YVsiZ3RtLnByaW9yaXR5UXVldWUiXSxlPWEuZXZlbnQ7Zm4uSCYmdnooYixlKTtpZihlPT09Imd0bS5qcyIpe2lmKCRrKDEzKSlyZXR1cm4hMTtaaygxMywhMCl9dmFyIGY9ITEsZz1sQigpLGg9RWQoYSxudWxsKTtpZighZy5ldmVyeShmdW5jdGlvbih1KXtyZXR1cm4gdSh7b3JpZ2luYWxFdmVudERhdGE6aH0pfSkpe2lmKGUhPT0iZ3RtLmpzIiYmZSE9PSJndG0uaW5pdCImJmUhPT0iZ3RtLmluaXRfY29uc2VudCIpcmV0dXJuITE7Zj0hMH1kQihiLGUpO3ZhciBsPWEuZXZlbnRDYWxsYmFjayxuPWEuZXZlbnRUaW1lb3V0LHA9e2lkOmIscHJpb3JpdHlJZDpjLHByaW9yaXR5UXVldWU6ZCxuYW1lOmUsaXNCbG9ja2VkOkFCKGgsZiksdms6W10sbG9nTWFjcm9FcnJvcjpmdW5jdGlvbih1LHYseCl7UCg2KTtpbSg0KTtKQSgyLHYseCl9LGNhY2hlZE1vZGVsVmFsdWVzOkJCKCksCmxkOm5ldyBNQShmdW5jdGlvbigpe2ZuLkgmJnl6KGIsZSk7RnkoNSxlKTtsJiZsLmFwcGx5KGwsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0sbiksb3JpZ2luYWxFdmVudERhdGE6aH07Zm4uSCYmQ3oocC5pZCk7dmFyIHE9RUEocCk7Zm4uSCYmRHoocC5pZCk7RnkoMixlKTtjQS5nZXRSdWxlcygpO2YmJihxPUNCKHEpKTtmbi5IJiZ3eihiKTt2YXIgcj13QihxLHApO3ImJkZ5KDQsZSk7dmFyIHQ9eEIoYSxwLmxkKTtSQShwLmxkKTtlIT09Imd0bS5qcyImJmUhPT0iZ3RtLnN5bmMifHxYQSgpO3JldHVybiBEQihxLHIpfHx0fQpmdW5jdGlvbiBCQigpe3ZhciBhPXt9O2EuZXZlbnQ9dkEoImV2ZW50IiwxKTthLmVjb21tZXJjZT12QSgiZWNvbW1lcmNlIiwxKTthLmd0bT12QSgiZ3RtIik7YS5ldmVudE1vZGVsPXZBKCJldmVudE1vZGVsIik7cmV0dXJuIGF9CmZ1bmN0aW9uIEFCKGEsYil7dmFyIGM9QUEoKTtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9YyhkKTtpZihlKXJldHVybiEwO3ZhciBmPWQmJmRbR2YuWWJdO2lmKCFmfHx0eXBlb2YgZiE9PSJzdHJpbmciKXJldHVybiEwO2Y9Zi5yZXBsYWNlKC9eXyovLCIiKTt2YXIgZz1qQigpLGg9YTtiJiYoaD1FZChhLG51bGwpLGhbImd0bS51bmlxdWVFdmVudElkIl09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO2Zvcih2YXIgbD0hMSxuPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KVtmXXx8W10scD1tKGcpLHE9cC5uZXh0KCk7IXEuZG9uZTtxPXAubmV4dCgpKXt2YXIgcj1xLnZhbHVlO3RyeXtyKHtlbnRpdHlJZDpmLHNlY3VyaXR5R3JvdXBzOm4sb3JpZ2luYWxFdmVudERhdGE6aH0pfHwobD0hMCl9Y2F0Y2godCl7bD0hMH19cmV0dXJuIGx8fGV9fQpmdW5jdGlvbiBDQihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWlmKGFbY10pe3ZhciBkPWNBLnRhZ3NbY10uTztpZihCaltkXXx8Y0EudGFnc1tjXS5JYVtHZi5ScV0hPT12b2lkIDB8fEtBKGQsMikpYltjXT0hMH1yZXR1cm4gYn1mdW5jdGlvbiBEQihhLGIpe2lmKCFiKXJldHVybiBiO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGFbY10mJmNBLnRhZ3NbY10mJiFDaltjQS50YWdzW2NdLk9dKXJldHVybiEwO3JldHVybiExfTt2YXIgRUI9TmYoNjEsMUUzKSxGQj1OZig2OCwyRTMpLFpvPVsiYWRfc3RvcmFnZSIsImFuYWx5dGljc19zdG9yYWdlIl07ZnVuY3Rpb24gR0IoYSxiKXtpZihhKXt2YXIgYz1raigiZ3RoIixmdW5jdGlvbigpe3JldHVybnt9fSksZDthIT09Mnx8KChkPUhCKCkpPT1udWxsP3ZvaWQgMDpkLnN0YXR1cykhPT0zfHxiIT09dm9pZCAwJiZiPD1GQnx8KGE9MyxjLmRsPWI/TWF0aC5mbG9vcihiLzFFMyk6dm9pZCAwKTtjLnM9YTtJQihjKX19ZnVuY3Rpb24gSUIoYSl7aWYoYS5zKXt2YXIgYj1mdW5jdGlvbigpe3ZhciBjPXtzdGF0dXM6YS5zLGV4cGlyZXM6RGF0ZS5ub3coKSs4NjRFNX07YS5kbCE9PXZvaWQgMCYmKGMuZGVsYXk9YS5kbCk7a3IoImd0Z19sb2FkX3N0YXR1cyIsYyl9O2JwKGZ1bmN0aW9uKCl7aWYoWW8oKSliKCk7ZWxzZSBmb3IodmFyIGM9UGIoYiksZD1tKFpvKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSlJbChjLGUudmFsdWUpfSxabyl9fQpmdW5jdGlvbiBKQigpe3ZhciBhPUtCKCEwKTtyZXR1cm4gYT8oTEIoYS5zdGF0dXMsYS5kZWxheSksITEpOiEwfWZ1bmN0aW9uIEtCKGEpe2E9YT09PXZvaWQgMD8hMTphO2lmKGFrKCkpe3ZhciBiPW5yKCJndGdfbG9hZF9zdGF0dXMiKSxjPWIudmFsdWUsZD1hJiZBYihjPT1udWxsP3ZvaWQgMDpjLmV4cGlyZXMpJiYoYz09bnVsbD92b2lkIDA6Yy5leHBpcmVzKTxEYXRlLm5vdygpKzM2RTU7aWYoYi5lcnJvcj09PTAmJkFiKGM9PW51bGw/dm9pZCAwOmMuc3RhdHVzKSYmIWQpe3ZhciBlPXtzdGF0dXM6Yy5zdGF0dXN9OyhjPT1udWxsP3ZvaWQgMDpjLmRlbGF5KSE9PXZvaWQgMCYmKGUuZGVsYXk9Yy5kZWxheSk7cmV0dXJuIGV9cmV0dXJuIEhCKCl9fWZ1bmN0aW9uIExCKGEsYil7dmFyIGM9a2ooImd0aCIsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2Mucz1hO2IhPT12b2lkIDAmJihjLmRsPWIpfQpmdW5jdGlvbiBIQigpe3ZhciBhPW1qKCJndGgiKTtpZihhIT1udWxsJiZhLnMpe3ZhciBiPXtzdGF0dXM6YS5zfTthLmRsIT09dm9pZCAwJiYoYi5kZWxheT1hLmRsKTtyZXR1cm4gYn19ZnVuY3Rpb24gTUIoKXt2YXIgYTsoKGE9SEIoKSk9PW51bGw/dm9pZCAwOmEuc3RhdHVzKT09PTEmJkdCKDMpfWZ1bmN0aW9uIE5CKCl7aWYoSkIoKSl7dmFyIGE9RGF0ZS5ub3coKTtuaigiZ3RoIix7bDpmdW5jdGlvbigpe0dCKDIsRGF0ZS5ub3coKS1hKX0sczoxfSk7dmFyIGI9RSg1KSxjPVNiKGIsIkdUTS0iKT8iL2d0bS5qcyI6Ii9ndGFnL2pzIixkPSJodHRwczovLyIrRSgzKStjKyI/aWQ9IitiKyImZ3RnX2hlYWx0aD0xIjtVYyhkLE1CLE1CKTtBLnNldFRpbWVvdXQoTUIsRUIpfX07ZnVuY3Rpb24gT0IoKXt5QigpLmFkZExpc3RlbmVyKCJndG0uaW5pdCIsZnVuY3Rpb24oYSxiKXtaaygyNiwhMCk7TSg1NTYpJiZhaygpJiYhSWYoNDUpJiYoZm8uSFtjby5pYS5aYl09Ym8uTWEuTGgpO2lmKGFrKCkpe3ZhciBjO2M9bG8oY28uaWEuWmIpO2dvKGMpP2lvKGMsTkIpOk5CKCl9dG8oITEsITApO2IoKX0pfTtmdW5jdGlvbiBQQigpe2lmKG1qKCJwc2NkbCIpIT09dm9pZCAwKW5tKGptLmJhLm9pKT09PXZvaWQgMCYmbW0oam0uYmEub2ksbWooInBzY2RsIikpO2Vsc2V7dmFyIGE9ZnVuY3Rpb24oYyl7bmooInBzY2RsIixjKTttbShqbS5iYS5vaSxjKX0sYj1mdW5jdGlvbigpe2EoImVycm9yIil9O3RyeXtIYy5jb29raWVEZXByZWNhdGlvbkxhYmVsPyhhKCJwZW5kaW5nIiksSGMuY29va2llRGVwcmVjYXRpb25MYWJlbC5nZXRWYWx1ZSgpLnRoZW4oYSkuY2F0Y2goYikpOmEoIm5vYXBpIil9Y2F0Y2goYyl7YihjKX19fTt2YXIgUkI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMucmVhZHk9ITE7dGhpcy5LPTA7dGhpcy5IPVtdO3ZhciBiPUE7aWYoQi5yZWFkeVN0YXRlPT09ImludGVyYWN0aXZlIiYmIUIuY3JlYXRlRXZlbnRPYmplY3R8fEIucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpdGhpcy5vblJlYWR5KCk7ZWxzZXskYyhCLCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbihkKXtyZXR1cm4gdm9pZCBhLm9uUmVhZHkoZCl9KTskYyhCLCJyZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbihkKXtyZXR1cm4gdm9pZCBhLm9uUmVhZHkoZCl9KTtpZihCLmNyZWF0ZUV2ZW50T2JqZWN0JiZCLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCl7dmFyIGM9ITA7dHJ5e2M9IWIuZnJhbWVFbGVtZW50fWNhdGNoKGQpe31jJiZRQih0aGlzKX0kYyhiLCJsb2FkIixmdW5jdGlvbihkKXtyZXR1cm4gdm9pZCBhLm9uUmVhZHkoZCl9KX19O1JCLnByb3RvdHlwZS5pc1JlYWR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZHl9OwpSQi5wcm90b3R5cGUub25SZWFkeT1mdW5jdGlvbihhKXtpZighdGhpcy5yZWFkeSl7dmFyIGI9Qi5jcmVhdGVFdmVudE9iamVjdCxjPUIucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIsZD1CLnJlYWR5U3RhdGU9PT0iaW50ZXJhY3RpdmUiO2lmKCFhfHxhLnR5cGUhPT0icmVhZHlzdGF0ZWNoYW5nZSJ8fGN8fCFiJiZkKXt0aGlzLnJlYWR5PSEwO2Zvcih2YXIgZT0wO2U8dGhpcy5ILmxlbmd0aDtlKyspYmQodGhpcy5IW2VdKX10aGlzLkgucHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgZj1PYS5hcHBseSgwLGFyZ3VtZW50cyksZz0wO2c8Zi5sZW5ndGg7ZysrKWJkKGZbZ10pO3JldHVybiAwfX19Owp2YXIgUUI9ZnVuY3Rpb24oYSl7aWYoIWEucmVhZHkmJmEuSzwxNDApe2EuSysrO3RyeXt2YXIgYixjOyhjPShiPUIuZG9jdW1lbnRFbGVtZW50KS5kb1Njcm9sbCk9PW51bGx8fGMuY2FsbChiLCJsZWZ0Iik7YS5vblJlYWR5KCl9Y2F0Y2goZCl7QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgUUIoYSl9LDUwKX19fSxTQjtmdW5jdGlvbiBUQigpe1NCfHwoU0I9bmV3IFJCKX1mdW5jdGlvbiBVQigpe1RCKCk7dmFyIGE7cmV0dXJuKGE9U0IpPT1udWxsP3ZvaWQgMDphLmlzUmVhZHkoKX1mdW5jdGlvbiBWQihhKXtUQigpO3ZhciBiOyhiPVNCKSE9bnVsbCYmKGIucmVhZHk/YmQoYSk6Yi5ILnB1c2goYSkpfTt2YXIgWEI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVdCLGU7aWYoKGU9ZC5IKT09bnVsbHx8IWUuT3Ipe3ZhciBmPU9iamVjdC5rZXlzKGIpLmxlbmd0aD4wPzI6MSxnLGgsbD0oYz09bnVsbD92b2lkIDA6KGg9Yy5vcmlnaW5hdGluZ0VudGl0eSk9PW51bGw/dm9pZCAwOmgub3JpZ2luQ29udGFpbmVySWQpfHwiIjtnPWw/U2IobCwiR1RNLSIpPzM6MjoxO2lmKCFhKWQuSD17dHlwZTpmLHNvdXJjZTpnLHBhcmFtczpifTtlbHNlIGlmKGQuSCl7UCgxODQpO3ZhciBuPSExO2QuSC5zb3VyY2U9PT1nfHxkLkguc291cmNlIT09MyYmZyE9PTN8fChVbSgiaWRjcyIsIjEiKSxuPSEwKTtkLkgudHlwZSE9PTImJmYhPT0yfHxQKDE4Nik7dmFyIHA7aWYocD1kLkgudHlwZT09PTImJmY9PT0yKWE6e3ZhciBxPWQuSC5wYXJhbXMscj1PYmplY3Qua2V5cyhxKSx0PU9iamVjdC5rZXlzKGIpO2lmKHIubGVuZ3RoIT09dC5sZW5ndGgpcD0hMDtlbHNle2Zvcih2YXIgdT1tKHIpLHY9dS5uZXh0KCk7IXYuZG9uZTt2PQp1Lm5leHQoKSl7dmFyIHg9di52YWx1ZTtpZighYi5oYXNPd25Qcm9wZXJ0eSh4KXx8cVt4XSE9PWJbeF0pe3A9ITA7YnJlYWsgYX19cD0hMX19cCYmKFVtKCJpZGNjIiwiMSIpLG49ITApO24mJih0bygpLGQuSC5Pcj0hMCl9fX0sV0I9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXZvaWQgMH07dmFyIFpCPWZ1bmN0aW9uKGEpe3ZhciBiPVlCOyghZm4uS3x8U2IoRSg1KSwiR1RNLSIpPzA6YT09PXZvaWQgMCkmJmIuSD09PTAmJihVbSgibWNjIiwiMSIpLGIuSD0xKX0sWUI9bmV3IGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9MDtVbSgibmNjIixmdW5jdGlvbigpe2lmKElmKDQ1KSYmYS5IIT09MilyZXR1cm4iMSJ9KX07dmFyICRCPS9eKD86QVd8REN8R3xHRnxHVHxIQXxNQ3xVQSkkLyxhQz0vXHMvOwpmdW5jdGlvbiBiQyhhLGIpe2lmKHpiKGEpKXthPUxiKGEpO3ZhciBjPWEuaW5kZXhPZigiLSIpO2lmKCEoYzwwKSl7dmFyIGQ9YS5zdWJzdHJpbmcoMCxjKTtpZigkQi50ZXN0KGQpKXt2YXIgZT1hLnN1YnN0cmluZyhjKzEpLGY7aWYoYil7dmFyIGc9ZnVuY3Rpb24obil7dmFyIHA9bi5pbmRleE9mKCIvIik7cmV0dXJuIHA8MD9bbl06W24uc3Vic3RyaW5nKDAscCksbi5zdWJzdHJpbmcocCsxKV19O2Y9ZyhlKTtpZihkPT09IkRDIiYmZi5sZW5ndGg9PT0yKXt2YXIgaD1nKGZbMV0pO2gubGVuZ3RoPT09MiYmKGZbMV09aFswXSxmLnB1c2goaFsxXSkpfX1lbHNle2Y9ZS5zcGxpdCgiLyIpO2Zvcih2YXIgbD0wO2w8Zi5sZW5ndGg7bCsrKWlmKCFmW2xdfHxhQy50ZXN0KGZbbF0pJiYoZCE9PSJBVyJ8fGwhPT0xKSlyZXR1cm59cmV0dXJue2lkOmEscHJlZml4OmQsZGVzdGluYXRpb25JZDpkKyItIitmWzBdLGlkczpmLEpjOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWQhPT10aGlzLmRlc3RpbmF0aW9uSWR9fX19fX0KZnVuY3Rpb24gY0MoYSxiKXtmb3IodmFyIGM9e30sZD0wO2Q8YS5sZW5ndGg7KytkKXt2YXIgZT1iQyhhW2RdLGIpO2UmJihjW2UuaWRdPWUpfXZhciBmPVtdLGc7Zm9yKGcgaW4gYylpZihjLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1jW2ddO2gucHJlZml4PT09IkFXIiYmaC5pZHNbZENbMV1dJiZmLnB1c2goaC5kZXN0aW5hdGlvbklkKX1mb3IodmFyIGw9MDtsPGYubGVuZ3RoOysrbClkZWxldGUgY1tmW2xdXTtmb3IodmFyIG49W10scD1tKE9iamVjdC5rZXlzKGMpKSxxPXAubmV4dCgpOyFxLmRvbmU7cT1wLm5leHQoKSluLnB1c2goY1txLnZhbHVlXSk7cmV0dXJuIG59dmFyIGVDPXt9LGRDPShlQ1swXT0wLGVDWzFdPTEsZUNbMl09MixlQ1szXT0wLGVDWzRdPTEsZUNbNV09MCxlQ1s2XT0wLGVDWzddPTAsZUMpO3ZhciBmQz17aW5pdGlhbGl6ZWQ6MTEsY29tcGxldGU6MTIsaW50ZXJhY3RpdmU6MTN9LGdDPXt9LGhDPU9iamVjdC5mcmVlemUoKGdDW0YuRC5UZF09ITAsZ0MpKSxpQz1mdW5jdGlvbigpe3RoaXMuUj1OZigzNCw1MDApO3RoaXMuSD17fTt0aGlzLk49e307dGhpcy5LPXZvaWQgMH0sakM9ZnVuY3Rpb24oYSxiLGMpe2lmKGMubGVuZ3RoJiZmbi5LKXt2YXIgZDsoZD1hLkgpW2JdIT1udWxsfHwoZFtiXT1bXSk7dmFyIGU7KGU9YS5OKVtiXSE9bnVsbHx8KGVbYl09W10pO3ZhciBmPWMuZmlsdGVyKGZ1bmN0aW9uKGcpe3JldHVybiFhLk5bYl0uaW5jbHVkZXMoZyl9KTthLkhbYl0ucHVzaC5hcHBseShhLkhbYl0sdyhmKSk7YS5OW2JdLnB1c2guYXBwbHkoYS5OW2JdLHcoZikpOyFhLksmJmYubGVuZ3RoPjAmJihWbSgidGRjIiwhMCksYS5LPUEuc2V0VGltZW91dChmdW5jdGlvbigpe3RvKCk7YS5IPXt9O2EuSz12b2lkIDB9LGEuUikpfX07CmlDLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztVbSgidGRjIixmdW5jdGlvbigpe2EuSyYmKEEuY2xlYXJUaW1lb3V0KGEuSyksYS5LPXZvaWQgMCk7dmFyIGI9W10sYztmb3IoYyBpbiBhLkgpYS5ILmhhc093blByb3BlcnR5KGMpJiZiLnB1c2goYysiKiIrYS5IW2NdLmpvaW4oIi4iKSk7cmV0dXJuIGIubGVuZ3RoP2Iuam9pbigiISIpOnZvaWQgMH0sITEpfTsKdmFyIGtDPWZ1bmN0aW9uKGEsYil7dmFyIGM9e30sZDtmb3IoZCBpbiBiKWIuaGFzT3duUHJvcGVydHkoZCkmJihjW2RdPSEwKTtmb3IodmFyIGUgaW4gYSlhLmhhc093blByb3BlcnR5KGUpJiYoY1tlXT0hMCk7cmV0dXJuIGN9LGxDPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwP3t9OmQ7ZT1lPT09dm9pZCAwPyIiOmU7aWYoYj09PWMpcmV0dXJuW107dmFyIGY9ZnVuY3Rpb24odCx1KXt2YXIgdjtBZCh1KT09PSJvYmplY3QiP3Y9dVt0XTpBZCh1KT09PSJhcnJheSImJih2PXVbdF0pO3JldHVybiB2PT09dm9pZCAwP2hDW3RdOnZ9LGc9a0MoYixjKSxoO2ZvcihoIGluIGcpaWYoZy5oYXNPd25Qcm9wZXJ0eShoKSYmaCE9PUYuRC5YYil7dmFyIGw9KGU/ZSsiLiI6IiIpK2gsbj1mKGgsYikscD1mKGgsYykscT1BZChuKT09PSJvYmplY3QifHxBZChuKT09PSJhcnJheSIscj1BZChwKT09PSJvYmplY3QifHxBZChwKT09PSJhcnJheSI7aWYocSYmcilsQyhhLG4scCxkLGwpOwplbHNlIGlmKHF8fHJ8fG4hPT1wKWRbbF09ITB9cmV0dXJuIE9iamVjdC5rZXlzKGQpfSxtQz1uZXcgaUM7dmFyIG5DPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuSz1OYigpO3RoaXMuSD1iO3RoaXMuYXJncz1jO3RoaXMubWVzc2FnZUNvbnRleHQ9ZDt0aGlzLnR5cGU9YX0sb0M9ZnVuY3Rpb24oKXt0aGlzLldhPXt9O3RoaXMuaWI9e307dGhpcy5LPXt9O3RoaXMuTj1udWxsO3RoaXMuaGI9e307dGhpcy5IPSExO3RoaXMuc3RhdHVzPTF9O2Z1bmN0aW9uIHBDKGEsYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP3FDKCJzZXQiLGEpOnFDKCJzZXQiLGEsYil9ZnVuY3Rpb24gckMoYSxiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/cUMoImNvbmZpZyIsYSk6cUMoImNvbmZpZyIsYSxiKX1mdW5jdGlvbiBzQyhhLGIsYyl7Yz1jfHx7fTtjW0YuRC5YYl09YTtyZXR1cm4gcUMoImV2ZW50IixiLGMpfWZ1bmN0aW9uIHFDKCl7cmV0dXJuIGFyZ3VtZW50c307dmFyIHRDPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxsLG4scCxxLHIpe3RoaXMuZXZlbnRJZD1hO3RoaXMucHJpb3JpdHlJZD1iO3RoaXMucHJpb3JpdHlRdWV1ZT1jO3RoaXMuRWE9ZDt0aGlzLldhPWU7dGhpcy5oYj1mO3RoaXMuSGM9Zzt0aGlzLkJnPWg7dGhpcy5pYj1sO3RoaXMuZXZlbnRNZXRhZGF0YT1uO3RoaXMub25TdWNjZXNzPXA7dGhpcy5vbkZhaWx1cmU9cTt0aGlzLmlzR3RtRXZlbnQ9cn0sdUM9ZnVuY3Rpb24oYSl7dmFyIGI9e29uU3VjY2Vzczp4YixvbkZhaWx1cmU6eGJ9O2I9Yj09PXZvaWQgMD97fTpiO3ZhciBjLGQsZSxmLGcsaCxsLG4scCxxLHIsdCx1LHYseCx5LHosQyxELEksRyxOLFMsVyxlYSxqYTtyZXR1cm4gbmV3IHRDKCh2PShjPWIpPT1udWxsP3ZvaWQgMDpjLmV2ZW50SWQpIT1udWxsP3Y6YS5ldmVudElkLCh4PShkPWIpPT1udWxsP3ZvaWQgMDpkLnByaW9yaXR5SWQpIT1udWxsP3g6YS5wcmlvcml0eUlkLCh5PShlPWIpPT1udWxsP3ZvaWQgMDplLnByaW9yaXR5UXVldWUpIT0KbnVsbD95OmEucHJpb3JpdHlRdWV1ZSwoej0oZj1iKT09bnVsbD92b2lkIDA6Zi5FYSkhPW51bGw/ejphLkVhLChDPShnPWIpPT1udWxsP3ZvaWQgMDpnLldhKSE9bnVsbD9DOmEuV2EsKEQ9KGg9Yik9PW51bGw/dm9pZCAwOmguaGIpIT1udWxsP0Q6YS5oYiwoST0obD1iKT09bnVsbD92b2lkIDA6bC5IYykhPW51bGw/STphLkhjLChHPShuPWIpPT1udWxsP3ZvaWQgMDpuLkJnKSE9bnVsbD9HOmEuQmcsKE49KHA9Yik9PW51bGw/dm9pZCAwOnAuaWIpIT1udWxsP046YS5pYiwoUz0ocT1iKT09bnVsbD92b2lkIDA6cS5ldmVudE1ldGFkYXRhKSE9bnVsbD9TOmEuZXZlbnRNZXRhZGF0YSwoVz0ocj1iKT09bnVsbD92b2lkIDA6ci5vblN1Y2Nlc3MpIT1udWxsP1c6YS5vblN1Y2Nlc3MsKGVhPSh0PWIpPT1udWxsP3ZvaWQgMDp0Lm9uRmFpbHVyZSkhPW51bGw/ZWE6YS5vbkZhaWx1cmUsKGphPSh1PWIpPT1udWxsP3ZvaWQgMDp1LmlzR3RtRXZlbnQpIT1udWxsP2phOmEuaXNHdG1FdmVudCl9LAp2Qz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO3N3aXRjaChiKXtjYXNlIDM6Yy5wdXNoKGEuRWEpO2MucHVzaChhLldhKTtjLnB1c2goYS5oYik7Yy5wdXNoKGEuSGMpO2MucHVzaChhLmliKTticmVhaztjYXNlIDI6Yy5wdXNoKGEuRWEpO2JyZWFrO2Nhc2UgMTpjLnB1c2goYS5XYSk7Yy5wdXNoKGEuaGIpO2MucHVzaChhLkhjKTtjLnB1c2goYS5pYik7YnJlYWs7Y2FzZSA0OmMucHVzaChhLkVhKSxjLnB1c2goYS5XYSksYy5wdXNoKGEuaGIpLGMucHVzaChhLkhjKX1yZXR1cm4gY30sTz1mdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGU9bSh2QyhhLGQ9PT12b2lkIDA/MzpkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7aWYoZ1tiXSE9PXZvaWQgMClyZXR1cm4gZ1tiXX1yZXR1cm4gY30sd0M9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9dkMoYSw0KSxkPW0oYyksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpZm9yKHZhciBmPU9iamVjdC5rZXlzKGUudmFsdWUpLApnPW0oZiksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpYltoLnZhbHVlXT0xO3JldHVybiBPYmplY3Qua2V5cyhiKX07dEMucHJvdG90eXBlLmdldE1lcmdlZFZhbHVlcz1mdW5jdGlvbihhLGIsYyl7Yj1iPT09dm9pZCAwPzM6Yjt2YXIgZD17fSxlPSExLGY9ZnVuY3Rpb24obil7Q2QobikmJkdiKG4sZnVuY3Rpb24ocCxxKXtlPSEwO2RbcF09cX0pfTtjJiZmKGMpO3ZhciBnPXZDKHRoaXMsYik7Zy5yZXZlcnNlKCk7Zm9yKHZhciBoPW0oZyksbD1oLm5leHQoKTshbC5kb25lO2w9aC5uZXh0KCkpZihsLnZhbHVlW2FdKTtyZXR1cm4gZT9kOnZvaWQgMH07CnZhciB4Qz1mdW5jdGlvbihhKXtmb3IodmFyIGI9W0YuRC5LZixGLkQuR2YsRi5ELkhmLEYuRC5JZixGLkQuSmYsRi5ELkxmLEYuRC5NZl0sYz12QyhhLDMpLGQ9bShjKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7Zm9yKHZhciBmPWUudmFsdWUsZz17fSxoPSExLGw9bShiKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtmW3BdIT09dm9pZCAwJiYoZ1twXT1mW3BdLGg9ITApfXZhciBxPWg/Zzp2b2lkIDA7aWYocSlyZXR1cm4gcX1yZXR1cm57fX0seUM9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZXZlbnRJZD1hO3RoaXMucHJpb3JpdHlJZD1iO3RoaXMucHJpb3JpdHlRdWV1ZT1jO3RoaXMuRWE9e307dGhpcy5XYT17fTt0aGlzLmhiPXt9O3RoaXMuSGM9e307dGhpcy5CZz17fTt0aGlzLmliPXt9O3RoaXMuZXZlbnRNZXRhZGF0YT17fTt0aGlzLmlzR3RtRXZlbnQ9ITE7dGhpcy5vblN1Y2Nlc3M9ZnVuY3Rpb24oKXt9O3RoaXMub25GYWlsdXJlPQpmdW5jdGlvbigpe319LHpDPWZ1bmN0aW9uKGEsYil7YS5FYT1iO3JldHVybiBhfSxBQz1mdW5jdGlvbihhLGIpe2EuV2E9YjtyZXR1cm4gYX0sQkM9ZnVuY3Rpb24oYSxiKXthLmhiPWI7cmV0dXJuIGF9LENDPWZ1bmN0aW9uKGEsYil7YS5IYz1iO3JldHVybiBhfSxEQz1mdW5jdGlvbihhLGIpe2EuQmc9YjtyZXR1cm4gYX0sRUM9ZnVuY3Rpb24oYSxiKXthLmliPWI7cmV0dXJuIGF9LEZDPWZ1bmN0aW9uKGEsYil7YS5ldmVudE1ldGFkYXRhPWJ8fHt9O3JldHVybiBhfSxHQz1mdW5jdGlvbihhLGIpe2Eub25TdWNjZXNzPWI7cmV0dXJuIGF9LEhDPWZ1bmN0aW9uKGEsYil7YS5vbkZhaWx1cmU9YjtyZXR1cm4gYX0sSUM9ZnVuY3Rpb24oYSxiKXthLmlzR3RtRXZlbnQ9YjtyZXR1cm4gYX0sSkM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB0QyhhLmV2ZW50SWQsYS5wcmlvcml0eUlkLGEucHJpb3JpdHlRdWV1ZSxhLkVhLGEuV2EsYS5oYixhLkhjLGEuQmcsYS5pYixhLmV2ZW50TWV0YWRhdGEsCmEub25TdWNjZXNzLGEub25GYWlsdXJlLGEuaXNHdG1FdmVudCl9O2Z1bmN0aW9uIEtDKGEsYil7R2IoYSxmdW5jdGlvbihjKXt2YXIgZDtpZihkPWMuY2hhckF0KDApPT09Il8iKXt2YXIgZTthOnN3aXRjaChjKXtjYXNlIEYuRC5WYjpjYXNlIEYuRC5SZjpjYXNlIEYuRC5zaDplPSEwO2JyZWFrIGE7ZGVmYXVsdDplPSExfWQ9IWV9ZCYmKGImJmIoYyksZGVsZXRlIGFbY10pfSl9O3ZhciBMQz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjPWIuZXZlbnRJZCxkPWIudGYsZT1bXSxmPWEuSFtjXXx8W107Zi5sZW5ndGgmJmUucHVzaChbImVwciIsZi5qb2luKCIuIildKTtkJiZkZWxldGUgYS5IW2NdO3JldHVybiBlfSl9LE5DPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1NQztmbi5OJiZhIT09dm9pZCAwJiYoZC5IW2FdPWQuSFthXXx8W10sZC5IW2FdLnB1c2goYytiKSxneigpLGV6KGEpKX0sTUM7ZnVuY3Rpb24gT0MoKXtNQ3x8KE1DPW5ldyBMQyl9O3ZhciBQQz1mdW5jdGlvbigpe3RoaXMuZGVzdGluYXRpb25zPXt9O3RoaXMuSD17fTt0aGlzLmNvbW1hbmRzPVtdfSxRQz1mdW5jdGlvbihhLGIpe3JldHVybiBhLmRlc3RpbmF0aW9uc1tiLmRlc3RpbmF0aW9uSWRdPWEuZGVzdGluYXRpb25zW2IuZGVzdGluYXRpb25JZF18fG5ldyBvQ30sUkM9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoZC5IKXt2YXIgZT1RQyhhLGQuSCksZj1lLk47aWYoZil7dmFyIGc9RWQoYyxudWxsKSxoPUVkKGUuV2FbZC5ILmRlc3RpbmF0aW9uSWRdLG51bGwpLGw9RWQoZS5oYixudWxsKSxuPUVkKGUuaWIsbnVsbCkscD1FZChhLkgsbnVsbCkscT17fTtpZihmbi5OKXRyeXtxPUVkKHJBLkgsbnVsbCl9Y2F0Y2goeCl7UCg3Mil9dmFyIHI9ZC5ILnByZWZpeCx0PWZ1bmN0aW9uKHgpe3ZhciB5PWQubWVzc2FnZUNvbnRleHQuZXZlbnRJZDtPQygpO05DKHkscix4KX0sdT1KQyhJQyhIQyhHQyhGQyhEQyhDQyhFQyhCQyhBQyh6QyhuZXcgeUMoZC5tZXNzYWdlQ29udGV4dC5ldmVudElkLApkLm1lc3NhZ2VDb250ZXh0LnByaW9yaXR5SWQsZC5tZXNzYWdlQ29udGV4dC5wcmlvcml0eVF1ZXVlKSxnKSxoKSxsKSxuKSxwKSxxKSxkLm1lc3NhZ2VDb250ZXh0LmV2ZW50TWV0YWRhdGEpLGZ1bmN0aW9uKCl7aWYodCl7dmFyIHg9dDt0PXZvaWQgMDt4KCIyIik7aWYoZC5tZXNzYWdlQ29udGV4dC5vblN1Y2Nlc3MpZC5tZXNzYWdlQ29udGV4dC5vblN1Y2Nlc3MoKX19KSxmdW5jdGlvbigpe2lmKHQpe3ZhciB4PXQ7dD12b2lkIDA7eCgiMyIpO2lmKGQubWVzc2FnZUNvbnRleHQub25GYWlsdXJlKWQubWVzc2FnZUNvbnRleHQub25GYWlsdXJlKCl9fSksISFkLm1lc3NhZ2VDb250ZXh0LmlzR3RtRXZlbnQpKSx2PWZ1bmN0aW9uKCl7dHJ5e3ZhciB4PWQubWVzc2FnZUNvbnRleHQuZXZlbnRJZDtPQygpO05DKHgsciwiMSIpO3ZhciB5PWQuSC5pZCx6PW1DO2lmKGZuLksmJmI9PT1GLkQud2Epe3ZhciBDLEQ9KEM9YkMoeSkpPT1udWxsP3ZvaWQgMDpDLmlkcztpZighKEQmJkQubGVuZ3RoPgoxKSl7dmFyIEk9dS5FYVtGLkQuWGJdO2lmKCFJfHxJPT09eSl7dmFyIEcsTj1NYygiZ29vZ2xlX3RhZ19kYXRhIix7fSk7Ti50ZHx8KE4udGQ9e30pO0c9Ti50ZDt2YXIgUz1FZCh1LkhjLG51bGwpO0VkKHUuRWEsUyk7dmFyIFc9W10sZWE7Zm9yKGVhIGluIEcpRy5oYXNPd25Qcm9wZXJ0eShlYSkmJmxDKHosR1tlYV0sUykubGVuZ3RoJiZXLnB1c2goZWEpO1cubGVuZ3RoJiYoakMoeix5LFcpLHNiKCJUQUdHSU5HIixmQ1tCLnJlYWR5U3RhdGVdfHwxNCkpO0dbeV09U319fWYoZC5ILmlkLGIsZC5LLHUpfWNhdGNoKGZhKXt2YXIgamE9ZC5tZXNzYWdlQ29udGV4dC5ldmVudElkO09DKCk7TkMoamEsciwiNCIpfX07Yj09PSJndGFnLmdldCI/digpOmlvKGUuUix2KX19fSxTQz1mdW5jdGlvbihhLGIpe2lmKGIudHlwZSE9PSJyZXF1aXJlIil7dmFyIGM9dm9pZCAwO2IudHlwZT09PSJldmVudCImJihjPWIuYXJnc1sxXSk7aWYoYi5IKWZvcih2YXIgZD1RQyhhLGIuSCkuS1tiLnR5cGVdfHwKW10sZT0wO2U8ZC5sZW5ndGg7ZSsrKWRbZV0oYyk7ZWxzZSBmb3IodmFyIGYgaW4gYS5kZXN0aW5hdGlvbnMpaWYoYS5kZXN0aW5hdGlvbnMuaGFzT3duUHJvcGVydHkoZikpe3ZhciBnPWEuZGVzdGluYXRpb25zW2ZdO2lmKGcmJmcuSylmb3IodmFyIGg9Zy5LW2IudHlwZV18fFtdLGw9MDtsPGgubGVuZ3RoO2wrKyloW2xdKGMpfX19O1BDLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1RQyh0aGlzLGEpO2Uuc3RhdHVzIT09MyYmKGUuTj1iLGUuc3RhdHVzPTMsZS5SPWxvKGMpLFRDKHRoaXMsYSxkfHx7fSksdGhpcy5mbHVzaCgpKX07ClBDLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT12b2lkIDAmJihRQyh0aGlzLGMpLnN0YXR1cz09PTEmJihRQyh0aGlzLGMpLnN0YXR1cz0yLHRoaXMucHVzaCgicmVxdWlyZSIsW3t9XSxjLHt9KSksUUModGhpcyxjKS5IJiYoZC5kZWZlcnJhYmxlPSExKSxkLmV2ZW50TWV0YWRhdGF8fChkLmV2ZW50TWV0YWRhdGE9e30pLGQuZXZlbnRNZXRhZGF0YVtILkouc2ddfHwoZC5ldmVudE1ldGFkYXRhW0guSi5zZ109W2MuZGVzdGluYXRpb25JZF0pLGQuZXZlbnRNZXRhZGF0YVtILkoubWpdfHwoZC5ldmVudE1ldGFkYXRhW0guSi5tal09W2MuaWRdKSk7dGhpcy5jb21tYW5kcy5wdXNoKG5ldyBuQyhhLGMsYixkKSk7ZC5kZWZlcnJhYmxlfHx0aGlzLmZsdXNoKCl9OwpQQy5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMsYz1bXSxkPSExLGU9e307dGhpcy5jb21tYW5kcy5sZW5ndGg7ZT17Wm46dm9pZCAwfSl7dmFyIGY9dGhpcy5jb21tYW5kc1swXSxnPWYuSDtpZihmLm1lc3NhZ2VDb250ZXh0LmRlZmVycmFibGUpIWd8fFFDKHRoaXMsZykuSD8oZi5tZXNzYWdlQ29udGV4dC5kZWZlcnJhYmxlPSExLHRoaXMuY29tbWFuZHMucHVzaChmKSk6Yy5wdXNoKGYpLHRoaXMuY29tbWFuZHMuc2hpZnQoKTtlbHNle3N3aXRjaChmLnR5cGUpe2Nhc2UgInJlcXVpcmUiOmlmKFFDKHRoaXMsZykuc3RhdHVzIT09MyYmIWEpe3RoaXMuY29tbWFuZHMucHVzaC5hcHBseSh0aGlzLmNvbW1hbmRzLGMpO3JldHVybn1icmVhaztjYXNlICJzZXQiOnZhciBoPWYuYXJnc1swXTtLQyhoKTtVQyhoKTtHYihoLGZ1bmN0aW9uKHgseSl7RWQoVmIoeCx5KSxiLkgpfSk7SHUoaCwhMCk7YnJlYWs7Y2FzZSAiZXZlbnQiOmUuWm49Zi5hcmdzWzFdO3ZhciBsPQpWQyhmLmFyZ3NbMF0sZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fShlKSksbj1sW0YuRC5YYl07biYmbiE9PWcuaWR8fEh1KGwpO1JDKHRoaXMsZS5abixsLGYpO2JyZWFrO2Nhc2UgImdldCI6dmFyIHA9e30scT0ocFtGLkQuVGZdPWYuYXJnc1swXSxwW0YuRC5TZl09Zi5hcmdzWzFdLHApO1JDKHRoaXMsRi5ELkpiLHEsZik7YnJlYWs7Y2FzZSAiY29udGFpbmVyX2NvbmZpZyI6dmFyIHI9UUModGhpcyxnKSx0PVZDKGYuYXJnc1swXSxmdW5jdGlvbigpe30pO0h1KHQsITApO3IuSD0hMDtFZCh0LHIuaGIpO2Q9ITA7YnJlYWs7Y2FzZSAiZGVzdGluYXRpb25fY29uZmlnIjp2YXIgdT1RQyh0aGlzLGcpLHY9VkMoZi5hcmdzWzBdLGZ1bmN0aW9uKCl7fSk7SHUodiwhMCk7dS5XYVtnLmlkXXx8KHUuV2FbZy5pZF09e30pO3UuSD0hMDtFZCh2LHUuV2FbZy5pZF0pO2Q9ITA7YnJlYWs7Y2FzZSAicmVzZXRfY29udGFpbmVyX2NvbmZpZyI6UUModGhpcyxnKS5oYj17fTticmVhazsKY2FzZSAicmVzZXRfdGFyZ2V0X2NvbmZpZyI6UUModGhpcyxnKS5XYVtnLmlkXT17fX10aGlzLmNvbW1hbmRzLnNoaWZ0KCk7U0ModGhpcyxmKX19dGhpcy5jb21tYW5kcy5wdXNoLmFwcGx5KHRoaXMuY29tbWFuZHMsYyk7ZCYmdGhpcy5mbHVzaCgpfTt2YXIgVEM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUVkKGMsbnVsbCk7RWQoUUMoYSxiKS5pYixkKTtRQyhhLGIpLmliPWR9O2Z1bmN0aW9uIFZDKGEsYil7dmFyIGM9e307R2IoYSxmdW5jdGlvbihkLGUpe0VkKFZiKGQsZSksYyl9KTtLQyhjLGIpO1VDKGMpO3JldHVybiBjfQpmdW5jdGlvbiBVQyhhKXtpZihNKDYwMSkmJkJBKCkpe2Zvcih2YXIgYj0hMSxjPW0obmV3IFNldChbRi5ELnljLEYuRC5kZF0pKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTthW2VdIT09dm9pZCAwJiYoYj0hMCxkZWxldGUgYVtlXSl9YiYmIWFsKDM1LGZ1bmN0aW9uKCl7cmV0dXJuITF9KSYmKFprKDM1LCEwKSx3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nJiZ3aW5kb3cuY29uc29sZS5sb2coIkdvb2dsZSBUYWcgTWFuYWdlcjogU2VydmVyLXNpZGUgR1RNIHBhcmFtZXRlcnMgKHRyYW5zcG9ydF91cmwvc2VydmVyX2NvbnRhaW5lcl91cmwpIGFyZSBub3QgcGVybWl0dGVkIG9uIHRoaXMgZG9tYWluIGFuZCBoYXZlIGJlZW4gaWdub3JlZC4iKSxQKDE5NykpfX07dmFyIFdDPWZ1bmN0aW9uKCl7dGhpcy5IPW5ldyBQQzt0aGlzLks9ITF9O1dDLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe3RoaXMuSC5mbHVzaCgpfTt2YXIgWEM7ZnVuY3Rpb24gWUMoKXtYQ3x8KFhDPW5ldyBXQyk7cmV0dXJuIFhDfWZ1bmN0aW9uIFpDKGEsYixjLGQpe3ZhciBlPVlDKCksZj1iQyhjLGQuaXNHdG1FdmVudCk7ZiYmKGUuSyYmKGQuZGVmZXJyYWJsZT0hMCksZS5ILnB1c2goImV2ZW50IixbYixhXSxmLGQpKX1mdW5jdGlvbiAkQyhhLGIsYyxkKXt2YXIgZT1ZQygpLGY9YkMoYyxkLmlzR3RtRXZlbnQpO2YmJmUuSC5wdXNoKCJnZXQiLFthLGJdLGYsZCl9ZnVuY3Rpb24gYUQoYSxiLGMpe3ZhciBkPVlDKCksZT1iQyhhLGMuaXNHdG1FdmVudCk7ZSYmZC5ILnB1c2goImNvbnRhaW5lcl9jb25maWciLFtiXSxlLGMpfQpmdW5jdGlvbiBiRChhLGIsYyl7dmFyIGQ9WUMoKSxlPWJDKGEsYy5pc0d0bUV2ZW50KTtlJiZkLkgucHVzaCgiZGVzdGluYXRpb25fY29uZmlnIixbYl0sZSxjKX1mdW5jdGlvbiBjRChhKXt2YXIgYj1ZQygpLGM9YkMoYSwhMCk7YyYmYi5ILnB1c2goInJlc2V0X2NvbnRhaW5lcl9jb25maWciLFtdLGMse30pfWZ1bmN0aW9uIGREKGEpe3ZhciBiPVlDKCksYz1iQyhhLCEwKTtjJiZiLkgucHVzaCgicmVzZXRfdGFyZ2V0X2NvbmZpZyIsW10sYyx7fSl9ZnVuY3Rpb24gZUQoYSl7dmFyIGI9WUMoKSxjPWJDKGEsITApO3JldHVybiBjP1FDKGIuSCxjKS5pYjp7fX1mdW5jdGlvbiBmRChhKXtyZXR1cm4gWUMoKS5ILkhbYV19ZnVuY3Rpb24gZ0QoYSl7dmFyIGI9WUMoKSxjPWJDKGEsITApO3JldHVybiBjP1FDKGIuSCxjKS5IOiExfTtmdW5jdGlvbiBoRChhLGIpe2EuaGFzT3duUHJvcGVydHkoImd0bS51bmlxdWVFdmVudElkIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJndG0udW5pcXVlRXZlbnRJZCIse3ZhbHVlOnJqKCl9KTtiLmV2ZW50SWQ9YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXTtiLnByaW9yaXR5SWQ9YVsiZ3RtLnByaW9yaXR5SWQiXTtyZXR1cm57ZXZlbnRJZDpiLmV2ZW50SWQscHJpb3JpdHlJZDpiLnByaW9yaXR5SWR9fWZ1bmN0aW9uIGlEKGEpe2Zvcih2YXIgYj1tKFtGLkQuZGQsRi5ELnljXSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWMudmFsdWUsZT1hJiZhW2RdfHxmRChkKTtpZihlKXJldHVybiBlfX1mdW5jdGlvbiBqRChhKXtyZXR1cm4hYS5pc0d0bUV2ZW50fHxhLmV2ZW50TWV0YWRhdGEmJmEuZXZlbnRNZXRhZGF0YVtILkouQ2NdJiZhLmV2ZW50TWV0YWRhdGFbSC5KLk5iXSE9PXZrKCk/ITE6ITB9O3ZhciBrRD1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9ITF9O3ZhciBsRD1mdW5jdGlvbigpe3RoaXMubWVzc2FnZXM9W107dGhpcy5IPVtdfTtsRC5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5tZXNzYWdlcy5sZW5ndGgrMTthWyJndG0udW5pcXVlRXZlbnRJZCJdPWI7YVsiZ3RtLnByaW9yaXR5SWQiXT1kO3ZhciBlPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYyx7ZXZlbnRJZDpiLHByaW9yaXR5SWQ6ZCxmcm9tQ29udGFpbmVyRXhlY3V0aW9uOiEwfSk7aWYoTSg1OTUpKXt2YXIgZj1jLnByaW9yaXR5UXVldWU/W10uY29uY2F0KHcoYy5wcmlvcml0eVF1ZXVlKSxbZF0pOltkXTthWyJndG0ucHJpb3JpdHlRdWV1ZSJdPWY7ZS5wcmlvcml0eVF1ZXVlPWZ9dmFyIGc9e21lc3NhZ2U6YSxub3RCZWZvcmVFdmVudElkOmIscHJpb3JpdHlJZDpkLG1lc3NhZ2VDb250ZXh0OmV9O3RoaXMubWVzc2FnZXMucHVzaChnKTtmb3IodmFyIGg9MDtoPHRoaXMuSC5sZW5ndGg7aCsrKXRyeXt0aGlzLkhbaF0oZyl9Y2F0Y2gobCl7fX07CmxELnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24oYSl7dGhpcy5ILnB1c2goYSl9O2xELnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGE9e30sYj0wO2I8dGhpcy5tZXNzYWdlcy5sZW5ndGg7YisrKXt2YXIgYz10aGlzLm1lc3NhZ2VzW2JdLGQ9YVtjLm5vdEJlZm9yZUV2ZW50SWRdO2R8fChkPVtdLGFbYy5ub3RCZWZvcmVFdmVudElkXT1kKTtkLnB1c2goYyl9cmV0dXJuIGF9O2xELnByb3RvdHlwZS5wcnVuZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz1bXSxkPTA7ZDx0aGlzLm1lc3NhZ2VzLmxlbmd0aDtkKyspe3ZhciBlPXRoaXMubWVzc2FnZXNbZF07ZS5ub3RCZWZvcmVFdmVudElkPT09YT9iLnB1c2goZSk6Yy5wdXNoKGUpfXRoaXMubWVzc2FnZXM9YztyZXR1cm4gYn07CmZ1bmN0aW9uIG1EKGEsYixjKXtjLmV2ZW50TWV0YWRhdGE9Yy5ldmVudE1ldGFkYXRhfHx7fTtjLmV2ZW50TWV0YWRhdGFbSC5KLk5iXT1NKDU1MCk/dmsoKTpFKDYpO25EKCkuZW5xdWV1ZShhLGIsYyl9ZnVuY3Rpb24gbkQoKXtyZXR1cm4ga2ooIm1iIixmdW5jdGlvbigpe3JldHVybiBuZXcgbER9KX07dmFyIHBEPWZ1bmN0aW9uKGEsYil7dmFyIGM9b0Q7Yj1TdHJpbmcoYikuc3BsaXQoIiwiKTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9Yy5OW2JbZF1dfHxbXTtjLk5bYltkXV09ZTtlLmluZGV4T2YoYSk8MCYmZS5wdXNoKGEpfX0scUQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9b0QsZD1bXSxlPVtdLGY9e30sZz0wO2c8YS5sZW5ndGg7Zj17bGs6dm9pZCAwLFFqOnZvaWQgMCxSajp2b2lkIDB9LGcrKyl7dmFyIGg9YVtnXTtpZihoLmluZGV4T2YoIi0iKT49MCl7aWYoZi5saz1iQyhoLGIpLGYubGspe3ZhciBsPXRrKCk7Q2IobCxmdW5jdGlvbih4KXtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuIHgubGsuZGVzdGluYXRpb25JZD09PXl9fShmKSk/ZC5wdXNoKGgpOmUucHVzaChoKX19ZWxzZXtpZihNKDU1MCkpe3ZhciBuPWMuS1toXXx8W107Zi5Saj17fTtuLmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIGZ1bmN0aW9uKHkpe3guUmpbeV09ITB9fShmKSk7Zm9yKHZhciBwPQp0aygpLHE9MDtxPHAubGVuZ3RoO3ErKylmLlJqW3BbcV1dJiZkLnB1c2gocFtxXSl9ZWxzZXt2YXIgcj1jLkhbaF18fFtdO2YuUWo9e307ci5mb3JFYWNoKGZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbih5KXt4LlFqW3ldPSEwfX0oZikpO2Zvcih2YXIgdD13aygpLHU9MDt1PHQubGVuZ3RoO3UrKylpZihmLlFqW3RbdV1dKXtkPWQuY29uY2F0KHRrKCkpO2JyZWFrfX12YXIgdj1jLk5baF18fFtdO3YubGVuZ3RoJiYoZD1kLmNvbmNhdCh2KSl9fXJldHVybntlazpkLFBzOmV9fSxyRD1mdW5jdGlvbihhKXtHYihvRC5ILGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yy5pbmRleE9mKGEpO2Q+PTAmJmMuc3BsaWNlKGQsMSl9KX0sc0Q9ZnVuY3Rpb24oYSl7R2Iob0QuSyxmdW5jdGlvbihiLGMpe3ZhciBkPWMuaW5kZXhPZihhKTtkPj0wJiZjLnNwbGljZShkLDEpfSl9LHREPWZ1bmN0aW9uKGEpe0diKG9ELk4sZnVuY3Rpb24oYixjKXt2YXIgZD1jLmluZGV4T2YoYSk7ZD49MCYmYy5zcGxpY2UoZCwKMSl9KX0sb0Q9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9O3RoaXMuTj17fTt0aGlzLks9e319O2Z1bmN0aW9uIHVEKGEsYixjKXt2YXIgZD1FZChhLG51bGwpO2QuZXZlbnRJZD12b2lkIDA7ZC5pbmhlcml0UGFyZW50Q29uZmlnPXZvaWQgMDtPYmplY3Qua2V5cyhiKS5zb21lKGZ1bmN0aW9uKGYpe3JldHVybiBiW2ZdIT09dm9pZCAwfSkmJlAoMTM2KTt2YXIgZT1FZChiLG51bGwpO0VkKGMsZSk7bUQockMod2soKVswXSxlKSxhLmV2ZW50SWQsZCl9CmZ1bmN0aW9uIHZEKGEsYixjLGQpe3ZhciBlPXt9LGY9KGVbRi5ELlViXT1GLkQud2EsZVsiZ3RtLmNvbmZpZ0NvbnRhaW5lcklkIl09YS5pZCxlWyJndG0uY29uZmlnUGFyYW1ldGVycyJdPWIsZVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1kLmV2ZW50SWQsZSk7Yy5wcmlvcml0eVF1ZXVlJiYoZlsiZ3RtLnByaW9yaXR5UXVldWUiXT1jLnByaW9yaXR5UXVldWUpO2MuZXZlbnRNZXRhZGF0YSYmKGZbImd0bS5ldmVudE1ldGFkYXRhIl09Yy5ldmVudE1ldGFkYXRhKTthLkpjKCkmJihmWyJndG0uY29uZmlnQ29udGFpbmVySWQiXT13aygpWzBdLGZbImd0bS5vcmlnaW5hbENvbmZpZ1RhcmdldElkIl09YS5pZCk7cmV0dXJuIGZ9ZnVuY3Rpb24gd0QoYSxiLGMpe2lmKElmKDExKSYmIWMmJiFhW0YuRC5WZF0pe3ZhciBkPWFsKDEwLGZ1bmN0aW9uKCl7cmV0dXJuITF9KTtaaygxMCwhMCk7WEIoZCxhLGIpO2lmKGQpcmV0dXJuITB9cmV0dXJuITF9O2Z1bmN0aW9uIHhEKGEsYil7dmFyIGM9e30sZD0oYy5ldmVudD1hLGMpO2ImJihkLmV2ZW50TW9kZWw9RWQoYixudWxsKSxiW0YuRC5QZl0mJihkLmV2ZW50Q2FsbGJhY2s9YltGLkQuUGZdKSxiW0YuRC5waF0mJihkLmV2ZW50VGltZW91dD1iW0YuRC5waF0pKTtyZXR1cm4gZH0KZnVuY3Rpb24geUQoYSxiKXt2YXIgYz1hJiZhW0YuRC5YYl07Yz09PXZvaWQgMCYmKGM9dUEoRi5ELlhiLDIpLGM9PT12b2lkIDAmJihjPSJkZWZhdWx0IikpO2lmKHpiKGMpfHxBcnJheS5pc0FycmF5KGMpKXt2YXIgZDtkPWIuaXNHdG1FdmVudD96YihjKT9bY106YzpjLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpLnNwbGl0KCIsIik7dmFyIGU9cUQoZCxiLmlzR3RtRXZlbnQpLGY9ZS5layxnPWUuUHM7aWYoZy5sZW5ndGgpZm9yKHZhciBoPWlEKGEpLGw9MDtsPGcubGVuZ3RoO2wrKyl7dmFyIG49YkMoZ1tsXSxiLmlzR3RtRXZlbnQpO2lmKG4pe3ZhciBwPW4uZGVzdGluYXRpb25JZCxxPXZvaWQgMDsoKHE9bmsobi5kZXN0aW5hdGlvbklkKSk9PW51bGw/dm9pZCAwOnEuc3RhdGUpPT09MHx8bkEocCxoLHtzb3VyY2U6Myxmcm9tQ29udGFpbmVyRXhlY3V0aW9uOmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbn0pfX12YXIgcj1mLmNvbmNhdChnKTtyZXR1cm57ZWs6Y0MoZixiLmlzR3RtRXZlbnQpLAptcjpjQyhyLGIuaXNHdG1FdmVudCl9fX07dmFyIHpEPXt9LEFEPSh6RC5jb25maWc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1oRChhLGIpLGQ7YTp7aWYoIShhLmxlbmd0aDwyKSYmemIoYVsxXSkpe3ZhciBlPXt9O2lmKGEubGVuZ3RoPjIpe2lmKGFbMl0hPT12b2lkIDAmJiFDZChhWzJdKXx8YS5sZW5ndGg+Myl7ZD12b2lkIDA7YnJlYWsgYX1lPWFbMl19dmFyIGY9YkMoYVsxXSxiLmlzR3RtRXZlbnQpO2lmKGYpe2Q9e3RhcmdldDpmLHBhcmFtczplfTticmVhayBhfX1kPXZvaWQgMH12YXIgZz1kO2lmKGcpe3ZhciBoPWcudGFyZ2V0LGw9Zy5wYXJhbXMsbjthOntpZighSWYoNykpe3ZhciBwPXlrKHprKCkpO2lmKE1rKHApKXt2YXIgcT1wLnBhcmVudCxyPXEuaXNEZXN0aW5hdGlvbjtuPXtWczp5ayhxKSxNczpyfTticmVhayBhfX1uPXZvaWQgMH12YXIgdD1uLHU9dD09bnVsbD92b2lkIDA6dC5Wcyx2PXQ9PW51bGw/dm9pZCAwOnQuTXM7ZEIoYy5ldmVudElkLCJndGFnLmNvbmZpZyIpO3ZhciB4LHk9aC5kZXN0aW5hdGlvbklkOwppZihoLkpjKCk/dGsoKS5pbmRleE9mKHkpIT09LTE6d2soKS5pbmRleE9mKHkpIT09LTEpYTp7aWYodSYmKFAoMTI4KSx2JiZQKDEzMCksYi5pbmhlcml0UGFyZW50Q29uZmlnKSl7dmFyIHo7dmFyIEM9JGsoMTIpO2lmKEMpdUQoYixDLGwpLHo9ITE7ZWxzZXt2YXIgRD0kaygxMSk7IWxbRi5ELlZkXSYmKE0oNTUwKXx8SWYoMTEpKSYmRHx8WmsoMTEsRWQobCxudWxsKSk7ej0hMH16JiZ1LmNvbnRhaW5lcnMmJnUuY29udGFpbmVycy5qb2luKCIsIik7eD12b2lkIDA7YnJlYWsgYX12YXIgST0hSWYoNDUpLEc9IVNiKGguaWQsIkdUTS0iKTtJJiZHJiYoT2JqZWN0LmtleXMobCkubGVuZ3RoPT09MD9HdShULlcuU2spOkd1KFQuVy5UayksRWwoKSYmR3UoVC5XLlJrKSwkaygzMSkmJkd1KFQuVy5VaykpO3ZhciBOPVlCO2ZuLksmJihOLkg9PT0xJiYoUW0uSC5tY2M9ITEpLE4uSD0yKTtpZihNKDU1MCl8fCF3RChsLGIsaC5KYygpKSl7a0QuSHx8UCg0Myk7aWYoIU0oNTUwKSl7aWYoIWIubm9UYXJnZXRHcm91cCl7dmFyIFM9CmguaWQ7aWYoaC5KYygpKXREKFMpLHBEKFMsbFtGLkQuT2RdfHwiZGVmYXVsdCIpO2Vsc2V7ckQoUyk7dmFyIFc9bFtGLkQuT2RdfHwiZGVmYXVsdCIsZWE9b0Q7Vz1XLnRvU3RyaW5nKCkuc3BsaXQoIiwiKTtmb3IodmFyIGphPTA7amE8Vy5sZW5ndGg7amErKyl7dmFyIGZhPWVhLkhbV1tqYV1dfHxbXTtlYS5IW1dbamFdXT1mYTtmYS5pbmRleE9mKFMpPDAmJmZhLnB1c2goUyl9fX1kZWxldGUgbFtGLkQuT2RdfXZhciBzYT1iLmV2ZW50TWV0YWRhdGF8fHt9O3NhLmhhc093blByb3BlcnR5KEguSi5hZSl8fChzYVtILkouYWVdPSFiLmZyb21Db250YWluZXJFeGVjdXRpb24pO2IuZXZlbnRNZXRhZGF0YT1zYTtkZWxldGUgbFtGLkQuUGZdO2lmKE0oNTUwKSl7eD12RChoLGwsYixjKTticmVhayBhfXZhciBkYT0hIWxbRi5ELlZkXTtkZWxldGUgbFtGLkQuVmRdO3ZhciBtYT10aygpLFBhPWNELEZhPWFEO2guSmMoKSYmKG1hPVtoLmlkXSxQYT1kRCxGYT1iRCk7Zm9yKHZhciBxYT0wO3FhPAptYS5sZW5ndGg7cWErKyl7ZGF8fFBhKG1hW3FhXSk7dmFyIGliPWdEKG1hW3FhXSk7RmEobWFbcWFdLEVkKGwsbnVsbCksRWQoYixudWxsKSk7aWImJmRhfHxaQyhGLkQud2EsRWQobCxudWxsKSxtYVtxYV0sRWQoYixudWxsKSl9fXg9dm9pZCAwfWVsc2UgYTp7aWYoIWIuaW5oZXJpdFBhcmVudENvbmZpZyYmIWxbRi5ELlpjXSl7dmFyIFhiPWlEKGwpLExjPWguZGVzdGluYXRpb25JZDtpZihoLkpjKCkpbkEoTGMsWGIse3NvdXJjZToyLGZyb21Db250YWluZXJFeGVjdXRpb246Yi5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufSk7ZWxzZSBpZih1IT09dm9pZCAwJiZ1LmNvbnRhaW5lcnMuaW5kZXhPZihMYykhPT0tMSl7dmFyIFFkPSRrKDExKSxZYz0kaygxMik7UWQ/dUQoYixsLFFkKTpZY3x8WmsoMTIsRWQobCxudWxsKSl9ZWxzZSBpZihoQShMYyxYYiwhMCx7c291cmNlOjIsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjpiLmZyb21Db250YWluZXJFeGVjdXRpb259KSxNKDU1MCkpe3g9dkQoaCwKbCxiLGMpO2JyZWFrIGF9fXg9dm9pZCAwfXJldHVybiB4fX0sekQuY29uc2VudD1mdW5jdGlvbihhLGIpe2lmKGEubGVuZ3RoPT09Myl7UCgzOSk7dmFyIGM9aEQoYSxiKSxkPWFbMV0sZT17fSxmPU9vKGFbMl0pLGc7Zm9yKGcgaW4gZilpZihmLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1mW2ddO2VbZ109Zz09PUYuRC5ZZz9BcnJheS5pc0FycmF5KGgpP05hTjpOdW1iZXIoaCk6Zz09PUYuRC5uYz8oQXJyYXkuaXNBcnJheShoKT9oOltoXSkubWFwKFBvKTpRbyhoKX1iLmZyb21Db250YWluZXJFeGVjdXRpb258fChlW0YuRC5tYV0mJlAoMTM5KSxlW0YuRC5YYV0mJlAoMTQwKSk7ZD09PSJkZWZhdWx0Ij9UbyhlKTpkPT09InVwZGF0ZSI/Vm8oZSxjKTpkPT09ImRlY2xhcmUiJiZiLmZyb21Db250YWluZXJFeGVjdXRpb24mJlNvKGUpfX0sekQuY29udGFpbmVyX2NvbmZpZz1mdW5jdGlvbihhLGIpe2lmKGpEKGIpJiZhLmxlbmd0aD09PTMmJnpiKGFbMV0pJiZDZChhWzJdKSl7dmFyIGM9CmFbMl0sZD1iQyhhWzFdLCEwKTtkJiZhRChkLmRlc3RpbmF0aW9uSWQsYyxFZChiLG51bGwpKX19LHpELmRlc3RpbmF0aW9uX2NvbmZpZz1mdW5jdGlvbihhLGIpe2lmKGpEKGIpJiZhLmxlbmd0aD09PTMmJnpiKGFbMV0pJiZDZChhWzJdKSl7dmFyIGM9YVsyXSxkPWJDKGFbMV0sITApO2lmKGQpe2lmKE0oNTUwKSl7aWYoIWIubm9UYXJnZXRHcm91cCl7dmFyIGU9ZC5pZDtpZihkLkpjKCkpdEQoZSkscEQoZSxjW0YuRC5PZF18fCJkZWZhdWx0Iik7ZWxzZXtzRChlKTt2YXIgZj1jW0YuRC5PZF18fCJkZWZhdWx0IixnPW9EO2Y9U3RyaW5nKGYpLnNwbGl0KCIsIik7Zm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspe3ZhciBsPWcuS1tmW2hdXXx8W107Zy5LW2ZbaF1dPWw7bC5pbmRleE9mKGUpPDAmJmwucHVzaChlKX19fWRlbGV0ZSBjW0YuRC5PZF19YkQoZC5pZCxjLEVkKGIsbnVsbCkpfX19LHpELmV2ZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YVsxXTtpZighKGEubGVuZ3RoPDIpJiYKemIoYykpe3ZhciBkPXZvaWQgMDtpZihhLmxlbmd0aD4yKXtpZighQ2QoYVsyXSkmJmFbMl0hPT12b2lkIDB8fGEubGVuZ3RoPjMpcmV0dXJuO2Q9YVsyXX12YXIgZT14RChjLGQpLGY9aEQoYSxiKSxnPWYuZXZlbnRJZCxoPWYucHJpb3JpdHlJZDtlWyJndG0udW5pcXVlRXZlbnRJZCJdPWc7aCYmKGVbImd0bS5wcmlvcml0eUlkIl09aCk7Yi5wcmlvcml0eVF1ZXVlJiYoZVsiZ3RtLnByaW9yaXR5UXVldWUiXT1iLnByaW9yaXR5UXVldWUpO2lmKGM9PT0ib3B0aW1pemUuY2FsbGJhY2siKXJldHVybiBlLmV2ZW50TW9kZWw9ZS5ldmVudE1vZGVsfHx7fSxlO3ZhciBsPXlEKGQsYik7aWYobCl7Zm9yKHZhciBuPWwuZWsscD1sLm1yLHE9cC5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4uaWR9KSxyPXAubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBOLmRlc3RpbmF0aW9uSWR9KSx0PW4ubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBOLmlkfSksdT1tKHRrKCkpLHY9dS5uZXh0KCk7IXYuZG9uZTt2PQp1Lm5leHQoKSl7dmFyIHg9di52YWx1ZTtyLmluZGV4T2YoeCk8MCYmdC5wdXNoKHgpfWRCKGcsYyk7Zm9yKHZhciB5PW0odCksej15Lm5leHQoKTshei5kb25lO3o9eS5uZXh0KCkpe3ZhciBDPXoudmFsdWUsRD1FZChiLG51bGwpLEk9RWQoZCxudWxsKTtkZWxldGUgSVtGLkQuUGZdO3ZhciBHPUQuZXZlbnRNZXRhZGF0YXx8e307Ry5oYXNPd25Qcm9wZXJ0eShILkouYWUpfHwoR1tILkouYWVdPSFELmZyb21Db250YWluZXJFeGVjdXRpb24pO0dbSC5KLm1qXT1xLnNsaWNlKCk7R1tILkouc2ddPXIuc2xpY2UoKTtELmV2ZW50TWV0YWRhdGE9RztaQyhjLEksQyxEKX1lLmV2ZW50TW9kZWw9ZS5ldmVudE1vZGVsfHx7fTtxLmxlbmd0aD4wP2UuZXZlbnRNb2RlbFtGLkQuWGJdPXEuam9pbigiLCIpOmRlbGV0ZSBlLmV2ZW50TW9kZWxbRi5ELlhiXTtrRC5IfHxQKDQzKTtiLm5vR3RtRXZlbnQ9PT12b2lkIDAmJmIuZXZlbnRNZXRhZGF0YSYmYi5ldmVudE1ldGFkYXRhW0guSi5Cbl0mJihiLm5vR3RtRXZlbnQ9CiEwKTtlLmV2ZW50TW9kZWxbRi5ELlljXSYmKGIubm9HdG1FdmVudD0hMCk7cmV0dXJuIGIubm9HdG1FdmVudD92b2lkIDA6ZX19fSx6RC5nZXQ9ZnVuY3Rpb24oYSxiKXtQKDUzKTtpZihhLmxlbmd0aD09PTQmJnpiKGFbMV0pJiZ6YihhWzJdKSYmeWIoYVszXSkpe3ZhciBjPWJDKGFbMV0sYi5pc0d0bUV2ZW50KSxkPVN0cmluZyhhWzJdKSxlPWFbM107aWYoYyl7a0QuSHx8UCg0Myk7dmFyIGY9aUQoKTtpZihDYih0aygpLGZ1bmN0aW9uKGgpe3JldHVybiBjLmRlc3RpbmF0aW9uSWQ9PT1ofSkpe2hEKGEsYik7dmFyIGc9e307RWQoKGdbRi5ELlRmXT1kLGdbRi5ELlNmXT1lLGcpLG51bGwpOyRDKGQsZnVuY3Rpb24oaCl7YmQoZnVuY3Rpb24oKXtlKGgpfSl9LGMuaWQsYil9ZWxzZSBuQShjLmRlc3RpbmF0aW9uSWQsZix7c291cmNlOjQsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjpiLmZyb21Db250YWluZXJFeGVjdXRpb259KX19fSx6RC5qcz1mdW5jdGlvbihhLGIpe3ZhciBjO2lmKGEubGVuZ3RoPT09CjImJmFbMV0uZ2V0VGltZSl7a0QuSD0hMDt2YXIgZD1oRChhLGIpLGU9ZC5ldmVudElkLGY9ZC5wcmlvcml0eUlkLGc9e307Yz0oZy5ldmVudD0iZ3RtLmpzIixnWyJndG0uc3RhcnQiXT1hWzFdLmdldFRpbWUoKSxnWyJndG0udW5pcXVlRXZlbnRJZCJdPWUsZ1siZ3RtLnByaW9yaXR5SWQiXT1mLGcpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9LHpELnBvbGljeT1mdW5jdGlvbihhKXtpZihhLmxlbmd0aD09PTMmJnpiKGFbMV0pJiZ5YihhWzJdKSl7aWYoaHkoYVsxXSxhWzJdKSxQKDc0KSxhWzFdPT09ImFsbCIpe1AoNzUpO3ZhciBiPSExO3RyeXtiPWFbMl0oRSg1KSwidW5rbm93biIse30pfWNhdGNoKGMpe31ifHxQKDc2KX19ZWxzZSBQKDczKX0sekQucmVzZXRfdGFyZ2V0X2NvbmZpZz1mdW5jdGlvbihhLGIpe2lmKGpEKGIpJiZhLmxlbmd0aD09PTImJnpiKGFbMV0pKXt2YXIgYz1iQyhhWzFdLCEwKTtjJiZkRChjLmlkKX19LHpELnNldD1mdW5jdGlvbihhLGIpe3ZhciBjPXZvaWQgMDsKYS5sZW5ndGg9PT0yJiZDZChhWzFdKT9jPUVkKGFbMV0sbnVsbCk6YS5sZW5ndGg9PT0zJiZ6YihhWzFdKSYmKGM9e30sQ2QoYVsyXSl8fEFycmF5LmlzQXJyYXkoYVsyXSk/Y1thWzFdXT1FZChhWzJdLG51bGwpOmNbYVsxXV09YVsyXSk7aWYoYyl7WmsoMzEsITApO3ZhciBkPWhEKGEsYiksZT1kLmV2ZW50SWQsZj1kLnByaW9yaXR5SWQ7RWQoYyxudWxsKTtFKDUpO3ZhciBnPUVkKGMsbnVsbCk7WUMoKS5ILnB1c2goInNldCIsW2ddLHZvaWQgMCxiKTtjWyJndG0udW5pcXVlRXZlbnRJZCJdPWU7ZiYmKGNbImd0bS5wcmlvcml0eUlkIl09Zik7ZGVsZXRlIGMuZXZlbnQ7Yi5vdmVyd3JpdGVNb2RlbEZpZWxkcz0hMDtyZXR1cm4gY319LHpEKSxCRD17fSxDRD0oQkQucG9saWN5PSEwLEJEKTt2YXIgRUQ9ZnVuY3Rpb24oYSl7aWYoREQoYSkpcmV0dXJuIGE7dGhpcy52YWx1ZT1hfTtFRC5wcm90b3R5cGUuZ2V0VW50cnVzdGVkTWVzc2FnZVZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O3ZhciBERD1mdW5jdGlvbihhKXtyZXR1cm4hYXx8QWQoYSkhPT0ib2JqZWN0Inx8Q2QoYSk/ITE6ImdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZSJpbiBhfTtFRC5wcm90b3R5cGUuZ2V0VW50cnVzdGVkTWVzc2FnZVZhbHVlPUVELnByb3RvdHlwZS5nZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWU7dmFyIEZEPXtCYjoiMSIsZWU6IjIiLFhkOiIzIixjZToiNCIseGY6IjUiLHFnOiI2IixLaDoiNyIsdGo6IjgiLGxpOiI5IixqajoiMTAifTsKdmFyIEdEPWZ1bmN0aW9uKGEsYil7aWYoYSl7dmFyIGM9YS50cmltKCkucmVwbGFjZUFsbCgvXHMrL2csIiIpLnJlcGxhY2VBbGwoLyhcZHsyLH0pXC4vZywiJDEiKS5yZXBsYWNlQWxsKC8tL2csIiIpLnJlcGxhY2VBbGwoL1woKFxkKylcKS9nLCIkMSIpO2lmKGImJmMubWF0Y2goL15cKz9cZHszLDR9JC8pKXJldHVybiBjO2MuY2hhckF0KDApIT09IisiJiYoYz0iKyIrYyk7aWYoYy5tYXRjaChuZXcgUmVnRXhwKCJeXFwrXFxkeyIrKE0oNTk3KT83OjEwKSsiLDE1fSQiKSkpcmV0dXJuIGN9fSxJRD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1hLnRyaW0oKTtpZihIRC50ZXN0KGIpKXJldHVybiBiLnRvTG93ZXJDYXNlKCkucmVwbGFjZUFsbCgvWy0gXSsvZywiIil9fSxNRD1mdW5jdGlvbihhKXt2YXIgYj1KRChLRCkoYSk7aWYoYiYmIUxEKGIpKXJldHVybiBifSxMRD1mdW5jdGlvbihhKXtpZighQS5sb2NhdGlvbilyZXR1cm4hMTt2YXIgYj1OaihBLmxvY2F0aW9uLCJob3N0IiwhMCksCmM7aWYoTSg2MDIpKWE6e2Zvcih2YXIgZD1iLnNwbGl0KCIuIiksZT1hLnRvTG93ZXJDYXNlKCksZj0wO2Y8ZC5sZW5ndGgtMTtmKyspe3ZhciBnPWQuc2xpY2UoZikuam9pbigiLiIpO2lmKGUubWF0Y2goIkAiK2crIiQiKSl7Yz0hMDticmVhayBhfX1jPSExfWVsc2UgYz1hLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihiKT49MDtyZXR1cm4gY30sSkQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubWF0Y2goYSk7cmV0dXJuIGM/Y1swXS50cmltKCkudG9Mb3dlckNhc2UoKTp2b2lkIDB9fSxLRD0vW0EtWjAtOS5fJSstXStAW0EtWjAtOS4tXStcLltBLVpdezIsfS9pLE5EPUpEKC9eKFteXHgwMC1ceDQwXHg1Yi1ceDYwXHg3Yi1ceGZmXXxbLi1dfFxzKSskLyksSEQ9UmVnRXhwKCJeKD86W0EtWl17MSwyfVxcZFtBLVpcXGRdP1sgLV0/XFxkW0EtWl17Mn18W0EtWl1cXGRbQS1aXVsgLV0/XFxkW0EtWl1cXGR8XFxkezR9ID9bQS1aXXsyfXxbQS1aXVxcZHs0fVtBLVpdezN9fFxcZHs1fSg/Oi1cXGR7NH0pP3xcXGR7NX0tXFxkezN9fFxcZHs0fS1cXGR7M318XFxkezN9LVxcZHs0fXxcXGR7Mn0tXFxkezN9fFxcZHszfSA/XFxkezJ9fFxcZHs0LDd9KSQiLAoiaSIpLE9EPUpEKC9eKFteXHgwMC1ceDQwXHg1Yi1ceDYwXHg3Yi1ceGZmXXxbLi1dfFxzfFxkKSskLyk7CnZhciBQRD1mdW5jdGlvbigpe3ZhciBhPVN0cmluZyhhbCgzMyxmdW5jdGlvbigpe3JldHVybiAwfSkpO2EuaW5kZXhPZigiLiIpIT09LTEmJihhPWEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCIuIikrMykpO3ZhciBiPWFsKDM0LGZ1bmN0aW9uKCl7cmV0dXJuIDB9KTtyZXR1cm57dnQ6TnVtYmVyKGEpLHN0OmJ9fSxRRD1mdW5jdGlvbigpe3JldHVybiBhbCgzMixmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwfSl9LFNEPWZ1bmN0aW9uKGEpe3ZhciBiPXBkKCl8fDAsYz1bRkQuQmJdO00oNTY4KSYmYy5wdXNoKEZELmVlLEZELlhkLEZELmNlLEZELnhmLEZELnFnLEZELnRqLEZELmxpLEZELmpqKTtmb3IodmFyIGQ9UkQoYSxuZXcgU2V0KGMpKSxlPWFsKDMyLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXB9KSxmPW0oZCksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWcudmFsdWU7ZS5zZXQoaC5EYSxoKX12YXIgbD0ocGQoKXx8MCktYixuPWFsKDMzLGZ1bmN0aW9uKCl7cmV0dXJuIDB9KTsKWmsoMzMsbitsKTt2YXIgcD1hbCgzNCxmdW5jdGlvbigpe3JldHVybiAwfSk7WmsoMzQscCsxKX0sUkQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9TmYoMzYsMiksZD1bXSxlPVt7b286YSxkZXB0aDowfV07ZS5sZW5ndGg+MDspZm9yKHZhciBmPWUuc2hpZnQoKSxnPWYub28saD1mLmRlcHRoLGw9bShPYmplY3Qua2V5cyhnKSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7aWYoIVRELmhhcyhwKSl7dmFyIHE9Z1twXTtpZihxKWlmKENkKHEpKWgrMTw9YyYmZS5wdXNoKHtvbzpxLGRlcHRoOmgrMX0pO2Vsc2V7Zm9yKHZhciByPW0oYiksdD1yLm5leHQoKTshdC5kb25lO3Q9ci5uZXh0KCkpe3ZhciB1PXQudmFsdWUsdj1VRFt1XTtpZih2JiZ2LktjLnRlc3QocCkpe3ZhciB4PXYubmEoU3RyaW5nKHEpKTtpZih4KXtkLnB1c2goe0NhOngsRGE6dX0pO2IuZGVsZXRlKHUpO2JyZWFrfX19aWYoYi5zaXplPT09MClyZXR1cm4gZH19fXJldHVybiBkfSxURD0KbmV3IFNldChbIml0ZW1zIiwiZWNvbW1lcmNlIl0pLFZEPVJlZ0V4cCgicGhvbmUiLCJpIiksV0Q9UmVnRXhwKCJmaXJzdF8/bmFtZSIsImkiKSxYRD1SZWdFeHAoImxhc3RfP25hbWUiLCJpIiksWUQ9UmVnRXhwKCJjb3VudHJ5IiwiaSIpLFpEPVJlZ0V4cCgicG9zdHx6aXAiLCJpIiksJEQ9UmVnRXhwKCJhZGRyZXNzfHN0cmVldCIsImkiKSxhRT1SZWdFeHAoImNpdHkiLCJpIiksYkU9UmVnRXhwKCJyZWdpb258c3RhdGV8cHJvdmluY2UiLCJpIiksY0U9e30sVUQ9KGNFW0ZELkJiXT17S2M6UmVnRXhwKCJlbWFpbCIsImkiKSxuYTpNRH0sY0VbRkQuZWVdPXtLYzpWRCxuYTpmdW5jdGlvbihhKXtyZXR1cm4gR0QoYSwhMSl9fSxjRVtGRC5YZF09e0tjOldELG5hOk5EfSxjRVtGRC5jZV09e0tjOlhELG5hOk5EfSxjRVtGRC50al09e0tjOiRELG5hOk9EfSxjRVtGRC5saV09e0tjOmFFLG5hOk5EfSxjRVtGRC5qal09e0tjOmJFLG5hOk5EfSxjRVtGRC5xZ109e0tjOlpELG5hOklEfSxjRVtGRC54Zl09CntLYzpZRCxuYTpORH0sY0UpO3ZhciBkRT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5sb2FkZWQ9ITE7dGhpcy5IPVtdO2lmKEIucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpdGhpcy5vbkxvYWQoKTtlbHNlICRjKEEsImxvYWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5vbkxvYWQoKX0pfTtkRS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKCl7aWYoIXRoaXMubG9hZGVkKXt0aGlzLmxvYWRlZD0hMDtmb3IodmFyIGE9MDthPHRoaXMuSC5sZW5ndGg7YSsrKWJkKHRoaXMuSFthXSl9fTt2YXIgZkU9ZnVuY3Rpb24oYSl7dmFyIGI9ZUU7Yi5sb2FkZWQ/YmQoYSk6Yi5ILnB1c2goYSl9LGVFPW5ldyBkRTt2YXIgZ0U9ZnVuY3Rpb24oKXt0aGlzLlo9MDt0aGlzLks9e307dGhpcy5IPVtdO3RoaXMuTj1bXTt0aGlzLmZhPXRoaXMuUj10aGlzLmphPSExfSxpRT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9aEU7YS5ldmVudENhbGxiYWNrPWI7YyYmKGEuZXZlbnRUaW1lb3V0PWMpO3JldHVybiBkLnB1c2goYSl9LGpFPWZ1bmN0aW9uKGEsYil7aWYoIUFiKGIpfHxiPDApYj0wO3ZhciBjPXFqKCksZD0wLGU9ITEsZj12b2lkIDA7Zj1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlfHwoZT0hMCxhKCkpO2Y9dm9pZCAwfSxiKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZz1jP2Muc3Vic2NyaWJlcnM6MTsrK2Q9PT1nJiYoZiYmKEEuY2xlYXJUaW1lb3V0KGYpLGY9dm9pZCAwKSxlfHwoYSgpLGU9ITApKX19LGxFPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEuTi5sZW5ndGgpYj1hLk4uc2hpZnQoKTtlbHNlIGlmKGEuSC5sZW5ndGgpYj1hLkguc2hpZnQoKTtlbHNlIHJldHVybjt2YXIgYzt2YXIgZD1iO2lmKGEuamF8fAoha0UoZC5tZXNzYWdlKSljPWQ7ZWxzZXthLmphPSEwO3ZhciBlPWQubWVzc2FnZVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSxmLGc7dHlwZW9mIGU9PT0ibnVtYmVyIj8oZj1lLTIsZz1lLTEpOihmPXJqKCksZz1yaigpLGQubWVzc2FnZVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1yaigpKTt2YXIgaD17fSxsPXttZXNzYWdlOihoLmV2ZW50PSJndG0uaW5pdF9jb25zZW50IixoWyJndG0udW5pcXVlRXZlbnRJZCJdPWYsaCksbWVzc2FnZUNvbnRleHQ6e2V2ZW50SWQ6Zn19LG49e30scD17bWVzc2FnZToobi5ldmVudD0iZ3RtLmluaXQiLG5bImd0bS51bmlxdWVFdmVudElkIl09ZyxuKSxtZXNzYWdlQ29udGV4dDp7ZXZlbnRJZDpnfX07YS5ILnVuc2hpZnQocCxkKTtjPWx9cmV0dXJuIGN9LG9FPWZ1bmN0aW9uKGEpe2EuZmF8fFAoMTk2KTtmb3IodmFyIGI9ITEsYzshYS5SJiYoYz1sRShhKSk7KXthLlI9ITA7dmFyIGQ9ckE7ZGVsZXRlIGQuSC5ldmVudE1vZGVsO29BKGQpO3ZhciBlPWMsZj0KZS5tZXNzYWdlLGc9ZS5tZXNzYWdlQ29udGV4dDtpZihmPT1udWxsKWEuUj0hMTtlbHNle2cuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbiYmc0EoKTt0cnl7aWYoeWIoZikpdHJ5e2YuY2FsbCh0QSl9Y2F0Y2goUyl7fWVsc2UgaWYoQXJyYXkuaXNBcnJheShmKSl7aWYoemIoZlswXSkpe3ZhciBoPWZbMF0uc3BsaXQoIi4iKSxsPWgucG9wKCksbj1mLnNsaWNlKDEpLHA9dUEoaC5qb2luKCIuIiksMik7aWYocCE9bnVsbCl0cnl7cFtsXS5hcHBseShwLG4pfWNhdGNoKFMpe319fWVsc2V7dmFyIHE9dm9pZCAwO2lmKEhiKGYpKWE6e2lmKGYubGVuZ3RoJiZ6YihmWzBdKSl7dmFyIHI9QURbZlswXV07aWYociYmKCFnLmZyb21Db250YWluZXJFeGVjdXRpb258fCFDRFtmWzBdXSkpe3E9cihmLGcpO2JyZWFrIGF9fXE9dm9pZCAwfWVsc2UgcT1mO2lmKHEpe3ZhciB0O2Zvcih2YXIgdT1xLHY9dS5fY2xlYXJ8fGcub3ZlcndyaXRlTW9kZWxGaWVsZHMseD1tKE9iamVjdC5rZXlzKHUpKSx5PXgubmV4dCgpOyF5LmRvbmU7eT0KeC5uZXh0KCkpe3ZhciB6PXkudmFsdWU7eiE9PSJfY2xlYXIiJiYodiYmckEuc2V0KHosdm9pZCAwKSxyQS5zZXQoeix1W3pdKSl9TSg1OTIpJiZTRCh1KTskaygyNSl8fFprKDI1LHVbImd0bS5zdGFydCJdKTt2YXIgQz11WyJndG0udW5pcXVlRXZlbnRJZCJdO3UuZXZlbnQ/KHR5cGVvZiBDIT09Im51bWJlciImJihDPXJqKCksdVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1DLHJBLnNldCgiZ3RtLnVuaXF1ZUV2ZW50SWQiLEMpKSx0PXpCKHUpKTp0PSExO2I9dHx8Yn19fWZpbmFsbHl7Zy5mcm9tQ29udGFpbmVyRXhlY3V0aW9uJiZvQShyQSwhMCk7dmFyIEQ9ZlsiZ3RtLnVuaXF1ZUV2ZW50SWQiXTtpZih0eXBlb2YgRD09PSJudW1iZXIiKXtmb3IodmFyIEk9YSxHPUkuS1tTdHJpbmcoRCldfHxbXSxOPTA7TjxHLmxlbmd0aDtOKyspSS5OLnB1c2gobUUoR1tOXSkpO0cubGVuZ3RoJiZJLk4uc29ydChuRSk7ZGVsZXRlIEkuS1tTdHJpbmcoRCldO0Q+YS5aJiYoYS5aPUQpfWEuUj0hMX19fXJldHVybiFifSwKcEU9ZnVuY3Rpb24oKXt2YXIgYT1oRTthLmZhJiZQKDE5NSk7YS5mYT0hMDtpZihmbi5IKXt2YXIgYj0hSWYoNTEpLGM9cnooKTtweihjLHtzdGFnZTpJeS5YLlpnfSk7aWYoYil7dmFyIGQ9cXooYyx7c3RhZ2U6SXkuWC5Za30sSXkuWC5uaSk7ZCE9PXZvaWQgMCYmKGMuSC5ZPWQpfXZhciBlPWEuSC5sZW5ndGg7cnooKS5ILkM9ZX1vRShhKTtpZihmbi5IKXt2YXIgZj1yeigpLGc9cXooZix7c3RhZ2U6SXkuWC5Wa30sSXkuWC5aZyk7ZyE9PXZvaWQgMCYmKGYuSC5CPWcpfXRyeXt2YXIgaD1BW0UoMTkpXSxsPUUoNSksbj1oLmhpZGU7aWYobiYmbltsXSE9PXZvaWQgMCYmbi5lbmQpe25bbF09ITE7dmFyIHA9ITAscTtmb3IocSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkocSkmJm5bcV09PT0hMCl7cD0hMTticmVha31wJiYobi5lbmQoKSxuLmVuZD1udWxsKX19Y2F0Y2gocil7RSg1KX19LHFFPWZ1bmN0aW9uKGEsYil7aWYoYS5aPGIubm90QmVmb3JlRXZlbnRJZCl7dmFyIGM9U3RyaW5nKGIubm90QmVmb3JlRXZlbnRJZCk7CmEuS1tjXT1hLktbY118fFtdO2EuS1tjXS5wdXNoKGIpfWVsc2V7YS5OLnB1c2gobUUoYikpO2EuTi5zb3J0KG5FKTt2YXIgZD1mdW5jdGlvbigpe2EuUnx8b0UoYSl9O00oNTgwKT9kZChkKTpiZChkKX19OwpnRS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoaCl7dmFyIGw9e307aWYoREQoaCkpe3ZhciBuPWg7aD1ERChuKT9uLmdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZSgpOnZvaWQgMDtsLmZyb21Db250YWluZXJFeGVjdXRpb249ITB9cmV0dXJue21lc3NhZ2U6aCxtZXNzYWdlQ29udGV4dDpsfX12YXIgYj10aGlzLGM9TWMoRSgxOSksW10pLGQ9cGooKTtkLnBydW5lZD09PSEwJiZQKDgzKTt0aGlzLks9bkQoKS5nZXQoKTtuRCgpLmxpc3RlbihmdW5jdGlvbihoKXtxRShiLGgpfSk7ZC5zdWJzY3JpYmVycz0oZC5zdWJzY3JpYmVyc3x8MCkrMTt2YXIgZT1jLnB1c2gsZj10aGlzO2MucHVzaD1mdW5jdGlvbigpe3ZhciBoO2xqKCk7aWYoamouSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFPjApe2g9W107Zm9yKHZhciBsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyloW2xdPW5ldyBFRChhcmd1bWVudHNbbF0pfWVsc2UgaD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTsKdmFyIG49aC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9KTtmLkgucHVzaC5hcHBseShmLkgsbik7dmFyIHA9ZS5hcHBseShjLGgpLHE9TWF0aC5tYXgoMTAwLE5mKDEsMzAwKSk7aWYodGhpcy5sZW5ndGg+cSlmb3IoUCg0KSxkLnBydW5lZD0hMDt0aGlzLmxlbmd0aD5xOyl0aGlzLnNoaWZ0KCk7dmFyIHI9dHlwZW9mIHAhPT0iYm9vbGVhbiJ8fHA7cmV0dXJuIG9FKGYpJiZyfTt2YXIgZz1jLnNsaWNlKDApLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gYShoKX0pO3RoaXMuSC5wdXNoLmFwcGx5KHRoaXMuSCxnKTtJZig1MSl8fChmbi5IJiZ1eigpLGJkKHJFKSk7VkIoZnVuY3Rpb24oKXtpZighZC5ndG1Eb20pe2QuZ3RtRG9tPSEwO3ZhciBoPXt9O2MucHVzaCgoaC5ldmVudD0iZ3RtLmRvbSIsaCkpfX0pO2ZFKGZ1bmN0aW9uKCl7aWYoIWQuZ3RtTG9hZCl7ZC5ndG1Mb2FkPSEwO3ZhciBoPXt9O2MucHVzaCgoaC5ldmVudD0iZ3RtLmxvYWQiLGgpKX19KX07CmdFLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEpe3JldHVybiBBW0UoMTkpXS5wdXNoKGEpfTt2YXIgaEU9bmV3IGdFO2Z1bmN0aW9uIG5FKGEsYil7dmFyIGM9YS5tZXNzYWdlQ29udGV4dCxkPWIubWVzc2FnZUNvbnRleHQ7aWYoYy5ldmVudElkIT09ZC5ldmVudElkKXJldHVybiBjLmV2ZW50SWQtZC5ldmVudElkO2lmKCFNKDU5NSkpcmV0dXJuIGMucHJpb3JpdHlJZC1kLnByaW9yaXR5SWQ7dmFyIGUsZixnO2E6e2Zvcih2YXIgaD0oZT1jLnByaW9yaXR5UXVldWUpIT1udWxsP2U6W2MucHJpb3JpdHlJZF0sbD0oZj1kLnByaW9yaXR5UXVldWUpIT1udWxsP2Y6W2QucHJpb3JpdHlJZF0sbj1NYXRoLm1pbihoLmxlbmd0aCxsLmxlbmd0aCkscD0wO3A8bjtwKyspaWYoaFtwXSE9PWxbcF0pe2c9aFtwXS1sW3BdO2JyZWFrIGF9Zz1oLmxlbmd0aC1sLmxlbmd0aH1yZXR1cm4gZ30KZnVuY3Rpb24ga0UoYSl7aWYoYT09bnVsbHx8dHlwZW9mIGEhPT0ib2JqZWN0IilyZXR1cm4hMTtpZihhLmV2ZW50KXJldHVybiEwO2lmKEhiKGEpKXt2YXIgYj1hWzBdO2lmKGI9PT0iY29uZmlnInx8Yj09PSJldmVudCJ8fGI9PT0ianMifHxiPT09ImdldCIpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbUUoYSl7cmV0dXJue21lc3NhZ2U6YS5tZXNzYWdlLG1lc3NhZ2VDb250ZXh0OmEubWVzc2FnZUNvbnRleHR9fWZ1bmN0aW9uIHNFKGEsYixjKXtyZXR1cm4gaUUoYSxiLGMpfWZ1bmN0aW9uIHRFKGEsYil7cmV0dXJuIGpFKGEsYil9ZnVuY3Rpb24gckUoKXtwRSgpfWZ1bmN0aW9uIHVFKGEpe3JldHVybiBoRS5wdXNoKGEpfTt2YXIgdkU9ZnVuY3Rpb24oKXt9O3ZFLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIGEsYj1SaihBLmxvY2F0aW9uLmhyZWYpOyhhPWIuaG9zdG5hbWUrYi5wYXRobmFtZSkmJlVtKCJkbCIsZW5jb2RlVVJJQ29tcG9uZW50KGEpKTt2YXIgYzt2YXIgZD1FKDUpO2lmKGQpe3ZhciBlPUlmKDcpPzE6MCxmPUZrKCksZz1mJiZmLmZyb21Db250YWluZXJFeGVjdXRpb24/MTowLGg9ZiYmZi5zb3VyY2V8fDAsbD1FKDYpO2M9ZCsiOyIrbCsiOyIrZysiOyIraCsiOyIrZX1lbHNlIGM9dm9pZCAwO3ZhciBuPWM7biYmVW0oInRkcCIsbik7dmFyIHA9T3AoITApO3AhPT12b2lkIDAmJlVtKCJmcm0iLFN0cmluZyhwKSl9O3ZhciB3RT1uZXcgdkU7dmFyIHhFPWZ1bmN0aW9uKCl7dGhpcy5IPVhtKCk7dGhpcy5LPXZvaWQgMH0seUU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWm0oYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5qYj4wP2I/Yy5qYisiXyIrV20oYyk6U3RyaW5nKGMuamIpOnZvaWQgMH0pfTsKeEUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKHBsKCl8fGZuLkspVW0oImNzcCIsZnVuY3Rpb24oKXt2YXIgYj15RShhLkgsITApOyRtKGEuSCk7cmV0dXJuIGJ9LCExKSxVbSgibWRlIixmdW5jdGlvbigpe3ZhciBiPWNuLkgsYz15RShiLCExKTskbShiKTtyZXR1cm4gY30sITEpLEEuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLGZ1bmN0aW9uKGIpe2lmKGIuZGlzcG9zaXRpb249PT0iZW5mb3JjZSIpe1AoMTc5KTt2YXIgYz1ubihiLmVmZmVjdGl2ZURpcmVjdGl2ZSk7aWYoYyl7dmFyIGQ7YTp7dmFyIGU9Yi5ibG9ja2VkVVJJLGY9a247aWYoZm4uSyYmZSl7dmFyIGc9am4oYyxlKTtpZihnKXt2YXIgaDtkPShoPWxuKGYsYykpPT1udWxsP3ZvaWQgMDpoW2ddO2JyZWFrIGF9fWQ9dm9pZCAwfXZhciBsPWQ7aWYobCl7dmFyIG47YTp7dHJ5e3ZhciBwPW5ldyBVUkwoYi5ibG9ja2VkVVJJKSxxPXAucGF0aG5hbWUuaW5kZXhPZigiOyIpOwpuPXE+PTA/cC5vcmlnaW4rcC5wYXRobmFtZS5zdWJzdHJpbmcoMCxxKTpwLm9yaWdpbitwLnBhdGhuYW1lO2JyZWFrIGF9Y2F0Y2goRCl7fW49dm9pZCAwfXZhciByPW47aWYocil7Zm9yKHZhciB0PW0obCksdT10Lm5leHQoKTshdS5kb25lO3U9dC5uZXh0KCkpe3ZhciB2PXUudmFsdWU7aWYoIXYuRW8pe3YuRW89ITA7dmFyIHg9e2V2ZW50SWQ6di5ldmVudElkLHByaW9yaXR5SWQ6di5wcmlvcml0eUlkfTtpZihwbCgpKXt2YXIgeT14LHo9e3R5cGU6MSxibG9ja2VkVXJsOnIsZW5kcG9pbnQ6di5lbmRwb2ludCx2aW9sYXRpb246Yi5lZmZlY3RpdmVEaXJlY3RpdmV9O2lmKHBsKCkpe3ZhciBDPUxsKCJUQUdfRElBR05PU1RJQ1MiLHtldmVudElkOnk9PW51bGw/dm9pZCAwOnkuZXZlbnRJZCxwcmlvcml0eUlkOnk9PW51bGw/dm9pZCAwOnkucHJpb3JpdHlJZH0pO0MudGFnRGlhZ25vc3RpY3M9ejtvbChDKX19ekUoYSx2LmRlc3RpbmF0aW9uSWQsdi5lbmRwb2ludCxjKX19bW4oYywKYi5ibG9ja2VkVVJJKX19fX19KX07dmFyIHpFPWZ1bmN0aW9uKGEsYixjLGQpe2FuKGEuSCxiLGMsMSxkKTtWbSgiY3NwIiwhMCk7Vm0oIm1kZSIsITApO2MhPT02MSYmYyE9PTU2JiZhLks9PT12b2lkIDAmJihhLks9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5ILmpiPjAmJnRvKCExKTthLks9dm9pZCAwfSw1MDApKX0sQUU9bmV3IHhFO3ZhciBCRT1mdW5jdGlvbigpe3RoaXMuc2VxdWVuY2VOdW1iZXI9MH07QkUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO0NFKHRoaXMpO0lmKDY1KSYmVW0oIm10YmwiLCIxIik7VW0oInYiLCIzIik7VW0oInQiLCJ0Iik7VW0oInBpZCIsZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKG5tKGptLmJhLmJoKSl9KTtVbSgiZ3RtIixmdW5jdGlvbigpe3JldHVybiBkdSgpfSk7VW0oInNlcSIsZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKCsrYS5zZXF1ZW5jZU51bWJlcil9KTtVbSgiZXhwIixmdW5jdGlvbigpe3JldHVybiBDcCgpfSl9O3ZhciBDRT1mdW5jdGlvbihhKXtpZihubShqbS5iYS5iaCk9PT12b2lkIDApe3ZhciBiPWZ1bmN0aW9uKCl7bW0oam0uYmEuYmgsRGIoKSk7YS5zZXF1ZW5jZU51bWJlcj0wfTtiKCk7Y2QoYiw4NjRFNSl9ZWxzZSBwbShqbS5iYS5iaCxmdW5jdGlvbigpe2Euc2VxdWVuY2VOdW1iZXI9MH0pO2Euc2VxdWVuY2VOdW1iZXI9MH0sREU9bmV3IEJFO2Z1bmN0aW9uIEVFKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBW2FdfX0KdmFyIEZFPXt9LEdFPShGRVsxNF09ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4oYT1BLmNyeXB0byk9PW51bGw/dm9pZCAwOmEuZ2V0UmFuZG9tVmFsdWVzfSxGRVsxNV09ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybihhPUEuY3J5cHRvKT09bnVsbD92b2lkIDA6KGI9YS5zdWJ0bGUpPT1udWxsP3ZvaWQgMDpiLmRpZ2VzdH0sRkVbMV09RUUoImZldGNoIiksRkVbNl09RUUoIk1hcCIpLEZFWzJdPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucmFuZG9tfSxGRVs4XT1mdW5jdGlvbigpe3JldHVybiBuYShPYmplY3QsImFzc2lnbiIpfSxGRVs5XT1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuZW50cmllc30sRkVbMTBdPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllc30sRkVbNV09RUUoIlByb21pc2UiKSxGRVsxM109RUUoIlJlZ0V4cCIpLEZFWzNdPWZ1bmN0aW9uKCl7cmV0dXJuIEhjLnNlbmRCZWFjb259LEZFWzddPUVFKCJTZXQiKSxGRVsxMl09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aH0sCkZFWzExXT1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGh9LEZFWzRdPUVFKCJYTUxIdHRwUmVxdWVzdCIpLEZFKSxIRT17fSxJRT0oSEVbMTVdPSEwLEhFKTt2YXIgTkU9L14oaHR0cHM/Oik/XC9cLy87CgpmdW5jdGlvbiBoRigpe307ZnVuY3Rpb24gaUYoKXtJZig2MikmJihoeSgiZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuKChkPWMub3B0aW9ucyk9PW51bGw/dm9pZCAwOmQud2FpdEZvclRhZ3MpIT09ITB9KSxoeSgiZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cyIsZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybigoZD1jLm9wdGlvbnMpPT1udWxsP3ZvaWQgMDpkLndhaXRGb3JUYWdzKSE9PSEwfSksaHkoImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyIsZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybigoZD1jLm9wdGlvbnMpPT1udWxsP3ZvaWQgMDpkLmZpeE1pc3NpbmdBcGkpIT09ITB9KSl9O3ZhciBqRj1mdW5jdGlvbigpe3RoaXMuSD10aGlzLmdwcFN0cmluZz12b2lkIDB9O2pGLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuSD10aGlzLmdwcFN0cmluZz12b2lkIDB9O3ZhciBrRj1uZXcgakY7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtsdCh7R3U6MCxGdToxLEN1OjIseHU6MyxEdTo0LHl1OjUsRXU6NixBdTo3LEJ1Ojgsd3U6OSx6dToxMCxIdToxMX0pLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gTnVtYmVyKGEpfSk7bHQoe0p1OjAsS3U6MSxJdToyfSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBOdW1iZXIoYSl9KTt2YXIgbEY9ZnVuY3Rpb24oYSxiLGMsZCl7cnQuY2FsbCh0aGlzKTt0aGlzLmZlPWI7dGhpcy5rZD1jO3RoaXMuYWM9ZDt0aGlzLkxhPW5ldyBNYXA7dGhpcy5oZT0wO3RoaXMuamE9bmV3IE1hcDt0aGlzLnlhPW5ldyBNYXA7dGhpcy5aPXZvaWQgMDt0aGlzLks9YX07d2EobEYscnQpO2xGLnByb3RvdHlwZS5OPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuSDt0aGlzLkxhLmNsZWFyKCk7dGhpcy5qYS5jbGVhcigpO3RoaXMueWEuY2xlYXIoKTt0aGlzLlomJihudCh0aGlzLkssIm1lc3NhZ2UiLHRoaXMuWiksZGVsZXRlIHRoaXMuWik7ZGVsZXRlIHRoaXMuSztkZWxldGUgdGhpcy5hYztydC5wcm90b3R5cGUuTi5jYWxsKHRoaXMpfTsKdmFyIG1GPWZ1bmN0aW9uKGEpe2lmKGEuSClyZXR1cm4gYS5IO2Eua2QmJmEua2QoYS5LKT9hLkg9YS5LOmEuSD1OcChhLkssYS5mZSk7dmFyIGI7cmV0dXJuKGI9YS5IKSE9bnVsbD9iOm51bGx9LG9GPWZ1bmN0aW9uKGEsYixjKXtpZihtRihhKSlpZihhLkg9PT1hLkspe3ZhciBkPWEuTGEuZ2V0KGIpO2QmJmQoYS5ILGMpfWVsc2V7dmFyIGU9YS5qYS5nZXQoYik7aWYoZSYmZS5kayl7bkYoYSk7dmFyIGY9KythLmhlO2EueWEuc2V0KGYse3BlOmUucGUsSXI6ZS5ubyhjKSxwZXJzaXN0ZW50OmI9PT0iYWRkRXZlbnRMaXN0ZW5lciJ9KTthLkgucG9zdE1lc3NhZ2UoZS5kayhjLGYpLCIqIil9fX0sbkY9ZnVuY3Rpb24oYSl7YS5afHwoYS5aPWZ1bmN0aW9uKGIpe2lmKGIuc291cmNlPT09YS5IKXRyeXt2YXIgYztjPWEuYWM/YS5hYyhiKTp2b2lkIDA7aWYoYyl7dmFyIGQ9Yy5ZcyxlPWEueWEuZ2V0KGQpO2lmKGUpe2UucGVyc2lzdGVudHx8YS55YS5kZWxldGUoZCk7dmFyIGY7KGY9CmUucGUpPT1udWxsfHxmLmNhbGwoZSxlLklyLGMucGF5bG9hZCl9fX1jYXRjaChnKXt9fSxtdChhLkssIm1lc3NhZ2UiLGEuWikpfTt2YXIgcEY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmxpc3RlbmVyLGQ9KDAsYS5fX2dwcCkoImFkZEV2ZW50TGlzdGVuZXIiLGMpO2QmJmMoZCwhMCl9LHFGPWZ1bmN0aW9uKGEsYil7KDAsYS5fX2dwcCkoInJlbW92ZUV2ZW50TGlzdGVuZXIiLGIubGlzdGVuZXIsYi5saXN0ZW5lcklkKX0sckY9e25vOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxpc3RlbmVyfSxkazpmdW5jdGlvbihhLGIpe3ZhciBjPXt9O3JldHVybiBjLl9fZ3BwQ2FsbD17Y2FsbElkOmIsY29tbWFuZDoiYWRkRXZlbnRMaXN0ZW5lciIsdmVyc2lvbjoiMS4xIn0sY30scGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLl9fZ3BwUmV0dXJuO2EoYy5yZXR1cm5WYWx1ZSxjLnN1Y2Nlc3MpfX0sc0Y9e25vOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxpc3RlbmVyfSxkazpmdW5jdGlvbihhLGIpe3ZhciBjPXt9O3JldHVybiBjLl9fZ3BwQ2FsbD17Y2FsbElkOmIsY29tbWFuZDoicmVtb3ZlRXZlbnRMaXN0ZW5lciIsdmVyc2lvbjoiMS4xIiwKcGFyYW1ldGVyOmEubGlzdGVuZXJJZH0sY30scGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLl9fZ3BwUmV0dXJuLGQ9Yy5yZXR1cm5WYWx1ZS5kYXRhO2E9PW51bGx8fGEoZCxjLnN1Y2Nlc3MpfX07ZnVuY3Rpb24gdEYoYSl7dmFyIGI9e307dmYoYS5kYXRhKT9iPUpTT04ucGFyc2UoYS5kYXRhKTpiPWEuZGF0YTtyZXR1cm57cGF5bG9hZDpiLFlzOmIuX19ncHBSZXR1cm4uY2FsbElkfX0KdmFyIHVGPWZ1bmN0aW9uKGEsYil7dmFyIGM7Yz0oYj09PXZvaWQgMD97fTpiKS50aW1lb3V0TXM7cnQuY2FsbCh0aGlzKTt0aGlzLmNhbGxlcj1uZXcgbEYoYSwiX19ncHBMb2NhdG9yIixmdW5jdGlvbihkKXtyZXR1cm4gdHlwZW9mIGQuX19ncHA9PT0iZnVuY3Rpb24ifSx0Rik7dGhpcy5jYWxsZXIuTGEuc2V0KCJhZGRFdmVudExpc3RlbmVyIixwRik7dGhpcy5jYWxsZXIuamEuc2V0KCJhZGRFdmVudExpc3RlbmVyIixyRik7dGhpcy5jYWxsZXIuTGEuc2V0KCJyZW1vdmVFdmVudExpc3RlbmVyIixxRik7dGhpcy5jYWxsZXIuamEuc2V0KCJyZW1vdmVFdmVudExpc3RlbmVyIixzRik7dGhpcy50aW1lb3V0TXM9YyE9bnVsbD9jOjUwMH07d2EodUYscnQpO3VGLnByb3RvdHlwZS5OPWZ1bmN0aW9uKCl7dGhpcy5jYWxsZXIuZGlzcG9zZSgpO3J0LnByb3RvdHlwZS5OLmNhbGwodGhpcyl9Owp1Ri5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9SHAoZnVuY3Rpb24oKXthKHZGLCEwKX0pLGQ9dGhpcy50aW1lb3V0TXM9PT0tMT92b2lkIDA6c2V0VGltZW91dChmdW5jdGlvbigpe2MoKX0sdGhpcy50aW1lb3V0TXMpO29GKHRoaXMuY2FsbGVyLCJhZGRFdmVudExpc3RlbmVyIix7bGlzdGVuZXI6ZnVuY3Rpb24oZSxmKXtjbGVhclRpbWVvdXQoZCk7dHJ5e3ZhciBnO3ZhciBoOygoaD1lLnBpbmdEYXRhKT09bnVsbD92b2lkIDA6aC5ncHBWZXJzaW9uKT09PXZvaWQgMHx8ZS5waW5nRGF0YS5ncHBWZXJzaW9uPT09IjEifHxlLnBpbmdEYXRhLmdwcFZlcnNpb249PT0iMS4wIj8oYi5yZW1vdmVFdmVudExpc3RlbmVyKGUubGlzdGVuZXJJZCksZz17ZXZlbnROYW1lOiJzaWduYWxTdGF0dXMiLGRhdGE6InJlYWR5IixwaW5nRGF0YTp7aW50ZXJuYWxFcnJvclN0YXRlOjEsZ3BwU3RyaW5nOiJHUFBfRVJST1JfU1RSSU5HX0lTX0RFUFJFQ0FURURfU1BFQyIsCmFwcGxpY2FibGVTZWN0aW9uczpbLTFdfX0pOkFycmF5LmlzQXJyYXkoZS5waW5nRGF0YS5hcHBsaWNhYmxlU2VjdGlvbnMpP2c9ZTooYi5yZW1vdmVFdmVudExpc3RlbmVyKGUubGlzdGVuZXJJZCksZz17ZXZlbnROYW1lOiJzaWduYWxTdGF0dXMiLGRhdGE6InJlYWR5IixwaW5nRGF0YTp7aW50ZXJuYWxFcnJvclN0YXRlOjIsZ3BwU3RyaW5nOiJHUFBfRVJST1JfU1RSSU5HX0VYUEVDVEVEX0FQUExJQ0FUSU9OX1NFQ1RJT05fQVJSQVkiLGFwcGxpY2FibGVTZWN0aW9uczpbLTFdfX0pO2EoZyxmKX1jYXRjaChsKXtpZihlPT1udWxsPzA6ZS5saXN0ZW5lcklkKXRyeXtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS5saXN0ZW5lcklkKX1jYXRjaChuKXthKHdGLCEwKTtyZXR1cm59YSh4RiwhMCl9fX0pfTsKdUYucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7b0YodGhpcy5jYWxsZXIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLHtsaXN0ZW5lcjpmdW5jdGlvbigpe30sbGlzdGVuZXJJZDphfSl9Owp2YXIgeEY9e2V2ZW50TmFtZToic2lnbmFsU3RhdHVzIixkYXRhOiJyZWFkeSIscGluZ0RhdGE6e2ludGVybmFsRXJyb3JTdGF0ZToyLGdwcFN0cmluZzoiR1BQX0VSUk9SX1NUUklOR19VTkFWQUlMQUJMRSIsYXBwbGljYWJsZVNlY3Rpb25zOlstMV19LGxpc3RlbmVySWQ6LTF9LHZGPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfTElTVEVORVJfUkVHSVNUUkFUSU9OX1RJTUVPVVQiLGludGVybmFsRXJyb3JTdGF0ZToyLGFwcGxpY2FibGVTZWN0aW9uczpbLTFdfSxsaXN0ZW5lcklkOi0xfSx3Rj17ZXZlbnROYW1lOiJzaWduYWxTdGF0dXMiLGRhdGE6InJlYWR5IixwaW5nRGF0YTp7Z3BwU3RyaW5nOiJHUFBfRVJST1JfU1RSSU5HX1JFTU9WRV9FVkVOVF9MSVNURU5FUl9FUlJPUiIsaW50ZXJuYWxFcnJvclN0YXRlOjIsYXBwbGljYWJsZVNlY3Rpb25zOlstMV19LGxpc3RlbmVySWQ6LTF9O2Z1bmN0aW9uIHlGKGEpe3ZhciBiO2lmKCEoYj1hLnBpbmdEYXRhLnNpZ25hbFN0YXR1cz09PSJyZWFkeSIpKXt2YXIgYz1hLnBpbmdEYXRhLmFwcGxpY2FibGVTZWN0aW9ucztiPSFjfHxjLmxlbmd0aD09PTEmJmNbMF09PT0tMX1pZihiKXtrRi5ncHBTdHJpbmc9YS5waW5nRGF0YS5ncHBTdHJpbmc7dmFyIGQ9YS5waW5nRGF0YS5hcHBsaWNhYmxlU2VjdGlvbnMuam9pbigiLCIpO2tGLkg9ZH19ZnVuY3Rpb24gekYoKXt0cnl7dmFyIGE9bmV3IHVGKEEse3RpbWVvdXRNczotMX0pO21GKGEuY2FsbGVyKSYmYS5hZGRFdmVudExpc3RlbmVyKHlGKX1jYXRjaChiKXt9fTtmdW5jdGlvbiBBRigpe3ZhciBhPVtbImN2IixFKDEpXSxbInJ2IixFKDE0KV0sWyJ0YyIsY0EudGFncy5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGR9KS5sZW5ndGhdXSxiPUpmKDE1KTtiJiZhLnB1c2goWyJ4IixiXSk7dmFyIGM9Q3AoKTtjJiZhLnB1c2goWyJ0YWdfZXhwIixjXSk7cmV0dXJuIGF9O3ZhciBCRj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPXt9O3RoaXMuSz17fTtmeihmdW5jdGlvbihiKXt2YXIgYz1iLmV2ZW50SWQsZD1iLnRmLGU9W10sZj1hLkhbY118fFtdO2YubGVuZ3RoJiZlLnB1c2goWyJoZiIsZi5qb2luKCIuIildKTt2YXIgZz1hLktbY118fFtdO2cubGVuZ3RoJiZlLnB1c2goWyJodCIsZy5qb2luKCIuIildKTtkJiYoZGVsZXRlIGEuSFtjXSxkZWxldGUgYS5LW2NdKTtyZXR1cm4gZX0pfSxDRj1mdW5jdGlvbigpe3ZhciBhPTA7cmV0dXJuIGZ1bmN0aW9uKGIpe3N3aXRjaChiKXtjYXNlIDE6YXw9MTticmVhaztjYXNlIDI6YXw9MjticmVhaztjYXNlIDM6YXw9NH1yZXR1cm4gYX19LERGO3ZhciBFRj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPSIiO2ZuLk4mJk0oNTE2KSYmZnooZnVuY3Rpb24oKXt2YXIgYj1bXTthLkgmJmIucHVzaChbInBzZCIsYS5IXSk7cmV0dXJuIGJ9KX0sRkY7ZnVuY3Rpb24gR0YoKXtyZXR1cm4hMX0KZnVuY3Rpb24gSEYoKXt2YXIgYT17fTtyZXR1cm4gZnVuY3Rpb24oYixjLGQpe319O2Z1bmN0aW9uIElGKCl7dmFyIGE9SkY7cmV0dXJuIGZ1bmN0aW9uKGIsYyxkKXt2YXIgZT1kJiZkLmV2ZW50O0tGKGMpO3ZhciBmPUJoKGIpP3ZvaWQgMDoxLGc9bmV3IGtiO0diKGMsZnVuY3Rpb24ocix0KXt2YXIgdT1VZCh0LHZvaWQgMCxmKTt1PT09dm9pZCAwJiZ0IT09dm9pZCAwJiZQKDQ0KTtnLnNldChyLHUpfSk7YS5RYihRZigpKTt2YXIgaD17Um46aGcoYiksZXZlbnRJZDplPT1udWxsP3ZvaWQgMDplLmlkLHByaW9yaXR5SWQ6ZSE9PXZvaWQgMD9lLnByaW9yaXR5SWQ6dm9pZCAwLHByaW9yaXR5UXVldWU6ZSE9PXZvaWQgMD9lLnByaW9yaXR5UXVldWU6dm9pZCAwLHdnOmUhPT12b2lkIDA/ZnVuY3Rpb24ocil7ZS5sZC53ZyhyKX06dm9pZCAwLFBiOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LGxvZzpmdW5jdGlvbigpe30sTnI6e2luZGV4OmQ9PW51bGw/dm9pZCAwOmQuaW5kZXgsdHlwZTpkPT1udWxsP3ZvaWQgMDpkLnR5cGUsbmFtZTpkPT1udWxsP3ZvaWQgMDpkLm5hbWV9LAppdDohIUtBKGIsMyksb3JpZ2luYWxFdmVudERhdGE6ZT09bnVsbD92b2lkIDA6ZS5vcmlnaW5hbEV2ZW50RGF0YX07ZSYmZS5jYWNoZWRNb2RlbFZhbHVlcyYmKGguY2FjaGVkTW9kZWxWYWx1ZXM9e2d0bTplLmNhY2hlZE1vZGVsVmFsdWVzLmd0bSxlY29tbWVyY2U6ZS5jYWNoZWRNb2RlbFZhbHVlcy5lY29tbWVyY2V9KTtpZihHRigpKXt2YXIgbD1IRigpLG4scDtoLkFiPXt3azpbXSx5Zzp7fSxqYzpmdW5jdGlvbihyLHQsdSl7dD09PTEmJihuPXIpO3Q9PT03JiYocD11KTtsKHIsdCx1KX0sZWk6VmgoKX07aC5sb2c9ZnVuY3Rpb24ocil7dmFyIHQ9T2EuYXBwbHkoMSxhcmd1bWVudHMpO24mJmwobiw0LHtsZXZlbDpyLHNvdXJjZTpwLG1lc3NhZ2U6dH0pfX0KdmFyIHE9cmYoYSxoLFtiLGddKTthLlFiKCk7cSBpbnN0YW5jZW9mIFRhJiYocS50eXBlPT09InJldHVybiI/cT1xLmRhdGE6cT12b2lkIDApO3JldHVybiBUZChxLHZvaWQgMCxmKX19ZnVuY3Rpb24gS0YoYSl7dmFyIGI9YS5ndG1PblN1Y2Nlc3MsYz1hLmd0bU9uRmFpbHVyZTt5YihiKSYmKGEuZ3RtT25TdWNjZXNzPWZ1bmN0aW9uKCl7YmQoYil9KTt5YihjKSYmKGEuZ3RtT25GYWlsdXJlPWZ1bmN0aW9uKCl7YmQoYyl9KX07dmFyIE1GPWZ1bmN0aW9uKGEpe1YoYSxILkoudGcsY28uaWEuY2IpfTtmdW5jdGlvbiBORigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjApfTt2YXIgT0Y9W0YuRC56aV0ubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLnNsaWNlKDIpfSk7dmFyIFBGPWZ1bmN0aW9uKGEpe1UoYSxGLkQuemksYWwoOCxORikpfTtmdW5jdGlvbiBRRihhKXt9UUYuUD0iaW50ZXJuYWwuYWRkQWRzQ2xpY2tJZHMiO2Z1bmN0aW9uIFJGKGEsYil7dmFyIGM9dGhpczt9UkYucHVibGljTmFtZT0iYWRkQ29uc2VudExpc3RlbmVyIjt2YXIgU0Y9ITE7ZnVuY3Rpb24gVEYoYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2IpaWYoU0YpdHJ5e2FbYl0oKX1jYXRjaChjKXtQKDc3KX1lbHNlIGFbYl0oKX1mdW5jdGlvbiBVRihhLGIsYyl7dmFyIGQ9dGhpcyxlO2lmKCFsaChhKXx8IWhoKGIpfHwhbWgoYykpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsImZ1bmN0aW9uIiwic3RyaW5nfHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7VEYoW2Z1bmN0aW9uKCl7TChkLCJsaXN0ZW5fZGF0YV9sYXllciIsYSl9XSk7ZT15QigpLmFkZExpc3RlbmVyKGEsVGQoYix2b2lkIDAsMSksYz09PW51bGw/dm9pZCAwOmMpO3JldHVybiBlfVVGLlA9ImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiO2Z1bmN0aW9uIFZGKGEsYixjKXt9VkYucHVibGljTmFtZT0iYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBXRihhLGIsYyxkKXt9V0YucHVibGljTmFtZT0iYWRkRWxlbWVudEV2ZW50TGlzdGVuZXIiO2Z1bmN0aW9uIFhGKGEpe3JldHVybiBhLlQueGIoKX07ZnVuY3Rpb24gWUYoYSl7fVlGLnB1YmxpY05hbWU9ImFkZEV2ZW50Q2FsbGJhY2siOwp2YXIgWkY9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/YTpTdHJpbmcocmooKSl9LGJHPWZ1bmN0aW9uKGEsYil7JEYoYSwiaW5pdCIsITEpfHwoYUcoYSwiaW5pdCIsITApLGIoKSl9LCRGPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jRyhhKTtyZXR1cm4gT2IoZCxiLGMpfSxkRz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1jRyhhKSxmPU9iKGUsYixkKSxnPWMoZik7cmV0dXJuIGVbYl09Z30sYUc9ZnVuY3Rpb24oYSxiLGMpe2NHKGEpW2JdPWN9LGNHPWZ1bmN0aW9uKGEpe3ZhciBiPWtqKCJhdXRvRXZlbnRzU2V0dGluZ3MiLGZ1bmN0aW9uKCl7cmV0dXJue319KTtiLmhhc093blByb3BlcnR5KGEpfHwoYlthXT17fSk7cmV0dXJuIGJbYV19LGVHPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17ZXZlbnQ6YiwiZ3RtLmVsZW1lbnQiOmEsImd0bS5lbGVtZW50Q2xhc3NlcyI6b2QoYSwiY2xhc3NOYW1lIiksImd0bS5lbGVtZW50SWQiOmEuZm9yfHxlZChhLCJpZCIpfHwKIiIsImd0bS5lbGVtZW50VGFyZ2V0IjphLmZvcm1UYXJnZXR8fG9kKGEsInRhcmdldCIpfHwiIn07YyYmKGRbImd0bS50cmlnZ2VycyJdPWMuam9pbigiLCIpKTtkWyJndG0uZWxlbWVudFVybCJdPShhLmF0dHJpYnV0ZXMmJmEuYXR0cmlidXRlcy5mb3JtYWN0aW9uP2EuZm9ybUFjdGlvbjoiIil8fGEuYWN0aW9ufHxvZChhLCJocmVmIil8fGEuc3JjfHxhLmNvZGV8fGEuY29kZWJhc2V8fCIiO3JldHVybiBkfTsKZnVuY3Rpb24gaUcoYSl7aWYoYS5mb3JtKXt2YXIgYjtyZXR1cm4oKGI9YS5mb3JtKT09bnVsbD8wOmIudGFnTmFtZSk/YS5mb3JtOkIuZ2V0RWxlbWVudEJ5SWQoYS5mb3JtKX1yZXR1cm4gaGQoYSxbImZvcm0iXSwxMDApfTsKZnVuY3Rpb24gbUcoYSl7fW1HLlA9ImludGVybmFsLmFkZEZvcm1BYmFuZG9ubWVudExpc3RlbmVyIjtmdW5jdGlvbiBuRyhhLGIsYyxkKXt9Cm5HLlA9ImludGVybmFsLmFkZEZvcm1EYXRhIjsKZnVuY3Rpb24gc0coYSl7fXNHLlA9ImludGVybmFsLmFkZEdhU2VuZExpc3RlbmVyIjtmdW5jdGlvbiB0RyhhKXtpZighYSlyZXR1cm57fTt2YXIgYj1hLk5yO3JldHVybiBKQShiLnR5cGUsYi5pbmRleCxiLm5hbWUpfWZ1bmN0aW9uIHVHKGEpe2lmKCFhKXJldHVybnt9O3ZhciBiPXtvcmlnaW5hdGluZ0VudGl0eTp0RyhhKX07YS5wcmlvcml0eVF1ZXVlJiYoYi5wcmlvcml0eVF1ZXVlPWEucHJpb3JpdHlRdWV1ZSk7cmV0dXJuIGJ9O2Z1bmN0aW9uIENHKGEpe3ZhciBiPW1qKCJ6b25lcyIpO3JldHVybiBiP2IuZ2V0SXNBbGxvd2VkRm4od2soKSxhKTpmdW5jdGlvbigpe3JldHVybiEwfX1mdW5jdGlvbiBERygpe3ZhciBhPW1qKCJ6b25lcyIpO2EmJmEudW5yZWdpc3RlckNoaWxkKHdrKCkpfQpmdW5jdGlvbiBFRygpe2tCKHZrKCksZnVuY3Rpb24oYSl7dmFyIGI9YS5vcmlnaW5hbEV2ZW50RGF0YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSxjPW1qKCJ6b25lcyIpO3JldHVybiBjP2MuaXNBY3RpdmUod2soKSxiKTohMH0pO2hCKHZrKCksZnVuY3Rpb24oYSl7dmFyIGIsYztiPWEuZW50aXR5SWQ7Yz1hLnNlY3VyaXR5R3JvdXBzO3JldHVybiBDRyhOdW1iZXIoYS5vcmlnaW5hbEV2ZW50RGF0YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSkpKGIsYyl9KX07dmFyIEZHPWZ1bmN0aW9uKGEsYil7dGhpcy50YWdJZD1hO3RoaXMuY2Fub25pY2FsSWQ9Yn07CmZ1bmN0aW9uIEdHKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gYX1HRy5QPSJpbnRlcm5hbC5sb2FkR29vZ2xlVGFnIjtmdW5jdGlvbiBIRyhhKXtyZXR1cm4gbmV3IEtkKCIiLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYik7aWYoYyBpbnN0YW5jZW9mIEtkKXJldHVybiBuZXcgS2QoIiIsZnVuY3Rpb24oKXt2YXIgZD1PYS5hcHBseSgwLGFyZ3VtZW50cyksZT10aGlzLGY9RWQoWEYodGhpcyksbnVsbCk7Zi5ldmVudElkPWEuZXZlbnRJZDtmLnByaW9yaXR5SWQ9YS5wcmlvcml0eUlkO2Yub3JpZ2luYWxFdmVudERhdGE9YS5vcmlnaW5hbEV2ZW50RGF0YTt2YXIgZz1kLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gZS5ldmFsdWF0ZShsKX0pLGg9dGhpcy5ULndiKCk7aC51ZShmKTtyZXR1cm4gYy5OYy5hcHBseShjLFtoXS5jb25jYXQodyhnKSkpfSl9KX07ZnVuY3Rpb24gSUcoYSxiLGMpe3ZhciBkPXRoaXM7fUlHLlA9ImludGVybmFsLmFkZEdvb2dsZVRhZ1Jlc3RyaWN0aW9uIjsKZnVuY3Rpb24gUEcoYSxiKXt9UEcuUD0iaW50ZXJuYWwuYWRkSGlzdG9yeUNoYW5nZUxpc3RlbmVyIjtmdW5jdGlvbiBRRyhhLGIsYyl7fVFHLnB1YmxpY05hbWU9ImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiO2Z1bmN0aW9uIFJHKGEsYil7cmV0dXJuITB9UkcucHVibGljTmFtZT0iYWxpYXNJbldpbmRvdyI7ZnVuY3Rpb24gU0coYSxiLGMpe31TRy5QPSJpbnRlcm5hbC5hcHBlbmRSZW1vdGVDb25maWdQYXJhbWV0ZXIiO2Z1bmN0aW9uIFRHKGEpe3ZhciBiO3JldHVybiBifQpURy5wdWJsaWNOYW1lPSJjYWxsSW5XaW5kb3ciO2Z1bmN0aW9uIFVHKGEpe31VRy5wdWJsaWNOYW1lPSJjYWxsTGF0ZXIiO2Z1bmN0aW9uIFZHKGEpe31WRy5QPSJjYWxsT25Eb21SZWFkeSI7ZnVuY3Rpb24gV0coYSl7fVdHLlA9ImNhbGxPbldpbmRvd0xvYWQiO3ZhciBZRz1mdW5jdGlvbihhLGIpe3ZhciBjPW5tKFhHKXx8e30sZD1jW2FdfHx7fTtpZihkW2JdKXJldHVybiExO3ZhciBlPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZCk7ZVtiXT0hMDt2YXIgZj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMpO2ZbYV09ZTttbShYRyxmKTtyZXR1cm4hMH0sWEc9am0uYmEuaHI7ZnVuY3Rpb24gWkcoYSxiKXtpZighbGgoYSl8fCFsaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgYz1ZRyhhLGIpO3JldHVybiBjfVpHLlA9ImludGVybmFsLmNsYWltRGVzdGluYXRpb24iO2Z1bmN0aW9uICRHKGEsYil7dmFyIGM7cmV0dXJuIGN9JEcuUD0iaW50ZXJuYWwuY29tcHV0ZUd0bVBhcmFtZXRlciI7ZnVuY3Rpb24gYUgoYSxiKXt2YXIgYz10aGlzO31hSC5QPSJpbnRlcm5hbC5jb25zZW50U2NoZWR1bGVGaXJzdFRyeSI7ZnVuY3Rpb24gYkgoYSxiKXt2YXIgYz10aGlzO31iSC5QPSJpbnRlcm5hbC5jb25zZW50U2NoZWR1bGVSZXRyeSI7ZnVuY3Rpb24gY0goYSl7dmFyIGI7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO3ZhciBjPWE7aWYoIWttKGMpKXRocm93IEVycm9yKCJjb3B5RnJvbUNyb3NzQ29udGFpbmVyRGF0YSByZXF1aXJlcyB2YWxpZCBDcm9zc0NvbnRhaW5lclNjaGVtYSBrZXkuIik7dmFyIGQ9bm0oYyk7Yj1VZChkLHRoaXMuVCwxKTtyZXR1cm4gYn1jSC5QPSJpbnRlcm5hbC5jb3B5RnJvbUNyb3NzQ29udGFpbmVyRGF0YSI7ZnVuY3Rpb24gZEgoYSxiKXt2YXIgYzt2YXIgZT1VZChjLHRoaXMuVCxCaChYRih0aGlzKS5QYigpKT8yOjEpO2U9PT12b2lkIDAmJmMhPT12b2lkIDAmJlAoNDUpO3JldHVybiBlfWRILnB1YmxpY05hbWU9ImNvcHlGcm9tRGF0YUxheWVyIjsKZnVuY3Rpb24gZUgoYSl7dmFyIGI9dm9pZCAwO3JldHVybiBifWVILlA9ImludGVybmFsLmNvcHlGcm9tRGF0YUxheWVyQ2FjaGUiO2Z1bmN0aW9uIGZIKGEpe3ZhciBiO3JldHVybiBifWZILnB1YmxpY05hbWU9ImNvcHlGcm9tV2luZG93IjtmdW5jdGlvbiBnSChhKXt2YXIgYj12b2lkIDA7cmV0dXJuIFVkKGIsdGhpcy5ULDEpfWdILlA9ImludGVybmFsLmNvcHlLZXlGcm9tV2luZG93Ijt2YXIgaEg9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1jby5pYS5jYiYmZm8uSFthXT09PWJvLk1hLlVlJiYhWG8oRi5ELmthKX07dmFyIGlIPWZ1bmN0aW9uKCl7cmV0dXJuIjAifSxqSD1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJzdHJpbmciKXJldHVybiIiO3ZhciBiPVsiZ2NsaWQiLCJkY2xpZCIsIndicmFpZCIsIl9nbCJdO00oMTAyKSYmYi5wdXNoKCJnYnJhaWQiKTtyZXR1cm4gU2ooYSxiLCIwIil9O3ZhciBrSD17fSxsSD17fSxtSD17fSxuSD17fSxvSD17fSxwSD17fSxxSD17fSxySD17fSxzSD17fSx0SD17fSx1SD17fSx2SD17fSx3SD17fSx4SD17fSx5SD17fSx6SD17fSxBSD17fSxCSD17fSxDSD17fSxESD17fSxFSD17fSxGSD17fSxHSD17fSxISD17fSxJSD17fSxKSD17fSxLSD0oSkhbRi5ELmZiXT0oa0hbMl09W2hIXSxrSCksSkhbRi5ELlpmXT0obEhbMl09W2hIXSxsSCksSkhbRi5ELkppXT0obUhbMl09W2hIXSxtSCksSkhbRi5ELmdtXT0obkhbMl09W2hIXSxuSCksSkhbRi5ELmhtXT0ob0hbMl09W2hIXSxvSCksSkhbRi5ELmltXT0ocEhbMl09W2hIXSxwSCksSkhbRi5ELmptXT0ocUhbMl09W2hIXSxxSCksSkhbRi5ELmttXT0ockhbMl09W2hIXSxySCksSkhbRi5ELkJjXT0oc0hbMl09W2hIXSxzSCksSkhbRi5ELmNnXT0odEhbMl09W2hIXSx0SCksSkhbRi5ELmRnXT0odUhbMl09W2hIXSx1SCksSkhbRi5ELmVnXT0odkhbMl09W2hIXSx2SCksSkhbRi5ELmZnXT0od0hbMl09CltoSF0sd0gpLEpIW0YuRC5nZ109KHhIWzJdPVtoSF0seEgpLEpIW0YuRC5oZ109KHlIWzJdPVtoSF0seUgpLEpIW0YuRC5pZ109KHpIWzJdPVtoSF0sekgpLEpIW0YuRC5qZ109KEFIWzJdPVtoSF0sQUgpLEpIW0YuRC5sYl09KEJIWzFdPVtoSF0sQkgpLEpIW0YuRC5EZF09KENIWzFdPVtoSF0sQ0gpLEpIW0YuRC5LZF09KERIWzFdPVtoSF0sREgpLEpIW0YuRC5FZV09KEVIWzFdPVtoSF0sRUgpLEpIW0YuRC5CZl09KEZIWzFdPVtmdW5jdGlvbihhKXtyZXR1cm4gTSgxMDIpJiZoSChhKX1dLEZIKSxKSFtGLkQuVWNdPShHSFsxXT1baEhdLEdIKSxKSFtGLkQuemFdPShISFsxXT1baEhdLEhIKSxKSFtGLkQuVWFdPShJSFsxXT1baEhdLElIKSxKSCksTEg9e30sTUg9KExIW0YuRC5sYl09aUgsTEhbRi5ELkRkXT1pSCxMSFtGLkQuS2RdPWlILExIW0YuRC5FZV09aUgsTEhbRi5ELkJmXT1pSCxMSFtGLkQuVWNdPWZ1bmN0aW9uKGEpe2lmKCFDZChhKSlyZXR1cm57fTt2YXIgYj1FZChhLApudWxsKTtkZWxldGUgYi5tYXRjaF9pZDtyZXR1cm4gYn0sTEhbRi5ELnphXT1qSCxMSFtGLkQuVWFdPWpILExIKSxOSD17fSxPSD17fSxQSD0oT0hbSC5KLllhXT0oTkhbMl09W2hIXSxOSCksT0gpLFFIPXt9O3ZhciBSSD1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLkg9YTt0aGlzLk49Yjt0aGlzLlI9Yzt0aGlzLlo9ZH07UkgucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9jby5pYS5nZDphO2lmKCF0aGlzLk4uc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYihhKX0pKXJldHVybiB0aGlzLlIuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYihhKX0pP3RoaXMuWih0aGlzLkgpOnRoaXMuSH07UkgucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtyZXR1cm4gQWQodGhpcy5IKT09PSJhcnJheSJ8fENkKHRoaXMuSCk/RWQodGhpcy5ILG51bGwpOnRoaXMuSH07CnZhciBTSD1mdW5jdGlvbigpe30sVEg9ZnVuY3Rpb24oYSxiKXt0aGlzLmNvbmRpdGlvbnM9YTt0aGlzLkg9Yn0sVUg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9KChkPWEuY29uZGl0aW9uc1tiXSk9PW51bGw/dm9pZCAwOmRbMl0pfHxbXSxmLGc9KChmPWEuY29uZGl0aW9uc1tiXSk9PW51bGw/dm9pZCAwOmZbMV0pfHxbXTtyZXR1cm4gbmV3IFJIKGMsZSxnLGEuSFtiXXx8U0gpfSxWSCxXSDt2YXIgWUg9ZnVuY3Rpb24oYSl7YS5LPSEwO2EuSD0hMTtpZihJZig1Mikpe2lmKE0oNTE2KSYmWEgoKSl7dmFyIGI7YS5zZXR0aW5ncz0oYj1kYXRhLnByb2R1Y3RTZXR0aW5ncykhPW51bGw/Yjp7fTthLkg9ITB9ZWxzZXt2YXIgYzthLnNldHRpbmdzPShjPXByb2R1Y3RTZXR0aW5ncykhPW51bGw/Yzp7fX1wcm9kdWN0U2V0dGluZ3M9dm9pZCAwO2RhdGEucHJvZHVjdFNldHRpbmdzPXZvaWQgMDt2YXIgZDsoZD1GRikhPW51bGwmJmZuLk4mJk0oNTE2KSYmKGQuSD1hLkg/IjEiOiIwIil9fSwkSD1mdW5jdGlvbihhKXt2YXIgYj1aSDtiLkt8fFlIKGIpO3JldHVybiBiLnNldHRpbmdzW2FdfSxaSD1uZXcgZnVuY3Rpb24oKXt0aGlzLnNldHRpbmdzPXt9O3RoaXMuSz10aGlzLkg9ITF9OwpmdW5jdGlvbiBYSCgpe2lmKCFkYXRhLnByb2R1Y3RTZXR0aW5ncyYmIXByb2R1Y3RTZXR0aW5ncylyZXR1cm4hMDtpZighZGF0YS5wcm9kdWN0U2V0dGluZ3N8fCFwcm9kdWN0U2V0dGluZ3N8fE9iamVjdC5rZXlzKGRhdGEucHJvZHVjdFNldHRpbmdzKS5sZW5ndGghPT1PYmplY3Qua2V5cyhwcm9kdWN0U2V0dGluZ3MpLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGEgaW4gcHJvZHVjdFNldHRpbmdzKWlmKCFkYXRhLnByb2R1Y3RTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShhKXx8ZGF0YS5wcm9kdWN0U2V0dGluZ3NbYV0ucHJlQXV0b1BpaSE9PXByb2R1Y3RTZXR0aW5nc1thXS5wcmVBdXRvUGlpKXJldHVybiExO3JldHVybiEwfTt2YXIgYUk9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZXZlbnROYW1lPWI7dGhpcy5NPWM7dGhpcy5IPXt9O3RoaXMuaXNBYm9ydGVkPSExO3RoaXMudGFyZ2V0PWE7dGhpcy5tZXRhZGF0YT17fTtmb3IodmFyIGQ9Yy5ldmVudE1ldGFkYXRhfHx7fSxlPW0oT2JqZWN0LmtleXMoZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO1YodGhpcyxnLGRbZ10pfX0sUj1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7cmV0dXJuKGM9YS5IW2JdKT09bnVsbD92b2lkIDA6KGQ9Yy5nZXRWYWx1ZSk9PW51bGw/dm9pZCAwOmQuY2FsbChjLFEoYSxILkoudGcpKX0sZXU9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5rZXlzKGEuSCl9LFU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSCxlO2M9PT12b2lkIDA/ZT12b2lkIDA6KFZIIT1udWxsfHwoVkg9bmV3IFRIKEtILE1IKSksZT1VSChWSCxiLGMpKTtkW2JdPWV9OwphSS5wcm90b3R5cGUubWVyZ2VIaXREYXRhRm9yS2V5PWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2M9KGQ9dGhpcy5IW2FdKT09bnVsbD92b2lkIDA6KGU9ZC5LKT09bnVsbD92b2lkIDA6ZS5jYWxsKGQpO2lmKCFjKXJldHVybiBVKHRoaXMsYSxiKSwhMDtpZighQ2QoYykpcmV0dXJuITE7VSh0aGlzLGEsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCxjLGIpKTtyZXR1cm4hMH07dmFyIGJJPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7Zm9yKHZhciBjPW0oT2JqZWN0LmtleXMoYS5IKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWUsZj12b2lkIDAsZz12b2lkIDAsaD12b2lkIDA7YltlXT0oZj1hLkhbZV0pPT1udWxsP3ZvaWQgMDooaD0oZz1mKS5LKT09bnVsbD92b2lkIDA6aC5jYWxsKGcpfXJldHVybiBifTsKYUkucHJvdG90eXBlLmNvcHlUb0hpdERhdGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU8odGhpcy5NLGEpO2Q9PT12b2lkIDAmJihkPWIpO2lmKHpiKGQpJiZjIT09dm9pZCAwKXRyeXtkPWMoZCl9Y2F0Y2goZSl7fWQhPT12b2lkIDAmJlUodGhpcyxhLGQpfTsKdmFyIFE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm1ldGFkYXRhW2JdO2lmKGI9PT1ILkoudGcpe3ZhciBkO3JldHVybiBjPT1udWxsP3ZvaWQgMDooZD1jLkspPT1udWxsP3ZvaWQgMDpkLmNhbGwoYyl9dmFyIGU7cmV0dXJuIGM9PW51bGw/dm9pZCAwOihlPWMuZ2V0VmFsdWUpPT1udWxsP3ZvaWQgMDplLmNhbGwoYyxRKGEsSC5KLnRnKSl9LFY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubWV0YWRhdGEsZTtjPT09dm9pZCAwP2U9YzooV0ghPW51bGx8fChXSD1uZXcgVEgoUEgsUUgpKSxlPVVIKFdILGIsYykpO2RbYl09ZX0sY0k9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/e306Yjtmb3IodmFyIGM9bShPYmplY3Qua2V5cyhhLm1ldGFkYXRhKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWUsZj12b2lkIDAsZz12b2lkIDAsaD12b2lkIDA7YltlXT0oZj1hLm1ldGFkYXRhW2VdKT09bnVsbD92b2lkIDA6KGg9KGc9ZikuSyk9PW51bGw/dm9pZCAwOgpoLmNhbGwoZyl9cmV0dXJuIGJ9LGRJPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0kSChhLnRhcmdldC5kZXN0aW5hdGlvbklkKTtyZXR1cm4gZCYmZFtiXSE9PXZvaWQgMD9kW2JdOmN9LFp1PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPW5ldyBhSSgoYj09bnVsbD92b2lkIDA6Yi50YXJnZXQpfHxhLnRhcmdldCwoYj09bnVsbD92b2lkIDA6Yi5ldmVudE5hbWUpfHxhLmV2ZW50TmFtZSwoYj09bnVsbD92b2lkIDA6Yi5NKXx8YS5NKSxkPWJJKGEpLGU9bShPYmplY3Qua2V5cyhkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7VShjLGcsZFtnXSl9Zm9yKHZhciBoPWNJKGEpLGw9bShPYmplY3Qua2V5cyhoKSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7VihjLHAsaFtwXSl9Yy5pc0Fib3J0ZWQ9YS5pc0Fib3J0ZWQ7cmV0dXJuIGN9LGVJPWZ1bmN0aW9uKGEpe3ZhciBiPWEuTSxjPWIuZXZlbnRJZCxkPWIucHJpb3JpdHlJZDsKcmV0dXJuIGQ/YysiXyIrZDpTdHJpbmcoYyl9O2FJLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24oKXt2YXIgYT1vbShqbS5iYS5TaSx7fSksYj1lSSh0aGlzKSxjPXRoaXMudGFyZ2V0LmRlc3RpbmF0aW9uSWQ7YVtiXXx8KGFbYl09e30pO2FbYl1bY109dmsoKTt2YXIgZD1qbS5iYS5TaTtpZihrbShkKSl7dmFyIGU7KGU9bG0oZCkpPT1udWxsfHxlLm5vdGlmeSgpfX07YUkucHJvdG90eXBlLmNhbkJlQWNjZXB0ZWQ9ZnVuY3Rpb24oYSl7dmFyIGI9bm0oam0uYmEuU2kpO2lmKCFiKXJldHVybiEwO3ZhciBjPWJbZUkodGhpcyldO2lmKCFjKXJldHVybiEwO3ZhciBkPWNbYSE9bnVsbD9hOnRoaXMudGFyZ2V0LmRlc3RpbmF0aW9uSWRdO3JldHVybiBkPT09dm9pZCAwfHxkPT09dmsoKX07ZnVuY3Rpb24gZkkoYSl7cmV0dXJue2dldERlc3RpbmF0aW9uSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS50YXJnZXQuZGVzdGluYXRpb25JZH0sZ2V0RXZlbnROYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIGEuZXZlbnROYW1lfSxzZXRFdmVudE5hbWU6ZnVuY3Rpb24oYil7YS5ldmVudE5hbWU9Yn0sZ2V0SGl0RGF0YTpmdW5jdGlvbihiKXtyZXR1cm4gUihhLGIpfSxzZXRIaXREYXRhOmZ1bmN0aW9uKGIsYyl7VShhLGIsYyl9LHNldEhpdERhdGFJZk5vdERlZmluZWQ6ZnVuY3Rpb24oYixjKXtSKGEsYik9PT12b2lkIDAmJlUoYSxiLGMpfSxjb3B5VG9IaXREYXRhOmZ1bmN0aW9uKGIsYyl7YS5jb3B5VG9IaXREYXRhKGIsYyl9LGdldE1ldGFkYXRhOmZ1bmN0aW9uKGIpe3JldHVybiBRKGEsYil9LHNldE1ldGFkYXRhOmZ1bmN0aW9uKGIsYyl7VihhLGIsYyl9LGlzQWJvcnRlZDpmdW5jdGlvbigpe3JldHVybiBhLmlzQWJvcnRlZH0sYWJvcnQ6ZnVuY3Rpb24oKXthLmlzQWJvcnRlZD0hMH0sCmdldEZyb21FdmVudENvbnRleHQ6ZnVuY3Rpb24oYil7cmV0dXJuIE8oYS5NLGIpfSxyYjpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRIaXRLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGV1KGEpfSxnZXRNZXJnZWRWYWx1ZXM6ZnVuY3Rpb24oYil7cmV0dXJuIGEuTS5nZXRNZXJnZWRWYWx1ZXMoYiwzKX0sbWVyZ2VIaXREYXRhRm9yS2V5OmZ1bmN0aW9uKGIsYyl7cmV0dXJuIENkKGMpP2EubWVyZ2VIaXREYXRhRm9yS2V5KGIsYyk6ITF9LGFjY2VwdDpmdW5jdGlvbigpe2EuYWNjZXB0KCl9LGNhbkJlQWNjZXB0ZWQ6ZnVuY3Rpb24oYil7cmV0dXJuIGEuY2FuQmVBY2NlcHRlZChiKX19fTtmdW5jdGlvbiBnSShhLGIpe3ZhciBjO2lmKCFlaChhKXx8IWZoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3QiLCJPYmplY3R8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTt2YXIgZD1UZChiKXx8e30sZT1UZChhLHRoaXMuVCwxKS5yYigpLGY9ZS5NO2Qub21pdEV2ZW50Q29udGV4dCYmKGY9SkMobmV3IHlDKGUuTS5ldmVudElkLGUuTS5wcmlvcml0eUlkKSkpO3ZhciBnPW5ldyBhSShlLnRhcmdldCxlLmV2ZW50TmFtZSxmKTtpZighZC5vbWl0SGl0RGF0YSlmb3IodmFyIGg9YkkoZSksbD1tKE9iamVjdC5rZXlzKGgpKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtVKGcscCxoW3BdKX1pZihkLm9taXRNZXRhZGF0YSlnLm1ldGFkYXRhPXt9O2Vsc2UgZm9yKHZhciBxPWNJKGUpLHI9bShPYmplY3Qua2V5cyhxKSksdD1yLm5leHQoKTshdC5kb25lO3Q9CnIubmV4dCgpKXt2YXIgdT10LnZhbHVlO1YoZyx1LHFbdV0pfWcuaXNBYm9ydGVkPWUuaXNBYm9ydGVkO2M9VWQoZkkoZyksdGhpcy5ULDEpO3JldHVybiBjfWdJLlA9ImludGVybmFsLmNvcHlQcmVIaXQiO2Z1bmN0aW9uIGhJKGEsYil7dmFyIGM9bnVsbDtyZXR1cm4gVWQoYyx0aGlzLlQsMil9aEkucHVibGljTmFtZT0iY3JlYXRlQXJndW1lbnRzUXVldWUiO2Z1bmN0aW9uIGlJKGEpe3JldHVybiBVZChmdW5jdGlvbihjKXt2YXIgZD1TQSgpO2lmKHR5cGVvZiBjPT09ImZ1bmN0aW9uIilkKGZ1bmN0aW9uKCl7YyhmdW5jdGlvbihmLGcsaCl7dmFyIGw9ClNBKCksbj1sJiZsLmdldEJ5TmFtZSYmbC5nZXRCeU5hbWUoZik7cmV0dXJuKG5ldyBBLmdhcGx1Z2lucy5MaW5rZXIobikpLmRlY29yYXRlKGcsaCl9KX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShjKSl7dmFyIGU9U3RyaW5nKGNbMF0pLnNwbGl0KCIuIik7YltlLmxlbmd0aD09PTE/ZVswXTplWzFdXSYmZC5hcHBseShudWxsLGMpfWVsc2UgaWYoYz09PSJpc0xvYWRlZCIpcmV0dXJuISFkLmxvYWRlZH0sdGhpcy5ULDEpfWlJLlA9ImludGVybmFsLmNyZWF0ZUdhQ29tbWFuZFF1ZXVlIjtmdW5jdGlvbiBqSShhKXtyZXR1cm4gVWQoZnVuY3Rpb24oKXtpZigheWIoZS5wdXNoKSl0aHJvdyBFcnJvcigiT2JqZWN0IGF0ICIrYSsiIGluIHdpbmRvdyBpcyBub3QgYW4gYXJyYXkuIik7ZS5wdXNoLmFwcGx5KGUsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0sdGhpcy5ULApCaChYRih0aGlzKS5QYigpKT8yOjEpfWpJLnB1YmxpY05hbWU9ImNyZWF0ZVF1ZXVlIjtmdW5jdGlvbiBrSShhLGIpe3ZhciBjPW51bGw7aWYoIWxoKGEpfHwhbWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO3RyeXt2YXIgZD0oYnx8IiIpLnNwbGl0KCIiKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuImlnIi5pbmRleE9mKGUpPj0wfSkuam9pbigiIik7Yz1uZXcgUGQobmV3IFJlZ0V4cChhLGQpKX1jYXRjaChlKXt9cmV0dXJuIGN9a0kuUD0iaW50ZXJuYWwuY3JlYXRlUmVnZXgiO2Z1bmN0aW9uIGxJKGEpe31sSS5QPSJpbnRlcm5hbC5kZWNsYXJlQ29uc2VudFN0YXRlIjtmdW5jdGlvbiBtSShhKXt2YXIgYj0iIjtyZXR1cm4gYn1tSS5QPSJpbnRlcm5hbC5kZWNvZGVVcmxIdG1sRW50aXRpZXMiO2Z1bmN0aW9uIG5JKGEsYixjKXt2YXIgZDtyZXR1cm4gZH1uSS5QPSJpbnRlcm5hbC5kZWNvcmF0ZVVybFdpdGhHYUNvb2tpZXMiO2Z1bmN0aW9uIG9JKCl7fW9JLlA9ImludGVybmFsLmRlZmVyQ3VzdG9tRXZlbnRzIjtmdW5jdGlvbiBwSShhLGIpe3RyeXtyZXR1cm4gYS5jbG9zZXN0KGIpfWNhdGNoKGMpe3JldHVybiBudWxsfX07ZnVuY3Rpb24gcUkoKXt2YXIgYT1BLnNjcmVlbjtyZXR1cm57d2lkdGg6YT9hLndpZHRoOjAsaGVpZ2h0OmE/YS5oZWlnaHQ6MH19CmZ1bmN0aW9uIHJJKGEpe2lmKEIuaGlkZGVuKXJldHVybiEwO3ZhciBiPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoYi50b3A9PT1iLmJvdHRvbXx8Yi5sZWZ0PT09Yi5yaWdodHx8IUEuZ2V0Q29tcHV0ZWRTdHlsZSlyZXR1cm4hMDt2YXIgYz1BLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTtpZihjLnZpc2liaWxpdHk9PT0iaGlkZGVuIilyZXR1cm4hMDtmb3IodmFyIGQ9YSxlPWM7ZDspe2lmKGUuZGlzcGxheT09PSJub25lIilyZXR1cm4hMDt2YXIgZj1lLm9wYWNpdHksZz1lLmZpbHRlcjtpZihnKXt2YXIgaD1nLmluZGV4T2YoIm9wYWNpdHkoIik7aD49MCYmKGc9Zy5zdWJzdHJpbmcoaCs4LGcuaW5kZXhPZigiKSIsaCkpLGcuY2hhckF0KGcubGVuZ3RoLTEpPT09IiUiJiYoZz1nLnN1YnN0cmluZygwLGcubGVuZ3RoLTEpKSxmPVN0cmluZyhNYXRoLm1pbihOdW1iZXIoZyksTnVtYmVyKGYpKSkpfWlmKGYhPT12b2lkIDAmJk51bWJlcihmKTw9MClyZXR1cm4hMDsoZD1kLnBhcmVudEVsZW1lbnQpJiYKKGU9QS5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCkpfXJldHVybiExfQp2YXIgdEk9ZnVuY3Rpb24oYSl7dmFyIGI9c0koKSxjPWIuaGVpZ2h0LGQ9Yi53aWR0aCxlPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj1lLmJvdHRvbS1lLnRvcCxnPWUucmlnaHQtZS5sZWZ0O3JldHVybiBmJiZnPygxLU1hdGgubWluKChNYXRoLm1heCgwLWUubGVmdCwwKStNYXRoLm1heChlLnJpZ2h0LWQsMCkpL2csMSkpKigxLU1hdGgubWluKChNYXRoLm1heCgwLWUudG9wLDApK01hdGgubWF4KGUuYm90dG9tLWMsMCkpL2YsMSkpOjB9LHNJPWZ1bmN0aW9uKCl7dmFyIGE9Qi5ib2R5LGI9Qi5kb2N1bWVudEVsZW1lbnR8fGEmJmEucGFyZW50RWxlbWVudCxjLGQ7aWYoQi5jb21wYXRNb2RlJiZCLmNvbXBhdE1vZGUhPT0iQmFja0NvbXBhdCIpYz1iP2IuY2xpZW50SGVpZ2h0OjAsZD1iP2IuY2xpZW50V2lkdGg6MDtlbHNle3ZhciBlPWZ1bmN0aW9uKGYsZyl7cmV0dXJuIGYmJmc/TWF0aC5taW4oZixnKTpNYXRoLm1heChmLGcpfTtjPWUoYj9iLmNsaWVudEhlaWdodDowLGE/CmEuY2xpZW50SGVpZ2h0OjApO2Q9ZShiP2IuY2xpZW50V2lkdGg6MCxhP2EuY2xpZW50V2lkdGg6MCl9cmV0dXJue3dpZHRoOmQsaGVpZ2h0OmN9fTt2YXIgdkk9ZnVuY3Rpb24oYSl7aWYodUkpe3ZhciBiPWFsKDI0LGZ1bmN0aW9uKCl7cmV0dXJuW119KTtpZihhPj0wJiZhPGIubGVuZ3RoJiZiW2FdKXt2YXIgYzsoYz1iW2FdKT09bnVsbHx8Yy5kaXNjb25uZWN0KCk7YlthXT12b2lkIDB9fWVsc2UgQS5jbGVhckludGVydmFsKGEpfSx5ST1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXT4xP2NbZF09MTpjW2RdPDAmJihjW2RdPTApO2lmKHVJKXt2YXIgZT0hMTtiZChmdW5jdGlvbigpe2V8fHdJKGEsYixjKSgpfSk7cmV0dXJuIHhJKGZ1bmN0aW9uKGYpe2U9ITA7Zm9yKHZhciBnPXtIZzowfTtnLkhnPGYubGVuZ3RoO2c9e0hnOmcuSGd9LGcuSGcrKyliZChmdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24oKXthKGZbaC5IZ10pfX0oZykpfSwKYixjKX1yZXR1cm4gY2Qod0koYSxiLGMpLDFFMyl9LHdJPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGgsbCl7dmFyIG49e3RvcDowLGJvdHRvbTowLHJpZ2h0OjAsbGVmdDowLHdpZHRoOjAsaGVpZ2h0OjB9LHA9e2JvdW5kaW5nQ2xpZW50UmVjdDpoLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGludGVyc2VjdGlvblJhdGlvOmwsaW50ZXJzZWN0aW9uUmVjdDpuLGlzSW50ZXJzZWN0aW5nOmw+MCxyb290Qm91bmRzOm4sdGFyZ2V0OmgsdGltZTpOYigpfTtiZChmdW5jdGlvbigpe2EocCl9KX1mb3IodmFyIGU9W10sZj1bXSxnPTA7ZzxiLmxlbmd0aDtnKyspZS5wdXNoKDApLGYucHVzaCgtMSk7Yy5zb3J0KGZ1bmN0aW9uKGgsbCl7cmV0dXJuIGgtbH0pO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaD0wO2g8Yi5sZW5ndGg7aCsrKXt2YXIgbD10SShiW2hdKTtpZihsPmVbaF0pZm9yKDtmW2hdPGMubGVuZ3RoLTEmJmw+PWNbZltoXSsxXTspZChiW2hdLGwpLGZbaF0rKztlbHNlIGlmKGw8CmVbaF0pZm9yKDtmW2hdPj0wJiZsPD1jW2ZbaF1dOylkKGJbaF0sbCksZltoXS0tO2VbaF09bH19fSx4ST1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPW5ldyBBLkludGVyc2VjdGlvbk9ic2VydmVyKGEse3RocmVzaG9sZDpjfSksZT0wO2U8Yi5sZW5ndGg7ZSsrKWQub2JzZXJ2ZShiW2VdKTtmb3IodmFyIGY9YWwoMjQsZnVuY3Rpb24oKXtyZXR1cm5bXX0pLGc9MDtnPGYubGVuZ3RoO2crKylpZighZltnXSlyZXR1cm4gZltnXT1kLGc7cmV0dXJuIGYucHVzaChkKS0xfSx1ST0hKCFBLkludGVyc2VjdGlvbk9ic2VydmVyfHwhQS5JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTsKdmFyIEpJPWZ1bmN0aW9uKGEpe3ZhciBiLGM9KGI9YT09bnVsbD92b2lkIDA6YS5pbmNsdWRlU2VsZWN0b3IpIT1udWxsP2I6ITAsZCxlPShkPWE9PW51bGw/dm9pZCAwOmEuaW5jbHVkZVZpc2liaWxpdHkpIT1udWxsP2Q6ITAsZixnPShmPWE9PW51bGw/dm9pZCAwOmEuc2VsZWN0TXVsdGlwbGVFbGVtZW50cykhPW51bGw/ZjohMSxoPShhPT1udWxsP3ZvaWQgMDphLmV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzKXx8W10sbD0oYT09bnVsbD92b2lkIDA6YS5maWVsZEZpbHRlcnMpfHx7ZW1haWw6ITAscGhvbmU6ITEsYWRkcmVzczohMX0sbj1hbCg2LGZ1bmN0aW9uKCl7cmV0dXJue319KSxwPXpJKHtpbmNsdWRlU2VsZWN0b3I6YyxpbmNsdWRlVmlzaWJpbGl0eTplLGV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzOmgsZmllbGRGaWx0ZXJzOmx9KSxxPW5bcF07aWYocSYmTmIoKS1xLnRpbWVzdGFtcDwyMDApe3ZhciByPXEucmVzdWx0LHQ7KHIuZWxlbWVudHMuc29tZShmdW5jdGlvbihxYSl7cmV0dXJuIHFhLmRpfSl8fAooKHQ9ci5naSk9PW51bGw/MDp0LmRpKSkmJkd1KFQuVy5yaik7cmV0dXJuIHJ9dmFyIHU9QUkoKSx2PXUuc3RhdHVzLHg9W10seSx6LEM9W107aWYoTSg1NjgpKXt2YXIgRD1CSShsKSxJPUNJKHUuZWxlbWVudHMsRCksRz1ESShJKSxOPUVJKEcsaCksUz1GSShOKTt5PVMuZmlsdGVyKGZ1bmN0aW9uKHFhKXtyZXR1cm4gcWEuRGE9PT1GRC5CYn0pWzBdO2Zvcih2YXIgVz1bXSxlYT17SWc6MH07ZWEuSWc8RC5sZW5ndGg7ZWE9e0lnOmVhLklnfSxlYS5JZysrKXt2YXIgamE9Ti5maWx0ZXIoZnVuY3Rpb24ocWEpe3JldHVybiBmdW5jdGlvbihpYil7cmV0dXJuIGliLkRhPT09RFtxYS5JZ119fShlYSkpO2phLmxlbmd0aD4xMCYmKHY9IjMiLGphPWphLnNsaWNlKDAsMTApKTtXPVcuY29uY2F0KGphKX1OPVc7IWcmJlMmJihOPVMpO2Zvcih2YXIgZmE9MDtmYTxOLmxlbmd0aDtmYSsrKXt2YXIgc2E9TltmYV07c2EuRGEhPT1GRC5LaCYmQy5wdXNoKEdJKHNhLGMsZSkpfX1lbHNle2lmKGwuZW1haWwpe3ZhciBkYT0KSEkodS5lbGVtZW50cyk7eD1FSShkYSxoKTt5PUlJKHgpO2RhLmxlbmd0aD4xMCYmKHY9IjMiKX0hZyYmeSYmKHg9W3ldKTtmb3IodmFyIG1hPTA7bWE8eC5sZW5ndGg7bWErKylDLnB1c2goR0koeFttYV0sYyxlKSk7Qz1DLnNsaWNlKDAsMTApfXkmJih6PUdJKHksYyxlKSk7dmFyIFBhPXtlbGVtZW50czpDLGdpOnosc3RhdHVzOnZ9O25bcF09e3RpbWVzdGFtcDpOYigpLHJlc3VsdDpQYX07dmFyIEZhOyhQYS5lbGVtZW50cy5zb21lKGZ1bmN0aW9uKHFhKXtyZXR1cm4gcWEuZGl9KXx8KChGYT1QYS5naSk9PW51bGw/MDpGYS5kaSkpJiZHdShULlcucmopO3JldHVybiBQYX0sREk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHUuRGE9PT1GRC5LaH0pLGM9YS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHUuRGE9PT1GRC5YZH0pO2lmKGEuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1LkRhPT09RkQuY2V9KS5sZW5ndGg9PT0wJiZjLmxlbmd0aD09PQowKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdLGY9ZS5DYS5zcGxpdCgiICIpO2YubGVuZ3RoPjEmJmEucHVzaCh7Q2E6ZlswXSxEYTpGRC5YZCxlbGVtZW50OmUuZWxlbWVudCxPYzplLk9jfSx7Q2E6Zi5zbGljZSgxKS5qb2luKCIgIiksRGE6RkQuY2UsZWxlbWVudDplLmVsZW1lbnQsT2M6ZS5PY30pfWZvcih2YXIgZyxoPTAsbCxuPWZ1bmN0aW9uKHUpe3JldHVybiB1LkRhPT09RkQuZWUmJnUuQ2EubGVuZ3RoPj0zJiZ1LkNhLmxlbmd0aDw9NH0scD0wO3A8YS5sZW5ndGg7cCsrKXt2YXIgcT1hW3BdO2lmKG4ocSkmJmcmJnEuZWxlbWVudC5wYXJlbnRFbGVtZW50PT09ZyYmaDwzKXtpZihoKz0xLGwrPXEuQ2EsaD09PTMpe3ZhciByPXAtaCsxO2lmKGw9S0lbRkQuZWVdLm5hKGwpKWFbcl0uQ2E9bH19ZWxzZSBpZihoPTAsbD0iIixnPXZvaWQgMCxuKHEpKXtoKys7bD1xLkNhO3ZhciB0PXZvaWQgMDtnPSh0PXEuZWxlbWVudC5wYXJlbnRFbGVtZW50KSE9bnVsbD8KdDp2b2lkIDB9fXJldHVybiBhLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4hbih1KX0pfSxPST1mdW5jdGlvbihhLGIpe2lmKGEudmFsdWUmJkxJLmluZGV4T2YoKGEudHlwZXx8InRleHQiKS50b0xvd2VyQ2FzZSgpKSE9PS0xKXt2YXIgYz1hLmF1dG9jb21wbGV0ZTtpZihjKWZvcih2YXIgZD1jLnNwbGl0KCIgIiksZT0wO2U8ZC5sZW5ndGg7ZSsrKXt2YXIgZj1NSShhLnZhbHVlLGIsZFtlXSk7aWYoZilyZXR1cm4gZn12YXIgZyxoPVthLm5hbWUsYS5pZCwoZz1hLmFyaWFMYWJlbCkhPW51bGw/Zzp2b2lkIDAsYS5wbGFjZWhvbGRlcl0sbD1hLnBhcmVudEVsZW1lbnQ7bCYmbC50YWdOYW1lPT09IkxBQkVMIiYmaC5wdXNoKGwuaW5uZXJUZXh0KTt2YXIgbj1hLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7biYmbi50YWdOYW1lPT09IkxBQkVMIiYmIW4uaHRtbEZvciYmaC5wdXNoKG4uaW5uZXJUZXh0KTtpZihhLmlkKXt2YXIgcD1bXTt0cnl7cD1kb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsW2Zvcj0iJysKYS5pZCsnIl0nKX1jYXRjaChEKXt9Zm9yKHZhciBxPTA7cTxwLmxlbmd0aDtxKyspaC5wdXNoKHBbcV0uaW5uZXJUZXh0KX1oPWguZmlsdGVyKGZ1bmN0aW9uKEQpe3JldHVybiBEJiZELnRyaW0oKX0pO2Zvcih2YXIgcix0PTAsdT0wO3U8aC5sZW5ndGg7dSsrKXt2YXIgdj1OSShhLGIsaFt1XSk7aWYodil7dmFyIHg9dix5PXguQ2Esej14LkRhLEM9eC5YcztDPnQmJih0PUMscj17Q2E6eSxEYTp6fSl9fXJldHVybiByfX0sTkk9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdO2lmKEtJW2VdLm5lKXt2YXIgZj1LSVtlXS5uZS5leGVjKGMudHJpbSgpKTtpZihmKXt2YXIgZz1hLGg9W10sbD1nLnZhbHVlLnRyaW0oKTtsJiZoLnB1c2gobCk7aWYoZy50YWdOYW1lPT09IlNFTEVDVCIpdHJ5e3ZhciBuPWcucXVlcnlTZWxlY3RvcignW3ZhbHVlPSInK2cudmFsdWUrJyJdJykscD1uJiZuLmlubmVyVGV4dC50cmltKCk7cCYmaC5wdXNoKHApfWNhdGNoKHUpe31mb3IodmFyIHE9Cmgscj12b2lkIDAsdD0wO3Q8cS5sZW5ndGgmJiFyO3QrKylyPUtJW2VdLm5hKHFbdF0pO2lmKHIpcmV0dXJue0RhOmUsQ2E6cixYczpmWzBdLmxlbmd0aC9jLnRyaW0oKS5sZW5ndGh9fX19fSxNST1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07aWYoS0lbZV0uYXV0b2NvbXBsZXRlJiZLSVtlXS5hdXRvY29tcGxldGUuaW5kZXhPZihjKT49MCl7dmFyIGY9S0lbZV0ubmEoYS50cmltKCkpO2lmKGYpcmV0dXJue0RhOmUsQ2E6Zn19fX0sQkk9ZnVuY3Rpb24oYSl7dmFyIGI9W107YS5lbWFpbCYmYi5wdXNoKEZELkJiKTthLnBob25lJiZiLnB1c2goRkQuZWUpO2EuYWRkcmVzcyYmYi5wdXNoKEZELlhkLEZELmNlLEZELnhmLEZELnFnLEZELktoKTtyZXR1cm4gYn0sQ0k9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdLGY9ZS5lbGVtZW50LGc9ZS5PYyxoO2E6e3ZhciBsPWYsbj1iLApwPWwuaW5uZXJIVE1MO1BJLmluZGV4T2YobC50YWdOYW1lKT49MCYmKHA9bC52YWx1ZXx8cCk7aWYocCl7dmFyIHE7Yjp7Zm9yKHZhciByPXAsdD1uLHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIHY9dFt1XTtpZighS0lbdl0ubWUpe3ZhciB4PUtJW3ZdLm5hKHIudHJpbSgpKTtpZih4KXtxPXtEYTp2LENhOnh9O2JyZWFrIGJ9fX1xPXZvaWQgMH1pZihxKXtoPXE7YnJlYWsgYX1pZihQSS5pbmRleE9mKGwudGFnTmFtZSkhPT0tMSl7aD1PSShsLG4pO2JyZWFrIGF9fWg9dm9pZCAwfXZhciB5PWg7aWYoeSl7dmFyIHo9eTtjLnB1c2goe0NhOnouQ2EsRGE6ei5EYSxlbGVtZW50OmYsT2M6Z30pfX1yZXR1cm4gY30sRkk9ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYoYS5sZW5ndGg9PT0wKXJldHVybiBiO3ZhciBjPXt9LGQ7Zm9yKGQgaW4gRkQpaWYoYz17Vmc6Yy5WZ30sYy5WZz1kLEZELmhhc093blByb3BlcnR5KGMuVmcpKXt2YXIgZT1hLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIGcuRGE9PT0KRkRbZi5WZ119fShjKSk7ZS5sZW5ndGghPT0wJiYoRkRbYy5WZ109PT1GRC5CYiYmKGU9UUkoZSxmdW5jdGlvbihmKXtyZXR1cm4hUkkudGVzdChmLkNhKX0pLGU9UUkoZSxmdW5jdGlvbihmKXtyZXR1cm4gZi5lbGVtZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKT09PSJJTlBVVCJ9KSxlPVFJKGUsZnVuY3Rpb24oZil7cmV0dXJuIXJJKGYuZWxlbWVudCl9KSksYi5wdXNoKGVbMF0pKX1yZXR1cm4gYn0sR0k9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZWxlbWVudCxlPWEuT2MsZj17Q2E6YS5DYSx0eXBlOmEuRGEsdGFnTmFtZTpkLnRhZ05hbWV9O2lmKGIpe3ZhciBnLGg9U0koZCk7aWYoZz0oZT9lKyJ8IitoOmgpLnNsaWNlKDAsVEkpKWYucXVlcnlTZWxlY3Rvcj1nfWMmJihmLmlzVmlzaWJsZT0hckkoZCkpO2UmJihmLmRpPSEwKTtyZXR1cm4gZn0sekk9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7Yj1hLmluY2x1ZGVTZWxlY3RvcjtjPWEuaW5jbHVkZVZpc2liaWxpdHk7ZD1hLmV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzOwplPWEuZmllbGRGaWx0ZXJzO3ZhciBmPSEhYisiLiIrISFjO2QubGVuZ3RoJiYoZis9Ii4iK2Quam9pbigiLiIpKTtyZXR1cm4gZis9Ii4iK2UuZW1haWwrIi4iK2UucGhvbmUrIi4iK2UuYWRkcmVzc30sSUk9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGghPT0wKXt2YXIgYjtiPVFJKGEsZnVuY3Rpb24oYyl7cmV0dXJuIVJJLnRlc3QoYy5DYSl9KTtiPVFJKGIsZnVuY3Rpb24oYyl7cmV0dXJuIGMuZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0iSU5QVVQifSk7Yj1RSShiLGZ1bmN0aW9uKGMpe3JldHVybiFySShjLmVsZW1lbnQpfSk7cmV0dXJuIGJbMF19fSxFST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhLmxlbmd0aDtkKyspe2Zvcih2YXIgZT0hMCxmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBnPWJbZl07aWYoZyYmcEkoYVtkXS5lbGVtZW50LGcpKXtlPSExO2JyZWFrfX1hW2RdLkRhPT09RkQuQmImJk0oNjAyKSYmKFJJLnRlc3QoYVtkXS5DYSl8fGFbZF0uZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0KIkEiJiZhW2RdLmVsZW1lbnQuaGFzQXR0cmlidXRlKCJocmVmIikmJmFbZF0uZWxlbWVudC5nZXRBdHRyaWJ1dGUoImhyZWYiKS5pbmRleE9mKCJtYWlsdG86IikhPT0tMT9lPSExOmFbZF0uZWxlbWVudC5jbG9zZXN0KCJmb290ZXIiKSE9PW51bGwmJihlPSExKSk7ZSYmYy5wdXNoKGFbZF0pfXJldHVybiBjfSxRST1mdW5jdGlvbihhLGIpe2lmKGEubGVuZ3RoPD0xKXJldHVybiBhO3ZhciBjPWEuZmlsdGVyKGIpO3JldHVybiBjLmxlbmd0aD09PTA/YTpjfSxTST1mdW5jdGlvbihhKXtpZihhPT09Qi5ib2R5KXJldHVybiJib2R5IjtpZihhLmlkKXJldHVybiIjIithLmlkO3ZhciBiPWEucGFyZW50RWxlbWVudDtpZihiKXt2YXIgYz1TSShiKSxkPVVJKGEsYiksZT1WSShhKSsiOm50aC1jaGlsZCgiK2QrIikiO3JldHVybiBjP2MrIj4iK2U6ZX12YXIgZj1hLnBhcmVudE5vZGU7aWYoZiBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe3ZhciBnPVVJKGEsZik7cmV0dXJuIFZJKGEpKyI6bnRoLWNoaWxkKCIrCmcrIikifXJldHVybiBhLnRhZ05hbWU/YS50YWdOYW1lLnRvTG93ZXJDYXNlKCk6IiJ9LFZJPWZ1bmN0aW9uKGEpe2lmKGEuY2xhc3NMaXN0JiZhLmNsYXNzTGlzdC5sZW5ndGg+MCl7dmFyIGI9QXJyYXkuZnJvbShhLmNsYXNzTGlzdCxmdW5jdGlvbihjKXtyZXR1cm4gQ1NTLmVzY2FwZShjKX0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5sZW5ndGg+MH0pO2lmKGIubGVuZ3RoPjApcmV0dXJuIi4iK2Iuam9pbigiLiIpfXJldHVybiIifSxVST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkcmVuLGQ9MDtkPGMubGVuZ3RoO2QrKylpZihjW2RdPT09YSlyZXR1cm4gZCsxO3JldHVybiAxfSxIST1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5lbGVtZW50LGY9ZC5PYyxnPWUudGV4dENvbnRlbnQ7ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0iSU5QVVQiJiZlLnZhbHVlJiYoZz1lLnZhbHVlKTtpZihnKXt2YXIgaD0KZy5tYXRjaChLRCk7aWYoaCl7dmFyIGw9aFswXTtMRChsKXx8Yi5wdXNoKHtlbGVtZW50OmUsQ2E6bCxEYTpGRC5CYixPYzpmfSl9fX1yZXR1cm4gYn0sQUk9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPUIuYm9keTtpZighYilyZXR1cm57ZWxlbWVudHM6YSxzdGF0dXM6IjQifTt2YXIgYz1XSShiLDAsIiIsYSk7cmV0dXJue2VsZW1lbnRzOmEsc3RhdHVzOmN9fSxXST1mdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGU9YS5xdWVyeVNlbGVjdG9yQWxsKCIqIiksZj1lLmxlbmd0aD4xRTQ/IjIiOiIxIixnPTA7ZzxNYXRoLm1pbihlLmxlbmd0aCwxRTQpO2crKyl7dmFyIGg9ZVtnXTtpZighKFhJLmluZGV4T2YoaC50YWdOYW1lLnRvVXBwZXJDYXNlKCkpPj0wKSYmaC5jaGlsZHJlbiBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uKXt2YXIgbD0hMTtpZihNKDU4MikmJmguc2hhZG93Um9vdCYmYjwxKXt2YXIgbj1TSShoKTtXSShoLnNoYWRvd1Jvb3QsYisxLGM/YysifCIrbjpuLGQpPT09IjIiJiYKKGY9IjIiKTtsPSEwfXZhciBwPSExO2lmKCFsKWZvcih2YXIgcT0wO3E8TWF0aC5taW4oaC5jaGlsZEVsZW1lbnRDb3VudCwxRTQpO3ErKylpZighKFlJLmluZGV4T2YoaC5jaGlsZHJlbltxXS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpPj0wKSl7cD0hMDticmVha30oIXAmJiFsfHxNKDU2OCkmJlBJLmluZGV4T2YoaC50YWdOYW1lKSE9PS0xKSYmZC5wdXNoKHtlbGVtZW50OmgsT2M6Yj4wP2M6dm9pZCAwfSl9fXJldHVybiBmfSxSST0vc3VwcG9ydHxub3JlcGx5L2ksWEk9IlNDUklQVCBTVFlMRSBJTUcgU1ZHIFBBVEggQlIgTk9TQ1JJUFQgVEVYVEFSRUEiLnNwbGl0KCIgIiksWUk9WyJCUiJdLFRJPU5mKDcwLDUwKSxQST1bIklOUFVUIiwiU0VMRUNUIl0sTEk9InRleHQgdGVsIHNlYXJjaCBudW1iZXIgaGlkZGVuIGVtYWlsIHNlbGVjdC1vbmUiLnNwbGl0KCIgIiksWkk9UmVnRXhwKCJwaG9uZXxtb2JpbGV8Y29udGFjdC4/bnVtYmVyfHRlbGVmb25udW1tZXJ8dGVsZWZvbm98dGVsXHUwMGU5Zm9ub3x0ZWxmaXhlfFx1OTZmYlx1OGE3MXx0ZWxlZm9uZXx0ZWxlbW92ZWx8XHUwNDQyXHUwNDM1XHUwNDNiXHUwNDM1XHUwNDQ0XHUwNDNlXHUwNDNkfFx1MDkyZVx1MDk0Ylx1MDkyY1x1MDkzZVx1MDkwN1x1MDkzMnxcdTc1MzVcdThiZGR8XHU2MjRiXHU2NzNhXHU1M2Y3fFx1MGQyZVx1MGQ0YVx1MGQyY1x1MGQ0OFx1MGQzMlx1MGQ0ZFx1MjAwZHwoXnxbLV9dKXRlbFstX10/KFxcZCspKihcXFsuKlxcXSkqJHwoPzpcdWM4MDRcdWQ2NTR8XHVkNTc4XHViNGRjXHVkM2YwfFx1ZDczNFx1YjMwMFx1ZDNmMHxcdWQ3MzRcdWIzMDBcdWM4MDRcdWQ2NTQpKD86Lj9cdWJjODhcdWQ2MzgpP3woXFxifF98XFwqKXRlbGVmb24oXFxifF98XFwqKXx0ZWxlcG9ufHBvbnNlbHwobm9tb3J8bm9cXC4/KS4/KGhwfGhhbmRwaG9uZSkiLAoiaSIpLCRJPVJlZ0V4cCgiXm5hbWV8ZnVsbC4/bmFtZXx5b3VyLj9uYW1lfGN1c3RvbWVyLj9uYW1lfGJpbGwuP25hbWV8c2hpcC4/bmFtZXxuYW1lLipmaXJzdC4qbGFzdHxmaXJzdGFuZGxhc3RuYW1lfGNvbnRhY3QuPyhuYW1lfHBlcnNvbil8bm9tYnJlLip5LiphcGVsbGlkb3N8Xm5vbSg/IVthLXpBLVpdKXxcdTMwNGFcdTU0MGRcdTUyNGR8XHU2YzBmXHU1NDBkfF5ub21lfFx1MDY0Nlx1MDYyN1x1MDY0NS4qXHUwNjQ2XHUwNjI3XHUwNjQ1LipcdTA2MmVcdTA2MjdcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmZcdTA2YWZcdTA2Y2N8XHU1OWQzXFxzKlx1NTQwZHxcdTA0M2FcdTA0M2VcdTA0M2RcdTA0NDJcdTA0MzBcdTA0M2FcdTA0NDJcdTA0M2RcdTA0M2VcdTA0MzUuP1x1MDQzYlx1MDQzOFx1MDQ0Nlx1MDQzZXwoXFxifF98XFwqKWFkW1x1MDEzMV0/IHNveWFkW1x1MDEzMV0/KFxcYnxffFxcKil8XHVjMTMxXHViYTg1fG5hbWEuPyhsZW5na2FwfHBlbmVyaW1hfGthbXUpIiwKImkiKSxhSj1SZWdFeHAoImZpcnN0LipuYW1lfGluaXRpYWxzfGZuYW1lfGZpcnN0JHxnaXZlbi4qbmFtZXx2b3JuYW1lfG5vbWJyZXxmb3JlbmFtZXxwclx1MDBlOW5vbXxwcmVub218XHU1NDBkfG5vbWV8XHUwNDE4XHUwNDNjXHUwNDRmfFx1MDY0Nlx1MDYyN1x1MDY0NXxcdWM3NzRcdWI5ODR8XHUwZDJhXHUwZDQ3XHUwZDMwXHUwZDRkfChcXGJ8X3xcXCopKGlzaW18YWR8YWQoaXxcdTAxMzF8aW5penxcdTAxMzFuXHUwMTMxeik/KShcXGJ8X3xcXCopfFx1MDkyOFx1MDkzZVx1MDkyZXxuYW1hIGRlcGFuIiwiaSIpLGJKPVJlZ0V4cCgibGFzdC4qbmFtZXxsbmFtZXxzdXJuYW1lKD8hXFxkKXxsYXN0JHxzZWNvbmRuYW1lfGZhbWlseS4qbmFtZXxuYWNobmFtZXxhcGVsbGlkb3M/fGZhbWlsbGV8Xm5vbSg/IVthLXpBLVpdKXxjb2dub21lfFx1NTlkM3xhcGVsaWRvc3xzdXJlbmFtZXxzb2JyZW5vbWV8XHUwNDI0XHUwNDMwXHUwNDNjXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDRmfFx1MDY0Nlx1MDYyN1x1MDY0NS4qXHUwNjJlXHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJmXHUwNmFmXHUwNmNjfFx1MDkwOVx1MDkyYVx1MDkyOFx1MDkzZVx1MDkyZXxcdTBkMmVcdTBkMzFcdTBkNDFcdTBkMmFcdTBkNDdcdTBkMzBcdTBkNGR8KFxcYnxffFxcKikoc295aXNpbXxzb3lhZChpfFx1MDEzMXxpbml6fFx1MDEzMW5cdTAxMzF6KT8pKFxcYnxffFxcKil8XFxiXHVjMTMxKD86W15cdWJhODVdfFxcYil8bmFtYSBiZWxha2FuZyIsCiJpIiksY0o9UmVnRXhwKCJjb3VudHJ5fGNvdW50cmllc3xwYVx1MDBlZHN8cGFpc3woXFxifF8pbGFuZChcXGJ8XykoPyEuKihtYXJrLiopKXwoXnxbXihcdTUxNjV8XHU1MWZhKV0pXHU1NmZkfFx1NTZmZFx1NWJiNnxcdWFkNmRcdWFjMDB8XHViMDk4XHViNzdjfChcXGJ8XykoXHUwMGZjbGtlfHVsY2V8dWxrZSkoXFxifF8pfFx1MDZhOVx1MDYzNFx1MDY0OFx1MDYzMXxuZWdhcmEiLCJpIiksZEo9UmVnRXhwKCIoXnxbXi5dKXppcHxwb3N0YWx8cG9zdC4qY29kZXxwY29kZXxwaW4uP2NvZGV8cG9zdGxlaXR6YWhsfFxcYmNwXFxifFxcYmNkcFxcYnxcXGJjYXBcXGJ8XHU5MGY1XHU0ZmJmXHU3NTZhXHU1M2Y3fGNvZGlnb3xjb2Rwb3N8XFxiY2VwXFxifFx1MDQxZlx1MDQzZVx1MDQ0N1x1MDQ0Mlx1MDQzZVx1MDQzMlx1MDQ0Ylx1MDQzOS4/XHUwNDE4XHUwNDNkXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDQxfFx1MDkyYVx1MDkzZlx1MDkyOC4/XHUwOTE1XHUwOTRiXHUwOTIxfFx1MGQyYVx1MGQzZlx1MGQyOFx1MGQ0ZFx1MjAwZFx1MGQxNVx1MGQ0Ylx1MGQyMVx1MGQ0ZHxcdTkwYWVcdTY1M2ZcdTdmMTZcdTc4MDF8XHU5MGFlXHU3ZjE2fFx1OTBmNVx1OTA1ZVx1NTM0MFx1ODY1ZnwoXFxifF8pcG9zdGEga29kdShcXGJ8Xyl8XHVjNmIwXHVkM2I4Lj9cdWJjODhcdWQ2Mzh8a29kZS4/cG9zIiwKImkiKSxlSj17fSxLST0oZUpbRkQuQmJdPXttZTohMSxuYTpNRH0sZUpbRkQuZWVdPXttZTohMCxhdXRvY29tcGxldGU6WyJ0ZWwiLCJ0ZWwtbmF0aW9uYWwiLCJ0ZWwtbG9jYWwiXSxuZTpaSSxuYTpmdW5jdGlvbihhKXtyZXR1cm4gR0QoYSwhMCl9fSxlSltGRC5LaF09e21lOiEwLGF1dG9jb21wbGV0ZTpbIm5hbWUiLCJjYy1uYW1lIl0sbmU6JEksbmE6TkR9LGVKW0ZELlhkXT17bWU6ITAsYXV0b2NvbXBsZXRlOlsiZ2l2ZW4tbmFtZSIsImNjLWdpdmVuLW5hbWUiXSxuZTphSixuYTpORH0sZUpbRkQuY2VdPXttZTohMCxhdXRvY29tcGxldGU6WyJmYW1pbHktbmFtZSIsImNjLWZhbWlseS1uYW1lIl0sbmU6YkosbmE6TkR9LGVKW0ZELnhmXT17bWU6ITAsYXV0b2NvbXBsZXRlOlsiY291bnRyeSIsImNvdW50cnktbmFtZSJdLG5lOmNKLG5hOk5EfSxlSltGRC5xZ109e21lOiEwLGF1dG9jb21wbGV0ZTpbInBvc3RhbC1jb2RlIl0sbmU6ZEosbmE6SUR9LGVKKTtmdW5jdGlvbiBmSihhKXt2YXIgYjtMKHRoaXMsImRldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEiLCJhdXRvIik7dmFyIGM9VGQoYSl8fHt9LGQ9Skkoe2luY2x1ZGVTZWxlY3RvcjohIWMuaW5jbHVkZVNlbGVjdG9yLGluY2x1ZGVWaXNpYmlsaXR5OiEhYy5pbmNsdWRlVmlzaWJpbGl0eSxleGNsdWRlRWxlbWVudFNlbGVjdG9yczpjLmV4Y2x1ZGVFbGVtZW50U2VsZWN0b3JzLGZpZWxkRmlsdGVyczpjLmZpZWxkRmlsdGVycyxzZWxlY3RNdWx0aXBsZUVsZW1lbnRzOiEhYy5zZWxlY3RNdWx0aXBsZUVsZW1lbnRzfSk7Yj1uZXcga2I7dmFyIGU9bmV3IEdkO2Iuc2V0KCJlbGVtZW50cyIsZSk7Zm9yKHZhciBmPWQuZWxlbWVudHMsZz0wO2c8Zi5sZW5ndGg7ZysrKWUucHVzaChnSihmW2ddKSk7ZC5naSE9PXZvaWQgMCYmYi5zZXQoInByZWZlcnJlZEVtYWlsRWxlbWVudCIsCmdKKGQuZ2kpKTtiLnNldCgic3RhdHVzIixkLnN0YXR1cyk7aWYoYy5yZWFkRnJvbURhdGFMYXllcil7aEooZSxjKTt2YXIgaD1QRCgpLGw9aC5zdDtiLnNldCgiZGF0YUxheWVyU2VhcmNoVGltZSIsaC52dCk7Yi5zZXQoImRhdGFMYXllclNlYXJjaENvdW50IixsKX1yZXR1cm4gYn0KdmFyIGlKPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIEZELkJiOnJldHVybiJlbWFpbCI7Y2FzZSBGRC5lZTpyZXR1cm4icGhvbmVfbnVtYmVyIjtjYXNlIEZELlhkOnJldHVybiJmaXJzdF9uYW1lIjtjYXNlIEZELmNlOnJldHVybiJsYXN0X25hbWUiO2Nhc2UgRkQudGo6cmV0dXJuInN0cmVldCI7Y2FzZSBGRC5saTpyZXR1cm4iY2l0eSI7Y2FzZSBGRC5qajpyZXR1cm4icmVnaW9uIjtjYXNlIEZELnFnOnJldHVybiJwb3N0YWxfY29kZSI7Y2FzZSBGRC54ZjpyZXR1cm4iY291bnRyeSJ9fSxqSj1mdW5jdGlvbihhKXt2YXIgYj1uZXcga2IsYz1pSihhLkRhKTtjIT09dm9pZCAwJiZiLnNldCgidHlwZSIsYyk7Yi5zZXQoInVzZXJEYXRhIixhLkNhKTtiLnNldCgidGFnTmFtZSIsIkRMWVIiKTtyZXR1cm4gYn0saEo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1RRCgpO2lmKE0oNTY4KSlmb3IodmFyIGQ9bmV3IFNldChhLmhjKCkubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmdldCgidHlwZSIpfSkpLAplPW0oYyksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPW0oZi52YWx1ZSksaD1nLm5leHQoKS52YWx1ZSxsPWcubmV4dCgpLnZhbHVlLG49aCxwPWw7aWYoYi5zZWxlY3RNdWx0aXBsZUVsZW1lbnRzKWEucHVzaChqSihwKSk7ZWxzZXt2YXIgcT1pSihuKTtxJiYhZC5oYXMocSkmJmEucHVzaChqSihwKSl9fWVsc2UgYy5oYXMoRkQuQmIpJiYoYi5zZWxlY3RNdWx0aXBsZUVsZW1lbnRzfHxhLmxlbmd0aCgpPT09MCkmJmEucHVzaChqSihjLmdldChGRC5CYikpKX0sZ0o9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGtiO2Iuc2V0KCJ1c2VyRGF0YSIsYS5DYSk7Yi5zZXQoInRhZ05hbWUiLGEudGFnTmFtZSk7YS5xdWVyeVNlbGVjdG9yIT09dm9pZCAwJiZiLnNldCgicXVlcnlTZWxlY3RvciIsYS5xdWVyeVNlbGVjdG9yKTthLmlzVmlzaWJsZSE9PXZvaWQgMCYmYi5zZXQoImlzVmlzaWJsZSIsYS5pc1Zpc2libGUpO2lmKE0oNTY4KSl7dmFyIGM9aUooYS50eXBlKTtjIT09CnZvaWQgMCYmYi5zZXQoInR5cGUiLGMpfWVsc2Ugc3dpdGNoKGEudHlwZSl7Y2FzZSBGRC5CYjpiLnNldCgidHlwZSIsImVtYWlsIil9cmV0dXJuIGJ9O2ZKLlA9ImludGVybmFsLmRldGVjdFVzZXJQcm92aWRlZERhdGEiOwpmdW5jdGlvbiBtSihhLGIpe3JldHVybiBmfW1KLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uQ2xpY2siOwp2YXIgbko9ZnVuY3Rpb24oKXt0aGlzLkg9W107dGhpcy5OPSEhQS5NdXRhdGlvbk9ic2VydmVyfTtuSi5wcm90b3R5cGUuSz1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2lmKHRoaXMuSC5sZW5ndGg9PT0wKXt2YXIgYz1mdW5jdGlvbigpe3ZhciBkPUIuYm9keTtpZihkKWlmKGIuTikobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGY9MDtmPGIuSC5sZW5ndGg7ZisrKWJkKGIuSFtmXSl9KSkub2JzZXJ2ZShkLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2Vsc2V7dmFyIGU9ITE7JGMoZCwiRE9NTm9kZUluc2VydGVkIixmdW5jdGlvbigpe2V8fChlPSEwLGJkKGZ1bmN0aW9uKCl7ZT0hMTtmb3IodmFyIGY9MDtmPGIuSC5sZW5ndGg7ZisrKWJkKGIuSFtmXSl9KSl9KX19O0IuYm9keT9jKCk6YmQoYyl9dGhpcy5ILnB1c2goYSl9O25KLnByb3RvdHlwZS5SPWZ1bmN0aW9uKGEpe2lmKHRoaXMuSClmb3IodmFyIGI9MDtiPHRoaXMuSC5sZW5ndGg7YisrKXRoaXMuSFtiXT09PQphJiZ0aGlzLkguc3BsaWNlKGIsMSl9O3ZhciBvSj1uZXcgbko7CmZ1bmN0aW9uIHRKKGEsYil7cmV0dXJuIHB9dEouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25FbGVtZW50VmlzaWJpbGl0eSI7ZnVuY3Rpb24gdUooKXt9dUouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25FcnJvciI7CmZ1bmN0aW9uIEFKKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gZH1BSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1JbnRlcmFjdGlvbiI7CmZ1bmN0aW9uIEZKKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gZn1GSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1TdWJtaXQiOwpmdW5jdGlvbiBLSigpe3ZhciBhPXRoaXM7fUtKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uR2FTZW5kIjsKdmFyIE1KPWZ1bmN0aW9uKGEsYixjLGQpe2M9Yz09PXZvaWQgMD97fTpjO2Q9ZD09PXZvaWQgMD9bXTpkO3ZhciBlPSIiK2I7aWYoY1tlXSljW2VdLnB1c2goYSk7ZWxzZXt2YXIgZj1bYV07Y1tlXT1mO3ZhciBnPUxKKCJndG0uaGlzdG9yeUNoYW5nZS12MiIpLGg9LTE7ZC5wdXNoKGZ1bmN0aW9uKGwpe2g+PTAmJkEuY2xlYXJUaW1lb3V0KGgpO2I/aD1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtnKGwsZik7aD0tMX0sYik6ZyhsLGYpfSl9fSxMSj1mdW5jdGlvbihhKXt2YXIgYj1BLmxvY2F0aW9uLmhyZWYsYz17c291cmNlOm51bGwsc3RhdGU6QS5oaXN0b3J5LnN0YXRlfHxudWxsLHVybDpPaihSaihiKSksa2I6TGooUmooYiksImZyYWdtZW50Iil9O3JldHVybiBmdW5jdGlvbihkLGUpe3ZhciBmPWMsZz17fTtnW2Yuc291cmNlXT0hMDtnW2Quc291cmNlXT0hMDtpZighZy5wb3BzdGF0ZXx8IWcuaGFzaGNoYW5nZXx8Zi5rYiE9PWQua2Ipe3ZhciBoPXtldmVudDphLCJndG0uaGlzdG9yeUNoYW5nZVNvdXJjZSI6ZC5zb3VyY2UsCiJndG0ub2xkVXJsRnJhZ21lbnQiOmMua2IsImd0bS5uZXdVcmxGcmFnbWVudCI6ZC5rYiwiZ3RtLm9sZEhpc3RvcnlTdGF0ZSI6Yy5zdGF0ZSwiZ3RtLm5ld0hpc3RvcnlTdGF0ZSI6ZC5zdGF0ZSwiZ3RtLm9sZFVybCI6Yy51cmwsImd0bS5uZXdVcmwiOmQudXJsfTtlJiYoaFsiZ3RtLnRyaWdnZXJzIl09ZS5qb2luKCIsIikpO2M9ZDt1RShoKX19fSxOSj1mdW5jdGlvbihhLGIpe3ZhciBjPUEuaGlzdG9yeSxkPWNbYV07aWYoeWIoZCkpdHJ5e2NbYV09ZnVuY3Rpb24oZSxmLGcpe2QuYXBwbHkoYyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSk7dmFyIGg9QS5sb2NhdGlvbi5ocmVmO2Ioe3NvdXJjZTphLHN0YXRlOmUsdXJsOk9qKFJqKGgpKSxrYjpMaihSaihoKSwiZnJhZ21lbnQiKX0pfX1jYXRjaChlKXt9fSxQSj1mdW5jdGlvbihhKXtBLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixmdW5jdGlvbihiKXt2YXIgYz1PSihiKTthKHtzb3VyY2U6InBvcHN0YXRlIixzdGF0ZTpiLnN0YXRlLAp1cmw6T2ooUmooYykpLGtiOkxqKFJqKGMpLCJmcmFnbWVudCIpfSl9KX0sUUo9ZnVuY3Rpb24oYSl7QS5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbihiKXt2YXIgYz1PSihiKTthKHtzb3VyY2U6Imhhc2hjaGFuZ2UiLHN0YXRlOm51bGwsdXJsOk9qKFJqKGMpKSxrYjpMaihSaihjKSwiZnJhZ21lbnQiKX0pfSl9LE9KPWZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuKChiPWEudGFyZ2V0KT09bnVsbD92b2lkIDA6KGM9Yi5sb2NhdGlvbik9PW51bGw/dm9pZCAwOmMuaHJlZil8fEEubG9jYXRpb24uaHJlZn07CmZ1bmN0aW9uIFJKKGEsYil7dmFyIGM9dGhpcztpZighZmgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdHx1bmRlZmluZWQiLCJhbnkiXSxhcmd1bWVudHMpO1RGKFtmdW5jdGlvbigpe0woYywiZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cyIpfV0pO3ZhciBkPWEmJmEuZ2V0KCJ1c2VWMkV2ZW50TmFtZSIpPyJlaGwiOiJobCIsZT1OdW1iZXIoYSYmYS5nZXQoImludGVydmFsIikpO2U+MCYmaXNGaW5pdGUoZSl8fChlPTApO3ZhciBmO2lmKCEkRihkLCJpbml0IiwhMSkpe3ZhciBnPXt9LGg9W10sbDtkPT09ImVobCI/KGw9ZnVuY3Rpb24ocCl7Zm9yKHZhciBxPTA7cTxoLmxlbmd0aDtxKyspaFtxXShwKX0sZj1aRihiKSxNSihmLGUsZyxoKSxhRyhkLCJyZWciLGZ1bmN0aW9uKHAscSl7TUoocCxxLGcsaCl9KSk6bD1MSigiZ3RtLmhpc3RvcnlDaGFuZ2UiKTsKUUoobCk7UEoobCk7TkooInB1c2hTdGF0ZSIsbCk7TkooInJlcGxhY2VTdGF0ZSIsbCk7YUcoZCwiaW5pdCIsITApfWVsc2UgaWYoZD09PSJlaGwiKXt2YXIgbj0kRihkLCJyZWciKTtuJiYoZj1aRihiKSxuKGYsZSkpfWQ9PT0iaGwiJiYoZj12b2lkIDApO3JldHVybiBmfVJKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uSGlzdG9yeUNoYW5nZSI7dmFyIFNKPVsiaHR0cDovLyIsImh0dHBzOi8vIiwiamF2YXNjcmlwdDoiLCJmaWxlOi8vIl07CnZhciBUSj1mdW5jdGlvbihhLGIpe2lmKGEud2hpY2g9PT0yfHxhLmN0cmxLZXl8fGEuc2hpZnRLZXl8fGEuYWx0S2V5fHxhLm1ldGFLZXkpcmV0dXJuITE7dmFyIGM9b2QoYiwiaHJlZiIpO2lmKGMuaW5kZXhPZigiOiIpIT09LTEmJiFTSi5zb21lKGZ1bmN0aW9uKGgpe3JldHVybiBTYihjLGgpfSkpcmV0dXJuITE7dmFyIGQ9Yy5pbmRleE9mKCIjIiksZT1vZChiLCJ0YXJnZXQiKTtpZihlJiZlIT09Il9zZWxmIiYmZSE9PSJfcGFyZW50IiYmZSE9PSJfdG9wInx8ZD09PTApcmV0dXJuITE7aWYoZD4wKXt2YXIgZj1PaihSaihjKSksZz1PaihSaihBLmxvY2F0aW9uLmhyZWYpKTtyZXR1cm4gZiE9PWd9cmV0dXJuITB9LFVKPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPUxqKFJqKChiLmF0dHJpYnV0ZXMmJmIuYXR0cmlidXRlcy5mb3JtYWN0aW9uP2IuZm9ybUFjdGlvbjoiIil8fGIuYWN0aW9ufHxvZChiLCJocmVmIil8fGIuc3JjfHxiLmNvZGV8fGIuY29kZWJhc2V8fCIiKSwiaG9zdCIpLApkPTA7ZDxhLmxlbmd0aDtkKyspdHJ5e2lmKChuZXcgUmVnRXhwKGFbZF0pKS50ZXN0KGMpKXJldHVybiExfWNhdGNoKGUpe31yZXR1cm4hMH0sVko9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe3ZhciBkPWMudGFyZ2V0O2lmKGQmJmMud2hpY2ghPT0zJiYhKGMuSHx8Yy50aW1lU3RhbXAmJmMudGltZVN0YW1wPT09Yikpe2I9Yy50aW1lU3RhbXA7ZD1oZChkLFsiYSIsImFyZWEiXSwxMDApO2lmKCFkKXJldHVybiBjLnJldHVyblZhbHVlO3ZhciBlPWMuZGVmYXVsdFByZXZlbnRlZHx8Yy5yZXR1cm5WYWx1ZT09PSExLGY9JEYoImxjbCIsZT8ibnYubXd0IjoibXd0IiwwKSxnO2c9ZT8kRigibGNsIiwibnYuaWRzIixbXSk6JEYoImxjbCIsImlkcyIsW10pO2Zvcih2YXIgaD1bXSxsPTA7bDxnLmxlbmd0aDtsKyspe3ZhciBuPWdbbF0scD0kRigibGNsIiwiYWZmLm1hcCIse30pW25dO3AmJiFVSihwLGQpfHxoLnB1c2gobil9aWYoaC5sZW5ndGgpe3ZhciBxPVRKKGMsZCkscj1lRyhkLCJndG0ubGlua0NsaWNrIiwKaCk7clsiZ3RtLmVsZW1lbnRUZXh0Il09ZmQoZCk7clsiZ3RtLndpbGxPcGVuSW5OZXdXaW5kb3ciXT0hcTtpZihxJiYhZSYmZiYmZC5ocmVmKXt2YXIgdD0hIUNiKFN0cmluZyhvZChkLCJyZWwiKXx8IiIpLnNwbGl0KCIgIiksZnVuY3Rpb24oeSl7cmV0dXJuIHkudG9Mb3dlckNhc2UoKT09PSJub3JlZmVycmVyIn0pLHU9QVsob2QoZCwidGFyZ2V0Iil8fCJfc2VsZiIpLnN1YnN0cmluZygxKV0sdj0hMCx4PXRFKGZ1bmN0aW9uKCl7dmFyIHk7aWYoeT12JiZ1KXt2YXIgejthOmlmKHQpe3ZhciBDO3RyeXtDPW5ldyBNb3VzZUV2ZW50KGMudHlwZSx7YnViYmxlczohMH0pfWNhdGNoKEQpe2lmKCFCLmNyZWF0ZUV2ZW50KXt6PSExO2JyZWFrIGF9Qz1CLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO0MuaW5pdEV2ZW50KGMudHlwZSwhMCwhMCl9Qy5IPSEwO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoQyk7ej0hMH1lbHNlIHo9ITE7eT0hen15JiYodS5sb2NhdGlvbi5ocmVmPW9kKGQsCiJocmVmIikpfSxmKTtpZihpRShyLHgsZikpdj0hMTtlbHNlIHJldHVybiBjLnByZXZlbnREZWZhdWx0JiZjLnByZXZlbnREZWZhdWx0KCksYy5yZXR1cm5WYWx1ZT0hMX1lbHNlIHNFKHIsZnVuY3Rpb24oKXt9LGZ8fDJFMyk7cmV0dXJuITB9fX12YXIgYj0wOyRjKEIsImNsaWNrIixhLCExKTskYyhCLCJhdXhjbGljayIsYSwhMSl9OwpmdW5jdGlvbiBXSihhLGIpe3ZhciBjPXRoaXM7aWYoIWZoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3R8dW5kZWZpbmVkIiwiYW55Il0sYXJndW1lbnRzKTt2YXIgZD1UZChhKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyIsZCl9XSk7dmFyIGU9ZCYmISFkLndhaXRGb3JUYWdzLGY9ZCYmISFkLmNoZWNrVmFsaWRhdGlvbixnPWQ/ZC5hZmZpbGlhdGVEb21haW5zOnZvaWQgMCxoPVpGKGIpO2lmKGUpe3ZhciBsPU51bWJlcihkLndhaXRGb3JUYWdzVGltZW91dCk7bD4wJiZpc0Zpbml0ZShsKXx8KGw9MkUzKTt2YXIgbj1mdW5jdGlvbihxKXtyZXR1cm4gTWF0aC5tYXgobCxxKX07ZEcoImxjbCIsIm13dCIsbiwwKTtmfHxkRygibGNsIiwibnYubXd0IixuLDApfXZhciBwPWZ1bmN0aW9uKHEpe3EucHVzaChoKTsKcmV0dXJuIHF9O2RHKCJsY2wiLCJpZHMiLHAsW10pO2Z8fGRHKCJsY2wiLCJudi5pZHMiLHAsW10pO2cmJmRHKCJsY2wiLCJhZmYubWFwIixmdW5jdGlvbihxKXtxW2hdPWc7cmV0dXJuIHF9LHt9KTskRigibGNsIiwiaW5pdCIsITEpfHwoVkooKSxhRygibGNsIiwiaW5pdCIsITApKTtyZXR1cm4gaH1XSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayI7CnZhciBYSj1mdW5jdGlvbihhKXtyZXR1cm4gJEYoInNkbCIsYSx7fSl9LFlKPWZ1bmN0aW9uKGEsYixjKXtpZihiKXt2YXIgZD1BcnJheS5pc0FycmF5KGEpP2E6W2FdO2RHKCJzZGwiLGMsZnVuY3Rpb24oZSl7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPVN0cmluZyhkW2ZdKTtlLmhhc093blByb3BlcnR5KGcpfHwoZVtnXT1bXSk7ZVtnXS5wdXNoKGIpfXJldHVybiBlfSx7fSl9fSxhSz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtaSihhLGIpOyRKKGMsITApfXJldHVybiBjfSxiSz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtoP2c9QS5zZXRUaW1lb3V0KGMsZSk6KGc9MCxaSihhLGIpLCRKKGQpKTtoPSExfWZ1bmN0aW9uIGQoKXtmJiZiKCk7Zz9oPSEwOihnPUEuc2V0VGltZW91dChjLGUpLGFHKCJzZGwiLCJwZW5kaW5nIiwhMCkpfXZhciBlPTI1MCxmPSExO0Iuc2Nyb2xsaW5nRWxlbWVudCYmQi5kb2N1bWVudEVsZW1lbnQmJihlPTUwLGY9ITApO3ZhciBnPQowLGg9ITE7cmV0dXJuIGR9LCRKPWZ1bmN0aW9uKGEsYil7JEYoInNkbCIsImluaXQiLCExKSYmIWNLKCkmJihiP2FkKEEsInNjcm9sbGVuZCIsYSk6YWQoQSwic2Nyb2xsIixhKSxhZChBLCJyZXNpemUiLGEpLGFHKCJzZGwiLCJpbml0IiwhMSkpfSxaSj1mdW5jdGlvbihhLGIpe3ZhciBjPWIoKSxkPWMuZGVwdGhYLGU9Yy5kZXB0aFksZj1kL2Euc2Nyb2xsV2lkdGgqMTAwLGc9ZS9hLnNjcm9sbEhlaWdodCoxMDA7ZEsoZCwiaG9yaXoucGl4IiwiUElYRUxTIiwiaG9yaXpvbnRhbCIpO2RLKGYsImhvcml6LnBjdCIsIlBFUkNFTlQiLCJob3Jpem9udGFsIik7ZEsoZSwidmVydC5waXgiLCJQSVhFTFMiLCJ2ZXJ0aWNhbCIpO2RLKGcsInZlcnQucGN0IiwiUEVSQ0VOVCIsInZlcnRpY2FsIik7YUcoInNkbCIsInBlbmRpbmciLCExKX0sZEs9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9WEooYiksZj17fSxnO2ZvcihnIGluIGUpaWYoZj17cWY6Zi5xZn0sZi5xZj1nLGUuaGFzT3duUHJvcGVydHkoZi5xZikpe3ZhciBoPQpOdW1iZXIoZi5xZik7aWYoIShhPGgpKXt2YXIgbD17fTt1RSgobC5ldmVudD0iZ3RtLnNjcm9sbERlcHRoIixsWyJndG0uc2Nyb2xsVGhyZXNob2xkIl09aCxsWyJndG0uc2Nyb2xsVW5pdHMiXT1jLnRvTG93ZXJDYXNlKCksbFsiZ3RtLnNjcm9sbERpcmVjdGlvbiJdPWQsbFsiZ3RtLnRyaWdnZXJzIl09ZVtmLnFmXS5qb2luKCIsIiksbCkpO2RHKCJzZGwiLGIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHApe2RlbGV0ZSBwW24ucWZdO3JldHVybiBwfX0oZikse30pfX19LGZLPWZ1bmN0aW9uKCl7dmFyIGE9ZEcoInNkbCIsInNjciIsZnVuY3Rpb24oYyl7Y3x8KGM9Qi5zY3JvbGxpbmdFbGVtZW50fHxCLmJvZHkmJkIuYm9keS5wYXJlbnROb2RlKTtyZXR1cm4gY30sbnVsbCksYj1kRygic2RsIiwiZGVwdGgiLGZ1bmN0aW9uKGMpe2N8fChjPWVLKGEpKTtyZXR1cm4gY30pO3JldHVybntzY3JvbGxpbmdFbGVtZW50OmEsdnI6Yn19LGVLPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYz0KMDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1zSSgpLGU9ZC5oZWlnaHQ7Yj1NYXRoLm1heChhLnNjcm9sbExlZnQrZC53aWR0aCxiKTtjPU1hdGgubWF4KGEuc2Nyb2xsVG9wK2UsYyk7cmV0dXJue2RlcHRoWDpiLGRlcHRoWTpjfX19LGNLPWZ1bmN0aW9uKCl7cmV0dXJuISEoT2JqZWN0LmtleXMoWEooImhvcml6LnBpeCIpKS5sZW5ndGh8fE9iamVjdC5rZXlzKFhKKCJob3Jpei5wY3QiKSkubGVuZ3RofHxPYmplY3Qua2V5cyhYSigidmVydC5waXgiKSkubGVuZ3RofHxPYmplY3Qua2V5cyhYSigidmVydC5wY3QiKSkubGVuZ3RoKX07CmZ1bmN0aW9uIGdLKGEsYil7dmFyIGM9dGhpcztpZighZWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdCIsImFueSJdLGFyZ3VtZW50cyk7VEYoW2Z1bmN0aW9uKCl7TChjLCJkZXRlY3Rfc2Nyb2xsX2V2ZW50cyIpfV0pO3ZhciBkPWZLKCksZT1kLnNjcm9sbGluZ0VsZW1lbnQsZj1kLnZyO2lmKCFlKXJldHVybjt2YXIgZz1aRihiKSxoPVRkKGEpO3N3aXRjaChoLmhvcml6b250YWxUaHJlc2hvbGRVbml0cyl7Y2FzZSAiUElYRUxTIjpZSihoLmhvcml6b250YWxUaHJlc2hvbGRzLGcsImhvcml6LnBpeCIpO2JyZWFrO2Nhc2UgIlBFUkNFTlQiOllKKGguaG9yaXpvbnRhbFRocmVzaG9sZHMsZywiaG9yaXoucGN0Iil9c3dpdGNoKGgudmVydGljYWxUaHJlc2hvbGRVbml0cyl7Y2FzZSAiUElYRUxTIjpZSihoLnZlcnRpY2FsVGhyZXNob2xkcywKZywidmVydC5waXgiKTticmVhaztjYXNlICJQRVJDRU5UIjpZSihoLnZlcnRpY2FsVGhyZXNob2xkcyxnLCJ2ZXJ0LnBjdCIpfSRGKCJzZGwiLCJpbml0IiwhMSk/JEYoInNkbCIsInBlbmRpbmciLCExKXx8YmQoZnVuY3Rpb24oKXtaSihlLGYpfSk6KGFHKCJzZGwiLCJpbml0IiwhMCksYUcoInNkbCIsInBlbmRpbmciLCEwKSxiZChmdW5jdGlvbigpe1pKKGUsZik7aWYoY0soKSl7dmFyIGw9YksoZSxmKTsib25zY3JvbGxlbmQiaW4gQT8obD1hSyhlLGYpLCRjKEEsInNjcm9sbGVuZCIsbCkpOiRjKEEsInNjcm9sbCIsbCk7JGMoQSwicmVzaXplIixsKX1lbHNlIGFHKCJzZGwiLCJpbml0IiwhMSl9KSk7cmV0dXJuIGd9Z0suUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25TY3JvbGwiO2Z1bmN0aW9uIGhLKGEpe3JldHVybiBmdW5jdGlvbigpe2lmKGEubGltaXQmJmEuZ2s+PWEubGltaXQpYS5haSYmQS5jbGVhckludGVydmFsKGEuYWkpO2Vsc2V7YS5naysrO3ZhciBiPU5iKCk7dUUoe2V2ZW50OmEuZXZlbnROYW1lLCJndG0udGltZXJJZCI6YS5haSwiZ3RtLnRpbWVyRXZlbnROdW1iZXIiOmEuZ2ssImd0bS50aW1lckludGVydmFsIjphLmludGVydmFsLCJndG0udGltZXJMaW1pdCI6YS5saW1pdCwiZ3RtLnRpbWVyU3RhcnRUaW1lIjphLk1vLCJndG0udGltZXJDdXJyZW50VGltZSI6YiwiZ3RtLnRpbWVyRWxhcHNlZFRpbWUiOmItYS5NbywiZ3RtLnRyaWdnZXJzIjphLkx0fSl9fX0KZnVuY3Rpb24gaUsoYSxiKXsKcmV0dXJuIGZ9aUsuUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25UaW1lciI7CnZhciBqSz1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZCgpe3ZhciBnPWEoKTtmKz1lPyhOYigpLWUpKmcucGxheWJhY2tSYXRlLzFFMzowO2U9TmIoKX12YXIgZT0wLGY9MDtyZXR1cm57Y3JlYXRlRXZlbnQ6ZnVuY3Rpb24oZyxoLGwpe3ZhciBuPWEoKSxwPW4uV24scT1sP01hdGgucm91bmQobCk6aD9NYXRoLnJvdW5kKG4uV24qaCk6TWF0aC5yb3VuZChuLkdyKSxyPWghPT12b2lkIDA/TWF0aC5yb3VuZChoKjEwMCk6cDw9MD8wOk1hdGgucm91bmQocS9wKjEwMCksdD1CLmhpZGRlbj8hMTp0SShjKT49LjU7ZCgpO3ZhciB1PXZvaWQgMDtiIT09dm9pZCAwJiYodT1bYl0pO3ZhciB2PWVHKGMsImd0bS52aWRlbyIsdSk7dlsiZ3RtLnZpZGVvUHJvdmlkZXIiXT0ieW91dHViZSI7dlsiZ3RtLnZpZGVvU3RhdHVzIl09Zzt2WyJndG0udmlkZW9VcmwiXT1uLnVybDt2WyJndG0udmlkZW9UaXRsZSJdPW4udGl0bGU7dlsiZ3RtLnZpZGVvRHVyYXRpb24iXT1NYXRoLnJvdW5kKHApO3ZbImd0bS52aWRlb0N1cnJlbnRUaW1lIl09Ck1hdGgucm91bmQocSk7dlsiZ3RtLnZpZGVvRWxhcHNlZFRpbWUiXT1NYXRoLnJvdW5kKGYpO3ZbImd0bS52aWRlb1BlcmNlbnQiXT1yO3ZbImd0bS52aWRlb1Zpc2libGUiXT10O3JldHVybiB2fSxtdDpmdW5jdGlvbigpe2U9TmIoKX0sQmo6ZnVuY3Rpb24oKXtkKCl9fX07dmFyIEFjPUFhKFsiZGF0YS1ndG0teXQtaW5zcGVjdGVkLSJdKSxrSz1bInd3dy55b3V0dWJlLmNvbSIsInd3dy55b3V0dWJlLW5vY29va2llLmNvbSJdLGxLOwp2YXIgbUs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubWFwKGZ1bmN0aW9uKGcpe3JldHVybnt0ZTpnLEpvOmcsd286dm9pZCAwfX0pO2lmKCFiLmxlbmd0aClyZXR1cm4gZDt2YXIgZT1iLm1hcChmdW5jdGlvbihnKXtyZXR1cm57dGU6ZypjLEpvOnZvaWQgMCx3bzpnfX0pO2lmKCFkLmxlbmd0aClyZXR1cm4gZTt2YXIgZj1kLmNvbmNhdChlKTtmLnNvcnQoZnVuY3Rpb24oZyxoKXtyZXR1cm4gZy50ZS1oLnRlfSk7cmV0dXJuIGZ9LG5LPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9bXTphO2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspYVtjXTwwfHxiLnB1c2goYVtjXSk7Yi5zb3J0KGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGQtZX0pO3JldHVybiBifSxvSz1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/W106YTtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWFbY10+MTAwfHxhW2NdPDB8fChiW2NdPWFbY10vMTAwKTtiLnNvcnQoZnVuY3Rpb24oZCxlKXtyZXR1cm4gZC0KZX0pO3JldHVybiBifSxwSz1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7ZnVuY3Rpb24gZSgpe3Q9aksoZnVuY3Rpb24oKXtyZXR1cm57dXJsOngsdGl0bGU6eSxXbjp2LEdyOmEuZ2V0Q3VycmVudFRpbWUoKSxwbGF5YmFja1JhdGU6en19LGIucmYsYS5nZXRJZnJhbWUoKSk7dj0wO3k9eD0iIjt6PTE7cmV0dXJuIGZ9ZnVuY3Rpb24gZihHKXtzd2l0Y2goRyl7Y2FzZSAxOnY9TWF0aC5yb3VuZChhLmdldER1cmF0aW9uKCkpO3g9YS5nZXRWaWRlb1VybCgpO2lmKGEuZ2V0VmlkZW9EYXRhKXt2YXIgTj1hLmdldFZpZGVvRGF0YSgpO3k9Tj9OLnRpdGxlOiIifXo9YS5nZXRQbGF5YmFja1JhdGUoKTtiLnlyP3VFKHQuY3JlYXRlRXZlbnQoInN0YXJ0IikpOnQuQmooKTt1PW1LKGIuZXQsYi5jdCxhLmdldER1cmF0aW9uKCkpO3JldHVybiBnKEcpO2RlZmF1bHQ6cmV0dXJuIGZ9fWZ1bmN0aW9uIGcoKXtDPWEuZ2V0Q3VycmVudFRpbWUoKTtEPU1iKCkuZ2V0VGltZSgpO3QubXQoKTtyKCk7cmV0dXJuIGh9CmZ1bmN0aW9uIGgoRyl7dmFyIE47c3dpdGNoKEcpe2Nhc2UgMDpyZXR1cm4gbihHKTtjYXNlIDI6Tj0icGF1c2UiO2Nhc2UgMzp2YXIgUz1hLmdldEN1cnJlbnRUaW1lKCktQztOPU1hdGguYWJzKChNYigpLmdldFRpbWUoKS1EKS8xRTMqei1TKT4xPyJzZWVrIjpOfHwiYnVmZmVyaW5nIjthLmdldEN1cnJlbnRUaW1lKCkmJihiLnhyP3VFKHQuY3JlYXRlRXZlbnQoTikpOnQuQmooKSk7cSgpO3JldHVybiBsO2Nhc2UgLTE6cmV0dXJuIGUoRyk7ZGVmYXVsdDpyZXR1cm4gaH19ZnVuY3Rpb24gbChHKXtzd2l0Y2goRyl7Y2FzZSAwOnJldHVybiBuKEcpO2Nhc2UgMTpyZXR1cm4gZyhHKTtjYXNlIC0xOnJldHVybiBlKEcpO2RlZmF1bHQ6cmV0dXJuIGx9fWZ1bmN0aW9uIG4oKXtmb3IoO2Q7KXt2YXIgRz1jO0EuY2xlYXJUaW1lb3V0KGQpO0coKX1iLndyJiZ1RSh0LmNyZWF0ZUV2ZW50KCJjb21wbGV0ZSIsMSkpO3JldHVybiBlKC0xKX1mdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIHEoKXtkJiYKKEEuY2xlYXJUaW1lb3V0KGQpLGQ9MCxjPXApfWZ1bmN0aW9uIHIoKXtpZih1Lmxlbmd0aCYmeiE9PTApe3ZhciBHPS0xLE47ZG97Tj11WzBdO2lmKE4udGU+YS5nZXREdXJhdGlvbigpKXJldHVybjtHPShOLnRlLWEuZ2V0Q3VycmVudFRpbWUoKSkvejtpZihHPDAmJih1LnNoaWZ0KCksdS5sZW5ndGg9PT0wKSlyZXR1cm59d2hpbGUoRzwwKTtjPWZ1bmN0aW9uKCl7ZD0wO2M9cDt1Lmxlbmd0aD4wJiZ1WzBdLnRlPT09Ti50ZSYmKHUuc2hpZnQoKSx1RSh0LmNyZWF0ZUV2ZW50KCJwcm9ncmVzcyIsTi53byxOLkpvKSkpO3IoKX07ZD1BLnNldFRpbWVvdXQoYyxHKjFFMyl9fXZhciB0LHU9W10sdix4LHkseixDLEQsST1lKC0xKTtkPTA7Yz1wO3JldHVybntvblN0YXRlQ2hhbmdlOmZ1bmN0aW9uKEcpe0k9SShHKX0sb25QbGF5YmFja1JhdGVDaGFuZ2U6ZnVuY3Rpb24oRyl7Qz1hLmdldEN1cnJlbnRUaW1lKCk7RD1NYigpLmdldFRpbWUoKTt0LkJqKCk7ej1HO3EoKTtyKCl9fX0scks9CmZ1bmN0aW9uKGEpe2JkKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2Zvcih2YXIgZD1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKSxlPWQubGVuZ3RoLGY9MDtmPGU7ZisrKXFLKGRbZl0sYSl9dmFyIGM9QjtiKCk7b0ouSyhiKX0pfSxxSz1mdW5jdGlvbihhLGIpe2lmKCFhLmdldEF0dHJpYnV0ZSgiZGF0YS1ndG0teXQtaW5zcGVjdGVkLSIrYi5yZikmJihDYyhhLCJkYXRhLWd0bS15dC1pbnNwZWN0ZWQtIitiLnJmKSxzSyhhLGIuY28pKSl7YS5pZHx8KGEuaWQ9dEsoKSk7dmFyIGM9QS5ZVCxkPWMuZ2V0KGEuaWQpO2R8fChkPW5ldyBjLlBsYXllcihhLmlkKSk7dmFyIGU9cEsoZCxiKSxmPXt9LGc7Zm9yKGcgaW4gZSlmPXtNZzpmLk1nfSxmLk1nPWcsZS5oYXNPd25Qcm9wZXJ0eShmLk1nKSYmZC5hZGRFdmVudExpc3RlbmVyKGYuTWcsZnVuY3Rpb24oaCl7cmV0dXJuIGZ1bmN0aW9uKGwpe3JldHVybiBlW2guTWddKGwuZGF0YSl9fShmKSl9fSxzSz1mdW5jdGlvbihhLApiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZSgic3JjIik7aWYodUsoYywiZW1iZWQvIikpe2lmKGMuaW5kZXhPZigiZW5hYmxlanNhcGk9MSIpPjApcmV0dXJuITA7aWYoYil7dmFyIGQ7dmFyIGU9Yy5pbmRleE9mKCI/IikhPT0tMT8iJiI6Ij8iO2MuaW5kZXhPZigib3JpZ2luPSIpPi0xP2Q9YytlKyJlbmFibGVqc2FwaT0xIjoobEt8fChsSz1CLmxvY2F0aW9uLnByb3RvY29sKyIvLyIrQi5sb2NhdGlvbi5ob3N0bmFtZSxCLmxvY2F0aW9uLnBvcnQmJihsSys9IjoiK0IubG9jYXRpb24ucG9ydCkpLGQ9YytlKyJlbmFibGVqc2FwaT0xJm9yaWdpbj0iK2VuY29kZVVSSUNvbXBvbmVudChsSykpO3ZhciBmO2Y9amMoZCk7YS5zcmM9a2MoZikudG9TdHJpbmcoKTtyZXR1cm4hMH19cmV0dXJuITF9LHVLPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxrSy5sZW5ndGg7YysrKWlmKGEuaW5kZXhPZigiLy8iK2tLW2NdKyIvIitiKT49MClyZXR1cm4hMDtyZXR1cm4hMX0sCnRLPWZ1bmN0aW9uKCl7dmFyIGE9IiIrTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjFFOSk7cmV0dXJuIEIuZ2V0RWxlbWVudEJ5SWQoYSk/dEsoKTphfTsKZnVuY3Rpb24gdksoYSxiKXt2YXIgYz10aGlzO3ZhciBkPWZ1bmN0aW9uKCl7cksocSl9O2lmKCFlaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0IiwiYW55Il0sYXJndW1lbnRzKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyIse2ZpeE1pc3NpbmdBcGk6ISFhLmdldCgiZml4TWlzc2luZ0FwaSIpfSl9XSk7dmFyIGU9WkYoYiksZj0hIWEuZ2V0KCJjYXB0dXJlU3RhcnQiKSxnPSEhYS5nZXQoImNhcHR1cmVDb21wbGV0ZSIpLGg9ISFhLmdldCgiY2FwdHVyZVBhdXNlIiksbD1vSyhUZChhLmdldCgicHJvZ3Jlc3NUaHJlc2hvbGRzUGVyY2VudCIpKSksbj1uSyhUZChhLmdldCgicHJvZ3Jlc3NUaHJlc2hvbGRzVGltZUluU2Vjb25kcyIpKSkscD0hIWEuZ2V0KCJmaXhNaXNzaW5nQXBpIik7CmlmKCEoZnx8Z3x8aHx8bC5sZW5ndGh8fG4ubGVuZ3RoKSlyZXR1cm47dmFyIHE9e3lyOmYsd3I6Zyx4cjpoLGN0OmwsZXQ6bixjbzpwLHJmOmV9LHI9QS5ZVDtpZihyKXJldHVybiByLnJlYWR5JiZyLnJlYWR5KGQpLGU7dmFyIHQ9QSx1PXQub25Zb3VUdWJlSWZyYW1lQVBJUmVhZHk7dC5vbllvdVR1YmVJZnJhbWVBUElSZWFkeT1mdW5jdGlvbigpe3UmJnUoKTtkKCl9O2JkKGZ1bmN0aW9uKCl7Zm9yKHZhciB2PUIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLHg9di5sZW5ndGgseT0wO3k8eDt5Kyspe3ZhciB6PXZbeV0uZ2V0QXR0cmlidXRlKCJzcmMiKTtpZih1Syh6LCJpZnJhbWVfYXBpIil8fHVLKHosInBsYXllcl9hcGkiKSlyZXR1cm4gZX1mb3IodmFyIEM9Qi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIiksRD1DLmxlbmd0aCxJPWFsKDUsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLEc9MDtHPEQ7RysrKWlmKCFJJiZzSyhDW0ddLHEuY28pKXJldHVybiBVYygiaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSIpLApaayg1LCEwKSxlfSk7cmV0dXJuIGV9dksuUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Zb3VUdWJlQWN0aXZpdHkiO2Z1bmN0aW9uIHdLKGEsYil7aWYoIWxoKGEpfHwhZmgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIk9iamVjdHx1bmRlZmluZWQiXSxhcmd1bWVudHMpO3ZhciBjPWI/VGQoYik6e307Yy5yZWdleENhY2hlPWFsKDMsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0pO3JldHVybiBHaChhLGMpfXdLLlA9ImludGVybmFsLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iO2Z1bmN0aW9uIHhLKGEpe3ZhciBiPSExO3JldHVybiBifXhLLlA9ImludGVybmFsLmV2YWx1YXRlTWF0Y2hpbmdSdWxlcyI7dmFyIHlLPW5ldyBNYXAoW1siYXciLDRdXSk7ZnVuY3Rpb24geksoYSl7dmFyIGI9dnJbYV0sYz15Sy5nZXQoYSk7cmV0dXJuIGM/KHdxKGIsYyl8fFtdKS5zb21lKGZ1bmN0aW9uKGQpe3JldHVybiBkLm09PT0iMCJ8fGQubT09PXZvaWQgMH0pOiExfQpmdW5jdGlvbiBBSyhhLGIpe2lmKE0oNDk1KSl7Zm9yKHZhciBjPW5ldyBNYXAsZD1tKHlLKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9bShlLnZhbHVlKSxnPWYubmV4dCgpLnZhbHVlLGg9Zi5uZXh0KCkudmFsdWUsbD1nLG49YVtsXSxwPUFycmF5LmlzQXJyYXkobik/blswXTpuO2lmKHAhPT12b2lkIDApe3ZhciBxPXt9LHI9KHEuaz1wLHEuaT1TdHJpbmcoTWF0aC5mbG9vcihEYXRlLm5vdygpLzFFMykpLHEuYj1bXSxxLm09IjEiLHEpLHQ9YXEocixoKTt0JiYoeksobCl8fGMuc2V0KGwsdCkpfX1pZihjLnNpemUpe3ZhciB1LHY9W10seD1iLnBhdGh8fCIvIjt2LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KCJwIikrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh4KSk7Yi5BciYmdi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiY2UiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhiLkFyKSkpO3ZhciB5PWIuZG9tYWluJiZiLmRvbWFpbiE9PSJhdXRvIj8KYi5kb21haW46ImF1dG86IitBLmxvY2F0aW9uLmhvc3RuYW1lO3YucHVzaChlbmNvZGVVUklDb21wb25lbnQoImQiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHkpKTtmb3IodmFyIHo9bShjKSxDPXoubmV4dCgpOyFDLmRvbmU7Qz16Lm5leHQoKSl7dmFyIEQ9bShDLnZhbHVlKSxJPUQubmV4dCgpLnZhbHVlLEc9RC5uZXh0KCkudmFsdWU7di5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEcpKX11PSJfL3NldF9jb29raWU/Iit2LmpvaW4oIiYiKTt2YXIgTixTPUUoNTgpO049RWYodSxTKTt2YXIgVz1YaigpKyIvIitOO21kKFcpfX19O2Z1bmN0aW9uIEJLKGEpe3JldHVybiJDV1ZXZWJWaWV3TWVzc2FnZSJpbiBhfWZ1bmN0aW9uIENLKGEpe3ZhciBiPUEsYz1iLndlYmtpdDtkZWxldGUgYi53ZWJraXQ7YShiLndlYmtpdCk7Yi53ZWJraXQ9Y31mdW5jdGlvbiBESyhhLGIpe3ZhciBjPXthY3Rpb246ImdjbF9zZXR1cCJ9O2lmKEJLKGEubWVzc2FnZUhhbmRsZXJzKSlyZXR1cm4gYS5tZXNzYWdlSGFuZGxlcnMuQ1dWV2ViVmlld01lc3NhZ2UucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6YixwYXlsb2FkOmN9KSwhMDt2YXIgZD1hLm1lc3NhZ2VIYW5kbGVyc1tiXTtyZXR1cm4gZD8oZC5wb3N0TWVzc2FnZShjKSwhMCk6ITF9O3ZhciBFSz17fSxGSz0oRUsuYXdiPXtub3RGb3VuZDoxNzh9LEVLLnl0Yj17bm90Rm91bmQ6MTk0fSxFSyk7ZnVuY3Rpb24gR0soYSl7dmFyIGIsYz0oYj1GS1thXSk9PW51bGw/dm9pZCAwOmIubm90Rm91bmQ7YyYmUChjKX0KZnVuY3Rpb24gSEsoYSl7aWYoIW5tKGptLmJhLmpuKSYmIndlYmtpdCJpbiBBJiZBLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMpe3ZhciBiPWZ1bmN0aW9uKCl7dHJ5e0NLKGZ1bmN0aW9uKGMpe2lmKGMpe3ZhciBkO2Q9QksoYy5tZXNzYWdlSGFuZGxlcnMpfHwiYXdiImluIGMubWVzc2FnZUhhbmRsZXJzP3tjb21tYW5kOiJhd2IiLHNvdXJjZTo1fTooQksoYy5tZXNzYWdlSGFuZGxlcnMpfHwieXRiImluIGMubWVzc2FnZUhhbmRsZXJzKSYmTSg0OTkpP3tjb21tYW5kOiJ5dGIiLHNvdXJjZTo4fTp2b2lkIDA7ZCYmKG1tKGptLmJhLmpuLGZ1bmN0aW9uKGUpe3ZhciBmPWQuc291cmNlO2UuZ2NsaWQmJmxzKCJnY2xfYXciLGUuZ2NsaWQsZixhKTtlLndicmFpZCYmbHMoImdjbF9nYiIsZS53YnJhaWQsZixhKX0pLERLKGMsZC5jb21tYW5kKXx8R0soZC5jb21tYW5kKSl9fSl9Y2F0Y2goYyl7UCgxOTMpfX07SGwoZnVuY3Rpb24oKXtCcihmcCk/YigpOklsKGIsZnApfSxmcCl9fTt2YXIgSUs9WyJodHRwczovL3d3dy5nb29nbGUuY29tIiwiaHR0cHM6Ly93d3cueW91dHViZS5jb20iLCJodHRwczovL20ueW91dHViZS5jb20iXTtmdW5jdGlvbiBKSyhhKXtyZXR1cm4gYS5kYXRhLmFjdGlvbiE9PSJnY2xfdHJhbnNmZXIiPyhQKDE3MyksITApOmEuZGF0YS5nYWRTb3VyY2U/YS5kYXRhLmdjbGlkPyExOihQKDE4MSksITApOihQKDE4MCksITApfQpmdW5jdGlvbiBLSyhhLGIpe2lmKCFhfHxNKGEpKXtpZihubShqbS5iYS5WZSkpcmV0dXJuIFAoMTc2KSxqbS5iYS5WZTtpZihubShqbS5iYS5tbikpcmV0dXJuIFAoMTcwKSxqbS5iYS5WZTt2YXIgYz1GcCgpO2lmKCFjKVAoMTcxKTtlbHNlIGlmKGMub3BlbmVyKXt2YXIgZD1mdW5jdGlvbihnKXtpZighSUsuaW5jbHVkZXMoZy5vcmlnaW4pKVAoMTcyKTtlbHNlIGlmKCFKSyhnKSl7dmFyIGg9e2dhZFNvdXJjZTpnLmRhdGEuZ2FkU291cmNlfTtoLmdjbGlkPWcuZGF0YS5nY2xpZDttbShqbS5iYS5WZSxoKTtiJiZnLmRhdGEuZ2NsaWQmJmxzKCJnY2xfYXciLFN0cmluZyhnLmRhdGEuZ2NsaWQpLDYsYik7dmFyIGw7KGw9Zy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24pPT1udWxsfHxsLmNhbGwoZyk7bnQoYywibWVzc2FnZSIsZCl9fTtpZihtdChjLCJtZXNzYWdlIixkKSl7bW0oam0uYmEubW4sITApO2Zvcih2YXIgZT1tKElLKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSljLm9wZW5lci5wb3N0TWVzc2FnZSh7YWN0aW9uOiJnY2xfc2V0dXAifSwKZi52YWx1ZSk7UCgxNzQpO3JldHVybiBqbS5iYS5WZX1QKDE3NSl9fX07CnZhciBMSz1mdW5jdGlvbihhKXt2YXIgYj17cHJlZml4Ok8oYS5NLEYuRC5GZCl8fE8oYS5NLEYuRC5uYiksZG9tYWluOk8oYS5NLEYuRC5MYikscGQ6TyhhLk0sRi5ELkNiKSxmbGFnczpPKGEuTSxGLkQuVGIpfTthLk0uaXNHdG1FdmVudCYmKGIucGF0aD1PKGEuTSxGLkQudmMpKTtyZXR1cm4gYn0sTUs9ZnVuY3Rpb24oYSxiKXtpZighUShhLEguSi5XZSkpe3ZhciBjPUtLKDExOSk7aWYoYyl7dmFyIGQ9bm0oYyksZT1mdW5jdGlvbihnKXtWKGEsSC5KLldlLCEwKTt2YXIgaD1SKGEsRi5ELnpmKSxsPVIoYSxGLkQuQWYpO1UoYSxGLkQuemYsU3RyaW5nKGcuZ2FkU291cmNlKSk7VShhLEYuRC5BZiw2KTtWKGEsSC5KLnNhKTtWKGEsSC5KLnVnKTtVKGEsRi5ELnNhKTtiKCk7VShhLEYuRC56ZixoKTtVKGEsRi5ELkFmLGwpO1YoYSxILkouV2UsITEpfTtpZihkKWUoZCk7ZWxzZXt2YXIgZj12b2lkIDA7Zj1wbShjLGZ1bmN0aW9uKGcsaCl7ZShoKTtxbShjLGYpfSl9fX19LFBLPWZ1bmN0aW9uKGEpe3ZhciBiLApjLGQsZTtiPWEuVG47Yz1hLm1vO2Q9YS5RbztlPWEuVW47aWYoYil7aWYoZHIoY1tGLkQuWGZdLCEhY1tGLkQuQWFdKSl7aWYoV2ooKSYmQnIoQXIoKSkpe2Zvcih2YXIgZj1VcSghMCksZz17fSxoPW0oT2JqZWN0LmtleXModnIpKSxsPWgubmV4dCgpOyFsLmRvbmU7bD1oLm5leHQoKSl7dmFyIG49bC52YWx1ZSxwPXZyW25dLHE9ZltwXTtpZihxKXt2YXIgcj0kcChxLDQpO3ImJihvcyhNYXRoLm1pbihOcihyKSxOYigpKXx8TmIoKSxwLDQpfHwoZ1tuXT1xKSl9fWZvcih2YXIgdD17fSx1PW0oT2JqZWN0LmtleXMoZykpLHY9dS5uZXh0KCk7IXYuZG9uZTt2PXUubmV4dCgpKXt2YXIgeD12LnZhbHVlLHk9Z1t4XTtpZih5IT09dm9pZCAwKXt2YXIgej0kcCh5LDQpO3omJnoubT09PSIxIiYmKHRbeF09ei5rKX19QUsodCxlKX1wcyhlKTt0cyhlKTtRdihlKX1pZihPcCgpIT09Mil7Z3MoZSk7aXMoZSk7aWYoWWYoMTUpKXt2YXIgQz1lLEQ9ZHMoQS5sb2NhdGlvbi5ocmVmLCEwLCExKTsKRC5sZW5ndGh8fChEPWRzKEEuZG9jdW1lbnQucmVmZXJyZXIsITEsITApKTtpZihELmxlbmd0aCl7Qz1DfHx7fTt2YXIgST1EWzBdO0kudmFsdWUmJm1zKCJnY2xfZGMiLFt7dmVyc2lvbjoiIixnY2xpZDpJLnZhbHVlLHRpbWVzdGFtcDpOYigpLHFhOkkucWF9XSxDKX19SEsoZSk7S0sodm9pZCAwLGUpfWVsc2UgZ3MoZSk7aWYoV2ooKSYmQnIoQXIoKSkpe3ZhciBHPWZzKCk7QUsoRyxlKX14cyhxcyxlKTt5cyhlKX1jW0YuRC5BYV0mJih2cyhjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdKSx1cyhjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdLGUucHJlZml4KSx3cyhjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdLGUucHJlZml4KSxSdihHdihlLnByZWZpeCksY1tGLkQuQWFdLGNbRi5ELmFkXSwhIWNbRi5ELndjXSxlKSxSdigiRlBBVSIsY1tGLkQuQWFdLGNbRi5ELmFkXSwhIWNbRi5ELndjXSxlKSk7ZCYmQXMoTkspO0NzKE9LKX0scXM9WyJhdyIsImRjIiwKImdiIl0sT0s9WyJhdyIsImRjIiwiZ2IiLCJhZyJdLE5LPVsiYXciLCJkYyIsImdiIiwiYWciLCJnYWRfc291cmNlIl07ZnVuY3Rpb24gVksoKXtyZXR1cm4gTXQoNykmJk10KDkpJiZNdCgxMCl9O3ZhciBXSz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307YS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELm9qLChkW2JdPWMsZCkpfSxYSz1mdW5jdGlvbihhLGIpe3ZhciBjPWRJKGEsRi5ELkZpLGEuTS5pYltGLkQuRmldKTtpZihjJiZjW2J8fGEuZXZlbnROYW1lXSE9PXZvaWQgMClyZXR1cm4gY1tifHxhLmV2ZW50TmFtZV19LFlLPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouWWEpO2lmKENkKGIpKXJldHVybiBifSxaSz1mdW5jdGlvbihhKXtpZihRKGEsSC5KLmJlKXx8IWVrKGEuTSkpcmV0dXJuIDE7aWYoIU8oYS5NLEYuRC5kZCkpe3ZhciBiPU8oYS5NLEYuRC5RZik7aWYoYiE9PSEwJiZiIT09InRydWUiKXJldHVybiAxfXZhciBjPU8oYS5NLEYuRC5PaSk7cmV0dXJuIGM9PT0hMXx8Yz09PSJmYWxzZSI/MzoyfTsKdmFyIGFMPWZ1bmN0aW9uKGEsYil7YSYmKCRLKCJzaWQiLGEudGFyZ2V0SWQsYiksJEsoImNjIixhLmNsaWVudENvdW50LGIpLCRLKCJ0bCIsYS50b3RhbExpZmVNcyxiKSwkSygiaGMiLGEuaGVhcnRiZWF0Q291bnQsYiksJEsoImNsIixhLmNsaWVudExpZmVNcyxiKSl9LCRLPWZ1bmN0aW9uKGEsYixjKXtiIT1udWxsJiZjLnB1c2goYSsiPSIrYil9LGJMPWZ1bmN0aW9uKCl7dmFyIGE9Qi5yZWZlcnJlcjtpZihhKXt2YXIgYjtyZXR1cm4gTGooUmooYSksImhvc3QiKT09PSgoYj1BLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6Yi5ob3N0KT8xOjJ9cmV0dXJuIDB9LGRMPWZ1bmN0aW9uKCl7dGhpcy5qYT1jTDt0aGlzLk49MDt0aGlzLnlhPU5mKDU3LDUpO3RoaXMuUj1OZig1OCw1MCk7dGhpcy5mYT1EYigpO3RoaXMuTGE9Imh0dHBzOi8vIitFKDIxKSsiL2E/In07ZEwucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiLGMsZCl7CnZhciBlPWJMKCksZixnPVtdO2Y9QT09PUEudG9wJiZlIT09MCYmYj8oYj09bnVsbD92b2lkIDA6Yi5jbGllbnRDb3VudCk+MT9lPT09Mj8xOjI6ZT09PTI/MDozOjQ7YSYmJEsoInNpIixhLkpnLGcpOyRLKCJtIiwwLGcpOyRLKCJpc3MiLGYsZyk7JEsoImlmIixjLGcpO2FMKGIsZyk7ZCYmJEsoImZtIixlbmNvZGVVUklDb21wb25lbnQoZC5zdWJzdHJpbmcoMCx0aGlzLlIpKSxnKTt0aGlzLlooZyk7fTtkTC5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPVtdOyRLKCJtIiwxLGYpOyRLKCJzIixhLGYpOyRLKCJwbyIsYkwoKSxmKTtiJiYoJEsoInN0IixiLnN0YXRlLGYpLCRLKCJzaSIsYi5KZyxmKSwkSygic20iLGIuVWcsZikpO2FMKGMsZik7JEsoImMiLGQsZik7ZSYmJEsoImZtIixlbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoMCwKdGhpcy5SKSksZik7dGhpcy5aKGYpO307ZEwucHJvdG90eXBlLlo9ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwP1tdOmE7IWZuLk58fHRoaXMuTj49dGhpcy55YXx8KCRLKCJwaWQiLHRoaXMuZmEsYSksJEsoImJjIiwrK3RoaXMuTixhKSxhLnVuc2hpZnQoImN0aWQ9IitFKDUpKyImdD1zIiksdGhpcy5qYSgiIit0aGlzLkxhK2Euam9pbigiJiIpKSl9O2Z1bmN0aW9uIGVMKGEpe3JldHVybiBhLnBlcmZvcm1hbmNlJiZhLnBlcmZvcm1hbmNlLm5vdygpfHxEYXRlLm5vdygpfQp2YXIgZkw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BLGQ9TmYoNTMsNTAwKSxlPU5mKDU0LDVFMyksZj1OZig4LDIwKSxnPU5mKDU1LDVFMyksaDt2YXIgbD1mdW5jdGlvbihuLHAscSl7cT1xPT09dm9pZCAwP3txbzpmdW5jdGlvbigpe30sc286ZnVuY3Rpb24oKXt9LHBvOmZ1bmN0aW9uKCl7fSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXt9fTpxO3RoaXMuSWo9bjt0aGlzLkg9cDt0aGlzLk49cTt0aGlzLmZhPXRoaXMuamE9dGhpcy5oZWFydGJlYXRDb3VudD10aGlzLkRqPTA7dGhpcy5mZT0hMTt0aGlzLks9e307dGhpcy5pZD1TdHJpbmcoTWF0aC5mbG9vcihOdW1iZXIuTUFYX1NBRkVfSU5URUdFUipNYXRoLnJhbmRvbSgpKSk7dGhpcy5zdGF0ZT0wO3RoaXMuSmc9ZUwodGhpcy5IKTt0aGlzLlVnPWVMKHRoaXMuSCk7dGhpcy5aPTEwfTtsLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5SKDEpOwp0aGlzLkxhKCl9O2wucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YXRlOnRoaXMuc3RhdGUsSmc6TWF0aC5yb3VuZChlTCh0aGlzLkgpLXRoaXMuSmcpLFVnOk1hdGgucm91bmQoZUwodGhpcy5IKS10aGlzLlVnKX19O2wucHJvdG90eXBlLlI9ZnVuY3Rpb24obil7dGhpcy5zdGF0ZSE9PW4mJih0aGlzLnN0YXRlPW4sdGhpcy5VZz1lTCh0aGlzLkgpKX07bC5wcm90b3R5cGUudmc9ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMuRGorKyl9O2wucHJvdG90eXBlLkxhPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmhlYXJ0YmVhdENvdW50Kys7dGhpcy55YSh7dHlwZTowLGNsaWVudElkOnRoaXMuaWQscmVxdWVzdElkOnRoaXMudmcoKSxtYXhEZWxheTp0aGlzLmhlKCl9LGZ1bmN0aW9uKHApe2lmKHAudHlwZT09PTApe3ZhciBxO2lmKCgocT1wLmZhaWx1cmUpPT1udWxsP3ZvaWQgMDpxLmZhaWx1cmVUeXBlKSE9bnVsbClpZihwLnN0YXRzJiYobi5zdGF0cz0KcC5zdGF0cyksbi5mYSsrLHAuaXNEZWFkfHxuLmZhPmYpe3ZhciByPXAuaXNEZWFkJiZwLmZhaWx1cmUuZmFpbHVyZVR5cGU7bi5aPXJ8fDEwO24uUig0KTtuLkFqKCk7dmFyIHQsdTsodT0odD1uLk4pLnBvKT09bnVsbHx8dS5jYWxsKHQse2ZhaWx1cmVUeXBlOnJ8fDEwLGRhdGE6cC5mYWlsdXJlLmRhdGF9KX1lbHNlIG4uUigzKSxuLlBoKCk7ZWxzZXtpZihuLmhlYXJ0YmVhdENvdW50PnAuc3RhdHMuaGVhcnRiZWF0Q291bnQrZil7bi5oZWFydGJlYXRDb3VudD1wLnN0YXRzLmhlYXJ0YmVhdENvdW50O3ZhciB2LHg7KHg9KHY9bi5OKS5vbkZhaWx1cmUpPT1udWxsfHx4LmNhbGwodix7ZmFpbHVyZVR5cGU6MTN9KX1uLnN0YXRzPXAuc3RhdHM7dmFyIHk9bi5zdGF0ZTtuLlIoMik7aWYoeSE9PTIpaWYobi5mZSl7dmFyIHosQzsoQz0oej1uLk4pLnNvKT09bnVsbHx8Qy5jYWxsKHopfWVsc2V7bi5mZT0hMDt2YXIgRCxJOyhJPShEPW4uTikucW8pPT1udWxsfHxJLmNhbGwoRCl9bi5mYT0KMDtuLk5qKCk7bi5QaCgpfX19KX07bC5wcm90b3R5cGUuaGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZT09PTI/ZTpkfTtsLnByb3RvdHlwZS5QaD1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5ILnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLkxhKCl9LE1hdGgubWF4KDAsdGhpcy5oZSgpLShlTCh0aGlzLkgpLXRoaXMuamEpKSl9O2wucHJvdG90eXBlLmtyPWZ1bmN0aW9uKG4scCxxKXt2YXIgcj10aGlzO3RoaXMueWEoe3R5cGU6MSxjbGllbnRJZDp0aGlzLmlkLHJlcXVlc3RJZDp0aGlzLnZnKCksY29tbWFuZDpufSxmdW5jdGlvbih0KXtpZih0LnR5cGU9PT0xKWlmKHQucmVzdWx0KXAodC5yZXN1bHQpO2Vsc2V7dmFyIHUsdix4LHk9e2ZhaWx1cmVUeXBlOih4PSh1PXQuZmFpbHVyZSk9PW51bGw/dm9pZCAwOnUuZmFpbHVyZVR5cGUpIT1udWxsP3g6MTIsZGF0YToodj10LmZhaWx1cmUpPT1udWxsP3ZvaWQgMDp2LmRhdGF9LHosQzsoQz0oej1yLk4pLm9uRmFpbHVyZSk9PQpudWxsfHxDLmNhbGwoeix5KTtxKHkpfX0pfTtsLnByb3RvdHlwZS55YT1mdW5jdGlvbihuLHApe3ZhciBxPXRoaXM7aWYodGhpcy5zdGF0ZT09PTQpbi5mYWlsdXJlPXtmYWlsdXJlVHlwZTp0aGlzLlp9LHAobik7ZWxzZXt2YXIgcj10aGlzLnN0YXRlIT09MiYmbi50eXBlIT09MCx0PW4ucmVxdWVzdElkLHUsdj10aGlzLkguc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB5PXEuS1t0XTt5JiYoaW0oNikscS5rZCh5LDcpKX0sKHU9bi5tYXhEZWxheSkhPW51bGw/dTpnKSx4PXtyZXF1ZXN0Om4sSG86cCx6bzpyLE5zOnZ9O3RoaXMuS1t0XT14O3J8fHRoaXMuc2VuZFJlcXVlc3QoeCl9fTtsLnByb3RvdHlwZS5zZW5kUmVxdWVzdD1mdW5jdGlvbihuKXt0aGlzLmphPWVMKHRoaXMuSCk7bi56bz0hMTt0aGlzLklqKG4ucmVxdWVzdCl9O2wucHJvdG90eXBlLk5qPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW0oT2JqZWN0LmtleXModGhpcy5LKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPQp0aGlzLktbcC52YWx1ZV07cS56byYmdGhpcy5zZW5kUmVxdWVzdChxKX19O2wucHJvdG90eXBlLkFqPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW0oT2JqZWN0LmtleXModGhpcy5LKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpdGhpcy5rZCh0aGlzLktbcC52YWx1ZV0sdGhpcy5aKX07bC5wcm90b3R5cGUua2Q9ZnVuY3Rpb24obixwKXt0aGlzLmFjKG4pO3ZhciBxPW4ucmVxdWVzdDtxLmZhaWx1cmU9e2ZhaWx1cmVUeXBlOnB9O24uSG8ocSl9O2wucHJvdG90eXBlLmFjPWZ1bmN0aW9uKG4pe2RlbGV0ZSB0aGlzLktbbi5yZXF1ZXN0LnJlcXVlc3RJZF07dGhpcy5ILmNsZWFyVGltZW91dChuLk5zKX07bC5wcm90b3R5cGUua3M9ZnVuY3Rpb24obil7dGhpcy5qYT1lTCh0aGlzLkgpO3ZhciBwPXRoaXMuS1tuLnJlcXVlc3RJZF07aWYocCl0aGlzLmFjKHApLHAuSG8obik7ZWxzZXt2YXIgcSxyOyhyPShxPXRoaXMuTikub25GYWlsdXJlKT09bnVsbHx8ci5jYWxsKHEse2ZhaWx1cmVUeXBlOjE0fSl9fTsKaD1uZXcgbChhLGMsYik7cmV0dXJuIGh9Owp2YXIgZ0w9ZnVuY3Rpb24oKXtyZXR1cm4gYWwoMTgsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGRMfSl9LGNMPWZ1bmN0aW9uKGEpe2lvKGxvKGNvLmlhLlpiKSxmdW5jdGlvbigpe1pjKGEpfSl9LGhMPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCIvXy9zZXJ2aWNlX3dvcmtlciIpKTtyZXR1cm4iJjFwPTEiKyhiPyImcGF0aD0iK2VuY29kZVVSSUNvbXBvbmVudChiKToiIil9LGlMPWZ1bmN0aW9uKGEpe3ZhciBiPUEubG9jYXRpb24ub3JpZ2luO2lmKCFiKXJldHVybiBudWxsOyhNKDQzMik/V2ooKTpXaigpJiYhYSkmJihhPSIiK2IrWGooKSsiL18vc2VydmljZV93b3JrZXIiKTt2YXIgYz1hLGQsZT1MZigxMSk7ZT1MZigxMCk7ZD1lO2M/KGMuY2hhckF0KGMubGVuZ3RoLTEpIT09Ii8iJiYKKGMrPSIvIiksYT1jK2QpOmE9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL3N0YXRpYy9zZXJ2aWNlX3dvcmtlci8iK2QrIi8iO3ZhciBmO3RyeXtmPW5ldyBVUkwoYSl9Y2F0Y2goZyl7cmV0dXJuIG51bGx9cmV0dXJuIGYucHJvdG9jb2whPT0iaHR0cHM6Ij9udWxsOmZ9LGpMPWZ1bmN0aW9uKGEpe3ZhciBiPW5tKGptLmJhLk9oKTtyZXR1cm4gYiYmYlthXX0sa0w9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLks9Z0woKTt0aGlzLlo9dGhpcy5SPSExO3RoaXMuZmE9bnVsbDt0aGlzLmluaXRUaW1lPU1hdGgucm91bmQoTmIoKSk7dGhpcy5IPTE1O3RoaXMuTj10aGlzLkZyKGEpO0Euc2V0VGltZW91dChmdW5jdGlvbigpe2IuaW5pdGlhbGl6ZSgpfSwxRTMpO2JkKGZ1bmN0aW9uKCl7Yi56cyhhKX0pfTtrPWtMLnByb3RvdHlwZTtrLmRlbGVnYXRlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmdldFN0YXRlKCkhPT0yPyh0aGlzLksuSCh0aGlzLkgse3N0YXRlOnRoaXMuZ2V0U3RhdGUoKSwKSmc6dGhpcy5pbml0VGltZSxVZzpNYXRoLnJvdW5kKE5iKCkpLXRoaXMuaW5pdFRpbWV9LHZvaWQgMCxhLmNvbW1hbmRUeXBlKSxjKHtmYWlsdXJlVHlwZTp0aGlzLkh9KSk6dGhpcy5OLmtyKGEsYixjKX07ay5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLk4uZ2V0U3RhdGUoKS5zdGF0ZX07ay56cz1mdW5jdGlvbihhKXt2YXIgYj1BLmxvY2F0aW9uLm9yaWdpbixjPXRoaXMsZD1YYygpO3RyeXt2YXIgZT1kLmNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxmPWEucGF0aG5hbWUsZz1mW2YubGVuZ3RoLTFdPT09Ii8iP2EudG9TdHJpbmcoKTphLnRvU3RyaW5nKCkrIi8iLGg9YS5vcmlnaW4hPT0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20iP2hMKGYpOiIiLGw7TSgxMzMpJiYobD17c2FuZGJveDoiYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyJ9KTtYYyhnKyJzd19pZnJhbWUuaHRtbD9vcmlnaW49IitlbmNvZGVVUklDb21wb25lbnQoYikrCmgsdm9pZCAwLGwsdm9pZCAwLGUpO3ZhciBuPWZ1bmN0aW9uKCl7ZC5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTtlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7Yy5mYT1lLmNvbnRlbnRXaW5kb3c7ZC5jb250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKHApe3Aub3JpZ2luPT09YS5vcmlnaW4mJmMuTi5rcyhwLmRhdGEpfSk7Yy5pbml0aWFsaXplKCl9KX07ZC5jb250ZW50RG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSI/bigpOmQuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe24oKX0pfWNhdGNoKHApe2QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChkKSx0aGlzLkg9MTEsdGhpcy5LLksodm9pZCAwLHZvaWQgMCx0aGlzLkgscC50b1N0cmluZygpKX19O2suRnI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWZMKGZ1bmN0aW9uKGQpe3ZhciBlOyhlPWIuZmEpPT0KbnVsbHx8ZS5wb3N0TWVzc2FnZShkLGEub3JpZ2luKX0se3FvOmZ1bmN0aW9uKCl7Yi5SPSEwO2IuSy5LKGMuZ2V0U3RhdGUoKSxjLnN0YXRzKX0sc286ZnVuY3Rpb24oKXt9LHBvOmZ1bmN0aW9uKGQpe2IuUj8oYi5IPShkPT1udWxsP3ZvaWQgMDpkLmZhaWx1cmVUeXBlKXx8MTAsYi5LLkgoYi5ILGMuZ2V0U3RhdGUoKSxjLnN0YXRzLHZvaWQgMCxkPT1udWxsP3ZvaWQgMDpkLmRhdGEpKTooYi5IPShkPT1udWxsP3ZvaWQgMDpkLmZhaWx1cmVUeXBlKXx8NCxiLksuSyhjLmdldFN0YXRlKCksYy5zdGF0cyxiLkgsZD09bnVsbD92b2lkIDA6ZC5kYXRhKSl9LG9uRmFpbHVyZTpmdW5jdGlvbihkKXtiLkg9ZC5mYWlsdXJlVHlwZTtiLksuSChiLkgsYy5nZXRTdGF0ZSgpLGMuc3RhdHMsZC5jb21tYW5kLGQuZGF0YSl9fSk7cmV0dXJuIGN9O2suaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3RoaXMuWnx8dGhpcy5OLmluaXQoKTt0aGlzLlo9ITB9Owp2YXIgbEw9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU7aWYoKGU9akwoYSkpPT1udWxsfHwhZS5kZWxlZ2F0ZSl7dmFyIGY9SWMoKT8xNjo2O2dMKCkuSChmLHZvaWQgMCx2b2lkIDAsYi5jb21tYW5kVHlwZSk7ZCh7ZmFpbHVyZVR5cGU6Zn0pO3JldHVybn1qTChhKS5kZWxlZ2F0ZShiLGMsZCk7fTsKZnVuY3Rpb24gbUwoYSxiLGMsZCl7dmFyIGU9aUwoYSk7aWYoZT09PW51bGwpe2QoIl9pc19zdz1mIisoSWMoKT8xNjo2KSsidGUiKTtyZXR1cm59dmFyIGY9Yj8xOjAsZz1NYXRoLnJvdW5kKE5iKCkpLGgsbD0oaD1qTChlLm9yaWdpbikpPT1udWxsP3ZvaWQgMDpoLmluaXRUaW1lLG49bD9nLWw6dm9pZCAwLHA7TSg0MzIpP3A9V2ooKT92b2lkIDA6QS5sb2NhdGlvbi5ocmVmOnA9QS5sb2NhdGlvbi5ocmVmO2xMKGUub3JpZ2luLHtjb21tYW5kVHlwZTowLHBhcmFtczp7dXJsOmEsbWV0aG9kOmYsdGVtcGxhdGVzOmMsYm9keTpifHwiIixwcm9jZXNzUmVzcG9uc2U6ITAsc2luY2VJbml0Om4sYXR0cmlidXRpb25SZXBvcnRpbmc6ITAscmVmZXJlcjpwLHN0cmljdDpNKDU4NCl9fSxmdW5jdGlvbigpe30sZnVuY3Rpb24ocSl7dmFyIHI9Il9pc19zdz1mIitxLmZhaWx1cmVUeXBlLHQsdT0odD1qTChlLm9yaWdpbikpPT0KbnVsbD92b2lkIDA6dC5nZXRTdGF0ZSgpO3UhPT12b2lkIDAmJihyKz0icyIrdSk7ZChuP3IrKCJ0IituKTpyKyJ0ZSIpfSk7fTtmdW5jdGlvbiBuTChhKXtpZihJZig0NykmJmRJKGEsImNjZF9hZGRfMXBfZGF0YSIsITEpJiZXaigpKXt2YXIgYj1hLk07aWYoSWMoKSYmYmcoImludGVybmFsX3N3X2FsbG93ZWQiLCIiKSl7dmFyIGM9ZWsoYiksZD1XaigpP1hqKCk6dm9pZCAwLGU7ZT1kP3twYXRoOmQsZW86ImZ1bGwifTpjP3twYXRoOmMsZW86ImxpdGUifTp2b2lkIDA7aWYoZSl7dmFyIGY9ZS5lbyxnPW5ldyBVUkwoZS5wYXRoLEEubG9jYXRpb24ub3JpZ2luKTtpZihnLm9yaWdpbj09PUEubG9jYXRpb24ub3JpZ2luJiZweShmKT09PXZvaWQgMCl7dmFyIGg9b20oam0uYmEuT2gse30pO2hbZl18fChoW2ZdPW5ldyBueShnKSl9fX19fTtmdW5jdGlvbiBzTCgpe3ZhciBhO2E9YT09PXZvaWQgMD9kb2N1bWVudDphO3ZhciBiO3JldHVybiEoKGI9YS5mZWF0dXJlUG9saWN5KT09bnVsbHx8IWIuYWxsb3dlZEZlYXR1cmVzKCkuaW5jbHVkZXMoImF0dHJpYnV0aW9uLXJlcG9ydGluZyIpKX07ZnVuY3Rpb24gd0woYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7dmFyIGU9RnAoKSxmPURwKGUpO2lmKGYudXJsKWlmKGQpe3ZhciBnPWMoZi51cmwpO2IhPT1nJiZVKGEsRi5ELlBlLGcpfWVsc2V7dmFyIGg9Zi51cmw7YiE9PWgmJlUoYSxGLkQuUGUsYyhoKSl9fTsKdmFyIHhMPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwpe3ZhciBiPVN0cmluZyhhKS5zdWJzdHJpbmcoMCw1MTIpLGM9Yi5pbmRleE9mKCIjIik7cmV0dXJuIGM9PT0tMT9iOmIuc3Vic3RyaW5nKDAsYyl9cmV0dXJuIiJ9LHlMPWZ1bmN0aW9uKCl7dmFyIGE9Qi50aXRsZTtpZihhPT09dm9pZCAwfHxhPT09IiIpcmV0dXJuIiI7YT1lbmNvZGVVUklDb21wb25lbnQoYSk7Zm9yKHZhciBiPTI1NjtiPjAmJktqKGEuc3Vic3RyaW5nKDAsYikpPT09dm9pZCAwOyliLS07cmV0dXJuIEtqKGEuc3Vic3RyaW5nKDAsYikpfHwiIn07ZnVuY3Rpb24gQUwoYSl7VihhLEguSi5KYSwhMCk7VihhLEguSi5FYixOYigpKTtWKGEsSC5KLnluLGEuTS5ldmVudE1ldGFkYXRhW0guSi5KYV0pfTt2YXIgU0w9ZnVuY3Rpb24oYSl7dmFyIGI9WG8oRi5ELmthKT9taigicHNjZGwiKToiZGVuaWVkIjtiIT1udWxsJiZVKGEsRi5ELmpoLGIpfTt2YXIgVEw9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9fTt2YXIgVUw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLk07aWYoYj09PXZvaWQgMD8wOmIpe3ZhciBkPWMuZ2V0TWVyZ2VkVmFsdWVzKEYuRC5PYSk7WWIoZCkmJlUoYSxGLkQuTGksWWIoZCkpfXZhciBlPU9vKGZEKEYuRC5PYSkpLGY9Yy5nZXRNZXJnZWRWYWx1ZXMoRi5ELk9hLDEsZSksZz1jLmdldE1lcmdlZFZhbHVlcyhGLkQuT2EsMiksaD1ZYihuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGYsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxUTC5IKSksIi4iKSxsPVliKGcsIi4iKTtoJiZVKGEsRi5ELlhjLGgpO2wmJlUoYSxGLkQuVmMsbCl9O3ZhciBWTD1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLnRxKTtiJiZVKGEsRi5ELklsLGIpfTtmdW5jdGlvbiBXTChhKXt2YXIgYj1LQighMSk7aWYoYiE9bnVsbCYmYi5zdGF0dXMpe3ZhciBjPXtndGI6Yi5zdGF0dXN9O2IuZGVsYXkmJihjLmd0YmQ9Yi5kZWxheSk7YS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLGMpfX07dmFyIFhMPWZ1bmN0aW9uKGEpe3ptKCk9PT0iVVMtQ08iJiZVKGEsRi5ELkxlLDEpfTt2YXIgWUw9e1JhOntDazoxLHpuOjIsSG46MyxJbjo0LEpuOjUsd246Nn19O1lMLlJhW1lMLlJhLkNrXT0iQURPQkVfQ09NTUVSQ0UiO1lMLlJhW1lMLlJhLnpuXT0iU1FVQVJFU1BBQ0UiO1lMLlJhW1lMLlJhLkhuXT0iV09PX0NPTU1FUkNFIjtZTC5SYVtZTC5SYS5Jbl09IldPT19DT01NRVJDRV9MRUdBQ1kiO1lMLlJhW1lMLlJhLkpuXT0iV09SRF9QUkVTUyI7WUwuUmFbWUwuUmEud25dPSJTSE9QSUZZIjtmdW5jdGlvbiBaTChhKXt2YXIgYj1BO3JldHVybiBLaihiLmVzY2FwZShiLmF0b2IoYSkpKX0KZnVuY3Rpb24gJEwoKXt0cnl7aWYoIU0oNDk4KSYmIU0oNDI1KSlyZXR1cm5bXTt2YXIgYT1ubShqbS5iYS5sbik7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gYTt2YXIgYj1bXSxjO2E6e3RyeXtjPSEhQi5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbZGF0YS1yZXF1aXJlbW9kdWxlXj0ibWFnZS8iXScpO2JyZWFrIGF9Y2F0Y2goeSl7fWM9ITF9YyYmYi5wdXNoKFlMLlJhLkNrKTt2YXIgZDthOnt0cnl7dmFyIGU9WkwoIllYTnpaWFJ6TG5OeGRXRnlaWE53WVdObExtTnZiUzg9Iik7ZD1lPyEhQi5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjXj0iLy8nK2UrJyJdJyk6ITE7YnJlYWsgYX1jYXRjaCh5KXt9ZD0hMX1kJiZiLnB1c2goWUwuUmEuem4pO3ZhciBmO2E6e2lmKE0oNDI1KSl0cnl7dmFyIGc9WkwoImMyaHZjR2xtZVM1amIyMD0iKSxoPVpMKCJjMmh2Y0dsbWVXTmtiaTVqYjIwPSIpO2Y9ZyYmaD8hIUIucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyo9ImNkbi4nK2crJyJdLG1ldGFbcHJvcGVydHk9Im9nOmltYWdlIl1bY29udGVudCo9ImNkbi4nKwooZysnIl0sbGlua1tyZWw9InByZWNvbm5lY3QiXVtocmVmKj0iY2RuLicpKyhnKyciXSxsaW5rW3JlbD0icHJlY29ubmVjdCJdW2hyZWYqPSJmb250cy4nKSsoaCsnIl0sbGlua1tyZWw9InByZWNvbm5lY3QiXVtocmVmKj0iaXRlcmFibGUtc2hvcGlmeSJdLGxpbmtbcmVsPSJwcmVjb25uZWN0Il1baHJlZio9InYuJykrKGcrJyJdJykpOiExO2JyZWFrIGF9Y2F0Y2goeSl7fWY9ITF9ZiYmYi5wdXNoKFlMLlJhLnduKTt2YXIgbDthOnt0cnl7bD0hIUIucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyo9Indvb2NvbW1lcmNlIl0sbGlua1tocmVmKj0id29vY29tbWVyY2UiXSxbY2xhc3N8PSJ3b29jb21tZXJjZSJdJyk7YnJlYWsgYX1jYXRjaCh5KXt9bD0hMX1sJiZiLnB1c2goWUwuUmEuSW4pO3ZhciBuO2E6e3RyeXt2YXIgcCxxPSgocD1CLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6cC5ob3N0bmFtZSl8fCIiLHIsdD0oKHI9Qi5sb2NhdGlvbik9PW51bGw/dm9pZCAwOnIub3JpZ2luKXx8CiIiLHU9WkwoIkxuZHZjbVJ3Y21WemN5NWpiMjA9Iiksdj1aTCgiTHk5ekxuY3ViM0puIik7bj11JiZ2P1RiKHEsdSl8fCEhQi5xdWVyeVNlbGVjdG9yKCdbc3JjXj0iJyt0Kycvd3AtY29udGVudCJdLG1ldGFbbmFtZT0iZ2VuZXJhdG9yIl1bY29udGVudF49IldvcmRQcmVzcyAiXSxsaW5rW3JlbD0iZG5zLXByZWZldGNoIl1baHJlZj0iJysodisnIl0nKSk6ITE7YnJlYWsgYX1jYXRjaCh5KXt9bj0hMX1uJiZiLnB1c2goWUwuUmEuSm4pO3ZhciB4O2E6e3RyeXt4PSEhQi5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPSJ3b29jb21tZXJjZSJdLG1ldGFbbmFtZT0iZ2VuZXJhdG9yIl1bY29udGVudF49Ildvb0NvbW1lcmNlICJdJyk7YnJlYWsgYX1jYXRjaCh5KXt9eD0hMX14JiZiLnB1c2goWUwuUmEuSG4pO1VCKCkmJm1tKGptLmJhLmxuLGIpO3JldHVybiBifWNhdGNoKHkpe31yZXR1cm5bXX07ZnVuY3Rpb24gd00oYSl7aWYoTSg0MjUpJiZRKGEsSC5KLkZjKSl7dmFyIGI9TmYoNjcsMTUwMCksYz1hLm1lcmdlSGl0RGF0YUZvcktleSxkPUYuRC5UYSxlPXt9O2MuY2FsbChhLGQsZSl9fTt2YXIgeE09InBsYXRmb3JtIHBsYXRmb3JtVmVyc2lvbiBhcmNoaXRlY3R1cmUgbW9kZWwgdWFGdWxsVmVyc2lvbiBiaXRuZXNzIGZ1bGxWZXJzaW9uTGlzdCB3b3c2NCIuc3BsaXQoIiAiKTtmdW5jdGlvbiB5TShhKXt2YXIgYjtyZXR1cm4oYj1hLmdvb2dsZV90YWdfZGF0YSkhPW51bGw/YjphLmdvb2dsZV90YWdfZGF0YT17fX1mdW5jdGlvbiB6TShhKXt2YXIgYixjO3JldHVybihjPShiPWEuZ29vZ2xlX3RhZ19kYXRhKT09bnVsbD92b2lkIDA6Yi51YWNoX3Byb21pc2UpIT1udWxsP2M6bnVsbH1mdW5jdGlvbiBBTShhKXt2YXIgYixjO3JldHVybiB0eXBlb2YoKGI9YS5uYXZpZ2F0b3IpPT1udWxsP3ZvaWQgMDooYz1iLnVzZXJBZ2VudERhdGEpPT1udWxsP3ZvaWQgMDpjLmdldEhpZ2hFbnRyb3B5VmFsdWVzKT09PSJmdW5jdGlvbiJ9CmZ1bmN0aW9uIEJNKGEpe2lmKCFBTShhKSlyZXR1cm4gbnVsbDt2YXIgYj15TShhKTtpZihiLnVhY2hfcHJvbWlzZSlyZXR1cm4gYi51YWNoX3Byb21pc2U7dmFyIGM9YS5uYXZpZ2F0b3IudXNlckFnZW50RGF0YS5nZXRIaWdoRW50cm9weVZhbHVlcyh4TSkudGhlbihmdW5jdGlvbihkKXtiLnVhY2ghPW51bGx8fChiLnVhY2g9ZCk7cmV0dXJuIGR9KTtyZXR1cm4gYi51YWNoX3Byb21pc2U9Y307CnZhciBDTT1mdW5jdGlvbigpe3RoaXMud2luZG93PUE7dGhpcy5OPU5ifTtDTS5wcm90b3R5cGUuUj1mdW5jdGlvbigpe2lmKEFNKHRoaXMud2luZG93KSYmKHRoaXMuWj10aGlzLk4oKSwhek0odGhpcy53aW5kb3cpKSl7dmFyIGE9Qk0odGhpcy53aW5kb3cpO2EmJmEudGhlbihmdW5jdGlvbigpe1AoOTUpfSkuY2F0Y2goZnVuY3Rpb24oKXtQKDk2KX0pfX07Q00ucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLndpbmRvdy5nb29nbGVfdGFnX2RhdGEsYjtpZihhIT1udWxsJiZhLnVhY2gpe3ZhciBjPWEudWFjaCxkPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYyk7Yy5mdWxsVmVyc2lvbkxpc3QmJihkLmZ1bGxWZXJzaW9uTGlzdD1jLmZ1bGxWZXJzaW9uTGlzdC5zbGljZSgwKSk7Yj1kfWVsc2UgYj1udWxsO3JldHVybiBifTtDTS5wcm90b3R5cGUuZmE9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPXRoaXMsZD1mdW5jdGlvbihoLGwpe3RyeXthKGgsbCl9Y2F0Y2gobil7fX0sCmU9dGhpcy5IKCk7aWYoZSlkKGUpO2Vsc2V7dmFyIGY9ek0odGhpcy53aW5kb3cpO2lmKGYpe2I9TWF0aC5taW4oTWF0aC5tYXgoaXNGaW5pdGUoYik/YjowLDApLDFFMyk7dmFyIGc9dGhpcy53aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2QuS2d8fChkLktnPSEwLFAoMTA2KSxkKG51bGwsRXJyb3IoIlRpbWVvdXQiKSkpfSxiKTtmLnRoZW4oZnVuY3Rpb24oaCl7ZC5LZ3x8KGQuS2c9ITAsUCgxMDQpLGMud2luZG93LmNsZWFyVGltZW91dChnKSxkKGgpKX0pLmNhdGNoKGZ1bmN0aW9uKGgpe2QuS2d8fChkLktnPSEwLFAoMTA1KSxjLndpbmRvdy5jbGVhclRpbWVvdXQoZyksZChudWxsLGgpKX0pfWVsc2UgZChudWxsKX19O0NNLnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWiE9PXZvaWQgMH07dmFyIERNPWZ1bmN0aW9uKCl7dmFyIGE7YT1hPT09dm9pZCAwP0E6YTtyZXR1cm4gQU0oYSl9LEVNPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2JbRi5ELmNnXT1hLmFyY2hpdGVjdHVyZTsKYltGLkQuZGddPWEuYml0bmVzczthLmZ1bGxWZXJzaW9uTGlzdCYmKGJbRi5ELmVnXT1hLmZ1bGxWZXJzaW9uTGlzdC5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChjLmJyYW5kfHwiIikrIjsiK2VuY29kZVVSSUNvbXBvbmVudChjLnZlcnNpb258fCIiKX0pLmpvaW4oInwiKSk7YltGLkQuZmddPWEubW9iaWxlPyIxIjoiMCI7YltGLkQuZ2ddPWEubW9kZWw7YltGLkQuaGddPWEucGxhdGZvcm07YltGLkQuaWddPWEucGxhdGZvcm1WZXJzaW9uO2JbRi5ELmpnXT1hLndvdzY0PyIxIjoiMCI7cmV0dXJuIGJ9LEZNPW5ldyBDTTt2YXIgR009ZnVuY3Rpb24oYSl7aWYoIURNKCkpUCg4Nyk7ZWxzZSBpZihGTS5LKCkpe1AoODUpO3ZhciBiPUZNLkgoKTtpZihiKXtpZihiKWZvcih2YXIgYz1FTShiKSxkPW0oT2JqZWN0LmtleXMoYykpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO1UoYSxmLGNbZl0pfX1lbHNlIFAoODYpfX07ZnVuY3Rpb24gSE0oYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1RKGEsSC5KLnNnKSxkPWRJKGEsImN1c3RvbV9ldmVudF9hY2NlcHRfcnVsZXMiLCExKSYmIWI7aWYoYyl7dmFyIGU9Yy5pbmRleE9mKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpPj0wLGY9ITA7UShhLEguSi5DYykmJihmPVEoYSxILkouTmIpPT09dmsoKSk7ZSYmZj9WKGEsSC5KLmtpLCEwKTooVihhLEguSi5raSwhMSksZHx8KGEuaXNBYm9ydGVkPSEwKSk7aWYoYS5jYW5CZUFjY2VwdGVkKCkpe3ZhciBnPXVrKCkuaW5kZXhPZihhLnRhcmdldC5kZXN0aW5hdGlvbklkKT49MCxoPSExO2lmKCFnKXt2YXIgbCxuPShsPW5rKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpKT09bnVsbD92b2lkIDA6bC5jYW5vbmljYWxDb250YWluZXJJZDtuJiYoaD12aygpPT09bil9Z3x8aD9RKGEsSC5KLmtpKSYmYS5hY2NlcHQoKTphLmlzQWJvcnRlZD0hMH1lbHNlIGEuaXNBYm9ydGVkPSEwfX07dmFyIElNPWZ1bmN0aW9uKGEpe3ZhciBiPU8oYS5NLEYuRC5aYyksYz1PKGEuTSxGLkQuWWMpO2ImJiFjPyhhLmV2ZW50TmFtZSE9PUYuRC53YSYmYS5ldmVudE5hbWUhPT1GLkQueWYmJlAoMTMxKSxhLmlzQWJvcnRlZD0hMCk6IWImJmMmJihQKDEzMiksYS5pc0Fib3J0ZWQ9ITApfTt2YXIgSk09ZnVuY3Rpb24oYSl7aWYoYS5ldmVudE5hbWU9PT1GLkQud2Epe3ZhciBiPUlmKDExKSxjPVEoYSxILkouSHEpOyEoIU0oNTUwKSYmYnx8Yyl8fGEudGFyZ2V0LkpjKCl8fFlHKCJpZGNfY29uZmlnX3B2IixhLnRhcmdldC5kZXN0aW5hdGlvbklkKXx8KGEuaXNBYm9ydGVkPSEwKX19O3ZhciBMTT1mdW5jdGlvbihhLGIpe0tNLk4oYSxiKX0sTU09ZnVuY3Rpb24oKXt0aGlzLkg9e319O01NLnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5IW2FdO2N8fChjPXRoaXMuSFthXT1bXSk7Yy5wdXNoKGIpfTtNTS5wcm90b3R5cGUuSz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLkhbYS50YXJnZXQuZGVzdGluYXRpb25JZF07aWYoIWEuaXNBYm9ydGVkJiZiKWZvcih2YXIgYz1mSShhKSxkPTA7ZDxiLmxlbmd0aDsrK2Qpe3RyeXtiW2RdKGMpfWNhdGNoKGUpe2EuaXNBYm9ydGVkPSEwfWlmKGEuaXNBYm9ydGVkKWJyZWFrfX07dmFyIEtNPW5ldyBNTTt2YXIgTk09ZnVuY3Rpb24oYSl7S00uSyhhKTt9O3ZhciBPTT1mdW5jdGlvbihhKXthJiYoQXAoNDk1LGEpLEFwKDU2NyxhKSxBcCg0NTAsYSksQXAoNDQzLGEpLEFwKDU4NyxhKSxBcCg1NzYsYSksQXAoNTcwLGEpLEFwKDU4MSxhKSxBcCg2MDIsYSkpfSxQTT1mdW5jdGlvbihhKXtpZihRKGEsSC5KLndmKSYmWG8oZnApKXt2YXIgYj1RKGEsSC5KLkdhKSxjPVEoYSxILkouZGEpIT09WC5WLnViJiZRKGEsSC5KLmRhKSE9PVguVi5PYiYmUShhLEguSi5kYSkhPT1YLlYuRmImJmEuZXZlbnROYW1lIT09Ri5ELkpiO0h2KGIsYyk7dmFyIGQ9RHZbR3YoYi5wcmVmaXgpXTtPTShkKTtVKGEsRi5ELkVkLGQpfX07ZnVuY3Rpb24gUU0oKXtyZXR1cm4ga2ooImRlZHVwZV9nY2xpZCIsZnVuY3Rpb24oKXtyZXR1cm4gQXYoKX0pfTt2YXIgUk09L14od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9dD8pPyQvLFNNPS9ed3d3Lmdvb2dsZWFkc2VydmljZXMuY29tJC87ZnVuY3Rpb24gVE0oYSl7YXx8KGE9VU0oKSk7cmV0dXJuIGEuTnQ/ITE6YS5uc3x8YS5xc3x8YS52c3x8YS5yc3x8YS5EZ3x8YS5UaHx8YS5Ucnx8YS5WaD09PSJhdy5kcyJ8fE0oMjM1KSYmYS5WaD09PSJhdy5kdiJ8fGEuWXI/ITA6ITF9CmZ1bmN0aW9uIFVNKCl7dmFyIGE9e30sYj1VcSghMCk7YS5OdD0hIWIuX3VwO3ZhciBjPWVzKCksZD1hdCgpO2EubnM9Yy5hdyE9PXZvaWQgMDthLnFzPWMuZGMhPT12b2lkIDA7YS52cz1jLndicmFpZCE9PXZvaWQgMDthLnJzPWMuZ2JyYWlkIT09dm9pZCAwO2EuVmg9dHlwZW9mIGMuZ2Nsc3JjPT09InN0cmluZyI/Yy5nY2xzcmM6dm9pZCAwO2EuRGc9ZC5EZzthLlRoPWQuVGg7dmFyIGU9Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiO2EuWXI9Uk0udGVzdChlKTthLlRyPVNNLnRlc3QoZSk7cmV0dXJuIGF9O2Z1bmN0aW9uIFZNKCl7dmFyIGE9QS5fX3VzcGFwaTtpZih5YihhKSl7dmFyIGI9IiI7dHJ5e2EoImdldFVTUERhdGEiLDEsZnVuY3Rpb24oYyxkKXtpZihkJiZjKXt2YXIgZT1jLnVzcFN0cmluZztlJiZSZWdFeHAoIl5bXFxkYS16QS1aLV17MSwyMH0kIikudGVzdChlKSYmKGI9ZSl9fSl9Y2F0Y2goYyl7fXJldHVybiBifX07CnZhciBXTT1mdW5jdGlvbihhKXt2YXIgYj1YbyhmcCk7VihhLEguSi5ZZSxPKGEuTSxGLkQubWIpIT1udWxsJiZPKGEuTSxGLkQubWIpIT09ITEmJiFiKTt2YXIgYz1RKGEsSC5KLmRqKSxkPU8oYS5NLEYuRC51YykhPT0hMSxlPUxLKGEpO2R8fFUoYSxGLkQuSGQsIjEiKTt2YXIgZj1IcihlLnByZWZpeCksZz1RKGEsSC5KLnNhKXx8UShhLEguSi51Zyl8fFEoYSxILkouV2UpO2N8fGd8fFUoYSwiXyZhcHZjIiwiMCIpO2EuTS5pc0d0bUV2ZW50JiZVKGEsRi5ELklsLCJnIik7VShhLEYuRC5FZCk7VShhLEYuRC5NYik7aWYoYiYmKFUoYSxGLkQuTWIseUwoKSksZCkpe0h2KGUpO3ZhciBoPUR2W0d2KGUucHJlZml4KV07VShhLEYuRC5FZCxoKTtPTShoKX1pZihhLmV2ZW50TmFtZT09PUYuRC53YSYmIWcpe3ZhciBsPU8oYS5NLEYuRC56Yyksbj1PKGEuTSxGLkQuRGIpfHx7fTtQSyh7VG46ZCxtbzpuLFFvOmwsVW46ZX0pOyFjJiZZcyhmKSYmKFYoYSxILkoudmQsITApLFUoYSwiXyZhcHZjIiwKIjEiKSl9aWYoYylhLmlzQWJvcnRlZD0hMDtlbHNle2EudGFyZ2V0LmRlc3RpbmF0aW9uSWQmJlUoYSxGLkQuUWUsYS50YXJnZXQuZGVzdGluYXRpb25JZCk7VShhLEYuRC5VYixhLmV2ZW50TmFtZSk7YS5ldmVudE5hbWU9PT1GLkQud2EmJlUoYSxGLkQuVWIsRi5ELnNjKTtpZihRKGEsSC5KLnNhKSlVKGEsRi5ELlViLEYuRC53cCksVShhLEYuRC5zYSwiMSIpO2Vsc2UgaWYoUShhLEguSi51ZykpVShhLEYuRC5VYixGLkQuSHApO2Vsc2UgaWYoUShhLEguSi5XZSkpVShhLEYuRC5VYixGLkQuRXApO2Vsc2V7dmFyIHA9ZXMoKTtVKGEsRi5ELkRkLHAuZ2NsaWQpO1UoYSxGLkQuS2QscC5kY2xpZCk7VShhLEYuRC5BbCxwLmdjbHNyYyk7aWYoIVIoYSxGLkQuRGQpJiYhUihhLEYuRC5LZCl8fE0oNDIxKSlVKGEsRi5ELkVlLHAud2JyYWlkKSxVKGEsRi5ELkJmLHAuZ2JyYWlkKTt2YXIgcT1NKDU4OSkscj1mdW5jdGlvbihmYSl7cmV0dXJuIGZhLnJlcGxhY2UoL1tcPyNdLiokLywiIil9LAp0PSEhTyhhLk0sRi5ELnphKSx1PXE/dD9mdW5jdGlvbihmYSl7cmV0dXJuIHhMKHIoZmEpKX06ZnVuY3Rpb24oZmEpe3JldHVybiB4TChmYS5yZXBsYWNlKC8jLiokLywiIikpfTpyLHY9YnQodSk7VShhLEYuRC56YSx2KTt2YXIgeD0hIU8oYS5NLEYuRC5VYSkseT1CLnJlZmVycmVyO1UoYSxGLkQuVWEscT94P3IoeSk6eS5yZXBsYWNlKC8jLiokLywiIik6Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiKTt3TChhLHYsdSwhMCk7aWYoS2Mpe3ZhciB6PUxqKFJqKEtjKSwiaG9zdCIpO3omJlUoYSxGLkQuYm0seil9aWYoIVEoYSxILkouV2UpKXt2YXIgQz1hdCgpO1UoYSxGLkQuemYsQy5EZyk7VShhLEYuRC5BZixDLlNyKX12YXIgRD1VTSgpO1RNKEQpJiZVKGEsRi5ELlBkLCIxIik7VShhLEYuRC5EbCxRTSgpKTtVcSghMSkuX3VwPT09IjEiJiZVKGEsRi5ELlFsLCIxIil9d28uSD0hMDtVKGEsRi5ELlNiKTtVKGEsRi5ELmxiKTtpZihNKDQyMSkpe3ZhciBJPUZyKGUpOwpJLmxlbmd0aD4wJiZVKGEsRi5ELlNiLEkuam9pbigiLiIpKTt2YXIgRz1EcihmKyJfYXciKTtHLmxlbmd0aD4wJiZVKGEsRi5ELmxiLEcuam9pbigiLiIpKX1lbHNlIGlmKCFSKGEsRi5ELkRkKSYmIVIoYSxGLkQuS2QpJiZXcyhmKSl7dmFyIE49RnIoZSk7Ti5sZW5ndGg+MCYmVShhLEYuRC5TYixOLmpvaW4oIi4iKSl9ZWxzZSBpZighUihhLEYuRC5FZSkmJmIpe3ZhciBTPURyKGYrIl9hdyIpO1MubGVuZ3RoPjAmJlUoYSxGLkQubGIsUy5qb2luKCIuIikpfVUoYSxGLkQuVWwscWQoKSk7YS5NLmlzR3RtRXZlbnQmJihhLk0uRWFbRi5ELlJjXT1mRChGLkQuUmMpKTtTdChhLk0pP1UoYSxGLkQuZGUsITEpOlUoYSxGLkQuZGUsITApO1YoYSxILkouQmssITApO3ZhciBXPVZNKCk7VyE9PXZvaWQgMCYmVShhLEYuRC5rZyxXfHwiZXJyb3IiKTt2YXIgZWE9THQoKTtlYSYmVShhLEYuRC5LZSxlYSk7dmFyIGphPUt0KCk7amEmJlUoYSxGLkQuT2UsamEpO1EoYSxILkouUGMpfHxWKGEsSC5KLkphLAohMSl9fTsKdmFyIFhNPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/ITA6YjtjPWM9PT12b2lkIDA/e306YztpZihhLmV2ZW50TmFtZT09PUYuRC5KYiYmIWEuTS5pc0d0bUV2ZW50KXt2YXIgZD1PKGEuTSxGLkQuU2YpO2lmKHR5cGVvZiBkPT09ImZ1bmN0aW9uIiYmIVEoYSxILkouc2EpKXt2YXIgZT1TdHJpbmcoTyhhLk0sRi5ELlRmKSksZj1lO2NbZV0mJihmPWNbZV0pO3ZhciBnPVIoYSxmKXx8TyhhLk0sZSk7aWYoYil7aWYodHlwZW9mIGQ9PT0iZnVuY3Rpb24iKWlmKGU9PT1GLkQubGImJmchPT12b2lkIDApe3ZhciBoPWcuc3BsaXQoIi4iKTtoLmxlbmd0aD09PTA/ZCh2b2lkIDApOmgubGVuZ3RoPT09MT9kKGhbMF0pOmQoaCl9ZWxzZSBpZihlPT09Ri5ELnFxJiZNKDI1OCkpe3ZhciBsLG49e307WG8oZnApJiYobi5hdWlkPVIoYSxGLkQuRWQpKTt2YXIgcD1VTSgpO2lmKFRNKHApKW4uZ2FkX3NvdXJjZT1wLkRnLG4uZ2FkX2NhbXBhaWduaWQ9cC5UaCxuLnNlc3Npb25fc3RhcnRfdGltZV91c2VjPQooRGF0ZS5ub3coKSoxRTMpLnRvU3RyaW5nKCksbi5sYW5kaW5nX3BhZ2VfdXJsPUEubG9jYXRpb24uaHJlZixuLmxhbmRpbmdfcGFnZV9yZWZlcnJlcj1CLnJlZmVycmVyLG4ubGFuZGluZ19wYWdlX3VzZXJfYWdlbnQ9SGMudXNlckFnZW50O2Vsc2V7dmFyIHE9UShhLEguSi5HYSk7bi5nYWRfc291cmNlPVJzKHEucHJlZml4KS5FZ31sPWJ0b2EoSlNPTi5zdHJpbmdpZnkobikpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPSskLywiIik7ZChsKX1lbHNlIGQoZyl9ZWxzZSBkKGcpfWEuaXNBYm9ydGVkPSEwfX07dmFyIFlNPWZ1bmN0aW9uKGEpe2lmKE0oNDI1KSYmUShhLEguSi5GYykpe2Zvcih2YXIgYj1bIl8mYXB2YyIsInRpZHMiLEYuRC5UYSxGLkQuUWksRi5ELlViLEYuRC5RZSxGLkQuVmMsRi5ELlhjXSxjPW0oZXUoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2lmKGU9PT1GLkQuemEpe3ZhciBmPVIoYSxlKTtmJiYoZj1mLnJlcGxhY2UoL1tcPyNdLiokLywiIikpO1UoYSxlLGYpfWVsc2UgYi5pbmNsdWRlcyhlKXx8VShhLGUpfVYoYSxILkouWGcpO1YoYSxILkouaGQpfX07ZnVuY3Rpb24gWk0oYSl7aWYoZm4uSylpZih3by5IPSEwLGEuZXZlbnROYW1lPT09Ri5ELndhKXpvKGEuTSxhLnRhcmdldC5pZCk7ZWxzZXtRKGEsSC5KLlBjKXx8KHdvLktbYS50YXJnZXQuaWRdPSEwKTt2YXIgYj1RKGEsSC5KLk5iKTtaQihiKX19O3ZhciAkTT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWI9PT12b2lkIDA/e306YjtjPWYuU2o9PT12b2lkIDA/ITE6Zi5TajtkPWYuTWo9PT12b2lkIDA/ITE6Zi5NajtlPWYua289PT12b2lkIDA/ITE6Zi5rbztkfHwoYS5NLmlzR3RtRXZlbnQ/UShhLEguSi5kYSkhPT1YLlYueGEmJmEuZXZlbnROYW1lJiZVKGEsRi5ELlViLGEuZXZlbnROYW1lKTpVKGEsRi5ELlViLGEuZXZlbnROYW1lKSk7R2IoYS5NLkVhLGZ1bmN0aW9uKGcsaCl7TXpbZ118fGMmJkJvW2ddfHxlJiZPeltnXXx8VShhLGcsaCl9KX07dmFyIGFOPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1tKFtGLkQuUGEsRi5ELlFhLEYuRC5lYixGLkQuTmUsRi5ELkdlLEYuRC5VZCxGLkQuSWUsRi5ELlRjLEYuRC5MZCxGLkQua2gsRi5ELkZmLEYuRC5EZixGLkQuRWYsRi5ELkNmLEYuRC53aSxGLkQuU2QsRi5ELlFkLEYuRC5SZCxGLkQudGJdKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlhLmNvcHlUb0hpdERhdGEoYy52YWx1ZSl9O2Z1bmN0aW9uIGJOKGEsYil7cmV0dXJuIGtyKCJnc2lkX2RjIix7dmFsdWU6e2pvaW5JZDphLGxhc3RKb2luZWRUaW1lTXM6Yn0sZXhwaXJlczpiKzNFNX0pPT09MD8hMDohMX07CnZhciBjTj1mdW5jdGlvbihhKXtpZihYbyhmcCkpe3ZhciBiO2E6e3ZhciBjPW5yKCJnc2lkX2RjIik7aWYoYy5lcnJvcj09PTAmJmMudmFsdWUmJnR5cGVvZiBjLnZhbHVlPT09Im9iamVjdCIpe3ZhciBkPWMudmFsdWU7aWYoZC52YWx1ZSYmdHlwZW9mIGQudmFsdWU9PT0ib2JqZWN0Iil7dmFyIGU9ZC52YWx1ZTtpZihlLmpvaW5JZCYmZS5sYXN0Sm9pbmVkVGltZU1zJiZ0eXBlb2YgZS5qb2luSWQ9PT0ic3RyaW5nIiYmdHlwZW9mIGUubGFzdEpvaW5lZFRpbWVNcz09PSJudW1iZXIiKXtiPWU7YnJlYWsgYX19fWI9dm9pZCAwfXZhciBmPWIsZz1mPT1udWxsP3ZvaWQgMDpmLmpvaW5JZCxoPU5iKCk7aWYoIWZ8fCFnfHxmLmxhc3RKb2luZWRUaW1lTXM8aC0zRTUpe3ZhciBsPWNjKCk7Zz1sJiZiTihsLE5iKCkpP2w6dm9pZCAwO2cmJlYoYSxILkouaGQsITApfWVsc2UgZyYmZi5sYXN0Sm9pbmVkVGltZU1zPGgtNkU0JiZiTihmLmpvaW5JZCxoKSYmVihhLEguSi5oZCwhMCk7ZyYmTSg0NzQpJiYKVihhLEguSi5YZyxnKX19O3ZhciBkTj1mdW5jdGlvbihhKXtWKGEsSC5KLndmLE8oYS5NLEYuRC51YykhPT0hMSk7VihhLEguSi5HYSxMSyhhKSk7VihhLEguSi5YZSxPKGEuTSxGLkQubWIpIT1udWxsJiZPKGEuTSxGLkQubWIpIT09ITEpO1YoYSxILkoud2QsU3QoYS5NKSl9O3ZhciBlTj17enE6e1V0OiJjZCIsZnA6ImNlIixWdDoiY2YiLFd0OiJjcGYiLFh0OiJjdSJ9fTt2YXIgZk49ZnVuY3Rpb24oYSl7dmFyIGI9ZU4uenEuZnAsYz1PKGEuTSxGLkQuQ2IpO1IoYSxGLkQuZWQpfHxVKGEsRi5ELmVkLHt9KTtSKGEsRi5ELmVkKVtiXT1jfTtmdW5jdGlvbiBnTihhLGIpe2I9Yj09PXZvaWQgMD8hMDpiO3ZhciBjPXdiKHJiLkdUQUdfRVZFTlRfRkVBVFVSRV9DSEFOTkVMfHxbXSk7YyYmKFUoYSxGLkQuVmYsYyksYiYmdWIoKSl9O3ZhciBoTj1mdW5jdGlvbihhKXt2YXIgYj1hLk0uZ2V0TWVyZ2VkVmFsdWVzKEYuRC5UYSk7YiYmYS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLGIpfTt2YXIgaU49ZnVuY3Rpb24oYSl7dmFyIGI9T3AoITEpO1UoYSxGLkQuTWUsYil9O3ZhciBqTj1mdW5jdGlvbihhKXtRKGEsSC5KLndkKT9VKGEsRi5ELmRlLCIwIik6VShhLEYuRC5kZSwiMSIpfTt2YXIga049ZnVuY3Rpb24oYSxiKXtpZihiPT09dm9pZCAwfHxiKXt2YXIgYz1WTSgpO2MhPT12b2lkIDAmJlUoYSxGLkQua2csY3x8ImVycm9yIil9dmFyIGQ9THQoKTtkJiZVKGEsRi5ELktlLGQpO3ZhciBlPUt0KCk7ZSYmVShhLEYuRC5PZSxlKX07dmFyIGxOPWZ1bmN0aW9uKGEpe3ZhciBiPW5tKGptLmJhLmtqKSxjPUUoNSk7YiYmYltjXSYmYS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLHtyZXRyeToiMSJ9KX07dmFyIG1OPWZ1bmN0aW9uKGEpe1VxKCExKS5fdXA9PT0iMSImJlUoYSxGLkQuS2ksIjEiKX07CnZhciBuTj1mdW5jdGlvbihhLGIsYyl7aWYoYSE9PXZvaWQgMClyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hLm1hcChmdW5jdGlvbigpe3JldHVybnttb2RlOiJtIixsb2NhdGlvbjpiLHNlbGVjdG9yOmN9fSk6e21vZGU6Im0iLGxvY2F0aW9uOmIsc2VsZWN0b3I6Y319LG9OPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFjKXJldHVybiExO2Zvcih2YXIgZT1TdHJpbmcoYy52YWx1ZSksZixnPXZvaWQgMCxoPWUucmVwbGFjZSgvXFsiPyc/L2csIi4iKS5yZXBsYWNlKC8iPyc/XF0vZywiIikuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIHUudHJpbSgpfSkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1JiYhU2IodSwiIyIpJiYhU2IodSwiLiIpfSksbD0wO2w8aC5sZW5ndGg7bCsrKXt2YXIgbj1oW2xdO2lmKFNiKG4sImRhdGFMYXllci4iKSlmPXVBKG4uc3Vic3RyaW5nKDEwKSksZz1uTihmLCJkIixuKTtlbHNle3ZhciBwPW4uc3BsaXQoIi4iKTtmPUFbcC5zaGlmdCgpXTsKZm9yKHZhciBxPTA7cTxwLmxlbmd0aDtxKyspZj1mJiZmW3BbcV1dO2c9bk4oZiwiaiIsbil9aWYoZiE9PXZvaWQgMClicmVha31pZihmPT09dm9pZCAwKXRyeXt2YXIgcj1CLnF1ZXJ5U2VsZWN0b3JBbGwoZSk7aWYociYmci5sZW5ndGg+MCl7Zj1bXTtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoJiZ0PChiPT09ImVtYWlsInx8Yj09PSJwaG9uZV9udW1iZXIiPzU6MSk7dCsrKWYucHVzaChmZChyW3RdKXx8TGIoclt0XS52YWx1ZSkpO2Y9Zi5sZW5ndGg9PT0xP2ZbMF06ZjtnPW5OKGYsImMiLGUpfX1jYXRjaCh1KXtQKDE0OSl9cmV0dXJuIGY/KGFbYl09ZixkJiZnJiYoZFtiXT1nKSwhMCk6ITF9Owp2YXIgcE49ZnVuY3Rpb24oYSl7aWYoZEkoYSwiY2NkX2FkZF8xcF9kYXRhIiwhMSkmJlhvKGZwKSl7dmFyIGI9YS5NLmliW0YuRC5sbV07aWYoQ2QoYikmJmIuZW5hYmxlX2NvZGUpe3ZhciBjPU8oYS5NLEYuRC5BYyk7aWYoYz09PW51bGwpVihhLEguSi5HbixudWxsKTtlbHNlIGlmKGIuZW5hYmxlX2NvZGUmJkNkKGMpJiYoWnYoYyksVihhLEguSi5HbixjKSksQ2QoYi5zZWxlY3RvcnMpKXt2YXIgZD1ILkouaXIsZTt2YXIgZj1iLnNlbGVjdG9ycyxnPU0oNTIzKTtnPWc9PT12b2lkIDA/ITE6ZztpZihmKXt2YXIgaD17fSxsPSExLG49e307bD1vTihoLCJlbWFpbCIsZi5lbWFpbCxuKXx8bDtsPW9OKGgsInBob25lX251bWJlciIsZi5waG9uZSxuKXx8bDtoLmFkZHJlc3M9W107Zm9yKHZhciBwPWYubmFtZV9hbmRfYWRkcmVzc3x8W10scT0wO3E8cC5sZW5ndGg7cSsrKXt2YXIgcj17fSx0PXt9O2w9b04ociwiZmlyc3RfbmFtZSIscFtxXS5maXJzdF9uYW1lLHQpfHxsO2w9b04ociwKImxhc3RfbmFtZSIscFtxXS5sYXN0X25hbWUsdCl8fGw7bD1vTihyLCJzdHJlZXQiLHBbcV0uc3RyZWV0LHQpfHxsO2w9b04ociwiY2l0eSIscFtxXS5jaXR5LHQpfHxsO2w9b04ociwicmVnaW9uIixwW3FdLnJlZ2lvbix0KXx8bDtsPW9OKHIsImNvdW50cnkiLHBbcV0uY291bnRyeSx0KXx8bDtsPW9OKHIsInBvc3RhbF9jb2RlIixwW3FdLnBvc3RhbF9jb2RlLHQpfHxsO2guYWRkcmVzcy5wdXNoKHIpO2cmJihyLl90YWdfbWV0YWRhdGE9dCl9ZyYmKGguX3RhZ19tZXRhZGF0YT1uKTtlPWw/aDp2b2lkIDB9ZWxzZSBlPXZvaWQgMDtWKGEsZCxlKX19fX07ZnVuY3Rpb24gRk8oYSxiLGMsZCl7fUZPLlA9ImludGVybmFsLmV4ZWN1dGVFdmVudFByb2Nlc3NvciI7ZnVuY3Rpb24gR08oYSl7dmFyIGI7cmV0dXJuIFVkKGIsdGhpcy5ULDEpfUdPLlA9ImludGVybmFsLmV4ZWN1dGVKYXZhc2NyaXB0U3RyaW5nIjtmdW5jdGlvbiBITyhhKXt2YXIgYjtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7dmFyIGM9QTt0cnl7Yj1LaihjLmVzY2FwZShjLmF0b2IoYSkpKX1jYXRjaChkKXtyZXR1cm59cmV0dXJuIGJ9O2Z1bmN0aW9uIElPKGEpe3ZhciBiPSIiO3JldHVybiBifUlPLlA9ImludGVybmFsLmdlbmVyYXRlQ2xpZW50SWQiO2Z1bmN0aW9uIEpPKGEpe3ZhciBiPXt9O3JldHVybiBVZChiKX1KTy5QPSJpbnRlcm5hbC5nZXRBZHNDb29raWVXcml0aW5nT3B0aW9ucyI7ZnVuY3Rpb24gS08oYSxiKXt2YXIgYz0hMTtyZXR1cm4gY31LTy5QPSJpbnRlcm5hbC5nZXRBbGxvd0FkUGVyc29uYWxpemF0aW9uIjtmdW5jdGlvbiBMTygpe3ZhciBhO3JldHVybiBhfUxPLlA9ImludGVybmFsLmdldEFuZFJlc2V0RXZlbnRVc2FnZSI7ZnVuY3Rpb24gTU8oYSxiKXtiPWI9PT12b2lkIDA/ITA6Yjt2YXIgYztyZXR1cm4gY31NTy5QPSJpbnRlcm5hbC5nZXRBdWlkIjtmdW5jdGlvbiBOTygpe3ZhciBhPVtdO3JldHVybiBVZChhKX1OTy5QPSJpbnRlcm5hbC5nZXRDb250YWluZXJJZHMiO2Z1bmN0aW9uIE9PKCl7dmFyIGE9bmV3IGtiO0wodGhpcywicmVhZF9jb250YWluZXJfZGF0YSIpLGEuc2V0KCJjb250YWluZXJJZCIsaWcpLGEuc2V0KCJ2ZXJzaW9uIixrZyksYS5zZXQoImVudmlyb25tZW50TmFtZSIsamcpLGEuc2V0KCJkZWJ1Z01vZGUiLGxnKSxhLnNldCgicHJldmlld01vZGUiLG1nLlBvKSxhLnNldCgiZW52aXJvbm1lbnRNb2RlIixtZy5LciksYS5zZXQoImZpcnN0UGFydHlTZXJ2aW5nIixhaygpKSxhLnNldCgiY29udGFpbmVyVXJsIixLYyksYS5zZXQoImlzR29vZ2xlT25seU1vZGUiLElmKDYyKSksYS5aYSgpO3JldHVybiBhfU9PLnB1YmxpY05hbWU9ImdldENvbnRhaW5lclZlcnNpb24iO2Z1bmN0aW9uIFBPKGEsYil7Yj1iPT09dm9pZCAwPyEwOmI7dmFyIGM7cmV0dXJuIGN9UE8ucHVibGljTmFtZT0iZ2V0Q29va2llVmFsdWVzIjtmdW5jdGlvbiBRTygpe3ZhciBhPSIiO3JldHVybiBhfVFPLlA9ImludGVybmFsLmdldENvcmVQbGF0Zm9ybVNlcnZpY2VzUGFyYW0iO2Z1bmN0aW9uIFJPKCl7cmV0dXJuIHltKCl9Uk8uUD0iaW50ZXJuYWwuZ2V0Q291bnRyeUNvZGUiO2Z1bmN0aW9uIFNPKCl7dmFyIGE9W107YT10aygpO3JldHVybiBVZChhKX1TTy5QPSJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyI7ZnVuY3Rpb24gVE8oYSl7dmFyIGI9bmV3IGtiO3JldHVybiBifVRPLlA9ImludGVybmFsLmdldERldmVsb3BlcklkcyI7ZnVuY3Rpb24gVU8oYSl7dmFyIGI7cmV0dXJuIGJ9VU8uUD0iaW50ZXJuYWwuZ2V0RWNzaWRDb29raWVWYWx1ZSI7ZnVuY3Rpb24gVk8oYSxiKXt2YXIgYz1udWxsO3JldHVybiBjfVZPLlA9ImludGVybmFsLmdldEVsZW1lbnRBdHRyaWJ1dGUiO2Z1bmN0aW9uIFdPKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9V08uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudEJ5SWQiO2Z1bmN0aW9uIFhPKGEpe3ZhciBiPSIiO3JldHVybiBifVhPLlA9ImludGVybmFsLmdldEVsZW1lbnRJbm5lclRleHQiO2Z1bmN0aW9uIFlPKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9WU8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFBhcmVudCI7ZnVuY3Rpb24gWk8oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn1aTy5QPSJpbnRlcm5hbC5nZXRFbGVtZW50UHJldmlvdXNTaWJsaW5nIjtmdW5jdGlvbiAkTyhhLGIpe3ZhciBjPW51bGw7cmV0dXJuIFVkKGMpfSRPLlA9ImludGVybmFsLmdldEVsZW1lbnRQcm9wZXJ0eSI7ZnVuY3Rpb24gYVAoYSl7dmFyIGI7cmV0dXJuIGJ9YVAuUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFZhbHVlIjtmdW5jdGlvbiBiUChhKXt2YXIgYj0wO3JldHVybiBifWJQLlA9ImludGVybmFsLmdldEVsZW1lbnRWaXNpYmlsaXR5UmF0aW8iO2Z1bmN0aW9uIGNQKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9Y1AuUD0iaW50ZXJuYWwuZ2V0RWxlbWVudHNCeUNzc1NlbGVjdG9yIjsKZnVuY3Rpb24gZFAoYSl7dmFyIGI7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO0wodGhpcywicmVhZF9ldmVudF9kYXRhIixhKTt2YXIgYzthOnt2YXIgZD1hLGU9WEYodGhpcykub3JpZ2luYWxFdmVudERhdGE7aWYoZSl7Zm9yKHZhciBmPWUsZz17fSxoPXt9LGw9e30sbj1bXSxwPWQuc3BsaXQoIlxcXFwiKSxxPTA7cTxwLmxlbmd0aDtxKyspe2Zvcih2YXIgcj1wW3FdLnNwbGl0KCJcXC4iKSx0PTA7dDxyLmxlbmd0aDt0Kyspe2Zvcih2YXIgdT1yW3RdLnNwbGl0KCIuIiksdj0wO3Y8dS5sZW5ndGg7disrKW4ucHVzaCh1W3ZdKSx2IT09dS5sZW5ndGgtMSYmbi5wdXNoKGwpO3QhPT1yLmxlbmd0aC0xJiZuLnB1c2goaCl9cSE9PXAubGVuZ3RoLTEmJm4ucHVzaChnKX1mb3IodmFyIHg9W10seT0iIix6PW0obiksQz16Lm5leHQoKTshQy5kb25lO0M9CnoubmV4dCgpKXt2YXIgRD1DLnZhbHVlO0Q9PT1sPyh4LnB1c2goeSkseT0iIik6eT1EPT09Zz95KyJcXCI6RD09PWg/eSsiLiI6eStEfXkmJngucHVzaCh5KTtmb3IodmFyIEk9bSh4KSxHPUkubmV4dCgpOyFHLmRvbmU7Rz1JLm5leHQoKSl7aWYoZj09bnVsbCl7Yz12b2lkIDA7YnJlYWsgYX1mPWZbRy52YWx1ZV19Yz1mfWVsc2UgYz12b2lkIDB9Yj1VZChjLHRoaXMuVCwxKTtyZXR1cm4gYn1kUC5QPSJpbnRlcm5hbC5nZXRFdmVudERhdGEiO2Z1bmN0aW9uIGVQKGEpe3ZhciBiPW51bGw7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO0wodGhpcywicmVhZF9kb21fZWxlbWVudHMiLCJjc3MiLGEpO3RyeXt2YXIgYz1CLnF1ZXJ5U2VsZWN0b3IoYSk7YyYmKGI9bmV3IFBkKGMpKX1jYXRjaChkKXtyZXR1cm4gbnVsbH1yZXR1cm4gYn1lUC5QPSJpbnRlcm5hbC5nZXRGaXJzdEVsZW1lbnRCeUNzc1NlbGVjdG9yIjtmdW5jdGlvbiBmUCgpe3ZhciBhO3JldHVybiBhfWZQLlA9ImludGVybmFsLmdldEdzYUV4cGVyaW1lbnRJZCI7ZnVuY3Rpb24gZ1AoKXtyZXR1cm4gbmV3IFBkKFBrKX1nUC5QPSJpbnRlcm5hbC5nZXRIdG1sSWQiO2Z1bmN0aW9uIGhQKCl7dmFyIGE7cmV0dXJuIGF9aFAuUD0iaW50ZXJuYWwuZ2V0SWZyYW1pbmdTdGF0ZSI7ZnVuY3Rpb24gaVAoYSxiKXt2YXIgYz17fTtyZXR1cm4gVWQoYyl9aVAuUD0iaW50ZXJuYWwuZ2V0TGlua2VyVmFsdWVGcm9tTG9jYXRpb24iO2Z1bmN0aW9uIGpQKCl7dmFyIGE9bmV3IGtiO3JldHVybiBhfWpQLlA9ImludGVybmFsLmdldFByaXZhY3lTdHJpbmdzIjtmdW5jdGlvbiBrUChhLGIpe3ZhciBjO2lmKCFsaChhKXx8IWxoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJzdHJpbmciXSxhcmd1bWVudHMpO3ZhciBkPSRIKGEpfHx7fTtjPVVkKGRbYl0sdGhpcy5UKTtyZXR1cm4gY31rUC5QPSJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiO2Z1bmN0aW9uIGxQKGEsYil7dmFyIGM7aWYoIWxoKGEpfHwhcGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsImJvb2xlYW58dW5kZWZpbmVkIl0sYXJndW1lbnRzKTtMKHRoaXMsImdldF91cmwiLCJxdWVyeSIsYSk7dmFyIGQ9TGooUmooQS5sb2NhdGlvbi5ocmVmKSwicXVlcnkiKSxlPUlqKGQsYSxiKTtjPVVkKGUsdGhpcy5UKTtyZXR1cm4gY31sUC5wdWJsaWNOYW1lPSJnZXRRdWVyeVBhcmFtZXRlcnMiO2Z1bmN0aW9uIG1QKGEsYil7dmFyIGM7cmV0dXJuIGN9bVAucHVibGljTmFtZT0iZ2V0UmVmZXJyZXJRdWVyeVBhcmFtZXRlcnMiO2Z1bmN0aW9uIG5QKGEpe3ZhciBiPSIiO3JldHVybiBifW5QLnB1YmxpY05hbWU9ImdldFJlZmVycmVyVXJsIjtmdW5jdGlvbiBvUCgpe3JldHVybiB6bSgpfW9QLlA9ImludGVybmFsLmdldFJlZ2lvbkNvZGUiO2Z1bmN0aW9uIHBQKGEsYil7dmFyIGM7aWYoIWxoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZyJdLGFyZ3VtZW50cyk7dmFyIGQ9ZUQoYSk7Yz1VZChkW2JdLHRoaXMuVCk7cmV0dXJuIGN9cFAuUD0iaW50ZXJuYWwuZ2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIjtmdW5jdGlvbiBxUChhLGIpe3ZhciBjPW51bGw7CnJldHVybiBjfXFQLlA9ImludGVybmFsLmdldFNjb3BlZEVsZW1lbnRzQnlDc3NTZWxlY3RvciI7ZnVuY3Rpb24gclAoKXt2YXIgYT1uZXcga2I7YS5zZXQoIndpZHRoIiwwKTthLnNldCgiaGVpZ2h0IiwwKTtyZXR1cm4gYX1yUC5QPSJpbnRlcm5hbC5nZXRTY3JlZW5EaW1lbnNpb25zIjtmdW5jdGlvbiBzUCgpe3ZhciBhPSIiO3JldHVybiBhfXNQLlA9ImludGVybmFsLmdldFRvcFNhbWVEb21haW5VcmwiO2Z1bmN0aW9uIHRQKCl7dmFyIGE9IiI7cmV0dXJuIGF9dFAuUD0iaW50ZXJuYWwuZ2V0VG9wV2luZG93VXJsIjtmdW5jdGlvbiB1UChhKXt2YXIgYj0iIjtpZighbWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO0wodGhpcywiZ2V0X3VybCIsYSk7Yj1MaihSaihBLmxvY2F0aW9uLmhyZWYpLGEpO3JldHVybiBifXVQLnB1YmxpY05hbWU9ImdldFVybCI7ZnVuY3Rpb24gdlAoKXtMKHRoaXMsImdldF91c2VyX2FnZW50Iik7cmV0dXJuIEhjLnVzZXJBZ2VudH12UC5wdWJsaWNOYW1lPSJnZXRVc2VyQWdlbnQiO3ZQLlA9ImludGVybmFsLmdldFVzZXJBZ2VudCI7ZnVuY3Rpb24gd1AoKXt2YXIgYTtyZXR1cm4gYT9VZChFTShhKSk6YX13UC5QPSJpbnRlcm5hbC5nZXRVc2VyQWdlbnRDbGllbnRIaW50cyI7dmFyIHlQPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZXZlbnROYW1lPT09Ri5ELnNjJiZFbCgpJiZiayhaSyhhKSksYz1RKGEsSC5KLmRuKSxkPVEoYSxILkouS2spLGU9UShhLEguSi5tZyksZj1RKGEsSC5KLlRlKSxnPVEoYSxILkouRmMpLGg9UShhLEguSi5oZCksbD1RKGEsSC5KLnJnKSxuPVEoYSxILkouTWgpLHA9UShhLEguSi5OaCkscT0hIVlLKGEpfHwhIVEoYSxILkoucHApO3JldHVybiEoIW5kKCkmJiFrZCgpfHxlfHxxfHxmfHxnfHxofHxsfHxwfHxufHxifHxjfHwhZCYmeFAoKSl9LHhQPWZ1bmN0aW9uKCl7cmV0dXJuIGFsKDksZnVuY3Rpb24oKXtyZXR1cm4hMX0pfTtmdW5jdGlvbiB6UCgpe3ZhciBhPUE7cmV0dXJuIGEuZ2FHbG9iYWw9YS5nYUdsb2JhbHx8e319ZnVuY3Rpb24gQVAoYSxiKXt2YXIgYz16UCgpO2lmKGMudmlkPT09dm9pZCAwfHxiJiYhYy5mcm9tX2Nvb2tpZSljLnZpZD1hLGMuZnJvbV9jb29raWU9Yn07dmFyIEJQPVsiR0ExIl07CnZhciBDUD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9UShhLEguSi5Qayk7aWYoZD09PXZvaWQgMHx8Yzw9ZClVKGEsRi5ELktiLGIpLFYoYSxILkouUGssYyl9LEVQPWZ1bmN0aW9uKGEsYil7dmFyIGM9UihhLEYuRC5LYik7aWYoTyhhLk0sRi5ELlpjKSYmTyhhLk0sRi5ELlljKXx8YiYmYz09PWIpcmV0dXJuIGM7aWYoYyl7Yz0iIitjO2lmKCFEUChjLGEpKXJldHVybiBQKDMxKSxhLmlzQWJvcnRlZD0hMCwiIjtBUChjLFhvKEYuRC5yYSkpO3JldHVybiBjfVAoMzIpO2EuaXNBYm9ydGVkPSEwO3JldHVybiIifSxGUD1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLkdhKSxjPWIucHJlZml4KyJfZ2EiLGQ9QnYoYi5wcmVmaXgrIl9nYSIsYi5kb21haW4sYi5wYXRoLEJQLEYuRC5yYSk7aWYoIWQpe3ZhciBlPVN0cmluZyhPKGEuTSxGLkQuSWQsIiIpKTtlJiZlIT09YyYmKGQ9QnYoZSxiLmRvbWFpbixiLnBhdGgsQlAsRi5ELnJhKSl9cmV0dXJuIGR9LERQPWZ1bmN0aW9uKGEsYil7dmFyIGM7CnZhciBkPVEoYixILkouR2EpLGU9ZC5wcmVmaXgrIl9nYSIsZj11cShkLHZvaWQgMCx2b2lkIDAsRi5ELnJhKTtpZihPKGIuTSxGLkQuSmQpPT09ITEmJkZQKGIpPT09YSljPSEwO2Vsc2V7dmFyIGc7Zz1bQlBbMF0sdHEoZC5kb21haW4sZC5wYXRoKSxhXS5qb2luKCIuIik7Yz1vcShlLGcsZikhPT0xfXJldHVybiBjfTsKdmFyIEdQPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYz0wO3JldHVybntzdGFydDpmdW5jdGlvbigpe2I9TmIoKX0sc3RvcDpmdW5jdGlvbigpe2M9dGhpcy5nZXQoKX0sZ2V0OmZ1bmN0aW9uKCl7dmFyIGQ9MDthLlZqKCkmJihkPU5iKCktYik7cmV0dXJuIGQrY319fSxIUD1mdW5jdGlvbigpe3RoaXMuSD12b2lkIDA7dGhpcy5LPTA7dGhpcy5pc0FjdGl2ZT10aGlzLmlzVmlzaWJsZT10aGlzLk49ITE7dGhpcy5aPXRoaXMuUj12b2lkIDB9O2s9SFAucHJvdG90eXBlO2suS3E9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztpZighdGhpcy5IKXt0aGlzLk49Qi5oYXNGb2N1cygpO3RoaXMuaXNWaXNpYmxlPSFCLmhpZGRlbjt0aGlzLmlzQWN0aXZlPSEwO3ZhciBjPWZ1bmN0aW9uKGUsZixnKXskYyhlLGYsZnVuY3Rpb24oaCl7Yi5ILnN0b3AoKTtnKGgpO2IuVmooKSYmYi5ILnN0YXJ0KCl9KX0sZD1BO2MoZCwiZm9jdXMiLGZ1bmN0aW9uKCl7Yi5OPSEwfSk7YyhkLCJibHVyIixmdW5jdGlvbigpe2IuTj0KITF9KTtjKGQsInBhZ2VzaG93IixmdW5jdGlvbihlKXtiLmlzQWN0aXZlPSEwO2UucGVyc2lzdGVkJiZQKDU2KTtiLlomJmIuWigpfSk7YyhkLCJwYWdlaGlkZSIsZnVuY3Rpb24oKXtiLmlzQWN0aXZlPSExO2IuUiYmYi5SKCl9KTtjKEIsInZpc2liaWxpdHljaGFuZ2UiLGZ1bmN0aW9uKCl7Yi5pc1Zpc2libGU9IUIuaGlkZGVufSk7YmsoWksoYSkpJiYhT2MoKSYmYyhkLCJiZWZvcmV1bmxvYWQiLGZ1bmN0aW9uKCl7WmsoOSwhMCl9KTt0aGlzLnFrKCEwKTt0aGlzLks9MH19O2sucWs9ZnVuY3Rpb24oYSl7aWYoKGE9PT12b2lkIDA/MDphKXx8dGhpcy5IKXRoaXMuSys9dGhpcy5ZaCgpLHRoaXMuSD1HUCh0aGlzKSx0aGlzLlZqKCkmJnRoaXMuSC5zdGFydCgpfTtrLkt0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuWWgoKTtiPjAmJlUoYSxGLkQubmgsYil9O2subHM9ZnVuY3Rpb24oYSl7VShhLEYuRC5uaCk7dGhpcy5xaygpO3RoaXMuSz0wfTtrLlZqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTiYmCnRoaXMuaXNWaXNpYmxlJiZ0aGlzLmlzQWN0aXZlfTtrLlhyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSyt0aGlzLlloKCl9O2suWWg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IJiZ0aGlzLkguZ2V0KCl8fDB9O2suaHQ9ZnVuY3Rpb24oYSl7dGhpcy5SPWF9O2suQ289ZnVuY3Rpb24oYSl7dGhpcy5aPWF9O3ZhciBJUD1mdW5jdGlvbihhKXtzYigiR0E0X0VWRU5UIixhKX07dmFyIEpQPWZ1bmN0aW9uKGEpe3ZhciBiLGM9UShhLEguSi53bSk7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKylJUChjW2RdKTsoYj13YihyYi5HQTRfRVZFTlR8fFtdKSkmJlUoYSwiX2V1IixiKX07CnZhciBNUD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgUmVnRXhwKCJeIisoKChhPT1udWxsP3ZvaWQgMDphLnByZWZpeCl8fCIiKSsiX2dhX1xcdyskIikpLGM9eXEoZnVuY3Rpb24ocCl7cmV0dXJuIGIudGVzdChwKX0pLGQ9e30sZTtmb3IoZSBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBmPUtQKGNbZV0pO2lmKGYpe3ZhciBnPWJxKGYsMik7aWYoZyl7dmFyIGg9TFAoZyk7aWYoaCl7dmFyIGw9dm9pZCAwLG49KCgobD1hKT09bnVsbD92b2lkIDA6bC5wcmVmaXgpfHwiIikubGVuZ3RoKzQ7ZFsiRy0iK2Uuc3Vic3RyaW5nKG4pXT1ofX19fXJldHVybiBkfSxOUD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYjthOnt2YXIgYz0oU2IoYSwicyIpJiZhLmluZGV4T2YoIi4iKT09PS0xPyJHUzIiOiJHUzEiKSsiLjEuIithO3RyeXtiPSRwKGMsMik7YnJlYWsgYX1jYXRjaChkKXt9Yj12b2lkIDB9cmV0dXJuIGJ9fSxLUD1mdW5jdGlvbihhKXtpZihhJiZhLmxlbmd0aCE9PTApe2Zvcih2YXIgYiwKYz0tSW5maW5pdHksZD1tKGEpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2lmKGYudCE9PXZvaWQgMCl7dmFyIGc9TnVtYmVyKGYudCk7IWlzTmFOKGcpJiZnPmMmJihjPWcsYj1mKX19cmV0dXJuIGJ9fSx6cT1mdW5jdGlvbihhKXthJiYoYT09PSJHUzEiP0lQKEouVS5LbSk6YT09PSJHUzIiJiZJUChKLlUuTG0pKX0sTFA9ZnVuY3Rpb24oYSl7dmFyIGI9TlAoYSk7aWYoYil7dmFyIGM9TnVtYmVyKGIubyksZD1OdW1iZXIoYi50KSxlPU51bWJlcihiLmp8fDApO2N8fElQKEouVS5VbSk7ZHx8SVAoSi5VLlRtKTtpc05hTihlKSYmSVAoSi5VLlNtKTtpZihjJiZkJiYhaXNOYU4oZSkpe3ZhciBmPWIuaCxnPWYmJmYhPT0iMCI/U3RyaW5nKGYpOnZvaWQgMCxoPWIuZD9TdHJpbmcoYi5kKTp2b2lkIDAsbD17fTtyZXR1cm4gbC5zPVN0cmluZyhiLnMpLGwubz1jLGwuZz0hIU51bWJlcihiLmcpLGwudD1kLGwuZD1oLGwuaj1lLGwubD1iLmw9PT0iMSIsCmwuaD1nLGx9fX07CnZhciBQUD1mdW5jdGlvbihhLGIsYyl7aWYoIWIpcmV0dXJuIGE7aWYoIWEpcmV0dXJuIGI7dmFyIGQ9TFAoYSk7aWYoIWQpcmV0dXJuIGI7dmFyIGUsZj1JYigoZT1PKGMuTSxGLkQueWgpKSE9bnVsbD9lOjMwKSxnPVEoYyxILkouRWIpO2lmKCEoTWF0aC5mbG9vcihnLzFFMyk+ZC50K2YqNjApKXJldHVybiBhO3ZhciBoPUxQKGIpO2lmKCFoKXJldHVybiBhO2gubz1kLm8rMTt2YXIgbDtyZXR1cm4obD1PUChoKSkhPW51bGw/bDpifSxSUD1mdW5jdGlvbihhLGIpe3ZhciBjPVEoYixILkouR2EpLGQ9UVAoYixjKSxlPU5QKGEpO2lmKCFlKXJldHVybiExO3ZhciBmPXVxKGN8fHt9LHZvaWQgMCx2b2lkIDAsdnEuZ2V0KDIpKTtvcShkLHZvaWQgMCxmKTtyZXR1cm4gQXEoZCxlLDIsYykhPT0xfSxTUD1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLkdhKSxjO3ZhciBkPVFQKGEsYiksZTtiOnt2YXIgZj16cSxnPVpwWzJdO2lmKGcpe3ZhciBoLGw9cnEoYi5kb21haW4pLG49c3EoYi5wYXRoKSwKcD1PYmplY3Qua2V5cyhnLmppKSxxPXZxLmdldCgyKSxyO2lmKGg9KHI9Z3EoZCxsLG4scCxxKSk9PW51bGw/dm9pZCAwOnIuQnIpe3ZhciB0PSRwKGgsMixmKTtlPXQ/eHEodCk6dm9pZCAwO2JyZWFrIGJ9fWU9dm9pZCAwfWlmKGUpe3ZhciB1PXdxKGQsMix6cSk7aWYodSYmdS5sZW5ndGg+MSl7SVAoSi5VLkptKTt2YXIgdj1LUCh1KTt2JiZ2LnQhPT1lLnQmJihJUChKLlUuTW0pLGU9dil9Yz1icShlLDIpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9LFRQPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouRWIpLGM9e307Yy5zPVIoYSxGLkQueGMpO2Mubz1SKGEsRi5ELkFoKTt2YXIgZDtkPVIoYSxGLkQuemgpO3ZhciBlPShjLmc9ZCxjLnQ9TWF0aC5mbG9vcihiLzFFMyksYy5kPVEoYSxILkoub2cpLGMuaj1RKGEsSC5KLnBnKXx8MCxjLmw9ISFRKGEsSC5KLnJtKSxjLmg9UihhLEYuRC5vaCksYyk7cmV0dXJuIE9QKGUpfSxPUD1mdW5jdGlvbihhKXtpZihhLnMmJmEubyl7dmFyIGI9Cnt9LGM9KGIucz1hLnMsYi5vPVN0cmluZyhhLm8pLGIuZz1JYihhLmcpPyIxIjoiMCIsYi50PVN0cmluZyhhLnQpLGIuaj1TdHJpbmcoYS5qKSxiLmw9YS5sPyIxIjoiMCIsYi5oPWEuaHx8IjAiLGIuZD1hLmQsYik7cmV0dXJuIGJxKGMsMil9fSxRUD1mdW5jdGlvbihhLGIpe3JldHVybiBiLnByZWZpeCsiX2dhXyIrYS50YXJnZXQuaWRzW2RDWzZdXX07CnZhciBVUD1mdW5jdGlvbigpe3JldHVybiBhbCgyLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX0sVlA9ZnVuY3Rpb24oYSl7dmFyIGI9TyhhLk0sRi5ELkRiKSxjPWEuTS5pYltGLkQuRGJdO2lmKGM9PT1iKXJldHVybiBjO3ZhciBkPUVkKGIsbnVsbCk7YyYmY1tGLkQuQWFdJiYoZFtGLkQuQWFdPShkW0YuRC5BYV18fFtdKS5jb25jYXQoY1tGLkQuQWFdKSk7cmV0dXJuIGR9LFdQPWZ1bmN0aW9uKGEsYil7dmFyIGM9VXEoITApO3JldHVybiBjLl91cCE9PSIxIj97fTp7Y2xpZW50SWQ6Y1thXSx6YjpjW2JdfX0sWFA9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVVxKCEwKSxlPWRbYl07ZSYmKENQKGEsZSwyKSxEUChlLGEpKTt2YXIgZj1kW2NdO2YmJlJQKGYsYSk7cmV0dXJue2NsaWVudElkOmUsemI6Zn19LFlQPWZ1bmN0aW9uKCl7dmFyIGE9TmooQS5sb2NhdGlvbiwiaG9zdCIpLGI9TmooUmooQi5yZWZlcnJlciksImhvc3QiKTtyZXR1cm4gYSYmYj9hPT09Ynx8YS5pbmRleE9mKCIuIitiKT49CjB8fGIuaW5kZXhPZigiLiIrYSk+PTA/ITA6ITE6ITF9LFpQPWZ1bmN0aW9uKGEpe2lmKCFPKGEuTSxGLkQuemMpKXJldHVybnt9O3ZhciBiPVEoYSxILkouR2EpLGM9Yi5wcmVmaXgrIl9nYSIsZD1RUChhLGIpO2JyKGZ1bmN0aW9uKCl7dmFyIGU7aWYoWG8oImFuYWx5dGljc19zdG9yYWdlIikpZT17fTtlbHNle3ZhciBmPXtfdXA6IjEifSxnO2c9UihhLEYuRC5LYik7ZT0oZltjXT1nLGZbZF09VFAoYSksZil9cmV0dXJuIGV9LDEpO3JldHVybiFYbygiYW5hbHl0aWNzX3N0b3JhZ2UiKSYmWVAoKT9XUChjLGQpOnt9fSwkUD1mdW5jdGlvbihhKXt2YXIgYj1WUChhKXx8e30sYz1RKGEsSC5KLkdhKSxkPWMucHJlZml4KyJfZ2EiLGU9UVAoYSxjKSxmPXt9O2RyKGJbRi5ELlhmXSwhIWJbRi5ELkFhXSkmJihmPVhQKGEsZCxlKSxmLmNsaWVudElkJiZmLnpiJiZaaygyLCEwKSk7YltGLkQuQWFdJiZhcihmdW5jdGlvbigpe3ZhciBnPXt9LGg9RlAoYSk7aCYmKGdbZF09aCk7dmFyIGw9U1AoYSk7CmwmJihnW2VdPWwpO3ZhciBuPWNxKCJGUExDIix2b2lkIDAsdm9pZCAwLEYuRC5yYSk7bi5sZW5ndGgmJihnLl9mcGxjPW5bMF0pO3JldHVybiBnfSxiW0YuRC5BYV0sYltGLkQuYWRdLCEhYltGLkQud2NdKTtyZXR1cm4gZn07dmFyIGFRPWZ1bmN0aW9uKGEpe2lmKCFRKGEsSC5KLmJlKSYmZWsoYS5NKSl7dmFyIGI9VlAoYSl8fHt9LGM9KGRyKGJbRi5ELlhmXSwhIWJbRi5ELkFhXSk/VXEoITApLl9mcGxjOnZvaWQgMCl8fChjcSgiRlBMQyIsdm9pZCAwLHZvaWQgMCxGLkQucmEpLmxlbmd0aD4wP3ZvaWQgMDoiMCIpO1UoYSwiX2ZwbGMiLGMpfX07ZnVuY3Rpb24gYlEoYSl7KGJrKFpLKGEpKXx8V2ooKSkmJlUoYSxGLkQub20sem0oKXx8eW0oKSk7IWJrKFpLKGEpKSYmV2ooKSYmVShhLEYuRC5ZaSwiOjoiKX1mdW5jdGlvbiBjUShhKXtXaigpJiYoYmsoWksoYSkpfHxEbSgpfHxVKGEsRi5ELlNsLCEwKSl9O3ZhciBlUT1mdW5jdGlvbihhLGIpe2tqKCJncmwiLGZ1bmN0aW9uKCl7cmV0dXJuIGRRKCl9KShiKXx8KFAoMzUpLGEuaXNBYm9ydGVkPSEwKX0sZFE9ZnVuY3Rpb24oKXt2YXIgYT1OYigpLGI9YSs4NjRFNSxjPTIwLGQ9NUUzO3JldHVybiBmdW5jdGlvbihlKXt2YXIgZj1OYigpO2Y+PWImJihiPWYrODY0RTUsZD01RTMpO2M9TWF0aC5taW4oYysoZi1hKS8xRTMqNSwyMCk7YT1mO3ZhciBnPSExO2Q8MXx8YzwxfHwoZz0hMCxkLS0sYy0tKTtlJiYoZS5Icj1kLGUudXI9Yyk7cmV0dXJuIGd9fTsKdmFyIGZRPWZ1bmN0aW9uKGEpe3ZhciBiPVIoYSxGLkQuVWEpO3JldHVybiBMaihSaihiKSwiaG9zdCIsITApfSxnUT1mdW5jdGlvbihhKXtpZihPKGEuTSxGLkQuV2YpIT09dm9pZCAwKWEuY29weVRvSGl0RGF0YShGLkQuV2YpO2Vsc2V7dmFyIGI9TyhhLk0sRi5ELmFtKSxjLGQ7YTp7aWYoVVAoKSl7dmFyIGU9VlAoYSl8fHt9O2lmKGUmJmVbRi5ELkFhXSlmb3IodmFyIGY9ZlEoYSksZz1lW0YuRC5BYV0saD0wO2g8Zy5sZW5ndGg7aCsrKWlmKGdbaF1pbnN0YW5jZW9mIFJlZ0V4cCl7aWYoZ1toXS50ZXN0KGYpKXtkPSEwO2JyZWFrIGF9fWVsc2UgaWYoZi5pbmRleE9mKGdbaF0pPj0wKXtkPSEwO2JyZWFrIGF9fWQ9ITF9aWYoIShjPWQpKXt2YXIgbDtpZihsPWIpYTp7Zm9yKHZhciBuPWIuaW5jbHVkZV9jb25kaXRpb25zfHxbXSxwPWZRKGEpLHE9MDtxPG4ubGVuZ3RoO3ErKylpZihuW3FdLnRlc3QocCkpe2w9ITA7YnJlYWsgYX1sPSExfWM9bH1jJiYoVShhLEYuRC5XZiwiMSIpLApJUChKLlUubm4pKX19O2Z1bmN0aW9uIGhRKGEsYixjLGQpe3ZhciBlO2lmKChuZCgpfHxrZCgpKSYmWGooKSYmWGooKSE9PSIvIil7dmFyIGY9UmooYSk7ZT1JZig1MCkmJmQmJlRiKGYucGF0aG5hbWUsIi9nL2NvbGxlY3QiKT8yOihkfHwhV2ooKXx8RG0oKT8wOlRiKGYucGF0aG5hbWUsIi9nYS9nL2MiKXx8VGIoZi5wYXRobmFtZSwiL2FnL2cvYyIpKT8xOjB9ZWxzZSBlPTA7c3dpdGNoKGUpe2Nhc2UgMjp2YXIgZztpZihNKDU0Nikpe3ZhciBoPVRiKGEsIi9nL2NvbGxlY3QiKT9hLnN1YnN0cmluZygwLGEubGVuZ3RoLTEwKTphLGw9aVEoKSxuPWgrbCxwPWpRKCIvZy9jb2xsZWN0IixiLGMpO2c9e0ljOm4sa2Y6IiIsYm9keTpwfX1lbHNlIGc9e0ljOmEsa2Y6Yixib2R5OmN9O3JldHVybiBnO2Nhc2UgMTp2YXIgcTtpZihNKDU0Nykpe3ZhciByPWlRKCksdD1hLmluZGV4T2YociksdT1hLnN1YnN0cmluZygwLHQpK3Isdj1qUShhLnN1YnN0cmluZyh0K3IubGVuZ3RoLTEpLGIsYyk7cT17SWM6dSxrZjoiIiwKYm9keTp2fX1lbHNlIHE9e0ljOmEsa2Y6Yixib2R5OmN9O3JldHVybiBxO2RlZmF1bHQ6cmV0dXJue0ljOmEsa2Y6Yixib2R5OmN9fX1mdW5jdGlvbiBpUSgpe3ZhciBhPVhqKCk7aWYoIWEpcmV0dXJuIiI7U2IoYSwiLyIpfHwoYT0iLyIrYSk7VGIoYSwiLyIpfHwoYSs9Ii8iKTtyZXR1cm4gYX1mdW5jdGlvbiBqUShhLGIsYyl7dmFyIGQ9W2FdO2ImJmQucHVzaCgiPyIsYik7YyYmZC5wdXNoKCJcclxuIixjKTtyZXR1cm4gZC5qb2luKCIiKX07CnZhciBrUT1mdW5jdGlvbihhLGIpe1R0KCkmJihhLmdjcz1VdCgpLFEoYixILkouR2gpJiYoYS5nY3U9IjEiKSk7YS5nY2Q9WXQoYi5NKTthLm5wYT1RKGIsSC5KLndkKT8iMCI6IjEiO3ptKCk9PT0iVVMtQ08iJiYoYS5fbmc9IjEiKX0sbFE9ZnVuY3Rpb24oYSl7aWYoUShhLEguSi5iZSkpcmV0dXJue3VybDpmaygiaHR0cHM6Ly93d3cubWVyY2hhbnQtY2VudGVyLWFuYWx5dGljcy5nb29nIix2b2lkIDAsIiIpKyIvbWMvY29sbGVjdCIsZW5kcG9pbnQ6MjB9O3ZhciBiPVlqKGVrKGEuTSksIi9nL2NvbGxlY3QiKTtpZihiKXJldHVybnt1cmw6YixlbmRwb2ludDoxNn07dmFyIGM7Yz1RKGEsSC5KLnJuKSYmIVEoYSxILkouRmMpPzE3OjE2O3JldHVybnt1cmw6TW1bY10odm9pZCAwKSxlbmRwb2ludDpjfX0sbVE9e307bVFbRi5ELktiXT0iY2lkIjttUVtGLkQueGldPSJnY3V0IjttUVtGLkQuRmVdPSJhcmUiO21RW0YuRC5qaF09InBzY2RsIjttUVtGLkQuTmRdPSJleGNpZCI7bVFbRi5ELkdpXT0KIl9maWQiO21RW0YuRC5PbF09Il9nZW8iO21RW0YuRC5YY109ImdkaWQiO21RW0YuRC5MZV09Il9uZyI7bVFbRi5ELk1lXT0iZnJtIjttUVtGLkQuV2ZdPSJpciI7bVFbRi5ELlNsXT0iZnAiO21RW0YuRC50Yl09InVsIjttUVtGLkQuTWldPSJuaSI7bVFbRi5ELm1xXT0icGFlIjttUVtGLkQueGhdPSJfcmRpIjttUVtGLkQuYmRdPSJzciI7bVFbRi5ELlFpXT0idGVzdG9ubHkiO21RW0YuRC5RZV09InRpZCI7bVFbRi5ELlJpXT0idHQiO21RW0YuRC5CY109ImVjX21vZGUiO21RW0YuRC5abV09Imd0bV91cCI7bVFbRi5ELmNnXT0idWFhIjttUVtGLkQuZGddPSJ1YWIiO21RW0YuRC5lZ109InVhZnZsIjttUVtGLkQuZmddPSJ1YW1iIjttUVtGLkQuZ2ddPSJ1YW0iOwptUVtGLkQuaGddPSJ1YXAiO21RW0YuRC5pZ109InVhcHYiO21RW0YuRC5qZ109InVhdyI7bVFbRi5ELm9tXT0idXIiO21RW0YuRC5ZaV09Il91aXAiO21RW0YuRC5scV09Il9wcnMiO21RW0YuRC5QZF09ImxwcyI7bVFbRi5ELkJlXT0iZ2NsZ3MiO21RW0YuRC5EZV09ImdjbHN0IjttUVtGLkQuQ2VdPSJnY2xscCI7dmFyIG5RPXt9O25RW0YuRC5HZl09ImNjIjtuUVtGLkQuSGZdPSJjaSI7blFbRi5ELklmXT0iY20iO25RW0YuRC5KZl09ImNuIjtuUVtGLkQuTGZdPSJjcyI7blFbRi5ELk1mXT0iY2siO25RW0YuRC5lYl09ImN1IjtuUVtGLkQuVmZdPSJfdHUiO25RW0YuRC56YV09ImRsIjtuUVtGLkQuWWZdPSJkcCI7blFbRi5ELlVhXT0iZHIiO25RW0YuRC5NYl09ImR0IjtuUVtGLkQuemhdPSJzZWciO25RW0YuRC54Y109CiJzaWQiO25RW0YuRC5BaF09InNjdCI7blFbRi5ELmZiXT0idWlkIjt2YXIgb1E9e307b1FbRi5ELm5oXT0iX2V0IjtvUVtGLkQuVmNdPSJlZGlkIjtvUVtGLkQuTWRdPSJldm5pZCI7TSg5NCkmJihvUS5fZXU9Il9ldSIpO3ZhciBwUT17fTtwUVtGLkQuR2ZdPSJjYyI7cFFbRi5ELkhmXT0iY2kiO3BRW0YuRC5JZl09ImNtIjtwUVtGLkQuSmZdPSJjbiI7cFFbRi5ELkxmXT0iY3MiO3BRW0YuRC5NZl09ImNrIjt2YXIgcVE9e30sclE9KHFRW0YuRC5BY109MSxxUSksc1E9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoZGEsbWEpe2lmKG1hIT09dm9pZCAwJiYhQm8uaGFzT3duUHJvcGVydHkoZGEpKXttYT09PW51bGwmJihtYT0iIik7dmFyIFBhO3ZhciBGYT1tYTtkYSE9PUYuRC5vaD9QYT0hMTpRKGEsSC5KLmxnKXx8YmsoWksoYSkpPyhlLmVjaWQ9RmEsUGE9ITApOlBhPXZvaWQgMDtpZighUGEpe3ZhciBxYT1tYTttYT09PSEwJiYocWE9IjEiKTttYT09PSExJiYocWE9IjAiKTtxYT0KU3RyaW5nKHFhKTt2YXIgaWI7aWYoZGEhPT1GLkQuTmQmJmRhIT09Ri5ELk1kfHxNKDUwNCkpaWYobVFbZGFdKWliPW1RW2RhXSx2W2liXT1xYTtlbHNlIGlmKG5RW2RhXSlpYj1uUVtkYV0sZ1tpYl09cWE7ZWxzZSBpZihvUVtkYV0paWI9b1FbZGFdLGZbaWJdPXFhO2Vsc2UgaWYoU2IoZGEsIl8mIikpaWI9ZGEuc3Vic3RyaW5nKDIpLHZbaWJdPXFhO2Vsc2UgaWYoZGEuY2hhckF0KDApPT09Il8iKXZbZGFdPXFhO2Vsc2V7dmFyIFhiO3BRW2RhXT9YYj0hMDpkYSE9PUYuRC5LZj9YYj0hMToodHlwZW9mIG1hIT09Im9iamVjdCImJnUoZGEsbWEpLFhiPSEwKTtYYnx8dShkYSxtYSl9ZWxzZSB1KGRhLG1hKX19fXZhciBlPXt9LGY9e30sZz17fTtlLnY9IjIiO2UudGlkPWEudGFyZ2V0LmRlc3RpbmF0aW9uSWQ7ZS5ndG09ZHUoe21jOlEoYSxILkouTmIpLGVmOlEoYSxILkouQ2MpfSk7ZS5fcD0kaygyNSk7YyYmKGMuaGFzVXBkfHxjLmhhZEVycm9yKSYmKGUuZW09Yy5wYXJhbSk7UShhLApILkoucmcpJiYoZS5fZ2F6PTEpO2tRKGUsYSk7YXUoKSYmKGUuZG1hX2Nwcz1adCgpKTtlLmRtYT0kdCgpO3Z0KEV0KCkpJiYoZS50Y2ZkPWJ1KCkpO3ZhciBoPUNwKGEpO2gmJihnLnRhZ19leHA9aCk7dmFyIGw9UihhLEYuRC5YYyk7bCYmKGUuZ2RpZD1sKTtmLmVuPVN0cmluZyhhLmV2ZW50TmFtZSk7aWYoUShhLEguSi5uZykpe3ZhciBuPVEoYSxILkouWW0pO2YuX2Z2PW4/MjoxfVEoYSxILkouSGgpJiYoZi5fbnNpPTEpO2lmKFEoYSxILkouVGUpKXt2YXIgcD1RKGEsSC5KLmJuKTtmLl9zcz1wPzI6MX1RKGEsSC5KLm1nKSYmKGYuX2M9MSk7UShhLEguSi5hZSkmJihmLl9lZT0xKTtpZihRKGEsSC5KLldtKSl7dmFyIHE9UihhLEYuRC5IYSl8fE8oYS5NLEYuRC5IYSk7aWYoQXJyYXkuaXNBcnJheShxKSlmb3IodmFyIHI9MDtyPHEubGVuZ3RoJiZyPDIwMDtyKyspZlsicHIiKyhyKzEpXT10ZyhxW3JdKX12YXIgdD1SKGEsRi5ELlZjKTt0JiYoZi5lZGlkPXQpO2h0KGEsZik7Zm9yKHZhciB1PQpmdW5jdGlvbihkYSxtYSl7aWYodHlwZW9mIG1hIT09Im9iamVjdCJ8fCFyUVtkYV0pe3ZhciBQYT0iZXAuIitkYSxGYT0iZXBuLiIrZGE7ZGE9QWIobWEpP0ZhOlBhO3ZhciBxYT1BYihtYSk/UGE6RmE7Zi5oYXNPd25Qcm9wZXJ0eShxYSkmJmRlbGV0ZSBmW3FhXTtmW2RhXT1TdHJpbmcobWEpfX0sdj17fSx4PW0oZXUoYSkpLHk9eC5uZXh0KCk7IXkuZG9uZTt5PXgubmV4dCgpKXt2YXIgej15LnZhbHVlO2QoeixSKGEseikpfWZvcih2YXIgQz1tKE9iamVjdC5rZXlzKHYpLnNvcnQoKSksRD1DLm5leHQoKTshRC5kb25lO0Q9Qy5uZXh0KCkpe3ZhciBJPUQudmFsdWU7ZVtJXT12W0ldfShmdW5jdGlvbihkYSl7YmsoWksoYSkpJiZ0eXBlb2YgZGE9PT0ib2JqZWN0IiYmR2IoZGF8fHt9LGZ1bmN0aW9uKG1hLFBhKXt0eXBlb2YgUGEhPT0ib2JqZWN0IiYmKGVbInNzdC4iK21hXT1TdHJpbmcoUGEpKX0pfSkoUihhLEYuRC5vaikpO2J2KGUsUihhLEYuRC5lZCkpO3ZhciBHPVIoYSxGLkQuV2QpfHwKe307R2IoRyxmdW5jdGlvbihkYSxtYSl7bWEhPT12b2lkIDAmJigobWE9PT1udWxsJiYobWE9IiIpLGRhIT09Ri5ELmZifHxnLnVpZCk/YltkYV0hPT1tYSYmKGZbKEFiKG1hKT8idXBuLiI6InVwLiIpK1N0cmluZyhkYSldPVN0cmluZyhtYSksYltkYV09bWEpOmcudWlkPVN0cmluZyhtYSkpfSk7aWYoV2ooKSYmIURtKCkmJiFiayhaSyhhKSkpe3ZhciBOPVEoYSxILkoub2cpO04/ZS5fZ3NpZD1OOmUubmppZD0iMSJ9dmFyIFM9UShhLEguSi5WaSk7KFM9PW51bGw/dm9pZCAwOlMudmFsdWUpPjAmJihlLmdhZj1TLmdldCgpKTt2YXIgVz1SKGEsRi5ELldjKTtpZihXKWZvcih2YXIgZWE9bShPYmplY3Qua2V5cyhXKSksamE9ZWEubmV4dCgpOyFqYS5kb25lO2phPWVhLm5leHQoKSl7dmFyIGZhPWphLnZhbHVlO2ZbImV4dC4iK2ZhXT1XW2ZhXXx8IiJ9dmFyIHNhPWxRKGEpO3ZnLmNhbGwodGhpcyx7QmE6ZSx2ZTpnLExqOmZ9LHNhLnVybCxzYS5lbmRwb2ludCxaSyhhKSx2b2lkIDAsCmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsYS5NLmV2ZW50SWQsYS5NLnByaW9yaXR5SWQpfTt3YShzUSx2Zyk7CnZhciB0UT1mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGxhY2UoL1wkXHsoW15cfV0rKVx9L2csZnVuY3Rpb24oYyxkKXtyZXR1cm4gYltkXXx8Y30pfSx1UT1mdW5jdGlvbihhKXt2YXIgYj17fSxjPSIiLGQ9YS5wYXRobmFtZS5pbmRleE9mKCIvZy9jb2xsZWN0Iik7ZD49MCYmKGM9YS5wYXRobmFtZS5zdWJzdHJpbmcoMCxkKSk7Yi50cmFuc3BvcnRfdXJsPWEucHJvdG9jb2wrIi8vIithLmhvc3RuYW1lK2M7dmFyIGU7dHJ5e2U9ZW5jb2RlVVJJQ29tcG9uZW50KGN8fCIvIil9Y2F0Y2goZil7ZT1lbmNvZGVVUklDb21wb25lbnQoIi8iKX1iLmVuY29kZWRfcGF0aD1lO3JldHVybiBifSx2UT1mdW5jdGlvbihhLGIpe2lmKCFNKDU0NikpcmV0dXJue3VybDphLGJvZHk6Yn07dmFyIGM9bShhLnNwbGl0KCI/IikpLGQ9Yy5uZXh0KCkudmFsdWUsZT1jLm5leHQoKS52YWx1ZSxmPWhRKGQsZXx8IiIsYnx8IiIsITApLGc9Zi5JYyxoPWYua2Y7YT1oIT09IiI/ZysiPyIraDpnO2I9Zi5ib2R5OwpyZXR1cm57dXJsOmEsYm9keTpifX0seFE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVJqKGIpLGU9dVEoZCksZj12UShYZyhkKSxjKSxnPWZ1bmN0aW9uKGgpe3F4KGYudXJsLGYuYm9keSxuZXcgd1EoZSxoKSkmJmEmJmtuLnJlZ2lzdGVyKGEsMSxmLnVybCl9OyFNKDEzMil8fE5jKCI7IHd2Iil8fE5jKCJGQkFOIil8fE5jKCJGQkFWIil8fFBjKCk/ZygpOm1MKGYudXJsLGYuYm9keSxlLGcpfSx3UT1mdW5jdGlvbihhLGIpe0N4LmNhbGwodGhpcyk7dGhpcy50ZW1wbGF0ZXM9YTt0aGlzLk49Yn07d2Eod1EsQ3gpO3dRLnByb3RvdHlwZS5aPWZ1bmN0aW9uKGEpe3ZhciBiPXRRKGEsdGhpcy50ZW1wbGF0ZXMpO3JldHVybiB0aGlzLk4/Yi5yZXBsYWNlKCJfaXNfc3c9MCIsdGhpcy5OKTpifTt3US5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuWihhKTtDeC5wcm90b3R5cGUuSy5jYWxsKHRoaXMsYyxiKX07d1EucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiKXt2YXIgYz0KdGhpcy5aKGEpO0N4LnByb3RvdHlwZS5ILmNhbGwodGhpcyxjLGIpfTsKdmFyIHlRPWZ1bmN0aW9uKGEpe3JldHVybiFTYihhLEZtKCkpJiYhU2IoYSxHbSgpKX0sQVE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKCFuZCgpKXJldHVybiB6UShhLGIsYyxkKSwhMDtZbihjLGIhPT0iIj9hKyI/IitiOmEsZCxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGV8fHt9LHtRZzohMH0pLHZvaWQgMCxmKXx8elEoYSxiLGMsZCk7cmV0dXJuITB9LHpRPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIhPT0iIj9hKyI/IitiOmE7ZD9XbihjLGUsZCk6Vm4oYyxlKX0sQ1E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1iLGc9cGQoKTtnIT09dm9pZCAwJiYoZis9IiZ0ZmQ9IitNYXRoLnJvdW5kKGcpKTtiPWY7dmFyIGg9YSsiPyIrYjtpZighYmsoZCl8fGNrKGQpfHx4UCgpKXt2YXIgbD1oUShhLGIsYyxiayhkKSk7YT1sLkljO2I9bC5rZjtjPWwuYm9keTtBUShhLGIsZSxjLHZvaWQgMCxCUShhLGIsZSxjKSl8fHpRKGEsYixlLGMpfWVsc2UgeFEoZSxoLGMpOwpiayhkKSYmTSg1NjQpJiZuZCgpJiZUYihhLCIvZy9jb2xsZWN0IikmJkEuZmV0Y2goYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xMCkse21ldGhvZDoiUE9TVCIsYm9keToiQ2pBT0FUd2NDQmdPIixjcmVkZW50aWFsczoib21pdCJ9KX0sQlE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXlRKGEpKXt2YXIgZT1NbVs2N10odm9pZCAwKTtpZihlKXJldHVybiBmdW5jdGlvbigpe3ZhciBmO3ZhciBnPWIucmVwbGFjZSgvXlw/LywiIiksaD1OdW1iZXIoSWooZywiZ2FmIiwhMSkpLGw9MDtOdW1iZXIuaXNJbnRlZ2VyKGgpJiYobD1oKTt2YXIgbj1uZXcgZXIobCk7ZnIobiwxKTtpZihuLnZhbHVlIT09MCl7dmFyIHAscT1uLmdldCgpLHI9UmVnRXhwKCIoXnxbPyZdKWdhZj1bXiZdKigmfCQpIik7cD1yLnRlc3QoZyk/Zy5yZXBsYWNlKHIsIiQxZ2FmPSIrcSsiJDIiKTpnLmluZGV4T2YoIj8iKT49MD9nKyImZ2FmPSIrcTpnWzBdPT09Ii8ifHxnLmluZGV4T2YoIjovLyIpPj0wP2crIj9nYWY9IisKcTpnLmxlbmd0aD4wP2crIiZnYWY9IitxOiJnYWY9IitxO2Y9Yi5pbmRleE9mKCI/Iik9PT0wPyI/IitwOnB9ZWxzZSBmPXZvaWQgMDtBUShlLGZ8fGIsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjLHtlbmRwb2ludDo2N30pLGQsYy5lbmRwb2ludD09PTE3P3ZvaWQgMDp7Y3JlZGVudGlhbHM6Im9taXQifSl9fX0sRFE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9ZnVuY3Rpb24oaCl7ZC5wdXNoKGgrIj0iK2VuY29kZVVSSUNvbXBvbmVudCgiIithLkJhW2hdKSl9O2QucHVzaCgidj0yIik7ZSgiX2dzaWQiKTtlKCJndG0iKTthLkJhLl9nZW8mJmUoIl9nZW8iKTt2YXIgZj0iaHR0cHM6Ly97Z2E0Q29sbGVjdGlvblN1YmRvbWFpbi59Z29vZ2xlLWFuYWx5dGljcy5jb20vZy9zL2NvbGxlY3QiLnJlcGxhY2UoIntnYTRDb2xsZWN0aW9uU3ViZG9tYWluLn0iLChifHwid3d3IikrIi4iKSxnPWQuam9pbigiJiIpO3pRKGYsZyx7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fAoiIixlbmRwb2ludDo2MixldmVudElkOmEuZXZlbnRJZCxwcmlvcml0eUlkOmEucHJpb3JpdHlJZH0pO01sKHt0YXJnZXRJZDpTdHJpbmcoYS5CYS50aWQpLHJlcXVlc3Q6e3VybDpmKyI/IitnLHBhcmFtZXRlckVuY29kaW5nOjIsZW5kcG9pbnQ6NjJ9LHFiOmN9KX0sRVE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSJodHRwczovL3tnYTRDb2xsZWN0aW9uU3ViZG9tYWluLn1hbmFseXRpY3MuZ29vZ2xlLmNvbS9nL3MvY29sbGVjdCIucmVwbGFjZSgie2dhNENvbGxlY3Rpb25TdWJkb21haW4ufSIsYj9iKyIuIjoiIiksZT1bXSxmPWZ1bmN0aW9uKGgpe2UucHVzaChoKyI9IitlbmNvZGVVUklDb21wb25lbnQoIiIrYS5CYVtoXSkpfTtmKCJfZ3NpZCIpO2YoImd0bSIpO2EuQmEuX2dlbyYmZigiX2dlbyIpO3ZhciBnPWUuam9pbigiJiIpO3pRKGQsZyx7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OjE4LGV2ZW50SWQ6YS5ldmVudElkLHByaW9yaXR5SWQ6YS5wcmlvcml0eUlkfSk7Ck1sKHt0YXJnZXRJZDpTdHJpbmcoYS5CYS50aWQpLHJlcXVlc3Q6e3VybDpkKyI/IitnLHBhcmFtZXRlckVuY29kaW5nOjIsZW5kcG9pbnQ6MTh9LHFiOmN9KX0sRlE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2MmJmIucHVzaCgidGFnX2V4cD0iK2MpO2IucHVzaCgiej0iK0RiKCkpO2lmKCFlKXt2YXIgZz1kJiZTYihkLCJnb29nbGUuIikmJmQhPT0iZ29vZ2xlLmNvbSI/Imh0dHBzOi8vd3d3LiUvYWRzL2dhLWF1ZGllbmNlcz92PTEmdD1zciZzbGZfcmQ9MSZfcj00JiIucmVwbGFjZSgiJSIsZCk6dm9pZCAwO2lmKGcpe3ZhciBoPWcrYi5qb2luKCImIik7WG4oe2Rlc3RpbmF0aW9uSWQ6YS5kZXN0aW5hdGlvbklkfHwiIixlbmRwb2ludDo0NyxldmVudElkOmEuZXZlbnRJZCxwcmlvcml0eUlkOmEucHJpb3JpdHlJZH0saCk7TWwoe3RhcmdldElkOlN0cmluZyhhLkJhLnRpZCkscmVxdWVzdDp7dXJsOmgscGFyYW1ldGVyRW5jb2Rpbmc6MixlbmRwb2ludDo0N30scWI6Zn0pfX19LEdRPQpmdW5jdGlvbihhLGIsYyxkKXtjJiZiLnB1c2goInRhZ19leHA9IitjKTt6USgiaHR0cHM6Ly9zdGF0cy5nLmRvdWJsZWNsaWNrLm5ldC9nL2NvbGxlY3QiLCJ2PTImIitiLmpvaW4oIiYiKSx7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OjE5LGV2ZW50SWQ6YS5ldmVudElkLHByaW9yaXR5SWQ6YS5wcmlvcml0eUlkfSk7TWwoe3RhcmdldElkOlN0cmluZyhhLkJhLnRpZCkscmVxdWVzdDp7dXJsOiJodHRwczovL3N0YXRzLmcuZG91YmxlY2xpY2submV0L2cvY29sbGVjdD92PTImIitiLmpvaW4oIiYiKSxwYXJhbWV0ZXJFbmNvZGluZzoyLGVuZHBvaW50OjE5fSxxYjpkfSl9LEhRPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyh2KXtxLnB1c2godisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KCIiK2EuQmFbdl0pKX12YXIgZD1iLnh0LGU9Yi5CdCxmPWIuQXQsZz1iLnp0LGg9Yi5acixsPWIuQ3Msbj1iLlByLHA9Yi5HdDtpZihkfHxlfHxmfHxnKXt2YXIgcT0KW107YS5CYS5fbmcmJmMoIl9uZyIpO2EuQmEubmdzJiZjKCJuZ3MiKTthLkJhLmlidCYmYygiaWJ0Iik7YygidGlkIik7YygiY2lkIik7YygiZ3RtIik7Zm9yKHZhciByPW0oT0YpLHQ9ci5uZXh0KCk7IXQuZG9uZTt0PXIubmV4dCgpKXt2YXIgdT10LnZhbHVlO2EuQmFbdV0hPW51bGwmJmModSl9cS5wdXNoKCJhaXA9MSIpO2EudmUudWlkJiZxLnB1c2goInVpZD0iK2VuY29kZVVSSUNvbXBvbmVudCgiIithLnZlLnVpZCkpO2MoImRtYSIpO2EuQmEuZG1hX2NwcyE9bnVsbCYmYygiZG1hX2NwcyIpO2EuQmEuZ2NzIT1udWxsJiZjKCJnY3MiKTtjKCJnY2QiKTthLkJhLm5wYSE9bnVsbCYmYygibnBhIik7YS5CYS5mcm0hPW51bGwmJmMoImZybSIpO2QmJkdRKGEscS5zbGljZSgpLHAsYi5xYik7ZSYmRlEoYSxxLnNsaWNlKCkscCxoLGwsYi5xYik7ZiYmRVEoYSxuLGIucWIpO2cmJkRRKGEsbixiLnFiKX19LElRPWZ1bmN0aW9uKCl7dGhpcy5SPTE7dGhpcy5aPXt9O3RoaXMuSz0tMTt0aGlzLkg9Cm5ldyB3Z307SVEucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9bmV3IHNRKGEsdGhpcy5aLGIpLGU9e2V2ZW50SWQ6YS5NLmV2ZW50SWQscHJpb3JpdHlJZDphLk0ucHJpb3JpdHlJZH0sZj15UChhKSxnLGg7ZiYmdGhpcy5ILlIoZCl8fHRoaXMuZmx1c2goKTt2YXIgbD1mJiZ0aGlzLkguYWRkKGQpO2lmKGwpe2lmKHRoaXMuSzwwKXt2YXIgbj1BLHA9bi5zZXRUaW1lb3V0LHE7YmsoWksoYSkpP0pRPyhKUT0hMSxxPUtRKTpxPUxROnE9NUUzO3RoaXMuSz1wLmNhbGwobixmdW5jdGlvbigpe2MuZmx1c2goKX0scSl9fWVsc2V7dmFyIHI9emcoZCx0aGlzLlIrKyksdD1yLnBhcmFtcyx1PXIuYm9keTtnPXQ7aD11O0Z5KDMsYS5ldmVudE5hbWUpO0NRKGQuYmFzZVVybCx0LHUsZC5OLHtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6ZC5lbmRwb2ludCxldmVudElkOmQuZXZlbnRJZCxwcmlvcml0eUlkOmQucHJpb3JpdHlJZH0pOwp2YXIgdj1RKGEsSC5KLmhkKSx4PVEoYSxILkoucmcpLHk9UShhLEguSi5OaCksej1RKGEsSC5KLk1oKSxDPU8oYS5NLEYuRC51aSkhPT0hMSxEPVN0KGEuTSksST17eHQ6dixCdDp4LEF0OnksenQ6eixacjpFbSgpLG12OkMsbHY6RCxDczpBbSgpLHFiOmUsTTphLk0sUHI6RG0oKSxHdDpDcChhKX07SFEoZCxJKX1mbi5IJiZBeihhLk0uZXZlbnRJZCk7TmwoZnVuY3Rpb24oKXtpZihsKXt2YXIgRz16ZyhkKSxOPUcuYm9keTtnPUcucGFyYW1zO2g9Tn1yZXR1cm57dGFyZ2V0SWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxyZXF1ZXN0Ont1cmw6ZC5iYXNlVXJsKyI/IitnLHBhcmFtZXRlckVuY29kaW5nOjIscG9zdEJvZHk6aCxlbmRwb2ludDpkLmVuZHBvaW50fSxxYjplLGlzQmF0Y2hlZDohMX19KX07SVEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtZSyhhKSYmIXhQKCk/dGhpcy5mYShhKTp0aGlzLk4oYSl9O0lRLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuSC5ldmVudHMubGVuZ3RoKXt2YXIgYT0KQmcodGhpcy5ILHRoaXMuUisrKTtDUSh0aGlzLkguYmFzZVVybCxhLnBhcmFtcyxhLmJvZHksdGhpcy5ILksse2Rlc3RpbmF0aW9uSWQ6dGhpcy5ILmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OnRoaXMuSC5lbmRwb2ludCxldmVudElkOnRoaXMuSC5aLHByaW9yaXR5SWQ6dGhpcy5ILmZhfSk7dGhpcy5IPW5ldyB3Zzt0aGlzLks+PTAmJihBLmNsZWFyVGltZW91dCh0aGlzLkspLHRoaXMuSz0tMSl9fTtJUS5wcm90b3R5cGUuZmE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPVlLKGEpO00oNTY4KSYmIU0oNTg2KSYmUihhLEYuRC5CYyk9PT0iYSImJihjPWN3KGMpKTtpZihFdyhjKSl7dmFyIGQ9c3coYyk7ZD9kLnRoZW4oZnVuY3Rpb24oZil7Yi5OKGEsZil9LGZ1bmN0aW9uKCl7Yi5OKGEpfSk6dGhpcy5OKGEpfWVsc2V7dmFyIGU9RHcoYyk7dGhpcy5OKGEsZSl9fTt2YXIgS1E9TmYoMjQsNTAwKSxMUT1OZig1Niw1RTMpLEpRPSEwO3ZhciBNUT1mdW5jdGlvbihhKXt2YXIgYj1TdChhLk0pO08oYS5NLEYuRC5XYik9PT0hMCYmKGI9ITEpO1YoYSxILkoud2QsYil9Owp2YXIgTlE9ZnVuY3Rpb24oYSxiLGMpe2M9PT12b2lkIDAmJihjPXt9KTtpZihiPT1udWxsKXJldHVybiBjO2lmKHR5cGVvZiBiPT09Im9iamVjdCIpZm9yKHZhciBkPW0oT2JqZWN0LmtleXMoYikpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO05RKGErIi4iK2YsYltmXSxjKX1lbHNlIGNbYV09YjtyZXR1cm4gY30sT1E9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTtiW2VdPSEhWG8oZSl9cmV0dXJuIGJ9LFFRPWZ1bmN0aW9uKGEsYil7dmFyIGM9UFEuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFYbyhlKX0pO2lmKGMubGVuZ3RoKXt2YXIgZD1PUShjKTskbyhjLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPU9RKGMpLGY9W10sZz1tKGMpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlOyFkW2xdJiZlW2xdJiZmLnB1c2gobCk7ZVtsXSYmCihkW2xdPSEwKX1pZihmLmxlbmd0aCl7VihiLEguSi5HaCwhMCk7dmFyIG49Zi5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIExvW3BdfSkuam9pbigiLiIpO24mJldLKGIsImdjdXQiLG4pO01RKGIpO2EoYil9fSl9fSxSUT1mdW5jdGlvbihhKXtSKGEsRi5ELldjKSYmIWJrKFpLKGEpKSYmVShhLEYuRC5XYyl9LFNRPWZ1bmN0aW9uKGEpe2JrKFpLKGEpKSYmV0soYSwibmF2dCIscWQoKSl9LFRRPWZ1bmN0aW9uKGEpe2JrKFpLKGEpKSYmV0soYSwibHBjIixpcigpKX0sVVE9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj1PKGEuTSxGLkQuV2IpLGM7Yj09PSEwJiYoYz0iMSIpO2I9PT0hMSYmKGM9IjAiKTtjJiZXSyhhLCJyZHAiLGMpfX0sVlE9ZnVuY3Rpb24oYSxiKXtpZihiayhaSyhiKSkpe3ZhciBjPVEoYixILkoubWcpOyhiLmV2ZW50TmFtZT09PSJwYWdlX3ZpZXcifHxjKSYmUVEoYSxiKX19LFdRPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSYmYS5ldmVudE5hbWU9PT1GLkQueWYmJgpRKGEsSC5KLkdoKSl7dmFyIGI9UihhLEYuRC54aSk7YiYmKFdLKGEsImdjdXQiLGIpLFdLKGEsInN5biIsMSkpfX0sWFE9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBXaigpJiZTYihjKyIvIixYaigpKyIvIik/IjciOiIxIjtpZihUYihhLCIuIitiKSlyZXR1cm4iMiI7aWYoVGIoYiwiLiIrYSkpcmV0dXJuIjMiO3ZhciBkPWEuc3BsaXQoIi4iKSxlPWIuc3BsaXQoIi4iKSxmPWZ1bmN0aW9uKGcpe2lmKGQubGVuZ3RoPGd8fGUubGVuZ3RoPGcpcmV0dXJuITE7Zm9yKHZhciBoPTE7aDw9ZztoKyspaWYoZFtkLmxlbmd0aC1oXSE9PWVbZS5sZW5ndGgtaF0pcmV0dXJuITE7cmV0dXJuITB9O3JldHVybiBmKDMpPyI2IjpmKDIpPyI1IjoiNCJ9LFlRPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSl7dmFyIGI9ZWsoYS5NKTtpZihiKXt2YXIgYz1ZaihiLCIvIiksZD1SaihjKSxlPU5qKGQsImhvc3QiKSxmPU5qKEEubG9jYXRpb24sImhvc3QiKTtpZihlJiZmKXt2YXIgZz1OaihkLAoicGF0aCIpO2EubWVyZ2VIaXREYXRhRm9yS2V5KEYuRC5UYSx7c3N0ZDpYUShlLGYsZyl9KX19fX0sWlE9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZWKGEsSC5KLkphLCExKX0sJFE9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiYoUShhLEguSi5KYSkmJldLKGEsInNwIiwxKSxRKGEsSC5KLklxKSYmV0soYSwic3luIiwxKSxRKGEsSC5KLlBjKSYmKFdLKGEsImVtX2V2ZW50IiwxKSxXSyhhLCJzcCIsMSkpKX0sYVI9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj0kaygyNSk7YiYmV0soYSwidGZ0IixOdW1iZXIoYikpfX0sYlI9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihlKXt2YXIgZj1OUShGLkQuQWMsZSk7R2IoZixmdW5jdGlvbihnLGgpe1UoYSxnLGgpfSl9aWYoYmsoWksoYSkpKXt2YXIgYz1kSShhLCJjY2RfYWRkXzFwX2RhdGEiLCExKT8xOjA7V0soYSwidWRlIixjKTt2YXIgZD1PKGEuTSxGLkQuQWMpO2QhPT12b2lkIDA/KFp2KGQpLGIoZCksVShhLEYuRC5CYywiYyIpKToKYihRKGEsSC5KLllhKSk7VihhLEguSi5ZYSl9fSxjUj1mdW5jdGlvbihhKXtpZihiayhaSyhhKSkpe3ZhciBiPVZNKCk7YiYmV0soYSwidXNfcHJpdmFjeSIsYik7dmFyIGM9THQoKTtjJiZXSyhhLCJnZHByIixjKTt2YXIgZD1LdCgpO2QmJldLKGEsImdkcHJfY29uc2VudCIsZCk7dmFyIGU9a0YuZ3BwU3RyaW5nO2UmJldLKGEsImdwcCIsZSk7dmFyIGY9a0YuSDtmJiZXSyhhLCJncHBfc2lkIixmKX19LGRSPWZ1bmN0aW9uKGEpe2JrKFpLKGEpKSYmRWwoKSYmTyhhLk0sRi5ELm1iKSYmV0soYSwiYWRyIiwxKX0sZVI9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj1EbSgpO2ImJldLKGEsImdjc3ViIixiKX19LGZSPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSl7TyhhLk0sRi5ELlNjLHZvaWQgMCw0KT09PSExJiZXSyhhLCJuZ3MiLDEpO0FtKCkmJldLKGEsImdhX3JkIiwxKTtWSygpfHxXSyhhLCJuZ3N0IiwxKTt2YXIgYj1FbSgpO2ImJldLKGEsImV0bGQiLGIpfX0sZ1I9CmZ1bmN0aW9uKGEpe30saFI9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZFbCgpJiZXSyhhLCJybmQiLFFNKCkpfSxQUT1bRi5ELmthLEYuRC5tYSxGLkQuWGFdOwp2YXIgaVI9ZnVuY3Rpb24oYSxiKXt2YXIgYzthOntpZighUShhLEguSi5GYykpe3ZhciBkPVRQKGEpO2lmKGQpe2lmKFJQKGQsYSkpe2M9ZDticmVhayBhfVAoMjUpO2EuaXNBYm9ydGVkPSEwfX1jPXZvaWQgMH12YXIgZT1jO3JldHVybntjbGllbnRJZDpFUChhLGIpLHpiOmV9fSxqUj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPVFvKE8oYS5NLEYuRC5LYikpO2lmKE8oYS5NLEYuRC5aYykmJk8oYS5NLEYuRC5ZYykpZj9DUChhLGYsMSk6KFAoMTI3KSxhLmlzQWJvcnRlZD0hMCk7ZWxzZXt2YXIgZz1mPzE6ODtWKGEsSC5KLkhoLCExKTtmfHwoZj1GUChhKSxnPTMpO2Z8fChmPWIsZz01KTtpZighZil7dmFyIGg9WG8oRi5ELnJhKSxsPXpQKCk7Zj0hbC5mcm9tX2Nvb2tpZXx8aD9sLnZpZDp2b2lkIDA7Zz02fWY/Zj0iIitmOihmPUF2KCksZz03LFYoYSxILkoubmcsITApLFYoYSxILkouSGgsITApKTtDUChhLGYsZyl9UihhLEYuRC5LYik7aWYoIVEoYSxILkouRmMpKXt2YXIgbj0KUShhLEguSi5FYikscD1NYXRoLmZsb29yKG4vMUUzKSxxPXZvaWQgMDtRKGEsSC5KLkhoKXx8KHE9U1AoYSl8fGMpO3ZhciByPUliKE8oYS5NLEYuRC55aCwzMCkpO3I9TWF0aC5taW4oNDc1LHIpO3I9TWF0aC5tYXgoNSxyKTt2YXIgdD1JYihPKGEuTSxGLkQuUGksMUU0KSksdT1MUChxKTtWKGEsSC5KLm5nLCExKTtWKGEsSC5KLlRlLCExKTtWKGEsSC5KLnBnLDApO3UmJnUuaiYmVihhLEguSi5wZyxNYXRoLm1heCgwLHUuai1NYXRoLm1heCgwLHAtdS50KSkpO3ZhciB2PSExO2lmKCF1KXtWKGEsSC5KLm5nLCEwKTt2PSEwO3ZhciB4PXt9O3U9KHgucz1TdHJpbmcocCkseC5vPTEseC5nPSExLHgudD1wLHgubD0hMSx4Lmg9dm9pZCAwLHgpfXA+dS50K3IqNjAmJih2PSEwLHUucz1TdHJpbmcocCksdS5vKyssdS5nPSExLHUuaD12b2lkIDApO2lmKHYpVihhLEguSi5UZSwhMCksZC5scyhhKTtlbHNlIGlmKGQuWHIoKT50fHxhLmV2ZW50TmFtZT09PUYuRC5zYyl1Lmc9ITA7UShhLEguSi5sZyk/Ck8oYS5NLEYuRC5mYik/dS5sPSEwOnUubD0hMTp1Lmw9ITE7dmFyIHk9dS5oO2lmKFEoYSxILkoubGcpfHxiayhaSyhhKSkpe3ZhciB6PU8oYS5NLEYuRC5vaCksQz16PzE6ODt6fHwoej15LEM9NCk7enx8KHo9enYoKSxDPTcpO3ZhciBEPXoudG9TdHJpbmcoKSxJPUMsRz1RKGEsSC5KLnRsKTtpZihHPT09dm9pZCAwfHxJPD1HKVUoYSxGLkQub2gsRCksVihhLEguSi50bCxJKX1lPyhhLmNvcHlUb0hpdERhdGEoRi5ELnhjLHUucyksYS5jb3B5VG9IaXREYXRhKEYuRC5BaCx1Lm8pLGEuY29weVRvSGl0RGF0YShGLkQuemgsdS5nPzE6MCkpOihVKGEsRi5ELnhjLHUucyksVShhLEYuRC5BaCx1Lm8pLFUoYSxGLkQuemgsdS5nPzE6MCkpO1YoYSxILkoucm0sdS5sPzE6MCk7V2ooKSYmVihhLEguSi5vZyx1LmR8fGNjKCkpfX07CnZhciBrUj1mdW5jdGlvbihhKXt2YXIgYj1hLmluZGV4T2YoIj8iKSxjPWI9PT0tMT9hOmEuc3Vic3RyaW5nKDAsYiksZD1LaihjKTtkJiYoYz1kKTtyZXR1cm4gYj09PS0xP2M6IiIrYythLnN1YnN0cmluZyhiKX0sbFI9ZnVuY3Rpb24oYSl7aWYoIU8oYS5NLEYuRC5ZYyl8fCFPKGEuTSxGLkQuWmMpKXt2YXIgYj1hLmNvcHlUb0hpdERhdGEsYz1GLkQuemEsZD0iIixlPUIubG9jYXRpb247aWYoZSl7dmFyIGY9ZS5wYXRobmFtZXx8IiI7Zi5jaGFyQXQoMCkhPT0iLyImJihmPSIvIitmKTt2YXIgZz1lLnNlYXJjaHx8IiI7aWYoZ1swXT09PSI/Iilmb3IodmFyIGg9Zy5zdWJzdHJpbmcoMSkuc3BsaXQoIiYiKSxsPTA7bDxoLmxlbmd0aDsrK2wpe3ZhciBuPWhbbF0uc3BsaXQoIj0iKTtuJiZuLmxlbmd0aD09PTImJm5bMF09PT0id2JyYWlkIiYmKGc9Zy5yZXBsYWNlKC8oWz8mXSl3YnJhaWQ9W14mXSsvLCIkMXdicmFpZD0iKyRiKG5bMV0pKSl9ZD1lLnByb3RvY29sKyIvLyIrZS5ob3N0bmFtZSsKZitnfWIuY2FsbChhLGMsZCxrUik7dmFyIHA9YS5jb3B5VG9IaXREYXRhLHE9Ri5ELlVhLHI9dUEoImd0bS5ndGFnUmVmZXJyZXIuIithLnRhcmdldC5kZXN0aW5hdGlvbklkKSx0PUIucmVmZXJyZXI7cC5jYWxsKGEscSwocj8iIityOnQpfHx2b2lkIDAsa1IpO2EuY29weVRvSGl0RGF0YShGLkQuTWIsQi50aXRsZSk7YS5jb3B5VG9IaXREYXRhKEYuRC50YiwoSGMubGFuZ3VhZ2V8fCIiKS50b0xvd2VyQ2FzZSgpKTt2YXIgdT1xSSgpO2EuY29weVRvSGl0RGF0YShGLkQuYmQsdS53aWR0aCsieCIrdS5oZWlnaHQpO2EuY29weVRvSGl0RGF0YShGLkQuWWYsdm9pZCAwLGtSKTtUTSgpJiZhLmNvcHlUb0hpdERhdGEoRi5ELlBkLCIxIil9fTt2YXIgblI9ZnVuY3Rpb24oYSl7dmFyIGI9eEMoYS5NKSxjPWZ1bmN0aW9uKGQsZSl7bVJbZF0mJlUoYSxkLGUpfTtDZChiW0YuRC5LZl0pP0diKGJbRi5ELktmXSxmdW5jdGlvbihkLGUpe2MoKEYuRC5LZisiXyIrZCkudG9Mb3dlckNhc2UoKSxlKX0pOkdiKGIsYyl9LG9SPXt9LG1SPShvUltGLkQuR2ZdPTEsb1JbRi5ELkhmXT0xLG9SW0YuRC5JZl09MSxvUltGLkQuSmZdPTEsb1JbRi5ELkxmXT0xLG9SW0YuRC5NZl09MSxvUik7dmFyIHBSPWZ1bmN0aW9uKGEpe2lmKCFiayhaSyhhKSkmJlEoYSxILkoubWcpJiZYbyhGLkQua2EpJiZkSShhLCJnYTRfYWRzX2xpbmtlZCIsITEpKXt2YXIgYj1MSyhhKSxjPUhyKGIucHJlZml4KSxkPVJzKGMpO1UoYSxGLkQuQmUsZC5FZyk7VShhLEYuRC5EZSxkLldoKTtVKGEsRi5ELkNlLGQuVWgpfX07dmFyIHFSPWZ1bmN0aW9uKGEpe3ZhciBiPU8oYS5NLEYuRC5aYyk7YiYmSVAoSi5VLnhuKTtRKGEsSC5KLlBjKSYmSVAoSi5VLk5rKTt2YXIgYz15ayh6aygpKTsoYnx8TWsoYyl8fGMmJmMucGFyZW50JiZjLmNvbnRleHQmJmMuY29udGV4dC5zb3VyY2U9PT01KSYmSVAoSi5VLmZuKTtRKGEsSC5KLmNqKSYmSVAoSi5VLkltKTtRKGEsSC5KLmJqKSYmSVAoSi5VLkhtKX07dmFyIHJSPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouVmkpfHxuZXcgZXI7UShhLEguSi5iaikmJlEoYSxILkouY2opJiZmcihiLDIpO1YoYSxILkouVmksYil9O2Z1bmN0aW9uIHNSKGEpe2EuY29weVRvSGl0RGF0YShGLkQuZmIpO3ZhciBiPU8oYS5NLEYuRC5XZCk7YiYmKEtDKGIsZnVuY3Rpb24oKXt9KSxVKGEsRi5ELldkLGIpKX07dmFyIHVSPWZ1bmN0aW9uKGEpe2lmKHRSLk1yLnJlcGxhY2UoL1xzKy9nLCIiKS5zcGxpdCgiLCIpLmluZGV4T2YoYS5ldmVudE5hbWUpPj0wKWEuaXNBYm9ydGVkPSEwO2Vsc2V7dmFyIGI9WEsoYSk7YiYmYi5ibGFja2xpc3RlZCYmKGEuaXNBYm9ydGVkPSEwKX19LHRSPXtNcjpMZigzMSl9O2Z1bmN0aW9uIHZSKGEpe3ZhciBiPWZ1bmN0aW9uKGMpe3JldHVybiEhYyYmYy5jb252ZXJzaW9ufTtWKGEsSC5KLm1nLGIoWEsoYSkpKTtRKGEsSC5KLm5nKSYmVihhLEguSi5ZbSxiKFhLKGEsImZpcnN0X3Zpc2l0IikpKTtRKGEsSC5KLlRlKSYmVihhLEguSi5ibixiKFhLKGEsInNlc3Npb25fc3RhcnQiKSkpfTt2YXIgd1I9ZnVuY3Rpb24oYSl7Rm8uaGFzT3duUHJvcGVydHkoYS5ldmVudE5hbWUpJiYoVihhLEguSi5XbSwhMCksYS5jb3B5VG9IaXREYXRhKEYuRC5IYSksYS5jb3B5VG9IaXREYXRhKEYuRC5lYikpfTt2YXIgeFI9ZnVuY3Rpb24oYSl7UShhLEguSi5iZSk/VihhLEguSi5sZywhMSk6ZEkoYSwiY2NkX2FkZF9lY19zdGl0Y2hpbmciLCExKSYmVihhLEguSi5sZywhMCl9O3ZhciB5Uj1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLnBnKTtiPWJ8fDA7dmFyIGM9ISFRKGEsSC5KLnNhKSxkPWI9PT0wfHxjO1YoYSxILkouZWosZCk7ZCYmVihhLEguSi5wZyw2MCl9O3ZhciBBUj1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1TdHJpbmcoelIuY29va2llKS5zcGxpdCgiOyIpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXS5zcGxpdCgiPSIpLGY9ZVswXS50cmltKCk7aWYoZiYmYShmKSl7dmFyIGc9ZS5zbGljZSgxKS5qb2luKCI9IikudHJpbSgpO2cmJihnPWRlY29kZVVSSUNvbXBvbmVudChnKSk7dmFyIGg9dm9pZCAwLGw9dm9pZCAwOygoaD1iKVtsPWZdfHwoaFtsXT1bXSkpLnB1c2goZyl9fXJldHVybiBifTt2YXIgQlI9d2luZG93LHpSPWRvY3VtZW50LENSPWZ1bmN0aW9uKGEpe3ZhciBiPUJSLl9nYVVzZXJQcmVmcztpZihiJiZiLmlvbyYmYi5pb28oKXx8elIuZG9jdW1lbnRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgiZGF0YS1nb29nbGUtYW5hbHl0aWNzLW9wdC1vdXQiKXx8YSYmQlJbImdhLWRpc2FibGUtIithXT09PSEwKXJldHVybiEwO3RyeXt2YXIgYz1CUi5leHRlcm5hbDtpZihjJiZjLl9nYVVzZXJQcmVmcyYmYy5fZ2FVc2VyUHJlZnM9PSJvbyIpcmV0dXJuITB9Y2F0Y2goZil7fWZvcih2YXIgZD1BUihmdW5jdGlvbihmKXtyZXR1cm4gZj09PSJBTVBfVE9LRU4ifSkuQU1QX1RPS0VOfHxbXSxlPTA7ZTxkLmxlbmd0aDtlKyspaWYoZFtlXT09IiRPUFRfT1VUIilyZXR1cm4hMDtyZXR1cm4gelIuZ2V0RWxlbWVudEJ5SWQoIl9fZ2FPcHRPdXRFeHRlbnNpb24iKT8hMDohMX07dmFyIERSPWZ1bmN0aW9uKGEpe2lmKENSKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpKVAoMjgpLGEuaXNBYm9ydGVkPSEwO2Vsc2V7dmFyIGI9eGsoKTtpZihiJiZBcnJheS5pc0FycmF5KGIuZGVzdGluYXRpb25zKSlmb3IodmFyIGM9MDtjPGIuZGVzdGluYXRpb25zLmxlbmd0aDtjKyspaWYoQ1IoYi5kZXN0aW5hdGlvbnNbY10pKXtQKDEyNSk7YS5pc0Fib3J0ZWQ9ITA7YnJlYWt9fX07dmFyIEVSPWZ1bmN0aW9uKGEpe3ZhciBiPUIubG9jYXRpb24ucHJvdG9jb2w7YiE9PSJodHRwOiImJmIhPT0iaHR0cHM6IiYmKFAoMjkpLGEuaXNBYm9ydGVkPSEwKX07dmFyIEZSPWZ1bmN0aW9uKGEpe0hjJiZIYy5sb2FkUHVycG9zZT09PSJwcmV2aWV3IiYmKFAoMzApLGEuaXNBYm9ydGVkPSEwKX07dmFyIEdSPWZ1bmN0aW9uKGEsYil7Yi5UaiYmKFYoYSxILkouc2EsITApLGIuVGo9ITEsV2ooKSYmVihhLEguSi5vZyxjYygpKSl9O3ZhciBIUj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMsZCl7Qm9bY118fGQ9PT12b2lkIDB8fFUoYSxjLGQpfU0oNTUwKSYmR2IoYS5NLldhLGIpO0diKGEuTS5oYixiKTtHYihhLk0uRWEsYil9O3ZhciBJUj1mdW5jdGlvbihhKXthLmV2ZW50TmFtZT09PUYuRC53YSYmKE8oYS5NLEYuRC5UZCwhMCk/KGEuTS5FYVtGLkQuT2FdJiYoTSg1NTApJiYoYS5NLldhW0YuRC5PYV09YS5NLkVhW0YuRC5PYV0pLGEuTS5oYltGLkQuT2FdPWEuTS5FYVtGLkQuT2FdLGEuTS5FYVtGLkQuT2FdPXZvaWQgMCxVKGEsRi5ELk9hKSksYS5ldmVudE5hbWU9Ri5ELnNjKTphLmlzQWJvcnRlZD0hMCl9Owp2YXIgSlI9ZnVuY3Rpb24oYSl7aWYoTSgxMzIpKXt2YXIgYj1aSyhhKTtpZihiayhiKSlpZihjayhiKSljayhaSyhhKSkmJmEubWVyZ2VIaXREYXRhRm9yS2V5KEYuRC5UYSx7IjNwZCI6IjEifSk7ZWxzZSBpZighKE5jKCI7IHd2Iil8fE5jKCJGQkFOIil8fE5jKCJGQkFWIil8fFBjKCkpJiZYbyhGLkQucmEpKXtWKGEsSC5KLmRuLCEwKTtiayhaSyhhKSkmJldLKGEsInN3X2V4cCIsMSk7YTp7aWYoIU0oMTMyKXx8IWJrKFpLKGEpKXx8Y2soWksoYSkpKWJyZWFrIGE7Yjp7dmFyIGM9e290OllqKGVrKGEuTSksIi9fL3NlcnZpY2Vfd29ya2VyIil9LGQ7ZD0oYz09PXZvaWQgMD97fTpjKS5vdDt2YXIgZT1pTChkKTtpZihlPT09bnVsbHx8IWJnKCJpbnRlcm5hbF9zd19hbGxvd2VkIiwiIil8fGpMKGUub3JpZ2luKSlicmVhayBiOwppZighSWMoKSl7Z0woKS5LKHZvaWQgMCx2b2lkIDAsNik7YnJlYWsgYn12YXIgZj1uZXcga0woZSk7b20oam0uYmEuT2gse30pW2Uub3JpZ2luXT1mO319fX19O3ZhciBMUj1mdW5jdGlvbihhKXthLmNvcHlUb0hpdERhdGEoRi5ELk9sKTtPKGEuTSxGLkQueGgpJiYoVShhLEYuRC54aCwhMCksYmsoWksoYSkpfHxLUihhKSl9LEtSPWZ1bmN0aW9uKGEpe3ZhciBiPUYuRC5iZCxjO2N8fChjPWZ1bmN0aW9uKCl7fSk7UihhLGIpIT09dm9pZCAwJiZVKGEsYixjKFIoYSxiKSkpfTt2YXIgTVI9ImdjbGlkIGRjbGlkIGdjbHNyYyB3YnJhaWQgZ2JyYWlkIGdhZF9zb3VyY2UgZ2FkX2NhbXBhaWduaWQgdXRtX3NvdXJjZSB1dG1fbWVkaXVtIHV0bV9jYW1wYWlnbiB1dG1fdGVybSB1dG1fY29udGVudCB1dG1faWQiLnNwbGl0KCIgIik7ZnVuY3Rpb24gTlIoKXt2YXIgYT1CLmxvY2F0aW9uLGIsYz1hPT1udWxsP3ZvaWQgMDooYj1hLnNlYXJjaCk9PW51bGw/dm9pZCAwOmIucmVwbGFjZSgiPyIsIiIpLGQ7aWYoYyl7Zm9yKHZhciBlPVtdLGY9SmooYywhMCksZz1tKE1SKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZSxuPWZbbF07aWYobilmb3IodmFyIHA9MDtwPG4ubGVuZ3RoO3ArKyl7dmFyIHE9bltwXTtxIT09dm9pZCAwJiZlLnB1c2goe25hbWU6bCx2YWx1ZTpxfSl9fWQ9ZX1lbHNlIGQ9W107cmV0dXJuIGR9O3ZhciBPUj1mdW5jdGlvbihhKXt2YXIgYj1NKDI2NiksYz1NKDI2Nyk7aWYoYnx8Yyl7dmFyIGQ9UihhLEYuRC56YSk7aWYoZCYmZC5pbmRleE9mKCI/Iik9PT0tMSl7dmFyIGU9TlIoKTtpZihlLmxlbmd0aCE9PTAmJihiJiZJUChKLlUuR20pLGMpKXtJUChKLlUuRm0pO3ZhciBmPWUubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLm5hbWUrIj0iK2cudmFsdWV9KS5qb2luKCImIik7VShhLEYuRC56YSxkKyI/IitmKX19fX07dmFyIFBSPVtGLkQucmEsRi5ELmthXSxRUj1bRi5ELnJhLEYuRC5rYSxGLkQubWFdOwpmdW5jdGlvbiBSUihhKXt2YXIgYixjPU0oNTA2KSYmIWRJKGEsImNjZF9nYV9hZHNfaWRzX29wdF9vdXQiLCExKSxkPSEhZEkoYSwiZ29vZ2xlX25nIiwhMSksZT1YbyhjP2Q/UVI6ZnA6UFIpLGY7Zj1kSShhLEYuRC5VZixPKGEuTSxGLkQuVWYpKXx8ISFkSShhLCJnb29nbGVfbmciLCExKTtiPXtoZjpjLEVzOmQsR286ZSxmZjpmLExnOiEhZEkoYSwiZ2E0X2Fkc19saW5rZWQiLCExKSxiaTpBbSgpLEdqOiFWSygpLEZzOmJrKFpLKGEpKSxEczohIVEoYSxILkouYmUpLEdzOiEhUShhLEguSi5UZSksdXM6ISFPKGEuTSxGLkQuTmwpLEtzOiEhUShhLEguSi5laikseGc6TyhhLk0sRi5ELlNjKSxucjpPKGEuTSxGLkQuU2Msdm9pZCAwLDQpLEhzOiEhUShhLEguSi5GYyl9O1YoYSxILkouY2osYi5mZik7VihhLEguSi5iaixTUihiKSk7Yi5oZiYmIWIuZmYmJmIuTGcmJlNSKGIpJiZVKGEsIl8maWJ0IiwiMSIpO1NSKGIpJiZiLkdvJiYoYi5oZj9iLnhnIT09ITF8fGIuTGc6MSkmJlYoYSwKSC5KLnJuLCEwKTtiLkVzJiYhYi5iaSYmVShhLEYuRC5MZSwxKTsoYi5oZj9iLnhnOmIubnIpPT09ITEmJlUoYSwiXyZuZ3MiLCIxIik7VihhLEguSi5oZCxUUihiKSYmKGIuR3N8fGIudXMpKTtWKGEsSC5KLnJnLFRSKGIpJiZiLktzJiYhYi5iaSl9ZnVuY3Rpb24gU1IoYSl7cmV0dXJuIGEuaGY/KGEuTGd8fGEuZmYpJiYhYS5iaSYmIWEuR2o6YS5mZiYmYS54ZyE9PSExJiYhYS5HaiYmIWEuYml9ZnVuY3Rpb24gVFIoYSl7aWYoYS5IcylyZXR1cm4hMTtpZihhLmhmKXtpZighYS5mZiYmIWEuTGcpcmV0dXJuITF9ZWxzZSBpZighYS5mZilyZXR1cm4hMTtyZXR1cm4gYS5Gc3x8YS5Ec3x8YS5Hanx8KGEuaGY/YS54Zz09PSExJiYhYS5MZzphLnhnPT09ITEpfHwhYS5Hbz8hMTohMH07dmFyIFVSPWZ1bmN0aW9uKGEpe3NMKCkmJlUoYSxGLkQuRmUsIjEiKX07dmFyIFZSPWZ1bmN0aW9uKGEpe3ZhciBiPXtwcmVmaXg6U3RyaW5nKE8oYS5NLEYuRC5uYiwiIikpLHBhdGg6U3RyaW5nKE8oYS5NLEYuRC52YywiLyIpKSxmbGFnczpTdHJpbmcoTyhhLk0sRi5ELlRiLCIiKSksZG9tYWluOlN0cmluZyhPKGEuTSxGLkQuTGIsImF1dG8iKSkscGQ6TnVtYmVyKE8oYS5NLEYuRC5DYiw2MzA3MkUzKSl9O1YoYSxILkouR2EsYil9O3ZhciBXUj1mdW5jdGlvbihhKXtpZihNKDQzNSl8fE0oNTUzKSl7dmFyIGI9RG0oKTtiJiZWKGEsSC5KLkFxLGIpfX07dmFyIFlSPWZ1bmN0aW9uKGEpe2EuY29weVRvSGl0RGF0YShGLkQuUmkpO2Zvcih2YXIgYj1PKGEuTSxGLkQuUmwpfHxbXSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY107aWYoZC5ydWxlX3Jlc3VsdCl7YS5jb3B5VG9IaXREYXRhKEYuRC5SaSxkLnRyYWZmaWNfdHlwZSk7SVAoSi5VLkVuKTticmVha319fTt2YXIgWlI9ZnVuY3Rpb24oYSl7aWYoZEkoYSwiZ2E0X2Fkc19saW5rZWQiLCExKSYmYS5ldmVudE5hbWU9PT1GLkQud2Epe3ZhciBiPU8oYS5NLEYuRC51YykhPT0hMTtpZihiKXt2YXIgYz1MSyhhKTtjLnBkJiYoYy5wZD1NYXRoLm1pbihjLnBkLDc3NzZFMykpO1BLKHtUbjpiLG1vOk9vKE8oYS5NLEYuRC5EYikpLFFvOiEhTyhhLk0sRi5ELnpjKSxVbjpjfSl9fX07dmFyICRSPWZ1bmN0aW9uKGEpe1YoYSxILkouTWgsITEpO1YoYSxILkouTmgsITEpO2lmKCFEbSgpJiZXaigpJiYhYmsoWksoYSkpJiYhUShhLEguSi5iZSkmJlEoYSxILkouZWopKXt2YXIgYj1RKGEsSC5KLnJnKTtRKGEsSC5KLm9nKSYmKGI/VihhLEguSi5OaCwhMCk6VihhLEguSi5NaCwhMCkpfX07dmFyIGFTPWZ1bmN0aW9uKGEpe08oYS5NLEYuRC56YykmJihYbyhGLkQucmEpfHxPKGEuTSxGLkQuS2IpfHxVKGEsRi5ELlptLCEwKSk7dmFyIGI7dmFyIGM7Yz1jPT09dm9pZCAwPzM6Yzt2YXIgZD1BLmxvY2F0aW9uLmhyZWY7aWYoZCl7dmFyIGU9UmooZCkuc2VhcmNoLnJlcGxhY2UoIj8iLCIiKSxmPUlqKGUsIl9nbCIsITEsITApfHwiIjtiPWY/VnEoZixjKSE9PXZvaWQgMDohMX1lbHNlIGI9ITE7YiYmYmsoWksoYSkpJiZXSyhhLCJnbHYiLDEpO2lmKGEuZXZlbnROYW1lIT09Ri5ELndhKXJldHVybnt9O08oYS5NLEYuRC56YykmJkFzKFsiYXciLCJkYyJdKTtDcyhbImF3IiwiZGMiXSk7dmFyIGc9JFAoYSksaD1aUChhKTtyZXR1cm4gT2JqZWN0LmtleXMoZykubGVuZ3RoP2c6aH07dmFyIGJTPWZ1bmN0aW9uKGEpe3ZhciBiPSEwO2I9Yj09PXZvaWQgMD8hMTpiO2lmKE0oNDI1KSYmIShwbCgpfHxiJiZRKGEsSC5KLmRqKXx8YS5ldmVudE5hbWUhPT1GLkQud2F8fFEoYSxILkouRmMpKSl7dmFyIGM9e30sZD17fSxlPXtldmVudE1ldGFkYXRhOm5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYS5NLmV2ZW50TWV0YWRhdGEsKGNbSC5KLkZjXT0hMCxjKSxiP3t9OihkW0guSi5EY109WC5WLkthLGQpKSxub0d0bUV2ZW50OiEwfSxmPXNDKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsInN0cnVjdHVyZWRfZGF0YSIsYS5NLkVhKTttRChmLGEuTS5ldmVudElkLGUpfX07CnZhciBkUz1mdW5jdGlvbihhKXtyZXR1cm4hYXx8Y1MudGVzdChhKXx8RG8uaGFzT3duUHJvcGVydHkoYSl9LGNTPS9eKF98Z2FffGdvb2dsZV98Z3RhZ1wufGZpcmViYXNlXykuKiQvLGVTPWZ1bmN0aW9uKGEpe3RoaXMueWE9YTt0aGlzLkg9dGhpcy56Yj10aGlzLmNsaWVudElkPXZvaWQgMDt0aGlzLmphPXRoaXMuUj0hMTt0aGlzLkxhPTA7dGhpcy5OPSExO3RoaXMuWj17VGo6ITF9O3RoaXMuZmE9bmV3IElRO3RoaXMuSz1uZXcgSFB9O2s9ZVMucHJvdG90eXBlO2suWnM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMsZT1iQyh0aGlzLnlhKTtpZihlKWlmKGMuZXZlbnRNZXRhZGF0YVtILkouYWVdJiZhLmNoYXJBdCgwKT09PSJfIiljLm9uRmFpbHVyZSgpO2Vsc2V7YSE9PUYuRC53YSYmYSE9PUYuRC5KYiYmZFMoYSkmJlAoNTgpO3ZhciBmPW5ldyBhSShlLGEsYyk7VihmLEguSi5FYixiKTt2YXIgZz1bRi5ELnJhXSxoPWJrKFpLKGYpKTtWKGYsSC5KLmRqLGgpO2lmKGRJKGYsRi5ELlVmLApPKGYuTSxGLkQuVWYpKXx8aClnLnB1c2goRi5ELmthKSxnLnB1c2goRi5ELm1hKTtGTS5mYShmdW5jdGlvbigpe2JwKGZ1bmN0aW9uKCl7ZC5idChmKX0sZyl9KX1lbHNlIGMub25GYWlsdXJlKCl9O2suYnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0cnl7SE0oYSk7aWYoYS5pc0Fib3J0ZWQpe3RiKCk7cmV0dXJufUpNKGEpO0RSKGEpO3VSKGEpO0VSKGEpO0ZSKGEpO0lNKGEpO3ZhciBjPXt9O2VRKGEsYyk7aWYoYS5pc0Fib3J0ZWQpe2EuTS5vbkZhaWx1cmUoKTt0YigpO3JldHVybn10aGlzLkg9YTt2YXIgZD1jLnVyO2MuSHI9PT0wJiZJUChKLlUubmwpO2Q9PT0wJiZJUChKLlUuTGspO1pNKGEpO1YoYSxILkoudGcsY28uaWEueGQpO1ZSKGEpO0hSKGEpO3RoaXMuTHEoYSk7dGhpcy5LLkt0KGEpO1UoYSxGLkQuemksYWwoOCxORikpO3hSKGEpO3BOKGEpO1pSKGEpO01RKGEpO3RoaXMuQW8oYVMoYSkpO2JTKGEpO3ZhciBlPWEuZXZlbnROYW1lPT09Ri5ELndhO2UmJih0aGlzLk49CiEwKTtJUihhKTtlJiYhYS5pc0Fib3J0ZWQmJnRoaXMuTGErKz4wJiZJUChKLlUuaG4pO1VMKGEpO2pSKGEsdGhpcy5jbGllbnRJZCx0aGlzLnpiLHRoaXMuSywhdGhpcy5qYSk7blIoYSk7bFIoYSk7T1IoYSk7WEwoYSk7R1IoYSx0aGlzLlopO3lSKGEpO3ZSKGEpO3dSKGEpO1lSKGEpO2FRKGEpO2dRKGEpO3dNKGEpO2hSKGEpO1lRKGEpO2dSKGEpO2ZSKGEpO2VSKGEpO2RSKGEpO2NSKGEpO2FSKGEpOyRRKGEpO1dRKGEpO1VRKGEpO1RRKGEpO1NRKGEpO2JRKGEpO2NRKGEpO08oYS5NLEYuRC54aCkmJiFiayhaSyhhKSl8fEdNKGEpO1VSKGEpO1dSKGEpO2lOKGEpO1ZMKGEpO1NMKGEpO2xOKGEpO2hOKGEpO1hNKGEsITEpO3NSKGEpO1JSKGEpOyRSKGEpO05NKGEpO3JSKGEpO3BSKGEpO2JSKGEpO1pRKGEpO1JRKGEpO3FSKGEpOyF0aGlzLk4mJlEoYSxILkouUGMpJiZJUChKLlUuc2wpO0pQKGEpO2lmKE0oNTc1KSl7aWYoYS5pc0Fib3J0ZWQpe2lmKCFRKGEsSC5KLlNvKSlhLk0ub25GYWlsdXJlKCk7CnRiKCk7cmV0dXJufWlmKFEoYSxILkouSmEpKXthLk0ub25GYWlsdXJlKCk7dGIoKTtyZXR1cm59fWVsc2UgaWYoUShhLEguSi5KYSl8fGEuaXNBYm9ydGVkKXthLk0ub25GYWlsdXJlKCk7dGIoKTtyZXR1cm59dGhpcy5BbyhpUihhLHRoaXMuY2xpZW50SWQpKTt0aGlzLmphPSEwO3RoaXMuSHQoYSk7SlIoYSk7VlEoZnVuY3Rpb24oZil7Yi5NbihmKX0sYSk7dGhpcy5LLnFrKCk7TFIoYSk7Z04oYSk7V0woYSk7WU0oYSk7aWYoYS5pc0Fib3J0ZWQpe2EuTS5vbkZhaWx1cmUoKTt0YigpO3JldHVybn10aGlzLk1uKGEpO2EuTS5vblN1Y2Nlc3MoKX1jYXRjaChmKXthLk0ub25GYWlsdXJlKCl9dGIoKX07ay5Nbj1mdW5jdGlvbihhKXt0aGlzLmZhLmFkZChhKX07ay5Bbz1mdW5jdGlvbihhKXt2YXIgYj1hLmNsaWVudElkLGM9YS56YjtiJiZjJiYodGhpcy5jbGllbnRJZD1iLHRoaXMuemI9Yyl9O2suZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLmZhLmZsdXNoKCl9O2suSHQ9ZnVuY3Rpb24oYSl7dmFyIGI9CnRoaXM7aWYoIXRoaXMuUil7dmFyIGM9WG8oRi5ELm1hKSxkPVhvKEYuRC5yYSk7JG8oW0YuRC5tYSxGLkQucmEsRi5ELmthXSxmdW5jdGlvbihlKXt2YXIgZjtmPShlPT09dm9pZCAwP3t9OmUpLmNvbnNlbnRFdmVudElkO3ZhciBnPVhvKEYuRC5tYSksaD1YbyhGLkQucmEpLGw9ITEsbj17fSxwPXt9O2lmKGQhPT1oJiZiLkgmJmIuemImJmIuY2xpZW50SWQpe3ZhciBxPWIuY2xpZW50SWQscjt2YXIgdD1MUChiLnpiKTtyPXQ/dC5oOnZvaWQgMDtpZihoKXt2YXIgdT1GUChiLkgpO2lmKHUpe2IuY2xpZW50SWQ9dTt2YXIgdj1TUChiLkgpO3YmJihiLnpiPVBQKHYsYi56YixiLkgpKX1lbHNlIERQKGIuY2xpZW50SWQsYi5IKSxBUChiLmNsaWVudElkLCEwKTtSUChiLnpiLGIuSCk7bD0hMDtuW0YuRC5ObF09cTtyJiYobltGLkQuYnFdPXIpfWVsc2UgYi56Yj12b2lkIDAsYi5jbGllbnRJZD12b2lkIDAsQS5nYUdsb2JhbD17fX1nJiYhYyYmKGw9ITAscFtILkouR2hdPSEwLG5bRi5ELnhpXT0KTG9bRi5ELm1hXSk7aWYobCl7dmFyIHg9c0MoYi55YSxGLkQueWYsbik7bUQoeCxmIT1udWxsP2Y6YS5NLmV2ZW50SWQse2V2ZW50TWV0YWRhdGE6cH0pfWQ9aDtjPWc7Yi5aLlRqPSEwfSk7dGhpcy5SPSEwfX07ay5McT1mdW5jdGlvbihhKXthLmV2ZW50TmFtZSE9PUYuRC5KYiYmdGhpcy5LLktxKGEpfTt2YXIgZ1M9ZnVuY3Rpb24oYSl7aWYoIWZTKGEpKXt2YXIgYj0hMSxjPWZ1bmN0aW9uKCl7IWImJmZTKGEpJiYoYj0hMCxhZChCLCJ2aXNpYmlsaXR5Y2hhbmdlIixjKSxhZChCLCJwcmVyZW5kZXJpbmdjaGFuZ2UiLGMpLFAoNTUpKX07JGMoQiwidmlzaWJpbGl0eWNoYW5nZSIsYyk7JGMoQiwicHJlcmVuZGVyaW5nY2hhbmdlIixjKTtQKDU0KX19LGZTPWZ1bmN0aW9uKGEpe2lmKCJwcmVyZW5kZXJpbmciaW4gQj9CLnByZXJlbmRlcmluZzpCLnZpc2liaWxpdHlTdGF0ZT09PSJwcmVyZW5kZXIiKXJldHVybiExO2EoKTtyZXR1cm4hMH07ZnVuY3Rpb24gaFMoYSl7Z1MoZnVuY3Rpb24oKXt2YXIgYj1iQyhhKTtpZihiKXt2YXIgYz1pUyhiKSxkPWNvLmlhLnhkLGU9WUMoKSxmPWJDKGEsITApO2YmJmUuSC5yZWdpc3RlcihmLGMsZCx2b2lkIDApfX0pO31mdW5jdGlvbiBpUyhhKXt2YXIgYj1mdW5jdGlvbigpe307dmFyIGM9bmV3IGVTKGEuaWQpLGQ9YS5wcmVmaXg9PT0iTUMiO2I9ZnVuY3Rpb24oZSxmLGcsaCl7ZCYmKGguZXZlbnRNZXRhZGF0YVtILkouYmVdPSEwKTtjLlpzKGYsZyxoKX07alMoYSxjKTtyZXR1cm4gYn0KZnVuY3Rpb24galMoYSxiKXt2YXIgYz1iLks7Yy5odChmdW5jdGlvbigpe1prKDksITApO1lDKCkuZmx1c2goKTtpZihjLlloKCk+PTFFMyYma2QoKSl7dmFyIGQ9e30sZT17ZXZlbnRJZDpyaigpLGV2ZW50TWV0YWRhdGE6KGRbSC5KLktrXT0hMCxkKSxkZWZlcnJhYmxlOiEwfTtaQyhGLkQueWYse30sYS5pZCxlKX1iLmZsdXNoKCk7Yy5DbyhmdW5jdGlvbigpe1prKDksITEpO2MuQ28oKX0pfSk7fXZhciBrUz1KLlUucWwsbFM9Si5VLnJsO2Z1bmN0aW9uIG1TKGEsYil7dmFyIGM9dGsoKTtjJiZjLmluZGV4T2YoYik+LTEmJihhW0guSi5DY109ITApfWZ1bmN0aW9uIG9TKGEsYixjKXt2YXIgZD10aGlzO31vUy5QPSJpbnRlcm5hbC5ndGFnQ29uZmlnIjtmdW5jdGlvbiBwUyhhLGIsYyxkKXt2YXIgZT10aGlzO31wUy5QPSJpbnRlcm5hbC5ndGFnRGVzdGluYXRpb25Db25maWciOwpmdW5jdGlvbiByUyhhLGIpe30KclMucHVibGljTmFtZT0iZ3RhZ1NldCI7ZnVuY3Rpb24gc1MoKXt2YXIgYT17fTtyZXR1cm4gYX07ZnVuY3Rpb24gdFMoYSl7fXRTLlA9ImludGVybmFsLmluaXRpYWxpemVTZXJ2aWNlV29ya2VyIjtmdW5jdGlvbiB1UyhhLGIpe311Uy5wdWJsaWNOYW1lPSJpbmplY3RIaWRkZW5JZnJhbWUiO2Z1bmN0aW9uIHZTKGEsYixjLGQsZSl7fXZTLlA9ImludGVybmFsLmluamVjdEh0bWwiO3ZhciBBUz17ZGw6MSxpZDoxfTsKZnVuY3Rpb24gQlMoYSxiLGMsZCl7fUJTLnB1YmxpY05hbWU9ImluamVjdFNjcmlwdCI7ZnVuY3Rpb24gQ1MoKXt2YXIgYT12bSxiPSExO2I9ISFhLkhbIjUiXTtyZXR1cm4gYn1DUy5QPSJpbnRlcm5hbC5pc0F1dG9QaWlFbGlnaWJsZSI7ZnVuY3Rpb24gRFMoYSl7dmFyIGI9ITA7cmV0dXJuIGJ9RFMucHVibGljTmFtZT0iaXNDb25zZW50R3JhbnRlZCI7ZnVuY3Rpb24gRVMoYSl7dmFyIGI9ITE7cmV0dXJuIGJ9RVMuUD0iaW50ZXJuYWwuaXNEZWJ1Z01vZGUiO2Z1bmN0aW9uIEZTKGEpe3ZhciBiPSExO3JldHVybiBifUZTLlA9ImludGVybmFsLmlzRGVzdGluYXRpb25Jbml0aWFsaXplZCI7ZnVuY3Rpb24gR1MoKXtyZXR1cm4gQm0oKX1HUy5QPSJpbnRlcm5hbC5pc0RtYVJlZ2lvbiI7ZnVuY3Rpb24gSFMoKXtyZXR1cm4gVUIoKX1IUy5QPSJpbnRlcm5hbC5pc0RvbVJlYWR5IjtmdW5jdGlvbiBJUyhhKXt2YXIgYj0hMTtyZXR1cm4gYn1JUy5QPSJpbnRlcm5hbC5pc0VudGl0eUluZnJhc3RydWN0dXJlIjtmdW5jdGlvbiBKUyhhKXt2YXIgYj0hMTtpZighcWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIm51bWJlciJdLFthXSk7Yj1NKGEpO3JldHVybiBifUpTLlA9ImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiO2Z1bmN0aW9uIEtTKCl7dmFyIGE9ITE7cmV0dXJuIGF9S1MuUD0iaW50ZXJuYWwuaXNGcGZlIjtmdW5jdGlvbiBMUygpe3ZhciBhPSExO3JldHVybiBhfUxTLlA9ImludGVybmFsLmlzR2NwQnJvd3NlciI7ZnVuY3Rpb24gTVMoKXt2YXIgYT0hMTtyZXR1cm4gYX1NUy5QPSJpbnRlcm5hbC5pc0xhbmRpbmdQYWdlIjtmdW5jdGlvbiBOUygpe3ZhciBhPSExO3JldHVybiBhfU5TLlA9ImludGVybmFsLmlzT2d0IjtmdW5jdGlvbiBPUygpe3ZhciBhO3JldHVybiBhfU9TLlA9ImludGVybmFsLmlzU2FmYXJpUGNtRWxpZ2libGVCcm93c2VyIjtmdW5jdGlvbiBQUygpe3ZhciBhPVFoKGZ1bmN0aW9uKGIpe1hGKHRoaXMpLmxvZygiZXJyb3IiLGIpfSk7YS5wdWJsaWNOYW1lPSJKU09OIjtyZXR1cm4gYX07ZnVuY3Rpb24gUVMoYSl7dmFyIGI9dm9pZCAwO3JldHVybiBVZChiKX1RUy5QPSJpbnRlcm5hbC5sZWdhY3lQYXJzZVVybCI7ZnVuY3Rpb24gUlMoKXtyZXR1cm4hMX0KdmFyIFNTPXtnZXRJdGVtOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9LHNldEl0ZW06ZnVuY3Rpb24oYSxiKXtyZXR1cm4hMX0scmVtb3ZlSXRlbTpmdW5jdGlvbihhKXt9fTtmdW5jdGlvbiBUUygpe31UUy5wdWJsaWNOYW1lPSJsb2dUb0NvbnNvbGUiO2Z1bmN0aW9uIFVTKGEsYil7aWYoIWxoKGEpfHwhZWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIk9iamVjdCJdLGFyZ3VtZW50cyk7dmFyIGM9YSxkPVRkKGIsdGhpcy5UKSxlPVlDKCksZj1iQyhjLCEwKTtmJiZUQyhlLkgsZixkKTt9VVMuUD0iaW50ZXJuYWwubWVyZ2VSZW1vdGVDb25maWciO2Z1bmN0aW9uIFZTKGEsYixjKXtjPWM9PT12b2lkIDA/ITA6Yzt2YXIgZD1bXTtyZXR1cm4gVWQoZCl9VlMuUD0iaW50ZXJuYWwucGFyc2VDb29raWVWYWx1ZXNGcm9tU3RyaW5nIjtmdW5jdGlvbiBXUyhhKXt2YXIgYj12b2lkIDA7aWYodHlwZW9mIGEhPT0ic3RyaW5nIilyZXR1cm47YSYmU2IoYSwiLy8iKSYmKGE9Qi5sb2NhdGlvbi5wcm90b2NvbCthKTtpZih0eXBlb2YgVVJMPT09ImZ1bmN0aW9uIil7dmFyIGM7YTp7dmFyIGQ7dHJ5e2Q9bmV3IFVSTChhKX1jYXRjaCh4KXtjPXZvaWQgMDticmVhayBhfWZvcih2YXIgZT17fSxmPUFycmF5LmZyb20oZC5zZWFyY2hQYXJhbXMpLGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXVswXSxsPWZbZ11bMV07ZS5oYXNPd25Qcm9wZXJ0eShoKT90eXBlb2YgZVtoXT09PSJzdHJpbmciP2VbaF09W2VbaF0sbF06ZVtoXS5wdXNoKGwpOmVbaF09bH1jPXtocmVmOmQuaHJlZixvcmlnaW46ZC5vcmlnaW4scHJvdG9jb2w6ZC5wcm90b2NvbCx1c2VybmFtZTpkLnVzZXJuYW1lLHBhc3N3b3JkOmQucGFzc3dvcmQsaG9zdDpkLmhvc3QsaG9zdG5hbWU6ZC5ob3N0bmFtZSwKcG9ydDpkLnBvcnQscGF0aG5hbWU6ZC5wYXRobmFtZSxzZWFyY2g6ZC5zZWFyY2gsc2VhcmNoUGFyYW1zOmUsaGFzaDpkLmhhc2h9fXJldHVybiBVZChjKX12YXIgbjt0cnl7bj1SaihhKX1jYXRjaCh4KXtyZXR1cm59aWYoIW4ucHJvdG9jb2x8fCFuLmhvc3QpcmV0dXJuO3ZhciBwPXt9O2lmKG4uc2VhcmNoKWZvcih2YXIgcT1uLnNlYXJjaC5yZXBsYWNlKCI/IiwiIikuc3BsaXQoIiYiKSxyPTA7cjxxLmxlbmd0aDtyKyspe3ZhciB0PXFbcl0uc3BsaXQoIj0iKSx1PXRbMF0sdj1Laih0LnNwbGljZSgxKS5qb2luKCI9IikpfHwiIjt2PXYucmVwbGFjZSgvXCsvZywiICIpO3AuaGFzT3duUHJvcGVydHkodSk/dHlwZW9mIHBbdV09PT0ic3RyaW5nIj9wW3VdPVtwW3VdLHZdOnBbdV0ucHVzaCh2KTpwW3VdPXZ9bi5zZWFyY2hQYXJhbXM9cDtuLm9yaWdpbj1uLnByb3RvY29sKyIvLyIrbi5ob3N0O24udXNlcm5hbWU9IiI7bi5wYXNzd29yZD0iIjtiPVVkKG4pOwpyZXR1cm4gYn1XUy5wdWJsaWNOYW1lPSJwYXJzZVVybCI7ZnVuY3Rpb24gWFMoYSl7fVhTLlA9ImludGVybmFsLnByb2Nlc3NBc05ld0V2ZW50IjtmdW5jdGlvbiBZUyhhLGIsYyl7dmFyIGQ7cmV0dXJuIGR9WVMuUD0iaW50ZXJuYWwucHVzaFRvRGF0YUxheWVyIjtmdW5jdGlvbiBaUyhhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyksYz0hMTtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7Zm9yKHZhciBkPVt0aGlzLGFdLGU9bShiKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSlkLnB1c2goVGQoZi52YWx1ZSx0aGlzLlQsMSkpO3RyeXtMLmFwcGx5KG51bGwsZCksYz0hMH1jYXRjaChnKXtyZXR1cm4hMX1yZXR1cm4gY31aUy5wdWJsaWNOYW1lPSJxdWVyeVBlcm1pc3Npb24iO2Z1bmN0aW9uICRTKGEpe3ZhciBiPXRoaXM7fSRTLlA9ImludGVybmFsLnF1ZXVlQWRzVHJhbnNtaXNzaW9uIjtmdW5jdGlvbiBhVChhKXt2YXIgYj12b2lkIDA7cmV0dXJuIGJ9YVQucHVibGljTmFtZT0icmVhZEFuYWx5dGljc1N0b3JhZ2UiO2Z1bmN0aW9uIGJUKCl7dmFyIGE9IiI7cmV0dXJuIGF9YlQucHVibGljTmFtZT0icmVhZENoYXJhY3RlclNldCI7ZnVuY3Rpb24gY1QoKXtyZXR1cm4gRSgxOSl9Y1QuUD0iaW50ZXJuYWwucmVhZERhdGFMYXllck5hbWUiO2Z1bmN0aW9uIGRUKCl7dmFyIGE9IiI7cmV0dXJuIGF9ZFQucHVibGljTmFtZT0icmVhZFRpdGxlIjtmdW5jdGlvbiBlVChhLGIpe3ZhciBjPXRoaXM7aWYoIWxoKGEpfHwhaGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsImZ1bmN0aW9uIl0sYXJndW1lbnRzKTtMTShhLGZ1bmN0aW9uKGQpe2IuaW52b2tlKGMuVCxVZChkLGMuVCwxKSl9KTt9ZVQuUD0iaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayI7ZnVuY3Rpb24gZlQoYSxiKXtpZighbGgoYSl8fCFlaChiKSYmIWdoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJPYmplY3R8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTtpZihCaChYRih0aGlzKS5QYigpKSlyZXR1cm4hMTt2YXIgYyxkLGU9YkMoYSwhMCk7aWYoIWUpcmV0dXJuITE7c3dpdGNoKGUucHJlZml4KXtjYXNlICJBVyI6Yz10TjtkPWNvLmlhLmNiO2JyZWFrO2Nhc2UgIkRDIjpjPUlOO2Q9Y28uaWEuY2I7YnJlYWs7Y2FzZSAiR0YiOmM9Tk47ZD1jby5pYS5nZDticmVhaztjYXNlICJIQSI6Yz1QTjtkPWNvLmlhLmdkO2JyZWFrO2Nhc2UgIlVBIjpjPWZPO2Q9Y28uaWEuZ2Q7YnJlYWs7Y2FzZSAiTUMiOmM9aVMoZSk7ZD1jby5pYS54ZDticmVhaztjYXNlICJHIjpyZXR1cm4gaFMoYSksITA7ZGVmYXVsdDpyZXR1cm4hMX12YXIgZj1hLApnPWMsaD1kLGw9VGQoYix0aGlzLlQsMSksbj1ZQygpLHA9YkMoZiwhMCk7cCYmbi5ILnJlZ2lzdGVyKHAsZyxoLGwpO3JldHVybiEwfWZULlA9ImludGVybmFsLnJlZ2lzdGVyRGVzdGluYXRpb24iO3ZhciBnVD1bImV2ZW50Il07ZnVuY3Rpb24gaFQoYSxiLGMpe31oVC5QPSJpbnRlcm5hbC5yZWdpc3Rlckd0YWdDb21tYW5kTGlzdGVuZXIiO2Z1bmN0aW9uIGlUKGEsYil7dmFyIGM9ITE7cmV0dXJuIGN9aVQuUD0iaW50ZXJuYWwucmVtb3ZlRGF0YUxheWVyRXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24galQoYSxiKXt9CmpULlA9ImludGVybmFsLnJlbW92ZUZvcm1EYXRhIjtmdW5jdGlvbiBrVCgpe31rVC5wdWJsaWNOYW1lPSJyZXNldERhdGFMYXllciI7ZnVuY3Rpb24gbFQoYSxiLGMpe3ZhciBkPXZvaWQgMDtyZXR1cm4gZH1sVC5QPSJpbnRlcm5hbC5zY3J1YlVybFBhcmFtcyI7ZnVuY3Rpb24gbVQoYSl7fW1ULlA9ImludGVybmFsLnNlbmRBZHNIaXQiO2Z1bmN0aW9uIG5UKGEsYixjLGQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mnx8IWZoKGQpfHwhZmgoYykpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbImFueSIsImFueSIsIk9iamVjdHx1bmRlZmluZWQiLCJPYmplY3R8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTt2YXIgZT1jP1RkKGMsdGhpcy5ULDEpOnt9LGY9VGQoYSksZz1BcnJheS5pc0FycmF5KGYpP2Y6W2ZdO2I9U3RyaW5nKGIpO3ZhciBoPWQ/VGQoZCk6e30sbD1YRih0aGlzKTtoLm9yaWdpbmF0aW5nRW50aXR5PXRHKGwpO2wucHJpb3JpdHlRdWV1ZSYmKGgucHJpb3JpdHlRdWV1ZT1sLnByaW9yaXR5UXVldWUpO2Zvcih2YXIgbj0wO248Zy5sZW5ndGg7bisrKXt2YXIgcD1nW25dO2lmKHR5cGVvZiBwPT09InN0cmluZyIpe3ZhciBxPXt9O0VkKGUscSk7dmFyIHI9e307RWQoaCxyKTt2YXIgdD1zQyhwLGIscSk7bUQodCwKaC5ldmVudElkfHxsLmV2ZW50SWQscil9fX1uVC5QPSJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50IjtmdW5jdGlvbiBvVChhLGIsYyl7fW9ULnB1YmxpY05hbWU9InNlbmRQaXhlbCI7ZnVuY3Rpb24gcFQoYSxiKXt9cFQuUD0iaW50ZXJuYWwuc2V0QW5jaG9ySHJlZiI7ZnVuY3Rpb24gcVQoYSl7fXFULlA9ImludGVybmFsLnNldENvbnRhaW5lckNvbnNlbnREZWZhdWx0cyI7ZnVuY3Rpb24gclQoYSxiLGMsZCl7dmFyIGU9dGhpcztkPWQ9PT12b2lkIDA/ITA6ZDt2YXIgZj0hMTsKcmV0dXJuIGZ9clQucHVibGljTmFtZT0ic2V0Q29va2llIjtmdW5jdGlvbiBzVChhKXt9c1QuUD0iaW50ZXJuYWwuc2V0Q29yZVBsYXRmb3JtU2VydmljZXMiO2Z1bmN0aW9uIHRUKGEsYil7fXRULlA9ImludGVybmFsLnNldERhdGFMYXllclZhbHVlIjtmdW5jdGlvbiB1VChhKXt9dVQucHVibGljTmFtZT0ic2V0RGVmYXVsdENvbnNlbnRTdGF0ZSI7ZnVuY3Rpb24gdlQoYSxiKXt9dlQuUD0iaW50ZXJuYWwuc2V0RGVsZWdhdGVkQ29uc2VudFR5cGUiO2Z1bmN0aW9uIHdUKGEsYil7fXdULlA9ImludGVybmFsLnNldEZvcm1BY3Rpb24iO2Z1bmN0aW9uIHhUKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztpZighbGgoYSl8fCFvaChjKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiYW55IiwiYm9vbGVhbnx1bmRlZmluZWQiXSxhcmd1bWVudHMpO2lmKCFrbShhKSl0aHJvdyBFcnJvcigic2V0SW5Dcm9zc0NvbnRhaW5lckRhdGEgcmVxdWlyZXMgdmFsaWQgQ3Jvc3NDb250YWluZXJTY2hlbWEga2V5LiIpOyhjfHxubShhKT09PXZvaWQgMCkmJm1tKGEsVGQoYix0aGlzLlQsMSkpO314VC5QPSJpbnRlcm5hbC5zZXRJbkNyb3NzQ29udGFpbmVyRGF0YSI7ZnVuY3Rpb24geVQoYSxiLGMpe3JldHVybiExfXlULnB1YmxpY05hbWU9InNldEluV2luZG93IjtmdW5jdGlvbiB6VChhLGIsYyl7fXpULlA9ImludGVybmFsLnNldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciI7ZnVuY3Rpb24gQVQoYSxiLGMpe2lmKCFsaChhKXx8IWxoKGIpfHxhcmd1bWVudHMubGVuZ3RoIT09Myl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwic3RyaW5nIiwiYW55Il0sYXJndW1lbnRzKTtmb3IodmFyIGQ9Yi5zcGxpdCgiLiIpLGU9ZUQoYSksZj0wO2Y8ZC5sZW5ndGgtMTtmKyspe2lmKGVbZFtmXV09PT12b2lkIDApZVtkW2ZdXT17fTtlbHNlIGlmKCFDZChlW2RbZl1dKSl0aHJvdyBFcnJvcigic2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIGZhaWxlZCwgcGF0aCBjb250YWlucyBhIG5vbi1vYmplY3QgdHlwZTogIitkW2ZdKTtlPWVbZFtmXV19ZVtkW2ZdXT1UZChjLHRoaXMuVCwxKTt9QVQuUD0iaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIjtmdW5jdGlvbiBCVChhLGIpe30KQlQuUD0iaW50ZXJuYWwuc2V0VHJhbnNtaXNzaW9uTW9kZSI7ZnVuY3Rpb24gQ1QoYSxiLGMsZCl7dmFyIGU9dGhpczt9Q1QucHVibGljTmFtZT0ic2hhMjU2IjtmdW5jdGlvbiBEVChhLGIsYyl7fQpEVC5QPSJpbnRlcm5hbC5zb3J0UmVtb3RlQ29uZmlnUGFyYW1ldGVycyI7ZnVuY3Rpb24gRVQoYSl7fUVULlA9ImludGVybmFsLnN0b3JlQWRzQnJhaWRMYWJlbHMiO2Z1bmN0aW9uIEZUKGEsYil7dmFyIGM9dm9pZCAwO3JldHVybiBjfUZULlA9ImludGVybmFsLnN1YnNjcmliZVRvQ3Jvc3NDb250YWluZXJEYXRhIjtmdW5jdGlvbiBHVChhKXt9R1QuUD0iaW50ZXJuYWwudGFza1NlbmRBZHNIaXRzIjt2YXIgSFQ9e2dldEl0ZW06ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGM9WEYodGhpcykuUGIoKSxkPWFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2RbY10mJihiPWRbY10uaGFzT3duUHJvcGVydHkoImd0bS4iK2EpP2RbY11bImd0bS4iK2FdOm51bGwpO3JldHVybiBifSxzZXRJdGVtOmZ1bmN0aW9uKGEsYil7TCh0aGlzLCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSIpO3ZhciBjPVhGKHRoaXMpLlBiKCksZD1hbCg3LGZ1bmN0aW9uKCl7cmV0dXJue319KTtkW2NdPWRbY118fHt9O2RbY11bImd0bS4iK2FdPWI7fSwKcmVtb3ZlSXRlbTpmdW5jdGlvbihhKXtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGI9WEYodGhpcykuUGIoKSxjPWFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2lmKCFjW2JdfHwhY1tiXS5oYXNPd25Qcm9wZXJ0eSgiZ3RtLiIrYSkpcmV0dXJuO2RlbGV0ZSBjW2JdWyJndG0uIithXTt9LGNsZWFyOmZ1bmN0aW9uKCl7TCh0aGlzLCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSIpO3ZhciBhPVhGKHRoaXMpLlBiKCk7ZGVsZXRlIGFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pW2FdO30sCnB1YmxpY05hbWU6InRlbXBsYXRlU3RvcmFnZSJ9O2Z1bmN0aW9uIElUKGEsYil7dmFyIGM9ITE7cmV0dXJuIGN9SVQuUD0iaW50ZXJuYWwudGVzdFJlZ2V4IjtmdW5jdGlvbiBKVChhKXt2YXIgYjtyZXR1cm4gYn07ZnVuY3Rpb24gS1QoYSxiKXt9S1QuUD0iaW50ZXJuYWwudHJhY2tVc2FnZSI7ZnVuY3Rpb24gTFQoYSxiKXt2YXIgYztyZXR1cm4gY31MVC5QPSJpbnRlcm5hbC51bnN1YnNjcmliZUZyb21Dcm9zc0NvbnRhaW5lckRhdGEiO2Z1bmN0aW9uIE1UKGEpe31NVC5wdWJsaWNOYW1lPSJ1cGRhdGVDb25zZW50U3RhdGUiO2Z1bmN0aW9uIE5UKGEpe3ZhciBiPSExO3JldHVybiBifU5ULlA9ImludGVybmFsLnVzZXJEYXRhTmVlZHNFbmNyeXB0aW9uIjt2YXIgT1Q9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IGFpfSxRVD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXt2YXIgYjt2YXIgYz1QVC5IO2lmKGMuY29udGFpbnMoYSkpYj1jLmdldChhLHRoaXMpO2Vsc2V7dmFyIGQ7aWYoZD1jLkguaGFzT3duUHJvcGVydHkoYSkpe3ZhciBlPXRoaXMuVC54YigpO2lmKGUpe3ZhciBmPSExLGc9ZS5QYigpO2lmKGcpe0JoKGcpfHwoZj0hMCk7fWQ9Zn1lbHNlIGQ9ITB9aWYoZCl7dmFyIGg9Yy5ILmhhc093blByb3BlcnR5KGEpP2MuSFthXTp2b2lkIDA7Yj1ofWVsc2UgdGhyb3cgRXJyb3IoYSsiIGlzIG5vdCBhIHZhbGlkIEFQSSBuYW1lLiIpO31yZXR1cm4gYn19LFBUO2Z1bmN0aW9uIFJUKGEsYixjKXtQVHx8KFBUPW5ldyBPVCk7UFQuSC5hZGQoYSxiLGMpfWZ1bmN0aW9uIFNUKGEsYil7UFR8fChQVD1uZXcgT1QpO3ZhciBjPVBULkg7aWYoYy5ILmhhc093blByb3BlcnR5KGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFkZCBhIHByaXZhdGUgZnVuY3Rpb24gd2hpY2ggYWxyZWFkeSBleGlzdHM6ICIrYSsiLiIpO2lmKGMuY29udGFpbnMoYSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYWRkIGEgcHJpdmF0ZSBmdW5jdGlvbiB3aXRoIGFuIGV4aXN0aW5nIEFQSSBuYW1lOiAiK2ErIi4iKTtjLkhbYV09eWIoYik/dGgoYSxiKTp1aChhLGIpfTtmdW5jdGlvbiBUVChhLGIpe2Z1bmN0aW9uIGMoZCl7aWYoIWVoKGQpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3QiXSxhcmd1bWVudHMpO3ZhciBlPVRkKGQsdGhpcy5ULDEpLnJiKCk7YShlKX1jLlA9ImludGVybmFsLiIrYjtyZXR1cm4gY307ZnVuY3Rpb24gVVQoKXt2YXIgYT1mdW5jdGlvbihjKXtyZXR1cm4gdm9pZCBTVChjLlAsYyl9LGI9ZnVuY3Rpb24oYyl7cmV0dXJuIHZvaWQgUlQoYy5wdWJsaWNOYW1lLGMpfTtiKFJGKTtiKFlGKTtiKFJHKTtiKFRHKTtiKFVHKTtiKGRIKTtiKGZIKTtiKGhJKTtiKFBTKCkpO2IoakkpO2IoT08pO2IoUE8pO2IobFApO2IobVApO2IoblApO2IodVApO2IodlApO2IoclMpO2IodVMpO2IoQlMpO2IoRFMpO2IoVFMpO2IoV1MpO2IoWlMpO2IoYVQpO2IoYlQpO2IoZFQpO2Iob1QpO2IoclQpO2IodVQpO2IoeVQpO2IoQ1QpO2IoSFQpO2IoTVQpO1JUKCJNYXRoIix6aCgpKTtSVCgiT2JqZWN0IixaaCk7UlQoIlRlc3RIZWxwZXIiLGNpKCkpO1JUKCJhc3NlcnRBcGkiLHdoKTtSVCgiYXNzZXJ0VGhhdCIseGgpO1JUKCJkZWNvZGVVcmkiLENoKTtSVCgiZGVjb2RlVXJpQ29tcG9uZW50IixEaCk7UlQoImVuY29kZVVyaSIsRWgpO1JUKCJlbmNvZGVVcmlDb21wb25lbnQiLEZoKTtSVCgiZmFpbCIsCkxoKTtSVCgiZ2VuZXJhdGVSYW5kb20iLE5oKTtSVCgiZ2V0VGltZXN0YW1wIixPaCk7UlQoImdldFRpbWVzdGFtcE1pbGxpcyIsT2gpO1JUKCJnZXRUeXBlIixQaCk7UlQoIm1ha2VJbnRlZ2VyIixSaCk7UlQoIm1ha2VOdW1iZXIiLFNoKTtSVCgibWFrZVN0cmluZyIsVGgpO1JUKCJtYWtlVGFibGVNYXAiLFVoKTtSVCgibW9jayIsWGgpO1JUKCJtb2NrT2JqZWN0IixZaCk7UlQoImZyb21CYXNlNjQiLEhPLCEoImF0b2IiaW4gQSkpO1JUKCJsb2NhbFN0b3JhZ2UiLFNTLCFSUygpKTtSVCgidG9CYXNlNjQiLEpULCEoImJ0b2EiaW4gQSkpO2EoUUYpO2EoVUYpO2EobkcpO2Eoc0cpO2EoSUcpO2EoUEcpO2EoU0cpO2EoVkcpO2EoV0cpO2EoWkcpO2EoJEcpO2EoYUgpO2EoYkgpO2EoY0gpO2EoZUgpO2EoZ0gpO2EoZ0kpO2EoaUkpO2Eoa0kpO2EobEkpO2EobUkpO2EobkkpO2Eob0kpO2EoZkopO2EobUopO2EodEopO2EodUopO2EoQUopO2EoRkopO2EoS0opO2EoUkopO2EoV0opO2EoZ0spOwphKGlLKTthKHZLKTthKHdLKTthKHhLKTthKEZPKTthKEdPKTthKElPKTthKEpPKTthKEtPKTthKExPKTthKE1PKTthKE5PKTthKFFPKTthKFJPKTthKFNPKTthKFRPKTthKFVPKTthKFZPKTthKFdPKTthKFhPKTthKFlPKTthKFpPKTthKCRPKTthKGFQKTthKGJQKTthKGNQKTthKGRQKTthKGVQKTthKGZQKTthKGdQKTthKGhQKTthKGlQKTthKGpQKTthKGtQKTthKG9QKTthKHBQKTthKHFQKTthKHJQKTthKHNQKTthKHRQKTthKHdQKTthKG9TKTthKHBTKTthKHRTKTthKHZTKTthKENTKTthKEVTKTthKEZTKTthKEdTKTthKEhTKTthKElTKTthKEpTKTthKEtTKTthKExTKTthKE1TKTthKE5TKTthKE9TKTthKFFTKTthKEdHKTthKFVTKTthKFZTKTthKFhTKTthKFlTKTthKCRTKTthKGNUKTthKGVUKTthKGZUKTthKGhUKTthKGlUKTthKGpUKTthKGxUKTthKG1UKTthKG5UKTthKHBUKTthKHFUKTthKHNUKTthKHRUKTthKHZUKTthKHdUKTthKHhUKTthKHpUKTthKEFUKTthKEJUKTthKERUKTsKYShFVCk7YShGVCk7YShHVCk7YShJVCk7YShLVCk7YShMVCk7YShOVCk7U1QoImludGVybmFsLklmcmFtaW5nU3RhdGVTY2hlbWEiLHNTKCkpO1NUKCJpbnRlcm5hbC5xdWlja0hhc2giLE1oKTthKFRUKE1GLCJ0YXNrU2V0QWRzVHJhbnNtaXNzaW9uVHlwZSIpKSxhKFRUKFBGLCJ0YXNrU2V0VW5pdmVyc2FsUGFyYW1zIikpO1BUfHwoUFQ9bmV3IE9UKTtyZXR1cm4gUVQoKX07dmFyIEpGO2Z1bmN0aW9uIFZUKCl7SkYuc2QoZnVuY3Rpb24oYSxiLGMpe2xqKCk7dmFyIGQ9amo7ZC5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkU9ZC5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkV8fDA7ZC5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkUrKzt0cnl7cmV0dXJuIGEuYXBwbHkoYixjKX1maW5hbGx5e2xqKCksamouSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFLS19fSl9ZnVuY3Rpb24gV1QoYSl7aWYoYSYmYS5sZW5ndGgpZm9yKHZhciBiPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10ucmVwbGFjZSgvXl8qLywiIik7YltkXT1bInNhbmRib3hlZFNjcmlwdHMiXX19CmZ1bmN0aW9uIFhUKGEpe2lmKGEpe3ZhciBiPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KTtHYihhLGZ1bmN0aW9uKGMsZCl7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe3ZhciBmPWRbZV0ucmVwbGFjZSgvXl8qLywiIik7YltmXT1iW2ZdfHxbXTtiW2ZdLnB1c2goYyl9fSl9fTtmdW5jdGlvbiBaVChhKXttRChwQygiZGV2ZWxvcGVyX2lkLiIrYSwhMCksMCx7fSl9O2Z1bmN0aW9uICRUKGEsYil7cmV0dXJuIEVkKGEsYnx8bnVsbCl9ZnVuY3Rpb24gWShhKXtyZXR1cm4gd2luZG93LmVuY29kZVVSSUNvbXBvbmVudChhKX1mdW5jdGlvbiBhVShhKXtaYyhhLHZvaWQgMCx2b2lkIDApfWZ1bmN0aW9uIGJVKGEpe3ZhciBiPVsidmVpbnRlcmFjdGl2ZS5jb20iLCJ2ZS1pbnRlcmFjdGl2ZS5jbiJdO2lmKCFhKXJldHVybiExO3ZhciBjPUxqKFJqKGEpLCJob3N0Iik7aWYoIWMpcmV0dXJuITE7Zm9yKHZhciBkPTA7YiYmZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF0mJmJbZF0udG9Mb3dlckNhc2UoKTtpZihlKXt2YXIgZj1jLmxlbmd0aC1lLmxlbmd0aDtmPjAmJmUuY2hhckF0KDApIT09Ii4iJiYoZi0tLGU9Ii4iK2UpO2lmKGY+PTAmJmMuaW5kZXhPZihlLGYpPT09ZilyZXR1cm4hMH19cmV0dXJuITF9CmZ1bmN0aW9uIGNVKGEsYixjKXtmb3IodmFyIGQ9e30sZT0hMSxmPTA7YSYmZjxhLmxlbmd0aDtmKyspYVtmXSYmYVtmXS5oYXNPd25Qcm9wZXJ0eShiKSYmYVtmXS5oYXNPd25Qcm9wZXJ0eShjKSYmKGRbYVtmXVtiXV09YVtmXVtjXSxlPSEwKTtyZXR1cm4gZT9kOm51bGx9ZnVuY3Rpb24gZFUoYSxiKXt2YXIgYz17fTtpZihhKWZvcih2YXIgZCBpbiBhKWEuaGFzT3duUHJvcGVydHkoZCkmJihjW2RdPWFbZF0pO2lmKGIpe3ZhciBlPWNVKGIsInBhcmFtZXRlciIsInBhcmFtZXRlclZhbHVlIik7ZSYmKGM9JFQoZSxjKSl9cmV0dXJuIGN9ZnVuY3Rpb24gZVUoYSxiLGMpe3JldHVybiBhPT09dm9pZCAwfHxhPT09Yz9iOmF9ZnVuY3Rpb24gZlUoYSxiLGMpe3JldHVybiBVYyhhLGIsYyx2b2lkIDApfWZ1bmN0aW9uIGdVKGEsYil7QVthXT1ifWZ1bmN0aW9uIGhVKGEsYixjKXt2YXIgZD1BO2ImJihkW2FdPT09dm9pZCAwfHxjJiYhZFthXSkmJihkW2FdPWIpO3JldHVybiBkW2FdfXZhciBpVT17fSxqVT1YLlY7dmFyIFo9e3NlY3VyaXR5R3JvdXBzOnt9fTsKClouc2VjdXJpdHlHcm91cHMuYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2U9WyJnb29nbGUiXSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2U9ZnVuY3Rpb24oKXtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKCl7fSxhYTpmdW5jdGlvbigpe3JldHVybnt9fX19LFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZS5PPSJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSIsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlLmlzVmVuZG9yVGVtcGxhdGU9ITAsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlLnByaW9yaXR5T3ZlcnJpZGU9MCxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UuaXNJbmZyYXN0cnVjdHVyZT0hMSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2VbIjUiXT0hMSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2VbIjYiXT0hMTsKCgoKWi5zZWN1cml0eUdyb3Vwcy5yZWFkX2V2ZW50X2RhdGE9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57a2V5OmN9fShmdW5jdGlvbihiKXtaLl9fcmVhZF9ldmVudF9kYXRhPWI7Wi5fX3JlYWRfZXZlbnRfZGF0YS5PPSJyZWFkX2V2ZW50X2RhdGEiO1ouX19yZWFkX2V2ZW50X2RhdGEuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fcmVhZF9ldmVudF9kYXRhLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fcmVhZF9ldmVudF9kYXRhLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX3JlYWRfZXZlbnRfZGF0YVsiNSJdPSExO1ouX19yZWFkX2V2ZW50X2RhdGFbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2V2ZW50RGF0YUFjY2VzcyxkPWIudnRwX2tleVBhdHRlcm5zfHxbXSxlPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGYsZyl7aWYoZyE9bnVsbCYmIXpiKGcpKXRocm93IGUoZix7a2V5Omd9LCJLZXkgbXVzdCBiZSBhIHN0cmluZy4iKTsKaWYoYyE9PSJhbnkiKXt0cnl7aWYoYz09PSJzcGVjaWZpYyImJmchPW51bGwmJkVnKGcsZCkpcmV0dXJufWNhdGNoKGgpe3Rocm93IGUoZix7a2V5Omd9LCJJbnZhbGlkIGtleSBmaWx0ZXIuIik7fXRocm93IGUoZix7a2V5Omd9LCJQcm9oaWJpdGVkIHJlYWQgZnJvbSBldmVudCBkYXRhLiIpO319LGFhOmF9fSl9KCk7CgpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybntvcHRpb25zOntmaXhNaXNzaW5nQXBpOiEhYy5maXhNaXNzaW5nQXBpfX19KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHM9YjtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzLk89ImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyI7Wi5fX2RldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50c1siNiJdPQohMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPSEhYi52dHBfYWxsb3dGaXhNaXNzaW5nSmF2YVNjcmlwdEFwaSxkPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGUsZil7aWYoIWMmJmYmJmYuZml4TWlzc2luZ0FwaSl0aHJvdyBkKGUse30sIlByb2hpYml0ZWQgb3B0aW9uOiBmaXhNaXNzaW5nQXBpLiIpO30sYWE6YX19KX0oKTsKCgoKCgoKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7cmV0dXJue319KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzPWI7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMuTz0iZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cyI7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50c1siNSJdPSExO1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzWyI2Il09ITF9KShmdW5jdGlvbigpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oKXt9LGFhOmF9fSl9KCk7CgoKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfbGlua19jbGlja19ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57b3B0aW9uczpjfX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cz1iO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHMuTz0iZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzIjtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9hbGxvd1dhaXRGb3JUYWdzLGQ9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZSwKZil7aWYoIWMmJmYmJmYud2FpdEZvclRhZ3MpdGhyb3cgZChlLHt9LCJQcm9oaWJpdGVkIG9wdGlvbiB3YWl0Rm9yVGFncy4iKTt9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMucmVhZF9jb250YWluZXJfZGF0YT1bImdvb2dsZSJdLFouX19yZWFkX2NvbnRhaW5lcl9kYXRhPWZ1bmN0aW9uKCl7cmV0dXJue2Fzc2VydDpmdW5jdGlvbigpe30sYWE6ZnVuY3Rpb24oKXtyZXR1cm57fX19fSxaLl9fcmVhZF9jb250YWluZXJfZGF0YS5PPSJyZWFkX2NvbnRhaW5lcl9kYXRhIixaLl9fcmVhZF9jb250YWluZXJfZGF0YS5pc1ZlbmRvclRlbXBsYXRlPSEwLFouX19yZWFkX2NvbnRhaW5lcl9kYXRhLnByaW9yaXR5T3ZlcnJpZGU9MCxaLl9fcmVhZF9jb250YWluZXJfZGF0YS5pc0luZnJhc3RydWN0dXJlPSExLFouX19yZWFkX2NvbnRhaW5lcl9kYXRhWyI1Il09ITEsWi5fX3JlYWRfY29udGFpbmVyX2RhdGFbIjYiXT0hMTsKWi5zZWN1cml0eUdyb3Vwcy5saXN0ZW5fZGF0YV9sYXllcj1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybntldmVudE5hbWU6Y319KGZ1bmN0aW9uKGIpe1ouX19saXN0ZW5fZGF0YV9sYXllcj1iO1ouX19saXN0ZW5fZGF0YV9sYXllci5PPSJsaXN0ZW5fZGF0YV9sYXllciI7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fbGlzdGVuX2RhdGFfbGF5ZXIuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fbGlzdGVuX2RhdGFfbGF5ZXJbIjUiXT0hMTtaLl9fbGlzdGVuX2RhdGFfbGF5ZXJbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2FjY2Vzc1R5cGUsZD1iLnZ0cF9hbGxvd2VkRXZlbnRzfHxbXSxlPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGYsZyl7aWYoIXpiKGcpKXRocm93IGUoZix7ZXZlbnROYW1lOmd9LAoiRXZlbnQgbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKCEoYz09PSJhbnkifHxjPT09InNwZWNpZmljIiYmZC5pbmRleE9mKGcpPj0wKSl0aHJvdyBlKGYse2V2ZW50TmFtZTpnfSwiUHJvaGliaXRlZCBsaXN0ZW4gb24gZGF0YSBsYXllciBldmVudC4iKTt9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YT1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybntkYXRhU291cmNlOmN9fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YT1iO1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhLk89ImRldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEiO1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGEucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGFbIjUiXT0hMTtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YVsiNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZCwKZSl7aWYoZSE9PSJhdXRvIiYmZSE9PSJtYW51YWwiJiZlIT09ImNvZGUiKXRocm93IGMoZCx7fSwiVW5rbm93biB1c2VyIHByb3ZpZGVkIGRhdGEgc291cmNlLiIpO2lmKGIudnRwX2xpbWl0RGF0YVNvdXJjZXMpaWYoZSE9PSJhdXRvInx8Yi52dHBfYWxsb3dBdXRvRGF0YVNvdXJjZXMpe2lmKGU9PT0ibWFudWFsIiYmIWIudnRwX2FsbG93TWFudWFsRGF0YVNvdXJjZXMpdGhyb3cgYyhkLHt9LCJEZXRlY3Rpb24gb2YgdXNlciBwcm92aWRlZCBkYXRhIHZpYSBtYW51YWxseSBzcGVjaWZpZWQgQ1NTIHNlbGVjdG9ycyBpcyBub3QgYWxsb3dlZC4iKTtpZihlPT09ImNvZGUiJiYhYi52dHBfYWxsb3dDb2RlRGF0YVNvdXJjZXMpdGhyb3cgYyhkLHt9LCJEZXRlY3Rpb24gb2YgdXNlciBwcm92aWRlZCBkYXRhIGZyb20gYW4gaW4tcGFnZSB2YXJpYWJsZSBpcyBub3QgYWxsb3dlZC4iKTt9ZWxzZSB0aHJvdyBjKGQse30sIkF1dG9tYXRpYyBkZXRlY3Rpb24gb2YgdXNlciBwcm92aWRlZCBkYXRhIGlzIG5vdCBhbGxvd2VkLiIpOwp9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZ2V0X3VybD1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCl7cmV0dXJue2NvbXBvbmVudDpjLHF1ZXJ5S2V5OmR9fShmdW5jdGlvbihiKXtaLl9fZ2V0X3VybD1iO1ouX19nZXRfdXJsLk89ImdldF91cmwiO1ouX19nZXRfdXJsLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2dldF91cmwucHJpb3JpdHlPdmVycmlkZT0wO1ouX19nZXRfdXJsLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2dldF91cmxbIjUiXT0hMTtaLl9fZ2V0X3VybFsiNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfdXJsUGFydHM9PT0iYW55Ij9udWxsOltdO2MmJihiLnZ0cF9wcm90b2NvbCYmYy5wdXNoKCJwcm90b2NvbCIpLGIudnRwX2hvc3QmJmMucHVzaCgiaG9zdCIpLGIudnRwX3BvcnQmJmMucHVzaCgicG9ydCIpLGIudnRwX3BhdGgmJmMucHVzaCgicGF0aCIpLGIudnRwX2V4dGVuc2lvbiYmYy5wdXNoKCJleHRlbnNpb24iKSxiLnZ0cF9xdWVyeSYmCmMucHVzaCgicXVlcnkiKSxiLnZ0cF9mcmFnbWVudCYmYy5wdXNoKCJmcmFnbWVudCIpKTt2YXIgZD1jJiZiLnZ0cF9xdWVyaWVzQWxsb3dlZCE9PSJhbnkiP2IudnRwX3F1ZXJ5S2V5c3x8W106bnVsbCxlPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGYsZyxoKXtpZihnKXtpZighemIoZykpdGhyb3cgZShmLHt9LCJVUkwgY29tcG9uZW50IG11c3QgYmUgYSBzdHJpbmcuIik7aWYoYyYmYy5pbmRleE9mKGcpPDApdGhyb3cgZShmLHt9LCJQcm9oaWJpdGVkIFVSTCBjb21wb25lbnQ6ICIrZyk7aWYoZz09PSJxdWVyeSImJmQpe2lmKCFoKXRocm93IGUoZix7fSwiUHJvaGliaXRlZCBmcm9tIGdldHRpbmcgZW50aXJlIFVSTCBxdWVyeSB3aGVuIHF1ZXJ5IGtleXMgYXJlIHNwZWNpZmllZC4iKTtpZighemIoaCkpdGhyb3cgZShmLHt9LCJRdWVyeSBrZXkgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihkLmluZGV4T2YoaCk8MCl0aHJvdyBlKGYse30sCiJQcm9oaWJpdGVkIHF1ZXJ5IGtleTogIitoKTt9fWVsc2UgaWYoYyl0aHJvdyBlKGYse30sIlByb2hpYml0ZWQgZnJvbSBnZXR0aW5nIGVudGlyZSBVUkwgd2hlbiBjb21wb25lbnRzIGFyZSBzcGVjaWZpZWQuIik7fSxhYTphfX0pfSgpOwoKCgpaLnNlY3VyaXR5R3JvdXBzLnJlYWRfZG9tX2VsZW1lbnRzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxkKXtyZXR1cm57dHlwZTpjLHZhbHVlOmR9fShmdW5jdGlvbihiKXtaLl9fcmVhZF9kb21fZWxlbWVudHM9YjtaLl9fcmVhZF9kb21fZWxlbWVudHMuTz0icmVhZF9kb21fZWxlbWVudHMiO1ouX19yZWFkX2RvbV9lbGVtZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19yZWFkX2RvbV9lbGVtZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzWyI1Il09ITE7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9hbGxvd2VkRWxlbWVudElkc3x8Im5vbmUiLGQ9Yi52dHBfYWxsb3dlZENzc1NlbGVjdG9yc3x8Im5vbmUiLGU9Yi52dHBfZWxlbWVudElkc3x8W10sZj1iLnZ0cF9jc3NTZWxlY3RvcnN8fFtdLGc9CmIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGgsbCxuKXtzd2l0Y2gobCl7Y2FzZSAiaWQiOmlmKGM9PT0ibm9uZSIpYnJlYWs7aWYoYz09PSJhbnkifHxlLmluZGV4T2Yobik+LTEpcmV0dXJuO2JyZWFrO2Nhc2UgImNzcyI6aWYoZD09PSJub25lIilicmVhaztpZihkPT09ImFueSJ8fGYuaW5kZXhPZihuKT4tMSlyZXR1cm47YnJlYWs7ZGVmYXVsdDp0aHJvdyBnKGgse30sIlVua25vd24gc2VsZWN0b3IgdHlwZSAiK2wrIi4iKTt9dGhyb3cgZyhoLHt9LCJQcm9oaWJpdGVkIHNlbGVjdG9yIHZhbHVlICIrbisiIGZvciBzZWxlY3RvciB0eXBlICIrbCsiLiIpO30sYWE6YX19KX0oKTsKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3Rfc2Nyb2xsX2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3JldHVybnt9fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHM9YjtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHMuTz0iZGV0ZWN0X3Njcm9sbF9ldmVudHMiO1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzWyI2Il09ITF9KShmdW5jdGlvbigpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oKXt9LGFhOmF9fSl9KCk7CgoKCmZ1bmN0aW9uIGtVKCl7dmFyIGE9e30sYj17ZGF0YUxheWVyOnRBLGNhbGxiYWNrOmZ1bmN0aW9uKGMpe2EuaGFzT3duUHJvcGVydHkoYykmJnliKGFbY10pJiZhW2NdKCk7ZGVsZXRlIGFbY119LGJvb3RzdHJhcDowfTtyZXR1cm4gYn0KZnVuY3Rpb24gbFUoKXt2YXIgYT1rVSgpO29qKGEpO0NrKCk7akEoKTt2YXIgYj1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSk7UWIoYixaLnNlY3VyaXR5R3JvdXBzKTt2YXIgYz15ayh6aygpKSxkLGU9Yz09bnVsbD92b2lkIDA6KGQ9Yy5jb250ZXh0KT09bnVsbD92b2lkIDA6ZC5zb3VyY2U7S2woZSxjPT1udWxsP3ZvaWQgMDpjLnBhcmVudCk7ZSE9PTImJmUhPT00JiZlIT09M3x8UCgxNDIpO3JldHVybiBhfWZ1bmN0aW9uIG1VKCl7dmFyIGE9RSg2MCk7aWYoYSlmb3IodmFyIGI9YS5zcGxpdCgiLiIpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXSxlPVRMO2QmJihlLkhbZF09ITApfX0KZnVuY3Rpb24gblUoKXt6cCgpO2xqKCk7Zm9yKHZhciBhPWRhdGEucmVzb3VyY2V8fHt9LGI9Y0EsYz1hLm1hY3Jvc3x8W10sZD0wO2Q8Yy5sZW5ndGg7ZCsrKWIubWFjcm9zLnB1c2gobmV3IFV6KGNbZF0sZCxiLnRhZ3MsYi5tYWNyb3MpKTtmb3IodmFyIGU9YS50YWdzfHxbXSxmPTA7ZjxlLmxlbmd0aDtmKyspYi50YWdzLnB1c2gobmV3IFl6KGVbZl0sZixiLnRhZ3MsYi5tYWNyb3MpKTtmb3IodmFyIGc9YS5wcmVkaWNhdGVzfHxbXSxoPTA7aDxnLmxlbmd0aDtoKyspYi5wcmVkaWNhdGVzLnB1c2gobmV3IFZ6KGdbaF0sYi50YWdzLGIubWFjcm9zKSk7Zm9yKHZhciBsPWEucnVsZXN8fFtdLG49MDtuPGwubGVuZ3RoO24rKyliLnJ1bGVzLnB1c2gobmV3IFd6KGxbbl0sbikpO1F6PVo7dmFyIHA9ZGF0YS5wZXJtaXNzaW9uc3x8e30scT1aO2RnPW5ldyBnZyhFKDUpLHAscSk7dmFyIHI9ZGF0YS5zYW5kYm94ZWRfc2NyaXB0cyx0PWRhdGEuc2VjdXJpdHlfZ3JvdXBzLHU9ZGF0YS5ydW50aW1lfHwKW10sdj1kYXRhLnJ1bnRpbWVfbGluZXM7SkY9bmV3IHBmO1ZUKCk7UHo9SUYoKTt2YXIgeD1KRix5PVVUKCksej1uZXcgTGQoInJlcXVpcmUiLHkpO3ouWmEoKTt4LkguSC5zZXQoInJlcXVpcmUiLHopO2RiLnNldCgicmVxdWlyZSIseik7Zm9yKHZhciBDPTA7Qzx1Lmxlbmd0aDtDKyspe3ZhciBEPXVbQ107aWYoIUFycmF5LmlzQXJyYXkoRCl8fEQubGVuZ3RoPDMpe2lmKEQubGVuZ3RoPT09MCljb250aW51ZTticmVha312JiZ2W0NdJiZ2W0NdLmxlbmd0aCYmUGYoRCx2W0NdKTt0cnl7SkYuZXhlY3V0ZShEKX1jYXRjaChvVSl7fX1XVChyKTtYVCh0KTt2YXIgST1sVSgpO2lGKCk7dm0uYmluZCgpO2lmKCFEailmb3IodmFyIEc9Qm0oKT9lcChMZig1KSk6ZXAoTGYoNCkpLE49bShSbyksUz1OLm5leHQoKTshUy5kb25lO1M9Ti5uZXh0KCkpe3ZhciBXPVMudmFsdWUsZWE9VyxqYT1HW1ddPyJncmFudGVkIjoiZGVuaWVkIjt0bCgpLmltcGxpY2l0KGVhLGphKX1oRS5iaW5kKCk7VEIoKTsKT0IoKTtmbi5OJiYoZ3ooKSxmeihBRiksZ0EoKSxjQj1uZXcgYkIsZnooaXopLE9DKCksREZ8fChERj1uZXcgQkYpLGZCfHwoZkI9bmV3IGVCKSxGRj1uZXcgRUYpO2lmKGZuLkspe0RFLmJpbmQoKTttQy5iaW5kKCk7d0UuYmluZCgpO3ZhciBmYT1BaygpO2lmKGZhKXt2YXIgc2E7YTp7dmFyIGRhLG1hPShkYT1mYS5zY3JpcHRFbGVtZW50KT09bnVsbD92b2lkIDA6ZGEuc3JjO2lmKG1hKXt2YXIgUGE7dHJ5e3ZhciBGYTtQYT0oRmE9cmQoKSk9PW51bGw/dm9pZCAwOkZhLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIil9Y2F0Y2gob1Upe31pZihQYSl7Zm9yKHZhciBxYT0tMSxpYj1tKFBhKSxYYj1pYi5uZXh0KCk7IVhiLmRvbmU7WGI9aWIubmV4dCgpKXt2YXIgTGM9WGIudmFsdWU7aWYoTGMuaW5pdGlhdG9yVHlwZT09PQoic2NyaXB0IiYmKHFhKz0xLExjLm5hbWUucmVwbGFjZShORSwiIik9PT1tYS5yZXBsYWNlKE5FLCIiKSkpe3NhPXFhO2JyZWFrIGF9fVAoMTQ2KX1lbHNlIFAoMTQ1KX1zYT12b2lkIDB9dmFyIFFkPXNhO1FkIT09dm9pZCAwJiYoZmEuY2Fub25pY2FsQ29udGFpbmVySWQmJlVtKCJydGciLFN0cmluZyhmYS5jYW5vbmljYWxDb250YWluZXJJZCkpLFVtKCJzbG8iLFN0cmluZyhRZCkpLFVtKCJobG8iLGZhLmh0bWxMb2FkT3JkZXJ8fCItMSIpLFVtKCJsc3QiLFN0cmluZyhmYS5sb2FkU2NyaXB0VHlwZXx8IjAiKSkpfWVsc2UgUCgxNDQpO3ZhciBZYzt2YXIgRGQ9eGsoKTtpZihEZClpZihEZC5jYW5vbmljYWxDb250YWluZXJJZClZYz1EZC5jYW5vbmljYWxDb250YWluZXJJZDtlbHNle3ZhciBqZix2aD1EZC5zY3JpcHRDb250YWluZXJJZHx8KChqZj1EZC5kZXN0aW5hdGlvbnMpPT1udWxsP3ZvaWQgMDpqZlswXSk7WWM9dmg/Il8iK3ZoOnZvaWQgMH1lbHNlIFljPXZvaWQgMDt2YXIgSkU9ClljO0pFJiZVbSgicGNpZCIsSkUpO1VtKCJidCIsU3RyaW5nKElmKDQ3KT8yOklmKDUwKT8xOjApKTtVbSgiY3QiLFN0cmluZyhJZig0Nyk/MDpJZig1MCk/MTozKSk7QUUuYmluZCgpO2Zvcih2YXIgV3I9W10sWHI9W10sS0U9bShPYmplY3Qua2V5cyhHRSkpLFlyPUtFLm5leHQoKTshWXIuZG9uZTtZcj1LRS5uZXh0KCkpe3ZhciBybT1Zci52YWx1ZTtpZih3aW5kb3cuaXNTZWN1cmVDb250ZXh0fHwhSUVbcm1dKXt2YXIgTEU9R0Vbcm1dKCk7aWYoeWIoTEUpKXt2YXIgTUU9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTEUpO1RiKE1FLCJ7IFtuYXRpdmUgY29kZV0gfSIpfHxUYihNRSwie1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKXx8WHIucHVzaChybSl9ZWxzZSBXci5wdXNoKHJtKX19V3IubGVuZ3RoPjAmJlVtKCJqc20iLFdyLmpvaW4oIn4iKSk7WHIubGVuZ3RoPjAmJlVtKCJqc3AiLFhyLmpvaW4oIn4iKSk7RXl8fChFeT1uZXcgRHkpfWhGKCk7aW0oMSk7RUcoKTtyZXR1cm4gSX0KZnVuY3Rpb24gdW0oKXt0cnl7aWYoIWhrKCkmJihJZig0Nyl8fCFOaygpKSl7SWYoNjQpJiZ3ai5ILksuYWRkKDExODUxNzkxNyk7emooKTtmbi5IJiZzeigpO1dmWzVdPSEwO3ZhciBhPWtqKCJkZWJ1Z0dyb3VwSWQiLGZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyhNYXRoLmZsb29yKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKk1hdGgucmFuZG9tKCkpKX0pO1NsKGEpO2t0KCk7ekYoKTtGdCgpO1BCKCk7aWYoRGsoKSl7RSg1KTtERygpO2lCKCkucmVtb3ZlRXh0ZXJuYWxSZXN0cmljdGlvbnModmsoKSk7fWVsc2V7Rk0uUigpO25VKCkuYm9vdHN0cmFwPU5iKCk7SWYoNTEpJiZwRSgpOwpmbi5IJiZ0eigpO3R5cGVvZiBBLm5hbWU9PT0ic3RyaW5nIiYmU2IoQS5uYW1lLCJ3ZWItcGl4ZWwtc2FuZGJveC1DVVNUT00iKSYmc2QoKT9aVCgiZE1EZzBZeiIpOkEuU2hvcGlmeSYmKFpUKCJkTjJaa01qIiksc2QoKSYmWlQoImROVFUwWXoiKSk7bVUoKX19fWNhdGNoKGIpe2ltKDUpLGh6KCl9fQooZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe249Qi5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXRhZy1hc3Npc3RhbnQtcHJlc2VudCIpO2dsKG4pJiYobD1oLnhtKX1mdW5jdGlvbiBjKCl7bCYmS2M/ZyhsKTphKCl9aWYoIUFbRSgzNyldKXt2YXIgZD0hMTtpZihCLnJlZmVycmVyKXt2YXIgZT1SaihCLnJlZmVycmVyKTtkPU5qKGUsImhvc3QiKT09PUUoMzgpfWlmKCFkKXt2YXIgZj1jcShFKDM5KSk7ZD0hKCFmLmxlbmd0aHx8IWZbMF0ubGVuZ3RoKX1kJiYoQVtFKDM3KV09ITAsVWMoRSg0MCkpKX12YXIgZz1mdW5jdGlvbih1KXt2YXIgdj0iR1RNIix4PSJHVE0iO0lmKDQ1KSYmKHY9Ik9HVCIseD0iR1RBRyIpO3ZhciB5PUUoMjMpLHo9QVt5XTt6fHwoej1bXSxBW3ldPXosVWMoImh0dHBzOi8vIitFKDMpKyIvZGVidWcvYm9vdHN0cmFwP2lkPSIrRSg1KSsiJnNyYz0iK3grIiZjb25kPSIrU3RyaW5nKHUpKyImZ3RtPSIrZHUoKSkpO3ZhciBDPXttZXNzYWdlVHlwZToiQ09OVEFJTkVSX1NUQVJUSU5HIiwKZGF0YTp7c2NyaXB0U291cmNlOktjLGNvbnRhaW5lclByb2R1Y3Q6dixkZWJ1ZzohMSxpZDpFKDUpLHRhcmdldFJlZjp7Y3RpZDpFKDUpLGlzRGVzdGluYXRpb246c2soKSxjYW5vbmljYWxJZDpFKDYpfSxhbGlhc2VzOndrKCksZGVzdGluYXRpb25zOnRrKCl9fSxEPUMuZGF0YTtELnJlc3VtZT1mdW5jdGlvbigpe2EoKX07RC5yZXN1bWVXaXRoTWVtb3M9ZnVuY3Rpb24oKXtzbCgxKTthKCl9O0lmKDIpJiYoQy5kYXRhLmluaXRpYWxQdWJsaXNoPSEwKTt6LnB1c2goQyl9LGg9e0dxOjEsUG06MixvbjozLGpsOjQseG06NX07aFtoLkdxXT0iR1RNX0RFQlVHX0xFR0FDWV9QQVJBTSI7aFtoLlBtXT0iR1RNX0RFQlVHX1BBUkFNIjtoW2gub25dPSJSRUZFUlJFUiI7aFtoLmpsXT0iQ09PS0lFIjtoW2gueG1dPSJFWFRFTlNJT05fUEFSQU0iO3ZhciBsPXZvaWQgMCxuPXZvaWQgMCxwPUxqKEEubG9jYXRpb24sInF1ZXJ5IiwhMSx2b2lkIDAsImd0bV9kZWJ1ZyIpO2dsKHApJiYobD1oLlBtKTsKaWYoIWwmJkIucmVmZXJyZXIpe3ZhciBxPVJqKEIucmVmZXJyZXIpO05qKHEsImhvc3QiKT09PUUoMjQpJiYobD1oLm9uKX1pZighbCl7dmFyIHI9Y3EoIl9fVEFHX0FTU0lTVEFOVCIpO3IubGVuZ3RoJiZyWzBdLmxlbmd0aCYmKGw9aC5qbCl9bHx8YigpO2lmKCFsJiZmbChuKSl7dmFyIHQ9ITE7JGMoQiwiVEFEZWJ1Z1NpZ25hbCIsZnVuY3Rpb24oKXt0fHwodD0hMCxiKCksYygpKX0sITEpO0Euc2V0VGltZW91dChmdW5jdGlvbigpe3R8fCh0PSEwLGIoKSxjKCkpfSwyMDApfWVsc2UgYygpfSkoZnVuY3Rpb24oKXshSWYoNDcpfHx0bSgpWyIwIl0/dW0oKTp4bSgpfSk7Cgp9KSgpCgo="}},"time_used":129,"timings":{"blocked":-1,"dns":2,"connect":15,"send":0,"wait":40,"receive":43,"ssl":28},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
