diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 57c83f2..aaba106 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2185,11 +2185,11 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) // notifybar-desktop, refer to modules/notifybar-desktop.js - char *_notifybardesktop = ILibMemory_Allocate(29268, 0, NULL, NULL); - memcpy_s(_notifybardesktop + 0, 16724, "LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8KCnZhciBwdHJzaXplID0gcmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuUG9pbnRlclNpemU7CnZhciBDbGllbnRNZXNzYWdlID0gMzM7CgoKZnVuY3Rpb24gd2luZG93c19ub3RpZnliYXJfY2hlY2sodGl0bGUsIHRzaWQpCnsKICAgIGlmKHJlcXVpcmUoJ3VzZXItc2Vzc2lvbnMnKS5nZXRQcm9jZXNzT3duZXJOYW1lKHByb2Nlc3MucGlkKS50c2lkID09IDApCiAgICB7CiAgICAgICAgcmV0dXJuICh3aW5kb3dzX25vdGlmeWJhcl9zeXN0ZW0odGl0bGUsIHRzaWQpKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gKHdpbmRvd3Nfbm90aWZ5YmFyX2xvY2FsKHRpdGxlKSk7CiAgICB9Cn0KZnVuY3Rpb24gd2luZG93c19ub3RpZnliYXJfc3lzdGVtKHRpdGxlLCB0c2lkKQp7CiAgICB2YXIgcmV0ID0ge307CgogICAgdmFyIHNjcmlwdCA9IEJ1ZmZlci5mcm9tKCJyZXF1aXJlKCdub3RpZnliYXItZGVza3RvcCcpKCciICsgdGl0bGUgKyAiJykub24oJ2Nsb3NlJywgZnVuY3Rpb24oKXtwcm9jZXNzLmV4aXQoKTt9KTsiKS50b1N0cmluZygnYmFzZTY0Jyk7CgogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKQogICAgICAgIC5jcmVhdGVFdmVudCgnY2xvc2UnKQogICAgICAgIC5hZGRNZXRob2QoJ2Nsb3NlJywgZnVuY3Rpb24gY2xvc2UoKSB7IHRoaXMuY2hpbGQua2lsbCgpOyB9KTsKCiAgICByZXQuY2hpbGQgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUocHJvY2Vzcy5leGVjUGF0aCwgW3Byb2Nlc3MuZXhlY1BhdGguc3BsaXQoJ1xcJykucG9wKCksICctYjY0ZXhlYycsIHNjcmlwdF0sIHsgdHlwZTogMSwgdWlkOiB0c2lkIH0pOwogICAgcmV0LmNoaWxkLnBhcmVudCA9IHJldDsKICAgIHJldC5jaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsKICAgIHJldC5jaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsKICAgIHJldC5jaGlsZC5vbignZXhpdCcsIGZ1bmN0aW9uIChjb2RlKSB7IHRoaXMucGFyZW50LmVtaXQoJ2Nsb3NlJywgY29kZSk7IH0pOwoKICAgIHJldHVybiAocmV0KTsKfQoKZnVuY3Rpb24gd2luZG93c19ub3RpZnliYXJfbG9jYWwodGl0bGUpCnsKICAgIHZhciBNZXNzYWdlUHVtcDsKICAgIHZhciByZXQ7CgogICAgTWVzc2FnZVB1bXAgPSByZXF1aXJlKCd3aW4tbWVzc2FnZS1wdW1wJyk7CiAgICByZXQgPSB7IF9PYmplY3RJRDogJ25vdGlmeWJhci1kZXNrdG9wLldpbmRvd3MnLCB0aXRsZTogdGl0bGUsIF9wdW1wczogW10sIF9wcm9taXNlOiByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5nZXRJbmZvKCkgfTsKCiAgICByZXQuX3Byb21pc2Uubm90aWZ5YmFyID0gcmV0OwogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKQogICAgICAgIC5jcmVhdGVFdmVudCgnY2xvc2UnKQogICAgICAgIC5hZGRNZXRob2QoJ2Nsb3NlJywgZnVuY3Rpb24gY2xvc2UoKQogICAgICAgIHsKICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLl9wdW1wcykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdGhpcy5fcHVtcHNbaV0ucmVtb3ZlQWxsTGlzdGVuZXJzKCdleGl0Jyk7CiAgICAgICAgICAgICAgICB0aGlzLl9wdW1wc1tpXS5jbG9zZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3B1bXBzID0gW107CiAgICAgICAgfSk7CgogICAgcmV0Ll9wcm9taXNlLnRoZW4oZnVuY3Rpb24gKG0pCiAgICB7CiAgICAgICAgdmFyIG9mZnNldDsKICAgICAgICB2YXIgYmFyV2lkdGgsIG1vbldpZHRoLCBvZmZzZXQsIGJhckhlaWdodCwgbW9uSGVpZ2h0OwoKICAgICAgICBmb3IgKHZhciBpIGluIG0pCiAgICAgICAgewogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdNb25pdG9yOiAnICsgaSArICcgPSBXaWR0aFsnICsgKG1baV0ucmlnaHQgLSBtW2ldLmxlZnQpICsgJ10nKTsKICAgICAgICAgICAgbW9uV2lkdGggPSAobVtpXS5yaWdodCAtIG1baV0ubGVmdCk7CiAgICAgICAgICAgIG1vbkhlaWdodCA9IChtW2ldLmJvdHRvbSAtIG1baV0udG9wKTsKICAgICAgICAgICAgYmFyV2lkdGggPSBNYXRoLmZsb29yKG1vbldpZHRoICogMC4zMCk7CiAgICAgICAgICAgIGJhckhlaWdodCA9IE1hdGguZmxvb3IobW9uSGVpZ2h0ICogMC4wMzUpOwogICAgICAgICAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG1vbldpZHRoICogMC41MCkgLSBNYXRoLmZsb29yKGJhcldpZHRoICogMC41MCk7CiAgICAgICAgICAgIHN0YXJ0ID0gbVtpXS5sZWZ0ICsgb2Zmc2V0OwogICAgICAgICAgICB2YXIgb3B0aW9ucyA9CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93OgogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2luc3R5bGVzOiBNZXNzYWdlUHVtcC5XaW5kb3dTdHlsZXMuV1NfVklTSUJMRSB8IE1lc3NhZ2VQdW1wLldpbmRvd1N0eWxlcy5XU19CT1JERVIgfCBNZXNzYWdlUHVtcC5XaW5kb3dTdHlsZXMuV1NfQ0FQVElPTiB8IE1lc3NhZ2VQdW1wLldpbmRvd1N0eWxlcy5XU19TWVNNRU5VLAogICAgICAgICAgICAgICAgICAgICAgICB4OiBzdGFydCwgeTogbVtpXS50b3AsIGxlZnQ6IG1baV0ubGVmdCwgcmlnaHQ6IG1baV0ucmlnaHQsIHdpZHRoOiBiYXJXaWR0aCwgaGVpZ2h0OiBiYXJIZWlnaHQsIHRpdGxlOiB0aGlzLm5vdGlmeWJhci50aXRsZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucHVzaChuZXcgTWVzc2FnZVB1bXAob3B0aW9ucykpOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm5vdGlmeWJhciA9IHRoaXMubm90aWZ5YmFyOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm9uKCdod25kJywgZnVuY3Rpb24gKGgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRoaXMuX0hBTkRMRSA9IGg7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm9uKCdleGl0JywgZnVuY3Rpb24gKGgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcih2YXIgaSBpbiB0aGlzLm5vdGlmeWJhci5fcHVtcHMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3B1bXBzW2ldLnJlbW92ZUFsbExpc3RlbmVycygnZXhpdCcpOwogICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl9wdW1wc1tpXS5jbG9zZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuZW1pdCgnY2xvc2UnKTsKICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl9wdW1wcyA9IFtdOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3B1bXBzLnBlZWsoKS5vbignbWVzc2FnZScsIGZ1bmN0aW9uIG9uV2luZG93c01lc3NhZ2UobXNnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAobXNnLm1lc3NhZ2UgPT0gMTMzKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coIldNX05DUEFJTlQiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChtc2cubWVzc2FnZSA9PSA3MCkgICAvLyBXZSBhcmUgaW50ZXJjZXB0aW5nIFdNX1dJTkRPV1BPU0NIQU5HSU5HIHRvIERJU0FCTEUgbW92aW5nIHRoZSB3aW5kb3cKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fSEFORExFKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZsYWdzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwdHJzaXplKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBtc2cubHBhcmFtX3Jhdy5EZXJlZigyNCwgNCkudG9CdWZmZXIoKS5yZWFkVUludDMyTEUoKSB8IDB4MDAwMjsgLy8gU2V0IFNXUF9OT01PVkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnLmxwYXJhbV9yYXcuRGVyZWYoOCwgNCkudG9CdWZmZXIoKS5yZWFkSW50MzJMRSgpIDwgdGhpcy5fb3B0aW9ucy53aW5kb3cubGVmdCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLmxwYXJhbV9yYXcuRGVyZWYoOCwgNCkudG9CdWZmZXIoKS5yZWFkSW50MzJMRSgpICsgdGhpcy5fb3B0aW9ucy53aW5kb3cud2lkdGgpID49IHRoaXMuX29wdGlvbnMud2luZG93LnJpZ2h0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FsbG93IHRoaXMgbW92ZSwgYmVjYXVzZSBpdCB3aWxsIGdvIG91dCBvZiBib3VuZHMgb2YgdGhlIGN1cnJlbnQgbW9uaXRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cubHBhcmFtX3Jhdy5EZXJlZigyNCwgNCkudG9CdWZmZXIoKS53cml0ZVVJbnQzMkxFKGZsYWdzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgdGhlIG1vdmUsIGJ1dCBvbmx5IG9uIHRoZSBYLWF4aXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5scGFyYW1fcmF3LkRlcmVmKDEyLCA0KS50b0J1ZmZlcigpLndyaXRlSW50MzJMRSh0aGlzLl9vcHRpb25zLndpbmRvdy55KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gbXNnLmxwYXJhbV9yYXcuRGVyZWYoMzIsIDQpLnRvQnVmZmVyKCkucmVhZFVJbnQzMkxFKCkgfCAweDAwMDIgIC8vIFNldCBTV1BfTk9NT1ZFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZy5scGFyYW1fcmF3LkRlcmVmKDE2LCA0KS50b0J1ZmZlcigpLnJlYWRJbnQzMkxFKCkgPCB0aGlzLl9vcHRpb25zLndpbmRvdy5sZWZ0IHx8IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLmxwYXJhbV9yYXcuRGVyZWYoMTYsIDQpLnRvQnVmZmVyKCkucmVhZEludDMyTEUoKSArIHRoaXMuX29wdGlvbnMud2luZG93LndpZHRoKSA+PSB0aGlzLl9vcHRpb25zLndpbmRvdy5yaWdodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FsbG93IHRoaXMgbW92ZSwgYmVjYXVzZSBpdCB3aWxsIGdvIG91dCBvZiBib3VuZHMgb2YgdGhlIGN1cnJlbnQgbW9uaXRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cubHBhcmFtX3Jhdy5EZXJlZigzMiwgNCkudG9CdWZmZXIoKS53cml0ZVVJbnQzMkxFKGZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsbG93IHRoZSBtb3ZlLCBidXQgb25seSBvbiB0aGUgWC1heGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cubHBhcmFtX3Jhdy5EZXJlZigyMCwgNCkudG9CdWZmZXIoKS53cml0ZUludDMyTEUodGhpcy5fb3B0aW9ucy53aW5kb3cueSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CgogICAgcmV0dXJuIChyZXQpOwp9CgoKZnVuY3Rpb24geF9ub3RpZnliYXJfY2hlY2sodGl0bGUpCnsKICAgIGlmKHJlcXVpcmUoJ3VzZXItc2Vzc2lvbnMnKS5TZWxmKCkhPTAgfHwgcmVxdWlyZSgndXNlci1zZXNzaW9ucycpLmNvbnNvbGVVaWQoKSA9PSAwKQogICAgewogICAgICAgIHJldHVybiAoeF9ub3RpZnliYXIodGl0bGUpKTsgLy8gTm8gRGlzcGF0Y2hpbmcgbmVjZXNzYXJ5CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgLy8gV2UgYXJlIHJvb3QsIHNvIHdlIHNob3VsZCB0cnkgdG8gc3Bhd24gYSBjaGlsZCBpbnRvIHRoZSB1c2VyJ3MgZGVza3RvcAogICAgICAgIHZhciB1aWQgPSByZXF1aXJlKCd1c2VyLXNlc3Npb25zJykuY29uc29sZVVpZCgpOwogICAgICAgIHZhciB4aW5mbyA9IHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLmdldFhJbmZvKHVpZCk7CiAgICAgICAgCiAgICAgICAgaWYgKCF4aW5mbykKICAgICAgICB7CiAgICAgICAgICAgIHRocm93KCdYU2VydmVyIEluaXRpYWxpemF0aW9uIEVycm9yJykKICAgICAgICB9CiAgICAgICAgdmFyIHJldCA9IHt9OwogICAgICAgIHZhciBzY3JpcHQgPSBCdWZmZXIuZnJvbSgicmVxdWlyZSgnbm90aWZ5YmFyLWRlc2t0b3AnKSgnIiArIHRpdGxlICsgIicpLm9uKCdjbG9zZScsIGZ1bmN0aW9uKCl7cHJvY2Vzcy5leGl0KCk7fSk7IikudG9TdHJpbmcoJ2Jhc2U2NCcpOwoKICAgICAgICByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXIuY2FsbChyZXQsIHRydWUpCiAgICAgICAgICAgIC5jcmVhdGVFdmVudCgnY2xvc2UnKQogICAgICAgICAgICAuYWRkTWV0aG9kKCdjbG9zZScsIGZ1bmN0aW9uIGNsb3NlKCkgeyB0aGlzLmNoaWxkLmtpbGwoKTsgfSk7CgogICAgICAgIHJldC5jaGlsZCA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjRmlsZShwcm9jZXNzLmV4ZWNQYXRoLCBbcHJvY2Vzcy5leGVjUGF0aC5zcGxpdCgnLycpLnBvcCgpLCAnLWI2NGV4ZWMnLCBzY3JpcHRdLCB7IHVpZDogdWlkLCBlbnY6IHhpbmZvLmV4cG9ydEVudigpIH0pOwogICAgICAgIHJldC5jaGlsZC5wYXJlbnQgPSByZXQ7CiAgICAgICAgcmV0LmNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOwogICAgICAgIHJldC5jaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsKICAgICAgICByZXQuY2hpbGQub24oJ2V4aXQnLCBmdW5jdGlvbiAoY29kZSkgeyB0aGlzLnBhcmVudC5lbWl0KCdjbG9zZScsIGNvZGUpOyB9KTsKCiAgICAgICAgcmV0dXJuIChyZXQpOwogICAgfQp9CgpmdW5jdGlvbiB4X25vdGlmeWJhcih0aXRsZSkKewogICAgcmV0ID0geyBfT2JqZWN0SUQ6ICdub3RpZnliYXItZGVza3RvcC5YJywgdGl0bGU6IHRpdGxlLCBfd2luZG93czogW10sIF9wcm9taXNlOiByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5nZXRJbmZvKCkgfTsKCiAgICByZXQuX3Byb21pc2Uubm90aWZ5YmFyID0gcmV0OwogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKQogICAgICAgIC5jcmVhdGVFdmVudCgnY2xvc2UnKQogICAgICAgIC5hZGRNZXRob2QoJ2Nsb3NlJywgZnVuY3Rpb24gY2xvc2UoKQogICAgICAgIHsKICAgICAgICB9KTsKCiAgICByZXQuX3Byb21pc2UudGhlbihmdW5jdGlvbiAobSkKICAgIHsKICAgICAgICB2YXIgb2Zmc2V0OwogICAgICAgIHZhciBiYXJXaWR0aCwgbW9uV2lkdGgsIG9mZnNldCwgYmFySGVpZ2h0LCBtb25IZWlnaHQ7CiAgICAgICAgZm9yICh2YXIgaSBpbiBtKQogICAgICAgIHsKICAgICAgICAgICAgbW9uV2lkdGggPSAobVtpXS5yaWdodCAtIG1baV0ubGVmdCk7CiAgICAgICAgICAgIG1vbkhlaWdodCA9IChtW2ldLmJvdHRvbSAtIG1baV0udG9wKTsKICAgICAgICAgICAgYmFyV2lkdGggPSBNYXRoLmZsb29yKG1vbldpZHRoICogMC4zMCk7CiAgICAgICAgICAgIGJhckhlaWdodCA9IE1hdGguZmxvb3IobW9uSGVpZ2h0ICogMC4wMzUpOwogICAgICAgICAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG1vbldpZHRoICogMC41MCkgLSBNYXRoLmZsb29yKGJhcldpZHRoICogMC41MCk7CiAgICAgICAgICAgIHN0YXJ0ID0gbVtpXS5sZWZ0ICsgb2Zmc2V0OwoKICAgICAgICAgICAgdmFyIHdoaXRlID0gcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YV2hpdGVQaXhlbChtW2ldLmRpc3BsYXksIG1baV0uc2NyZWVuSWQpLlZhbDsKICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucHVzaCh7CiAgICAgICAgICAgICAgICByb290OiByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5fWDExLlhSb290V2luZG93KG1baV0uZGlzcGxheSwgbVtpXS5zY3JlZW5JZCksCiAgICAgICAgICAgICAgICBkaXNwbGF5OiBtW2ldLmRpc3BsYXksIGlkOiBtW2ldLnNjcmVlZElkCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLm5vdGlmeWJhciA9IHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWENyZWF0ZVNpbXBsZVdpbmRvdyhtW2ldLmRpc3BsYXksIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5yb290LCBzdGFydCwgMCwgYmFyV2lkdGgsIDEsIDAsIHdoaXRlLCB3aGl0ZSk7CiAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWFN0b3JlTmFtZShtW2ldLmRpc3BsYXksIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5ub3RpZnliYXIsIHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpLkNyZWF0ZVZhcmlhYmxlKHRoaXMubm90aWZ5YmFyLnRpdGxlKSk7CgogICAgICAgICAgICByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5zZXRXaW5kb3dTaXplSGludHMobVtpXS5kaXNwbGF5LCB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkubm90aWZ5YmFyLCBzdGFydCwgMCwgYmFyV2lkdGgsIDEsIGJhcldpZHRoLCAxLCBiYXJXaWR0aCwgMSk7CiAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLmhpZGVXaW5kb3dJY29uKG1baV0uZGlzcGxheSwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLnJvb3QsIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5ub3RpZnliYXIpOwoKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuc2V0QWxsb3dlZEFjdGlvbnMobVtpXS5kaXNwbGF5LCB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkubm90aWZ5YmFyLCByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5NT1RJRl9GTEFHUy5NV01fRlVOQ19DTE9TRSk7CiAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLnNldEFsd2F5c09uVG9wKG1baV0uZGlzcGxheSwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLnJvb3QsIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5ub3RpZnliYXIpOwoKCiAgICAgICAgICAgIHZhciB3bV9kZWxldGVfd2luZG93X2F0b20gPSByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5fWDExLlhJbnRlcm5BdG9tKG1baV0uZGlzcGxheSwgcmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuQ3JlYXRlVmFyaWFibGUoJ1dNX0RFTEVURV9XSU5ET1cnKSwgMCkuVmFsOwogICAgICAgICAgICB2YXIgYXRvbXMgPSByZXF1aXJlKCdfR2VuZXJpY01hcnNoYWwnKS5DcmVhdGVWYXJpYWJsZSg0KTsKICAgICAgICAgICAgYXRvbXMudG9CdWZmZXIoKS53cml0ZVVJbnQzMkxFKHdtX2RlbGV0ZV93aW5kb3dfYXRvbSk7CiAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWFNldFdNUHJvdG9jb2xzKG1baV0uZGlzcGxheSwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLm5vdGlmeWJhciwgYXRvbXMsIDEpOwoKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YTWFwV2luZG93KG1baV0uZGlzcGxheSwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLm5vdGlmeWJhcik7CiAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWEZsdXNoKG1baV0uZGlzcGxheSk7CgogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkuRGVzY3JpcHRvckV2ZW50ID0gcmVxdWlyZSgnRGVzY3JpcHRvckV2ZW50cycpLmFkZERlc2NyaXB0b3IocmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YQ29ubmVjdGlvbk51bWJlcihtW2ldLmRpc3BsYXkpLlZhbCwgeyByZWFkc2V0OiB0cnVlIH0pOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkuRGVzY3JpcHRvckV2ZW50LmF0b20gPSB3bV9kZWxldGVfd2luZG93X2F0b207CiAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5EZXNjcmlwdG9yRXZlbnQucmV0ID0gdGhpcy5ub3RpZnliYXI7CiAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5EZXNjcmlwdG9yRXZlbnQuX2Rpc3BsYXkgPSBtW2ldLmRpc3BsYXk7CiAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5EZXNjcmlwdG9yRXZlbnQub24oJ3JlYWRzZXQnLCBmdW5jdGlvbiAoZmQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBYRSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgICAgICAgICAgICAgd2hpbGUgKHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWFBlbmRpbmcodGhpcy5fZGlzcGxheSkuVmFsKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWE5leHRFdmVudFN5bmModGhpcy5fZGlzcGxheSwgWEUpOwogICAgICAgICAgICAgICAgICAgIGlmIChYRS5EZXJlZigwLCA0KS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpID09IENsaWVudE1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xpZW50VHlwZSA9IFhFLkRlcmVmKHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpLlBvaW50ZXJTaXplID09IDggPyA1NiA6IDI4LCA0KS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50VHlwZSA9PSB0aGlzLmF0b20pCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoJ0Rlc2NyaXB0b3JFdmVudHMnKS5yZW1vdmVEZXNjcmlwdG9yKGZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWENsb3NlRGlzcGxh", 16000); - memcpy_s(_notifybardesktop + 16000, 724, "eSh0aGlzLl9kaXNwbGF5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5lbWl0KCdjbG9zZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0Ll93aW5kb3dzLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gKHJldCk7Cn0KCgoKc3dpdGNoKHByb2Nlc3MucGxhdGZvcm0pCnsKICAgIGNhc2UgJ3dpbjMyJzoKICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd3Nfbm90aWZ5YmFyX2NoZWNrOwogICAgICAgIG1vZHVsZS5leHBvcnRzLnN5c3RlbSA9IHdpbmRvd3Nfbm90aWZ5YmFyX3N5c3RlbTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJ2xpbnV4JzoKICAgIGNhc2UgJ2ZyZWVic2QnOgogICAgICAgIG1vZHVsZS5leHBvcnRzID0geF9ub3RpZnliYXJfY2hlY2s7CiAgICAgICAgYnJlYWs7Cn0KCgo=", 724); - ILibBase64DecodeEx((unsigned char*)_notifybardesktop, 16724, (unsigned char*)_notifybardesktop + 16724); - duk_push_global_object(ctx); duk_get_prop_string(ctx, -1, "addModule"); duk_swap_top(ctx, -2); duk_push_string(ctx, "notifybar-desktop"); duk_push_string(ctx, _notifybardesktop + 16724); + char *_notifybardesktop = ILibMemory_Allocate(29400, 0, NULL, NULL); + memcpy_s(_notifybardesktop + 0, 16800, "LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8KCnZhciBwdHJzaXplID0gcmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuUG9pbnRlclNpemU7CnZhciBDbGllbnRNZXNzYWdlID0gMzM7CgoKZnVuY3Rpb24gd2luZG93c19ub3RpZnliYXJfY2hlY2sodGl0bGUsIHRzaWQpCnsKICAgIGlmKHJlcXVpcmUoJ3VzZXItc2Vzc2lvbnMnKS5nZXRQcm9jZXNzT3duZXJOYW1lKHByb2Nlc3MucGlkKS50c2lkID09IDApCiAgICB7CiAgICAgICAgcmV0dXJuICh3aW5kb3dzX25vdGlmeWJhcl9zeXN0ZW0odGl0bGUsIHRzaWQpKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gKHdpbmRvd3Nfbm90aWZ5YmFyX2xvY2FsKHRpdGxlKSk7CiAgICB9Cn0KZnVuY3Rpb24gd2luZG93c19ub3RpZnliYXJfc3lzdGVtKHRpdGxlLCB0c2lkKQp7CiAgICB2YXIgcmV0ID0ge307CgogICAgdmFyIHNjcmlwdCA9IEJ1ZmZlci5mcm9tKCJyZXF1aXJlKCdub3RpZnliYXItZGVza3RvcCcpKCciICsgdGl0bGUgKyAiJykub24oJ2Nsb3NlJywgZnVuY3Rpb24oKXtwcm9jZXNzLmV4aXQoKTt9KTsiKS50b1N0cmluZygnYmFzZTY0Jyk7CgogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKQogICAgICAgIC5jcmVhdGVFdmVudCgnY2xvc2UnKQogICAgICAgIC5hZGRNZXRob2QoJ2Nsb3NlJywgZnVuY3Rpb24gY2xvc2UoKSB7IHRoaXMuY2hpbGQua2lsbCgpOyB9KTsKCiAgICByZXQuY2hpbGQgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUocHJvY2Vzcy5leGVjUGF0aCwgW3Byb2Nlc3MuZXhlY1BhdGguc3BsaXQoJ1xcJykucG9wKCksICctYjY0ZXhlYycsIHNjcmlwdF0sIHsgdHlwZTogMSwgdWlkOiB0c2lkIH0pOwogICAgcmV0LmNoaWxkLnBhcmVudCA9IHJldDsKICAgIHJldC5jaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsKICAgIHJldC5jaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsKICAgIHJldC5jaGlsZC5vbignZXhpdCcsIGZ1bmN0aW9uIChjb2RlKSB7IHRoaXMucGFyZW50LmVtaXQoJ2Nsb3NlJywgY29kZSk7IH0pOwoKICAgIHJldHVybiAocmV0KTsKfQoKZnVuY3Rpb24gd2luZG93c19ub3RpZnliYXJfbG9jYWwodGl0bGUpCnsKICAgIHZhciBNZXNzYWdlUHVtcDsKICAgIHZhciByZXQ7CgogICAgTWVzc2FnZVB1bXAgPSByZXF1aXJlKCd3aW4tbWVzc2FnZS1wdW1wJyk7CiAgICByZXQgPSB7IF9PYmplY3RJRDogJ25vdGlmeWJhci1kZXNrdG9wLldpbmRvd3MnLCB0aXRsZTogdGl0bGUsIF9wdW1wczogW10sIF9wcm9taXNlOiByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5nZXRJbmZvKCkgfTsKCiAgICByZXQuX3Byb21pc2Uubm90aWZ5YmFyID0gcmV0OwogICAgcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyLmNhbGwocmV0LCB0cnVlKQogICAgICAgIC5jcmVhdGVFdmVudCgnY2xvc2UnKQogICAgICAgIC5hZGRNZXRob2QoJ2Nsb3NlJywgZnVuY3Rpb24gY2xvc2UoKQogICAgICAgIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9wdW1wcy5sZW5ndGg7ICsraSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9wdW1wc1tpXS5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2V4aXQnKTsKICAgICAgICAgICAgICAgIHRoaXMuX3B1bXBzW2ldLmNsb3NlKCk7DQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3B1bXBzID0gW107CiAgICAgICAgfSk7CgogICAgcmV0Ll9wcm9taXNlLnRoZW4oZnVuY3Rpb24gKG0pCiAgICB7CiAgICAgICAgdmFyIG9mZnNldDsKICAgICAgICB2YXIgYmFyV2lkdGgsIG1vbldpZHRoLCBvZmZzZXQsIGJhckhlaWdodCwgbW9uSGVpZ2h0OwoKICAgICAgICBmb3IgKHZhciBpIGluIG0pCiAgICAgICAgewogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdNb25pdG9yOiAnICsgaSArICcgPSBXaWR0aFsnICsgKG1baV0ucmlnaHQgLSBtW2ldLmxlZnQpICsgJ10nKTsKICAgICAgICAgICAgbW9uV2lkdGggPSAobVtpXS5yaWdodCAtIG1baV0ubGVmdCk7CiAgICAgICAgICAgIG1vbkhlaWdodCA9IChtW2ldLmJvdHRvbSAtIG1baV0udG9wKTsKICAgICAgICAgICAgYmFyV2lkdGggPSBNYXRoLmZsb29yKG1vbldpZHRoICogMC4zMCk7CiAgICAgICAgICAgIGJhckhlaWdodCA9IE1hdGguZmxvb3IobW9uSGVpZ2h0ICogMC4wMzUpOwogICAgICAgICAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG1vbldpZHRoICogMC41MCkgLSBNYXRoLmZsb29yKGJhcldpZHRoICogMC41MCk7CiAgICAgICAgICAgIHN0YXJ0ID0gbVtpXS5sZWZ0ICsgb2Zmc2V0OwogICAgICAgICAgICB2YXIgb3B0aW9ucyA9CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93OgogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2luc3R5bGVzOiBNZXNzYWdlUHVtcC5XaW5kb3dTdHlsZXMuV1NfVklTSUJMRSB8IE1lc3NhZ2VQdW1wLldpbmRvd1N0eWxlcy5XU19CT1JERVIgfCBNZXNzYWdlUHVtcC5XaW5kb3dTdHlsZXMuV1NfQ0FQVElPTiB8IE1lc3NhZ2VQdW1wLldpbmRvd1N0eWxlcy5XU19TWVNNRU5VLAogICAgICAgICAgICAgICAgICAgICAgICB4OiBzdGFydCwgeTogbVtpXS50b3AsIGxlZnQ6IG1baV0ubGVmdCwgcmlnaHQ6IG1baV0ucmlnaHQsIHdpZHRoOiBiYXJXaWR0aCwgaGVpZ2h0OiBiYXJIZWlnaHQsIHRpdGxlOiB0aGlzLm5vdGlmeWJhci50aXRsZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucHVzaChuZXcgTWVzc2FnZVB1bXAob3B0aW9ucykpOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm5vdGlmeWJhciA9IHRoaXMubm90aWZ5YmFyOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm9uKCdod25kJywgZnVuY3Rpb24gKGgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRoaXMuX0hBTkRMRSA9IGg7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm9uKCdleGl0JywgZnVuY3Rpb24gKGgpCiAgICAgICAgICAgIHsgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubm90aWZ5YmFyLl9wdW1wcy5sZW5ndGg7ICsraSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl9wdW1wc1tpXS5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2V4aXQnKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHNbaV0uY2xvc2UoKTsNCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5lbWl0KCdjbG9zZScpOwogICAgICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3B1bXBzID0gW107CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fcHVtcHMucGVlaygpLm9uKCdtZXNzYWdlJywgZnVuY3Rpb24gb25XaW5kb3dzTWVzc2FnZShtc2cpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChtc2cubWVzc2FnZSA9PSAxMzMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiV01fTkNQQUlOVCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG1zZy5tZXNzYWdlID09IDcwKSAgIC8vIFdlIGFyZSBpbnRlcmNlcHRpbmcgV01fV0lORE9XUE9TQ0hBTkdJTkcgdG8gRElTQUJMRSBtb3ZpbmcgdGhlIHdpbmRvdwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9IQU5ETEUpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmxhZ3MgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHB0cnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IG1zZy5scGFyYW1fcmF3LkRlcmVmKDI0LCA0KS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpIHwgMHgwMDAyOyAvLyBTZXQgU1dQX05PTU9WRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2cubHBhcmFtX3Jhdy5EZXJlZig4LCA0KS50b0J1ZmZlcigpLnJlYWRJbnQzMkxFKCkgPCB0aGlzLl9vcHRpb25zLndpbmRvdy5sZWZ0IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtc2cubHBhcmFtX3Jhdy5EZXJlZig4LCA0KS50b0J1ZmZlcigpLnJlYWRJbnQzMkxFKCkgKyB0aGlzLl9vcHRpb25zLndpbmRvdy53aWR0aCkgPj0gdGhpcy5fb3B0aW9ucy53aW5kb3cucmlnaHQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgdGhpcyBtb3ZlLCBiZWNhdXNlIGl0IHdpbGwgZ28gb3V0IG9mIGJvdW5kcyBvZiB0aGUgY3VycmVudCBtb25pdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5scGFyYW1fcmF3LkRlcmVmKDI0LCA0KS50b0J1ZmZlcigpLndyaXRlVUludDMyTEUoZmxhZ3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyB0aGUgbW92ZSwgYnV0IG9ubHkgb24gdGhlIFgtYXhpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLmxwYXJhbV9yYXcuRGVyZWYoMTIsIDQpLnRvQnVmZmVyKCkud3JpdGVJbnQzMkxFKHRoaXMuX29wdGlvbnMud2luZG93LnkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBtc2cubHBhcmFtX3Jhdy5EZXJlZigzMiwgNCkudG9CdWZmZXIoKS5yZWFkVUludDMyTEUoKSB8IDB4MDAwMiAgLy8gU2V0IFNXUF9OT01PVkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnLmxwYXJhbV9yYXcuRGVyZWYoMTYsIDQpLnRvQnVmZmVyKCkucmVhZEludDMyTEUoKSA8IHRoaXMuX29wdGlvbnMud2luZG93LmxlZnQgfHwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtc2cubHBhcmFtX3Jhdy5EZXJlZigxNiwgNCkudG9CdWZmZXIoKS5yZWFkSW50MzJMRSgpICsgdGhpcy5fb3B0aW9ucy53aW5kb3cud2lkdGgpID49IHRoaXMuX29wdGlvbnMud2luZG93LnJpZ2h0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgdGhpcyBtb3ZlLCBiZWNhdXNlIGl0IHdpbGwgZ28gb3V0IG9mIGJvdW5kcyBvZiB0aGUgY3VycmVudCBtb25pdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5scGFyYW1fcmF3LkRlcmVmKDMyLCA0KS50b0J1ZmZlcigpLndyaXRlVUludDMyTEUoZmxhZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgdGhlIG1vdmUsIGJ1dCBvbmx5IG9uIHRoZSBYLWF4aXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5scGFyYW1fcmF3LkRlcmVmKDIwLCA0KS50b0J1ZmZlcigpLndyaXRlSW50MzJMRSh0aGlzLl9vcHRpb25zLndpbmRvdy55KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKCiAgICByZXR1cm4gKHJldCk7Cn0KCgpmdW5jdGlvbiB4X25vdGlmeWJhcl9jaGVjayh0aXRsZSkKewogICAgaWYocmVxdWlyZSgndXNlci1zZXNzaW9ucycpLlNlbGYoKSE9MCB8fCByZXF1aXJlKCd1c2VyLXNlc3Npb25zJykuY29uc29sZVVpZCgpID09IDApCiAgICB7CiAgICAgICAgcmV0dXJuICh4X25vdGlmeWJhcih0aXRsZSkpOyAvLyBObyBEaXNwYXRjaGluZyBuZWNlc3NhcnkKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICAvLyBXZSBhcmUgcm9vdCwgc28gd2Ugc2hvdWxkIHRyeSB0byBzcGF3biBhIGNoaWxkIGludG8gdGhlIHVzZXIncyBkZXNrdG9wCiAgICAgICAgdmFyIHVpZCA9IHJlcXVpcmUoJ3VzZXItc2Vzc2lvbnMnKS5jb25zb2xlVWlkKCk7CiAgICAgICAgdmFyIHhpbmZvID0gcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuZ2V0WEluZm8odWlkKTsKICAgICAgICAKICAgICAgICBpZiAoIXhpbmZvKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3coJ1hTZXJ2ZXIgSW5pdGlhbGl6YXRpb24gRXJyb3InKQogICAgICAgIH0KICAgICAgICB2YXIgcmV0ID0ge307CiAgICAgICAgdmFyIHNjcmlwdCA9IEJ1ZmZlci5mcm9tKCJyZXF1aXJlKCdub3RpZnliYXItZGVza3RvcCcpKCciICsgdGl0bGUgKyAiJykub24oJ2Nsb3NlJywgZnVuY3Rpb24oKXtwcm9jZXNzLmV4aXQoKTt9KTsiKS50b1N0cmluZygnYmFzZTY0Jyk7CgogICAgICAgIHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlci5jYWxsKHJldCwgdHJ1ZSkKICAgICAgICAgICAgLmNyZWF0ZUV2ZW50KCdjbG9zZScpCiAgICAgICAgICAgIC5hZGRNZXRob2QoJ2Nsb3NlJywgZnVuY3Rpb24gY2xvc2UoKSB7IHRoaXMuY2hpbGQua2lsbCgpOyB9KTsKCiAgICAgICAgcmV0LmNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZXhlY1BhdGgsIFtwcm9jZXNzLmV4ZWNQYXRoLnNwbGl0KCcvJykucG9wKCksICctYjY0ZXhlYycsIHNjcmlwdF0sIHsgdWlkOiB1aWQsIGVudjogeGluZm8uZXhwb3J0RW52KCkgfSk7CiAgICAgICAgcmV0LmNoaWxkLnBhcmVudCA9IHJldDsKICAgICAgICByZXQuY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7CiAgICAgICAgcmV0LmNoaWxkLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOwogICAgICAgIHJldC5jaGlsZC5vbignZXhpdCcsIGZ1bmN0aW9uIChjb2RlKSB7IHRoaXMucGFyZW50LmVtaXQoJ2Nsb3NlJywgY29kZSk7IH0pOwoKICAgICAgICByZXR1cm4gKHJldCk7CiAgICB9Cn0KCmZ1bmN0aW9uIHhfbm90aWZ5YmFyKHRpdGxlKQp7CiAgICByZXQgPSB7IF9PYmplY3RJRDogJ25vdGlmeWJhci1kZXNrdG9wLlgnLCB0aXRsZTogdGl0bGUsIF93aW5kb3dzOiBbXSwgX3Byb21pc2U6IHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLmdldEluZm8oKSB9OwoKICAgIHJldC5fcHJvbWlzZS5ub3RpZnliYXIgPSByZXQ7CiAgICByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXIuY2FsbChyZXQsIHRydWUpCiAgICAgICAgLmNyZWF0ZUV2ZW50KCdjbG9zZScpCiAgICAgICAgLmFkZE1ldGhvZCgnY2xvc2UnLCBmdW5jdGlvbiBjbG9zZSgpCiAgICAgICAgewogICAgICAgIH0pOwoKICAgIHJldC5fcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChtKQogICAgewogICAgICAgIHZhciBvZmZzZXQ7CiAgICAgICAgdmFyIGJhcldpZHRoLCBtb25XaWR0aCwgb2Zmc2V0LCBiYXJIZWlnaHQsIG1vbkhlaWdodDsKICAgICAgICBmb3IgKHZhciBpIGluIG0pCiAgICAgICAgewogICAgICAgICAgICBtb25XaWR0aCA9IChtW2ldLnJpZ2h0IC0gbVtpXS5sZWZ0KTsKICAgICAgICAgICAgbW9uSGVpZ2h0ID0gKG1baV0uYm90dG9tIC0gbVtpXS50b3ApOwogICAgICAgICAgICBiYXJXaWR0aCA9IE1hdGguZmxvb3IobW9uV2lkdGggKiAwLjMwKTsKICAgICAgICAgICAgYmFySGVpZ2h0ID0gTWF0aC5mbG9vcihtb25IZWlnaHQgKiAwLjAzNSk7CiAgICAgICAgICAgIG9mZnNldCA9IE1hdGguZmxvb3IobW9uV2lkdGggKiAwLjUwKSAtIE1hdGguZmxvb3IoYmFyV2lkdGggKiAwLjUwKTsKICAgICAgICAgICAgc3RhcnQgPSBtW2ldLmxlZnQgKyBvZmZzZXQ7CgogICAgICAgICAgICB2YXIgd2hpdGUgPSByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5fWDExLlhXaGl0ZVBpeGVsKG1baV0uZGlzcGxheSwgbVtpXS5zY3JlZW5JZCkuVmFsOwogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wdXNoKHsKICAgICAgICAgICAgICAgIHJvb3Q6IHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWFJvb3RXaW5kb3cobVtpXS5kaXNwbGF5LCBtW2ldLnNjcmVlbklkKSwKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG1baV0uZGlzcGxheSwgaWQ6IG1baV0uc2NyZWVkSWQKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkubm90aWZ5YmFyID0gcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YQ3JlYXRlU2ltcGxlV2luZG93KG1baV0uZGlzcGxheSwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLnJvb3QsIHN0YXJ0LCAwLCBiYXJXaWR0aCwgMSwgMCwgd2hpdGUsIHdoaXRlKTsKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YU3RvcmVOYW1lKG1baV0uZGlzcGxheSwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLm5vdGlmeWJhciwgcmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuQ3JlYXRlVmFyaWFibGUodGhpcy5ub3RpZnliYXIudGl0bGUpKTsKCiAgICAgICAgICAgIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLnNldFdpbmRvd1NpemVIaW50cyhtW2ldLmRpc3BsYXksIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5ub3RpZnliYXIsIHN0YXJ0LCAwLCBiYXJXaWR0aCwgMSwgYmFyV2lkdGgsIDEsIGJhcldpZHRoLCAxKTsKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuaGlkZVdpbmRvd0ljb24obVtpXS5kaXNwbGF5LCB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkucm9vdCwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLm5vdGlmeWJhcik7CgogICAgICAgICAgICByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5zZXRBbGxvd2VkQWN0aW9ucyhtW2ldLmRpc3BsYXksIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5ub3RpZnliYXIsIHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLk1PVElGX0ZMQUdTLk1XTV9GVU5DX0NMT1NFKTsKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuc2V0QWx3YXlzT25Ub3AobVtpXS5kaXNwbGF5LCB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkucm9vdCwgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLm5vdGlmeWJhcik7CgoKICAgICAgICAgICAgdmFyIHdtX2RlbGV0ZV93aW5kb3dfYXRvbSA9IHJlcXVpcmUoJ21vbml0b3ItaW5mbycpLl9YMTEuWEludGVybkF0b20obVtpXS5kaXNwbGF5LCByZXF1aXJlKCdfR2VuZXJpY01hcnNoYWwnKS5DcmVhdGVWYXJpYWJsZSgnV01fREVMRVRFX1dJTkRPVycpLCAwKS5WYWw7CiAgICAgICAgICAgIHZhciBhdG9tcyA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpLkNyZWF0ZVZhcmlhYmxlKDQpOwogICAgICAgICAgICBhdG9tcy50b0J1ZmZlcigpLndyaXRlVUludDMyTEUod21fZGVsZXRlX3dpbmRvd19hdG9tKTsKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YU2V0V01Qcm90b2NvbHMobVtpXS5kaXNwbGF5LCB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkubm90aWZ5YmFyLCBhdG9tcywgMSk7CgogICAgICAgICAgICByZXF1aXJlKCdtb25pdG9yLWluZm8nKS5fWDExLlhNYXBXaW5kb3cobVtpXS5kaXNwbGF5LCB0aGlzLm5vdGlmeWJhci5fd2luZG93cy5wZWVrKCkubm90aWZ5YmFyKTsKICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YRmx1c2gobVtpXS5kaXNwbGF5KTsKCiAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5EZXNjcmlwdG9yRXZlbnQgPSByZXF1aXJlKCdEZXNjcmlwdG9yRXZlbnRzJykuYWRkRGVzY3JpcHRvcihyZXF1aXJlKCdtb25pdG9yLWluZm8nKS5fWDExLlhDb25uZWN0aW9uTnVtYmVyKG1baV0uZGlzcGxheSkuVmFsLCB7IHJlYWRzZXQ6IHRydWUgfSk7CiAgICAgICAgICAgIHRoaXMubm90aWZ5YmFyLl93aW5kb3dzLnBlZWsoKS5EZXNjcmlwdG9yRXZlbnQuYXRvbSA9IHdtX2RlbGV0ZV93aW5kb3dfYXRvbTsKICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLkRlc2NyaXB0b3JFdmVudC5yZXQgPSB0aGlzLm5vdGlmeWJhcjsKICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLkRlc2NyaXB0b3JFdmVudC5fZGlzcGxheSA9IG1baV0uZGlzcGxheTsKICAgICAgICAgICAgdGhpcy5ub3RpZnliYXIuX3dpbmRvd3MucGVlaygpLkRlc2NyaXB0b3JFdmVudC5vbigncmVhZHNldCcsIGZ1bmN0aW9uIChmZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIFhFID0gcmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuQ3JlYXRlVmFyaWFibGUoMTAyNCk7CiAgICAgICAgICAgICAgICB3aGlsZSAocmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YUGVuZGluZyh0aGlzLl9kaXNwbGF5KS5WYWwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YTmV4dEV2ZW50U3luYyh0aGlzLl9kaXNwbGF5LCBYRSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKFhFLkRlcmVmKDAsIDQpLnRvQnVmZmVyKCkucmVhZFVJbnQzMkxFKCkgPT0gQ2xpZW50TWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbGllbnRUeXBlID0gWEUuRGVyZWYocmVxdWlyZSgnX0dlbmVyaWNNYXJzaGFsJykuUG9pbnRlclNpemUgPT0gOCA/IDU2IDogMjgsIDQpLnRvQnVmZmVyKCkucmVhZFVJbnQzMkxFKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRUeXBlID09IHRoaXMuYXRvbSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnRGVzY3JpcHRvckV2ZW50cycpLnJlbW92ZURlc2NyaXB0b3IoZmQpOwogICAgICAgICAgICAg", 16000); + memcpy_s(_notifybardesktop + 16000, 800, "ICAgICAgICAgICAgICAgcmVxdWlyZSgnbW9uaXRvci1pbmZvJykuX1gxMS5YQ2xvc2VEaXNwbGF5KHRoaXMuX2Rpc3BsYXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmVtaXQoJ2Nsb3NlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQuX3dpbmRvd3MuY2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKICAgIHJldHVybiAocmV0KTsKfQoKCgpzd2l0Y2gocHJvY2Vzcy5wbGF0Zm9ybSkKewogICAgY2FzZSAnd2luMzInOgogICAgICAgIG1vZHVsZS5leHBvcnRzID0gd2luZG93c19ub3RpZnliYXJfY2hlY2s7CiAgICAgICAgbW9kdWxlLmV4cG9ydHMuc3lzdGVtID0gd2luZG93c19ub3RpZnliYXJfc3lzdGVtOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnbGludXgnOgogICAgY2FzZSAnZnJlZWJzZCc6CiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSB4X25vdGlmeWJhcl9jaGVjazsKICAgICAgICBicmVhazsKfQoKCv==", 800); + ILibBase64DecodeEx((unsigned char*)_notifybardesktop, 16800, (unsigned char*)_notifybardesktop + 16800); + duk_push_global_object(ctx); duk_get_prop_string(ctx, -1, "addModule"); duk_swap_top(ctx, -2); duk_push_string(ctx, "notifybar-desktop"); duk_push_string(ctx, _notifybardesktop + 16800); duk_pcall_method(ctx, 2); duk_pop(ctx); free(_notifybardesktop); diff --git a/modules/notifybar-desktop.js b/modules/notifybar-desktop.js index 055da69..3137dd0 100644 --- a/modules/notifybar-desktop.js +++ b/modules/notifybar-desktop.js @@ -61,7 +61,7 @@ function windows_notifybar_local(title) .createEvent('close') .addMethod('close', function close() { - for (var i in this._pumps) + for (var i = 0; i < this._pumps.length; ++i) { this._pumps[i].removeAllListeners('exit'); this._pumps[i].close(); @@ -99,8 +99,8 @@ function windows_notifybar_local(title) this._HANDLE = h; }); this.notifybar._pumps.peek().on('exit', function (h) - { - for(var i in this.notifybar._pumps) + { + for (var i = 0; i < this.notifybar._pumps.length; ++i) { this.notifybar._pumps[i].removeAllListeners('exit'); this.notifybar._pumps[i].close();