{"title":"Blacklight Inspection","page_title":"Apprendre le français à Lyon - Alliance Française","uri_ins":"http://www.aflyon.org/","uri_dest":"https://www.aflyon.org/","uri_redirects":["http://www.aflyon.org/"],"secure_connection":{},"host":"www.aflyon.org","config":{"emulateDevice":{"name":"Pixel 5","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","viewport":{"width":393,"height":851,"deviceScaleFactor":3,"isMobile":true,"hasTouch":true,"isLandscape":false}},"cleareCache":true,"captureHar":true,"captureLinks":false,"enableAdBlock":false,"saveBrowserProfile":false,"numPages":2,"defaultTimeout":35000,"defaultWaitUntil":"networkidle2","headless":true,"headers":{},"extraChromiumArgs":["--disable-features=TrackingProtection3pcd","--website-analysis-scan=23b47f08-f47f-4991-a067-f47d7b7a4f53"],"extraPuppeteerOptions":{}},"browser":{"name":"Chromium","version":"Chrome/127.0.6533.88","user_agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/127.0.0.0 Safari/537.36","platform":{"name":"Linux","version":"6.6.87.1-microsoft-standard-WSL2"}},"script":{"host":"664e30392174","version":{"npm":"3.11.0","commit":"dev"},"node_version":"v24.20.0"},"start_time":"2026-10-01T18:49:31.042Z","end_time":"2026-10-01T18:49:49.749Z","browsing_history":["https://www.aflyon.org/","https://www.aflyon.org/es/","https://www.aflyon.org/categorie-produit/cours/cours-particuliers/"],"hosts":{"requests":{"first_party":["www.aflyon.org"],"third_party":["lh3.googleusercontent.com","cdn.trustindex.io","www.youtube.com","fonts.gstatic.com","googleads.g.doubleclick.net","static.doubleclick.net","www.google.com","i.ytimg.com","jnn-pa.googleapis.com","www.gstatic.com"]}},"reports":{"behaviour_event_listeners":{"KEYBOARD":{"https://www.aflyon.org/wp/wp-includes/js/jquery/jquery.min.js?ver=3.7.1":["keyup","keydown"],"data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHt3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gPSB7ImFqYXhVcmwiOiJodHRwczpcL1wvd3d3LmFmbHlvbi5vcmdcL3dwXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6ImZiNGVkZWFmMmIiLCJleGlzdGluZ0NuaUlkIjowLCJzdG9yZU5zIjoiYWZsLWNoZWNrb3V0IiwiaTE4biI6eyJ1cGxvYWRpbmciOiJFbnZvaSBlbiBjb3Vyc1x1MjAyNiIsImZpbGVTYXZlZCI6IkZpY2hpZXIgZW5yZWdpc3RyXHUwMGU5LiIsInVwbG9hZEVycm9yIjoiRXJyZXVyIGxvcnMgZHUgdFx1MDBlOWxcdTAwZTl2ZXJzZW1lbnQuIiwiaW52YWxpZFJlc3BvbnNlIjoiUlx1MDBlOXBvbnNlIGludmFsaWRlLiIsIm5ldHdvcmtFcnJvciI6IkVycmV1ciByXHUwMGU5c2VhdS4iLCJpZERvY3VtZW50UmVxdWlyZWQiOiJWZXVpbGxleiB0XHUwMGU5bFx1MDBlOXZlcnNlciB2b3RyZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkuIiwiaWREb2N1bWVudFJlcXVpcmVkU2hvcnQiOiJMZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsImxlYXJuZXJMYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGRlIGwnYXBwcmVuYW50XC9jYW5kaWRhdCBlc3Qgb2JsaWdhdG9pcmUuIiwibGVhcm5lckZpcnN0TmFtZVJlcXVpcmVkIjoiTGUgcHJcdTAwZTlub20gZGUgbCdhcHByZW5hbnRcL2NhbmRpZGF0IGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aERhdGVSZXF1aXJlZCI6IkxhIGRhdGUgZGUgbmFpc3NhbmNlIGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aENpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiYmlydGhDb3VudHJ5UmVxdWlyZWQiOiJMZSBwYXlzIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiY2l0aXplbnNoaXBSZXF1aXJlZCI6IkxhIG5hdGlvbmFsaXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsIm1vdGhlclRvbmd1ZVJlcXVpcmVkIjoiTGEgbGFuZ3VlIG1hdGVybmVsbGUgZXN0IG9ibGlnYXRvaXJlLiIsInRpdGxlUmVxdWlyZWQiOiJMYSBjaXZpbGl0XHUwMGU5IGVzdCBvYmxpZ2F0b2lyZS4iLCJmaXJzdE5hbWVSZXF1aXJlZCI6IkxlIHByXHUwMGU5bm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJsYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJhZGRyZXNzUmVxdWlyZWQiOiJMJ2FkcmVzc2UgZXN0IG9ibGlnYXRvaXJlLiIsImNpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGVzdCBvYmxpZ2F0b2lyZS4iLCJwb3N0Y29kZVJlcXVpcmVkIjoiTGUgY29kZSBwb3N0YWwgZXN0IG9ibGlnYXRvaXJlLiIsImNvdW50cnlSZXF1aXJlZCI6IkxlIHBheXMgZXN0IG9ibGlnYXRvaXJlLiIsInZhbGlkRW1haWxSZXF1aXJlZCI6IlVuIGUtbWFpbCB2YWxpZGUgZXN0IG9ibGlnYXRvaXJlLiJ9LCJwcmVmaWxsIjp7ImNpdmlsaXR5IjoiIiwibGVhcm5lckxhc3ROYW1lIjoiIiwibGVhcm5lckZpcnN0TmFtZSI6IiIsImJpcnRoRGF0ZSI6IiIsImJpcnRoQ2l0eSI6IiIsImJpcnRoQ291bnRyeSI6IiIsImNpdGl6ZW5zaGlwIjoiIiwibW90aGVydG9uZ3VlIjoiIn19Oy8qIEFGTCBDaGVja291dCDigJMgUGVyc29uYWwgSW5mb3JtYXRpb24KICogU2VjdGlvbiBpcyBpbmplY3RlZCBpbnNpZGUgdGhlIGNoZWNrb3V0IGZvcm0uIElmIFJlYWN0IHJlbW92ZXMgaXQsCiAqIGEgTXV0YXRpb25PYnNlcnZlciByZS1pbnNlcnRzIGEgY2xvbmUgc28gdGhlIGJsb2NrIHN0YXlzIHZpc2libGUuCiAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBjZmcgPSB3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gfHwge307CiAgICBpZiAoIWNmZy5hamF4VXJsKSB7IHJldHVybjsgfQoKICAgIGxldCBpMThuID0gY2ZnLmkxOG4gfHwge307CiAgICBsZXQgc2F2ZVRpbWVyID0gbnVsbDsKICAgIGxldCBpbmplY3RlZFNlY3Rpb24gPSBudWxsOyAgLy8gcmVmZXJlbmNlIHRvIHRoZSBub2RlIHdlIGluc2VydGVkCiAgICBsZXQgYmFja3VwQ2xvbmUgPSBudWxsOyAgICAgIC8vIGNsb25lIHVzZWQgdG8gcmUtaW5zZXJ0IHdoZW4gUmVhY3QgcmVtb3ZlcyBvdXIgbm9kZQoKICAgIGZ1bmN0aW9uICQoaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQogICAgZnVuY3Rpb24gdmFsKGlkKSB7IGxldCBlbCA9ICQoaWQpOyByZXR1cm4gZWwgPyAoZWwudmFsdWUgfHwgJycpLnRyaW0oKSA6ICcnOyB9CiAgICBmdW5jdGlvbiB0KGtleSwgZmFsbGJhY2spIHsgcmV0dXJuIGkxOG5ba2V5XSB8fCBmYWxsYmFjayB8fCAnJzsgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFdhaXQgZm9yIHRoZSBXQyBjaGVja291dCBibG9jawogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JDaGVja291dChjYikgewogICAgICAgIGxldCBzZWwgPSBbCiAgICAgICAgICAgICcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQnLAogICAgICAgICAgICAnW2RhdGEtYmxvY2stbmFtZT0id29vY29tbWVyY2UvY2hlY2tvdXQiXScsCiAgICAgICAgICAgICcud2MtYmxvY2stY2hlY2tvdXQnLAogICAgICAgIF07CiAgICAgICAgZnVuY3Rpb24gZmluZCgpIHsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7aSA8IHNlbC5sZW5ndGg7aSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbFtpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHsgcmV0dXJuIGVsOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gZmluZCgpOwogICAgICAgIGlmICh0KSB7IGNiKHQpOyByZXR1cm47IH0KICAgICAgICBsZXQgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgdCA9IGZpbmQoKTsKICAgICAgICAgICAgaWYgKHQpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgY2IodCk7IH0KICAgICAgICB9KTsKICAgICAgICBvYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgfSwgMTUwMDApOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEluamVjdCBzZWN0aW9uIGluc2lkZSBjaGVja291dCBmb3JtOyBrZWVwIGJhY2t1cCB0byByZS1pbnNlcnQgaWYgcmVtb3ZlZAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKSB7CiAgICAgICAgbGV0IGlubmVyID0gY2hlY2tvdXRFbC5xdWVyeVNlbGVjdG9yKCcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQtZmllbGRzLWJsb2NrJyk7CiAgICAgICAgcmV0dXJuIGlubmVyIHx8IGNoZWNrb3V0RWwucXVlcnlTZWxlY3RvcignLndjLWJsb2NrLWNoZWNrb3V0X19tYWluJykgfHwgY2hlY2tvdXRFbDsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0U2VsZWN0c0luU2VjdGlvbihzZWN0aW9uKSB7CiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbZGF0YS1pbml0aWFsXScpLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgewogICAgICAgICAgICBsZXQgaW5pdGlhbCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbCcpOwogICAgICAgICAgICBpZiAoaW5pdGlhbCkgeyBzZWwudmFsdWUgPSBpbml0aWFsOyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5qZWN0U2VjdGlvbihjaGVja291dEVsKSB7CiAgICAgICAgbGV0IHBhcmVudCA9IGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKTsKICAgICAgICBpZiAoIXBhcmVudCkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IHN0YWdpbmcgPSAkKCdhZmwtY25pLXN0YWdpbmcnKTsKICAgICAgICBpZiAoIXN0YWdpbmcpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbmplY3RlZCBzZWN0aW9uIHRoYXQgd2FzIHJlbW92ZWQsIHJlLWluc2VydCBmcm9tIGJhY2t1cAogICAgICAgIGlmIChpbmplY3RlZFNlY3Rpb24gJiYgIWRvY3VtZW50LmJvZHkuY29udGFpbnMoaW5qZWN0ZWRTZWN0aW9uKSAmJiBiYWNrdXBDbG9uZSkgewogICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgIGluamVjdGVkU2VjdGlvbiA9IGJhY2t1cENsb25lOwogICAgICAgICAgICBiYWNrdXBDbG9uZSA9IGJhY2t1cENsb25lLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNlY3Rpb24gPSBzdGFnaW5nLnF1ZXJ5U2VsZWN0b3IoJyNhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICBpZiAoIXNlY3Rpb24pIHsgcmV0dXJuOyB9CgogICAgICAgIHNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc2VjdGlvbiwgcGFyZW50LmZpcnN0Q2hpbGQpOwogICAgICAgIGluamVjdGVkU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICBiYWNrdXBDbG9uZSA9IHNlY3Rpb24uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAvLyBJZiBSZWFjdCByZW1vdmVzIG91ciBzZWN0aW9uLCB3ZSdsbCByZS1pbnNlcnQgdGhlIGJhY2t1cAogICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGluamVjdGVkU2VjdGlvbiAmJiAhZG9jdW1lbnQuYm9keS5jb250YWlucyhpbmplY3RlZFNlY3Rpb24pICYmIGJhY2t1cENsb25lICYmIHBhcmVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBpbmplY3RlZFNlY3Rpb24gPSBiYWNrdXBDbG9uZTsKICAgICAgICAgICAgICAgIGJhY2t1cENsb25lID0gYmFja3VwQ2xvbmUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIGluaXRTZWxlY3RzSW5TZWN0aW9uKGluamVjdGVkU2VjdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogc2F2ZSB0ZXh0IGZpZWxkcyB0byBXQyBzZXNzaW9uCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gc2F2ZUZpZWxkc1RvU2Vzc2lvbihzeW5jKSB7CiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3NhdmVfZmllbGRzJyk7CiAgICAgICAgZmQuYXBwZW5kKCdub25jZScsIGNmZy5ub25jZSk7CiAgICAgICAgZmQuYXBwZW5kKCdjaXZpbGl0eScsIHZhbCgnYWZsX2NpdmlsaXR5JykpOwogICAgICAgIGZkLmFwcGVuZCgnbGVhcm5lcl9sYXN0X25hbWUnLCB2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2xlYXJuZXJfZmlyc3RfbmFtZScsIHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2JpcnRoX2RhdGUnLCB2YWwoJ2FmbF9iaXJ0aF9kYXRlJykpOwogICAgICAgIGZkLmFwcGVuZCgnYmlydGhfY2l0eScsIHZhbCgnYWZsX2JpcnRoX2NpdHknKSk7CiAgICAgICAgZmQuYXBwZW5kKCdiaXJ0aF9jb3VudHJ5JywgdmFsKCdhZmxfYmlydGhfY291bnRyeScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2NpdGl6ZW5zaGlwJywgdmFsKCdhZmxfY2l0aXplbnNoaXAnKSk7CiAgICAgICAgZmQuYXBwZW5kKCdtb3RoZXJ0b25ndWUnLCB2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSk7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdQT1NUJywgY2ZnLmFqYXhVcmwsICFzeW5jKTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVib3VuY2VkU2F2ZSgpIHsKICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVyKTsKICAgICAgICBzYXZlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2F2ZUZpZWxkc1RvU2Vzc2lvbihmYWxzZSk7IH0sIDQwMCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogZmlsZSB1cGxvYWQKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgewogICAgICAgIGxldCBpbnB1dCA9ICQoJ2FmbF9jbmlfZmlsZScpOwogICAgICAgIGlmICghaW5wdXQgfHwgIWlucHV0LmZpbGVzIHx8ICFpbnB1dC5maWxlc1swXSkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IGZpbGUgPSBpbnB1dC5maWxlc1swXTsKICAgICAgICBsZXQgc3RhdHVzID0gJCgnYWZsLXVwbG9hZC1zdGF0dXMnKTsKICAgICAgICBsZXQgZmlsZU5hbWUgPSAkKCdhZmwtZmlsZS1uYW1lJyk7CiAgICAgICAgbGV0IGRvY1R5cGUgPSB2YWwoJ2FmbF9jbmlfdHlwZScpIHx8ICdjbmknOwoKICAgICAgICBpZiAoc3RhdHVzKSB7IHN0YXR1cy50ZXh0Q29udGVudCA9IHQoJ3VwbG9hZGluZycsICdVcGxvYWRpbmfigKYnKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyc7IH0KICAgICAgICBpZiAoZmlsZU5hbWUpIHsgZmlsZU5hbWUudGV4dENvbnRlbnQgPSBmaWxlLm5hbWU7IH0KCiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3VwbG9hZF9jbmknKTsKICAgICAgICBmZC5hcHBlbmQoJ25vbmNlJywgY2ZnLm5vbmNlKTsKICAgICAgICBmZC5hcHBlbmQoJ2FmbF9jaGVja291dF9maWxlJywgZmlsZSk7CiAgICAgICAgZmQuYXBwZW5kKCdkb2NfdHlwZScsIGRvY1R5cGUpOwoKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCBjZmcuYWpheFVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCByZXNwID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgIGlmIChyZXNwLnN1Y2Nlc3MgJiYgcmVzcC5kYXRhICYmIHJlc3AuZGF0YS5hdHRhY2htZW50X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gcmVzcC5kYXRhLmF0dGFjaG1lbnRfaWQ7IH0KICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKCdhZmwtY25pLWVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyTICcgKyB0KCdmaWxlU2F2ZWQnLCAnRmlsZSBzYXZlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLW9rJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSAocmVzcC5kYXRhICYmIHJlc3AuZGF0YS5tZXNzYWdlKSB8fCB0KCd1cGxvYWRFcnJvcicsICdVcGxvYWQgZXJyb3IuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyBtc2c7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeyBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyB0KCdpbnZhbGlkUmVzcG9uc2UnLCAnSW52YWxpZCByZXNwb25zZS4nKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLWVycic7IH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChzdGF0dXMpIHsgc3RhdHVzLnRleHRDb250ZW50ID0gJ+KclyAnICsgdCgnbmV0d29ya0Vycm9yJywgJ05ldHdvcmsgZXJyb3IuJyk7IHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOyB9CiAgICAgICAgfTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gIlJlcGxhY2UiIGJ1dHRvbgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGhhbmRsZVJlcGxhY2UoKSB7CiAgICAgICAgbGV0IGV4aXN0aW5nID0gJCgnYWZsLWV4aXN0aW5nLWZpbGUnKTsKICAgICAgICBsZXQgdXBsb2FkID0gJCgnYWZsLXVwbG9hZC1maWVsZCcpOwogICAgICAgIGlmIChleGlzdGluZykgeyBleGlzdGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9CiAgICAgICAgaWYgKHVwbG9hZCkgeyB1cGxvYWQuc3R5bGUuZGlzcGxheSA9ICcnOyB9CiAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gJyc7IH0KICAgIH0KCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBEaXNwYXRjaCB0byBXQyBTdG9yZSAoYmVzdC1lZmZvcnQsIGZvciBleHRlbnNpb25zIHBheWxvYWQpCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gZGlzcGF0Y2hUb1N0b3JlKCkgewogICAgICAgIGlmICghd2luZG93LndwIHx8ICF3aW5kb3cud3AuZGF0YSkgeyByZXR1cm47IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IHdpbmRvdy53cC5kYXRhLmRpc3BhdGNoKCd3Yy9zdG9yZS9jaGVja291dCcpOwogICAgICAgICAgICBpZiAoIWQgfHwgdHlwZW9mIGQuc2V0RXh0ZW5zaW9uRGF0YSAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH0KICAgICAgICAgICAgZC5zZXRFeHRlbnNpb25EYXRhKGNmZy5zdG9yZU5zIHx8ICdhZmwtY2hlY2tvdXQnLCB7CiAgICAgICAgICAgICAgICBjbmlfYXR0YWNobWVudF9pZDogcGFyc2VJbnQodmFsKCdhZmxfY25pX2F0dGFjaG1lbnRfaWQnKSwgMTApIHx8IDAsCiAgICAgICAgICAgICAgICBjaXZpbGl0eTogU3RyaW5nKHZhbCgnYWZsX2NpdmlsaXR5JykgfHwgJycpLAogICAgICAgICAgICAgICAgbGVhcm5lcl9sYXN0X25hbWU6IFN0cmluZyh2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGxlYXJuZXJfZmlyc3RfbmFtZTogU3RyaW5nKHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGJpcnRoX2RhdGU6IFN0cmluZyh2YWwoJ2FmbF9iaXJ0aF9kYXRlJykgfHwgJycpLAogICAgICAgICAgICAgICAgYmlydGhfY2l0eTogU3RyaW5nKHZhbCgnYWZsX2JpcnRoX2NpdHknKSB8fCAnJyksCiAgICAgICAgICAgICAgICBiaXJ0aF9jb3VudHJ5OiBTdHJpbmcodmFsKCdhZmxfYmlydGhfY291bnRyeScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGNpdGl6ZW5zaGlwOiBTdHJpbmcodmFsKCdhZmxfY2l0aXplbnNoaXAnKSB8fCAnJyksCiAgICAgICAgICAgICAgICBtb3RoZXJ0b25ndWU6IFN0cmluZyh2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSB8fCAnJyksCiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogbm8tb3AgKi8gfQogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFZhbGlkYXRpb24KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgIGxldCBlbCA9ICQoaWQpOwogICAgICAgIGlmIChlbCkgeyBlbC50ZXh0Q29udGVudCA9IG1zZzsgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3IoaWQpIHsKICAgICAgICBsZXQgZWwgPSAkKGlkKTsKICAgICAgICBpZiAoZWwpIHsgZWwuc3R5bGUuZGlzcGxheSA9ICcnOyBlbC50ZXh0Q29udGVudCA9ICcnOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdmFsaWRhdGVBbGwoKSB7CiAgICAgICAgbGV0IG9rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCFwYXJzZUludCh2YWwoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpLCAxMCkpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtY25pLWVycm9yJywgdCgnaWREb2N1bWVudFJlcXVpcmVkJywgJ1BsZWFzZSB1cGxvYWQgeW91ciBpZGVudGl0eSBkb2N1bWVudC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWNuaS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbGVhcm5lcl9sYXN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWxhc3QtbmFtZS1lcnJvcicsIHQoJ2xlYXJuZXJMYXN0TmFtZVJlcXVpcmVkJywgIkxlYXJuZXIncyAvIGNhbmRpZGF0ZSdzIGxhc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItbGFzdC1uYW1lLWVycm9yJyk7IH0KCiAgICAgICAgaWYgKCF2YWwoJ2FmbF9sZWFybmVyX2ZpcnN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWZpcnN0LW5hbWUtZXJyb3InLCB0KCdsZWFybmVyRmlyc3ROYW1lUmVxdWlyZWQnLCAiTGVhcm5lcidzIC8gY2FuZGlkYXRlJ3MgZmlyc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItZmlyc3QtbmFtZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfZGF0ZScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWRhdGUtZXJyb3InLCB0KCdiaXJ0aERhdGVSZXF1aXJlZCcsICdEYXRlIG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtZGF0ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY2l0eScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNpdHktZXJyb3InLCB0KCdiaXJ0aENpdHlSZXF1aXJlZCcsICdDaXR5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY2l0eS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY291bnRyeScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNvdW50cnktZXJyb3InLCB0KCdiaXJ0aENvdW50cnlSZXF1aXJlZCcsICdDb3VudHJ5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY291bnRyeS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfY2l0aXplbnNoaXAnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicsIHQoJ2NpdGl6ZW5zaGlwUmVxdWlyZWQnLCAnQ2l0aXplbnNoaXAgaXMgcmVxdWlyZWQuJykpOyBvayA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7IGNsZWFyRXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbW90aGVydG9uZ3VlJykpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtbW90aGVydG9uZ3VlLWVycm9yJywgdCgnbW90aGVyVG9uZ3VlUmVxdWlyZWQnLCAnTW90aGVyIHRvbmd1ZSBpcyByZXF1aXJlZC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLW1vdGhlcnRvbmd1ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgbGV0IHMgPSAkKCdhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHMpIHsgcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9rOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEludGVyY2VwdCBQbGFjZSBPcmRlcgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGludGVyY2VwdFBsYWNlT3JkZXIoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBsZXQgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAgICAgICAgICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24sICcgKwoJCQkJJ1tkYXRhLXRlc3RpZD0iY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uIl0sICcgKwoJCQkJJy53cC1ibG9jay13b29jb21tZXJjZS1jaGVja291dC1wYXltZW50LWJsb2NrIGJ1dHRvblt0eXBlPSJzdWJtaXQiXScKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCFidG4pIHsgcmV0dXJuOyB9CgogICAgICAgICAgICBzYXZlRmllbGRzVG9TZXNzaW9uKHRydWUpOwogICAgICAgICAgICBkaXNwYXRjaFRvU3RvcmUoKTsKCiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGwoKSkgewogICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIHRydWUpOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEV2ZW50cwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkID09PSAnYWZsX2NuaV9maWxlJykgeyBoYW5kbGVGaWxlVXBsb2FkKCk7IH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMgJiYgZS50YXJnZXQubWF0Y2hlcygnLmFmbC1waS1pbnB1dCcpKSB7IGRlYm91bmNlZFNhdmUoKTsgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXRjaGVzICYmIGUudGFyZ2V0Lm1hdGNoZXMoJy5hZmwtcGktaW5wdXQnKSkgeyBkZWJvdW5jZWRTYXZlKCk7IH0KICAgICAgICB9KTsKCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQuaWQgPT09ICdhZmwtcmVwbGFjZS1idG4nIHx8IChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNhZmwtcmVwbGFjZS1idG4nKSkpIHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGxldCBidG4gPSBlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJy5hZmwtY2l2aWxpdHktb3B0Jyk7CiAgICAgICAgICAgIGlmICghYnRuKSB7IHJldHVybjsgfQogICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpOwogICAgICAgICAgICBsZXQgaW5wdXQgPSB0YXJnZXRJZCA/ICQodGFyZ2V0SWQpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGlucHV0KSB7IGlucHV0LnZhbHVlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpIHx8ICcnOyB9CiAgICAgICAgICAgIGxldCBncm91cCA9IGJ0bi5jbG9zZXN0ICYmIGJ0bi5jbG9zZXN0KCcuYWZsLWNpdmlsaXR5LWdyb3VwJyk7CiAgICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICAgICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLmFmbC1jaXZpbGl0eS1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCdhZmwtY2l2aWxpdHktb3B0LS1hY3RpdmUnLCBiID09PSBidG4pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVib3VuY2VkU2F2ZSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEJvb3QKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBib290KGNoZWNrb3V0RWwpIHsKICAgICAgICBpbmplY3RTZWN0aW9uKGNoZWNrb3V0RWwpOwogICAgICAgIHNhdmVGaWVsZHNUb1Nlc3Npb24oZmFsc2UpOwogICAgICAgIGludGVyY2VwdFBsYWNlT3JkZXIoKTsKICAgIH0KCiAgICB3YWl0Rm9yQ2hlY2tvdXQoYm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7Cn0pKCk7Cn0pOw==":["input"],"https://www.aflyon.org/categorie-produit/cours/cours-particuliers/":["input","keyup","keydown"],"data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHt3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gPSB7ImFqYXhVcmwiOiJodHRwczpcL1wvd3d3LmFmbHlvbi5vcmdcL3dwXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6IjUzOGNjYWQ3NWIiLCJleGlzdGluZ0NuaUlkIjowLCJzdG9yZU5zIjoiYWZsLWNoZWNrb3V0IiwiaTE4biI6eyJ1cGxvYWRpbmciOiJTdWJpZW5kb1x1MjAyNiIsImZpbGVTYXZlZCI6IkFyY2hpdm8gZ3VhcmRhZG8uIiwidXBsb2FkRXJyb3IiOiJFcnJvciBhbCBzdWJpciBlbCBhcmNoaXZvLiIsImludmFsaWRSZXNwb25zZSI6IlJlc3B1ZXN0YSBubyB2XHUwMGUxbGlkYS4iLCJuZXR3b3JrRXJyb3IiOiJFcnJvciBkZSByZWQuIiwiaWREb2N1bWVudFJlcXVpcmVkIjoiUG9yIGZhdm9yLCBzdWJhIHN1IGRvY3VtZW50byBkZSBpZGVudGlkYWQuIiwiaWREb2N1bWVudFJlcXVpcmVkU2hvcnQiOiJFbCBkb2N1bWVudG8gZGUgaWRlbnRpZGFkIGVzIG9ibGlnYXRvcmlvLiIsImxlYXJuZXJMYXN0TmFtZVJlcXVpcmVkIjoiRWwgYXBlbGxpZG8gZGVsIGFwcmVuZGl6XC9jYW5kaWRhdG8gZXMgb2JsaWdhdG9yaW8uIiwibGVhcm5lckZpcnN0TmFtZVJlcXVpcmVkIjoiRWwgbm9tYnJlIGRlbCBhcHJlbmRpelwvY2FuZGlkYXRvIGVzIG9ibGlnYXRvcmlvLiIsImJpcnRoRGF0ZVJlcXVpcmVkIjoiTGEgZmVjaGEgZGUgbmFjaW1pZW50byBlcyBvYmxpZ2F0b3JpYS4iLCJiaXJ0aENpdHlSZXF1aXJlZCI6IkxhIGNpdWRhZCBkZSBuYWNpbWllbnRvIGVzIG9ibGlnYXRvcmlhLiIsImJpcnRoQ291bnRyeVJlcXVpcmVkIjoiRWwgcGFcdTAwZWRzIGRlIG5hY2ltaWVudG8gZXMgb2JsaWdhdG9yaW8uIiwiY2l0aXplbnNoaXBSZXF1aXJlZCI6IkxhIG5hY2lvbmFsaWRhZCBlcyBvYmxpZ2F0b3JpYS4iLCJtb3RoZXJUb25ndWVSZXF1aXJlZCI6IkxhIGxlbmd1YSBtYXRlcm5hIGVzIG9ibGlnYXRvcmlhLiIsInRpdGxlUmVxdWlyZWQiOiJFbCB0cmF0YW1pZW50byBlcyBvYmxpZ2F0b3Jpby4iLCJmaXJzdE5hbWVSZXF1aXJlZCI6IkVsIG5vbWJyZSBlcyBvYmxpZ2F0b3Jpby4iLCJsYXN0TmFtZVJlcXVpcmVkIjoiRWwgYXBlbGxpZG8gZXMgb2JsaWdhdG9yaW8uIiwiYWRkcmVzc1JlcXVpcmVkIjoiTGEgZGlyZWNjaVx1MDBmM24gZXMgb2JsaWdhdG9yaWEuIiwiY2l0eVJlcXVpcmVkIjoiTGEgY2l1ZGFkIGVzIG9ibGlnYXRvcmlhLiIsInBvc3Rjb2RlUmVxdWlyZWQiOiJFbCBjXHUwMGYzZGlnbyBwb3N0YWwgZXMgb2JsaWdhdG9yaW8uIiwiY291bnRyeVJlcXVpcmVkIjoiRWwgcGFcdTAwZWRzIGVzIG9ibGlnYXRvcmlvLiIsInZhbGlkRW1haWxSZXF1aXJlZCI6IlNlIHJlcXVpZXJlIHVuIGNvcnJlbyBlbGVjdHJcdTAwZjNuaWNvIHZcdTAwZTFsaWRvLiJ9LCJwcmVmaWxsIjp7ImNpdmlsaXR5IjoiIiwibGVhcm5lckxhc3ROYW1lIjoiIiwibGVhcm5lckZpcnN0TmFtZSI6IiIsImJpcnRoRGF0ZSI6IiIsImJpcnRoQ2l0eSI6IiIsImJpcnRoQ291bnRyeSI6IiIsImNpdGl6ZW5zaGlwIjoiIiwibW90aGVydG9uZ3VlIjoiIn19Oy8qIEFGTCBDaGVja291dCDigJMgUGVyc29uYWwgSW5mb3JtYXRpb24KICogU2VjdGlvbiBpcyBpbmplY3RlZCBpbnNpZGUgdGhlIGNoZWNrb3V0IGZvcm0uIElmIFJlYWN0IHJlbW92ZXMgaXQsCiAqIGEgTXV0YXRpb25PYnNlcnZlciByZS1pbnNlcnRzIGEgY2xvbmUgc28gdGhlIGJsb2NrIHN0YXlzIHZpc2libGUuCiAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBjZmcgPSB3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gfHwge307CiAgICBpZiAoIWNmZy5hamF4VXJsKSB7IHJldHVybjsgfQoKICAgIGxldCBpMThuID0gY2ZnLmkxOG4gfHwge307CiAgICBsZXQgc2F2ZVRpbWVyID0gbnVsbDsKICAgIGxldCBpbmplY3RlZFNlY3Rpb24gPSBudWxsOyAgLy8gcmVmZXJlbmNlIHRvIHRoZSBub2RlIHdlIGluc2VydGVkCiAgICBsZXQgYmFja3VwQ2xvbmUgPSBudWxsOyAgICAgIC8vIGNsb25lIHVzZWQgdG8gcmUtaW5zZXJ0IHdoZW4gUmVhY3QgcmVtb3ZlcyBvdXIgbm9kZQoKICAgIGZ1bmN0aW9uICQoaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQogICAgZnVuY3Rpb24gdmFsKGlkKSB7IGxldCBlbCA9ICQoaWQpOyByZXR1cm4gZWwgPyAoZWwudmFsdWUgfHwgJycpLnRyaW0oKSA6ICcnOyB9CiAgICBmdW5jdGlvbiB0KGtleSwgZmFsbGJhY2spIHsgcmV0dXJuIGkxOG5ba2V5XSB8fCBmYWxsYmFjayB8fCAnJzsgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFdhaXQgZm9yIHRoZSBXQyBjaGVja291dCBibG9jawogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JDaGVja291dChjYikgewogICAgICAgIGxldCBzZWwgPSBbCiAgICAgICAgICAgICcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQnLAogICAgICAgICAgICAnW2RhdGEtYmxvY2stbmFtZT0id29vY29tbWVyY2UvY2hlY2tvdXQiXScsCiAgICAgICAgICAgICcud2MtYmxvY2stY2hlY2tvdXQnLAogICAgICAgIF07CiAgICAgICAgZnVuY3Rpb24gZmluZCgpIHsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7aSA8IHNlbC5sZW5ndGg7aSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbFtpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHsgcmV0dXJuIGVsOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gZmluZCgpOwogICAgICAgIGlmICh0KSB7IGNiKHQpOyByZXR1cm47IH0KICAgICAgICBsZXQgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgdCA9IGZpbmQoKTsKICAgICAgICAgICAgaWYgKHQpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgY2IodCk7IH0KICAgICAgICB9KTsKICAgICAgICBvYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgfSwgMTUwMDApOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEluamVjdCBzZWN0aW9uIGluc2lkZSBjaGVja291dCBmb3JtOyBrZWVwIGJhY2t1cCB0byByZS1pbnNlcnQgaWYgcmVtb3ZlZAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKSB7CiAgICAgICAgbGV0IGlubmVyID0gY2hlY2tvdXRFbC5xdWVyeVNlbGVjdG9yKCcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQtZmllbGRzLWJsb2NrJyk7CiAgICAgICAgcmV0dXJuIGlubmVyIHx8IGNoZWNrb3V0RWwucXVlcnlTZWxlY3RvcignLndjLWJsb2NrLWNoZWNrb3V0X19tYWluJykgfHwgY2hlY2tvdXRFbDsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0U2VsZWN0c0luU2VjdGlvbihzZWN0aW9uKSB7CiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbZGF0YS1pbml0aWFsXScpLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgewogICAgICAgICAgICBsZXQgaW5pdGlhbCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbCcpOwogICAgICAgICAgICBpZiAoaW5pdGlhbCkgeyBzZWwudmFsdWUgPSBpbml0aWFsOyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5qZWN0U2VjdGlvbihjaGVja291dEVsKSB7CiAgICAgICAgbGV0IHBhcmVudCA9IGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKTsKICAgICAgICBpZiAoIXBhcmVudCkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IHN0YWdpbmcgPSAkKCdhZmwtY25pLXN0YWdpbmcnKTsKICAgICAgICBpZiAoIXN0YWdpbmcpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbmplY3RlZCBzZWN0aW9uIHRoYXQgd2FzIHJlbW92ZWQsIHJlLWluc2VydCBmcm9tIGJhY2t1cAogICAgICAgIGlmIChpbmplY3RlZFNlY3Rpb24gJiYgIWRvY3VtZW50LmJvZHkuY29udGFpbnMoaW5qZWN0ZWRTZWN0aW9uKSAmJiBiYWNrdXBDbG9uZSkgewogICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgIGluamVjdGVkU2VjdGlvbiA9IGJhY2t1cENsb25lOwogICAgICAgICAgICBiYWNrdXBDbG9uZSA9IGJhY2t1cENsb25lLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNlY3Rpb24gPSBzdGFnaW5nLnF1ZXJ5U2VsZWN0b3IoJyNhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICBpZiAoIXNlY3Rpb24pIHsgcmV0dXJuOyB9CgogICAgICAgIHNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc2VjdGlvbiwgcGFyZW50LmZpcnN0Q2hpbGQpOwogICAgICAgIGluamVjdGVkU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICBiYWNrdXBDbG9uZSA9IHNlY3Rpb24uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAvLyBJZiBSZWFjdCByZW1vdmVzIG91ciBzZWN0aW9uLCB3ZSdsbCByZS1pbnNlcnQgdGhlIGJhY2t1cAogICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGluamVjdGVkU2VjdGlvbiAmJiAhZG9jdW1lbnQuYm9keS5jb250YWlucyhpbmplY3RlZFNlY3Rpb24pICYmIGJhY2t1cENsb25lICYmIHBhcmVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBpbmplY3RlZFNlY3Rpb24gPSBiYWNrdXBDbG9uZTsKICAgICAgICAgICAgICAgIGJhY2t1cENsb25lID0gYmFja3VwQ2xvbmUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIGluaXRTZWxlY3RzSW5TZWN0aW9uKGluamVjdGVkU2VjdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogc2F2ZSB0ZXh0IGZpZWxkcyB0byBXQyBzZXNzaW9uCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gc2F2ZUZpZWxkc1RvU2Vzc2lvbihzeW5jKSB7CiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3NhdmVfZmllbGRzJyk7CiAgICAgICAgZmQuYXBwZW5kKCdub25jZScsIGNmZy5ub25jZSk7CiAgICAgICAgZmQuYXBwZW5kKCdjaXZpbGl0eScsIHZhbCgnYWZsX2NpdmlsaXR5JykpOwogICAgICAgIGZkLmFwcGVuZCgnbGVhcm5lcl9sYXN0X25hbWUnLCB2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2xlYXJuZXJfZmlyc3RfbmFtZScsIHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2JpcnRoX2RhdGUnLCB2YWwoJ2FmbF9iaXJ0aF9kYXRlJykpOwogICAgICAgIGZkLmFwcGVuZCgnYmlydGhfY2l0eScsIHZhbCgnYWZsX2JpcnRoX2NpdHknKSk7CiAgICAgICAgZmQuYXBwZW5kKCdiaXJ0aF9jb3VudHJ5JywgdmFsKCdhZmxfYmlydGhfY291bnRyeScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2NpdGl6ZW5zaGlwJywgdmFsKCdhZmxfY2l0aXplbnNoaXAnKSk7CiAgICAgICAgZmQuYXBwZW5kKCdtb3RoZXJ0b25ndWUnLCB2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSk7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdQT1NUJywgY2ZnLmFqYXhVcmwsICFzeW5jKTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVib3VuY2VkU2F2ZSgpIHsKICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVyKTsKICAgICAgICBzYXZlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2F2ZUZpZWxkc1RvU2Vzc2lvbihmYWxzZSk7IH0sIDQwMCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogZmlsZSB1cGxvYWQKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgewogICAgICAgIGxldCBpbnB1dCA9ICQoJ2FmbF9jbmlfZmlsZScpOwogICAgICAgIGlmICghaW5wdXQgfHwgIWlucHV0LmZpbGVzIHx8ICFpbnB1dC5maWxlc1swXSkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IGZpbGUgPSBpbnB1dC5maWxlc1swXTsKICAgICAgICBsZXQgc3RhdHVzID0gJCgnYWZsLXVwbG9hZC1zdGF0dXMnKTsKICAgICAgICBsZXQgZmlsZU5hbWUgPSAkKCdhZmwtZmlsZS1uYW1lJyk7CiAgICAgICAgbGV0IGRvY1R5cGUgPSB2YWwoJ2FmbF9jbmlfdHlwZScpIHx8ICdjbmknOwoKICAgICAgICBpZiAoc3RhdHVzKSB7IHN0YXR1cy50ZXh0Q29udGVudCA9IHQoJ3VwbG9hZGluZycsICdVcGxvYWRpbmfigKYnKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyc7IH0KICAgICAgICBpZiAoZmlsZU5hbWUpIHsgZmlsZU5hbWUudGV4dENvbnRlbnQgPSBmaWxlLm5hbWU7IH0KCiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3VwbG9hZF9jbmknKTsKICAgICAgICBmZC5hcHBlbmQoJ25vbmNlJywgY2ZnLm5vbmNlKTsKICAgICAgICBmZC5hcHBlbmQoJ2FmbF9jaGVja291dF9maWxlJywgZmlsZSk7CiAgICAgICAgZmQuYXBwZW5kKCdkb2NfdHlwZScsIGRvY1R5cGUpOwoKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCBjZmcuYWpheFVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCByZXNwID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgIGlmIChyZXNwLnN1Y2Nlc3MgJiYgcmVzcC5kYXRhICYmIHJlc3AuZGF0YS5hdHRhY2htZW50X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gcmVzcC5kYXRhLmF0dGFjaG1lbnRfaWQ7IH0KICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKCdhZmwtY25pLWVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyTICcgKyB0KCdmaWxlU2F2ZWQnLCAnRmlsZSBzYXZlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLW9rJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSAocmVzcC5kYXRhICYmIHJlc3AuZGF0YS5tZXNzYWdlKSB8fCB0KCd1cGxvYWRFcnJvcicsICdVcGxvYWQgZXJyb3IuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyBtc2c7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeyBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyB0KCdpbnZhbGlkUmVzcG9uc2UnLCAnSW52YWxpZCByZXNwb25zZS4nKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLWVycic7IH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChzdGF0dXMpIHsgc3RhdHVzLnRleHRDb250ZW50ID0gJ+KclyAnICsgdCgnbmV0d29ya0Vycm9yJywgJ05ldHdvcmsgZXJyb3IuJyk7IHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOyB9CiAgICAgICAgfTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gIlJlcGxhY2UiIGJ1dHRvbgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGhhbmRsZVJlcGxhY2UoKSB7CiAgICAgICAgbGV0IGV4aXN0aW5nID0gJCgnYWZsLWV4aXN0aW5nLWZpbGUnKTsKICAgICAgICBsZXQgdXBsb2FkID0gJCgnYWZsLXVwbG9hZC1maWVsZCcpOwogICAgICAgIGlmIChleGlzdGluZykgeyBleGlzdGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9CiAgICAgICAgaWYgKHVwbG9hZCkgeyB1cGxvYWQuc3R5bGUuZGlzcGxheSA9ICcnOyB9CiAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gJyc7IH0KICAgIH0KCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBEaXNwYXRjaCB0byBXQyBTdG9yZSAoYmVzdC1lZmZvcnQsIGZvciBleHRlbnNpb25zIHBheWxvYWQpCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gZGlzcGF0Y2hUb1N0b3JlKCkgewogICAgICAgIGlmICghd2luZG93LndwIHx8ICF3aW5kb3cud3AuZGF0YSkgeyByZXR1cm47IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IHdpbmRvdy53cC5kYXRhLmRpc3BhdGNoKCd3Yy9zdG9yZS9jaGVja291dCcpOwogICAgICAgICAgICBpZiAoIWQgfHwgdHlwZW9mIGQuc2V0RXh0ZW5zaW9uRGF0YSAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH0KICAgICAgICAgICAgZC5zZXRFeHRlbnNpb25EYXRhKGNmZy5zdG9yZU5zIHx8ICdhZmwtY2hlY2tvdXQnLCB7CiAgICAgICAgICAgICAgICBjbmlfYXR0YWNobWVudF9pZDogcGFyc2VJbnQodmFsKCdhZmxfY25pX2F0dGFjaG1lbnRfaWQnKSwgMTApIHx8IDAsCiAgICAgICAgICAgICAgICBjaXZpbGl0eTogU3RyaW5nKHZhbCgnYWZsX2NpdmlsaXR5JykgfHwgJycpLAogICAgICAgICAgICAgICAgbGVhcm5lcl9sYXN0X25hbWU6IFN0cmluZyh2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGxlYXJuZXJfZmlyc3RfbmFtZTogU3RyaW5nKHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGJpcnRoX2RhdGU6IFN0cmluZyh2YWwoJ2FmbF9iaXJ0aF9kYXRlJykgfHwgJycpLAogICAgICAgICAgICAgICAgYmlydGhfY2l0eTogU3RyaW5nKHZhbCgnYWZsX2JpcnRoX2NpdHknKSB8fCAnJyksCiAgICAgICAgICAgICAgICBiaXJ0aF9jb3VudHJ5OiBTdHJpbmcodmFsKCdhZmxfYmlydGhfY291bnRyeScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGNpdGl6ZW5zaGlwOiBTdHJpbmcodmFsKCdhZmxfY2l0aXplbnNoaXAnKSB8fCAnJyksCiAgICAgICAgICAgICAgICBtb3RoZXJ0b25ndWU6IFN0cmluZyh2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSB8fCAnJyksCiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogbm8tb3AgKi8gfQogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFZhbGlkYXRpb24KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgIGxldCBlbCA9ICQoaWQpOwogICAgICAgIGlmIChlbCkgeyBlbC50ZXh0Q29udGVudCA9IG1zZzsgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3IoaWQpIHsKICAgICAgICBsZXQgZWwgPSAkKGlkKTsKICAgICAgICBpZiAoZWwpIHsgZWwuc3R5bGUuZGlzcGxheSA9ICcnOyBlbC50ZXh0Q29udGVudCA9ICcnOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdmFsaWRhdGVBbGwoKSB7CiAgICAgICAgbGV0IG9rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCFwYXJzZUludCh2YWwoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpLCAxMCkpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtY25pLWVycm9yJywgdCgnaWREb2N1bWVudFJlcXVpcmVkJywgJ1BsZWFzZSB1cGxvYWQgeW91ciBpZGVudGl0eSBkb2N1bWVudC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWNuaS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbGVhcm5lcl9sYXN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWxhc3QtbmFtZS1lcnJvcicsIHQoJ2xlYXJuZXJMYXN0TmFtZVJlcXVpcmVkJywgIkxlYXJuZXIncyAvIGNhbmRpZGF0ZSdzIGxhc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItbGFzdC1uYW1lLWVycm9yJyk7IH0KCiAgICAgICAgaWYgKCF2YWwoJ2FmbF9sZWFybmVyX2ZpcnN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWZpcnN0LW5hbWUtZXJyb3InLCB0KCdsZWFybmVyRmlyc3ROYW1lUmVxdWlyZWQnLCAiTGVhcm5lcidzIC8gY2FuZGlkYXRlJ3MgZmlyc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItZmlyc3QtbmFtZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfZGF0ZScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWRhdGUtZXJyb3InLCB0KCdiaXJ0aERhdGVSZXF1aXJlZCcsICdEYXRlIG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtZGF0ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY2l0eScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNpdHktZXJyb3InLCB0KCdiaXJ0aENpdHlSZXF1aXJlZCcsICdDaXR5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY2l0eS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY291bnRyeScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNvdW50cnktZXJyb3InLCB0KCdiaXJ0aENvdW50cnlSZXF1aXJlZCcsICdDb3VudHJ5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY291bnRyeS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfY2l0aXplbnNoaXAnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicsIHQoJ2NpdGl6ZW5zaGlwUmVxdWlyZWQnLCAnQ2l0aXplbnNoaXAgaXMgcmVxdWlyZWQuJykpOyBvayA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7IGNsZWFyRXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbW90aGVydG9uZ3VlJykpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtbW90aGVydG9uZ3VlLWVycm9yJywgdCgnbW90aGVyVG9uZ3VlUmVxdWlyZWQnLCAnTW90aGVyIHRvbmd1ZSBpcyByZXF1aXJlZC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLW1vdGhlcnRvbmd1ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgbGV0IHMgPSAkKCdhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHMpIHsgcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9rOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEludGVyY2VwdCBQbGFjZSBPcmRlcgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGludGVyY2VwdFBsYWNlT3JkZXIoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBsZXQgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAgICAgICAgICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24sICcgKwoJCQkJJ1tkYXRhLXRlc3RpZD0iY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uIl0sICcgKwoJCQkJJy53cC1ibG9jay13b29jb21tZXJjZS1jaGVja291dC1wYXltZW50LWJsb2NrIGJ1dHRvblt0eXBlPSJzdWJtaXQiXScKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCFidG4pIHsgcmV0dXJuOyB9CgogICAgICAgICAgICBzYXZlRmllbGRzVG9TZXNzaW9uKHRydWUpOwogICAgICAgICAgICBkaXNwYXRjaFRvU3RvcmUoKTsKCiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGwoKSkgewogICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIHRydWUpOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEV2ZW50cwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkID09PSAnYWZsX2NuaV9maWxlJykgeyBoYW5kbGVGaWxlVXBsb2FkKCk7IH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMgJiYgZS50YXJnZXQubWF0Y2hlcygnLmFmbC1waS1pbnB1dCcpKSB7IGRlYm91bmNlZFNhdmUoKTsgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXRjaGVzICYmIGUudGFyZ2V0Lm1hdGNoZXMoJy5hZmwtcGktaW5wdXQnKSkgeyBkZWJvdW5jZWRTYXZlKCk7IH0KICAgICAgICB9KTsKCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQuaWQgPT09ICdhZmwtcmVwbGFjZS1idG4nIHx8IChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNhZmwtcmVwbGFjZS1idG4nKSkpIHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGxldCBidG4gPSBlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJy5hZmwtY2l2aWxpdHktb3B0Jyk7CiAgICAgICAgICAgIGlmICghYnRuKSB7IHJldHVybjsgfQogICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpOwogICAgICAgICAgICBsZXQgaW5wdXQgPSB0YXJnZXRJZCA/ICQodGFyZ2V0SWQpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGlucHV0KSB7IGlucHV0LnZhbHVlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpIHx8ICcnOyB9CiAgICAgICAgICAgIGxldCBncm91cCA9IGJ0bi5jbG9zZXN0ICYmIGJ0bi5jbG9zZXN0KCcuYWZsLWNpdmlsaXR5LWdyb3VwJyk7CiAgICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICAgICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLmFmbC1jaXZpbGl0eS1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCdhZmwtY2l2aWxpdHktb3B0LS1hY3RpdmUnLCBiID09PSBidG4pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVib3VuY2VkU2F2ZSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEJvb3QKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBib290KGNoZWNrb3V0RWwpIHsKICAgICAgICBpbmplY3RTZWN0aW9uKGNoZWNrb3V0RWwpOwogICAgICAgIHNhdmVGaWVsZHNUb1Nlc3Npb24oZmFsc2UpOwogICAgICAgIGludGVyY2VwdFBsYWNlT3JkZXIoKTsKICAgIH0KCiAgICB3YWl0Rm9yQ2hlY2tvdXQoYm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7Cn0pKCk7Cn0pOw==":["input"],"https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.GRsEQlAF6LQ.2021.O/ck=ytembeds.base.qzDvqMbGmKI.L.W.O/am=AAAAQA/d=1/exm=base,root/excm=base,root/ed=1/br=1/rs=AGKMywESyf9Y9X87KVWSKj1IXnBDyFLpDQ/m=r78Drb":["keydown"],"https://www.youtube.com/s/player/8ab5c328/player_embed_es6.vflset/en_US/base.js":["keyup","keydown"],"https://cdn.trustindex.io/loader.js":["keydown","keyup"],"https://www.aflyon.org/es/":["input","keyup","keydown"],"data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHt3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gPSB7ImFqYXhVcmwiOiJodHRwczpcL1wvd3d3LmFmbHlvbi5vcmdcL3dwXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6IjUzOGNjYWQ3NWIiLCJleGlzdGluZ0NuaUlkIjowLCJzdG9yZU5zIjoiYWZsLWNoZWNrb3V0IiwiaTE4biI6eyJ1cGxvYWRpbmciOiJFbnZvaSBlbiBjb3Vyc1x1MjAyNiIsImZpbGVTYXZlZCI6IkZpY2hpZXIgZW5yZWdpc3RyXHUwMGU5LiIsInVwbG9hZEVycm9yIjoiRXJyZXVyIGxvcnMgZHUgdFx1MDBlOWxcdTAwZTl2ZXJzZW1lbnQuIiwiaW52YWxpZFJlc3BvbnNlIjoiUlx1MDBlOXBvbnNlIGludmFsaWRlLiIsIm5ldHdvcmtFcnJvciI6IkVycmV1ciByXHUwMGU5c2VhdS4iLCJpZERvY3VtZW50UmVxdWlyZWQiOiJWZXVpbGxleiB0XHUwMGU5bFx1MDBlOXZlcnNlciB2b3RyZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkuIiwiaWREb2N1bWVudFJlcXVpcmVkU2hvcnQiOiJMZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsImxlYXJuZXJMYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGRlIGwnYXBwcmVuYW50XC9jYW5kaWRhdCBlc3Qgb2JsaWdhdG9pcmUuIiwibGVhcm5lckZpcnN0TmFtZVJlcXVpcmVkIjoiTGUgcHJcdTAwZTlub20gZGUgbCdhcHByZW5hbnRcL2NhbmRpZGF0IGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aERhdGVSZXF1aXJlZCI6IkxhIGRhdGUgZGUgbmFpc3NhbmNlIGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aENpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiYmlydGhDb3VudHJ5UmVxdWlyZWQiOiJMZSBwYXlzIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiY2l0aXplbnNoaXBSZXF1aXJlZCI6IkxhIG5hdGlvbmFsaXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsIm1vdGhlclRvbmd1ZVJlcXVpcmVkIjoiTGEgbGFuZ3VlIG1hdGVybmVsbGUgZXN0IG9ibGlnYXRvaXJlLiIsInRpdGxlUmVxdWlyZWQiOiJMYSBjaXZpbGl0XHUwMGU5IGVzdCBvYmxpZ2F0b2lyZS4iLCJmaXJzdE5hbWVSZXF1aXJlZCI6IkxlIHByXHUwMGU5bm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJsYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJhZGRyZXNzUmVxdWlyZWQiOiJMJ2FkcmVzc2UgZXN0IG9ibGlnYXRvaXJlLiIsImNpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGVzdCBvYmxpZ2F0b2lyZS4iLCJwb3N0Y29kZVJlcXVpcmVkIjoiTGUgY29kZSBwb3N0YWwgZXN0IG9ibGlnYXRvaXJlLiIsImNvdW50cnlSZXF1aXJlZCI6IkxlIHBheXMgZXN0IG9ibGlnYXRvaXJlLiIsInZhbGlkRW1haWxSZXF1aXJlZCI6IlVuIGUtbWFpbCB2YWxpZGUgZXN0IG9ibGlnYXRvaXJlLiJ9LCJwcmVmaWxsIjp7ImNpdmlsaXR5IjoiIiwibGVhcm5lckxhc3ROYW1lIjoiIiwibGVhcm5lckZpcnN0TmFtZSI6IiIsImJpcnRoRGF0ZSI6IiIsImJpcnRoQ2l0eSI6IiIsImJpcnRoQ291bnRyeSI6IiIsImNpdGl6ZW5zaGlwIjoiIiwibW90aGVydG9uZ3VlIjoiIn19Oy8qIEFGTCBDaGVja291dCDigJMgUGVyc29uYWwgSW5mb3JtYXRpb24KICogU2VjdGlvbiBpcyBpbmplY3RlZCBpbnNpZGUgdGhlIGNoZWNrb3V0IGZvcm0uIElmIFJlYWN0IHJlbW92ZXMgaXQsCiAqIGEgTXV0YXRpb25PYnNlcnZlciByZS1pbnNlcnRzIGEgY2xvbmUgc28gdGhlIGJsb2NrIHN0YXlzIHZpc2libGUuCiAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBjZmcgPSB3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gfHwge307CiAgICBpZiAoIWNmZy5hamF4VXJsKSB7IHJldHVybjsgfQoKICAgIGxldCBpMThuID0gY2ZnLmkxOG4gfHwge307CiAgICBsZXQgc2F2ZVRpbWVyID0gbnVsbDsKICAgIGxldCBpbmplY3RlZFNlY3Rpb24gPSBudWxsOyAgLy8gcmVmZXJlbmNlIHRvIHRoZSBub2RlIHdlIGluc2VydGVkCiAgICBsZXQgYmFja3VwQ2xvbmUgPSBudWxsOyAgICAgIC8vIGNsb25lIHVzZWQgdG8gcmUtaW5zZXJ0IHdoZW4gUmVhY3QgcmVtb3ZlcyBvdXIgbm9kZQoKICAgIGZ1bmN0aW9uICQoaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQogICAgZnVuY3Rpb24gdmFsKGlkKSB7IGxldCBlbCA9ICQoaWQpOyByZXR1cm4gZWwgPyAoZWwudmFsdWUgfHwgJycpLnRyaW0oKSA6ICcnOyB9CiAgICBmdW5jdGlvbiB0KGtleSwgZmFsbGJhY2spIHsgcmV0dXJuIGkxOG5ba2V5XSB8fCBmYWxsYmFjayB8fCAnJzsgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFdhaXQgZm9yIHRoZSBXQyBjaGVja291dCBibG9jawogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JDaGVja291dChjYikgewogICAgICAgIGxldCBzZWwgPSBbCiAgICAgICAgICAgICcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQnLAogICAgICAgICAgICAnW2RhdGEtYmxvY2stbmFtZT0id29vY29tbWVyY2UvY2hlY2tvdXQiXScsCiAgICAgICAgICAgICcud2MtYmxvY2stY2hlY2tvdXQnLAogICAgICAgIF07CiAgICAgICAgZnVuY3Rpb24gZmluZCgpIHsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7aSA8IHNlbC5sZW5ndGg7aSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbFtpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHsgcmV0dXJuIGVsOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gZmluZCgpOwogICAgICAgIGlmICh0KSB7IGNiKHQpOyByZXR1cm47IH0KICAgICAgICBsZXQgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgdCA9IGZpbmQoKTsKICAgICAgICAgICAgaWYgKHQpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgY2IodCk7IH0KICAgICAgICB9KTsKICAgICAgICBvYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgfSwgMTUwMDApOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEluamVjdCBzZWN0aW9uIGluc2lkZSBjaGVja291dCBmb3JtOyBrZWVwIGJhY2t1cCB0byByZS1pbnNlcnQgaWYgcmVtb3ZlZAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKSB7CiAgICAgICAgbGV0IGlubmVyID0gY2hlY2tvdXRFbC5xdWVyeVNlbGVjdG9yKCcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQtZmllbGRzLWJsb2NrJyk7CiAgICAgICAgcmV0dXJuIGlubmVyIHx8IGNoZWNrb3V0RWwucXVlcnlTZWxlY3RvcignLndjLWJsb2NrLWNoZWNrb3V0X19tYWluJykgfHwgY2hlY2tvdXRFbDsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0U2VsZWN0c0luU2VjdGlvbihzZWN0aW9uKSB7CiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbZGF0YS1pbml0aWFsXScpLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgewogICAgICAgICAgICBsZXQgaW5pdGlhbCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbCcpOwogICAgICAgICAgICBpZiAoaW5pdGlhbCkgeyBzZWwudmFsdWUgPSBpbml0aWFsOyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5qZWN0U2VjdGlvbihjaGVja291dEVsKSB7CiAgICAgICAgbGV0IHBhcmVudCA9IGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKTsKICAgICAgICBpZiAoIXBhcmVudCkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IHN0YWdpbmcgPSAkKCdhZmwtY25pLXN0YWdpbmcnKTsKICAgICAgICBpZiAoIXN0YWdpbmcpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbmplY3RlZCBzZWN0aW9uIHRoYXQgd2FzIHJlbW92ZWQsIHJlLWluc2VydCBmcm9tIGJhY2t1cAogICAgICAgIGlmIChpbmplY3RlZFNlY3Rpb24gJiYgIWRvY3VtZW50LmJvZHkuY29udGFpbnMoaW5qZWN0ZWRTZWN0aW9uKSAmJiBiYWNrdXBDbG9uZSkgewogICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgIGluamVjdGVkU2VjdGlvbiA9IGJhY2t1cENsb25lOwogICAgICAgICAgICBiYWNrdXBDbG9uZSA9IGJhY2t1cENsb25lLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNlY3Rpb24gPSBzdGFnaW5nLnF1ZXJ5U2VsZWN0b3IoJyNhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICBpZiAoIXNlY3Rpb24pIHsgcmV0dXJuOyB9CgogICAgICAgIHNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc2VjdGlvbiwgcGFyZW50LmZpcnN0Q2hpbGQpOwogICAgICAgIGluamVjdGVkU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICBiYWNrdXBDbG9uZSA9IHNlY3Rpb24uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAvLyBJZiBSZWFjdCByZW1vdmVzIG91ciBzZWN0aW9uLCB3ZSdsbCByZS1pbnNlcnQgdGhlIGJhY2t1cAogICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGluamVjdGVkU2VjdGlvbiAmJiAhZG9jdW1lbnQuYm9keS5jb250YWlucyhpbmplY3RlZFNlY3Rpb24pICYmIGJhY2t1cENsb25lICYmIHBhcmVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBpbmplY3RlZFNlY3Rpb24gPSBiYWNrdXBDbG9uZTsKICAgICAgICAgICAgICAgIGJhY2t1cENsb25lID0gYmFja3VwQ2xvbmUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIGluaXRTZWxlY3RzSW5TZWN0aW9uKGluamVjdGVkU2VjdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogc2F2ZSB0ZXh0IGZpZWxkcyB0byBXQyBzZXNzaW9uCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gc2F2ZUZpZWxkc1RvU2Vzc2lvbihzeW5jKSB7CiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3NhdmVfZmllbGRzJyk7CiAgICAgICAgZmQuYXBwZW5kKCdub25jZScsIGNmZy5ub25jZSk7CiAgICAgICAgZmQuYXBwZW5kKCdjaXZpbGl0eScsIHZhbCgnYWZsX2NpdmlsaXR5JykpOwogICAgICAgIGZkLmFwcGVuZCgnbGVhcm5lcl9sYXN0X25hbWUnLCB2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2xlYXJuZXJfZmlyc3RfbmFtZScsIHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2JpcnRoX2RhdGUnLCB2YWwoJ2FmbF9iaXJ0aF9kYXRlJykpOwogICAgICAgIGZkLmFwcGVuZCgnYmlydGhfY2l0eScsIHZhbCgnYWZsX2JpcnRoX2NpdHknKSk7CiAgICAgICAgZmQuYXBwZW5kKCdiaXJ0aF9jb3VudHJ5JywgdmFsKCdhZmxfYmlydGhfY291bnRyeScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2NpdGl6ZW5zaGlwJywgdmFsKCdhZmxfY2l0aXplbnNoaXAnKSk7CiAgICAgICAgZmQuYXBwZW5kKCdtb3RoZXJ0b25ndWUnLCB2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSk7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdQT1NUJywgY2ZnLmFqYXhVcmwsICFzeW5jKTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVib3VuY2VkU2F2ZSgpIHsKICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVyKTsKICAgICAgICBzYXZlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2F2ZUZpZWxkc1RvU2Vzc2lvbihmYWxzZSk7IH0sIDQwMCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogZmlsZSB1cGxvYWQKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgewogICAgICAgIGxldCBpbnB1dCA9ICQoJ2FmbF9jbmlfZmlsZScpOwogICAgICAgIGlmICghaW5wdXQgfHwgIWlucHV0LmZpbGVzIHx8ICFpbnB1dC5maWxlc1swXSkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IGZpbGUgPSBpbnB1dC5maWxlc1swXTsKICAgICAgICBsZXQgc3RhdHVzID0gJCgnYWZsLXVwbG9hZC1zdGF0dXMnKTsKICAgICAgICBsZXQgZmlsZU5hbWUgPSAkKCdhZmwtZmlsZS1uYW1lJyk7CiAgICAgICAgbGV0IGRvY1R5cGUgPSB2YWwoJ2FmbF9jbmlfdHlwZScpIHx8ICdjbmknOwoKICAgICAgICBpZiAoc3RhdHVzKSB7IHN0YXR1cy50ZXh0Q29udGVudCA9IHQoJ3VwbG9hZGluZycsICdVcGxvYWRpbmfigKYnKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyc7IH0KICAgICAgICBpZiAoZmlsZU5hbWUpIHsgZmlsZU5hbWUudGV4dENvbnRlbnQgPSBmaWxlLm5hbWU7IH0KCiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3VwbG9hZF9jbmknKTsKICAgICAgICBmZC5hcHBlbmQoJ25vbmNlJywgY2ZnLm5vbmNlKTsKICAgICAgICBmZC5hcHBlbmQoJ2FmbF9jaGVja291dF9maWxlJywgZmlsZSk7CiAgICAgICAgZmQuYXBwZW5kKCdkb2NfdHlwZScsIGRvY1R5cGUpOwoKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCBjZmcuYWpheFVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCByZXNwID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgIGlmIChyZXNwLnN1Y2Nlc3MgJiYgcmVzcC5kYXRhICYmIHJlc3AuZGF0YS5hdHRhY2htZW50X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gcmVzcC5kYXRhLmF0dGFjaG1lbnRfaWQ7IH0KICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKCdhZmwtY25pLWVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyTICcgKyB0KCdmaWxlU2F2ZWQnLCAnRmlsZSBzYXZlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLW9rJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSAocmVzcC5kYXRhICYmIHJlc3AuZGF0YS5tZXNzYWdlKSB8fCB0KCd1cGxvYWRFcnJvcicsICdVcGxvYWQgZXJyb3IuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyBtc2c7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeyBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyB0KCdpbnZhbGlkUmVzcG9uc2UnLCAnSW52YWxpZCByZXNwb25zZS4nKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLWVycic7IH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChzdGF0dXMpIHsgc3RhdHVzLnRleHRDb250ZW50ID0gJ+KclyAnICsgdCgnbmV0d29ya0Vycm9yJywgJ05ldHdvcmsgZXJyb3IuJyk7IHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOyB9CiAgICAgICAgfTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gIlJlcGxhY2UiIGJ1dHRvbgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGhhbmRsZVJlcGxhY2UoKSB7CiAgICAgICAgbGV0IGV4aXN0aW5nID0gJCgnYWZsLWV4aXN0aW5nLWZpbGUnKTsKICAgICAgICBsZXQgdXBsb2FkID0gJCgnYWZsLXVwbG9hZC1maWVsZCcpOwogICAgICAgIGlmIChleGlzdGluZykgeyBleGlzdGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9CiAgICAgICAgaWYgKHVwbG9hZCkgeyB1cGxvYWQuc3R5bGUuZGlzcGxheSA9ICcnOyB9CiAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gJyc7IH0KICAgIH0KCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBEaXNwYXRjaCB0byBXQyBTdG9yZSAoYmVzdC1lZmZvcnQsIGZvciBleHRlbnNpb25zIHBheWxvYWQpCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gZGlzcGF0Y2hUb1N0b3JlKCkgewogICAgICAgIGlmICghd2luZG93LndwIHx8ICF3aW5kb3cud3AuZGF0YSkgeyByZXR1cm47IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IHdpbmRvdy53cC5kYXRhLmRpc3BhdGNoKCd3Yy9zdG9yZS9jaGVja291dCcpOwogICAgICAgICAgICBpZiAoIWQgfHwgdHlwZW9mIGQuc2V0RXh0ZW5zaW9uRGF0YSAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH0KICAgICAgICAgICAgZC5zZXRFeHRlbnNpb25EYXRhKGNmZy5zdG9yZU5zIHx8ICdhZmwtY2hlY2tvdXQnLCB7CiAgICAgICAgICAgICAgICBjbmlfYXR0YWNobWVudF9pZDogcGFyc2VJbnQodmFsKCdhZmxfY25pX2F0dGFjaG1lbnRfaWQnKSwgMTApIHx8IDAsCiAgICAgICAgICAgICAgICBjaXZpbGl0eTogU3RyaW5nKHZhbCgnYWZsX2NpdmlsaXR5JykgfHwgJycpLAogICAgICAgICAgICAgICAgbGVhcm5lcl9sYXN0X25hbWU6IFN0cmluZyh2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGxlYXJuZXJfZmlyc3RfbmFtZTogU3RyaW5nKHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGJpcnRoX2RhdGU6IFN0cmluZyh2YWwoJ2FmbF9iaXJ0aF9kYXRlJykgfHwgJycpLAogICAgICAgICAgICAgICAgYmlydGhfY2l0eTogU3RyaW5nKHZhbCgnYWZsX2JpcnRoX2NpdHknKSB8fCAnJyksCiAgICAgICAgICAgICAgICBiaXJ0aF9jb3VudHJ5OiBTdHJpbmcodmFsKCdhZmxfYmlydGhfY291bnRyeScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGNpdGl6ZW5zaGlwOiBTdHJpbmcodmFsKCdhZmxfY2l0aXplbnNoaXAnKSB8fCAnJyksCiAgICAgICAgICAgICAgICBtb3RoZXJ0b25ndWU6IFN0cmluZyh2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSB8fCAnJyksCiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogbm8tb3AgKi8gfQogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFZhbGlkYXRpb24KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgIGxldCBlbCA9ICQoaWQpOwogICAgICAgIGlmIChlbCkgeyBlbC50ZXh0Q29udGVudCA9IG1zZzsgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3IoaWQpIHsKICAgICAgICBsZXQgZWwgPSAkKGlkKTsKICAgICAgICBpZiAoZWwpIHsgZWwuc3R5bGUuZGlzcGxheSA9ICcnOyBlbC50ZXh0Q29udGVudCA9ICcnOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdmFsaWRhdGVBbGwoKSB7CiAgICAgICAgbGV0IG9rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCFwYXJzZUludCh2YWwoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpLCAxMCkpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtY25pLWVycm9yJywgdCgnaWREb2N1bWVudFJlcXVpcmVkJywgJ1BsZWFzZSB1cGxvYWQgeW91ciBpZGVudGl0eSBkb2N1bWVudC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWNuaS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbGVhcm5lcl9sYXN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWxhc3QtbmFtZS1lcnJvcicsIHQoJ2xlYXJuZXJMYXN0TmFtZVJlcXVpcmVkJywgIkxlYXJuZXIncyAvIGNhbmRpZGF0ZSdzIGxhc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItbGFzdC1uYW1lLWVycm9yJyk7IH0KCiAgICAgICAgaWYgKCF2YWwoJ2FmbF9sZWFybmVyX2ZpcnN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWZpcnN0LW5hbWUtZXJyb3InLCB0KCdsZWFybmVyRmlyc3ROYW1lUmVxdWlyZWQnLCAiTGVhcm5lcidzIC8gY2FuZGlkYXRlJ3MgZmlyc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItZmlyc3QtbmFtZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfZGF0ZScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWRhdGUtZXJyb3InLCB0KCdiaXJ0aERhdGVSZXF1aXJlZCcsICdEYXRlIG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtZGF0ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY2l0eScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNpdHktZXJyb3InLCB0KCdiaXJ0aENpdHlSZXF1aXJlZCcsICdDaXR5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY2l0eS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY291bnRyeScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNvdW50cnktZXJyb3InLCB0KCdiaXJ0aENvdW50cnlSZXF1aXJlZCcsICdDb3VudHJ5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY291bnRyeS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfY2l0aXplbnNoaXAnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicsIHQoJ2NpdGl6ZW5zaGlwUmVxdWlyZWQnLCAnQ2l0aXplbnNoaXAgaXMgcmVxdWlyZWQuJykpOyBvayA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7IGNsZWFyRXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbW90aGVydG9uZ3VlJykpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtbW90aGVydG9uZ3VlLWVycm9yJywgdCgnbW90aGVyVG9uZ3VlUmVxdWlyZWQnLCAnTW90aGVyIHRvbmd1ZSBpcyByZXF1aXJlZC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLW1vdGhlcnRvbmd1ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgbGV0IHMgPSAkKCdhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHMpIHsgcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9rOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEludGVyY2VwdCBQbGFjZSBPcmRlcgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGludGVyY2VwdFBsYWNlT3JkZXIoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBsZXQgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAgICAgICAgICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24sICcgKwoJCQkJJ1tkYXRhLXRlc3RpZD0iY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uIl0sICcgKwoJCQkJJy53cC1ibG9jay13b29jb21tZXJjZS1jaGVja291dC1wYXltZW50LWJsb2NrIGJ1dHRvblt0eXBlPSJzdWJtaXQiXScKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCFidG4pIHsgcmV0dXJuOyB9CgogICAgICAgICAgICBzYXZlRmllbGRzVG9TZXNzaW9uKHRydWUpOwogICAgICAgICAgICBkaXNwYXRjaFRvU3RvcmUoKTsKCiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGwoKSkgewogICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIHRydWUpOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEV2ZW50cwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkID09PSAnYWZsX2NuaV9maWxlJykgeyBoYW5kbGVGaWxlVXBsb2FkKCk7IH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMgJiYgZS50YXJnZXQubWF0Y2hlcygnLmFmbC1waS1pbnB1dCcpKSB7IGRlYm91bmNlZFNhdmUoKTsgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXRjaGVzICYmIGUudGFyZ2V0Lm1hdGNoZXMoJy5hZmwtcGktaW5wdXQnKSkgeyBkZWJvdW5jZWRTYXZlKCk7IH0KICAgICAgICB9KTsKCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQuaWQgPT09ICdhZmwtcmVwbGFjZS1idG4nIHx8IChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNhZmwtcmVwbGFjZS1idG4nKSkpIHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGxldCBidG4gPSBlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJy5hZmwtY2l2aWxpdHktb3B0Jyk7CiAgICAgICAgICAgIGlmICghYnRuKSB7IHJldHVybjsgfQogICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpOwogICAgICAgICAgICBsZXQgaW5wdXQgPSB0YXJnZXRJZCA/ICQodGFyZ2V0SWQpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGlucHV0KSB7IGlucHV0LnZhbHVlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpIHx8ICcnOyB9CiAgICAgICAgICAgIGxldCBncm91cCA9IGJ0bi5jbG9zZXN0ICYmIGJ0bi5jbG9zZXN0KCcuYWZsLWNpdmlsaXR5LWdyb3VwJyk7CiAgICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICAgICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLmFmbC1jaXZpbGl0eS1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCdhZmwtY2l2aWxpdHktb3B0LS1hY3RpdmUnLCBiID09PSBidG4pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVib3VuY2VkU2F2ZSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEJvb3QKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBib290KGNoZWNrb3V0RWwpIHsKICAgICAgICBpbmplY3RTZWN0aW9uKGNoZWNrb3V0RWwpOwogICAgICAgIHNhdmVGaWVsZHNUb1Nlc3Npb24oZmFsc2UpOwogICAgICAgIGludGVyY2VwdFBsYWNlT3JkZXIoKTsKICAgIH0KCiAgICB3YWl0Rm9yQ2hlY2tvdXQoYm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7Cn0pKCk7Cn0pOw==":["input"],"https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.GRsEQlAF6LQ.2021.O/ck=ytembeds.base.qzDvqMbGmKI.L.W.O/am=AAAAQADG/d=1/exm=base,root/excm=base,root/ed=1/br=1/rs=AGKMywE-IAOb1-WuZ5ii0tpi9f-56d9aig/m=r78Drb":["keydown"],"https://www.aflyon.org/":["input","keyup","keydown"]},"MOUSE":{"data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHt3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gPSB7ImFqYXhVcmwiOiJodHRwczpcL1wvd3d3LmFmbHlvbi5vcmdcL3dwXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6ImZiNGVkZWFmMmIiLCJleGlzdGluZ0NuaUlkIjowLCJzdG9yZU5zIjoiYWZsLWNoZWNrb3V0IiwiaTE4biI6eyJ1cGxvYWRpbmciOiJFbnZvaSBlbiBjb3Vyc1x1MjAyNiIsImZpbGVTYXZlZCI6IkZpY2hpZXIgZW5yZWdpc3RyXHUwMGU5LiIsInVwbG9hZEVycm9yIjoiRXJyZXVyIGxvcnMgZHUgdFx1MDBlOWxcdTAwZTl2ZXJzZW1lbnQuIiwiaW52YWxpZFJlc3BvbnNlIjoiUlx1MDBlOXBvbnNlIGludmFsaWRlLiIsIm5ldHdvcmtFcnJvciI6IkVycmV1ciByXHUwMGU5c2VhdS4iLCJpZERvY3VtZW50UmVxdWlyZWQiOiJWZXVpbGxleiB0XHUwMGU5bFx1MDBlOXZlcnNlciB2b3RyZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkuIiwiaWREb2N1bWVudFJlcXVpcmVkU2hvcnQiOiJMZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsImxlYXJuZXJMYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGRlIGwnYXBwcmVuYW50XC9jYW5kaWRhdCBlc3Qgb2JsaWdhdG9pcmUuIiwibGVhcm5lckZpcnN0TmFtZVJlcXVpcmVkIjoiTGUgcHJcdTAwZTlub20gZGUgbCdhcHByZW5hbnRcL2NhbmRpZGF0IGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aERhdGVSZXF1aXJlZCI6IkxhIGRhdGUgZGUgbmFpc3NhbmNlIGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aENpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiYmlydGhDb3VudHJ5UmVxdWlyZWQiOiJMZSBwYXlzIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiY2l0aXplbnNoaXBSZXF1aXJlZCI6IkxhIG5hdGlvbmFsaXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsIm1vdGhlclRvbmd1ZVJlcXVpcmVkIjoiTGEgbGFuZ3VlIG1hdGVybmVsbGUgZXN0IG9ibGlnYXRvaXJlLiIsInRpdGxlUmVxdWlyZWQiOiJMYSBjaXZpbGl0XHUwMGU5IGVzdCBvYmxpZ2F0b2lyZS4iLCJmaXJzdE5hbWVSZXF1aXJlZCI6IkxlIHByXHUwMGU5bm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJsYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJhZGRyZXNzUmVxdWlyZWQiOiJMJ2FkcmVzc2UgZXN0IG9ibGlnYXRvaXJlLiIsImNpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGVzdCBvYmxpZ2F0b2lyZS4iLCJwb3N0Y29kZVJlcXVpcmVkIjoiTGUgY29kZSBwb3N0YWwgZXN0IG9ibGlnYXRvaXJlLiIsImNvdW50cnlSZXF1aXJlZCI6IkxlIHBheXMgZXN0IG9ibGlnYXRvaXJlLiIsInZhbGlkRW1haWxSZXF1aXJlZCI6IlVuIGUtbWFpbCB2YWxpZGUgZXN0IG9ibGlnYXRvaXJlLiJ9LCJwcmVmaWxsIjp7ImNpdmlsaXR5IjoiIiwibGVhcm5lckxhc3ROYW1lIjoiIiwibGVhcm5lckZpcnN0TmFtZSI6IiIsImJpcnRoRGF0ZSI6IiIsImJpcnRoQ2l0eSI6IiIsImJpcnRoQ291bnRyeSI6IiIsImNpdGl6ZW5zaGlwIjoiIiwibW90aGVydG9uZ3VlIjoiIn19Oy8qIEFGTCBDaGVja291dCDigJMgUGVyc29uYWwgSW5mb3JtYXRpb24KICogU2VjdGlvbiBpcyBpbmplY3RlZCBpbnNpZGUgdGhlIGNoZWNrb3V0IGZvcm0uIElmIFJlYWN0IHJlbW92ZXMgaXQsCiAqIGEgTXV0YXRpb25PYnNlcnZlciByZS1pbnNlcnRzIGEgY2xvbmUgc28gdGhlIGJsb2NrIHN0YXlzIHZpc2libGUuCiAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBjZmcgPSB3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gfHwge307CiAgICBpZiAoIWNmZy5hamF4VXJsKSB7IHJldHVybjsgfQoKICAgIGxldCBpMThuID0gY2ZnLmkxOG4gfHwge307CiAgICBsZXQgc2F2ZVRpbWVyID0gbnVsbDsKICAgIGxldCBpbmplY3RlZFNlY3Rpb24gPSBudWxsOyAgLy8gcmVmZXJlbmNlIHRvIHRoZSBub2RlIHdlIGluc2VydGVkCiAgICBsZXQgYmFja3VwQ2xvbmUgPSBudWxsOyAgICAgIC8vIGNsb25lIHVzZWQgdG8gcmUtaW5zZXJ0IHdoZW4gUmVhY3QgcmVtb3ZlcyBvdXIgbm9kZQoKICAgIGZ1bmN0aW9uICQoaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQogICAgZnVuY3Rpb24gdmFsKGlkKSB7IGxldCBlbCA9ICQoaWQpOyByZXR1cm4gZWwgPyAoZWwudmFsdWUgfHwgJycpLnRyaW0oKSA6ICcnOyB9CiAgICBmdW5jdGlvbiB0KGtleSwgZmFsbGJhY2spIHsgcmV0dXJuIGkxOG5ba2V5XSB8fCBmYWxsYmFjayB8fCAnJzsgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFdhaXQgZm9yIHRoZSBXQyBjaGVja291dCBibG9jawogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JDaGVja291dChjYikgewogICAgICAgIGxldCBzZWwgPSBbCiAgICAgICAgICAgICcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQnLAogICAgICAgICAgICAnW2RhdGEtYmxvY2stbmFtZT0id29vY29tbWVyY2UvY2hlY2tvdXQiXScsCiAgICAgICAgICAgICcud2MtYmxvY2stY2hlY2tvdXQnLAogICAgICAgIF07CiAgICAgICAgZnVuY3Rpb24gZmluZCgpIHsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7aSA8IHNlbC5sZW5ndGg7aSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbFtpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHsgcmV0dXJuIGVsOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gZmluZCgpOwogICAgICAgIGlmICh0KSB7IGNiKHQpOyByZXR1cm47IH0KICAgICAgICBsZXQgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgdCA9IGZpbmQoKTsKICAgICAgICAgICAgaWYgKHQpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgY2IodCk7IH0KICAgICAgICB9KTsKICAgICAgICBvYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgfSwgMTUwMDApOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEluamVjdCBzZWN0aW9uIGluc2lkZSBjaGVja291dCBmb3JtOyBrZWVwIGJhY2t1cCB0byByZS1pbnNlcnQgaWYgcmVtb3ZlZAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKSB7CiAgICAgICAgbGV0IGlubmVyID0gY2hlY2tvdXRFbC5xdWVyeVNlbGVjdG9yKCcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQtZmllbGRzLWJsb2NrJyk7CiAgICAgICAgcmV0dXJuIGlubmVyIHx8IGNoZWNrb3V0RWwucXVlcnlTZWxlY3RvcignLndjLWJsb2NrLWNoZWNrb3V0X19tYWluJykgfHwgY2hlY2tvdXRFbDsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0U2VsZWN0c0luU2VjdGlvbihzZWN0aW9uKSB7CiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbZGF0YS1pbml0aWFsXScpLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgewogICAgICAgICAgICBsZXQgaW5pdGlhbCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbCcpOwogICAgICAgICAgICBpZiAoaW5pdGlhbCkgeyBzZWwudmFsdWUgPSBpbml0aWFsOyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5qZWN0U2VjdGlvbihjaGVja291dEVsKSB7CiAgICAgICAgbGV0IHBhcmVudCA9IGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKTsKICAgICAgICBpZiAoIXBhcmVudCkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IHN0YWdpbmcgPSAkKCdhZmwtY25pLXN0YWdpbmcnKTsKICAgICAgICBpZiAoIXN0YWdpbmcpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbmplY3RlZCBzZWN0aW9uIHRoYXQgd2FzIHJlbW92ZWQsIHJlLWluc2VydCBmcm9tIGJhY2t1cAogICAgICAgIGlmIChpbmplY3RlZFNlY3Rpb24gJiYgIWRvY3VtZW50LmJvZHkuY29udGFpbnMoaW5qZWN0ZWRTZWN0aW9uKSAmJiBiYWNrdXBDbG9uZSkgewogICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgIGluamVjdGVkU2VjdGlvbiA9IGJhY2t1cENsb25lOwogICAgICAgICAgICBiYWNrdXBDbG9uZSA9IGJhY2t1cENsb25lLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNlY3Rpb24gPSBzdGFnaW5nLnF1ZXJ5U2VsZWN0b3IoJyNhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICBpZiAoIXNlY3Rpb24pIHsgcmV0dXJuOyB9CgogICAgICAgIHNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc2VjdGlvbiwgcGFyZW50LmZpcnN0Q2hpbGQpOwogICAgICAgIGluamVjdGVkU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICBiYWNrdXBDbG9uZSA9IHNlY3Rpb24uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAvLyBJZiBSZWFjdCByZW1vdmVzIG91ciBzZWN0aW9uLCB3ZSdsbCByZS1pbnNlcnQgdGhlIGJhY2t1cAogICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGluamVjdGVkU2VjdGlvbiAmJiAhZG9jdW1lbnQuYm9keS5jb250YWlucyhpbmplY3RlZFNlY3Rpb24pICYmIGJhY2t1cENsb25lICYmIHBhcmVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBpbmplY3RlZFNlY3Rpb24gPSBiYWNrdXBDbG9uZTsKICAgICAgICAgICAgICAgIGJhY2t1cENsb25lID0gYmFja3VwQ2xvbmUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIGluaXRTZWxlY3RzSW5TZWN0aW9uKGluamVjdGVkU2VjdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogc2F2ZSB0ZXh0IGZpZWxkcyB0byBXQyBzZXNzaW9uCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gc2F2ZUZpZWxkc1RvU2Vzc2lvbihzeW5jKSB7CiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3NhdmVfZmllbGRzJyk7CiAgICAgICAgZmQuYXBwZW5kKCdub25jZScsIGNmZy5ub25jZSk7CiAgICAgICAgZmQuYXBwZW5kKCdjaXZpbGl0eScsIHZhbCgnYWZsX2NpdmlsaXR5JykpOwogICAgICAgIGZkLmFwcGVuZCgnbGVhcm5lcl9sYXN0X25hbWUnLCB2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2xlYXJuZXJfZmlyc3RfbmFtZScsIHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2JpcnRoX2RhdGUnLCB2YWwoJ2FmbF9iaXJ0aF9kYXRlJykpOwogICAgICAgIGZkLmFwcGVuZCgnYmlydGhfY2l0eScsIHZhbCgnYWZsX2JpcnRoX2NpdHknKSk7CiAgICAgICAgZmQuYXBwZW5kKCdiaXJ0aF9jb3VudHJ5JywgdmFsKCdhZmxfYmlydGhfY291bnRyeScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2NpdGl6ZW5zaGlwJywgdmFsKCdhZmxfY2l0aXplbnNoaXAnKSk7CiAgICAgICAgZmQuYXBwZW5kKCdtb3RoZXJ0b25ndWUnLCB2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSk7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdQT1NUJywgY2ZnLmFqYXhVcmwsICFzeW5jKTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVib3VuY2VkU2F2ZSgpIHsKICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVyKTsKICAgICAgICBzYXZlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2F2ZUZpZWxkc1RvU2Vzc2lvbihmYWxzZSk7IH0sIDQwMCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogZmlsZSB1cGxvYWQKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgewogICAgICAgIGxldCBpbnB1dCA9ICQoJ2FmbF9jbmlfZmlsZScpOwogICAgICAgIGlmICghaW5wdXQgfHwgIWlucHV0LmZpbGVzIHx8ICFpbnB1dC5maWxlc1swXSkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IGZpbGUgPSBpbnB1dC5maWxlc1swXTsKICAgICAgICBsZXQgc3RhdHVzID0gJCgnYWZsLXVwbG9hZC1zdGF0dXMnKTsKICAgICAgICBsZXQgZmlsZU5hbWUgPSAkKCdhZmwtZmlsZS1uYW1lJyk7CiAgICAgICAgbGV0IGRvY1R5cGUgPSB2YWwoJ2FmbF9jbmlfdHlwZScpIHx8ICdjbmknOwoKICAgICAgICBpZiAoc3RhdHVzKSB7IHN0YXR1cy50ZXh0Q29udGVudCA9IHQoJ3VwbG9hZGluZycsICdVcGxvYWRpbmfigKYnKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyc7IH0KICAgICAgICBpZiAoZmlsZU5hbWUpIHsgZmlsZU5hbWUudGV4dENvbnRlbnQgPSBmaWxlLm5hbWU7IH0KCiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3VwbG9hZF9jbmknKTsKICAgICAgICBmZC5hcHBlbmQoJ25vbmNlJywgY2ZnLm5vbmNlKTsKICAgICAgICBmZC5hcHBlbmQoJ2FmbF9jaGVja291dF9maWxlJywgZmlsZSk7CiAgICAgICAgZmQuYXBwZW5kKCdkb2NfdHlwZScsIGRvY1R5cGUpOwoKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCBjZmcuYWpheFVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCByZXNwID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgIGlmIChyZXNwLnN1Y2Nlc3MgJiYgcmVzcC5kYXRhICYmIHJlc3AuZGF0YS5hdHRhY2htZW50X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gcmVzcC5kYXRhLmF0dGFjaG1lbnRfaWQ7IH0KICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKCdhZmwtY25pLWVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyTICcgKyB0KCdmaWxlU2F2ZWQnLCAnRmlsZSBzYXZlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLW9rJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSAocmVzcC5kYXRhICYmIHJlc3AuZGF0YS5tZXNzYWdlKSB8fCB0KCd1cGxvYWRFcnJvcicsICdVcGxvYWQgZXJyb3IuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyBtc2c7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeyBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyB0KCdpbnZhbGlkUmVzcG9uc2UnLCAnSW52YWxpZCByZXNwb25zZS4nKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLWVycic7IH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChzdGF0dXMpIHsgc3RhdHVzLnRleHRDb250ZW50ID0gJ+KclyAnICsgdCgnbmV0d29ya0Vycm9yJywgJ05ldHdvcmsgZXJyb3IuJyk7IHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOyB9CiAgICAgICAgfTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gIlJlcGxhY2UiIGJ1dHRvbgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGhhbmRsZVJlcGxhY2UoKSB7CiAgICAgICAgbGV0IGV4aXN0aW5nID0gJCgnYWZsLWV4aXN0aW5nLWZpbGUnKTsKICAgICAgICBsZXQgdXBsb2FkID0gJCgnYWZsLXVwbG9hZC1maWVsZCcpOwogICAgICAgIGlmIChleGlzdGluZykgeyBleGlzdGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9CiAgICAgICAgaWYgKHVwbG9hZCkgeyB1cGxvYWQuc3R5bGUuZGlzcGxheSA9ICcnOyB9CiAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gJyc7IH0KICAgIH0KCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBEaXNwYXRjaCB0byBXQyBTdG9yZSAoYmVzdC1lZmZvcnQsIGZvciBleHRlbnNpb25zIHBheWxvYWQpCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gZGlzcGF0Y2hUb1N0b3JlKCkgewogICAgICAgIGlmICghd2luZG93LndwIHx8ICF3aW5kb3cud3AuZGF0YSkgeyByZXR1cm47IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IHdpbmRvdy53cC5kYXRhLmRpc3BhdGNoKCd3Yy9zdG9yZS9jaGVja291dCcpOwogICAgICAgICAgICBpZiAoIWQgfHwgdHlwZW9mIGQuc2V0RXh0ZW5zaW9uRGF0YSAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH0KICAgICAgICAgICAgZC5zZXRFeHRlbnNpb25EYXRhKGNmZy5zdG9yZU5zIHx8ICdhZmwtY2hlY2tvdXQnLCB7CiAgICAgICAgICAgICAgICBjbmlfYXR0YWNobWVudF9pZDogcGFyc2VJbnQodmFsKCdhZmxfY25pX2F0dGFjaG1lbnRfaWQnKSwgMTApIHx8IDAsCiAgICAgICAgICAgICAgICBjaXZpbGl0eTogU3RyaW5nKHZhbCgnYWZsX2NpdmlsaXR5JykgfHwgJycpLAogICAgICAgICAgICAgICAgbGVhcm5lcl9sYXN0X25hbWU6IFN0cmluZyh2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGxlYXJuZXJfZmlyc3RfbmFtZTogU3RyaW5nKHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGJpcnRoX2RhdGU6IFN0cmluZyh2YWwoJ2FmbF9iaXJ0aF9kYXRlJykgfHwgJycpLAogICAgICAgICAgICAgICAgYmlydGhfY2l0eTogU3RyaW5nKHZhbCgnYWZsX2JpcnRoX2NpdHknKSB8fCAnJyksCiAgICAgICAgICAgICAgICBiaXJ0aF9jb3VudHJ5OiBTdHJpbmcodmFsKCdhZmxfYmlydGhfY291bnRyeScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGNpdGl6ZW5zaGlwOiBTdHJpbmcodmFsKCdhZmxfY2l0aXplbnNoaXAnKSB8fCAnJyksCiAgICAgICAgICAgICAgICBtb3RoZXJ0b25ndWU6IFN0cmluZyh2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSB8fCAnJyksCiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogbm8tb3AgKi8gfQogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFZhbGlkYXRpb24KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgIGxldCBlbCA9ICQoaWQpOwogICAgICAgIGlmIChlbCkgeyBlbC50ZXh0Q29udGVudCA9IG1zZzsgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3IoaWQpIHsKICAgICAgICBsZXQgZWwgPSAkKGlkKTsKICAgICAgICBpZiAoZWwpIHsgZWwuc3R5bGUuZGlzcGxheSA9ICcnOyBlbC50ZXh0Q29udGVudCA9ICcnOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdmFsaWRhdGVBbGwoKSB7CiAgICAgICAgbGV0IG9rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCFwYXJzZUludCh2YWwoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpLCAxMCkpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtY25pLWVycm9yJywgdCgnaWREb2N1bWVudFJlcXVpcmVkJywgJ1BsZWFzZSB1cGxvYWQgeW91ciBpZGVudGl0eSBkb2N1bWVudC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWNuaS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbGVhcm5lcl9sYXN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWxhc3QtbmFtZS1lcnJvcicsIHQoJ2xlYXJuZXJMYXN0TmFtZVJlcXVpcmVkJywgIkxlYXJuZXIncyAvIGNhbmRpZGF0ZSdzIGxhc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItbGFzdC1uYW1lLWVycm9yJyk7IH0KCiAgICAgICAgaWYgKCF2YWwoJ2FmbF9sZWFybmVyX2ZpcnN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWZpcnN0LW5hbWUtZXJyb3InLCB0KCdsZWFybmVyRmlyc3ROYW1lUmVxdWlyZWQnLCAiTGVhcm5lcidzIC8gY2FuZGlkYXRlJ3MgZmlyc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItZmlyc3QtbmFtZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfZGF0ZScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWRhdGUtZXJyb3InLCB0KCdiaXJ0aERhdGVSZXF1aXJlZCcsICdEYXRlIG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtZGF0ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY2l0eScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNpdHktZXJyb3InLCB0KCdiaXJ0aENpdHlSZXF1aXJlZCcsICdDaXR5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY2l0eS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY291bnRyeScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNvdW50cnktZXJyb3InLCB0KCdiaXJ0aENvdW50cnlSZXF1aXJlZCcsICdDb3VudHJ5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY291bnRyeS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfY2l0aXplbnNoaXAnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicsIHQoJ2NpdGl6ZW5zaGlwUmVxdWlyZWQnLCAnQ2l0aXplbnNoaXAgaXMgcmVxdWlyZWQuJykpOyBvayA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7IGNsZWFyRXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbW90aGVydG9uZ3VlJykpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtbW90aGVydG9uZ3VlLWVycm9yJywgdCgnbW90aGVyVG9uZ3VlUmVxdWlyZWQnLCAnTW90aGVyIHRvbmd1ZSBpcyByZXF1aXJlZC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLW1vdGhlcnRvbmd1ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgbGV0IHMgPSAkKCdhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHMpIHsgcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9rOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEludGVyY2VwdCBQbGFjZSBPcmRlcgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGludGVyY2VwdFBsYWNlT3JkZXIoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBsZXQgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAgICAgICAgICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24sICcgKwoJCQkJJ1tkYXRhLXRlc3RpZD0iY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uIl0sICcgKwoJCQkJJy53cC1ibG9jay13b29jb21tZXJjZS1jaGVja291dC1wYXltZW50LWJsb2NrIGJ1dHRvblt0eXBlPSJzdWJtaXQiXScKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCFidG4pIHsgcmV0dXJuOyB9CgogICAgICAgICAgICBzYXZlRmllbGRzVG9TZXNzaW9uKHRydWUpOwogICAgICAgICAgICBkaXNwYXRjaFRvU3RvcmUoKTsKCiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGwoKSkgewogICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIHRydWUpOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEV2ZW50cwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkID09PSAnYWZsX2NuaV9maWxlJykgeyBoYW5kbGVGaWxlVXBsb2FkKCk7IH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMgJiYgZS50YXJnZXQubWF0Y2hlcygnLmFmbC1waS1pbnB1dCcpKSB7IGRlYm91bmNlZFNhdmUoKTsgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXRjaGVzICYmIGUudGFyZ2V0Lm1hdGNoZXMoJy5hZmwtcGktaW5wdXQnKSkgeyBkZWJvdW5jZWRTYXZlKCk7IH0KICAgICAgICB9KTsKCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQuaWQgPT09ICdhZmwtcmVwbGFjZS1idG4nIHx8IChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNhZmwtcmVwbGFjZS1idG4nKSkpIHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGxldCBidG4gPSBlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJy5hZmwtY2l2aWxpdHktb3B0Jyk7CiAgICAgICAgICAgIGlmICghYnRuKSB7IHJldHVybjsgfQogICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpOwogICAgICAgICAgICBsZXQgaW5wdXQgPSB0YXJnZXRJZCA/ICQodGFyZ2V0SWQpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGlucHV0KSB7IGlucHV0LnZhbHVlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpIHx8ICcnOyB9CiAgICAgICAgICAgIGxldCBncm91cCA9IGJ0bi5jbG9zZXN0ICYmIGJ0bi5jbG9zZXN0KCcuYWZsLWNpdmlsaXR5LWdyb3VwJyk7CiAgICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICAgICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLmFmbC1jaXZpbGl0eS1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCdhZmwtY2l2aWxpdHktb3B0LS1hY3RpdmUnLCBiID09PSBidG4pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVib3VuY2VkU2F2ZSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEJvb3QKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBib290KGNoZWNrb3V0RWwpIHsKICAgICAgICBpbmplY3RTZWN0aW9uKGNoZWNrb3V0RWwpOwogICAgICAgIHNhdmVGaWVsZHNUb1Nlc3Npb24oZmFsc2UpOwogICAgICAgIGludGVyY2VwdFBsYWNlT3JkZXIoKTsKICAgIH0KCiAgICB3YWl0Rm9yQ2hlY2tvdXQoYm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7Cn0pKCk7Cn0pOw==":["click"],"https://www.aflyon.org/app/plugins/woocommerce-multilingual/res/js/cart_widget.min.js?ver=5.6.0":["click"],"https://www.aflyon.org/wp/wp-includes/js/jquery/jquery.min.js?ver=3.7.1":["click"],"https://www.aflyon.org/app/themes/afl/dist/666.a3841c77.js?ver=7.1.2":["mouseup","mousedown","scroll"],"rocket-preload-links-js-after":["mousedown"],"https://www.aflyon.org/categorie-produit/cours/cours-particuliers/":["dblclick","click","mousemove","mouseup","mousedown"],"data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHt3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gPSB7ImFqYXhVcmwiOiJodHRwczpcL1wvd3d3LmFmbHlvbi5vcmdcL3dwXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6IjUzOGNjYWQ3NWIiLCJleGlzdGluZ0NuaUlkIjowLCJzdG9yZU5zIjoiYWZsLWNoZWNrb3V0IiwiaTE4biI6eyJ1cGxvYWRpbmciOiJTdWJpZW5kb1x1MjAyNiIsImZpbGVTYXZlZCI6IkFyY2hpdm8gZ3VhcmRhZG8uIiwidXBsb2FkRXJyb3IiOiJFcnJvciBhbCBzdWJpciBlbCBhcmNoaXZvLiIsImludmFsaWRSZXNwb25zZSI6IlJlc3B1ZXN0YSBubyB2XHUwMGUxbGlkYS4iLCJuZXR3b3JrRXJyb3IiOiJFcnJvciBkZSByZWQuIiwiaWREb2N1bWVudFJlcXVpcmVkIjoiUG9yIGZhdm9yLCBzdWJhIHN1IGRvY3VtZW50byBkZSBpZGVudGlkYWQuIiwiaWREb2N1bWVudFJlcXVpcmVkU2hvcnQiOiJFbCBkb2N1bWVudG8gZGUgaWRlbnRpZGFkIGVzIG9ibGlnYXRvcmlvLiIsImxlYXJuZXJMYXN0TmFtZVJlcXVpcmVkIjoiRWwgYXBlbGxpZG8gZGVsIGFwcmVuZGl6XC9jYW5kaWRhdG8gZXMgb2JsaWdhdG9yaW8uIiwibGVhcm5lckZpcnN0TmFtZVJlcXVpcmVkIjoiRWwgbm9tYnJlIGRlbCBhcHJlbmRpelwvY2FuZGlkYXRvIGVzIG9ibGlnYXRvcmlvLiIsImJpcnRoRGF0ZVJlcXVpcmVkIjoiTGEgZmVjaGEgZGUgbmFjaW1pZW50byBlcyBvYmxpZ2F0b3JpYS4iLCJiaXJ0aENpdHlSZXF1aXJlZCI6IkxhIGNpdWRhZCBkZSBuYWNpbWllbnRvIGVzIG9ibGlnYXRvcmlhLiIsImJpcnRoQ291bnRyeVJlcXVpcmVkIjoiRWwgcGFcdTAwZWRzIGRlIG5hY2ltaWVudG8gZXMgb2JsaWdhdG9yaW8uIiwiY2l0aXplbnNoaXBSZXF1aXJlZCI6IkxhIG5hY2lvbmFsaWRhZCBlcyBvYmxpZ2F0b3JpYS4iLCJtb3RoZXJUb25ndWVSZXF1aXJlZCI6IkxhIGxlbmd1YSBtYXRlcm5hIGVzIG9ibGlnYXRvcmlhLiIsInRpdGxlUmVxdWlyZWQiOiJFbCB0cmF0YW1pZW50byBlcyBvYmxpZ2F0b3Jpby4iLCJmaXJzdE5hbWVSZXF1aXJlZCI6IkVsIG5vbWJyZSBlcyBvYmxpZ2F0b3Jpby4iLCJsYXN0TmFtZVJlcXVpcmVkIjoiRWwgYXBlbGxpZG8gZXMgb2JsaWdhdG9yaW8uIiwiYWRkcmVzc1JlcXVpcmVkIjoiTGEgZGlyZWNjaVx1MDBmM24gZXMgb2JsaWdhdG9yaWEuIiwiY2l0eVJlcXVpcmVkIjoiTGEgY2l1ZGFkIGVzIG9ibGlnYXRvcmlhLiIsInBvc3Rjb2RlUmVxdWlyZWQiOiJFbCBjXHUwMGYzZGlnbyBwb3N0YWwgZXMgb2JsaWdhdG9yaW8uIiwiY291bnRyeVJlcXVpcmVkIjoiRWwgcGFcdTAwZWRzIGVzIG9ibGlnYXRvcmlvLiIsInZhbGlkRW1haWxSZXF1aXJlZCI6IlNlIHJlcXVpZXJlIHVuIGNvcnJlbyBlbGVjdHJcdTAwZjNuaWNvIHZcdTAwZTFsaWRvLiJ9LCJwcmVmaWxsIjp7ImNpdmlsaXR5IjoiIiwibGVhcm5lckxhc3ROYW1lIjoiIiwibGVhcm5lckZpcnN0TmFtZSI6IiIsImJpcnRoRGF0ZSI6IiIsImJpcnRoQ2l0eSI6IiIsImJpcnRoQ291bnRyeSI6IiIsImNpdGl6ZW5zaGlwIjoiIiwibW90aGVydG9uZ3VlIjoiIn19Oy8qIEFGTCBDaGVja291dCDigJMgUGVyc29uYWwgSW5mb3JtYXRpb24KICogU2VjdGlvbiBpcyBpbmplY3RlZCBpbnNpZGUgdGhlIGNoZWNrb3V0IGZvcm0uIElmIFJlYWN0IHJlbW92ZXMgaXQsCiAqIGEgTXV0YXRpb25PYnNlcnZlciByZS1pbnNlcnRzIGEgY2xvbmUgc28gdGhlIGJsb2NrIHN0YXlzIHZpc2libGUuCiAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBjZmcgPSB3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gfHwge307CiAgICBpZiAoIWNmZy5hamF4VXJsKSB7IHJldHVybjsgfQoKICAgIGxldCBpMThuID0gY2ZnLmkxOG4gfHwge307CiAgICBsZXQgc2F2ZVRpbWVyID0gbnVsbDsKICAgIGxldCBpbmplY3RlZFNlY3Rpb24gPSBudWxsOyAgLy8gcmVmZXJlbmNlIHRvIHRoZSBub2RlIHdlIGluc2VydGVkCiAgICBsZXQgYmFja3VwQ2xvbmUgPSBudWxsOyAgICAgIC8vIGNsb25lIHVzZWQgdG8gcmUtaW5zZXJ0IHdoZW4gUmVhY3QgcmVtb3ZlcyBvdXIgbm9kZQoKICAgIGZ1bmN0aW9uICQoaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQogICAgZnVuY3Rpb24gdmFsKGlkKSB7IGxldCBlbCA9ICQoaWQpOyByZXR1cm4gZWwgPyAoZWwudmFsdWUgfHwgJycpLnRyaW0oKSA6ICcnOyB9CiAgICBmdW5jdGlvbiB0KGtleSwgZmFsbGJhY2spIHsgcmV0dXJuIGkxOG5ba2V5XSB8fCBmYWxsYmFjayB8fCAnJzsgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFdhaXQgZm9yIHRoZSBXQyBjaGVja291dCBibG9jawogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JDaGVja291dChjYikgewogICAgICAgIGxldCBzZWwgPSBbCiAgICAgICAgICAgICcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQnLAogICAgICAgICAgICAnW2RhdGEtYmxvY2stbmFtZT0id29vY29tbWVyY2UvY2hlY2tvdXQiXScsCiAgICAgICAgICAgICcud2MtYmxvY2stY2hlY2tvdXQnLAogICAgICAgIF07CiAgICAgICAgZnVuY3Rpb24gZmluZCgpIHsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7aSA8IHNlbC5sZW5ndGg7aSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbFtpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHsgcmV0dXJuIGVsOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gZmluZCgpOwogICAgICAgIGlmICh0KSB7IGNiKHQpOyByZXR1cm47IH0KICAgICAgICBsZXQgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgdCA9IGZpbmQoKTsKICAgICAgICAgICAgaWYgKHQpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgY2IodCk7IH0KICAgICAgICB9KTsKICAgICAgICBvYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgfSwgMTUwMDApOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEluamVjdCBzZWN0aW9uIGluc2lkZSBjaGVja291dCBmb3JtOyBrZWVwIGJhY2t1cCB0byByZS1pbnNlcnQgaWYgcmVtb3ZlZAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKSB7CiAgICAgICAgbGV0IGlubmVyID0gY2hlY2tvdXRFbC5xdWVyeVNlbGVjdG9yKCcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQtZmllbGRzLWJsb2NrJyk7CiAgICAgICAgcmV0dXJuIGlubmVyIHx8IGNoZWNrb3V0RWwucXVlcnlTZWxlY3RvcignLndjLWJsb2NrLWNoZWNrb3V0X19tYWluJykgfHwgY2hlY2tvdXRFbDsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0U2VsZWN0c0luU2VjdGlvbihzZWN0aW9uKSB7CiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbZGF0YS1pbml0aWFsXScpLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgewogICAgICAgICAgICBsZXQgaW5pdGlhbCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbCcpOwogICAgICAgICAgICBpZiAoaW5pdGlhbCkgeyBzZWwudmFsdWUgPSBpbml0aWFsOyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5qZWN0U2VjdGlvbihjaGVja291dEVsKSB7CiAgICAgICAgbGV0IHBhcmVudCA9IGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKTsKICAgICAgICBpZiAoIXBhcmVudCkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IHN0YWdpbmcgPSAkKCdhZmwtY25pLXN0YWdpbmcnKTsKICAgICAgICBpZiAoIXN0YWdpbmcpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbmplY3RlZCBzZWN0aW9uIHRoYXQgd2FzIHJlbW92ZWQsIHJlLWluc2VydCBmcm9tIGJhY2t1cAogICAgICAgIGlmIChpbmplY3RlZFNlY3Rpb24gJiYgIWRvY3VtZW50LmJvZHkuY29udGFpbnMoaW5qZWN0ZWRTZWN0aW9uKSAmJiBiYWNrdXBDbG9uZSkgewogICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgIGluamVjdGVkU2VjdGlvbiA9IGJhY2t1cENsb25lOwogICAgICAgICAgICBiYWNrdXBDbG9uZSA9IGJhY2t1cENsb25lLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNlY3Rpb24gPSBzdGFnaW5nLnF1ZXJ5U2VsZWN0b3IoJyNhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICBpZiAoIXNlY3Rpb24pIHsgcmV0dXJuOyB9CgogICAgICAgIHNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc2VjdGlvbiwgcGFyZW50LmZpcnN0Q2hpbGQpOwogICAgICAgIGluamVjdGVkU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICBiYWNrdXBDbG9uZSA9IHNlY3Rpb24uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAvLyBJZiBSZWFjdCByZW1vdmVzIG91ciBzZWN0aW9uLCB3ZSdsbCByZS1pbnNlcnQgdGhlIGJhY2t1cAogICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGluamVjdGVkU2VjdGlvbiAmJiAhZG9jdW1lbnQuYm9keS5jb250YWlucyhpbmplY3RlZFNlY3Rpb24pICYmIGJhY2t1cENsb25lICYmIHBhcmVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBpbmplY3RlZFNlY3Rpb24gPSBiYWNrdXBDbG9uZTsKICAgICAgICAgICAgICAgIGJhY2t1cENsb25lID0gYmFja3VwQ2xvbmUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIGluaXRTZWxlY3RzSW5TZWN0aW9uKGluamVjdGVkU2VjdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogc2F2ZSB0ZXh0IGZpZWxkcyB0byBXQyBzZXNzaW9uCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gc2F2ZUZpZWxkc1RvU2Vzc2lvbihzeW5jKSB7CiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3NhdmVfZmllbGRzJyk7CiAgICAgICAgZmQuYXBwZW5kKCdub25jZScsIGNmZy5ub25jZSk7CiAgICAgICAgZmQuYXBwZW5kKCdjaXZpbGl0eScsIHZhbCgnYWZsX2NpdmlsaXR5JykpOwogICAgICAgIGZkLmFwcGVuZCgnbGVhcm5lcl9sYXN0X25hbWUnLCB2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2xlYXJuZXJfZmlyc3RfbmFtZScsIHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2JpcnRoX2RhdGUnLCB2YWwoJ2FmbF9iaXJ0aF9kYXRlJykpOwogICAgICAgIGZkLmFwcGVuZCgnYmlydGhfY2l0eScsIHZhbCgnYWZsX2JpcnRoX2NpdHknKSk7CiAgICAgICAgZmQuYXBwZW5kKCdiaXJ0aF9jb3VudHJ5JywgdmFsKCdhZmxfYmlydGhfY291bnRyeScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2NpdGl6ZW5zaGlwJywgdmFsKCdhZmxfY2l0aXplbnNoaXAnKSk7CiAgICAgICAgZmQuYXBwZW5kKCdtb3RoZXJ0b25ndWUnLCB2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSk7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdQT1NUJywgY2ZnLmFqYXhVcmwsICFzeW5jKTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVib3VuY2VkU2F2ZSgpIHsKICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVyKTsKICAgICAgICBzYXZlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2F2ZUZpZWxkc1RvU2Vzc2lvbihmYWxzZSk7IH0sIDQwMCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogZmlsZSB1cGxvYWQKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgewogICAgICAgIGxldCBpbnB1dCA9ICQoJ2FmbF9jbmlfZmlsZScpOwogICAgICAgIGlmICghaW5wdXQgfHwgIWlucHV0LmZpbGVzIHx8ICFpbnB1dC5maWxlc1swXSkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IGZpbGUgPSBpbnB1dC5maWxlc1swXTsKICAgICAgICBsZXQgc3RhdHVzID0gJCgnYWZsLXVwbG9hZC1zdGF0dXMnKTsKICAgICAgICBsZXQgZmlsZU5hbWUgPSAkKCdhZmwtZmlsZS1uYW1lJyk7CiAgICAgICAgbGV0IGRvY1R5cGUgPSB2YWwoJ2FmbF9jbmlfdHlwZScpIHx8ICdjbmknOwoKICAgICAgICBpZiAoc3RhdHVzKSB7IHN0YXR1cy50ZXh0Q29udGVudCA9IHQoJ3VwbG9hZGluZycsICdVcGxvYWRpbmfigKYnKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyc7IH0KICAgICAgICBpZiAoZmlsZU5hbWUpIHsgZmlsZU5hbWUudGV4dENvbnRlbnQgPSBmaWxlLm5hbWU7IH0KCiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3VwbG9hZF9jbmknKTsKICAgICAgICBmZC5hcHBlbmQoJ25vbmNlJywgY2ZnLm5vbmNlKTsKICAgICAgICBmZC5hcHBlbmQoJ2FmbF9jaGVja291dF9maWxlJywgZmlsZSk7CiAgICAgICAgZmQuYXBwZW5kKCdkb2NfdHlwZScsIGRvY1R5cGUpOwoKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCBjZmcuYWpheFVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCByZXNwID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgIGlmIChyZXNwLnN1Y2Nlc3MgJiYgcmVzcC5kYXRhICYmIHJlc3AuZGF0YS5hdHRhY2htZW50X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gcmVzcC5kYXRhLmF0dGFjaG1lbnRfaWQ7IH0KICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKCdhZmwtY25pLWVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyTICcgKyB0KCdmaWxlU2F2ZWQnLCAnRmlsZSBzYXZlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLW9rJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSAocmVzcC5kYXRhICYmIHJlc3AuZGF0YS5tZXNzYWdlKSB8fCB0KCd1cGxvYWRFcnJvcicsICdVcGxvYWQgZXJyb3IuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyBtc2c7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeyBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyB0KCdpbnZhbGlkUmVzcG9uc2UnLCAnSW52YWxpZCByZXNwb25zZS4nKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLWVycic7IH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChzdGF0dXMpIHsgc3RhdHVzLnRleHRDb250ZW50ID0gJ+KclyAnICsgdCgnbmV0d29ya0Vycm9yJywgJ05ldHdvcmsgZXJyb3IuJyk7IHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOyB9CiAgICAgICAgfTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gIlJlcGxhY2UiIGJ1dHRvbgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGhhbmRsZVJlcGxhY2UoKSB7CiAgICAgICAgbGV0IGV4aXN0aW5nID0gJCgnYWZsLWV4aXN0aW5nLWZpbGUnKTsKICAgICAgICBsZXQgdXBsb2FkID0gJCgnYWZsLXVwbG9hZC1maWVsZCcpOwogICAgICAgIGlmIChleGlzdGluZykgeyBleGlzdGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9CiAgICAgICAgaWYgKHVwbG9hZCkgeyB1cGxvYWQuc3R5bGUuZGlzcGxheSA9ICcnOyB9CiAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gJyc7IH0KICAgIH0KCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBEaXNwYXRjaCB0byBXQyBTdG9yZSAoYmVzdC1lZmZvcnQsIGZvciBleHRlbnNpb25zIHBheWxvYWQpCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gZGlzcGF0Y2hUb1N0b3JlKCkgewogICAgICAgIGlmICghd2luZG93LndwIHx8ICF3aW5kb3cud3AuZGF0YSkgeyByZXR1cm47IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IHdpbmRvdy53cC5kYXRhLmRpc3BhdGNoKCd3Yy9zdG9yZS9jaGVja291dCcpOwogICAgICAgICAgICBpZiAoIWQgfHwgdHlwZW9mIGQuc2V0RXh0ZW5zaW9uRGF0YSAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH0KICAgICAgICAgICAgZC5zZXRFeHRlbnNpb25EYXRhKGNmZy5zdG9yZU5zIHx8ICdhZmwtY2hlY2tvdXQnLCB7CiAgICAgICAgICAgICAgICBjbmlfYXR0YWNobWVudF9pZDogcGFyc2VJbnQodmFsKCdhZmxfY25pX2F0dGFjaG1lbnRfaWQnKSwgMTApIHx8IDAsCiAgICAgICAgICAgICAgICBjaXZpbGl0eTogU3RyaW5nKHZhbCgnYWZsX2NpdmlsaXR5JykgfHwgJycpLAogICAgICAgICAgICAgICAgbGVhcm5lcl9sYXN0X25hbWU6IFN0cmluZyh2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGxlYXJuZXJfZmlyc3RfbmFtZTogU3RyaW5nKHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGJpcnRoX2RhdGU6IFN0cmluZyh2YWwoJ2FmbF9iaXJ0aF9kYXRlJykgfHwgJycpLAogICAgICAgICAgICAgICAgYmlydGhfY2l0eTogU3RyaW5nKHZhbCgnYWZsX2JpcnRoX2NpdHknKSB8fCAnJyksCiAgICAgICAgICAgICAgICBiaXJ0aF9jb3VudHJ5OiBTdHJpbmcodmFsKCdhZmxfYmlydGhfY291bnRyeScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGNpdGl6ZW5zaGlwOiBTdHJpbmcodmFsKCdhZmxfY2l0aXplbnNoaXAnKSB8fCAnJyksCiAgICAgICAgICAgICAgICBtb3RoZXJ0b25ndWU6IFN0cmluZyh2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSB8fCAnJyksCiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogbm8tb3AgKi8gfQogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFZhbGlkYXRpb24KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgIGxldCBlbCA9ICQoaWQpOwogICAgICAgIGlmIChlbCkgeyBlbC50ZXh0Q29udGVudCA9IG1zZzsgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3IoaWQpIHsKICAgICAgICBsZXQgZWwgPSAkKGlkKTsKICAgICAgICBpZiAoZWwpIHsgZWwuc3R5bGUuZGlzcGxheSA9ICcnOyBlbC50ZXh0Q29udGVudCA9ICcnOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdmFsaWRhdGVBbGwoKSB7CiAgICAgICAgbGV0IG9rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCFwYXJzZUludCh2YWwoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpLCAxMCkpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtY25pLWVycm9yJywgdCgnaWREb2N1bWVudFJlcXVpcmVkJywgJ1BsZWFzZSB1cGxvYWQgeW91ciBpZGVudGl0eSBkb2N1bWVudC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWNuaS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbGVhcm5lcl9sYXN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWxhc3QtbmFtZS1lcnJvcicsIHQoJ2xlYXJuZXJMYXN0TmFtZVJlcXVpcmVkJywgIkxlYXJuZXIncyAvIGNhbmRpZGF0ZSdzIGxhc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItbGFzdC1uYW1lLWVycm9yJyk7IH0KCiAgICAgICAgaWYgKCF2YWwoJ2FmbF9sZWFybmVyX2ZpcnN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWZpcnN0LW5hbWUtZXJyb3InLCB0KCdsZWFybmVyRmlyc3ROYW1lUmVxdWlyZWQnLCAiTGVhcm5lcidzIC8gY2FuZGlkYXRlJ3MgZmlyc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItZmlyc3QtbmFtZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfZGF0ZScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWRhdGUtZXJyb3InLCB0KCdiaXJ0aERhdGVSZXF1aXJlZCcsICdEYXRlIG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtZGF0ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY2l0eScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNpdHktZXJyb3InLCB0KCdiaXJ0aENpdHlSZXF1aXJlZCcsICdDaXR5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY2l0eS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY291bnRyeScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNvdW50cnktZXJyb3InLCB0KCdiaXJ0aENvdW50cnlSZXF1aXJlZCcsICdDb3VudHJ5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY291bnRyeS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfY2l0aXplbnNoaXAnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicsIHQoJ2NpdGl6ZW5zaGlwUmVxdWlyZWQnLCAnQ2l0aXplbnNoaXAgaXMgcmVxdWlyZWQuJykpOyBvayA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7IGNsZWFyRXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbW90aGVydG9uZ3VlJykpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtbW90aGVydG9uZ3VlLWVycm9yJywgdCgnbW90aGVyVG9uZ3VlUmVxdWlyZWQnLCAnTW90aGVyIHRvbmd1ZSBpcyByZXF1aXJlZC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLW1vdGhlcnRvbmd1ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgbGV0IHMgPSAkKCdhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHMpIHsgcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9rOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEludGVyY2VwdCBQbGFjZSBPcmRlcgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGludGVyY2VwdFBsYWNlT3JkZXIoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBsZXQgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAgICAgICAgICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24sICcgKwoJCQkJJ1tkYXRhLXRlc3RpZD0iY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uIl0sICcgKwoJCQkJJy53cC1ibG9jay13b29jb21tZXJjZS1jaGVja291dC1wYXltZW50LWJsb2NrIGJ1dHRvblt0eXBlPSJzdWJtaXQiXScKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCFidG4pIHsgcmV0dXJuOyB9CgogICAgICAgICAgICBzYXZlRmllbGRzVG9TZXNzaW9uKHRydWUpOwogICAgICAgICAgICBkaXNwYXRjaFRvU3RvcmUoKTsKCiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGwoKSkgewogICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIHRydWUpOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEV2ZW50cwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkID09PSAnYWZsX2NuaV9maWxlJykgeyBoYW5kbGVGaWxlVXBsb2FkKCk7IH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMgJiYgZS50YXJnZXQubWF0Y2hlcygnLmFmbC1waS1pbnB1dCcpKSB7IGRlYm91bmNlZFNhdmUoKTsgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXRjaGVzICYmIGUudGFyZ2V0Lm1hdGNoZXMoJy5hZmwtcGktaW5wdXQnKSkgeyBkZWJvdW5jZWRTYXZlKCk7IH0KICAgICAgICB9KTsKCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQuaWQgPT09ICdhZmwtcmVwbGFjZS1idG4nIHx8IChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNhZmwtcmVwbGFjZS1idG4nKSkpIHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGxldCBidG4gPSBlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJy5hZmwtY2l2aWxpdHktb3B0Jyk7CiAgICAgICAgICAgIGlmICghYnRuKSB7IHJldHVybjsgfQogICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpOwogICAgICAgICAgICBsZXQgaW5wdXQgPSB0YXJnZXRJZCA/ICQodGFyZ2V0SWQpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGlucHV0KSB7IGlucHV0LnZhbHVlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpIHx8ICcnOyB9CiAgICAgICAgICAgIGxldCBncm91cCA9IGJ0bi5jbG9zZXN0ICYmIGJ0bi5jbG9zZXN0KCcuYWZsLWNpdmlsaXR5LWdyb3VwJyk7CiAgICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICAgICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLmFmbC1jaXZpbGl0eS1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCdhZmwtY2l2aWxpdHktb3B0LS1hY3RpdmUnLCBiID09PSBidG4pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVib3VuY2VkU2F2ZSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEJvb3QKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBib290KGNoZWNrb3V0RWwpIHsKICAgICAgICBpbmplY3RTZWN0aW9uKGNoZWNrb3V0RWwpOwogICAgICAgIHNhdmVGaWVsZHNUb1Nlc3Npb24oZmFsc2UpOwogICAgICAgIGludGVyY2VwdFBsYWNlT3JkZXIoKTsKICAgIH0KCiAgICB3YWl0Rm9yQ2hlY2tvdXQoYm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7Cn0pKCk7Cn0pOw==":["click"],"https://www.google.com/js/th/lYYBGbB22gTJg5WIiQ83vLrLfS9ah0bGJPzX9-2Oo7s.js":["mousedown","mousemove","mouseup"],"https://www.youtube.com/s/player/8ab5c328/player_embed_es6.vflset/en_US/base.js":["click","mousemove","scroll","mouseup","mousedown"],"https://cdn.trustindex.io/loader.js":["scroll","mousemove","click"],"https://www.aflyon.org/es/":["dblclick","click","mousemove","mouseup","mousedown"],"data:text/javascript;base64,d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHt3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gPSB7ImFqYXhVcmwiOiJodHRwczpcL1wvd3d3LmFmbHlvbi5vcmdcL3dwXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJub25jZSI6IjUzOGNjYWQ3NWIiLCJleGlzdGluZ0NuaUlkIjowLCJzdG9yZU5zIjoiYWZsLWNoZWNrb3V0IiwiaTE4biI6eyJ1cGxvYWRpbmciOiJFbnZvaSBlbiBjb3Vyc1x1MjAyNiIsImZpbGVTYXZlZCI6IkZpY2hpZXIgZW5yZWdpc3RyXHUwMGU5LiIsInVwbG9hZEVycm9yIjoiRXJyZXVyIGxvcnMgZHUgdFx1MDBlOWxcdTAwZTl2ZXJzZW1lbnQuIiwiaW52YWxpZFJlc3BvbnNlIjoiUlx1MDBlOXBvbnNlIGludmFsaWRlLiIsIm5ldHdvcmtFcnJvciI6IkVycmV1ciByXHUwMGU5c2VhdS4iLCJpZERvY3VtZW50UmVxdWlyZWQiOiJWZXVpbGxleiB0XHUwMGU5bFx1MDBlOXZlcnNlciB2b3RyZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkuIiwiaWREb2N1bWVudFJlcXVpcmVkU2hvcnQiOiJMZSBkb2N1bWVudCBkJ2lkZW50aXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsImxlYXJuZXJMYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGRlIGwnYXBwcmVuYW50XC9jYW5kaWRhdCBlc3Qgb2JsaWdhdG9pcmUuIiwibGVhcm5lckZpcnN0TmFtZVJlcXVpcmVkIjoiTGUgcHJcdTAwZTlub20gZGUgbCdhcHByZW5hbnRcL2NhbmRpZGF0IGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aERhdGVSZXF1aXJlZCI6IkxhIGRhdGUgZGUgbmFpc3NhbmNlIGVzdCBvYmxpZ2F0b2lyZS4iLCJiaXJ0aENpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiYmlydGhDb3VudHJ5UmVxdWlyZWQiOiJMZSBwYXlzIGRlIG5haXNzYW5jZSBlc3Qgb2JsaWdhdG9pcmUuIiwiY2l0aXplbnNoaXBSZXF1aXJlZCI6IkxhIG5hdGlvbmFsaXRcdTAwZTkgZXN0IG9ibGlnYXRvaXJlLiIsIm1vdGhlclRvbmd1ZVJlcXVpcmVkIjoiTGEgbGFuZ3VlIG1hdGVybmVsbGUgZXN0IG9ibGlnYXRvaXJlLiIsInRpdGxlUmVxdWlyZWQiOiJMYSBjaXZpbGl0XHUwMGU5IGVzdCBvYmxpZ2F0b2lyZS4iLCJmaXJzdE5hbWVSZXF1aXJlZCI6IkxlIHByXHUwMGU5bm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJsYXN0TmFtZVJlcXVpcmVkIjoiTGUgbm9tIGVzdCBvYmxpZ2F0b2lyZS4iLCJhZGRyZXNzUmVxdWlyZWQiOiJMJ2FkcmVzc2UgZXN0IG9ibGlnYXRvaXJlLiIsImNpdHlSZXF1aXJlZCI6IkxhIHZpbGxlIGVzdCBvYmxpZ2F0b2lyZS4iLCJwb3N0Y29kZVJlcXVpcmVkIjoiTGUgY29kZSBwb3N0YWwgZXN0IG9ibGlnYXRvaXJlLiIsImNvdW50cnlSZXF1aXJlZCI6IkxlIHBheXMgZXN0IG9ibGlnYXRvaXJlLiIsInZhbGlkRW1haWxSZXF1aXJlZCI6IlVuIGUtbWFpbCB2YWxpZGUgZXN0IG9ibGlnYXRvaXJlLiJ9LCJwcmVmaWxsIjp7ImNpdmlsaXR5IjoiIiwibGVhcm5lckxhc3ROYW1lIjoiIiwibGVhcm5lckZpcnN0TmFtZSI6IiIsImJpcnRoRGF0ZSI6IiIsImJpcnRoQ2l0eSI6IiIsImJpcnRoQ291bnRyeSI6IiIsImNpdGl6ZW5zaGlwIjoiIiwibW90aGVydG9uZ3VlIjoiIn19Oy8qIEFGTCBDaGVja291dCDigJMgUGVyc29uYWwgSW5mb3JtYXRpb24KICogU2VjdGlvbiBpcyBpbmplY3RlZCBpbnNpZGUgdGhlIGNoZWNrb3V0IGZvcm0uIElmIFJlYWN0IHJlbW92ZXMgaXQsCiAqIGEgTXV0YXRpb25PYnNlcnZlciByZS1pbnNlcnRzIGEgY2xvbmUgc28gdGhlIGJsb2NrIHN0YXlzIHZpc2libGUuCiAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBjZmcgPSB3aW5kb3cuYWZsQ2hlY2tvdXRQZXJzb25hbEluZm8gfHwge307CiAgICBpZiAoIWNmZy5hamF4VXJsKSB7IHJldHVybjsgfQoKICAgIGxldCBpMThuID0gY2ZnLmkxOG4gfHwge307CiAgICBsZXQgc2F2ZVRpbWVyID0gbnVsbDsKICAgIGxldCBpbmplY3RlZFNlY3Rpb24gPSBudWxsOyAgLy8gcmVmZXJlbmNlIHRvIHRoZSBub2RlIHdlIGluc2VydGVkCiAgICBsZXQgYmFja3VwQ2xvbmUgPSBudWxsOyAgICAgIC8vIGNsb25lIHVzZWQgdG8gcmUtaW5zZXJ0IHdoZW4gUmVhY3QgcmVtb3ZlcyBvdXIgbm9kZQoKICAgIGZ1bmN0aW9uICQoaWQpIHsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgfQogICAgZnVuY3Rpb24gdmFsKGlkKSB7IGxldCBlbCA9ICQoaWQpOyByZXR1cm4gZWwgPyAoZWwudmFsdWUgfHwgJycpLnRyaW0oKSA6ICcnOyB9CiAgICBmdW5jdGlvbiB0KGtleSwgZmFsbGJhY2spIHsgcmV0dXJuIGkxOG5ba2V5XSB8fCBmYWxsYmFjayB8fCAnJzsgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFdhaXQgZm9yIHRoZSBXQyBjaGVja291dCBibG9jawogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JDaGVja291dChjYikgewogICAgICAgIGxldCBzZWwgPSBbCiAgICAgICAgICAgICcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQnLAogICAgICAgICAgICAnW2RhdGEtYmxvY2stbmFtZT0id29vY29tbWVyY2UvY2hlY2tvdXQiXScsCiAgICAgICAgICAgICcud2MtYmxvY2stY2hlY2tvdXQnLAogICAgICAgIF07CiAgICAgICAgZnVuY3Rpb24gZmluZCgpIHsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7aSA8IHNlbC5sZW5ndGg7aSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbFtpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHsgcmV0dXJuIGVsOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gZmluZCgpOwogICAgICAgIGlmICh0KSB7IGNiKHQpOyByZXR1cm47IH0KICAgICAgICBsZXQgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgdCA9IGZpbmQoKTsKICAgICAgICAgICAgaWYgKHQpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgY2IodCk7IH0KICAgICAgICB9KTsKICAgICAgICBvYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgb2JzLmRpc2Nvbm5lY3QoKTsgfSwgMTUwMDApOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEluamVjdCBzZWN0aW9uIGluc2lkZSBjaGVja291dCBmb3JtOyBrZWVwIGJhY2t1cCB0byByZS1pbnNlcnQgaWYgcmVtb3ZlZAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKSB7CiAgICAgICAgbGV0IGlubmVyID0gY2hlY2tvdXRFbC5xdWVyeVNlbGVjdG9yKCcud3AtYmxvY2std29vY29tbWVyY2UtY2hlY2tvdXQtZmllbGRzLWJsb2NrJyk7CiAgICAgICAgcmV0dXJuIGlubmVyIHx8IGNoZWNrb3V0RWwucXVlcnlTZWxlY3RvcignLndjLWJsb2NrLWNoZWNrb3V0X19tYWluJykgfHwgY2hlY2tvdXRFbDsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0U2VsZWN0c0luU2VjdGlvbihzZWN0aW9uKSB7CiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3RbZGF0YS1pbml0aWFsXScpLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgewogICAgICAgICAgICBsZXQgaW5pdGlhbCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaW5pdGlhbCcpOwogICAgICAgICAgICBpZiAoaW5pdGlhbCkgeyBzZWwudmFsdWUgPSBpbml0aWFsOyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5qZWN0U2VjdGlvbihjaGVja291dEVsKSB7CiAgICAgICAgbGV0IHBhcmVudCA9IGdldEluc2VydGlvblBhcmVudChjaGVja291dEVsKTsKICAgICAgICBpZiAoIXBhcmVudCkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IHN0YWdpbmcgPSAkKCdhZmwtY25pLXN0YWdpbmcnKTsKICAgICAgICBpZiAoIXN0YWdpbmcpIHsgcmV0dXJuOyB9CgogICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBpbmplY3RlZCBzZWN0aW9uIHRoYXQgd2FzIHJlbW92ZWQsIHJlLWluc2VydCBmcm9tIGJhY2t1cAogICAgICAgIGlmIChpbmplY3RlZFNlY3Rpb24gJiYgIWRvY3VtZW50LmJvZHkuY29udGFpbnMoaW5qZWN0ZWRTZWN0aW9uKSAmJiBiYWNrdXBDbG9uZSkgewogICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgIGluamVjdGVkU2VjdGlvbiA9IGJhY2t1cENsb25lOwogICAgICAgICAgICBiYWNrdXBDbG9uZSA9IGJhY2t1cENsb25lLmNsb25lTm9kZSh0cnVlKTsKICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHNlY3Rpb24gPSBzdGFnaW5nLnF1ZXJ5U2VsZWN0b3IoJyNhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICBpZiAoIXNlY3Rpb24pIHsgcmV0dXJuOyB9CgogICAgICAgIHNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc2VjdGlvbiwgcGFyZW50LmZpcnN0Q2hpbGQpOwogICAgICAgIGluamVjdGVkU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgaW5pdFNlbGVjdHNJblNlY3Rpb24oaW5qZWN0ZWRTZWN0aW9uKTsKICAgICAgICBiYWNrdXBDbG9uZSA9IHNlY3Rpb24uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAvLyBJZiBSZWFjdCByZW1vdmVzIG91ciBzZWN0aW9uLCB3ZSdsbCByZS1pbnNlcnQgdGhlIGJhY2t1cAogICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGluamVjdGVkU2VjdGlvbiAmJiAhZG9jdW1lbnQuYm9keS5jb250YWlucyhpbmplY3RlZFNlY3Rpb24pICYmIGJhY2t1cENsb25lICYmIHBhcmVudC5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGJhY2t1cENsb25lLCBwYXJlbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBpbmplY3RlZFNlY3Rpb24gPSBiYWNrdXBDbG9uZTsKICAgICAgICAgICAgICAgIGJhY2t1cENsb25lID0gYmFja3VwQ2xvbmUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgICAgaW5qZWN0ZWRTZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIGluaXRTZWxlY3RzSW5TZWN0aW9uKGluamVjdGVkU2VjdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogc2F2ZSB0ZXh0IGZpZWxkcyB0byBXQyBzZXNzaW9uCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gc2F2ZUZpZWxkc1RvU2Vzc2lvbihzeW5jKSB7CiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3NhdmVfZmllbGRzJyk7CiAgICAgICAgZmQuYXBwZW5kKCdub25jZScsIGNmZy5ub25jZSk7CiAgICAgICAgZmQuYXBwZW5kKCdjaXZpbGl0eScsIHZhbCgnYWZsX2NpdmlsaXR5JykpOwogICAgICAgIGZkLmFwcGVuZCgnbGVhcm5lcl9sYXN0X25hbWUnLCB2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2xlYXJuZXJfZmlyc3RfbmFtZScsIHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2JpcnRoX2RhdGUnLCB2YWwoJ2FmbF9iaXJ0aF9kYXRlJykpOwogICAgICAgIGZkLmFwcGVuZCgnYmlydGhfY2l0eScsIHZhbCgnYWZsX2JpcnRoX2NpdHknKSk7CiAgICAgICAgZmQuYXBwZW5kKCdiaXJ0aF9jb3VudHJ5JywgdmFsKCdhZmxfYmlydGhfY291bnRyeScpKTsKICAgICAgICBmZC5hcHBlbmQoJ2NpdGl6ZW5zaGlwJywgdmFsKCdhZmxfY2l0aXplbnNoaXAnKSk7CiAgICAgICAgZmQuYXBwZW5kKCdtb3RoZXJ0b25ndWUnLCB2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSk7CiAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vcGVuKCdQT1NUJywgY2ZnLmFqYXhVcmwsICFzeW5jKTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVib3VuY2VkU2F2ZSgpIHsKICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVyKTsKICAgICAgICBzYXZlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2F2ZUZpZWxkc1RvU2Vzc2lvbihmYWxzZSk7IH0sIDQwMCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gQUpBWDogZmlsZSB1cGxvYWQKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlVXBsb2FkKCkgewogICAgICAgIGxldCBpbnB1dCA9ICQoJ2FmbF9jbmlfZmlsZScpOwogICAgICAgIGlmICghaW5wdXQgfHwgIWlucHV0LmZpbGVzIHx8ICFpbnB1dC5maWxlc1swXSkgeyByZXR1cm47IH0KCiAgICAgICAgbGV0IGZpbGUgPSBpbnB1dC5maWxlc1swXTsKICAgICAgICBsZXQgc3RhdHVzID0gJCgnYWZsLXVwbG9hZC1zdGF0dXMnKTsKICAgICAgICBsZXQgZmlsZU5hbWUgPSAkKCdhZmwtZmlsZS1uYW1lJyk7CiAgICAgICAgbGV0IGRvY1R5cGUgPSB2YWwoJ2FmbF9jbmlfdHlwZScpIHx8ICdjbmknOwoKICAgICAgICBpZiAoc3RhdHVzKSB7IHN0YXR1cy50ZXh0Q29udGVudCA9IHQoJ3VwbG9hZGluZycsICdVcGxvYWRpbmfigKYnKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyc7IH0KICAgICAgICBpZiAoZmlsZU5hbWUpIHsgZmlsZU5hbWUudGV4dENvbnRlbnQgPSBmaWxlLm5hbWU7IH0KCiAgICAgICAgbGV0IGZkID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgZmQuYXBwZW5kKCdhY3Rpb24nLCAnYWZsX2NoZWNrb3V0X3VwbG9hZF9jbmknKTsKICAgICAgICBmZC5hcHBlbmQoJ25vbmNlJywgY2ZnLm5vbmNlKTsKICAgICAgICBmZC5hcHBlbmQoJ2FmbF9jaGVja291dF9maWxlJywgZmlsZSk7CiAgICAgICAgZmQuYXBwZW5kKCdkb2NfdHlwZScsIGRvY1R5cGUpOwoKICAgICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCBjZmcuYWpheFVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCByZXNwID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgIGlmIChyZXNwLnN1Y2Nlc3MgJiYgcmVzcC5kYXRhICYmIHJlc3AuZGF0YS5hdHRhY2htZW50X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gcmVzcC5kYXRhLmF0dGFjaG1lbnRfaWQ7IH0KICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKCdhZmwtY25pLWVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyTICcgKyB0KCdmaWxlU2F2ZWQnLCAnRmlsZSBzYXZlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLW9rJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSAocmVzcC5kYXRhICYmIHJlc3AuZGF0YS5tZXNzYWdlKSB8fCB0KCd1cGxvYWRFcnJvcicsICdVcGxvYWQgZXJyb3IuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyBtc2c7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgaWYgKHN0YXR1cykgeyBzdGF0dXMudGV4dENvbnRlbnQgPSAn4pyXICcgKyB0KCdpbnZhbGlkUmVzcG9uc2UnLCAnSW52YWxpZCByZXNwb25zZS4nKTsgc3RhdHVzLmNsYXNzTmFtZSA9ICdhZmwtdXBsb2FkLXN0YXR1cyBhZmwtdXBsb2FkLWVycic7IH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChzdGF0dXMpIHsgc3RhdHVzLnRleHRDb250ZW50ID0gJ+KclyAnICsgdCgnbmV0d29ya0Vycm9yJywgJ05ldHdvcmsgZXJyb3IuJyk7IHN0YXR1cy5jbGFzc05hbWUgPSAnYWZsLXVwbG9hZC1zdGF0dXMgYWZsLXVwbG9hZC1lcnInOyB9CiAgICAgICAgfTsKICAgICAgICB4aHIuc2VuZChmZCk7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gIlJlcGxhY2UiIGJ1dHRvbgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGhhbmRsZVJlcGxhY2UoKSB7CiAgICAgICAgbGV0IGV4aXN0aW5nID0gJCgnYWZsLWV4aXN0aW5nLWZpbGUnKTsKICAgICAgICBsZXQgdXBsb2FkID0gJCgnYWZsLXVwbG9hZC1maWVsZCcpOwogICAgICAgIGlmIChleGlzdGluZykgeyBleGlzdGluZy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9CiAgICAgICAgaWYgKHVwbG9hZCkgeyB1cGxvYWQuc3R5bGUuZGlzcGxheSA9ICcnOyB9CiAgICAgICAgbGV0IGhpZGRlbiA9ICQoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpOwogICAgICAgIGlmIChoaWRkZW4pIHsgaGlkZGVuLnZhbHVlID0gJyc7IH0KICAgIH0KCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAvLyBEaXNwYXRjaCB0byBXQyBTdG9yZSAoYmVzdC1lZmZvcnQsIGZvciBleHRlbnNpb25zIHBheWxvYWQpCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gZGlzcGF0Y2hUb1N0b3JlKCkgewogICAgICAgIGlmICghd2luZG93LndwIHx8ICF3aW5kb3cud3AuZGF0YSkgeyByZXR1cm47IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgZCA9IHdpbmRvdy53cC5kYXRhLmRpc3BhdGNoKCd3Yy9zdG9yZS9jaGVja291dCcpOwogICAgICAgICAgICBpZiAoIWQgfHwgdHlwZW9mIGQuc2V0RXh0ZW5zaW9uRGF0YSAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm47IH0KICAgICAgICAgICAgZC5zZXRFeHRlbnNpb25EYXRhKGNmZy5zdG9yZU5zIHx8ICdhZmwtY2hlY2tvdXQnLCB7CiAgICAgICAgICAgICAgICBjbmlfYXR0YWNobWVudF9pZDogcGFyc2VJbnQodmFsKCdhZmxfY25pX2F0dGFjaG1lbnRfaWQnKSwgMTApIHx8IDAsCiAgICAgICAgICAgICAgICBjaXZpbGl0eTogU3RyaW5nKHZhbCgnYWZsX2NpdmlsaXR5JykgfHwgJycpLAogICAgICAgICAgICAgICAgbGVhcm5lcl9sYXN0X25hbWU6IFN0cmluZyh2YWwoJ2FmbF9sZWFybmVyX2xhc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGxlYXJuZXJfZmlyc3RfbmFtZTogU3RyaW5nKHZhbCgnYWZsX2xlYXJuZXJfZmlyc3RfbmFtZScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGJpcnRoX2RhdGU6IFN0cmluZyh2YWwoJ2FmbF9iaXJ0aF9kYXRlJykgfHwgJycpLAogICAgICAgICAgICAgICAgYmlydGhfY2l0eTogU3RyaW5nKHZhbCgnYWZsX2JpcnRoX2NpdHknKSB8fCAnJyksCiAgICAgICAgICAgICAgICBiaXJ0aF9jb3VudHJ5OiBTdHJpbmcodmFsKCdhZmxfYmlydGhfY291bnRyeScpIHx8ICcnKSwKICAgICAgICAgICAgICAgIGNpdGl6ZW5zaGlwOiBTdHJpbmcodmFsKCdhZmxfY2l0aXplbnNoaXAnKSB8fCAnJyksCiAgICAgICAgICAgICAgICBtb3RoZXJ0b25ndWU6IFN0cmluZyh2YWwoJ2FmbF9tb3RoZXJ0b25ndWUnKSB8fCAnJyksCiAgICAgICAgICAgIH0pOwogICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogbm8tb3AgKi8gfQogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIFZhbGlkYXRpb24KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgIGxldCBlbCA9ICQoaWQpOwogICAgICAgIGlmIChlbCkgeyBlbC50ZXh0Q29udGVudCA9IG1zZzsgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3IoaWQpIHsKICAgICAgICBsZXQgZWwgPSAkKGlkKTsKICAgICAgICBpZiAoZWwpIHsgZWwuc3R5bGUuZGlzcGxheSA9ICcnOyBlbC50ZXh0Q29udGVudCA9ICcnOyB9CiAgICB9CgogICAgZnVuY3Rpb24gdmFsaWRhdGVBbGwoKSB7CiAgICAgICAgbGV0IG9rID0gdHJ1ZTsKCiAgICAgICAgaWYgKCFwYXJzZUludCh2YWwoJ2FmbF9jbmlfYXR0YWNobWVudF9pZCcpLCAxMCkpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtY25pLWVycm9yJywgdCgnaWREb2N1bWVudFJlcXVpcmVkJywgJ1BsZWFzZSB1cGxvYWQgeW91ciBpZGVudGl0eSBkb2N1bWVudC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWNuaS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbGVhcm5lcl9sYXN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWxhc3QtbmFtZS1lcnJvcicsIHQoJ2xlYXJuZXJMYXN0TmFtZVJlcXVpcmVkJywgIkxlYXJuZXIncyAvIGNhbmRpZGF0ZSdzIGxhc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItbGFzdC1uYW1lLWVycm9yJyk7IH0KCiAgICAgICAgaWYgKCF2YWwoJ2FmbF9sZWFybmVyX2ZpcnN0X25hbWUnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1sZWFybmVyLWZpcnN0LW5hbWUtZXJyb3InLCB0KCdsZWFybmVyRmlyc3ROYW1lUmVxdWlyZWQnLCAiTGVhcm5lcidzIC8gY2FuZGlkYXRlJ3MgZmlyc3QgbmFtZSBpcyByZXF1aXJlZC4iKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLWxlYXJuZXItZmlyc3QtbmFtZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfZGF0ZScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWRhdGUtZXJyb3InLCB0KCdiaXJ0aERhdGVSZXF1aXJlZCcsICdEYXRlIG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtZGF0ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY2l0eScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNpdHktZXJyb3InLCB0KCdiaXJ0aENpdHlSZXF1aXJlZCcsICdDaXR5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY2l0eS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfYmlydGhfY291bnRyeScpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignYWZsLWJpcnRoLWNvdW50cnktZXJyb3InLCB0KCdiaXJ0aENvdW50cnlSZXF1aXJlZCcsICdDb3VudHJ5IG9mIGJpcnRoIGlzIHJlcXVpcmVkLicpKTsgb2sgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgeyBjbGVhckVycm9yKCdhZmwtYmlydGgtY291bnRyeS1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfY2l0aXplbnNoaXAnKSkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicsIHQoJ2NpdGl6ZW5zaGlwUmVxdWlyZWQnLCAnQ2l0aXplbnNoaXAgaXMgcmVxdWlyZWQuJykpOyBvayA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7IGNsZWFyRXJyb3IoJ2FmbC1jaXRpemVuc2hpcC1lcnJvcicpOyB9CgogICAgICAgIGlmICghdmFsKCdhZmxfbW90aGVydG9uZ3VlJykpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdhZmwtbW90aGVydG9uZ3VlLWVycm9yJywgdCgnbW90aGVyVG9uZ3VlUmVxdWlyZWQnLCAnTW90aGVyIHRvbmd1ZSBpcyByZXF1aXJlZC4nKSk7IG9rID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsgY2xlYXJFcnJvcignYWZsLW1vdGhlcnRvbmd1ZS1lcnJvcicpOyB9CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgbGV0IHMgPSAkKCdhZmwtY25pLXNlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHMpIHsgcy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9rOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEludGVyY2VwdCBQbGFjZSBPcmRlcgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGludGVyY2VwdFBsYWNlT3JkZXIoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBsZXQgYnRuID0gZS50YXJnZXQuY2xvc2VzdCgKICAgICAgICAgICAgICAgICcud2MtYmxvY2stY29tcG9uZW50cy1jaGVja291dC1wbGFjZS1vcmRlci1idXR0b24sICcgKwoJCQkJJ1tkYXRhLXRlc3RpZD0iY2hlY2tvdXQtcGxhY2Utb3JkZXItYnV0dG9uIl0sICcgKwoJCQkJJy53cC1ibG9jay13b29jb21tZXJjZS1jaGVja291dC1wYXltZW50LWJsb2NrIGJ1dHRvblt0eXBlPSJzdWJtaXQiXScKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCFidG4pIHsgcmV0dXJuOyB9CgogICAgICAgICAgICBzYXZlRmllbGRzVG9TZXNzaW9uKHRydWUpOwogICAgICAgICAgICBkaXNwYXRjaFRvU3RvcmUoKTsKCiAgICAgICAgICAgIGlmICghdmFsaWRhdGVBbGwoKSkgewogICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIHRydWUpOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEV2ZW50cwogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkID09PSAnYWZsX2NuaV9maWxlJykgeyBoYW5kbGVGaWxlVXBsb2FkKCk7IH0KICAgICAgICAgICAgaWYgKGUudGFyZ2V0Lm1hdGNoZXMgJiYgZS50YXJnZXQubWF0Y2hlcygnLmFmbC1waS1pbnB1dCcpKSB7IGRlYm91bmNlZFNhdmUoKTsgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGlmIChlLnRhcmdldC5tYXRjaGVzICYmIGUudGFyZ2V0Lm1hdGNoZXMoJy5hZmwtcGktaW5wdXQnKSkgeyBkZWJvdW5jZWRTYXZlKCk7IH0KICAgICAgICB9KTsKCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpZiAoZS50YXJnZXQuaWQgPT09ICdhZmwtcmVwbGFjZS1idG4nIHx8IChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNhZmwtcmVwbGFjZS1idG4nKSkpIHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlcGxhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGxldCBidG4gPSBlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJy5hZmwtY2l2aWxpdHktb3B0Jyk7CiAgICAgICAgICAgIGlmICghYnRuKSB7IHJldHVybjsgfQogICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpOwogICAgICAgICAgICBsZXQgaW5wdXQgPSB0YXJnZXRJZCA/ICQodGFyZ2V0SWQpIDogbnVsbDsKICAgICAgICAgICAgaWYgKGlucHV0KSB7IGlucHV0LnZhbHVlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpIHx8ICcnOyB9CiAgICAgICAgICAgIGxldCBncm91cCA9IGJ0bi5jbG9zZXN0ICYmIGJ0bi5jbG9zZXN0KCcuYWZsLWNpdmlsaXR5LWdyb3VwJyk7CiAgICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICAgICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLmFmbC1jaXZpbGl0eS1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7CiAgICAgICAgICAgICAgICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCdhZmwtY2l2aWxpdHktb3B0LS1hY3RpdmUnLCBiID09PSBidG4pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGVib3VuY2VkU2F2ZSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC8vIEJvb3QKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBmdW5jdGlvbiBib290KGNoZWNrb3V0RWwpIHsKICAgICAgICBpbmplY3RTZWN0aW9uKGNoZWNrb3V0RWwpOwogICAgICAgIHNhdmVGaWVsZHNUb1Nlc3Npb24oZmFsc2UpOwogICAgICAgIGludGVyY2VwdFBsYWNlT3JkZXIoKTsKICAgIH0KCiAgICB3YWl0Rm9yQ2hlY2tvdXQoYm9vdCk7CiAgICBiaW5kRXZlbnRzKCk7Cn0pKCk7Cn0pOw==":["click"],"https://www.aflyon.org/":["dblclick","click","mousemove","mouseup","mousedown"]},"TOUCH":{"https://www.aflyon.org/app/themes/afl/dist/666.a3841c77.js?ver=7.1.2":["touchend","touchstart","touchcancel"],"rocket-preload-links-js-after":["touchstart"],"https://www.aflyon.org/categorie-produit/cours/cours-particuliers/":["touchcancel","touchend","touchstart","touchmove"],"https://www.aflyon.org/app/themes/afl/dist/59.cee14674.js?ver=7.1.2":["touchcancel","touchend","touchmove","touchstart"],"https://www.google.com/js/th/lYYBGbB22gTJg5WIiQ83vLrLfS9ah0bGJPzX9-2Oo7s.js":["touchend","touchstart"],"https://www.youtube.com/s/player/8ab5c328/player_embed_es6.vflset/en_US/base.js":["touchend","touchstart"],"https://cdn.trustindex.io/loader.js":["touchmove","touchstart"],"https://www.aflyon.org/es/":["touchcancel","touchend","touchstart","touchmove"],"https://www.aflyon.org/":["touchcancel","touchend","touchstart","touchmove"]},"SENSOR":{"https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.GRsEQlAF6LQ.2021.O/ck=ytembeds.base.qzDvqMbGmKI.L.W.O/am=AAAAQA/d=1/exm=base,root/excm=base,root/ed=1/br=1/rs=AGKMywESyf9Y9X87KVWSKj1IXnBDyFLpDQ/m=r78Drb":["orientationchange"],"https://www.youtube.com/s/player/8ab5c328/player_embed_es6.vflset/en_US/base.js":["orientationchange"],"https://www.youtube.com/s/_/ytembeds/_/js/k=ytembeds.base.en_US.GRsEQlAF6LQ.2021.O/ck=ytembeds.base.qzDvqMbGmKI.L.W.O/am=AAAAQADG/d=1/exm=base,root/excm=base,root/ed=1/br=1/rs=AGKMywE-IAOb1-WuZ5ii0tpi9f-56d9aig/m=r78Drb":["orientationchange"]}},"canvas_fingerprinters":{"data_url":{},"fingerprinters":[],"styles":{},"texts":{}},"canvas_font_fingerprinters":{"canvas_font":{},"text_measure":{}},"cookies":[{"name":"_GRECAPTCHA","value":"09AKhCRwixMqhRkb3cruS6bKOG452TYnLcGepe8S60mSdTIVEPcNcVLOA3TZu5uQrp425ezZ68WWg_hEr279OXdz0","domain":"www.google.com","path":"/recaptcha","expires":"2027-03-30T18:49:44.693Z","size":100,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"High","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true},{"name":"sbjs_migrations","value":"1418474375998%3D1","domain":"aflyon.org","path":"/","expires":-1,"size":32,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"sbjs_current_add","value":"fd%3D2026-10-01%2018%3A49%3A44%7C%7C%7Cep%3Dhttps%3A%2F%2Fwww.aflyon.org%2Fcategorie-produit%2Fcours%2Fcours-particuliers%2F%7C%7C%7Crf%3D%28none%29","domain":"aflyon.org","path":"/","expires":-1,"size":164,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"sbjs_first_add","value":"fd%3D2026-10-01%2018%3A49%3A44%7C%7C%7Cep%3Dhttps%3A%2F%2Fwww.aflyon.org%2Fcategorie-produit%2Fcours%2Fcours-particuliers%2F%7C%7C%7Crf%3D%28none%29","domain":"aflyon.org","path":"/","expires":-1,"size":162,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"sbjs_current","value":"typ%3Dtypein%7C%7C%7Csrc%3D%28direct%29%7C%7C%7Cmdm%3D%28none%29%7C%7C%7Ccmp%3D%28none%29%7C%7C%7Ccnt%3D%28none%29%7C%7C%7Ctrm%3D%28none%29%7C%7C%7Cid%3D%28none%29%7C%7C%7Cplt%3D%28none%29%7C%7C%7Cfmt%3D%28none%29%7C%7C%7Ctct%3D%28none%29","domain":"aflyon.org","path":"/","expires":-1,"size":250,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"sbjs_first","value":"typ%3Dtypein%7C%7C%7Csrc%3D%28direct%29%7C%7C%7Cmdm%3D%28none%29%7C%7C%7Ccmp%3D%28none%29%7C%7C%7Ccnt%3D%28none%29%7C%7C%7Ctrm%3D%28none%29%7C%7C%7Cid%3D%28none%29%7C%7C%7Cplt%3D%28none%29%7C%7C%7Cfmt%3D%28none%29%7C%7C%7Ctct%3D%28none%29","domain":"aflyon.org","path":"/","expires":-1,"size":248,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"sbjs_udata","value":"vst%3D1%7C%7C%7Cuip%3D%28none%29%7C%7C%7Cuag%3DMozilla%2F5.0%20%28Linux%3B%20Android%2011%3B%20Pixel%205%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F99.0.4812.0%20Mobile%20Safari%2F537.36","domain":"aflyon.org","path":"/","expires":-1,"size":222,"httpOnly":false,"secure":false,"session":true,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"sbjs_session","value":"pgs%3D1%7C%7C%7Ccpg%3Dhttps%3A%2F%2Fwww.aflyon.org%2Fcategorie-produit%2Fcours%2Fcours-particuliers%2F","domain":"aflyon.org","path":"/","expires":"2026-10-01T19:19:44.000Z","size":114,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false}],"fb_pixel_events":[],"tiktok_pixel_events":[],"twitter_pixel_events":[],"google_analytics_events":[],"key_logging":{},"session_recorders":{},"third_party_trackers":[{"data":{"body":{"context":{"client":{"browserName":"Chrome Mobile","browserVersion":"99.0.4812.0","clientName":56,"clientVersion":"2.20261001.01.00","configInfo":{"appInstallData":"CMDW-tUGEMn2gBMQyvuAExD36NIcEKSOgRMQwY_QHBC9tq4FENut0hwQuOTOHBDa984cEIeszhwQrom4IhCwirgiEMHUqBcQn8-AExDM364FELa1gBMQ3rzOHBDw3tEcEIHNzhwQmY2xBRD2q7AFEL6E0RwQ-MSAExDT2tIcEPva0hwQ5-vRHBCt3tEcEKSp0RwQrtbPHBDxtNAcENGIuCIQvYqwBRDwnLAFEJ7QsAUQmK_SHBC8pNAcEIu50hwQtNfSHBDOqNEcEJPy0RwQsPjRHBCJsM4cEMq_0hwQtt7RHBCskdEcEMLA0hwQ9vfRHBDszdAcKmhDQU1TU0JWRC1acS1ETWVVRXBVQ25BNzVGWGF2QnVFV3YtUVB1d0FNeHdXY0FiSUUxQVNVcnVrTE1xQ3NCQU9UekFPMjVBYmtoUmVzdXdQWjFRWGRMSnlMQS1PZkJBVUZCQU1kQnc9PTAA"},"connectionType":"CONN_CELLULAR_4G","deviceMake":"google","deviceModel":"pixel 5","gl":"FR","hl":"en","osName":"Android","osVersion":"11","platform":"MOBILE","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","windowHeightPoints":360,"windowWidthPoints":354},"thirdParty":{"embedUrl":"https://www.aflyon.org/"}},"events":[{"context":{"lastActivityMs":"6432"},"eventTimeMs":1790880583339,"finalPayload":{"csn":"HrAEni7kT0IjZBTK"}}],"serializedClientEventId":{"clientCounter":"26204","serializedEventId":"QKu-areBIqOpmPUPyd6f2QQ"}},"filter":"/v1/log_event","listName":"easyprivacy.txt","query":{"alt":"json"}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.youtube.com/youtubei/v1/log_event?alt=json"},{"data":{"body":{"context":{"client":{"browserName":"Chrome Mobile","browserVersion":"99.0.4812.0","clientName":56,"clientVersion":"2.20261001.01.00","configInfo":{"appInstallData":"CMDW-tUGEMn2gBMQyvuAExD36NIcEKSOgRMQwY_QHBC9tq4FENut0hwQuOTOHBDa984cEIeszhwQrom4IhCwirgiEMHUqBcQn8-AExDM364FELa1gBMQ3rzOHBDw3tEcEIHNzhwQmY2xBRD2q7AFEL6E0RwQ-MSAExDT2tIcEPva0hwQ5-vRHBCt3tEcEKSp0RwQrtbPHBDxtNAcENGIuCIQvYqwBRDwnLAFEJ7QsAUQmK_SHBC8pNAcEIu50hwQtNfSHBDOqNEcEJPy0RwQsPjRHBCJsM4cEMq_0hwQtt7RHBCskdEcEMLA0hwQ9vfRHBDszdAcKmhDQU1TU0JWRC1acS1ETWVVRXBVQ25BNzVGWGF2QnVFV3YtUVB1d0FNeHdXY0FiSUUxQVNVcnVrTE1xQ3NCQU9UekFPMjVBYmtoUmVzdXdQWjFRWGRMSnlMQS1PZkJBVUZCQU1kQnc9PTAA"},"connectionType":"CONN_CELLULAR_4G","deviceMake":"google","deviceModel":"pixel 5","gl":"FR","hl":"en","osName":"Android","osVersion":"11","platform":"MOBILE","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","windowHeightPoints":360,"windowWidthPoints":354},"thirdParty":{"embedUrl":"https://www.aflyon.org/"}},"events":[{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576767,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"mm_is"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576769,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"mm_ie"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576772,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_cus"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576773,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_eps"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576773,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_epe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576773,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_cue"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576886,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"pe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576889,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_wes"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576638,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"srt"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576552,"latencyActionBaselined":{"clientActionNonce":"v5nj1PWT052XImde"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576561,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"nreqs"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576638,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"nress"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576652,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"nrese"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576651,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"wffs"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576675,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"wffe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576650,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rsf_pj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576784,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rse_pj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576649,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rsf_pc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576680,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rse_pc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576650,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rsf_ecj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576729,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rse_ecj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576650,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rsf_ecc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576676,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rse_ecc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576892,"latencyActionInfo":{"actionType":"LATENCY_ACTION_VIDEO_PREVIEW","clientActionNonce":"v5nj1PWT052XImde","httpProtocol":"h3","isNavigation":true,"isVisible":true,"loadType":"cold","transportProtocol":"quic"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576736,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"rses_dpj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880576898,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_wee"}},{"context":{"lastActivityMs":"26"},"eventTimeMs":1790880576934,"screenCreated":{"csn":"a807tBAxPHk3zMl7","pageVe":{"veType":16623,"youtubeData":{"servletData":{"serializedServletEventId":"QKu-areBIqOpmPUPyd6f2QQ"}}}}},{"context":{"lastActivityMs":"27"},"eventTimeMs":1790880576934,"latencyActionInfo":{"clientActionNonce":"v5nj1PWT052XImde","clientScreenNonce":"a807tBAxPHk3zMl7"}},{"context":{"lastActivityMs":"27"},"eventTimeMs":1790880576934,"screenCreated":{"csn":"HrAEni7kT0IjZBTK","implicitGesture":{"gestureType":"INTERACTION_LOGGING_GESTURE_TYPE_AUTOMATED","gesturedVe":{"veType":16623},"parentCsn":"a807tBAxPHk3zMl7"},"pageVe":{"veType":32594}}},{"context":{"lastActivityMs":"27"},"eventTimeMs":1790880576934,"visualElementHidden":{"csn":"a807tBAxPHk3zMl7","eventType":16,"ve":{"veType":16623}}},{"context":{"lastActivityMs":"27"},"eventTimeMs":1790880576934,"latencyActionInfo":{"clientActionNonce":"v5nj1PWT052XImde","clientScreenNonce":"HrAEni7kT0IjZBTK"}},{"context":{"lastActivityMs":"28"},"eventTimeMs":1790880576935,"visualElementAttached":{"childVes":[{"trackingParams":"CAAQru4BIhMI4KTohL6ZlwMVuOhJBx3dBwpSygEElTWKOg=="}],"csn":"HrAEni7kT0IjZBTK","parentVe":{"veType":32594}}},{"context":{"lastActivityMs":"33"},"eventTimeMs":1790880576940,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"qoes"}},{"context":{"lastActivityMs":"34"},"eventTimeMs":1790880576942,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"fs"}},{"context":{"lastActivityMs":"55"},"eventTimeMs":1790880576962,"latencyActionInfo":{"clientActionNonce":"v5nj1PWT052XImde","clientPlaybackNonce":"c4nyBdawPtO6-us7"}},{"context":{"lastActivityMs":"56"},"eventTimeMs":1790880576963,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_pr"}},{"context":{"lastActivityMs":"60"},"eventTimeMs":1790880576967,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"pot_ist"}},{"context":{"lastActivityMs":"63"},"eventTimeMs":1790880576971,"latencyActionInfo":{"clientActionNonce":"v5nj1PWT052XImde","serverTimeMs":51}},{"context":{"lastActivityMs":"120"},"eventTimeMs":1790880577028,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_ijs"}},{"context":{"lastActivityMs":"141"},"eventTimeMs":1790880577049,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_ije"}},{"context":{"lastActivityMs":"143"},"eventTimeMs":1790880577050,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_rs"}},{"context":{"lastActivityMs":"144"},"eventTimeMs":1790880577052,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ep_init_re"}},{"context":{"lastActivityMs":"156"},"eventTimeMs":1790880577064,"visualElementAttached":{"childVes":[{"elementIndex":0,"veCounter":2,"veType":28572}],"csn":"HrAEni7kT0IjZBTK","parentVe":{"veType":32594}}},{"context":{"lastActivityMs":"156"},"eventTimeMs":1790880577064,"visualElementShown":{"csn":"HrAEni7kT0IjZBTK","eventType":1,"ve":{"elementIndex":0,"veCounter":2,"veType":28572}}},{"context":{"lastActivityMs":"171"},"eventTimeMs":1790880577078,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"ftr"}},{"context":{"lastActivityMs":"272"},"eventTimeMs":1790880577180,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWMSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIRCgMKAW8KBgoEYUdJZhICCAEiEQoDCgF0CgYKBGFHSWYSAggBIhEKAwoBaAoGCgRhR0lmEgIICA=="}},{"context":{"lastActivityMs":"273"},"eventTimeMs":1790880577180,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWwSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIYCgMKAWgKBgoEYUdJZhIJEQAAAABgZiZAIhgKAwoBaAoGCgRhR0lmEgkRAAAAAAAAI0AiGAoDCgFoCgYKBGFHSWYSCREAAAAAAADgPyIYCgMKAWgKBgoEYUdJZhIJEQAAAABAZhxAIhgKAwoBaAoGCgRhR0lmEgkRAAAAAEBmFEAiGAoDCgFoCgYKBGFHSWYSCREAAAAAAAAgQCIYCgMKAWgKBgoEYUdJZhIJEQAAAAAAAClAIhgKAwoBaAoGCgRhR0lmEgkRAAAAAAAzF0AiGAoDCgF0CgYKBGFHSWYSCREAANDMzKxWQA=="}},{"context":{"lastActivityMs":"331"},"eventTimeMs":1790880577239,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"pot_if"}},{"context":{"lastActivityMs":"331"},"eventTimeMs":1790880577239,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"pot_cms"}},{"context":{"lastActivityMs":"332"},"eventTimeMs":1790880577240,"latencyActionTicked":{"clientActionNonce":"v5nj1PWT052XImde","tickName":"pot_cmf"}},{"context":{"lastActivityMs":"1273"},"eventTimeMs":1790880578180,"streamzIncremented":{"serializedIncrementBatch":"ChYvY2xpZW50X3N0cmVhbXovYmcvZnJzEhAKDgoIYm90Z3VhcmQSAjUzGgJtayITCgYKBGFHSWYSCREAAAAAAIyfQA=="}},{"context":{"lastActivityMs":"1273"},"eventTimeMs":1790880578181,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWMSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIRCgMKAW4KBgoEYUdJZhICCAEiEQoDCgFtCgYKBGFHSWYSAggB"}},{"context":{"lastActivityMs":"1273"},"eventTimeMs":1790880578181,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWwSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIYCgMKAW4KBgoEYUdJZhIJEQAAAJmZmR9AIhgKAwoBaQoGCgRhR0lmEgkRAAAAAAAA4D8iGAoDCgFvCgYKBGFHSWYSCREAAMzMzNRwQCIYCgMKAWMKBgoEYUdJZhIJEQAAAAAAAAAAIhgKAwoBQwoGCgRhR0lmEgkRAAAAaGZm5j8iGAoDCgF4CgYKBGFHSWYSCREAAAAAAAAAACIYCgMKAW0KBgoEYUdJZhIJEQAAAMjMzOw/"}}],"serializedClientEventId":{"clientCounter":"26203","serializedEventId":"QKu-areBIqOpmPUPyd6f2QQ"}},"filter":"/v1/log_event","listName":"easyprivacy.txt","query":{"alt":"json"}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.youtube.com/youtubei/v1/log_event?alt=json"},{"data":{"body":{},"filter":"/generate_204$~xmlhttprequest","listName":"easyprivacy.txt","query":{"6e9LDA":""}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.youtube.com/generate_204?6e9LDA"},{"data":{"body":{},"filter":"||doubleclick.net^","listName":"easylist.txt","query":{"slf_rd":1}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://googleads.g.doubleclick.net/pagead/id?slf_rd=1"},{"data":{"body":{},"filter":"||doubleclick.net^","listName":"easylist.txt","query":{}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://static.doubleclick.net/instream/ad_status.js"},{"data":{"body":{},"filter":"||doubleclick.net^","listName":"easylist.txt","query":{}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://googleads.g.doubleclick.net/pagead/id"},{"data":{"body":{"context":{"client":{"browserName":"Chrome Mobile","browserVersion":"99.0.4812.0","clientName":56,"clientVersion":"2.20261001.01.00","configInfo":{"appInstallData":"CLvW-tUGEMn2gBMQyvuAExD36NIcEKOOgRMQwY_QHBC9tq4FENut0hwQuOTOHBDa984cEIeszhwQrom4IhCwirgiEMHUqBcQn8-AExDM364FEJ2VgRMQ3rzOHBDw3tEcEIHNzhwQmY2xBRD2q7AFEL6E0RwQ-MSAExDS2tIcEK-GzxwQ_NrSHBDn69EcEK3e0RwQpKnRHBCu1s8cEPG00BwQ0Yi4IhC9irAFEPCcsAUQntCwBRC8pNAcEKTj0hwQjLnSHBC019IcENDG0RwQkN7SHBCw-NEcELfr0hwQibDOHBDKv9IcELKR0RwQ9vfRHBDrzdAcEMqp0hwqbENBTVNUUlZPLVpxLURNZVVFcFVDbkE3NUZYYWdCdUFXdi1RUDVRUGFCUUM0QlpzQnNnVFVCSlN1NlFzeW9Ld0VBNVBNQTdia0J1U0ZGNnk3QTluVkJkMHNuSXNENDU4RUJRVUVBLU9zQUIwSDAA"},"connectionType":"CONN_CELLULAR_4G","deviceMake":"google","deviceModel":"pixel 5","gl":"FR","hl":"en","osName":"Android","osVersion":"11","platform":"MOBILE","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","windowHeightPoints":360,"windowWidthPoints":354},"thirdParty":{"embedUrl":"https://www.aflyon.org/"}},"events":[{"context":{"lastActivityMs":"4628"},"eventTimeMs":1790880576398,"finalPayload":{"csn":"RUkHCsEhjMIgkGy8"}}],"serializedClientEventId":{"clientCounter":"27482","serializedEventId":"O6u-auW3HYngz_IPk4eOqAE"}},"filter":"/v1/log_event","listName":"easyprivacy.txt","query":{"alt":"json"}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.youtube.com/youtubei/v1/log_event?alt=json"},{"data":{"body":{"context":{"client":{"browserName":"Chrome Mobile","browserVersion":"99.0.4812.0","clientName":56,"clientVersion":"2.20261001.01.00","configInfo":{"appInstallData":"CLvW-tUGEMn2gBMQyvuAExD36NIcEKOOgRMQwY_QHBC9tq4FENut0hwQuOTOHBDa984cEIeszhwQrom4IhCwirgiEMHUqBcQn8-AExDM364FEJ2VgRMQ3rzOHBDw3tEcEIHNzhwQmY2xBRD2q7AFEL6E0RwQ-MSAExDS2tIcEK-GzxwQ_NrSHBDn69EcEK3e0RwQpKnRHBCu1s8cEPG00BwQ0Yi4IhC9irAFEPCcsAUQntCwBRC8pNAcEKTj0hwQjLnSHBC019IcENDG0RwQkN7SHBCw-NEcELfr0hwQibDOHBDKv9IcELKR0RwQ9vfRHBDrzdAcEMqp0hwqbENBTVNUUlZPLVpxLURNZVVFcFVDbkE3NUZYYWdCdUFXdi1RUDVRUGFCUUM0QlpzQnNnVFVCSlN1NlFzeW9Ld0VBNVBNQTdia0J1U0ZGNnk3QTluVkJkMHNuSXNENDU4RUJRVUVBLU9zQUIwSDAA"},"connectionType":"CONN_CELLULAR_4G","deviceMake":"google","deviceModel":"pixel 5","gl":"FR","hl":"en","osName":"Android","osVersion":"11","platform":"MOBILE","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","windowHeightPoints":360,"windowWidthPoints":354},"thirdParty":{"embedUrl":"https://www.aflyon.org/"}},"events":[{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571673,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"mm_is"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571675,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"mm_ie"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571677,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_cus"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571677,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_eps"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571681,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_epe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571681,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_cue"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571749,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"pe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571754,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_wes"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571589,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"srt"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571442,"latencyActionBaselined":{"clientActionNonce":"thhsr6Om4BNBRGcA"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571488,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"nreqs"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571589,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"nress"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571606,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"nrese"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571457,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ntcps"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571488,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ntcpe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571471,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"nstcps"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571488,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ntcpe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571603,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"wffs"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571663,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"wffe"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571604,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rsf_pj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571660,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rse_pj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571601,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rsf_pc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571622,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rse_pc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571604,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rsf_ecj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571640,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rse_ecj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571601,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rsf_ecc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571615,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rse_ecc"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571757,"latencyActionInfo":{"actionType":"LATENCY_ACTION_VIDEO_PREVIEW","clientActionNonce":"thhsr6Om4BNBRGcA","httpProtocol":"h2","isNavigation":true,"isVisible":true,"loadType":"cold","transportProtocol":"tcp"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571646,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"rses_dpj"}},{"context":{"lastActivityMs":"-1"},"eventTimeMs":1790880571763,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_wee"}},{"context":{"lastActivityMs":"23"},"eventTimeMs":1790880571792,"screenCreated":{"csn":"ioHuGkKEtS4O2Vvh","pageVe":{"veType":16623,"youtubeData":{"servletData":{"serializedServletEventId":"O6u-auW3HYngz_IPk4eOqAE"}}}}},{"context":{"lastActivityMs":"23"},"eventTimeMs":1790880571793,"latencyActionInfo":{"clientActionNonce":"thhsr6Om4BNBRGcA","clientScreenNonce":"ioHuGkKEtS4O2Vvh"}},{"context":{"lastActivityMs":"23"},"eventTimeMs":1790880571793,"screenCreated":{"csn":"RUkHCsEhjMIgkGy8","implicitGesture":{"gestureType":"INTERACTION_LOGGING_GESTURE_TYPE_AUTOMATED","gesturedVe":{"veType":16623},"parentCsn":"ioHuGkKEtS4O2Vvh"},"pageVe":{"veType":32594}}},{"context":{"lastActivityMs":"23"},"eventTimeMs":1790880571793,"visualElementHidden":{"csn":"ioHuGkKEtS4O2Vvh","eventType":16,"ve":{"veType":16623}}},{"context":{"lastActivityMs":"23"},"eventTimeMs":1790880571793,"latencyActionInfo":{"clientActionNonce":"thhsr6Om4BNBRGcA","clientScreenNonce":"RUkHCsEhjMIgkGy8"}},{"context":{"lastActivityMs":"23"},"eventTimeMs":1790880571793,"visualElementAttached":{"childVes":[{"trackingParams":"CAAQru4BIhMI96uzgr6ZlwMV1aZ8Bh2aSDOIygEEhHWPsg=="}],"csn":"RUkHCsEhjMIgkGy8","parentVe":{"veType":32594}}},{"context":{"lastActivityMs":"27"},"eventTimeMs":1790880571797,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"qoes"}},{"context":{"lastActivityMs":"28"},"eventTimeMs":1790880571798,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"fs"}},{"context":{"lastActivityMs":"43"},"eventTimeMs":1790880571813,"latencyActionInfo":{"clientActionNonce":"thhsr6Om4BNBRGcA","clientPlaybackNonce":"o9CyS8zcGTXc2c8S"}},{"context":{"lastActivityMs":"44"},"eventTimeMs":1790880571813,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_pr"}},{"context":{"lastActivityMs":"49"},"eventTimeMs":1790880571818,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"pot_ist"}},{"context":{"lastActivityMs":"51"},"eventTimeMs":1790880571821,"latencyActionInfo":{"clientActionNonce":"thhsr6Om4BNBRGcA","serverTimeMs":81}},{"context":{"lastActivityMs":"115"},"eventTimeMs":1790880571885,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_ijs"}},{"context":{"lastActivityMs":"116"},"eventTimeMs":1790880571886,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_ije"}},{"context":{"lastActivityMs":"117"},"eventTimeMs":1790880571887,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_rs"}},{"context":{"lastActivityMs":"119"},"eventTimeMs":1790880571889,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ep_init_re"}},{"context":{"lastActivityMs":"134"},"eventTimeMs":1790880571904,"visualElementAttached":{"childVes":[{"elementIndex":0,"veCounter":2,"veType":28572}],"csn":"RUkHCsEhjMIgkGy8","parentVe":{"veType":32594}}},{"context":{"lastActivityMs":"134"},"eventTimeMs":1790880571904,"visualElementShown":{"csn":"RUkHCsEhjMIgkGy8","eventType":1,"ve":{"elementIndex":0,"veCounter":2,"veType":28572}}},{"context":{"lastActivityMs":"158"},"eventTimeMs":1790880571928,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"ftr"}},{"context":{"lastActivityMs":"260"},"eventTimeMs":1790880572030,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWMSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIRCgMKAW8KBgoEYUdJZhICCAEiEQoDCgF0CgYKBGFHSWYSAggBIhEKAwoBaAoGCgRhR0lmEgIICA=="}},{"context":{"lastActivityMs":"261"},"eventTimeMs":1790880572030,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWwSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIYCgMKAWgKBgoEYUdJZhIJEQAAAAAgMydAIhgKAwoBaAoGCgRhR0lmEgkRAAAAAEAzJUAiGAoDCgFoCgYKBGFHSWYSCREAAAAAAJjZPyIYCgMKAWgKBgoEYUdJZhIJEQAAAAAAMx9AIhgKAwoBaAoGCgRhR0lmEgkRAAAAAEAzF0AiGAoDCgFoCgYKBGFHSWYSCREAAAAAQGYYQCIYCgMKAWgKBgoEYUdJZhIJEQAAAAAAAChAIhgKAwoBaAoGCgRhR0lmEgkRAAAAAKCZJEAiGAoDCgF0CgYKBGFHSWYSCREAAAAAAIBWQA=="}},{"context":{"lastActivityMs":"364"},"eventTimeMs":1790880572134,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"pot_if"}},{"context":{"lastActivityMs":"364"},"eventTimeMs":1790880572134,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"pot_cms"}},{"context":{"lastActivityMs":"365"},"eventTimeMs":1790880572135,"latencyActionTicked":{"clientActionNonce":"thhsr6Om4BNBRGcA","tickName":"pot_cmf"}},{"context":{"lastActivityMs":"1260"},"eventTimeMs":1790880573030,"streamzIncremented":{"serializedIncrementBatch":"ChYvY2xpZW50X3N0cmVhbXovYmcvZnJzEhAKDgoIYm90Z3VhcmQSAjUzGgJtayITCgYKBGFHSWYSCREAAAAAAJSfQA=="}},{"context":{"lastActivityMs":"1261"},"eventTimeMs":1790880573030,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWMSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIRCgMKAW4KBgoEYUdJZhICCAEiEQoDCgFtCgYKBGFHSWYSAggB"}},{"context":{"lastActivityMs":"1261"},"eventTimeMs":1790880573030,"streamzIncremented":{"serializedIncrementBatch":"ChUvY2xpZW50X3N0cmVhbXovYmcvZWwSEAoOCghib3RndWFyZBICNTMaAmVuGgJtayIYCgMKAW4KBgoEYUdJZhIJEQAAAJqZmR1AIhgKAwoBaQoGCgRhR0lmEgkRAAAAmJmZ6T8iGAoDCgFvCgYKBGFHSWYSCREAADQzM5tzQCIYCgMKAWMKBgoEYUdJZhIJEQAAAAAAAAAAIhgKAwoBQwoGCgRhR0lmEgkRAAAAmJmZ6T8iGAoDCgF4CgYKBGFHSWYSCREAAAAAAAAAACIYCgMKAW0KBgoEYUdJZhIJEQAAANDMzOw/"}}],"serializedClientEventId":{"clientCounter":"27481","serializedEventId":"O6u-auW3HYngz_IPk4eOqAE"}},"filter":"/v1/log_event","listName":"easyprivacy.txt","query":{"alt":"json"}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.youtube.com/youtubei/v1/log_event?alt=json"},{"data":{"body":{},"filter":"/generate_204$~xmlhttprequest","listName":"easyprivacy.txt","query":{"mc7KiA":""}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.youtube.com/generate_204?mc7KiA"},{"data":{"body":{},"filter":"||doubleclick.net^","listName":"easylist.txt","query":{"slf_rd":1}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://googleads.g.doubleclick.net/pagead/id?slf_rd=1"},{"data":{"body":{},"filter":"||doubleclick.net^","listName":"easylist.txt","query":{}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://static.doubleclick.net/instream/ad_status.js"},{"data":{"body":{},"filter":"||doubleclick.net^","listName":"easylist.txt","query":{}},"stack":[{"fileName":"https://www.youtube.com/embed/ygCFEmkalrU?feature=oembed","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://googleads.g.doubleclick.net/pagead/id"}]}}