3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · 2.7c767379.chunk.js_42
{
"2.7c767379.chunk.js_42": "base64:cmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlR2VudWluZVNvY2tldEVhcmx5Q2xvc2UiKSx0LkRldmljZU5vdEdlbnVpbmVFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VOb3RHZW51aW5lIiksdC5EZXZpY2VPbkRhc2hib2FyZEV4cGVjdGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZU9uRGFzaGJvYXJkRXhwZWN0ZWQiKSx0LkRldmljZU9uRGFzaGJvYXJkVW5leHBlY3RlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VPbkRhc2hib2FyZFVuZXhwZWN0ZWQiKSx0LkRldmljZUluT1NVRXhwZWN0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlSW5PU1VFeHBlY3RlZCIpLHQuRGV2aWNlSGFsdGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZUhhbHRlZCIpLHQuRGV2aWNlTmFtZUludmFsaWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlTmFtZUludmFsaWQiKSx0LkRldmljZVNvY2tldEZhaWw9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlU29ja2V0RmFpbCIpLHQuRGV2aWNlU29ja2V0Tm9CdWxrU3RhdHVzPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZVNvY2tldE5vQnVsa1N0YXR1cyIpLHQuRGlzY29ubmVjdGVkRGV2aWNlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRpc2Nvbm5lY3RlZERldmljZSIpLHQuRGlzY29ubmVjdGVkRGV2aWNlRHVyaW5nT3BlcmF0aW9uPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRpc2Nvbm5lY3RlZERldmljZUR1cmluZ09wZXJhdGlvbiIpLHQuRW5wb2ludENvbmZpZ0Vycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkVucG9pbnRDb25maWciKSx0LkV0aEFwcFBsZWFzZUVuYWJsZUNvbnRyYWN0RGF0YT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJFdGhBcHBQbGVhc2VFbmFibGVDb250cmFjdERhdGEiKSx0LkZlZUVzdGltYXRpb25GYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmVlRXN0aW1hdGlvbkZhaWxlZCIpLHQuSGFyZFJlc2V0RmFpbD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJIYXJkUmVzZXRGYWlsIiksdC5JbnZhbGlkQWRkcmVzcz0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJJbnZhbGlkQWRkcmVzcyIpLHQuSW52YWxpZEFkZHJlc3NCZWNhdXNlRGVzdGluYXRpb25Jc0Fsc29Tb3VyY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiSW52YWxpZEFkZHJlc3NCZWNhdXNlRGVzdGluYXRpb25Jc0Fsc29Tb3VyY2UiKSx0LkxhdGVzdE1DVUluc3RhbGxlZEVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxhdGVzdE1DVUluc3RhbGxlZEVycm9yIiksdC5Vbmtub3duTUNVPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVua25vd25NQ1UiKSx0LkxlZGdlckFQSUVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxlZGdlckFQSUVycm9yIiksdC5MZWRnZXJBUElFcnJvcldpdGhNZXNzYWdlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxlZGdlckFQSUVycm9yV2l0aE1lc3NhZ2UiKSx0LkxlZGdlckFQSU5vdEF2YWlsYWJsZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJMZWRnZXJBUElOb3RBdmFpbGFibGUiKSx0Lk1hbmFnZXJBcHBBbHJlYWR5SW5zdGFsbGVkRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlckFwcEFscmVhZHlJbnN0YWxsZWQiKSx0Lk1hbmFnZXJBcHBSZWx5T25CVENFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJNYW5hZ2VyQXBwUmVseU9uQlRDIiksdC5NYW5hZ2VyRGV2aWNlTG9ja2VkRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlckRldmljZUxvY2tlZCIpLHQuTWFuYWdlckZpcm13YXJlTm90RW5vdWdoU3BhY2VFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJNYW5hZ2VyRmlybXdhcmVOb3RFbm91Z2hTcGFjZSIpLHQuTWFuYWdlck5vdEVub3VnaFNwYWNlRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlck5vdEVub3VnaFNwYWNlIiksdC5NYW5hZ2VyVW5pbnN0YWxsQlRDRGVwPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk1hbmFnZXJVbmluc3RhbGxCVENEZXAiKSx0Lk5ldHdvcmtEb3duPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5ldHdvcmtEb3duIiksdC5Ob0FkZHJlc3Nlc0ZvdW5kPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vQWRkcmVzc2VzRm91bmQiKSx0Lk5vdEVub3VnaEJhbGFuY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm90RW5vdWdoQmFsYW5jZSIpLHQuTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQiKSx0Lk5vQWNjZXNzVG9DYW1lcmE9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm9BY2Nlc3NUb0NhbWVyYSIpLHQuTm90RW5vdWdoR2FzPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vdEVub3VnaEdhcyIpLHQuUGFzc3dvcmRzRG9udE1hdGNoRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiUGFzc3dvcmRzRG9udE1hdGNoIiksdC5QYXNzd29yZEluY29ycmVjdEVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlBhc3N3b3JkSW5jb3JyZWN0IiksdC5UaW1lb3V0VGFnZ2VkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlRpbWVvdXRUYWdnZWQiKSx0LlVuZXhwZWN0ZWRCb290bG9hZGVyPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVuZXhwZWN0ZWRCb290bG9hZGVyIiksdC5VcGRhdGVZb3VyQXBwPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVwZGF0ZVlvdXJBcHAiKSx0LlVzZXJSZWZ1c2VkRGV2aWNlTmFtZUNoYW5nZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJVc2VyUmVmdXNlZERldmljZU5hbWVDaGFuZ2UiKSx0LlVzZXJSZWZ1c2VkQWRkcmVzcz0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJVc2VyUmVmdXNlZEFkZHJlc3MiKSx0LlVzZXJSZWZ1c2VkRmlybXdhcmVVcGRhdGU9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRGaXJtd2FyZVVwZGF0ZSIpLHQuVXNlclJlZnVzZWRBbGxvd01hbmFnZXI9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRBbGxvd01hbmFnZXIiKSx0LlVzZXJSZWZ1c2VkT25EZXZpY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRPbkRldmljZSIpLHQuVHJhbnNwb3J0T3BlblVzZXJDYW5jZWxsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVHJhbnNwb3J0T3BlblVzZXJDYW5jZWxsZWQiKSx0LlRyYW5zcG9ydEludGVyZmFjZU5vdEF2YWlsYWJsZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJUcmFuc3BvcnRJbnRlcmZhY2VOb3RBdmFpbGFibGUiKSx0LkRldmljZVNob3VsZFN0YXlJbkFwcD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VTaG91bGRTdGF5SW5BcHAiKSx0LldlYnNvY2tldENvbm5lY3Rpb25FcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJXZWJzb2NrZXRDb25uZWN0aW9uRXJyb3IiKSx0LldlYnNvY2tldENvbm5lY3Rpb25GYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiV2Vic29ja2V0Q29ubmVjdGlvbkZhaWxlZCIpLHQuV3JvbmdEZXZpY2VGb3JBY2NvdW50PSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIldyb25nRGV2aWNlRm9yQWNjb3VudCIpLHQuV3JvbmdBcHBGb3JDdXJyZW5jeT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJXcm9uZ0FwcEZvckN1cnJlbmN5IiksdC5FVEhBZGRyZXNzTm9uRUlQPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkVUSEFkZHJlc3NOb25FSVAiKSx0LkNhbnRTY2FuUVJDb2RlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkNhbnRTY2FuUVJDb2RlIiksdC5GZWVOb3RMb2FkZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmVlTm90TG9hZGVkIiksdC5GZWVSZXF1aXJlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJGZWVSZXF1aXJlZCIpLHQuU3luY0Vycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlN5bmNFcnJvciIpLHQuUGFpcmluZ0ZhaWxlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJQYWlyaW5nRmFpbGVkIiksdC5HZW51aW5lQ2hlY2tGYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiR2VudWluZUNoZWNrRmFpbGVkIiksdC5MZWRnZXJBUEk0eHg9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTGVkZ2VyQVBJNHh4IiksdC5MZWRnZXJBUEk1eHg9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTGVkZ2VyQVBJNXh4IiksdC5GaXJtd2FyZU9yQXBwVXBkYXRlUmVxdWlyZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmlybXdhcmVPckFwcFVwZGF0ZVJlcXVpcmVkIiksdC5Ob0RCUGF0aEdpdmVuPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vREJQYXRoR2l2ZW4iKSx0LkRCV3JvbmdQYXNzd29yZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEQldyb25nUGFzc3dvcmQiKSx0LkRCTm90UmVzZXQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiREJOb3RSZXNldCIpO2Z1bmN0aW9uIGkoZSx0KXt0aGlzLm5hbWU9IlRyYW5zcG9ydEVycm9yIix0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrLHRoaXMuaWQ9dH1pLnByb3RvdHlwZT1uZXcgRXJyb3IsKDAsbi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcikoIlRyYW5zcG9ydEVycm9yIixmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGkoZS5tZXNzYWdlLGUuaWQpfSk7dmFyIG89dC5TdGF0dXNDb2Rlcz17UElOX1JFTUFJTklOR19BVFRFTVBUUzoyNTUzNixJTkNPUlJFQ1RfTEVOR1RIOjI2MzY4LENPTU1BTkRfSU5DT01QQVRJQkxFX0ZJTEVfU1RSVUNUVVJFOjI3MDA5LFNFQ1VSSVRZX1NUQVRVU19OT1RfU0FUSVNGSUVEOjI3MDEwLENPTkRJVElPTlNfT0ZfVVNFX05PVF9TQVRJU0ZJRUQ6MjcwMTMsSU5DT1JSRUNUX0RBVEE6MjcyNjQsTk9UX0VOT1VHSF9NRU1PUllfU1BBQ0U6MjcyNjgsUkVGRVJFTkNFRF9EQVRBX05PVF9GT1VORDoyNzI3MixGSUxFX0FMUkVBRFlfRVhJU1RTOjI3MjczLElOQ09SUkVDVF9QMV9QMjoyNzM5MixJTlNfTk9UX1NVUFBPUlRFRDoyNzkwNCxDTEFfTk9UX1NVUFBPUlRFRDoyODE2MCxURUNITklDQUxfUFJPQkxFTToyODQxNixPSzozNjg2NCxNRU1PUllfUFJPQkxFTTozNzQ0MCxOT19FRl9TRUxFQ1RFRDozNzg4OCxJTlZBTElEX09GRlNFVDozNzg5MCxGSUxFX05PVF9GT1VORDozNzg5MixJTkNPTlNJU1RFTlRfRklMRTozNzg5NixBTEdPUklUSE1fTk9UX1NVUFBPUlRFRDozODAyMCxJTlZBTElEX0tDVjozODAyMSxDT0RFX05PVF9JTklUSUFMSVpFRDozODkxNCxBQ0NFU1NfQ09ORElUSU9OX05PVF9GVUxGSUxMRUQ6Mzg5MTYsQ09OVFJBRElDVElPTl9TRUNSRVRfQ09ERV9TVEFUVVM6Mzg5MjAsQ09OVFJBRElDVElPTl9JTlZBTElEQVRJT046Mzg5MjgsQ09ERV9CTE9DS0VEOjM4OTc2LE1BWF9WQUxVRV9SRUFDSEVEOjM4OTkyLEdQX0FVVEhfRkFJTEVEOjI1MzQ0LExJQ0VOU0lORzoyODQ4MixIQUxURUQ6Mjg1ODZ9O2Z1bmN0aW9uIGEoZSl7c3dpdGNoKGUpe2Nhc2UgMjYzNjg6cmV0dXJuIkluY29ycmVjdCBsZW5ndGgiO2Nhc2UgMjcwMTA6cmV0dXJuIlNlY3VyaXR5IG5vdCBzYXRpc2ZpZWQgKGRvbmdsZSBsb2NrZWQgb3IgaGF2ZSBpbnZhbGlkIGFjY2VzcyByaWdodHMpIjtjYXNlIDI3MDEzOnJldHVybiJDb25kaXRpb24gb2YgdXNlIG5vdCBzYXRpc2ZpZWQgKGRlbmllZCBieSB0aGUgdXNlcj8pIjtjYXNlIDI3MjY0OnJldHVybiJJbnZhbGlkIGRhdGEgcmVjZWl2ZWQiO2Nhc2UgMjczOTI6cmV0dXJuIkludmFsaWQgcGFyYW1ldGVyIHJlY2VpdmVkIn1pZigyODQxNjw9ZSYmZTw9Mjg2NzEpcmV0dXJuIkludGVybmFsIGVycm9yLCBwbGVhc2UgcmVwb3J0In1mdW5jdGlvbiBzKGUpe3RoaXMubmFtZT0iVHJhbnNwb3J0U3RhdHVzRXJyb3IiO3ZhciB0PU9iamVjdC5rZXlzKG8pLmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG9bdF09PT1lfSl8fCJVTktOT1dOX0VSUk9SIixyPWEoZSl8fHQsbj1lLnRvU3RyaW5nKDE2KTt0aGlzLm1lc3NhZ2U9IkxlZGdlciBkZXZpY2U6ICIrcisiICgweCIrbisiKSIsdGhpcy5zdGFjaz0obmV3IEVycm9yKS5zdGFjayx0aGlzLnN0YXR1c0NvZGU9ZSx0aGlzLnN0YXR1c1RleHQ9dH1zLnByb3RvdHlwZT1uZXcgRXJyb3IsKDAsbi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcikoIlRyYW5zcG9ydFN0YXR1c0Vycm9yIixmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHMoZS5zdGF0dXNDb2RlKX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9KSh0LHIpfTtyZXR1cm4gZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxyKSx0LnByb3RvdHlwZT1udWxsPT09cj9PYmplY3QuY3JlYXRlKHIpOihuLnByb3RvdHlwZT1yLnByb3RvdHlwZSxuZXcgbil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE3MCksbz1yKDMxKSxhPXIoODApLHM9by5zZWVkVXRpbHMuU2VlZCx1PW8ubGlicy5jcnlwdG8uc2lnbkJ5dGVzLGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIpe3ZhciBuLGk9ZS5jYWxsKHRoaXMscil8fHRoaXM7aWYoInN0cmluZyI9PT10eXBlb2YgdCluPXQ7ZWxzZXt2YXIgbz10LGE9by5lbmNyeXB0aW9uUm91bmRzO249cy5kZWNyeXB0U2VlZFBocmFzZShvLmVuY3J5cHRlZFNlZWQsby5wYXNzd29yZCxhKX1yZXR1cm4gaS5zZWVkPW5ldyBzKG4sU3RyaW5nLmZyb21DaGFyQ29kZShpLmdldE5ldHdvcmtCeXRlKCkpKSxpfXJldHVybiBuKHQsZSksdC5wcm90b3R5cGUuZ2V0U2lnblZlcnNpb25zPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuKGU9e30pW2EuU0lHTl9UWVBFLkFVVEhdPVsxXSxlW2EuU0lHTl9UWVBFLk1BVENIRVJfT1JERVJTXT1bMV0sZVthLlNJR05fVFlQRS5DUkVBVEVfT1JERVJdPVsxLDIsM10sZVthLlNJR05fVFlQRS5DQU5DRUxfT1JERVJdPVswLDFdLGVbYS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bMV0sZVthLlNJR05fVFlQRS5JU1NVRV09WzJdLGVbYS5TSUdOX1RZUEUuVFJBTlNGRVJdPVsyXSxlW2EuU0lHTl9UWVBFLlJFSVNTVUVdPVsyXSxlW2EuU0lHTl9UWVBFLkJVUk5dPVsyXSxlW2EuU0lHTl9UWVBFLkVYQ0hBTkdFXT1bMCwyXSxlW2EuU0lHTl9UWVBFLkxFQVNFXT1bMl0sZVthLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109WzJdLGVbYS5TSUdOX1RZUEUuQ1JFQVRFX0FMSUFTXT1bMl0sZVthLlNJR05fVFlQRS5NQVNTX1RSQU5TRkVSXT1bMV0sZVthLlNJR05fVFlQRS5EQVRBXT1bMV0sZVthLlNJR05fVFlQRS5TRVRfU0NSSVBUXT1bMV0sZVthLlNJR05fVFlQRS5TUE9OU09SU0hJUF09WzFdLGVbYS5TSUdOX1RZUEUuU0VUX0FTU0VUX1NDUklQVF09WzFdLGVbYS5TSUdOX1RZUEUuU0NSSVBUX0lOVk9DQVRJT05dPVsxXSxlfSx0LnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5rZXlQYWlyLnB1YmxpY0tleSl9LHQucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5rZXlQYWlyLnByaXZhdGVLZXkpfSx0LnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNlZWQuYWRkcmVzcyl9LHQucHJvdG90eXBlLmdldFNlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5waHJhc2UpfSx0LnByb3RvdHlwZS5zaWduUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2lnbihlKX0sdC5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3NpZ24oZSl9LHQucHJvdG90eXBlLnNpZ25PcmRlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9zaWduKGUpfSx0LnByb3RvdHlwZS5zaWduRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2lnbihlKX0sdC5wcm90b3R5cGUuX3NpZ249ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh1KHRoaXMuc2VlZC5rZXlQYWlyLGUpKX0sdC5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSx0LnR5cGU9InNlZWQiLHR9KGkuQWRhcHRlcik7dC5TZWVkQWRhcHRlcj1jfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDQ1NSksaT1yKDM5OSksbz1yKDM5Nik7IWZ1bmN0aW9uKGUpe2UuU2VlZD0ic2VlZCIsZS5XYXZlc0tlZXBlcj0id2F2ZXNLZWVwZXIiLGUuTGVkZ2VyPSJsZWRnZXIiLGUuVHJlc29yPSJ0cmVzb3IifSh0LkFkYXB0ZXJUeXBlfHwodC5BZGFwdGVyVHlwZT17fSkpLHQuYWRhcHRlclByaW9yaXR5TGlzdD1bIndhdmVzS2VlcGVyIiwibGVkZ2VyIiwidHJlc29yIiwic2VlZCJdLHQuYWRhcHRlckxpc3Q9W24uU2VlZEFkYXB0ZXIsaS5MZWRnZXJBZGFwdGVyLG8uV2F2ZXNLZWVwZXJBZGFwdGVyXX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc4KSxpPXIoNDYwKTtlLmV4cG9ydHM9cigxMTYpP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5mKGUsdCxpKDEscikpfTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz0hcigxMTYpJiYhcig4NCkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoNDU5KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDczKS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MyksaT1yKDQ1Nyksbz1yKDE5MCksYT1yKDQ2MikoInNyYyIpLHM9cig5NDQpLHU9KCIiK3MpLnNwbGl0KCJ0b1N0cmluZyIpO3IoMTUwKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSl9LChlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHI7YyYmKG8ociwibmFtZSIpfHxpKHIsIm5hbWUiLHQpKSxlW3RdIT09ciYmKGMmJihvKHIsYSl8fGkocixhLGVbdF0/IiIrZVt0XTp1LmpvaW4oU3RyaW5nKHQpKSkpLGU9PT1uP2VbdF09cjpzP2VbdF0/ZVt0XT1yOmkoZSx0LHIpOihkZWxldGUgZVt0XSxpKGUsdCxyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1thXXx8cy5jYWxsKHRoaXMpfSl9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9MCxuPU1hdGgucmFuZG9tKCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09ZT8iIjplLCIpXyIsKCsrcituKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUwKSxpPXIoNzMpLG89aVsiX19jb3JlLWpzX3NoYXJlZF9fIl18fChpWyJfX2NvcmUtanNfc2hhcmVkX18iXT17fSk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvW2VdfHwob1tlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjpuLnZlcnNpb24sbW9kZTpyKDk0NSk/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiXHhhOSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5NDYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7aWYobihlKSx2b2lkIDA9PT10KXJldHVybiBlO3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodCxyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBlLmNhbGwodCxyLG4pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZS5jYWxsKHQscixuLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5sb2cxcHx8ZnVuY3Rpb24oZSl7cmV0dXJuKGU9K2UpPi0xZS04JiZlPDFlLTg/ZS1lKmUvMjpNYXRoLmxvZygxK2UpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTY4KSxpPXIoNDYwKSxvPXIoMjgzKSxhPXIoMjc5KSxzPXIoMTkwKSx1PXIoNDU4KSxjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPXIoMTE2KT9jOmZ1bmN0aW9uKGUsdCl7aWYoZT1vKGUpLHQ9YSh0LCEwKSx1KXRyeXtyZXR1cm4gYyhlLHQpfWNhdGNoKHIpe31pZihzKGUsdCkpcmV0dXJuIGkoIW4uZi5jYWxsKGUsdCksZVt0XSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTApLGk9cigyODMpLG89cig5NzEpKCExKSxhPXIoNDY4KSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcylyIT1hJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDYzKSgia2V5cyIpLGk9cig0NjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09aShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyODIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiIT10eXBlb2YgZSYmIk51bWJlciIhPW4oZSkpdGhyb3cgVHlwZUVycm9yKHQpO3JldHVybitlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE1KSxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmaShlKT09PWV9fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciByPSJvYmplY3QiPT10eXBlb2YgdCYmdCYmdC5PYmplY3Q9PT1PYmplY3QmJnQ7ZS5leHBvcnRzPXJ9KS5jYWxsKHRoaXMscigzNCkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTIpLGk9cigxMDAyKSxvPXIoMTAwMyksYT1yKDEwMDQpLHM9cigxMDA1KSx1PXIoMTAwNik7ZnVuY3Rpb24gYyhlKXt2YXIgdD10aGlzLl9fZGF0YV9fPW5ldyBuKGUpO3RoaXMuc2l6ZT10LnNpemV9Yy5wcm90b3R5cGUuY2xlYXI9aSxjLnByb3RvdHlwZS5kZWxldGU9byxjLnByb3RvdHlwZS5nZXQ9YSxjLnByb3RvdHlwZS5oYXM9cyxjLnByb3RvdHlwZS5zZXQ9dSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0KXt2YXIgcj1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUpe3RyeXtyZXR1cm4gci5jYWxsKGUpfWNhdGNoKHQpe310cnl7cmV0dXJuIGUrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI5MiksaT1yKDQ3NSksbz1yKDI5MyksYT0xLHM9MjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsdSxjLGYpe3ZhciBsPXImYSxoPWUubGVuZ3RoLHA9dC5sZW5ndGg7aWYoaCE9cCYmIShsJiZwPmgpKXJldHVybiExO3ZhciBkPWYuZ2V0KGUpO2lmKGQmJmYuZ2V0KHQpKXJldHVybiBkPT10O3ZhciB5PS0xLGc9ITAsdj1yJnM/bmV3IG46dm9pZCAwO2ZvcihmLnNldChlLHQpLGYuc2V0KHQsZSk7Kyt5PGg7KXt2YXIgbT1lW3ldLGI9dFt5XTtpZih1KXZhciBfPWw/dShiLG0seSx0LGUsZik6dShtLGIseSxlLHQsZik7aWYodm9pZCAwIT09Xyl7aWYoXyljb250aW51ZTtnPSExO2JyZWFrfWlmKHYpe2lmKCFpKHQsZnVuY3Rpb24oZSx0KXtpZighbyh2LHQpJiYobT09PWV8fGMobSxlLHIsdSxmKSkpcmV0dXJuIHYucHVzaCh0KX0pKXtnPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1iJiYhYyhtLGIscix1LGYpKXtnPSExO2JyZWFrfX1yZXR1cm4gZi5kZWxldGUoZSksZi5kZWxldGUodCksZ319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoOysrcjxuOylpZih0KGVbcl0scixlKSlyZXR1cm4hMDtyZXR1cm4hMX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGgsaT1lLmxlbmd0aDsrK3I8bjspZVtpK3JdPXRbcl07cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPW51bGw9PWU/MDplLmxlbmd0aCxpPTAsbz1bXTsrK3I8bjspe3ZhciBhPWVbcl07dChhLHIsZSkmJihvW2krK109YSl9cmV0dXJuIG99fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNjQpLGk9cigxMDM2KSxvPXQmJiF0Lm5vZGVUeXBlJiZ0LGE9byYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxzPWEmJmEuZXhwb3J0cz09PW8/bi5CdWZmZXI6dm9pZCAwLHU9KHM/cy5pc0J1ZmZlcjp2b2lkIDApfHxpO2UuZXhwb3J0cz11fSkuY2FsbCh0aGlzLHIoMjE1KShlKSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzcpLGk9cigyOTgpLG89cigxMDM4KSxhPW8mJm8uaXNUeXBlZEFycmF5LHM9YT9pKGEpOm47ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHQocikpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIlNldCIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cigxMDQ2KTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LHIsbyxhLHMpe3ZhciB1PS0xLGM9dC5sZW5ndGg7Zm9yKG98fChvPWkpLHN8fChzPVtdKTsrK3U8Yzspe3ZhciBmPXRbdV07cj4wJiZvKGYpP3I+MT9lKGYsci0xLG8sYSxzKTpuKHMsZik6YXx8KHNbcy5sZW5ndGhdPWYpfXJldHVybiBzfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWUmJiFuKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJnJbZV09PT10JiYodm9pZCAwIT09dHx8ZSBpbiBPYmplY3QocikpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDE5Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbz0odD1uKHQsZSkpLmxlbmd0aDtudWxsIT1lJiZyPG87KWU9ZVtpKHRbcisrXSldO3JldHVybiByJiZyPT1vP2U6dm9pZCAwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOSksaT1yKDI5OSksbz1yKDEwNTIpLGE9cigxMDU1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKT9lOmkoZSx0KT9bZV06byhhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5OCksaT1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9LTEsbz1pKGUpP0FycmF5KGUubGVuZ3RoKTpbXTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXtvWysrcl09dChlLG4saSl9KSxvfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MyksaT1yKDE5Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJm4oZSx0LGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE5KSxpPXIoMTA2OSksbz1yKDEwNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvKGkoZSx0LG4pLGUrIiIpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyKSxpPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW4oT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBlKHt9LCIiLHt9KSxlfWNhdGNoKHQpe319KCk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmxlbmd0aDsrK2k8bzspe3ZhciBhPWVbaV0scz10KGEpO2lmKG51bGwhPXMmJih2b2lkIDA9PT11P3M9PT1zJiYhbihzKTpyKHMsdSkpKXZhciB1PXMsYz1hfXJldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuOyFmdW5jdGlvbihpKXsidXNlIHN0cmljdCI7dmFyIG8sYT0xZTkscz17cHJlY2lzaW9uOjIwLHJvdW5kaW5nOjQsdG9FeHBOZWc6LTcsdG9FeHBQb3M6MjEsTE4xMDoiMi4zMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDc2MDExMDE0ODg2Mjg3NzI5NzYwMzMzMjc5MDA5Njc1NzI2MDk2NzczNTI0ODAyMzU5OTcyMDUwODk1OTgyOTgzNDE5Njc3ODQwNDIyODYifSx1PSEwLGM9IltEZWNpbWFsRXJyb3JdICIsZj1jKyJJbnZhbGlkIGFyZ3VtZW50OiAiLGw9YysiRXhwb25lbnQgb3V0IG9mIHJhbmdlOiAiLGg9TWF0aC5mbG9vcixwPU1hdGgucG93LGQ9L14oXGQrKFwuXGQqKT98XC5cZCspKGVbKy1dP1xkKyk/JC9pLHk9MWU3LGc9Nyx2PWgoOTAwNzE5OTI1NDc0MDk5MS9nKSxtPXt9O2Z1bmN0aW9uIGIoZSx0KXt2YXIgcixuLGksbyxhLHMsYyxmLGw9ZS5jb25zdHJ1Y3RvcixoPWwucHJlY2lzaW9uO2lmKCFlLnN8fCF0LnMpcmV0dXJuIHQuc3x8KHQ9bmV3IGwoZSkpLHU/ayh0LGgpOnQ7aWYoYz1lLmQsZj10LmQsYT1lLmUsaT10LmUsYz1jLnNsaWNlKCksbz1hLWkpe2ZvcihvPDA/KG49YyxvPS1vLHM9Zi5sZW5ndGgpOihuPWYsaT1hLHM9Yy5sZW5ndGgpLG8+KHM9KGE9TWF0aC5jZWlsKGgvZykpPnM/YSsxOnMrMSkmJihvPXMsbi5sZW5ndGg9MSksbi5yZXZlcnNlKCk7by0tOyluLnB1c2goMCk7bi5yZXZlcnNlKCl9Zm9yKChzPWMubGVuZ3RoKS0obz1mLmxlbmd0aCk8MCYmKG89cyxuPWYsZj1jLGM9bikscj0wO287KXI9KGNbLS1vXT1jW29dK2Zbb10rcikveXwwLGNbb10lPXk7Zm9yKHImJihjLnVuc2hpZnQociksKytpKSxzPWMubGVuZ3RoOzA9PWNbLS1zXTspYy5wb3AoKTtyZXR1cm4gdC5kPWMsdC5lPWksdT9rKHQsaCk6dH1mdW5jdGlvbiBfKGUsdCxyKXtpZihlIT09fn5lfHxlPHR8fGU+cil0aHJvdyBFcnJvcihmK2UpfWZ1bmN0aW9uIFMoZSl7dmFyIHQscixuLGk9ZS5sZW5ndGgtMSxvPSIiLGE9ZVswXTtpZihpPjApe2ZvcihvKz1hLHQ9MTt0PGk7dCsrKW49ZVt0XSsiIiwocj1nLW4ubGVuZ3RoKSYmKG8rPUMocikpLG8rPW47YT1lW3RdLChyPWctKG49YSsiIikubGVuZ3RoKSYmKG8rPUMocikpfWVsc2UgaWYoMD09PWEpcmV0dXJuIjAiO2Zvcig7YSUxMD09PTA7KWEvPTEwO3JldHVybiBvK2F9bS5hYnNvbHV0ZVZhbHVlPW0uYWJzPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIGUucyYmKGUucz0xKSxlfSxtLmNvbXBhcmVkVG89bS5jbXA9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksbz10aGlzO2lmKGU9bmV3IG8uY29uc3RydWN0b3IoZSksby5zIT09ZS5zKXJldHVybiBvLnN8fC1lLnM7aWYoby5lIT09ZS5lKXJldHVybiBvLmU+ZS5lXm8uczwwPzE6LTE7Zm9yKHQ9MCxyPShuPW8uZC5sZW5ndGgpPChpPWUuZC5sZW5ndGgpP246aTt0PHI7Kyt0KWlmKG8uZFt0XSE9PWUuZFt0XSlyZXR1cm4gby5kW3RdPmUuZFt0XV5vLnM8MD8xOi0xO3JldHVybiBuPT09aT8wOm4+aV5vLnM8MD8xOi0xfSxtLmRlY2ltYWxQbGFjZXM9bS5kcD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmQubGVuZ3RoLTEscj0odC1lLmUpKmc7aWYodD1lLmRbdF0pZm9yKDt0JTEwPT0wO3QvPTEwKXItLTtyZXR1cm4gcjwwPzA6cn0sbS5kaXZpZGVkQnk9bS5kaXY9ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyxuZXcgdGhpcy5jb25zdHJ1Y3RvcihlKSl9LG0uZGl2aWRlZFRvSW50ZWdlckJ5PW0uaWRpdj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbnN0cnVjdG9yO3JldHVybiBrKEUodGhpcyxuZXcgdChlKSwwLDEpLHQucHJlY2lzaW9uKX0sbS5lcXVhbHM9bS5lcT1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5jbXAoZSl9LG0uZXhwb25lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzKX0sbS5ncmVhdGVyVGhhbj1tLmd0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT4wfSxtLmdyZWF0ZXJUaGFuT3JFcXVhbFRvPW0uZ3RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT49MH0sbS5pc0ludGVnZXI9bS5pc2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmU+dGhpcy5kLmxlbmd0aC0yfSxtLmlzTmVnYXRpdmU9bS5pc25lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnM8MH0sbS5pc1Bvc2l0aXZlPW0uaXNwb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zPjB9LG0uaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnN9LG0ubGVzc1RoYW49bS5sdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MH0sbS5sZXNzVGhhbk9yRXF1YWxUbz1tLmx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MX0sbS5sb2dhcml0aG09bS5sb2c9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5jb25zdHJ1Y3RvcixpPW4ucHJlY2lzaW9uLGE9aSs1O2lmKHZvaWQgMD09PWUpZT1uZXcgbigxMCk7ZWxzZSBpZigoZT1uZXcgbihlKSkuczwxfHxlLmVxKG8pKXRocm93IEVycm9yKGMrIk5hTiIpO2lmKHIuczwxKXRocm93IEVycm9yKGMrKHIucz8iTmFOIjoiLUluZmluaXR5IikpO3JldHVybiByLmVxKG8pP25ldyBuKDApOih1PSExLHQ9RSh4KHIsYSkseChlLGEpLGEpLHU9ITAsayh0LGkpKX0sbS5taW51cz1tLnN1Yj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlPW5ldyB0LmNvbnN0cnVjdG9yKGUpLHQucz09ZS5zP08odCxlKTpiKHQsKGUucz0tZS5zLGUpKX0sbS5tb2R1bG89bS5tb2Q9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5jb25zdHJ1Y3RvcixpPW4ucHJlY2lzaW9uO2lmKCEoZT1uZXcgbihlKSkucyl0aHJvdyBFcnJvcihjKyJOYU4iKTtyZXR1cm4gci5zPyh1PSExLHQ9RShyLGUsMCwxKS50aW1lcyhlKSx1PSEwLHIubWludXModCkpOmsobmV3IG4ociksaSl9LG0ubmF0dXJhbEV4cG9uZW50aWFsPW0uZXhwPWZ1bmN0aW9uKCl7cmV0dXJuIHcodGhpcyl9LG0ubmF0dXJhbExvZ2FyaXRobT1tLmxuPWZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyl9LG0ubmVnYXRlZD1tLm5lZz1mdW5jdGlvbigpe3ZhciBlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiBlLnM9LWUuc3x8MCxlfSxtLnBsdXM9bS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZT1uZXcgdC5jb25zdHJ1Y3RvcihlKSx0LnM9PWUucz9iKHQsZSk6Tyh0LChlLnM9LWUucyxlKSl9LG0ucHJlY2lzaW9uPW0uc2Q9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGk9dGhpcztpZih2b2lkIDAhPT1lJiZlIT09ISFlJiYxIT09ZSYmMCE9PWUpdGhyb3cgRXJyb3IoZitlKTtpZih0PVQoaSkrMSxyPShuPWkuZC5sZW5ndGgtMSkqZysxLG49aS5kW25dKXtmb3IoO24lMTA9PTA7bi89MTApci0tO2ZvcihuPWkuZFswXTtuPj0xMDtuLz0xMClyKyt9cmV0dXJuIGUmJnQ+cj90OnJ9LG0uc3F1YXJlUm9vdD1tLnNxcnQ9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixpLG8sYSxzPXRoaXMsZj1zLmNvbnN0cnVjdG9yO2lmKHMuczwxKXtpZighcy5zKXJldHVybiBuZXcgZigwKTt0aHJvdyBFcnJvcihjKyJOYU4iKX1mb3IoZT1UKHMpLHU9ITEsMD09KGk9TWF0aC5zcXJ0KCtzKSl8fGk9PTEvMD8oKCh0PVMocy5kKSkubGVuZ3RoK2UpJTI9PTAmJih0Kz0iMCIpLGk9TWF0aC5zcXJ0KHQpLGU9aCgoZSsxKS8yKS0oZTwwfHxlJTIpLG49bmV3IGYodD1pPT0xLzA/IjFlIitlOih0PWkudG9FeHBvbmVudGlhbCgpKS5zbGljZSgwLHQuaW5kZXhPZigiZSIpKzEpK2UpKTpuPW5ldyBmKGkudG9TdHJpbmcoKSksaT1hPShyPWYucHJlY2lzaW9uKSszOzspaWYobj0obz1uKS5wbHVzKEUocyxvLGErMikpLnRpbWVzKC41KSxTKG8uZCkuc2xpY2UoMCxhKT09PSh0PVMobi5kKSkuc2xpY2UoMCxhKSl7aWYodD10LnNsaWNlKGEtMyxhKzEpLGk9PWEmJiI0OTk5Ij09dCl7aWYoayhvLHIrMSwwKSxvLnRpbWVzKG8pLmVxKHMpKXtuPW87YnJlYWt9fWVsc2UgaWYoIjk5OTkiIT10KWJyZWFrO2ErPTR9cmV0dXJuIHU9ITAsayhuLHIpfSxtLnRpbWVzPW0ubXVsPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzLGMsZixsPXRoaXMsaD1sLmNvbnN0cnVjdG9yLHA9bC5kLGQ9KGU9bmV3IGgoZSkpLmQ7aWYoIWwuc3x8IWUucylyZXR1cm4gbmV3IGgoMCk7Zm9yKGUucyo9bC5zLHI9bC5lK2UuZSwoYz1wLmxlbmd0aCk8KGY9ZC5sZW5ndGgpJiYobz1wLHA9ZCxkPW8sYT1jLGM9ZixmPWEpLG89W10sbj1hPWMrZjtuLS07KW8ucHVzaCgwKTtmb3Iobj1mOy0tbj49MDspe2Zvcih0PTAsaT1jK247aT5uOylzPW9baV0rZFtuXSpwW2ktbi0xXSt0LG9baS0tXT1zJXl8MCx0PXMveXwwO29baV09KG9baV0rdCkleXwwfWZvcig7IW9bLS1hXTspby5wb3AoKTtyZXR1cm4gdD8rK3I6by5zaGlmdCgpLGUuZD1vLGUuZT1yLHU/ayhlLGgucHJlY2lzaW9uKTplfSxtLnRvRGVjaW1hbFBsYWNlcz1tLnRvZHA9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49ci5jb25zdHJ1Y3RvcjtyZXR1cm4gcj1uZXcgbihyKSx2b2lkIDA9PT1lP3I6KF8oZSwwLGEpLHZvaWQgMD09PXQ/dD1uLnJvdW5kaW5nOl8odCwwLDgpLGsocixlK1QocikrMSx0KSl9LG0udG9FeHBvbmVudGlhbD1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcyxpPW4uY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWU/cj1OKG4sITApOihfKGUsMCxhKSx2b2lkIDA9PT10P3Q9aS5yb3VuZGluZzpfKHQsMCw4KSxyPU4obj1rKG5ldyBpKG4pLGUrMSx0KSwhMCxlKzEpKSxyfSxtLnRvRml4ZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9dGhpcyxvPWkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWU/TihpKTooXyhlLDAsYSksdm9pZCAwPT09dD90PW8ucm91bmRpbmc6Xyh0LDAsOCkscj1OKChuPWsobmV3IG8oaSksZStUKGkpKzEsdCkpLmFicygpLCExLGUrVChuKSsxKSxpLmlzbmVnKCkmJiFpLmlzWmVybygpPyItIityOnIpfSxtLnRvSW50ZWdlcj1tLnRvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY29uc3RydWN0b3I7cmV0dXJuIGsobmV3IHQoZSksVChlKSsxLHQucm91bmRpbmcpfSxtLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuK3RoaXN9LG0udG9Qb3dlcj1tLnBvdz1mdW5jdGlvbihlKXt2YXIgdCxyLG4saSxhLHMsZj10aGlzLGw9Zi5jb25zdHJ1Y3RvcixwPSsoZT1uZXcgbChlKSk7aWYoIWUucylyZXR1cm4gbmV3IGwobyk7aWYoIShmPW5ldyBsKGYpKS5zKXtpZihlLnM8MSl0aHJvdyBFcnJvcihjKyJJbmZpbml0eSIpO3JldHVybiBmfWlmKGYuZXEobykpcmV0dXJuIGY7aWYobj1sLnByZWNpc2lvbixlLmVxKG8pKXJldHVybiBrKGYsbik7aWYocz0odD1lLmUpPj0ocj1lLmQubGVuZ3RoLTEpLGE9Zi5zLHMpe2lmKChyPXA8MD8tcDpwKTw9OTAwNzE5OTI1NDc0MDk5MSl7Zm9yKGk9bmV3IGwobyksdD1NYXRoLmNlaWwobi9nKzQpLHU9ITE7ciUyJiZQKChpPWkudGltZXMoZikpLmQsdCksMCE9PShyPWgoci8yKSk7KVAoKGY9Zi50aW1lcyhmKSkuZCx0KTtyZXR1cm4gdT0hMCxlLnM8MD9uZXcgbChvKS5kaXYoaSk6ayhpLG4pfX1lbHNlIGlmKGE8MCl0aHJvdyBFcnJvcihjKyJOYU4iKTtyZXR1cm4gYT1hPDAmJjEmZS5kW01hdGgubWF4KHQscildPy0xOjEsZi5zPTEsdT0hMSxpPWUudGltZXMoeChmLG4rMTIpKSx1PSEwLChpPXcoaSkpLnM9YSxpfSxtLnRvUHJlY2lzaW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpPXRoaXMsbz1pLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT1lP249TihpLChyPVQoaSkpPD1vLnRvRXhwTmVnfHxyPj1vLnRvRXhwUG9zKTooXyhlLDEsYSksdm9pZCAwPT09dD90PW8ucm91bmRpbmc6Xyh0LDAsOCksbj1OKGk9ayhuZXcgbyhpKSxlLHQpLGU8PShyPVQoaSkpfHxyPD1vLnRvRXhwTmVnLGUpKSxufSxtLnRvU2lnbmlmaWNhbnREaWdpdHM9bS50b3NkPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09ZT8oZT1yLnByZWNpc2lvbix0PXIucm91bmRpbmcpOihfKGUsMSxhKSx2b2lkIDA9PT10P3Q9ci5yb3VuZGluZzpfKHQsMCw4KSksayhuZXcgcih0aGlzKSxlLHQpfSxtLnRvU3RyaW5nPW0udmFsdWVPZj1tLnZhbD1tLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1UKGUpLHI9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gTihlLHQ8PXIudG9FeHBOZWd8fHQ+PXIudG9FeHBQb3MpfTt2YXIgRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgcixuPTAsaT1lLmxlbmd0aDtmb3IoZT1lLnNsaWNlKCk7aS0tOylyPWVbaV0qdCtuLGVbaV09ciV5fDAsbj1yL3l8MDtyZXR1cm4gbiYmZS51bnNoaWZ0KG4pLGV9ZnVuY3Rpb24gdChlLHQscixuKXt2YXIgaSxvO2lmKHIhPW4pbz1yPm4/MTotMTtlbHNlIGZvcihpPW89MDtpPHI7aSsrKWlmKGVbaV0hPXRbaV0pe289ZVtpXT50W2ldPzE6LTE7YnJlYWt9cmV0dXJuIG99ZnVuY3Rpb24gcihlLHQscil7Zm9yKHZhciBuPTA7ci0tOyllW3JdLT1uLG49ZVtyXTx0W3JdPzE6MCxlW3JdPW4qeStlW3JdLXRbcl07Zm9yKDshZVswXSYmZS5sZW5ndGg+MTspZS5zaGlmdCgpfXJldHVybiBmdW5jdGlvbihuLGksbyxhKXt2YXIgcyx1LGYsbCxoLHAsZCx2LG0sYixfLFMsRSx3LEEsQyx4LEksTz1uLmNvbnN0cnVjdG9yLE49bi5zPT1pLnM/MTotMSxQPW4uZCxSPWkuZDtpZighbi5zKXJldHVybiBuZXcgTyhuKTtpZighaS5zKXRocm93IEVycm9yKGMrIkRpdmlzaW9uIGJ5IHplcm8iKTtmb3IodT1uLmUtaS5lLHg9Ui5sZW5ndGgsQT1QLmxlbmd0aCx2PShkPW5ldyBPKE4pKS5kPVtdLGY9MDtSW2ZdPT0oUFtmXXx8MCk7KSsrZjtpZihSW2ZdPihQW2ZdfHwwKSYmLS11LChTPW51bGw9PW8/bz1PLnByZWNpc2lvbjphP28rKFQobiktVChpKSkrMTpvKTwwKXJldHVybiBuZXcgTygwKTtpZihTPVMvZysyfDAsZj0wLDE9PXgpZm9yKGw9MCxSPVJbMF0sUysrOyhmPEF8fGwpJiZTLS07ZisrKUU9bCp5KyhQW2ZdfHwwKSx2W2ZdPUUvUnwwLGw9RSVSfDA7ZWxzZXtmb3IoKGw9eS8oUlswXSsxKXwwKT4xJiYoUj1lKFIsbCksUD1lKFAsbCkseD1SLmxlbmd0aCxBPVAubGVuZ3RoKSx3PXgsYj0obT1QLnNsaWNlKDAseCkpLmxlbmd0aDtiPHg7KW1bYisrXT0wOyhJPVIuc2xpY2UoKSkudW5zaGlmdCgwKSxDPVJbMF0sUlsxXT49eS8yJiYrK0M7ZG97bD0wLChzPXQoUixtLHgsYikpPDA/KF89bVswXSx4IT1iJiYoXz1fKnkrKG1bMV18fDApKSwobD1fL0N8MCk+MT8obD49eSYmKGw9eS0xKSwxPT0ocz10KGg9ZShSLGwpLG0scD1oLmxlbmd0aCxiPW0ubGVuZ3RoKSkmJihsLS0scihoLHg8cD9JOlIscCkpKTooMD09bCYmKHM9bD0xKSxoPVIuc2xpY2UoKSksKHA9aC5sZW5ndGgpPGImJmgudW5zaGlmdCgwKSxyKG0saCxiKSwtMT09cyYmKHM9dChSLG0seCxiPW0ubGVuZ3RoKSk8MSYmKGwrKyxyKG0seDxiP0k6UixiKSksYj1tLmxlbmd0aCk6MD09PXMmJihsKyssbT1bMF0pLHZbZisrXT1sLHMmJm1bMF0="
}
Changelog:
{
"2020.01.10 16:24": "base64:cmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlR2VudWluZVNvY2tldEVhcmx5Q2xvc2UiKSx0LkRldmljZU5vdEdlbnVpbmVFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VOb3RHZW51aW5lIiksdC5EZXZpY2VPbkRhc2hib2FyZEV4cGVjdGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZU9uRGFzaGJvYXJkRXhwZWN0ZWQiKSx0LkRldmljZU9uRGFzaGJvYXJkVW5leHBlY3RlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VPbkRhc2hib2FyZFVuZXhwZWN0ZWQiKSx0LkRldmljZUluT1NVRXhwZWN0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlSW5PU1VFeHBlY3RlZCIpLHQuRGV2aWNlSGFsdGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZUhhbHRlZCIpLHQuRGV2aWNlTmFtZUludmFsaWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlTmFtZUludmFsaWQiKSx0LkRldmljZVNvY2tldEZhaWw9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlU29ja2V0RmFpbCIpLHQuRGV2aWNlU29ja2V0Tm9CdWxrU3RhdHVzPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZVNvY2tldE5vQnVsa1N0YXR1cyIpLHQuRGlzY29ubmVjdGVkRGV2aWNlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRpc2Nvbm5lY3RlZERldmljZSIpLHQuRGlzY29ubmVjdGVkRGV2aWNlRHVyaW5nT3BlcmF0aW9uPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRpc2Nvbm5lY3RlZERldmljZUR1cmluZ09wZXJhdGlvbiIpLHQuRW5wb2ludENvbmZpZ0Vycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkVucG9pbnRDb25maWciKSx0LkV0aEFwcFBsZWFzZUVuYWJsZUNvbnRyYWN0RGF0YT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJFdGhBcHBQbGVhc2VFbmFibGVDb250cmFjdERhdGEiKSx0LkZlZUVzdGltYXRpb25GYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmVlRXN0aW1hdGlvbkZhaWxlZCIpLHQuSGFyZFJlc2V0RmFpbD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJIYXJkUmVzZXRGYWlsIiksdC5JbnZhbGlkQWRkcmVzcz0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJJbnZhbGlkQWRkcmVzcyIpLHQuSW52YWxpZEFkZHJlc3NCZWNhdXNlRGVzdGluYXRpb25Jc0Fsc29Tb3VyY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiSW52YWxpZEFkZHJlc3NCZWNhdXNlRGVzdGluYXRpb25Jc0Fsc29Tb3VyY2UiKSx0LkxhdGVzdE1DVUluc3RhbGxlZEVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxhdGVzdE1DVUluc3RhbGxlZEVycm9yIiksdC5Vbmtub3duTUNVPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVua25vd25NQ1UiKSx0LkxlZGdlckFQSUVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxlZGdlckFQSUVycm9yIiksdC5MZWRnZXJBUElFcnJvcldpdGhNZXNzYWdlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxlZGdlckFQSUVycm9yV2l0aE1lc3NhZ2UiKSx0LkxlZGdlckFQSU5vdEF2YWlsYWJsZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJMZWRnZXJBUElOb3RBdmFpbGFibGUiKSx0Lk1hbmFnZXJBcHBBbHJlYWR5SW5zdGFsbGVkRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlckFwcEFscmVhZHlJbnN0YWxsZWQiKSx0Lk1hbmFnZXJBcHBSZWx5T25CVENFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJNYW5hZ2VyQXBwUmVseU9uQlRDIiksdC5NYW5hZ2VyRGV2aWNlTG9ja2VkRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlckRldmljZUxvY2tlZCIpLHQuTWFuYWdlckZpcm13YXJlTm90RW5vdWdoU3BhY2VFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJNYW5hZ2VyRmlybXdhcmVOb3RFbm91Z2hTcGFjZSIpLHQuTWFuYWdlck5vdEVub3VnaFNwYWNlRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlck5vdEVub3VnaFNwYWNlIiksdC5NYW5hZ2VyVW5pbnN0YWxsQlRDRGVwPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk1hbmFnZXJVbmluc3RhbGxCVENEZXAiKSx0Lk5ldHdvcmtEb3duPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5ldHdvcmtEb3duIiksdC5Ob0FkZHJlc3Nlc0ZvdW5kPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vQWRkcmVzc2VzRm91bmQiKSx0Lk5vdEVub3VnaEJhbGFuY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm90RW5vdWdoQmFsYW5jZSIpLHQuTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQiKSx0Lk5vQWNjZXNzVG9DYW1lcmE9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm9BY2Nlc3NUb0NhbWVyYSIpLHQuTm90RW5vdWdoR2FzPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vdEVub3VnaEdhcyIpLHQuUGFzc3dvcmRzRG9udE1hdGNoRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiUGFzc3dvcmRzRG9udE1hdGNoIiksdC5QYXNzd29yZEluY29ycmVjdEVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlBhc3N3b3JkSW5jb3JyZWN0IiksdC5UaW1lb3V0VGFnZ2VkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlRpbWVvdXRUYWdnZWQiKSx0LlVuZXhwZWN0ZWRCb290bG9hZGVyPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVuZXhwZWN0ZWRCb290bG9hZGVyIiksdC5VcGRhdGVZb3VyQXBwPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVwZGF0ZVlvdXJBcHAiKSx0LlVzZXJSZWZ1c2VkRGV2aWNlTmFtZUNoYW5nZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJVc2VyUmVmdXNlZERldmljZU5hbWVDaGFuZ2UiKSx0LlVzZXJSZWZ1c2VkQWRkcmVzcz0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJVc2VyUmVmdXNlZEFkZHJlc3MiKSx0LlVzZXJSZWZ1c2VkRmlybXdhcmVVcGRhdGU9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRGaXJtd2FyZVVwZGF0ZSIpLHQuVXNlclJlZnVzZWRBbGxvd01hbmFnZXI9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRBbGxvd01hbmFnZXIiKSx0LlVzZXJSZWZ1c2VkT25EZXZpY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRPbkRldmljZSIpLHQuVHJhbnNwb3J0T3BlblVzZXJDYW5jZWxsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVHJhbnNwb3J0T3BlblVzZXJDYW5jZWxsZWQiKSx0LlRyYW5zcG9ydEludGVyZmFjZU5vdEF2YWlsYWJsZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJUcmFuc3BvcnRJbnRlcmZhY2VOb3RBdmFpbGFibGUiKSx0LkRldmljZVNob3VsZFN0YXlJbkFwcD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VTaG91bGRTdGF5SW5BcHAiKSx0LldlYnNvY2tldENvbm5lY3Rpb25FcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJXZWJzb2NrZXRDb25uZWN0aW9uRXJyb3IiKSx0LldlYnNvY2tldENvbm5lY3Rpb25GYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiV2Vic29ja2V0Q29ubmVjdGlvbkZhaWxlZCIpLHQuV3JvbmdEZXZpY2VGb3JBY2NvdW50PSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIldyb25nRGV2aWNlRm9yQWNjb3VudCIpLHQuV3JvbmdBcHBGb3JDdXJyZW5jeT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJXcm9uZ0FwcEZvckN1cnJlbmN5IiksdC5FVEhBZGRyZXNzTm9uRUlQPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkVUSEFkZHJlc3NOb25FSVAiKSx0LkNhbnRTY2FuUVJDb2RlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkNhbnRTY2FuUVJDb2RlIiksdC5GZWVOb3RMb2FkZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmVlTm90TG9hZGVkIiksdC5GZWVSZXF1aXJlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJGZWVSZXF1aXJlZCIpLHQuU3luY0Vycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlN5bmNFcnJvciIpLHQuUGFpcmluZ0ZhaWxlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJQYWlyaW5nRmFpbGVkIiksdC5HZW51aW5lQ2hlY2tGYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiR2VudWluZUNoZWNrRmFpbGVkIiksdC5MZWRnZXJBUEk0eHg9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTGVkZ2VyQVBJNHh4IiksdC5MZWRnZXJBUEk1eHg9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTGVkZ2VyQVBJNXh4IiksdC5GaXJtd2FyZU9yQXBwVXBkYXRlUmVxdWlyZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmlybXdhcmVPckFwcFVwZGF0ZVJlcXVpcmVkIiksdC5Ob0RCUGF0aEdpdmVuPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vREJQYXRoR2l2ZW4iKSx0LkRCV3JvbmdQYXNzd29yZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEQldyb25nUGFzc3dvcmQiKSx0LkRCTm90UmVzZXQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiREJOb3RSZXNldCIpO2Z1bmN0aW9uIGkoZSx0KXt0aGlzLm5hbWU9IlRyYW5zcG9ydEVycm9yIix0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrLHRoaXMuaWQ9dH1pLnByb3RvdHlwZT1uZXcgRXJyb3IsKDAsbi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcikoIlRyYW5zcG9ydEVycm9yIixmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGkoZS5tZXNzYWdlLGUuaWQpfSk7dmFyIG89dC5TdGF0dXNDb2Rlcz17UElOX1JFTUFJTklOR19BVFRFTVBUUzoyNTUzNixJTkNPUlJFQ1RfTEVOR1RIOjI2MzY4LENPTU1BTkRfSU5DT01QQVRJQkxFX0ZJTEVfU1RSVUNUVVJFOjI3MDA5LFNFQ1VSSVRZX1NUQVRVU19OT1RfU0FUSVNGSUVEOjI3MDEwLENPTkRJVElPTlNfT0ZfVVNFX05PVF9TQVRJU0ZJRUQ6MjcwMTMsSU5DT1JSRUNUX0RBVEE6MjcyNjQsTk9UX0VOT1VHSF9NRU1PUllfU1BBQ0U6MjcyNjgsUkVGRVJFTkNFRF9EQVRBX05PVF9GT1VORDoyNzI3MixGSUxFX0FMUkVBRFlfRVhJU1RTOjI3MjczLElOQ09SUkVDVF9QMV9QMjoyNzM5MixJTlNfTk9UX1NVUFBPUlRFRDoyNzkwNCxDTEFfTk9UX1NVUFBPUlRFRDoyODE2MCxURUNITklDQUxfUFJPQkxFTToyODQxNixPSzozNjg2NCxNRU1PUllfUFJPQkxFTTozNzQ0MCxOT19FRl9TRUxFQ1RFRDozNzg4OCxJTlZBTElEX09GRlNFVDozNzg5MCxGSUxFX05PVF9GT1VORDozNzg5MixJTkNPTlNJU1RFTlRfRklMRTozNzg5NixBTEdPUklUSE1fTk9UX1NVUFBPUlRFRDozODAyMCxJTlZBTElEX0tDVjozODAyMSxDT0RFX05PVF9JTklUSUFMSVpFRDozODkxNCxBQ0NFU1NfQ09ORElUSU9OX05PVF9GVUxGSUxMRUQ6Mzg5MTYsQ09OVFJBRElDVElPTl9TRUNSRVRfQ09ERV9TVEFUVVM6Mzg5MjAsQ09OVFJBRElDVElPTl9JTlZBTElEQVRJT046Mzg5MjgsQ09ERV9CTE9DS0VEOjM4OTc2LE1BWF9WQUxVRV9SRUFDSEVEOjM4OTkyLEdQX0FVVEhfRkFJTEVEOjI1MzQ0LExJQ0VOU0lORzoyODQ4MixIQUxURUQ6Mjg1ODZ9O2Z1bmN0aW9uIGEoZSl7c3dpdGNoKGUpe2Nhc2UgMjYzNjg6cmV0dXJuIkluY29ycmVjdCBsZW5ndGgiO2Nhc2UgMjcwMTA6cmV0dXJuIlNlY3VyaXR5IG5vdCBzYXRpc2ZpZWQgKGRvbmdsZSBsb2NrZWQgb3IgaGF2ZSBpbnZhbGlkIGFjY2VzcyByaWdodHMpIjtjYXNlIDI3MDEzOnJldHVybiJDb25kaXRpb24gb2YgdXNlIG5vdCBzYXRpc2ZpZWQgKGRlbmllZCBieSB0aGUgdXNlcj8pIjtjYXNlIDI3MjY0OnJldHVybiJJbnZhbGlkIGRhdGEgcmVjZWl2ZWQiO2Nhc2UgMjczOTI6cmV0dXJuIkludmFsaWQgcGFyYW1ldGVyIHJlY2VpdmVkIn1pZigyODQxNjw9ZSYmZTw9Mjg2NzEpcmV0dXJuIkludGVybmFsIGVycm9yLCBwbGVhc2UgcmVwb3J0In1mdW5jdGlvbiBzKGUpe3RoaXMubmFtZT0iVHJhbnNwb3J0U3RhdHVzRXJyb3IiO3ZhciB0PU9iamVjdC5rZXlzKG8pLmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG9bdF09PT1lfSl8fCJVTktOT1dOX0VSUk9SIixyPWEoZSl8fHQsbj1lLnRvU3RyaW5nKDE2KTt0aGlzLm1lc3NhZ2U9IkxlZGdlciBkZXZpY2U6ICIrcisiICgweCIrbisiKSIsdGhpcy5zdGFjaz0obmV3IEVycm9yKS5zdGFjayx0aGlzLnN0YXR1c0NvZGU9ZSx0aGlzLnN0YXR1c1RleHQ9dH1zLnByb3RvdHlwZT1uZXcgRXJyb3IsKDAsbi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcikoIlRyYW5zcG9ydFN0YXR1c0Vycm9yIixmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHMoZS5zdGF0dXNDb2RlKX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9KSh0LHIpfTtyZXR1cm4gZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxyKSx0LnByb3RvdHlwZT1udWxsPT09cj9PYmplY3QuY3JlYXRlKHIpOihuLnByb3RvdHlwZT1yLnByb3RvdHlwZSxuZXcgbil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE3MCksbz1yKDMxKSxhPXIoODApLHM9by5zZWVkVXRpbHMuU2VlZCx1PW8ubGlicy5jcnlwdG8uc2lnbkJ5dGVzLGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIpe3ZhciBuLGk9ZS5jYWxsKHRoaXMscil8fHRoaXM7aWYoInN0cmluZyI9PT10eXBlb2YgdCluPXQ7ZWxzZXt2YXIgbz10LGE9by5lbmNyeXB0aW9uUm91bmRzO249cy5kZWNyeXB0U2VlZFBocmFzZShvLmVuY3J5cHRlZFNlZWQsby5wYXNzd29yZCxhKX1yZXR1cm4gaS5zZWVkPW5ldyBzKG4sU3RyaW5nLmZyb21DaGFyQ29kZShpLmdldE5ldHdvcmtCeXRlKCkpKSxpfXJldHVybiBuKHQsZSksdC5wcm90b3R5cGUuZ2V0U2lnblZlcnNpb25zPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuKGU9e30pW2EuU0lHTl9UWVBFLkFVVEhdPVsxXSxlW2EuU0lHTl9UWVBFLk1BVENIRVJfT1JERVJTXT1bMV0sZVthLlNJR05fVFlQRS5DUkVBVEVfT1JERVJdPVsxLDIsM10sZVthLlNJR05fVFlQRS5DQU5DRUxfT1JERVJdPVswLDFdLGVbYS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bMV0sZVthLlNJR05fVFlQRS5JU1NVRV09WzJdLGVbYS5TSUdOX1RZUEUuVFJBTlNGRVJdPVsyXSxlW2EuU0lHTl9UWVBFLlJFSVNTVUVdPVsyXSxlW2EuU0lHTl9UWVBFLkJVUk5dPVsyXSxlW2EuU0lHTl9UWVBFLkVYQ0hBTkdFXT1bMCwyXSxlW2EuU0lHTl9UWVBFLkxFQVNFXT1bMl0sZVthLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109WzJdLGVbYS5TSUdOX1RZUEUuQ1JFQVRFX0FMSUFTXT1bMl0sZVthLlNJR05fVFlQRS5NQVNTX1RSQU5TRkVSXT1bMV0sZVthLlNJR05fVFlQRS5EQVRBXT1bMV0sZVthLlNJR05fVFlQRS5TRVRfU0NSSVBUXT1bMV0sZVthLlNJR05fVFlQRS5TUE9OU09SU0hJUF09WzFdLGVbYS5TSUdOX1RZUEUuU0VUX0FTU0VUX1NDUklQVF09WzFdLGVbYS5TSUdOX1RZUEUuU0NSSVBUX0lOVk9DQVRJT05dPVsxXSxlfSx0LnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5rZXlQYWlyLnB1YmxpY0tleSl9LHQucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5rZXlQYWlyLnByaXZhdGVLZXkpfSx0LnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNlZWQuYWRkcmVzcyl9LHQucHJvdG90eXBlLmdldFNlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5waHJhc2UpfSx0LnByb3RvdHlwZS5zaWduUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2lnbihlKX0sdC5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3NpZ24oZSl9LHQucHJvdG90eXBlLnNpZ25PcmRlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9zaWduKGUpfSx0LnByb3RvdHlwZS5zaWduRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2lnbihlKX0sdC5wcm90b3R5cGUuX3NpZ249ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh1KHRoaXMuc2VlZC5rZXlQYWlyLGUpKX0sdC5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSx0LnR5cGU9InNlZWQiLHR9KGkuQWRhcHRlcik7dC5TZWVkQWRhcHRlcj1jfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDQ1NSksaT1yKDM5OSksbz1yKDM5Nik7IWZ1bmN0aW9uKGUpe2UuU2VlZD0ic2VlZCIsZS5XYXZlc0tlZXBlcj0id2F2ZXNLZWVwZXIiLGUuTGVkZ2VyPSJsZWRnZXIiLGUuVHJlc29yPSJ0cmVzb3IifSh0LkFkYXB0ZXJUeXBlfHwodC5BZGFwdGVyVHlwZT17fSkpLHQuYWRhcHRlclByaW9yaXR5TGlzdD1bIndhdmVzS2VlcGVyIiwibGVkZ2VyIiwidHJlc29yIiwic2VlZCJdLHQuYWRhcHRlckxpc3Q9W24uU2VlZEFkYXB0ZXIsaS5MZWRnZXJBZGFwdGVyLG8uV2F2ZXNLZWVwZXJBZGFwdGVyXX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc4KSxpPXIoNDYwKTtlLmV4cG9ydHM9cigxMTYpP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5mKGUsdCxpKDEscikpfTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz0hcigxMTYpJiYhcig4NCkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoNDU5KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDczKS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MyksaT1yKDQ1Nyksbz1yKDE5MCksYT1yKDQ2MikoInNyYyIpLHM9cig5NDQpLHU9KCIiK3MpLnNwbGl0KCJ0b1N0cmluZyIpO3IoMTUwKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSl9LChlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHI7YyYmKG8ociwibmFtZSIpfHxpKHIsIm5hbWUiLHQpKSxlW3RdIT09ciYmKGMmJihvKHIsYSl8fGkocixhLGVbdF0/IiIrZVt0XTp1LmpvaW4oU3RyaW5nKHQpKSkpLGU9PT1uP2VbdF09cjpzP2VbdF0/ZVt0XT1yOmkoZSx0LHIpOihkZWxldGUgZVt0XSxpKGUsdCxyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1thXXx8cy5jYWxsKHRoaXMpfSl9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9MCxuPU1hdGgucmFuZG9tKCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09ZT8iIjplLCIpXyIsKCsrcituKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUwKSxpPXIoNzMpLG89aVsiX19jb3JlLWpzX3NoYXJlZF9fIl18fChpWyJfX2NvcmUtanNfc2hhcmVkX18iXT17fSk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvW2VdfHwob1tlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjpuLnZlcnNpb24sbW9kZTpyKDk0NSk/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiXHhhOSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5NDYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7aWYobihlKSx2b2lkIDA9PT10KXJldHVybiBlO3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodCxyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBlLmNhbGwodCxyLG4pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZS5jYWxsKHQscixuLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5sb2cxcHx8ZnVuY3Rpb24oZSl7cmV0dXJuKGU9K2UpPi0xZS04JiZlPDFlLTg/ZS1lKmUvMjpNYXRoLmxvZygxK2UpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTY4KSxpPXIoNDYwKSxvPXIoMjgzKSxhPXIoMjc5KSxzPXIoMTkwKSx1PXIoNDU4KSxjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPXIoMTE2KT9jOmZ1bmN0aW9uKGUsdCl7aWYoZT1vKGUpLHQ9YSh0LCEwKSx1KXRyeXtyZXR1cm4gYyhlLHQpfWNhdGNoKHIpe31pZihzKGUsdCkpcmV0dXJuIGkoIW4uZi5jYWxsKGUsdCksZVt0XSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTApLGk9cigyODMpLG89cig5NzEpKCExKSxhPXIoNDY4KSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcylyIT1hJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDYzKSgia2V5cyIpLGk9cig0NjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09aShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyODIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiIT10eXBlb2YgZSYmIk51bWJlciIhPW4oZSkpdGhyb3cgVHlwZUVycm9yKHQpO3JldHVybitlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE1KSxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmaShlKT09PWV9fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciByPSJvYmplY3QiPT10eXBlb2YgdCYmdCYmdC5PYmplY3Q9PT1PYmplY3QmJnQ7ZS5leHBvcnRzPXJ9KS5jYWxsKHRoaXMscigzNCkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTIpLGk9cigxMDAyKSxvPXIoMTAwMyksYT1yKDEwMDQpLHM9cigxMDA1KSx1PXIoMTAwNik7ZnVuY3Rpb24gYyhlKXt2YXIgdD10aGlzLl9fZGF0YV9fPW5ldyBuKGUpO3RoaXMuc2l6ZT10LnNpemV9Yy5wcm90b3R5cGUuY2xlYXI9aSxjLnByb3RvdHlwZS5kZWxldGU9byxjLnByb3RvdHlwZS5nZXQ9YSxjLnByb3RvdHlwZS5oYXM9cyxjLnByb3RvdHlwZS5zZXQ9dSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0KXt2YXIgcj1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUpe3RyeXtyZXR1cm4gci5jYWxsKGUpfWNhdGNoKHQpe310cnl7cmV0dXJuIGUrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI5MiksaT1yKDQ3NSksbz1yKDI5MyksYT0xLHM9MjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsdSxjLGYpe3ZhciBsPXImYSxoPWUubGVuZ3RoLHA9dC5sZW5ndGg7aWYoaCE9cCYmIShsJiZwPmgpKXJldHVybiExO3ZhciBkPWYuZ2V0KGUpO2lmKGQmJmYuZ2V0KHQpKXJldHVybiBkPT10O3ZhciB5PS0xLGc9ITAsdj1yJnM/bmV3IG46dm9pZCAwO2ZvcihmLnNldChlLHQpLGYuc2V0KHQsZSk7Kyt5PGg7KXt2YXIgbT1lW3ldLGI9dFt5XTtpZih1KXZhciBfPWw/dShiLG0seSx0LGUsZik6dShtLGIseSxlLHQsZik7aWYodm9pZCAwIT09Xyl7aWYoXyljb250aW51ZTtnPSExO2JyZWFrfWlmKHYpe2lmKCFpKHQsZnVuY3Rpb24oZSx0KXtpZighbyh2LHQpJiYobT09PWV8fGMobSxlLHIsdSxmKSkpcmV0dXJuIHYucHVzaCh0KX0pKXtnPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1iJiYhYyhtLGIscix1LGYpKXtnPSExO2JyZWFrfX1yZXR1cm4gZi5kZWxldGUoZSksZi5kZWxldGUodCksZ319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoOysrcjxuOylpZih0KGVbcl0scixlKSlyZXR1cm4hMDtyZXR1cm4hMX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGgsaT1lLmxlbmd0aDsrK3I8bjspZVtpK3JdPXRbcl07cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPW51bGw9PWU/MDplLmxlbmd0aCxpPTAsbz1bXTsrK3I8bjspe3ZhciBhPWVbcl07dChhLHIsZSkmJihvW2krK109YSl9cmV0dXJuIG99fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNjQpLGk9cigxMDM2KSxvPXQmJiF0Lm5vZGVUeXBlJiZ0LGE9byYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxzPWEmJmEuZXhwb3J0cz09PW8/bi5CdWZmZXI6dm9pZCAwLHU9KHM/cy5pc0J1ZmZlcjp2b2lkIDApfHxpO2UuZXhwb3J0cz11fSkuY2FsbCh0aGlzLHIoMjE1KShlKSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzcpLGk9cigyOTgpLG89cigxMDM4KSxhPW8mJm8uaXNUeXBlZEFycmF5LHM9YT9pKGEpOm47ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHQocikpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIlNldCIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cigxMDQ2KTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LHIsbyxhLHMpe3ZhciB1PS0xLGM9dC5sZW5ndGg7Zm9yKG98fChvPWkpLHN8fChzPVtdKTsrK3U8Yzspe3ZhciBmPXRbdV07cj4wJiZvKGYpP3I+MT9lKGYsci0xLG8sYSxzKTpuKHMsZik6YXx8KHNbcy5sZW5ndGhdPWYpfXJldHVybiBzfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWUmJiFuKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJnJbZV09PT10JiYodm9pZCAwIT09dHx8ZSBpbiBPYmplY3QocikpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDE5Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbz0odD1uKHQsZSkpLmxlbmd0aDtudWxsIT1lJiZyPG87KWU9ZVtpKHRbcisrXSldO3JldHVybiByJiZyPT1vP2U6dm9pZCAwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOSksaT1yKDI5OSksbz1yKDEwNTIpLGE9cigxMDU1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKT9lOmkoZSx0KT9bZV06byhhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5OCksaT1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9LTEsbz1pKGUpP0FycmF5KGUubGVuZ3RoKTpbXTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXtvWysrcl09dChlLG4saSl9KSxvfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MyksaT1yKDE5Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJm4oZSx0LGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE5KSxpPXIoMTA2OSksbz1yKDEwNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvKGkoZSx0LG4pLGUrIiIpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyKSxpPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW4oT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBlKHt9LCIiLHt9KSxlfWNhdGNoKHQpe319KCk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmxlbmd0aDsrK2k8bzspe3ZhciBhPWVbaV0scz10KGEpO2lmKG51bGwhPXMmJih2b2lkIDA9PT11P3M9PT1zJiYhbihzKTpyKHMsdSkpKXZhciB1PXMsYz1hfXJldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuOyFmdW5jdGlvbihpKXsidXNlIHN0cmljdCI7dmFyIG8sYT0xZTkscz17cHJlY2lzaW9uOjIwLHJvdW5kaW5nOjQsdG9FeHBOZWc6LTcsdG9FeHBQb3M6MjEsTE4xMDoiMi4zMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDc2MDExMDE0ODg2Mjg3NzI5NzYwMzMzMjc5MDA5Njc1NzI2MDk2NzczNTI0ODAyMzU5OTcyMDUwODk1OTgyOTgzNDE5Njc3ODQwNDIyODYifSx1PSEwLGM9IltEZWNpbWFsRXJyb3JdICIsZj1jKyJJbnZhbGlkIGFyZ3VtZW50OiAiLGw9YysiRXhwb25lbnQgb3V0IG9mIHJhbmdlOiAiLGg9TWF0aC5mbG9vcixwPU1hdGgucG93LGQ9L14oXGQrKFwuXGQqKT98XC5cZCspKGVbKy1dP1xkKyk/JC9pLHk9MWU3LGc9Nyx2PWgoOTAwNzE5OTI1NDc0MDk5MS9nKSxtPXt9O2Z1bmN0aW9uIGIoZSx0KXt2YXIgcixuLGksbyxhLHMsYyxmLGw9ZS5jb25zdHJ1Y3RvcixoPWwucHJlY2lzaW9uO2lmKCFlLnN8fCF0LnMpcmV0dXJuIHQuc3x8KHQ9bmV3IGwoZSkpLHU/ayh0LGgpOnQ7aWYoYz1lLmQsZj10LmQsYT1lLmUsaT10LmUsYz1jLnNsaWNlKCksbz1hLWkpe2ZvcihvPDA/KG49YyxvPS1vLHM9Zi5sZW5ndGgpOihuPWYsaT1hLHM9Yy5sZW5ndGgpLG8+KHM9KGE9TWF0aC5jZWlsKGgvZykpPnM/YSsxOnMrMSkmJihvPXMsbi5sZW5ndGg9MSksbi5yZXZlcnNlKCk7by0tOyluLnB1c2goMCk7bi5yZXZlcnNlKCl9Zm9yKChzPWMubGVuZ3RoKS0obz1mLmxlbmd0aCk8MCYmKG89cyxuPWYsZj1jLGM9bikscj0wO287KXI9KGNbLS1vXT1jW29dK2Zbb10rcikveXwwLGNbb10lPXk7Zm9yKHImJihjLnVuc2hpZnQociksKytpKSxzPWMubGVuZ3RoOzA9PWNbLS1zXTspYy5wb3AoKTtyZXR1cm4gdC5kPWMsdC5lPWksdT9rKHQsaCk6dH1mdW5jdGlvbiBfKGUsdCxyKXtpZihlIT09fn5lfHxlPHR8fGU+cil0aHJvdyBFcnJvcihmK2UpfWZ1bmN0aW9uIFMoZSl7dmFyIHQscixuLGk9ZS5sZW5ndGgtMSxvPSIiLGE9ZVswXTtpZihpPjApe2ZvcihvKz1hLHQ9MTt0PGk7dCsrKW49ZVt0XSsiIiwocj1nLW4ubGVuZ3RoKSYmKG8rPUMocikpLG8rPW47YT1lW3RdLChyPWctKG49YSsiIikubGVuZ3RoKSYmKG8rPUMocikpfWVsc2UgaWYoMD09PWEpcmV0dXJuIjAiO2Zvcig7YSUxMD09PTA7KWEvPTEwO3JldHVybiBvK2F9bS5hYnNvbHV0ZVZhbHVlPW0uYWJzPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIGUucyYmKGUucz0xKSxlfSxtLmNvbXBhcmVkVG89bS5jbXA9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksbz10aGlzO2lmKGU9bmV3IG8uY29uc3RydWN0b3IoZSksby5zIT09ZS5zKXJldHVybiBvLnN8fC1lLnM7aWYoby5lIT09ZS5lKXJldHVybiBvLmU+ZS5lXm8uczwwPzE6LTE7Zm9yKHQ9MCxyPShuPW8uZC5sZW5ndGgpPChpPWUuZC5sZW5ndGgpP246aTt0PHI7Kyt0KWlmKG8uZFt0XSE9PWUuZFt0XSlyZXR1cm4gby5kW3RdPmUuZFt0XV5vLnM8MD8xOi0xO3JldHVybiBuPT09aT8wOm4+aV5vLnM8MD8xOi0xfSxtLmRlY2ltYWxQbGFjZXM9bS5kcD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmQubGVuZ3RoLTEscj0odC1lLmUpKmc7aWYodD1lLmRbdF0pZm9yKDt0JTEwPT0wO3QvPTEwKXItLTtyZXR1cm4gcjwwPzA6cn0sbS5kaXZpZGVkQnk9bS5kaXY9ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyxuZXcgdGhpcy5jb25zdHJ1Y3RvcihlKSl9LG0uZGl2aWRlZFRvSW50ZWdlckJ5PW0uaWRpdj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbnN0cnVjdG9yO3JldHVybiBrKEUodGhpcyxuZXcgdChlKSwwLDEpLHQucHJlY2lzaW9uKX0sbS5lcXVhbHM9bS5lcT1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5jbXAoZSl9LG0uZXhwb25lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzKX0sbS5ncmVhdGVyVGhhbj1tLmd0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT4wfSxtLmdyZWF0ZXJUaGFuT3JFcXVhbFRvPW0uZ3RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT49MH0sbS5pc0ludGVnZXI9bS5pc2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmU+dGhpcy5kLmxlbmd0aC0yfSxtLmlzTmVnYXRpdmU9bS5pc25lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnM8MH0sbS5pc1Bvc2l0aXZlPW0uaXNwb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zPjB9LG0uaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnN9LG0ubGVzc1RoYW49bS5sdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MH0sbS5sZXNzVGhhbk9yRXF1YWxUbz1tLmx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MX0sbS5sb2dhcml0aG09bS5sb2c9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5jb25zdHJ1Y3RvcixpPW4ucHJlY2lzaW9uLGE9aSs1O2lmKHZvaWQgMD09PWUpZT1uZXcgbigxMCk7ZWxzZSBpZigoZT1uZXcgbihlKSkuczwxfHxlLmVxKG8pKXRocm93IEVycm9yKGMrIk5hTiIpO2lmKHIuczwxKXRocm93IEVycm9yKGMrKHIucz8iTmFOIjoiLUluZmluaXR5IikpO3JldHVybiByLmVxKG8pP25ldyBuKDApOih1PSExLHQ9RSh4KHIsYSkseChlLGEpLGEpLHU9ITAsayh0LGkpKX0sbS5taW51cz1tLnN1Yj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlPW5ldyB0LmNvbnN0cnVjdG9yKGUpLHQucz09ZS5zP08odCxlKTpiKHQsKGUucz0tZS5zLGUpKX0sbS5tb2R1bG89bS5tb2Q9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5jb25zdHJ1Y3RvcixpPW4ucHJlY2lzaW9uO2lmKCEoZT1uZXcgbihlKSkucyl0aHJvdyBFcnJvcihjKyJOYU4iKTtyZXR1cm4gci5zPyh1PSExLHQ9RShyLGUsMCwxKS50aW1lcyhlKSx1PSEwLHIubWludXModCkpOmsobmV3IG4ociksaSl9LG0ubmF0dXJhbEV4cG9uZW50aWFsPW0uZXhwPWZ1bmN0aW9uKCl7cmV0dXJuIHcodGhpcyl9LG0ubmF0dXJhbExvZ2FyaXRobT1tLmxuPWZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyl9LG0ubmVnYXRlZD1tLm5lZz1mdW5jdGlvbigpe3ZhciBlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiBlLnM9LWUuc3x8MCxlfSxtLnBsdXM9bS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZT1uZXcgdC5jb25zdHJ1Y3RvcihlKSx0LnM9PWUucz9iKHQsZSk6Tyh0LChlLnM9LWUucyxlKSl9LG0ucHJlY2lzaW9uPW0uc2Q9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGk9dGhpcztpZih2b2lkIDAhPT1lJiZlIT09ISFlJiYxIT09ZSYmMCE9PWUpdGhyb3cgRXJyb3IoZitlKTtpZih0PVQoaSkrMSxyPShuPWkuZC5sZW5ndGgtMSkqZysxLG49aS5kW25dKXtmb3IoO24lMTA9PTA7bi89MTApci0tO2ZvcihuPWkuZFswXTtuPj0xMDtuLz0xMClyKyt9cmV0dXJuIGUmJnQ+cj90OnJ9LG0uc3F1YXJlUm9vdD1tLnNxcnQ9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixpLG8sYSxzPXRoaXMsZj1zLmNvbnN0cnVjdG9yO2lmKHMuczwxKXtpZighcy5zKXJldHVybiBuZXcgZigwKTt0aHJvdyBFcnJvcihjKyJOYU4iKX1mb3IoZT1UKHMpLHU9ITEsMD09KGk9TWF0aC5zcXJ0KCtzKSl8fGk9PTEvMD8oKCh0PVMocy5kKSkubGVuZ3RoK2UpJTI9PTAmJih0Kz0iMCIpLGk9TWF0aC5zcXJ0KHQpLGU9aCgoZSsxKS8yKS0oZTwwfHxlJTIpLG49bmV3IGYodD1pPT0xLzA/IjFlIitlOih0PWkudG9FeHBvbmVudGlhbCgpKS5zbGljZSgwLHQuaW5kZXhPZigiZSIpKzEpK2UpKTpuPW5ldyBmKGkudG9TdHJpbmcoKSksaT1hPShyPWYucHJlY2lzaW9uKSszOzspaWYobj0obz1uKS5wbHVzKEUocyxvLGErMikpLnRpbWVzKC41KSxTKG8uZCkuc2xpY2UoMCxhKT09PSh0PVMobi5kKSkuc2xpY2UoMCxhKSl7aWYodD10LnNsaWNlKGEtMyxhKzEpLGk9PWEmJiI0OTk5Ij09dCl7aWYoayhvLHIrMSwwKSxvLnRpbWVzKG8pLmVxKHMpKXtuPW87YnJlYWt9fWVsc2UgaWYoIjk5OTkiIT10KWJyZWFrO2ErPTR9cmV0dXJuIHU9ITAsayhuLHIpfSxtLnRpbWVzPW0ubXVsPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzLGMsZixsPXRoaXMsaD1sLmNvbnN0cnVjdG9yLHA9bC5kLGQ9KGU9bmV3IGgoZSkpLmQ7aWYoIWwuc3x8IWUucylyZXR1cm4gbmV3IGgoMCk7Zm9yKGUucyo9bC5zLHI9bC5lK2UuZSwoYz1wLmxlbmd0aCk8KGY9ZC5sZW5ndGgpJiYobz1wLHA9ZCxkPW8sYT1jLGM9ZixmPWEpLG89W10sbj1hPWMrZjtuLS07KW8ucHVzaCgwKTtmb3Iobj1mOy0tbj49MDspe2Zvcih0PTAsaT1jK247aT5uOylzPW9baV0rZFtuXSpwW2ktbi0xXSt0LG9baS0tXT1zJXl8MCx0PXMveXwwO29baV09KG9baV0rdCkleXwwfWZvcig7IW9bLS1hXTspby5wb3AoKTtyZXR1cm4gdD8rK3I6by5zaGlmdCgpLGUuZD1vLGUuZT1yLHU/ayhlLGgucHJlY2lzaW9uKTplfSxtLnRvRGVjaW1hbFBsYWNlcz1tLnRvZHA9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49ci5jb25zdHJ1Y3RvcjtyZXR1cm4gcj1uZXcgbihyKSx2b2lkIDA9PT1lP3I6KF8oZSwwLGEpLHZvaWQgMD09PXQ/dD1uLnJvdW5kaW5nOl8odCwwLDgpLGsocixlK1QocikrMSx0KSl9LG0udG9FeHBvbmVudGlhbD1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcyxpPW4uY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWU/cj1OKG4sITApOihfKGUsMCxhKSx2b2lkIDA9PT10P3Q9aS5yb3VuZGluZzpfKHQsMCw4KSxyPU4obj1rKG5ldyBpKG4pLGUrMSx0KSwhMCxlKzEpKSxyfSxtLnRvRml4ZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9dGhpcyxvPWkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWU/TihpKTooXyhlLDAsYSksdm9pZCAwPT09dD90PW8ucm91bmRpbmc6Xyh0LDAsOCkscj1OKChuPWsobmV3IG8oaSksZStUKGkpKzEsdCkpLmFicygpLCExLGUrVChuKSsxKSxpLmlzbmVnKCkmJiFpLmlzWmVybygpPyItIityOnIpfSxtLnRvSW50ZWdlcj1tLnRvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY29uc3RydWN0b3I7cmV0dXJuIGsobmV3IHQoZSksVChlKSsxLHQucm91bmRpbmcpfSxtLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuK3RoaXN9LG0udG9Qb3dlcj1tLnBvdz1mdW5jdGlvbihlKXt2YXIgdCxyLG4saSxhLHMsZj10aGlzLGw9Zi5jb25zdHJ1Y3RvcixwPSsoZT1uZXcgbChlKSk7aWYoIWUucylyZXR1cm4gbmV3IGwobyk7aWYoIShmPW5ldyBsKGYpKS5zKXtpZihlLnM8MSl0aHJvdyBFcnJvcihjKyJJbmZpbml0eSIpO3JldHVybiBmfWlmKGYuZXEobykpcmV0dXJuIGY7aWYobj1sLnByZWNpc2lvbixlLmVxKG8pKXJldHVybiBrKGYsbik7aWYocz0odD1lLmUpPj0ocj1lLmQubGVuZ3RoLTEpLGE9Zi5zLHMpe2lmKChyPXA8MD8tcDpwKTw9OTAwNzE5OTI1NDc0MDk5MSl7Zm9yKGk9bmV3IGwobyksdD1NYXRoLmNlaWwobi9nKzQpLHU9ITE7ciUyJiZQKChpPWkudGltZXMoZikpLmQsdCksMCE9PShyPWgoci8yKSk7KVAoKGY9Zi50aW1lcyhmKSkuZCx0KTtyZXR1cm4gdT0hMCxlLnM8MD9uZXcgbChvKS5kaXYoaSk6ayhpLG4pfX1lbHNlIGlmKGE8MCl0aHJvdyBFcnJvcihjKyJOYU4iKTtyZXR1cm4gYT1hPDAmJjEmZS5kW01hdGgubWF4KHQscildPy0xOjEsZi5zPTEsdT0hMSxpPWUudGltZXMoeChmLG4rMTIpKSx1PSEwLChpPXcoaSkpLnM9YSxpfSxtLnRvUHJlY2lzaW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpPXRoaXMsbz1pLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT1lP249TihpLChyPVQoaSkpPD1vLnRvRXhwTmVnfHxyPj1vLnRvRXhwUG9zKTooXyhlLDEsYSksdm9pZCAwPT09dD90PW8ucm91bmRpbmc6Xyh0LDAsOCksbj1OKGk9ayhuZXcgbyhpKSxlLHQpLGU8PShyPVQoaSkpfHxyPD1vLnRvRXhwTmVnLGUpKSxufSxtLnRvU2lnbmlmaWNhbnREaWdpdHM9bS50b3NkPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09ZT8oZT1yLnByZWNpc2lvbix0PXIucm91bmRpbmcpOihfKGUsMSxhKSx2b2lkIDA9PT10P3Q9ci5yb3VuZGluZzpfKHQsMCw4KSksayhuZXcgcih0aGlzKSxlLHQpfSxtLnRvU3RyaW5nPW0udmFsdWVPZj1tLnZhbD1tLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1UKGUpLHI9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gTihlLHQ8PXIudG9FeHBOZWd8fHQ+PXIudG9FeHBQb3MpfTt2YXIgRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgcixuPTAsaT1lLmxlbmd0aDtmb3IoZT1lLnNsaWNlKCk7aS0tOylyPWVbaV0qdCtuLGVbaV09ciV5fDAsbj1yL3l8MDtyZXR1cm4gbiYmZS51bnNoaWZ0KG4pLGV9ZnVuY3Rpb24gdChlLHQscixuKXt2YXIgaSxvO2lmKHIhPW4pbz1yPm4/MTotMTtlbHNlIGZvcihpPW89MDtpPHI7aSsrKWlmKGVbaV0hPXRbaV0pe289ZVtpXT50W2ldPzE6LTE7YnJlYWt9cmV0dXJuIG99ZnVuY3Rpb24gcihlLHQscil7Zm9yKHZhciBuPTA7ci0tOyllW3JdLT1uLG49ZVtyXTx0W3JdPzE6MCxlW3JdPW4qeStlW3JdLXRbcl07Zm9yKDshZVswXSYmZS5sZW5ndGg+MTspZS5zaGlmdCgpfXJldHVybiBmdW5jdGlvbihuLGksbyxhKXt2YXIgcyx1LGYsbCxoLHAsZCx2LG0sYixfLFMsRSx3LEEsQyx4LEksTz1uLmNvbnN0cnVjdG9yLE49bi5zPT1pLnM/MTotMSxQPW4uZCxSPWkuZDtpZighbi5zKXJldHVybiBuZXcgTyhuKTtpZighaS5zKXRocm93IEVycm9yKGMrIkRpdmlzaW9uIGJ5IHplcm8iKTtmb3IodT1uLmUtaS5lLHg9Ui5sZW5ndGgsQT1QLmxlbmd0aCx2PShkPW5ldyBPKE4pKS5kPVtdLGY9MDtSW2ZdPT0oUFtmXXx8MCk7KSsrZjtpZihSW2ZdPihQW2ZdfHwwKSYmLS11LChTPW51bGw9PW8/bz1PLnByZWNpc2lvbjphP28rKFQobiktVChpKSkrMTpvKTwwKXJldHVybiBuZXcgTygwKTtpZihTPVMvZysyfDAsZj0wLDE9PXgpZm9yKGw9MCxSPVJbMF0sUysrOyhmPEF8fGwpJiZTLS07ZisrKUU9bCp5KyhQW2ZdfHwwKSx2W2ZdPUUvUnwwLGw9RSVSfDA7ZWxzZXtmb3IoKGw9eS8oUlswXSsxKXwwKT4xJiYoUj1lKFIsbCksUD1lKFAsbCkseD1SLmxlbmd0aCxBPVAubGVuZ3RoKSx3PXgsYj0obT1QLnNsaWNlKDAseCkpLmxlbmd0aDtiPHg7KW1bYisrXT0wOyhJPVIuc2xpY2UoKSkudW5zaGlmdCgwKSxDPVJbMF0sUlsxXT49eS8yJiYrK0M7ZG97bD0wLChzPXQoUixtLHgsYikpPDA/KF89bVswXSx4IT1iJiYoXz1fKnkrKG1bMV18fDApKSwobD1fL0N8MCk+MT8obD49eSYmKGw9eS0xKSwxPT0ocz10KGg9ZShSLGwpLG0scD1oLmxlbmd0aCxiPW0ubGVuZ3RoKSkmJihsLS0scihoLHg8cD9JOlIscCkpKTooMD09bCYmKHM9bD0xKSxoPVIuc2xpY2UoKSksKHA9aC5sZW5ndGgpPGImJmgudW5zaGlmdCgwKSxyKG0saCxiKSwtMT09cyYmKHM9dChSLG0seCxiPW0ubGVuZ3RoKSk8MSYmKGwrKyxyKG0seDxiP0k6UixiKSksYj1tLmxlbmd0aCk6MD09PXMmJihsKyssbT1bMF0pLHZbZisrXT1sLHMmJm1bMF0=",
"2020.01.10 15:21": "base64:cmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlR2VudWluZVNvY2tldEVhcmx5Q2xvc2UiKSx0LkRldmljZU5vdEdlbnVpbmVFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VOb3RHZW51aW5lIiksdC5EZXZpY2VPbkRhc2hib2FyZEV4cGVjdGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZU9uRGFzaGJvYXJkRXhwZWN0ZWQiKSx0LkRldmljZU9uRGFzaGJvYXJkVW5leHBlY3RlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VPbkRhc2hib2FyZFVuZXhwZWN0ZWQiKSx0LkRldmljZUluT1NVRXhwZWN0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlSW5PU1VFeHBlY3RlZCIpLHQuRGV2aWNlSGFsdGVkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZUhhbHRlZCIpLHQuRGV2aWNlTmFtZUludmFsaWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlTmFtZUludmFsaWQiKSx0LkRldmljZVNvY2tldEZhaWw9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRGV2aWNlU29ja2V0RmFpbCIpLHQuRGV2aWNlU29ja2V0Tm9CdWxrU3RhdHVzPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRldmljZVNvY2tldE5vQnVsa1N0YXR1cyIpLHQuRGlzY29ubmVjdGVkRGV2aWNlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRpc2Nvbm5lY3RlZERldmljZSIpLHQuRGlzY29ubmVjdGVkRGV2aWNlRHVyaW5nT3BlcmF0aW9uPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkRpc2Nvbm5lY3RlZERldmljZUR1cmluZ09wZXJhdGlvbiIpLHQuRW5wb2ludENvbmZpZ0Vycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkVucG9pbnRDb25maWciKSx0LkV0aEFwcFBsZWFzZUVuYWJsZUNvbnRyYWN0RGF0YT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJFdGhBcHBQbGVhc2VFbmFibGVDb250cmFjdERhdGEiKSx0LkZlZUVzdGltYXRpb25GYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmVlRXN0aW1hdGlvbkZhaWxlZCIpLHQuSGFyZFJlc2V0RmFpbD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJIYXJkUmVzZXRGYWlsIiksdC5JbnZhbGlkQWRkcmVzcz0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJJbnZhbGlkQWRkcmVzcyIpLHQuSW52YWxpZEFkZHJlc3NCZWNhdXNlRGVzdGluYXRpb25Jc0Fsc29Tb3VyY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiSW52YWxpZEFkZHJlc3NCZWNhdXNlRGVzdGluYXRpb25Jc0Fsc29Tb3VyY2UiKSx0LkxhdGVzdE1DVUluc3RhbGxlZEVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxhdGVzdE1DVUluc3RhbGxlZEVycm9yIiksdC5Vbmtub3duTUNVPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVua25vd25NQ1UiKSx0LkxlZGdlckFQSUVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxlZGdlckFQSUVycm9yIiksdC5MZWRnZXJBUElFcnJvcldpdGhNZXNzYWdlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkxlZGdlckFQSUVycm9yV2l0aE1lc3NhZ2UiKSx0LkxlZGdlckFQSU5vdEF2YWlsYWJsZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJMZWRnZXJBUElOb3RBdmFpbGFibGUiKSx0Lk1hbmFnZXJBcHBBbHJlYWR5SW5zdGFsbGVkRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlckFwcEFscmVhZHlJbnN0YWxsZWQiKSx0Lk1hbmFnZXJBcHBSZWx5T25CVENFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJNYW5hZ2VyQXBwUmVseU9uQlRDIiksdC5NYW5hZ2VyRGV2aWNlTG9ja2VkRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlckRldmljZUxvY2tlZCIpLHQuTWFuYWdlckZpcm13YXJlTm90RW5vdWdoU3BhY2VFcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJNYW5hZ2VyRmlybXdhcmVOb3RFbm91Z2hTcGFjZSIpLHQuTWFuYWdlck5vdEVub3VnaFNwYWNlRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTWFuYWdlck5vdEVub3VnaFNwYWNlIiksdC5NYW5hZ2VyVW5pbnN0YWxsQlRDRGVwPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk1hbmFnZXJVbmluc3RhbGxCVENEZXAiKSx0Lk5ldHdvcmtEb3duPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5ldHdvcmtEb3duIiksdC5Ob0FkZHJlc3Nlc0ZvdW5kPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vQWRkcmVzc2VzRm91bmQiKSx0Lk5vdEVub3VnaEJhbGFuY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm90RW5vdWdoQmFsYW5jZSIpLHQuTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm90RW5vdWdoQmFsYW5jZUJlY2F1c2VEZXN0aW5hdGlvbk5vdENyZWF0ZWQiKSx0Lk5vQWNjZXNzVG9DYW1lcmE9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTm9BY2Nlc3NUb0NhbWVyYSIpLHQuTm90RW5vdWdoR2FzPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vdEVub3VnaEdhcyIpLHQuUGFzc3dvcmRzRG9udE1hdGNoRXJyb3I9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiUGFzc3dvcmRzRG9udE1hdGNoIiksdC5QYXNzd29yZEluY29ycmVjdEVycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlBhc3N3b3JkSW5jb3JyZWN0IiksdC5UaW1lb3V0VGFnZ2VkPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlRpbWVvdXRUYWdnZWQiKSx0LlVuZXhwZWN0ZWRCb290bG9hZGVyPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVuZXhwZWN0ZWRCb290bG9hZGVyIiksdC5VcGRhdGVZb3VyQXBwPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlVwZGF0ZVlvdXJBcHAiKSx0LlVzZXJSZWZ1c2VkRGV2aWNlTmFtZUNoYW5nZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJVc2VyUmVmdXNlZERldmljZU5hbWVDaGFuZ2UiKSx0LlVzZXJSZWZ1c2VkQWRkcmVzcz0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJVc2VyUmVmdXNlZEFkZHJlc3MiKSx0LlVzZXJSZWZ1c2VkRmlybXdhcmVVcGRhdGU9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRGaXJtd2FyZVVwZGF0ZSIpLHQuVXNlclJlZnVzZWRBbGxvd01hbmFnZXI9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRBbGxvd01hbmFnZXIiKSx0LlVzZXJSZWZ1c2VkT25EZXZpY2U9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVXNlclJlZnVzZWRPbkRldmljZSIpLHQuVHJhbnNwb3J0T3BlblVzZXJDYW5jZWxsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiVHJhbnNwb3J0T3BlblVzZXJDYW5jZWxsZWQiKSx0LlRyYW5zcG9ydEludGVyZmFjZU5vdEF2YWlsYWJsZT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJUcmFuc3BvcnRJbnRlcmZhY2VOb3RBdmFpbGFibGUiKSx0LkRldmljZVNob3VsZFN0YXlJbkFwcD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEZXZpY2VTaG91bGRTdGF5SW5BcHAiKSx0LldlYnNvY2tldENvbm5lY3Rpb25FcnJvcj0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJXZWJzb2NrZXRDb25uZWN0aW9uRXJyb3IiKSx0LldlYnNvY2tldENvbm5lY3Rpb25GYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiV2Vic29ja2V0Q29ubmVjdGlvbkZhaWxlZCIpLHQuV3JvbmdEZXZpY2VGb3JBY2NvdW50PSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIldyb25nRGV2aWNlRm9yQWNjb3VudCIpLHQuV3JvbmdBcHBGb3JDdXJyZW5jeT0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJXcm9uZ0FwcEZvckN1cnJlbmN5IiksdC5FVEhBZGRyZXNzTm9uRUlQPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkVUSEFkZHJlc3NOb25FSVAiKSx0LkNhbnRTY2FuUVJDb2RlPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIkNhbnRTY2FuUVJDb2RlIiksdC5GZWVOb3RMb2FkZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmVlTm90TG9hZGVkIiksdC5GZWVSZXF1aXJlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJGZWVSZXF1aXJlZCIpLHQuU3luY0Vycm9yPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIlN5bmNFcnJvciIpLHQuUGFpcmluZ0ZhaWxlZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJQYWlyaW5nRmFpbGVkIiksdC5HZW51aW5lQ2hlY2tGYWlsZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiR2VudWluZUNoZWNrRmFpbGVkIiksdC5MZWRnZXJBUEk0eHg9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTGVkZ2VyQVBJNHh4IiksdC5MZWRnZXJBUEk1eHg9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiTGVkZ2VyQVBJNXh4IiksdC5GaXJtd2FyZU9yQXBwVXBkYXRlUmVxdWlyZWQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiRmlybXdhcmVPckFwcFVwZGF0ZVJlcXVpcmVkIiksdC5Ob0RCUGF0aEdpdmVuPSgwLG4uY3JlYXRlQ3VzdG9tRXJyb3JDbGFzcykoIk5vREJQYXRoR2l2ZW4iKSx0LkRCV3JvbmdQYXNzd29yZD0oMCxuLmNyZWF0ZUN1c3RvbUVycm9yQ2xhc3MpKCJEQldyb25nUGFzc3dvcmQiKSx0LkRCTm90UmVzZXQ9KDAsbi5jcmVhdGVDdXN0b21FcnJvckNsYXNzKSgiREJOb3RSZXNldCIpO2Z1bmN0aW9uIGkoZSx0KXt0aGlzLm5hbWU9IlRyYW5zcG9ydEVycm9yIix0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrLHRoaXMuaWQ9dH1pLnByb3RvdHlwZT1uZXcgRXJyb3IsKDAsbi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcikoIlRyYW5zcG9ydEVycm9yIixmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGkoZS5tZXNzYWdlLGUuaWQpfSk7dmFyIG89dC5TdGF0dXNDb2Rlcz17UElOX1JFTUFJTklOR19BVFRFTVBUUzoyNTUzNixJTkNPUlJFQ1RfTEVOR1RIOjI2MzY4LENPTU1BTkRfSU5DT01QQVRJQkxFX0ZJTEVfU1RSVUNUVVJFOjI3MDA5LFNFQ1VSSVRZX1NUQVRVU19OT1RfU0FUSVNGSUVEOjI3MDEwLENPTkRJVElPTlNfT0ZfVVNFX05PVF9TQVRJU0ZJRUQ6MjcwMTMsSU5DT1JSRUNUX0RBVEE6MjcyNjQsTk9UX0VOT1VHSF9NRU1PUllfU1BBQ0U6MjcyNjgsUkVGRVJFTkNFRF9EQVRBX05PVF9GT1VORDoyNzI3MixGSUxFX0FMUkVBRFlfRVhJU1RTOjI3MjczLElOQ09SUkVDVF9QMV9QMjoyNzM5MixJTlNfTk9UX1NVUFBPUlRFRDoyNzkwNCxDTEFfTk9UX1NVUFBPUlRFRDoyODE2MCxURUNITklDQUxfUFJPQkxFTToyODQxNixPSzozNjg2NCxNRU1PUllfUFJPQkxFTTozNzQ0MCxOT19FRl9TRUxFQ1RFRDozNzg4OCxJTlZBTElEX09GRlNFVDozNzg5MCxGSUxFX05PVF9GT1VORDozNzg5MixJTkNPTlNJU1RFTlRfRklMRTozNzg5NixBTEdPUklUSE1fTk9UX1NVUFBPUlRFRDozODAyMCxJTlZBTElEX0tDVjozODAyMSxDT0RFX05PVF9JTklUSUFMSVpFRDozODkxNCxBQ0NFU1NfQ09ORElUSU9OX05PVF9GVUxGSUxMRUQ6Mzg5MTYsQ09OVFJBRElDVElPTl9TRUNSRVRfQ09ERV9TVEFUVVM6Mzg5MjAsQ09OVFJBRElDVElPTl9JTlZBTElEQVRJT046Mzg5MjgsQ09ERV9CTE9DS0VEOjM4OTc2LE1BWF9WQUxVRV9SRUFDSEVEOjM4OTkyLEdQX0FVVEhfRkFJTEVEOjI1MzQ0LExJQ0VOU0lORzoyODQ4MixIQUxURUQ6Mjg1ODZ9O2Z1bmN0aW9uIGEoZSl7c3dpdGNoKGUpe2Nhc2UgMjYzNjg6cmV0dXJuIkluY29ycmVjdCBsZW5ndGgiO2Nhc2UgMjcwMTA6cmV0dXJuIlNlY3VyaXR5IG5vdCBzYXRpc2ZpZWQgKGRvbmdsZSBsb2NrZWQgb3IgaGF2ZSBpbnZhbGlkIGFjY2VzcyByaWdodHMpIjtjYXNlIDI3MDEzOnJldHVybiJDb25kaXRpb24gb2YgdXNlIG5vdCBzYXRpc2ZpZWQgKGRlbmllZCBieSB0aGUgdXNlcj8pIjtjYXNlIDI3MjY0OnJldHVybiJJbnZhbGlkIGRhdGEgcmVjZWl2ZWQiO2Nhc2UgMjczOTI6cmV0dXJuIkludmFsaWQgcGFyYW1ldGVyIHJlY2VpdmVkIn1pZigyODQxNjw9ZSYmZTw9Mjg2NzEpcmV0dXJuIkludGVybmFsIGVycm9yLCBwbGVhc2UgcmVwb3J0In1mdW5jdGlvbiBzKGUpe3RoaXMubmFtZT0iVHJhbnNwb3J0U3RhdHVzRXJyb3IiO3ZhciB0PU9iamVjdC5rZXlzKG8pLmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG9bdF09PT1lfSl8fCJVTktOT1dOX0VSUk9SIixyPWEoZSl8fHQsbj1lLnRvU3RyaW5nKDE2KTt0aGlzLm1lc3NhZ2U9IkxlZGdlciBkZXZpY2U6ICIrcisiICgweCIrbisiKSIsdGhpcy5zdGFjaz0obmV3IEVycm9yKS5zdGFjayx0aGlzLnN0YXR1c0NvZGU9ZSx0aGlzLnN0YXR1c1RleHQ9dH1zLnByb3RvdHlwZT1uZXcgRXJyb3IsKDAsbi5hZGRDdXN0b21FcnJvckRlc2VyaWFsaXplcikoIlRyYW5zcG9ydFN0YXR1c0Vycm9yIixmdW5jdGlvbihlKXtyZXR1cm4gbmV3IHMoZS5zdGF0dXNDb2RlKX0pfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuKGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9KSh0LHIpfTtyZXR1cm4gZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWUodCxyKSx0LnByb3RvdHlwZT1udWxsPT09cj9PYmplY3QuY3JlYXRlKHIpOihuLnByb3RvdHlwZT1yLnByb3RvdHlwZSxuZXcgbil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE3MCksbz1yKDMxKSxhPXIoODApLHM9by5zZWVkVXRpbHMuU2VlZCx1PW8ubGlicy5jcnlwdG8uc2lnbkJ5dGVzLGM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIpe3ZhciBuLGk9ZS5jYWxsKHRoaXMscil8fHRoaXM7aWYoInN0cmluZyI9PT10eXBlb2YgdCluPXQ7ZWxzZXt2YXIgbz10LGE9by5lbmNyeXB0aW9uUm91bmRzO249cy5kZWNyeXB0U2VlZFBocmFzZShvLmVuY3J5cHRlZFNlZWQsby5wYXNzd29yZCxhKX1yZXR1cm4gaS5zZWVkPW5ldyBzKG4sU3RyaW5nLmZyb21DaGFyQ29kZShpLmdldE5ldHdvcmtCeXRlKCkpKSxpfXJldHVybiBuKHQsZSksdC5wcm90b3R5cGUuZ2V0U2lnblZlcnNpb25zPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuKGU9e30pW2EuU0lHTl9UWVBFLkFVVEhdPVsxXSxlW2EuU0lHTl9UWVBFLk1BVENIRVJfT1JERVJTXT1bMV0sZVthLlNJR05fVFlQRS5DUkVBVEVfT1JERVJdPVsxLDIsM10sZVthLlNJR05fVFlQRS5DQU5DRUxfT1JERVJdPVswLDFdLGVbYS5TSUdOX1RZUEUuQ09JTk9NQVRfQ09ORklSTUFUSU9OXT1bMV0sZVthLlNJR05fVFlQRS5JU1NVRV09WzJdLGVbYS5TSUdOX1RZUEUuVFJBTlNGRVJdPVsyXSxlW2EuU0lHTl9UWVBFLlJFSVNTVUVdPVsyXSxlW2EuU0lHTl9UWVBFLkJVUk5dPVsyXSxlW2EuU0lHTl9UWVBFLkVYQ0hBTkdFXT1bMCwyXSxlW2EuU0lHTl9UWVBFLkxFQVNFXT1bMl0sZVthLlNJR05fVFlQRS5DQU5DRUxfTEVBU0lOR109WzJdLGVbYS5TSUdOX1RZUEUuQ1JFQVRFX0FMSUFTXT1bMl0sZVthLlNJR05fVFlQRS5NQVNTX1RSQU5TRkVSXT1bMV0sZVthLlNJR05fVFlQRS5EQVRBXT1bMV0sZVthLlNJR05fVFlQRS5TRVRfU0NSSVBUXT1bMV0sZVthLlNJR05fVFlQRS5TUE9OU09SU0hJUF09WzFdLGVbYS5TSUdOX1RZUEUuU0VUX0FTU0VUX1NDUklQVF09WzFdLGVbYS5TSUdOX1RZUEUuU0NSSVBUX0lOVk9DQVRJT05dPVsxXSxlfSx0LnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5rZXlQYWlyLnB1YmxpY0tleSl9LHQucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5rZXlQYWlyLnByaXZhdGVLZXkpfSx0LnByb3RvdHlwZS5nZXRBZGRyZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnNlZWQuYWRkcmVzcyl9LHQucHJvdG90eXBlLmdldFNlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2VlZC5waHJhc2UpfSx0LnByb3RvdHlwZS5zaWduUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2lnbihlKX0sdC5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3NpZ24oZSl9LHQucHJvdG90eXBlLnNpZ25PcmRlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9zaWduKGUpfSx0LnByb3RvdHlwZS5zaWduRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2lnbihlKX0sdC5wcm90b3R5cGUuX3NpZ249ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh1KHRoaXMuc2VlZC5rZXlQYWlyLGUpKX0sdC5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSx0LnR5cGU9InNlZWQiLHR9KGkuQWRhcHRlcik7dC5TZWVkQWRhcHRlcj1jfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDQ1NSksaT1yKDM5OSksbz1yKDM5Nik7IWZ1bmN0aW9uKGUpe2UuU2VlZD0ic2VlZCIsZS5XYXZlc0tlZXBlcj0id2F2ZXNLZWVwZXIiLGUuTGVkZ2VyPSJsZWRnZXIiLGUuVHJlc29yPSJ0cmVzb3IifSh0LkFkYXB0ZXJUeXBlfHwodC5BZGFwdGVyVHlwZT17fSkpLHQuYWRhcHRlclByaW9yaXR5TGlzdD1bIndhdmVzS2VlcGVyIiwibGVkZ2VyIiwidHJlc29yIiwic2VlZCJdLHQuYWRhcHRlckxpc3Q9W24uU2VlZEFkYXB0ZXIsaS5MZWRnZXJBZGFwdGVyLG8uV2F2ZXNLZWVwZXJBZGFwdGVyXX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjc4KSxpPXIoNDYwKTtlLmV4cG9ydHM9cigxMTYpP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5mKGUsdCxpKDEscikpfTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz0hcigxMTYpJiYhcig4NCkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoNDU5KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNSksaT1yKDczKS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KGUpOnt9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MyksaT1yKDQ1Nyksbz1yKDE5MCksYT1yKDQ2MikoInNyYyIpLHM9cig5NDQpLHU9KCIiK3MpLnNwbGl0KCJ0b1N0cmluZyIpO3IoMTUwKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSl9LChlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIscyl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHI7YyYmKG8ociwibmFtZSIpfHxpKHIsIm5hbWUiLHQpKSxlW3RdIT09ciYmKGMmJihvKHIsYSl8fGkocixhLGVbdF0/IiIrZVt0XTp1LmpvaW4oU3RyaW5nKHQpKSkpLGU9PT1uP2VbdF09cjpzP2VbdF0/ZVt0XT1yOmkoZSx0LHIpOihkZWxldGUgZVt0XSxpKGUsdCxyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1thXXx8cy5jYWxsKHRoaXMpfSl9LGZ1bmN0aW9uKGUsdCl7dmFyIHI9MCxuPU1hdGgucmFuZG9tKCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09ZT8iIjplLCIpXyIsKCsrcituKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUwKSxpPXIoNzMpLG89aVsiX19jb3JlLWpzX3NoYXJlZF9fIl18fChpWyJfX2NvcmUtanNfc2hhcmVkX18iXT17fSk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvW2VdfHwob1tlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjpuLnZlcnNpb24sbW9kZTpyKDk0NSk/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiXHhhOSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig5NDYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7aWYobihlKSx2b2lkIDA9PT10KXJldHVybiBlO3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodCxyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBlLmNhbGwodCxyLG4pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZS5jYWxsKHQscixuLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9TWF0aC5sb2cxcHx8ZnVuY3Rpb24oZSl7cmV0dXJuKGU9K2UpPi0xZS04JiZlPDFlLTg/ZS1lKmUvMjpNYXRoLmxvZygxK2UpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOTY4KSxpPXIoNDYwKSxvPXIoMjgzKSxhPXIoMjc5KSxzPXIoMTkwKSx1PXIoNDU4KSxjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPXIoMTE2KT9jOmZ1bmN0aW9uKGUsdCl7aWYoZT1vKGUpLHQ9YSh0LCEwKSx1KXRyeXtyZXR1cm4gYyhlLHQpfWNhdGNoKHIpe31pZihzKGUsdCkpcmV0dXJuIGkoIW4uZi5jYWxsKGUsdCksZVt0XSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTApLGk9cigyODMpLG89cig5NzEpKCExKSxhPXIoNDY4KSgiSUVfUFJPVE8iKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixzPWkoZSksdT0wLGM9W107Zm9yKHIgaW4gcylyIT1hJiZuKHMscikmJmMucHVzaChyKTtmb3IoO3QubGVuZ3RoPnU7KW4ocyxyPXRbdSsrXSkmJih+byhjLHIpfHxjLnB1c2gocikpO3JldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDYzKSgia2V5cyIpLGk9cig0NjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09aShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyODIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiIT10eXBlb2YgZSYmIk51bWJlciIhPW4oZSkpdGhyb3cgVHlwZUVycm9yKHQpO3JldHVybitlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE1KSxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmaShlKT09PWV9fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciByPSJvYmplY3QiPT10eXBlb2YgdCYmdCYmdC5PYmplY3Q9PT1PYmplY3QmJnQ7ZS5leHBvcnRzPXJ9KS5jYWxsKHRoaXMscigzNCkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTIpLGk9cigxMDAyKSxvPXIoMTAwMyksYT1yKDEwMDQpLHM9cigxMDA1KSx1PXIoMTAwNik7ZnVuY3Rpb24gYyhlKXt2YXIgdD10aGlzLl9fZGF0YV9fPW5ldyBuKGUpO3RoaXMuc2l6ZT10LnNpemV9Yy5wcm90b3R5cGUuY2xlYXI9aSxjLnByb3RvdHlwZS5kZWxldGU9byxjLnByb3RvdHlwZS5nZXQ9YSxjLnByb3RvdHlwZS5oYXM9cyxjLnByb3RvdHlwZS5zZXQ9dSxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0KXt2YXIgcj1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUpe3RyeXtyZXR1cm4gci5jYWxsKGUpfWNhdGNoKHQpe310cnl7cmV0dXJuIGUrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI5MiksaT1yKDQ3NSksbz1yKDI5MyksYT0xLHM9MjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsdSxjLGYpe3ZhciBsPXImYSxoPWUubGVuZ3RoLHA9dC5sZW5ndGg7aWYoaCE9cCYmIShsJiZwPmgpKXJldHVybiExO3ZhciBkPWYuZ2V0KGUpO2lmKGQmJmYuZ2V0KHQpKXJldHVybiBkPT10O3ZhciB5PS0xLGc9ITAsdj1yJnM/bmV3IG46dm9pZCAwO2ZvcihmLnNldChlLHQpLGYuc2V0KHQsZSk7Kyt5PGg7KXt2YXIgbT1lW3ldLGI9dFt5XTtpZih1KXZhciBfPWw/dShiLG0seSx0LGUsZik6dShtLGIseSxlLHQsZik7aWYodm9pZCAwIT09Xyl7aWYoXyljb250aW51ZTtnPSExO2JyZWFrfWlmKHYpe2lmKCFpKHQsZnVuY3Rpb24oZSx0KXtpZighbyh2LHQpJiYobT09PWV8fGMobSxlLHIsdSxmKSkpcmV0dXJuIHYucHVzaCh0KX0pKXtnPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1iJiYhYyhtLGIscix1LGYpKXtnPSExO2JyZWFrfX1yZXR1cm4gZi5kZWxldGUoZSksZi5kZWxldGUodCksZ319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49bnVsbD09ZT8wOmUubGVuZ3RoOysrcjxuOylpZih0KGVbcl0scixlKSlyZXR1cm4hMDtyZXR1cm4hMX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGgsaT1lLmxlbmd0aDsrK3I8bjspZVtpK3JdPXRbcl07cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPW51bGw9PWU/MDplLmxlbmd0aCxpPTAsbz1bXTsrK3I8bjspe3ZhciBhPWVbcl07dChhLHIsZSkmJihvW2krK109YSl9cmV0dXJuIG99fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNjQpLGk9cigxMDM2KSxvPXQmJiF0Lm5vZGVUeXBlJiZ0LGE9byYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxzPWEmJmEuZXhwb3J0cz09PW8/bi5CdWZmZXI6dm9pZCAwLHU9KHM/cy5pc0J1ZmZlcjp2b2lkIDApfHxpO2UuZXhwb3J0cz11fSkuY2FsbCh0aGlzLHIoMjE1KShlKSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzcpLGk9cigyOTgpLG89cigxMDM4KSxhPW8mJm8uaXNUeXBlZEFycmF5LHM9YT9pKGEpOm47ZS5leHBvcnRzPXN9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHQocikpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIlNldCIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cigxMDQ2KTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LHIsbyxhLHMpe3ZhciB1PS0xLGM9dC5sZW5ndGg7Zm9yKG98fChvPWkpLHN8fChzPVtdKTsrK3U8Yzspe3ZhciBmPXRbdV07cj4wJiZvKGYpP3I+MT9lKGYsci0xLG8sYSxzKTpuKHMsZik6YXx8KHNbcy5sZW5ndGhdPWYpfXJldHVybiBzfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMzUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PWUmJiFuKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJnJbZV09PT10JiYodm9pZCAwIT09dHx8ZSBpbiBPYmplY3QocikpfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDE5Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbz0odD1uKHQsZSkpLmxlbmd0aDtudWxsIT1lJiZyPG87KWU9ZVtpKHRbcisrXSldO3JldHVybiByJiZyPT1vP2U6dm9pZCAwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOSksaT1yKDI5OSksbz1yKDEwNTIpLGE9cigxMDU1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKT9lOmkoZSx0KT9bZV06byhhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5OCksaT1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9LTEsbz1pKGUpP0FycmF5KGUubGVuZ3RoKTpbXTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXtvWysrcl09dChlLG4saSl9KSxvfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MyksaT1yKDE5Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJm4oZSx0LGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE5KSxpPXIoMTA2OSksbz1yKDEwNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBvKGkoZSx0LG4pLGUrIiIpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyKSxpPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW4oT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBlKHt9LCIiLHt9KSxlfWNhdGNoKHQpe319KCk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmxlbmd0aDsrK2k8bzspe3ZhciBhPWVbaV0scz10KGEpO2lmKG51bGwhPXMmJih2b2lkIDA9PT11P3M9PT1zJiYhbihzKTpyKHMsdSkpKXZhciB1PXMsYz1hfXJldHVybiBjfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuOyFmdW5jdGlvbihpKXsidXNlIHN0cmljdCI7dmFyIG8sYT0xZTkscz17cHJlY2lzaW9uOjIwLHJvdW5kaW5nOjQsdG9FeHBOZWc6LTcsdG9FeHBQb3M6MjEsTE4xMDoiMi4zMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQzNjQyMDc2MDExMDE0ODg2Mjg3NzI5NzYwMzMzMjc5MDA5Njc1NzI2MDk2NzczNTI0ODAyMzU5OTcyMDUwODk1OTgyOTgzNDE5Njc3ODQwNDIyODYifSx1PSEwLGM9IltEZWNpbWFsRXJyb3JdICIsZj1jKyJJbnZhbGlkIGFyZ3VtZW50OiAiLGw9YysiRXhwb25lbnQgb3V0IG9mIHJhbmdlOiAiLGg9TWF0aC5mbG9vcixwPU1hdGgucG93LGQ9L14oXGQrKFwuXGQqKT98XC5cZCspKGVbKy1dP1xkKyk/JC9pLHk9MWU3LGc9Nyx2PWgoOTAwNzE5OTI1NDc0MDk5MS9nKSxtPXt9O2Z1bmN0aW9uIGIoZSx0KXt2YXIgcixuLGksbyxhLHMsYyxmLGw9ZS5jb25zdHJ1Y3RvcixoPWwucHJlY2lzaW9uO2lmKCFlLnN8fCF0LnMpcmV0dXJuIHQuc3x8KHQ9bmV3IGwoZSkpLHU/ayh0LGgpOnQ7aWYoYz1lLmQsZj10LmQsYT1lLmUsaT10LmUsYz1jLnNsaWNlKCksbz1hLWkpe2ZvcihvPDA/KG49YyxvPS1vLHM9Zi5sZW5ndGgpOihuPWYsaT1hLHM9Yy5sZW5ndGgpLG8+KHM9KGE9TWF0aC5jZWlsKGgvZykpPnM/YSsxOnMrMSkmJihvPXMsbi5sZW5ndGg9MSksbi5yZXZlcnNlKCk7by0tOyluLnB1c2goMCk7bi5yZXZlcnNlKCl9Zm9yKChzPWMubGVuZ3RoKS0obz1mLmxlbmd0aCk8MCYmKG89cyxuPWYsZj1jLGM9bikscj0wO287KXI9KGNbLS1vXT1jW29dK2Zbb10rcikveXwwLGNbb10lPXk7Zm9yKHImJihjLnVuc2hpZnQociksKytpKSxzPWMubGVuZ3RoOzA9PWNbLS1zXTspYy5wb3AoKTtyZXR1cm4gdC5kPWMsdC5lPWksdT9rKHQsaCk6dH1mdW5jdGlvbiBfKGUsdCxyKXtpZihlIT09fn5lfHxlPHR8fGU+cil0aHJvdyBFcnJvcihmK2UpfWZ1bmN0aW9uIFMoZSl7dmFyIHQscixuLGk9ZS5sZW5ndGgtMSxvPSIiLGE9ZVswXTtpZihpPjApe2ZvcihvKz1hLHQ9MTt0PGk7dCsrKW49ZVt0XSsiIiwocj1nLW4ubGVuZ3RoKSYmKG8rPUMocikpLG8rPW47YT1lW3RdLChyPWctKG49YSsiIikubGVuZ3RoKSYmKG8rPUMocikpfWVsc2UgaWYoMD09PWEpcmV0dXJuIjAiO2Zvcig7YSUxMD09PTA7KWEvPTEwO3JldHVybiBvK2F9bS5hYnNvbHV0ZVZhbHVlPW0uYWJzPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIGUucyYmKGUucz0xKSxlfSxtLmNvbXBhcmVkVG89bS5jbXA9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGksbz10aGlzO2lmKGU9bmV3IG8uY29uc3RydWN0b3IoZSksby5zIT09ZS5zKXJldHVybiBvLnN8fC1lLnM7aWYoby5lIT09ZS5lKXJldHVybiBvLmU+ZS5lXm8uczwwPzE6LTE7Zm9yKHQ9MCxyPShuPW8uZC5sZW5ndGgpPChpPWUuZC5sZW5ndGgpP246aTt0PHI7Kyt0KWlmKG8uZFt0XSE9PWUuZFt0XSlyZXR1cm4gby5kW3RdPmUuZFt0XV5vLnM8MD8xOi0xO3JldHVybiBuPT09aT8wOm4+aV5vLnM8MD8xOi0xfSxtLmRlY2ltYWxQbGFjZXM9bS5kcD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLmQubGVuZ3RoLTEscj0odC1lLmUpKmc7aWYodD1lLmRbdF0pZm9yKDt0JTEwPT0wO3QvPTEwKXItLTtyZXR1cm4gcjwwPzA6cn0sbS5kaXZpZGVkQnk9bS5kaXY9ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyxuZXcgdGhpcy5jb25zdHJ1Y3RvcihlKSl9LG0uZGl2aWRlZFRvSW50ZWdlckJ5PW0uaWRpdj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbnN0cnVjdG9yO3JldHVybiBrKEUodGhpcyxuZXcgdChlKSwwLDEpLHQucHJlY2lzaW9uKX0sbS5lcXVhbHM9bS5lcT1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5jbXAoZSl9LG0uZXhwb25lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzKX0sbS5ncmVhdGVyVGhhbj1tLmd0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT4wfSxtLmdyZWF0ZXJUaGFuT3JFcXVhbFRvPW0uZ3RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKT49MH0sbS5pc0ludGVnZXI9bS5pc2ludD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmU+dGhpcy5kLmxlbmd0aC0yfSxtLmlzTmVnYXRpdmU9bS5pc25lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnM8MH0sbS5pc1Bvc2l0aXZlPW0uaXNwb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zPjB9LG0uaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnN9LG0ubGVzc1RoYW49bS5sdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MH0sbS5sZXNzVGhhbk9yRXF1YWxUbz1tLmx0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXAoZSk8MX0sbS5sb2dhcml0aG09bS5sb2c9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5jb25zdHJ1Y3RvcixpPW4ucHJlY2lzaW9uLGE9aSs1O2lmKHZvaWQgMD09PWUpZT1uZXcgbigxMCk7ZWxzZSBpZigoZT1uZXcgbihlKSkuczwxfHxlLmVxKG8pKXRocm93IEVycm9yKGMrIk5hTiIpO2lmKHIuczwxKXRocm93IEVycm9yKGMrKHIucz8iTmFOIjoiLUluZmluaXR5IikpO3JldHVybiByLmVxKG8pP25ldyBuKDApOih1PSExLHQ9RSh4KHIsYSkseChlLGEpLGEpLHU9ITAsayh0LGkpKX0sbS5taW51cz1tLnN1Yj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlPW5ldyB0LmNvbnN0cnVjdG9yKGUpLHQucz09ZS5zP08odCxlKTpiKHQsKGUucz0tZS5zLGUpKX0sbS5tb2R1bG89bS5tb2Q9ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLG49ci5jb25zdHJ1Y3RvcixpPW4ucHJlY2lzaW9uO2lmKCEoZT1uZXcgbihlKSkucyl0aHJvdyBFcnJvcihjKyJOYU4iKTtyZXR1cm4gci5zPyh1PSExLHQ9RShyLGUsMCwxKS50aW1lcyhlKSx1PSEwLHIubWludXModCkpOmsobmV3IG4ociksaSl9LG0ubmF0dXJhbEV4cG9uZW50aWFsPW0uZXhwPWZ1bmN0aW9uKCl7cmV0dXJuIHcodGhpcyl9LG0ubmF0dXJhbExvZ2FyaXRobT1tLmxuPWZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyl9LG0ubmVnYXRlZD1tLm5lZz1mdW5jdGlvbigpe3ZhciBlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiBlLnM9LWUuc3x8MCxlfSxtLnBsdXM9bS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZT1uZXcgdC5jb25zdHJ1Y3RvcihlKSx0LnM9PWUucz9iKHQsZSk6Tyh0LChlLnM9LWUucyxlKSl9LG0ucHJlY2lzaW9uPW0uc2Q9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGk9dGhpcztpZih2b2lkIDAhPT1lJiZlIT09ISFlJiYxIT09ZSYmMCE9PWUpdGhyb3cgRXJyb3IoZitlKTtpZih0PVQoaSkrMSxyPShuPWkuZC5sZW5ndGgtMSkqZysxLG49aS5kW25dKXtmb3IoO24lMTA9PTA7bi89MTApci0tO2ZvcihuPWkuZFswXTtuPj0xMDtuLz0xMClyKyt9cmV0dXJuIGUmJnQ+cj90OnJ9LG0uc3F1YXJlUm9vdD1tLnNxcnQ9ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixpLG8sYSxzPXRoaXMsZj1zLmNvbnN0cnVjdG9yO2lmKHMuczwxKXtpZighcy5zKXJldHVybiBuZXcgZigwKTt0aHJvdyBFcnJvcihjKyJOYU4iKX1mb3IoZT1UKHMpLHU9ITEsMD09KGk9TWF0aC5zcXJ0KCtzKSl8fGk9PTEvMD8oKCh0PVMocy5kKSkubGVuZ3RoK2UpJTI9PTAmJih0Kz0iMCIpLGk9TWF0aC5zcXJ0KHQpLGU9aCgoZSsxKS8yKS0oZTwwfHxlJTIpLG49bmV3IGYodD1pPT0xLzA/IjFlIitlOih0PWkudG9FeHBvbmVudGlhbCgpKS5zbGljZSgwLHQuaW5kZXhPZigiZSIpKzEpK2UpKTpuPW5ldyBmKGkudG9TdHJpbmcoKSksaT1hPShyPWYucHJlY2lzaW9uKSszOzspaWYobj0obz1uKS5wbHVzKEUocyxvLGErMikpLnRpbWVzKC41KSxTKG8uZCkuc2xpY2UoMCxhKT09PSh0PVMobi5kKSkuc2xpY2UoMCxhKSl7aWYodD10LnNsaWNlKGEtMyxhKzEpLGk9PWEmJiI0OTk5Ij09dCl7aWYoayhvLHIrMSwwKSxvLnRpbWVzKG8pLmVxKHMpKXtuPW87YnJlYWt9fWVsc2UgaWYoIjk5OTkiIT10KWJyZWFrO2ErPTR9cmV0dXJuIHU9ITAsayhuLHIpfSxtLnRpbWVzPW0ubXVsPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzLGMsZixsPXRoaXMsaD1sLmNvbnN0cnVjdG9yLHA9bC5kLGQ9KGU9bmV3IGgoZSkpLmQ7aWYoIWwuc3x8IWUucylyZXR1cm4gbmV3IGgoMCk7Zm9yKGUucyo9bC5zLHI9bC5lK2UuZSwoYz1wLmxlbmd0aCk8KGY9ZC5sZW5ndGgpJiYobz1wLHA9ZCxkPW8sYT1jLGM9ZixmPWEpLG89W10sbj1hPWMrZjtuLS07KW8ucHVzaCgwKTtmb3Iobj1mOy0tbj49MDspe2Zvcih0PTAsaT1jK247aT5uOylzPW9baV0rZFtuXSpwW2ktbi0xXSt0LG9baS0tXT1zJXl8MCx0PXMveXwwO29baV09KG9baV0rdCkleXwwfWZvcig7IW9bLS1hXTspby5wb3AoKTtyZXR1cm4gdD8rK3I6by5zaGlmdCgpLGUuZD1vLGUuZT1yLHU/ayhlLGgucHJlY2lzaW9uKTplfSxtLnRvRGVjaW1hbFBsYWNlcz1tLnRvZHA9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49ci5jb25zdHJ1Y3RvcjtyZXR1cm4gcj1uZXcgbihyKSx2b2lkIDA9PT1lP3I6KF8oZSwwLGEpLHZvaWQgMD09PXQ/dD1uLnJvdW5kaW5nOl8odCwwLDgpLGsocixlK1QocikrMSx0KSl9LG0udG9FeHBvbmVudGlhbD1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcyxpPW4uY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWU/cj1OKG4sITApOihfKGUsMCxhKSx2b2lkIDA9PT10P3Q9aS5yb3VuZGluZzpfKHQsMCw4KSxyPU4obj1rKG5ldyBpKG4pLGUrMSx0KSwhMCxlKzEpKSxyfSxtLnRvRml4ZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9dGhpcyxvPWkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWU/TihpKTooXyhlLDAsYSksdm9pZCAwPT09dD90PW8ucm91bmRpbmc6Xyh0LDAsOCkscj1OKChuPWsobmV3IG8oaSksZStUKGkpKzEsdCkpLmFicygpLCExLGUrVChuKSsxKSxpLmlzbmVnKCkmJiFpLmlzWmVybygpPyItIityOnIpfSxtLnRvSW50ZWdlcj1tLnRvaW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuY29uc3RydWN0b3I7cmV0dXJuIGsobmV3IHQoZSksVChlKSsxLHQucm91bmRpbmcpfSxtLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuK3RoaXN9LG0udG9Qb3dlcj1tLnBvdz1mdW5jdGlvbihlKXt2YXIgdCxyLG4saSxhLHMsZj10aGlzLGw9Zi5jb25zdHJ1Y3RvcixwPSsoZT1uZXcgbChlKSk7aWYoIWUucylyZXR1cm4gbmV3IGwobyk7aWYoIShmPW5ldyBsKGYpKS5zKXtpZihlLnM8MSl0aHJvdyBFcnJvcihjKyJJbmZpbml0eSIpO3JldHVybiBmfWlmKGYuZXEobykpcmV0dXJuIGY7aWYobj1sLnByZWNpc2lvbixlLmVxKG8pKXJldHVybiBrKGYsbik7aWYocz0odD1lLmUpPj0ocj1lLmQubGVuZ3RoLTEpLGE9Zi5zLHMpe2lmKChyPXA8MD8tcDpwKTw9OTAwNzE5OTI1NDc0MDk5MSl7Zm9yKGk9bmV3IGwobyksdD1NYXRoLmNlaWwobi9nKzQpLHU9ITE7ciUyJiZQKChpPWkudGltZXMoZikpLmQsdCksMCE9PShyPWgoci8yKSk7KVAoKGY9Zi50aW1lcyhmKSkuZCx0KTtyZXR1cm4gdT0hMCxlLnM8MD9uZXcgbChvKS5kaXYoaSk6ayhpLG4pfX1lbHNlIGlmKGE8MCl0aHJvdyBFcnJvcihjKyJOYU4iKTtyZXR1cm4gYT1hPDAmJjEmZS5kW01hdGgubWF4KHQscildPy0xOjEsZi5zPTEsdT0hMSxpPWUudGltZXMoeChmLG4rMTIpKSx1PSEwLChpPXcoaSkpLnM9YSxpfSxtLnRvUHJlY2lzaW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpPXRoaXMsbz1pLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT1lP249TihpLChyPVQoaSkpPD1vLnRvRXhwTmVnfHxyPj1vLnRvRXhwUG9zKTooXyhlLDEsYSksdm9pZCAwPT09dD90PW8ucm91bmRpbmc6Xyh0LDAsOCksbj1OKGk9ayhuZXcgbyhpKSxlLHQpLGU8PShyPVQoaSkpfHxyPD1vLnRvRXhwTmVnLGUpKSxufSxtLnRvU2lnbmlmaWNhbnREaWdpdHM9bS50b3NkPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09ZT8oZT1yLnByZWNpc2lvbix0PXIucm91bmRpbmcpOihfKGUsMSxhKSx2b2lkIDA9PT10P3Q9ci5yb3VuZGluZzpfKHQsMCw4KSksayhuZXcgcih0aGlzKSxlLHQpfSxtLnRvU3RyaW5nPW0udmFsdWVPZj1tLnZhbD1tLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1UKGUpLHI9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gTihlLHQ8PXIudG9FeHBOZWd8fHQ+PXIudG9FeHBQb3MpfTt2YXIgRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgcixuPTAsaT1lLmxlbmd0aDtmb3IoZT1lLnNsaWNlKCk7aS0tOylyPWVbaV0qdCtuLGVbaV09ciV5fDAsbj1yL3l8MDtyZXR1cm4gbiYmZS51bnNoaWZ0KG4pLGV9ZnVuY3Rpb24gdChlLHQscixuKXt2YXIgaSxvO2lmKHIhPW4pbz1yPm4/MTotMTtlbHNlIGZvcihpPW89MDtpPHI7aSsrKWlmKGVbaV0hPXRbaV0pe289ZVtpXT50W2ldPzE6LTE7YnJlYWt9cmV0dXJuIG99ZnVuY3Rpb24gcihlLHQscil7Zm9yKHZhciBuPTA7ci0tOyllW3JdLT1uLG49ZVtyXTx0W3JdPzE6MCxlW3JdPW4qeStlW3JdLXRbcl07Zm9yKDshZVswXSYmZS5sZW5ndGg+MTspZS5zaGlmdCgpfXJldHVybiBmdW5jdGlvbihuLGksbyxhKXt2YXIgcyx1LGYsbCxoLHAsZCx2LG0sYixfLFMsRSx3LEEsQyx4LEksTz1uLmNvbnN0cnVjdG9yLE49bi5zPT1pLnM/MTotMSxQPW4uZCxSPWkuZDtpZighbi5zKXJldHVybiBuZXcgTyhuKTtpZighaS5zKXRocm93IEVycm9yKGMrIkRpdmlzaW9uIGJ5IHplcm8iKTtmb3IodT1uLmUtaS5lLHg9Ui5sZW5ndGgsQT1QLmxlbmd0aCx2PShkPW5ldyBPKE4pKS5kPVtdLGY9MDtSW2ZdPT0oUFtmXXx8MCk7KSsrZjtpZihSW2ZdPihQW2ZdfHwwKSYmLS11LChTPW51bGw9PW8/bz1PLnByZWNpc2lvbjphP28rKFQobiktVChpKSkrMTpvKTwwKXJldHVybiBuZXcgTygwKTtpZihTPVMvZysyfDAsZj0wLDE9PXgpZm9yKGw9MCxSPVJbMF0sUysrOyhmPEF8fGwpJiZTLS07ZisrKUU9bCp5KyhQW2ZdfHwwKSx2W2ZdPUUvUnwwLGw9RSVSfDA7ZWxzZXtmb3IoKGw9eS8oUlswXSsxKXwwKT4xJiYoUj1lKFIsbCksUD1lKFAsbCkseD1SLmxlbmd0aCxBPVAubGVuZ3RoKSx3PXgsYj0obT1QLnNsaWNlKDAseCkpLmxlbmd0aDtiPHg7KW1bYisrXT0wOyhJPVIuc2xpY2UoKSkudW5zaGlmdCgwKSxDPVJbMF0sUlsxXT49eS8yJiYrK0M7ZG97bD0wLChzPXQoUixtLHgsYikpPDA/KF89bVswXSx4IT1iJiYoXz1fKnkrKG1bMV18fDApKSwobD1fL0N8MCk+MT8obD49eSYmKGw9eS0xKSwxPT0ocz10KGg9ZShSLGwpLG0scD1oLmxlbmd0aCxiPW0ubGVuZ3RoKSkmJihsLS0scihoLHg8cD9JOlIscCkpKTooMD09bCYmKHM9bD0xKSxoPVIuc2xpY2UoKSksKHA9aC5sZW5ndGgpPGImJmgudW5zaGlmdCgwKSxyKG0saCxiKSwtMT09cyYmKHM9dChSLG0seCxiPW0ubGVuZ3RoKSk8MSYmKGwrKyxyKG0seDxiP0k6UixiKSksYj1tLmxlbmd0aCk6MD09PXMmJihsKyssbT1bMF0pLHZbZisrXT1sLHMmJm1bMF0="
}