metadidomi-builder 1.6.2812251812 → 1.7.3101261533
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -774
- package/package.json +4 -6
- package/build_tools/backup-manager.js +0 -3
- package/build_tools/build_apk.js +0 -3
- package/build_tools/builder.js +0 -2
- package/build_tools/certs/cert-1a25871e.key +0 -1
- package/build_tools/certs/cert-1a25871e.pfx +0 -0
- package/build_tools/check-apk.js +0 -211
- package/build_tools/commands-help.js +0 -465
- package/build_tools/create-example-app.js +0 -73
- package/build_tools/decrypt_pfx_password.js +0 -1
- package/build_tools/diagnose-apk.js +0 -61
- package/build_tools/generate-icons.js +0 -3
- package/build_tools/generate-resources.js +0 -3
- package/build_tools/manage-dependencies.js +0 -3
- package/build_tools/process-dependencies.js +0 -203
- package/build_tools/prune_modules.js +0 -147
- package/build_tools/resolve-transitive-deps.js +0 -3
- package/build_tools/restore-resources.js +0 -3
- package/build_tools/setup-androidx.js +0 -131
- package/build_tools/signing.js +0 -20
- package/build_tools/templates/bootstrap.template.js +0 -105
- package/build_tools/templates/default.ico +0 -1
- package/build_tools/templates/nsis_template.nsi +0 -380
- package/build_tools/templates/security_addons.js +0 -60
- package/build_tools/templates/sfx_config.txt.tpl +0 -5
- package/build_tools/test_sign_with_vendor.js +0 -35
- package/build_tools/upx_advanced.js +0 -68
- package/build_tools/verify-apk-dependencies.js +0 -261
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metadidomi-builder",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.3101261533",
|
|
4
4
|
"description": "Multi-builder. Support Windows, macOS et Linux en développement.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "node build_tools/builder.js",
|
|
@@ -19,10 +19,7 @@
|
|
|
19
19
|
"metadidomi-builder-help": "build_tools/commands-help.js"
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
|
-
"build_tools
|
|
23
|
-
"build_tools/templates/",
|
|
24
|
-
"build_tools/certs/",
|
|
25
|
-
"build_tools/build_tools/",
|
|
22
|
+
"build_tools/",
|
|
26
23
|
"build_tools_py/",
|
|
27
24
|
"app_src/",
|
|
28
25
|
"config.build.yaml",
|
|
@@ -57,6 +54,7 @@
|
|
|
57
54
|
"electron": "^39.1.1"
|
|
58
55
|
},
|
|
59
56
|
"dependencies": {
|
|
60
|
-
"javascript-obfuscator": "*"
|
|
57
|
+
"javascript-obfuscator": "*",
|
|
58
|
+
"metadidomi-builder": "^1.7.3101261532"
|
|
61
59
|
}
|
|
62
60
|
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const _0x5409d9=_0x1a39;(function(_0x3a5d40,_0x314e44){const _0x5b030a=_0x1a39,_0x4f009e=_0x3a5d40();while(!![]){try{const _0x57bc9a=-parseInt(_0x5b030a(0x9a))/0x1*(parseInt(_0x5b030a(0x7f))/0x2)+parseInt(_0x5b030a(0xb8))/0x3*(-parseInt(_0x5b030a(0x9f))/0x4)+parseInt(_0x5b030a(0xd4))/0x5+-parseInt(_0x5b030a(0xbf))/0x6*(parseInt(_0x5b030a(0x92))/0x7)+-parseInt(_0x5b030a(0x81))/0x8+parseInt(_0x5b030a(0xa5))/0x9*(parseInt(_0x5b030a(0xc2))/0xa)+-parseInt(_0x5b030a(0xbc))/0xb*(-parseInt(_0x5b030a(0xbb))/0xc);if(_0x57bc9a===_0x314e44)break;else _0x4f009e['push'](_0x4f009e['shift']());}catch(_0x1c8ac5){_0x4f009e['push'](_0x4f009e['shift']());}}}(_0x46d8,0xb8110));const fs=require('fs'),path=require('path'),readline=require(_0x5409d9(0x83));let projectDir=null;if(process[_0x5409d9(0x93)][0x2])projectDir=path[_0x5409d9(0xa7)](process[_0x5409d9(0x93)][0x2]);else{if(process[_0x5409d9(0xc4)]['PROJECT_PATH'])projectDir=path['resolve'](process[_0x5409d9(0xc4)][_0x5409d9(0xa4)]);else{const defaultPaths=[path[_0x5409d9(0x89)](__dirname,'..','..',_0x5409d9(0x95)),path[_0x5409d9(0xa7)](_0x5409d9(0x95))];for(const checkPath of defaultPaths){if(checkPath&&fs[_0x5409d9(0xa3)](checkPath)&&fs[_0x5409d9(0xa3)](path[_0x5409d9(0x89)](checkPath,_0x5409d9(0x96)))){projectDir=checkPath;break;}}}}(!projectDir||!fs[_0x5409d9(0xa3)](projectDir))&&(console[_0x5409d9(0x90)]('ERREUR:\x20Dossier\x20du\x20projet\x20non\x20trouvé!'),process['exit'](0x1));const BACKUP_DIR=path[_0x5409d9(0x89)](projectDir,_0x5409d9(0xd3)),rl=readline[_0x5409d9(0x86)]({'input':process[_0x5409d9(0xd0)],'output':process['stdout']});!fs[_0x5409d9(0xa3)](BACKUP_DIR)&&fs['mkdirSync'](BACKUP_DIR,{'recursive':!![]});function listBackups(){const _0x4a7b18=_0x5409d9;if(!fs[_0x4a7b18(0xa3)](BACKUP_DIR))return console[_0x4a7b18(0x8b)](_0x4a7b18(0x9c)),[];const _0x4f87f1=fs['readdirSync'](BACKUP_DIR)[_0x4a7b18(0xa0)](_0x492ce3=>fs['statSync'](path['join'](BACKUP_DIR,_0x492ce3))['isDirectory']())[_0x4a7b18(0xd8)]()['reverse']()[_0x4a7b18(0xdb)](_0x4eff74=>{const _0x491d67=_0x4a7b18,_0x116b48=path[_0x491d67(0x89)](BACKUP_DIR,_0x4eff74),_0x5c8fc6=path[_0x491d67(0x89)](_0x116b48,_0x491d67(0xb0));let _0x1b065b={'timestamp':_0x4eff74,'files':[],'app':{}};if(fs[_0x491d67(0xa3)](_0x5c8fc6))try{_0x1b065b=JSON[_0x491d67(0xb3)](fs[_0x491d67(0xa1)](_0x5c8fc6,_0x491d67(0xc8)));}catch(_0x29a3fc){}return{'folder':_0x4eff74,'timestamp':_0x1b065b[_0x491d67(0xaf)],'date':new Date(_0x1b065b[_0x491d67(0xaf)])['toLocaleString'](_0x491d67(0xbd)),'app':_0x1b065b['app']||{},'files':_0x1b065b['files']||[],'size':getDirectorySize(_0x116b48)};});return _0x4f87f1;}function _0x46d8(){const _0x2e3754=['JE\x20SUIS\x20SÛR','\x0aConfirmer\x20la\x20restauration\x20de\x20','3fUUDjO','close','split','4716ExxHgI','71181vbnRht','fr-FR','\x0aAucun\x20backup\x20à\x20supprimer.\x0a','4990344xCnsru','\x0aNuméro\x20du\x20backup\x20à\x20restaurer\x20(ou\x20Q\x20pour\x20annuler):\x20','0\x20B','15790lOSIHr','\x0aOption\x20invalide!\x0a','env','floor','forEach','folder','utf-8','\x0aSuppression\x20annulée.\x0a','\x0aAucun\x20backup\x20à\x20restaurer.\x0a','\x0aAu\x20revoir!','\x0aConfirmer\x20la\x20suppression\x20de\x20','app','\x20\x20[R]\x20Restaurer\x20un\x20backup','╔════════════════════════════════════════════════════════════════╗','stdin','length','\x0a✓\x20Backup\x20restauré\x20avec\x20succès!\x0a','.backup','6456705cmozDQ','\x20\x20\x20\x20Description:\x20','\x0a✓\x20Tous\x20les\x20backups\x20ont\x20été\x20supprimés!\x0a','\x0aRestauration\x20annulée.\x0a','sort','message','OUI','map','name','date','copyFileSync','question','?\x20(OUI/non):\x20','2EjOoLb','statSync','5632680JNDpFm','╚════════════════════════════════════════════════════════════════╝\x0a','readline','\x20\x20\x20\x20Fichiers:\x20','\x20\x20[D]\x20Supprimer\x20un\x20backup','createInterface','═══════════════════════════════════════════════════════════════\x0a','\x0a✗\x20Erreur\x20lors\x20de\x20la\x20restauration:\x20','join','description','log','\x0a✗\x20Erreur\x20lors\x20de\x20la\x20suppression:\x20','isDirectory','Options:','\x20\x20\x20\x20Dossier:\x20','error','CONFIRMER:\x20Taper\x20\x22JE\x20SUIS\x20SÛR\x22\x20pour\x20continuer:\x20','7WCxXps','argv','✓\x20Restauré:\x20','MyApp','app-config.json','\x0aNuméro\x20invalide!\x0a','rmSync','files','1336273abpfJc','readdirSync','Aucun\x20backup\x20trouvé.','toFixed','Aucun\x20backup\x20disponible.\x0a','5943348WEzZMx','filter','readFileSync','pop','existsSync','PROJECT_PATH','7281cFzeIA','\x20\x20[C]\x20Tout\x20supprimer\x20(ATTENTION!)','resolve','Backups\x20disponibles\x20(du\x20plus\x20récent\x20au\x20plus\x20ancien):\x0a','\x0a✓\x20Backup\x20supprimé\x20avec\x20succès!\x0a','═══════════════════════════════════════════════════════════════','mkdirSync','size','clear','\x0aNuméro\x20du\x20backup\x20à\x20supprimer\x20(ou\x20Q\x20pour\x20annuler):\x20','timestamp','metadata.json','\x20\x20\x20\x20Taille:\x20','toUpperCase','parse','basename','version'];_0x46d8=function(){return _0x2e3754;};return _0x46d8();}function getDirectorySize(_0x5db988){const _0x3fb922=_0x5409d9;let _0x15e216=0x0;const _0x2cf314=fs[_0x3fb922(0x9b)](_0x5db988);for(const _0x697e68 of _0x2cf314){const _0x184a92=path[_0x3fb922(0x89)](_0x5db988,_0x697e68),_0x2c6f99=fs[_0x3fb922(0x80)](_0x184a92);_0x2c6f99[_0x3fb922(0x8d)]()?_0x15e216+=getDirectorySize(_0x184a92):_0x15e216+=_0x2c6f99[_0x3fb922(0xac)];}return _0x15e216;}function formatSize(_0x421c2b){const _0x5036b4=_0x5409d9;if(_0x421c2b===0x0)return _0x5036b4(0xc1);const _0x472357=0x400,_0x33f582=['B','KB','MB','GB'],_0x903879=Math[_0x5036b4(0xc5)](Math[_0x5036b4(0x8b)](_0x421c2b)/Math['log'](_0x472357));return parseFloat((_0x421c2b/Math['pow'](_0x472357,_0x903879))[_0x5036b4(0x9d)](0x2))+'\x20'+_0x33f582[_0x903879];}function displayBackups(){const _0x275eae=_0x5409d9;console[_0x275eae(0xad)](),console[_0x275eae(0x8b)](_0x275eae(0xcf)),console['log']('║\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20GESTIONNAIRE\x20DE\x20BACKUPS\x20-\x20'+projectDir[_0x275eae(0xba)]('\x5c')[_0x275eae(0xa2)]()+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20║'),console[_0x275eae(0x8b)](_0x275eae(0x82));const _0xfa64aa=listBackups();if(_0xfa64aa[_0x275eae(0xd1)]===0x0){console[_0x275eae(0x8b)](_0x275eae(0x9e)),showMenu();return;}console[_0x275eae(0x8b)](_0x275eae(0xa8)),_0xfa64aa[_0x275eae(0xc6)]((_0x481314,_0x48fb5a)=>{const _0x14aa3a=_0x275eae;console['log']('['+_0x48fb5a+']\x20'+_0x481314[_0x14aa3a(0xdd)]),console['log'](_0x14aa3a(0x8f)+_0x481314[_0x14aa3a(0xc7)]),_0x481314[_0x14aa3a(0xcd)]&&_0x481314[_0x14aa3a(0xcd)]['name']&&(console['log']('\x20\x20\x20\x20App:\x20'+_0x481314[_0x14aa3a(0xcd)][_0x14aa3a(0xdc)]+'\x20v'+_0x481314[_0x14aa3a(0xcd)][_0x14aa3a(0xb5)]),console[_0x14aa3a(0x8b)](_0x14aa3a(0xd5)+_0x481314['app'][_0x14aa3a(0x8a)]),console[_0x14aa3a(0x8b)]('\x20\x20\x20\x20Package:\x20'+_0x481314['app']['packageName'])),console[_0x14aa3a(0x8b)](_0x14aa3a(0xb1)+formatSize(_0x481314[_0x14aa3a(0xac)])),_0x481314[_0x14aa3a(0x99)][_0x14aa3a(0xd1)]>0x0&&console[_0x14aa3a(0x8b)](_0x14aa3a(0x84)+_0x481314[_0x14aa3a(0x99)][_0x14aa3a(0x89)](',\x20')),console[_0x14aa3a(0x8b)]();}),showMenu(_0xfa64aa);}function showMenu(_0x2e10be=[]){const _0x302e7d=_0x5409d9;console[_0x302e7d(0x8b)](_0x302e7d(0xaa)),console[_0x302e7d(0x8b)](_0x302e7d(0x8e)),console[_0x302e7d(0x8b)](_0x302e7d(0xce)),console[_0x302e7d(0x8b)](_0x302e7d(0x85)),console[_0x302e7d(0x8b)](_0x302e7d(0xa6)),console[_0x302e7d(0x8b)]('\x20\x20[L]\x20Rafraîchir\x20la\x20liste'),console[_0x302e7d(0x8b)]('\x20\x20[Q]\x20Quitter'),console[_0x302e7d(0x8b)](_0x302e7d(0x87)),rl['question']('Choisir\x20une\x20option\x20(R/D/C/L/Q):\x20',_0x6c60cc=>{const _0x5cf107=_0x302e7d,_0x500bd1=_0x6c60cc[_0x5cf107(0xb2)]();switch(_0x500bd1){case'R':restoreBackup(_0x2e10be);break;case'D':deleteBackup(_0x2e10be);break;case'C':deleteAllBackups();break;case'L':displayBackups();break;case'Q':console[_0x5cf107(0x8b)](_0x5cf107(0xcb)),rl[_0x5cf107(0xb9)]();break;default:console[_0x5cf107(0x8b)](_0x5cf107(0xc3)),displayBackups();}});}function restoreBackup(_0x27ffa8){const _0x4e91ab=_0x5409d9;if(_0x27ffa8[_0x4e91ab(0xd1)]===0x0){console[_0x4e91ab(0x8b)](_0x4e91ab(0xca)),displayBackups();return;}rl[_0x4e91ab(0x7d)](_0x4e91ab(0xc0),_0x3d5aab=>{const _0x29d177=_0x4e91ab;if(_0x3d5aab[_0x29d177(0xb2)]()==='Q'){displayBackups();return;}const _0x2a3d2f=parseInt(_0x3d5aab);if(isNaN(_0x2a3d2f)||_0x2a3d2f<0x0||_0x2a3d2f>=_0x27ffa8['length']){console[_0x29d177(0x8b)](_0x29d177(0x97)),displayBackups();return;}const _0x1edb70=_0x27ffa8[_0x2a3d2f];rl['question'](_0x29d177(0xb7)+_0x1edb70[_0x29d177(0xdd)]+'?\x20(OUI/non):\x20',_0xe87689=>{const _0x3c252f=_0x29d177;if(_0xe87689[_0x3c252f(0xb2)]()!==_0x3c252f(0xda)&&_0xe87689[_0x3c252f(0xb2)]()!=='O'){console[_0x3c252f(0x8b)](_0x3c252f(0xd7)),displayBackups();return;}try{const _0x287d92=path[_0x3c252f(0x89)](BACKUP_DIR,_0x1edb70[_0x3c252f(0xc7)]),_0x40cceb=path[_0x3c252f(0x89)](_0x287d92,'meta.json'),_0x37ef61=JSON[_0x3c252f(0xb3)](fs['readFileSync'](_0x40cceb,_0x3c252f(0xc8)));for(const _0x115222 of _0x37ef61[_0x3c252f(0x99)]){const _0x5bafd3=path[_0x3c252f(0x89)](_0x287d92,path[_0x3c252f(0xb4)](_0x115222));if(fs[_0x3c252f(0xa3)](_0x5bafd3)){const _0x52e2cc=path[_0x3c252f(0x89)](projectDir,_0x115222),_0x1d2a5b=path['dirname'](_0x52e2cc);!fs[_0x3c252f(0xa3)](_0x1d2a5b)&&fs['mkdirSync'](_0x1d2a5b,{'recursive':!![]}),fs[_0x3c252f(0xde)](_0x5bafd3,_0x52e2cc),console[_0x3c252f(0x8b)](_0x3c252f(0x94)+_0x115222);}}console['log'](_0x3c252f(0xd2)),displayBackups();}catch(_0x366c74){console[_0x3c252f(0x90)](_0x3c252f(0x88)+_0x366c74[_0x3c252f(0xd9)]+'\x0a'),displayBackups();}});});}function deleteBackup(_0x1abc2e){const _0x47ebfc=_0x5409d9;if(_0x1abc2e[_0x47ebfc(0xd1)]===0x0){console[_0x47ebfc(0x8b)](_0x47ebfc(0xbe)),displayBackups();return;}rl['question'](_0x47ebfc(0xae),_0x3e24a7=>{const _0x5eb64e=_0x47ebfc;if(_0x3e24a7[_0x5eb64e(0xb2)]()==='Q'){displayBackups();return;}const _0x4fc5da=parseInt(_0x3e24a7);if(isNaN(_0x4fc5da)||_0x4fc5da<0x0||_0x4fc5da>=_0x1abc2e['length']){console[_0x5eb64e(0x8b)](_0x5eb64e(0x97)),displayBackups();return;}const _0x98d6a4=_0x1abc2e[_0x4fc5da];rl[_0x5eb64e(0x7d)](_0x5eb64e(0xcc)+_0x98d6a4['date']+_0x5eb64e(0x7e),_0x5015e7=>{const _0x8db7a7=_0x5eb64e;if(_0x5015e7[_0x8db7a7(0xb2)]()!==_0x8db7a7(0xda)&&_0x5015e7[_0x8db7a7(0xb2)]()!=='O'){console[_0x8db7a7(0x8b)](_0x8db7a7(0xc9)),displayBackups();return;}try{const _0xf09b24=path[_0x8db7a7(0x89)](BACKUP_DIR,_0x98d6a4[_0x8db7a7(0xc7)]);fs[_0x8db7a7(0x98)](_0xf09b24,{'recursive':!![],'force':!![]}),console[_0x8db7a7(0x8b)](_0x8db7a7(0xa9)),displayBackups();}catch(_0x13df76){console['error'](_0x8db7a7(0x8c)+_0x13df76[_0x8db7a7(0xd9)]+'\x0a'),displayBackups();}});});}function deleteAllBackups(){const _0xcfcf0a=_0x5409d9;rl[_0xcfcf0a(0x7d)]('\x0a⚠\x20ATTENTION:\x20Supprimer\x20TOUS\x20les\x20backups?\x20(OUI/non):\x20',_0x1ba14e=>{const _0x4d4e24=_0xcfcf0a;if(_0x1ba14e[_0x4d4e24(0xb2)]()!==_0x4d4e24(0xda)&&_0x1ba14e[_0x4d4e24(0xb2)]()!=='O'){console['log']('\x0aSuppression\x20annulée.\x0a'),displayBackups();return;}rl['question'](_0x4d4e24(0x91),_0x567985=>{const _0x1845f3=_0x4d4e24;if(_0x567985!==_0x1845f3(0xb6)){console[_0x1845f3(0x8b)]('\x0aSuppression\x20annulée.\x0a'),displayBackups();return;}try{fs['existsSync'](BACKUP_DIR)&&(fs['rmSync'](BACKUP_DIR,{'recursive':!![],'force':!![]}),fs[_0x1845f3(0xab)](BACKUP_DIR,{'recursive':!![]})),console[_0x1845f3(0x8b)](_0x1845f3(0xd6)),displayBackups();}catch(_0xd70865){console['error']('\x0a✗\x20Erreur\x20lors\x20de\x20la\x20suppression:\x20'+_0xd70865['message']+'\x0a'),displayBackups();}});});}function _0x1a39(_0x915edd,_0x30ca33){const _0x46d84f=_0x46d8();return _0x1a39=function(_0x1a39a6,_0x81b117){_0x1a39a6=_0x1a39a6-0x7d;let _0x27259d=_0x46d84f[_0x1a39a6];return _0x27259d;},_0x1a39(_0x915edd,_0x30ca33);}displayBackups();
|
package/build_tools/build_apk.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const a0_0x16d1d1=a0_0x22b6;(function(_0x58c2b0,_0x14dd59){const _0x5117eb=a0_0x22b6,_0x7cb952=_0x58c2b0();while(!![]){try{const _0x244a15=-parseInt(_0x5117eb(0x228))/0x1*(parseInt(_0x5117eb(0x2c9))/0x2)+-parseInt(_0x5117eb(0x2b1))/0x3+parseInt(_0x5117eb(0x1e7))/0x4+parseInt(_0x5117eb(0x2ad))/0x5+-parseInt(_0x5117eb(0x28c))/0x6*(parseInt(_0x5117eb(0x2a4))/0x7)+-parseInt(_0x5117eb(0x24c))/0x8+parseInt(_0x5117eb(0x218))/0x9;if(_0x244a15===_0x14dd59)break;else _0x7cb952['push'](_0x7cb952['shift']());}catch(_0x4fb313){_0x7cb952['push'](_0x7cb952['shift']());}}}(a0_0x4038,0x2f806));const fs=require('fs'),path=require(a0_0x16d1d1(0x2c8)),{execSync,spawnSync}=require('child_process'),startTime=Date[a0_0x16d1d1(0x235)]();let projectDir=null;process[a0_0x16d1d1(0x28a)][0x2]&&(projectDir=path[a0_0x16d1d1(0x2c6)](process['argv'][0x2]),console['log']('Argument\x20CLI\x20détecté:\x20'+projectDir));!projectDir&&process['env'][a0_0x16d1d1(0x253)]&&(projectDir=path[a0_0x16d1d1(0x2c6)](process[a0_0x16d1d1(0x1c5)][a0_0x16d1d1(0x253)]),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x21c)+projectDir));if(!projectDir){let searchDir=process[a0_0x16d1d1(0x285)]();for(let i=0x0;i<0x5;i++){const configPath=path[a0_0x16d1d1(0x28d)](searchDir,'app-config.json');if(fs['existsSync'](configPath)){projectDir=searchDir,console['log'](a0_0x16d1d1(0x274)+projectDir);break;}searchDir=path[a0_0x16d1d1(0x201)](searchDir);}}if(!projectDir){const defaultPaths=[path[a0_0x16d1d1(0x28d)](__dirname,'..','..','MyApp'),path[a0_0x16d1d1(0x2c6)]('MyApp'),path[a0_0x16d1d1(0x28d)](process[a0_0x16d1d1(0x1c5)]['USERPROFILE']||process['env'][a0_0x16d1d1(0x24b)]||'',a0_0x16d1d1(0x238))];for(const checkPath of defaultPaths){if(checkPath&&fs[a0_0x16d1d1(0x1de)](checkPath)&&fs[a0_0x16d1d1(0x1de)](path[a0_0x16d1d1(0x28d)](checkPath,a0_0x16d1d1(0x28f)))){projectDir=checkPath,console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x263)+projectDir);break;}}}(!projectDir||!fs['existsSync'](projectDir))&&(console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2ea)),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2bf)),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x254)),console['error'](a0_0x16d1d1(0x1cb)),console['error']('\x0aOptions:'),process[a0_0x16d1d1(0x1ef)](0x1));const buildToolsDir=__dirname,skipBackup=process[a0_0x16d1d1(0x28a)][a0_0x16d1d1(0x20f)]('--no-backup'),restoreFromBackup=process[a0_0x16d1d1(0x28a)][a0_0x16d1d1(0x20f)]('--restore');if(restoreFromBackup){console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x251));try{execSync(a0_0x16d1d1(0x27e)+path[a0_0x16d1d1(0x28d)](buildToolsDir,a0_0x16d1d1(0x1c7))+a0_0x16d1d1(0x20a)+projectDir+a0_0x16d1d1(0x224),{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)}),console['log'](a0_0x16d1d1(0x215)),process[a0_0x16d1d1(0x1ef)](0x0);}catch(a0_0x207960){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2b4)),process[a0_0x16d1d1(0x1ef)](0x1);}}const configPath=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x28f));!fs[a0_0x16d1d1(0x1de)](configPath)&&(console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x268)),process[a0_0x16d1d1(0x1ef)](0x1));const appConfig=JSON['parse'](fs[a0_0x16d1d1(0x1b0)](configPath,'utf-8'));console[a0_0x16d1d1(0x2b2)]('Compilation\x20de:\x20'+appConfig[a0_0x16d1d1(0x277)]+'\x20v'+appConfig[a0_0x16d1d1(0x294)]),console['log'](a0_0x16d1d1(0x2b8)+appConfig[a0_0x16d1d1(0x1d6)]),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x243));function extractClassesFromAARs(_0x5a8665){const _0x407a28=a0_0x16d1d1,_0x46f836=path[_0x407a28(0x28d)](_0x5a8665,_0x407a28(0x241)),_0x22d817=path[_0x407a28(0x28d)](_0x5a8665,_0x407a28(0x1c8));if(!fs[_0x407a28(0x1de)](_0x46f836))return console['log'](_0x407a28(0x281)),[];!fs['existsSync'](_0x22d817)&&fs[_0x407a28(0x2d0)](_0x22d817,{'recursive':!![]});let _0x20ed87=null;const _0x410a46=process[_0x407a28(0x1af)],_0x47d607=process[_0x407a28(0x2a5)];if(_0x410a46===_0x407a28(0x220)){const _0x1d524b=_0x47d607===_0x407a28(0x2b5)?'x64':_0x47d607==='arm64'?_0x407a28(0x1b3):_0x407a28(0x2da);_0x20ed87=path['join'](buildToolsDir,_0x407a28(0x1ec),_0x407a28(0x1bf),_0x407a28(0x289),_0x1d524b,_0x407a28(0x1c6));}else{if(_0x410a46==='linux')_0x20ed87=path[_0x407a28(0x28d)](buildToolsDir,_0x407a28(0x1ec),_0x407a28(0x1bf),'linux',_0x407a28(0x2b5),_0x407a28(0x296));else _0x410a46===_0x407a28(0x2c4)&&(_0x20ed87=path[_0x407a28(0x28d)](buildToolsDir,_0x407a28(0x1ec),_0x407a28(0x1bf),_0x407a28(0x256),_0x407a28(0x2b5),_0x407a28(0x296)));}if(!_0x20ed87||!fs[_0x407a28(0x1de)](_0x20ed87))return console[_0x407a28(0x258)](_0x407a28(0x248)+_0x410a46+'\x20'+_0x47d607+_0x407a28(0x221)+_0x20ed87),[];const _0x10e937=[];console[_0x407a28(0x2b2)]('\x0a📦\x20Extraction\x20des\x20classes.jar\x20depuis\x20les\x20AARs...');try{const _0xc0d002=fs[_0x407a28(0x22f)](_0x46f836);for(const _0x4e7844 of _0xc0d002){if(_0x4e7844['endsWith'](_0x407a28(0x2a2))){const _0x22f679=path[_0x407a28(0x28d)](_0x46f836,_0x4e7844),_0x5e8a5d=_0x4e7844[_0x407a28(0x2c0)]('.aar',_0x407a28(0x1df)),_0x5485b3=path[_0x407a28(0x28d)](_0x22d817,_0x5e8a5d);if(fs[_0x407a28(0x1de)](_0x5485b3)){_0x10e937[_0x407a28(0x287)](_0x5485b3),console[_0x407a28(0x2b2)](_0x407a28(0x2c5)+_0x5e8a5d);continue;}const _0x5577f7=path['join'](_0x22d817,_0x407a28(0x1fb)+Date[_0x407a28(0x235)]()+'_'+Math['random']()['toString'](0x24)[_0x407a28(0x222)](0x2,0x9));try{fs[_0x407a28(0x2d0)](_0x5577f7,{'recursive':!![]});const _0x391bb7='\x22'+_0x20ed87+'\x22\x20x\x20\x22'+_0x22f679+'\x22\x20-o\x22'+_0x5577f7+'\x22';console[_0x407a28(0x2b2)](_0x407a28(0x206)+_0x4e7844+_0x407a28(0x1bb)),execSync(_0x391bb7,{'stdio':_0x407a28(0x1d2),'shell':'cmd.exe'});const _0x54c286=path[_0x407a28(0x28d)](_0x5577f7,_0x407a28(0x227));fs[_0x407a28(0x1de)](_0x54c286)?(fs[_0x407a28(0x286)](_0x54c286,_0x5485b3),_0x10e937['push'](_0x5485b3),console['log'](_0x407a28(0x278)+_0x4e7844+'\x20->\x20'+_0x5e8a5d)):console[_0x407a28(0x258)](_0x407a28(0x207)+_0x4e7844);try{fs['rmSync'](_0x5577f7,{'recursive':!![],'force':!![]});}catch(_0xf4df1c){}}catch(_0x70f22e){console['warn']('⚠\x20Impossible\x20d\x27extraire\x20'+_0x4e7844+':\x20'+_0x70f22e[_0x407a28(0x2ce)]);try{fs[_0x407a28(0x298)](_0x5577f7,{'recursive':!![],'force':!![]});}catch(_0x18c961){}}}}}catch(_0x2d0f33){console[_0x407a28(0x258)]('⚠\x20Erreur\x20lors\x20de\x20la\x20lecture\x20du\x20répertoire\x20libs:\x20'+_0x2d0f33[_0x407a28(0x2ce)]);}return _0x10e937;}console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2aa));const backupOption=skipBackup?a0_0x16d1d1(0x1b4):'';try{execSync(a0_0x16d1d1(0x27e)+path[a0_0x16d1d1(0x28d)](buildToolsDir,a0_0x16d1d1(0x1c7))+a0_0x16d1d1(0x20a)+projectDir+'\x22'+backupOption,{'stdio':a0_0x16d1d1(0x25f)});}catch(a0_0x233fc8){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x292)),process[a0_0x16d1d1(0x1ef)](0x1);}console[a0_0x16d1d1(0x2b2)](''),console[a0_0x16d1d1(0x2b2)]('Génération\x20des\x20icônes\x20pour\x20les\x20différentes\x20densités...');const forceIcons=process[a0_0x16d1d1(0x28a)][a0_0x16d1d1(0x20f)](a0_0x16d1d1(0x1e4));function iconsExistInProject(_0x21c539){const _0x5e2f34=a0_0x16d1d1,_0x16c617=[path['join'](_0x21c539,_0x5e2f34(0x202),_0x5e2f34(0x1f7),'ic_launcher.xml'),path[_0x5e2f34(0x28d)](_0x21c539,_0x5e2f34(0x202),_0x5e2f34(0x1ce),_0x5e2f34(0x1f2)),path['join'](_0x21c539,_0x5e2f34(0x202),_0x5e2f34(0x239),_0x5e2f34(0x1f2)),path[_0x5e2f34(0x28d)](_0x21c539,_0x5e2f34(0x202),_0x5e2f34(0x20c),_0x5e2f34(0x1f2)),path[_0x5e2f34(0x28d)](_0x21c539,_0x5e2f34(0x202),_0x5e2f34(0x255),_0x5e2f34(0x1f2)),path[_0x5e2f34(0x28d)](_0x21c539,_0x5e2f34(0x202),_0x5e2f34(0x1c3),_0x5e2f34(0x1f2))];try{for(const _0x222870 of _0x16c617)if(fs[_0x5e2f34(0x1de)](_0x222870))return!![];}catch(_0x3f97ec){}return![];}if(!forceIcons&&iconsExistInProject(projectDir))console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2c1));else try{execSync(a0_0x16d1d1(0x27e)+path[a0_0x16d1d1(0x28d)](buildToolsDir,'generate-icons.js')+a0_0x16d1d1(0x20a)+projectDir+'\x22',{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)});}catch(a0_0x8f6319){console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x262)),console['warn'](a0_0x16d1d1(0x2b3)+a0_0x8f6319['message'][a0_0x16d1d1(0x1e8)](0x0,0x64));}console['log']('');const ignoreMissing=process['argv'][a0_0x16d1d1(0x20f)]('--ignore-missing'),failOnMissing=process[a0_0x16d1d1(0x28a)][a0_0x16d1d1(0x20f)](a0_0x16d1d1(0x2de));function scanProjectForMissingFiles(_0x14e70c,_0x3b7e5d){const _0x4a6b6d=a0_0x16d1d1,_0x5c53f1=_0x3b7e5d&&Array['isArray'](_0x3b7e5d['minimalRequiredFiles'])?_0x3b7e5d[_0x4a6b6d(0x203)]:['AndroidManifest.xml',_0x4a6b6d(0x269),'res/values/styles.xml',_0x4a6b6d(0x1d7)],_0x4c7fcb=[];for(const _0x17e8f9 of _0x5c53f1){const _0x182c39=path[_0x4a6b6d(0x28d)](_0x14e70c,_0x17e8f9);if(!fs[_0x4a6b6d(0x1de)](_0x182c39))_0x4c7fcb[_0x4a6b6d(0x287)](_0x17e8f9);}let _0x50e783=![];const _0x440653=path[_0x4a6b6d(0x28d)](_0x14e70c,_0x4a6b6d(0x229));if(fs[_0x4a6b6d(0x1de)](_0x440653)){const _0x5d9485=[_0x440653];while(_0x5d9485['length']){const _0x2e2a19=_0x5d9485[_0x4a6b6d(0x1ee)]();try{for(const _0x3a0916 of fs['readdirSync'](_0x2e2a19)){const _0x26fecf=path[_0x4a6b6d(0x28d)](_0x2e2a19,_0x3a0916),_0x3ec127=fs[_0x4a6b6d(0x1dc)](_0x26fecf);if(_0x3ec127['isDirectory']())_0x5d9485[_0x4a6b6d(0x287)](_0x26fecf);else{if(_0x3a0916[_0x4a6b6d(0x276)](_0x4a6b6d(0x297))){_0x50e783=!![];break;}}}}catch(_0x15070d){}if(_0x50e783)break;}}return{'missingFiles':_0x4c7fcb,'hasJava':_0x50e783};}const scanResult=scanProjectForMissingFiles(projectDir,appConfig);if(scanResult[a0_0x16d1d1(0x26b)][a0_0x16d1d1(0x2e1)]>0x0){console[a0_0x16d1d1(0x258)]('\x0a⚠\x20Vérification\x20projet:\x20fichiers\x20minimaux\x20manquants\x20détectés:');for(const m of scanResult[a0_0x16d1d1(0x26b)])console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x2b0)+m);!ignoreMissing?failOnMissing?(console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x1e0)),process[a0_0x16d1d1(0x1ef)](0x1)):console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x236)):console['log'](a0_0x16d1d1(0x21b));}else console['log']('\x0a✓\x20Vérification\x20projet:\x20tous\x20les\x20fichiers\x20minimaux\x20présents');!scanResult[a0_0x16d1d1(0x1fe)]&&console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x2a7));const VENDOR_DIR=path['join'](buildToolsDir,'vendor'),SDK=path['join'](VENDOR_DIR,a0_0x16d1d1(0x2bd),'android-sdk'),JDK=path[a0_0x16d1d1(0x28d)](VENDOR_DIR,a0_0x16d1d1(0x2bd),a0_0x16d1d1(0x1cd),a0_0x16d1d1(0x288)),AAPT2=path[a0_0x16d1d1(0x28d)](SDK,a0_0x16d1d1(0x23b),a0_0x16d1d1(0x1fa),a0_0x16d1d1(0x1e1)),ANDROID_JAR=path[a0_0x16d1d1(0x28d)](SDK,'platforms',a0_0x16d1d1(0x1f6),a0_0x16d1d1(0x24d)),D8=path['join'](SDK,a0_0x16d1d1(0x23b),'34.0.0',a0_0x16d1d1(0x2d4)),ZIPALIGN=path[a0_0x16d1d1(0x28d)](SDK,a0_0x16d1d1(0x23b),a0_0x16d1d1(0x1fa),a0_0x16d1d1(0x2cd)),APKSIGNER=path[a0_0x16d1d1(0x28d)](SDK,a0_0x16d1d1(0x23b),a0_0x16d1d1(0x1fa),a0_0x16d1d1(0x279)),SEVENZIP=path[a0_0x16d1d1(0x28d)](VENDOR_DIR,a0_0x16d1d1(0x1bf),a0_0x16d1d1(0x289),'ia32',a0_0x16d1d1(0x1c6)),requiredTools=[{'name':a0_0x16d1d1(0x216),'path':AAPT2},{'name':'Android\x20JAR','path':ANDROID_JAR},{'name':'D8','path':D8},{'name':a0_0x16d1d1(0x2ba),'path':ZIPALIGN},{'name':a0_0x16d1d1(0x1e2),'path':APKSIGNER},{'name':a0_0x16d1d1(0x22a),'path':SEVENZIP},{'name':a0_0x16d1d1(0x1cf),'path':path[a0_0x16d1d1(0x28d)](JDK,'javac.exe')}];for(const tool of requiredTools){!fs[a0_0x16d1d1(0x1de)](tool[a0_0x16d1d1(0x2c8)])&&(console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2be)+tool[a0_0x16d1d1(0x2e2)]+a0_0x16d1d1(0x1f1)+tool[a0_0x16d1d1(0x2c8)]),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2dc)),process['exit'](0x1));}const BUILD_DIR=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x29b)),SRC_DIR=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x229)),RES_DIR=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x202));function run(_0x284a93,_0xf805c7,_0x584927=projectDir){const _0x608d40=a0_0x16d1d1;console[_0x608d40(0x2b2)](_0x608d40(0x1bd)+_0xf805c7+_0x608d40(0x28e));try{const _0x4f35bd=execSync(_0x284a93,{'cwd':_0x584927,'stdio':_0x608d40(0x25f),'shell':'cmd.exe'});return!![];}catch(_0xcca0ed){console[_0x608d40(0x231)]('ERREUR:\x20'+_0xf805c7+_0x608d40(0x275)),process[_0x608d40(0x1ef)](0x1);}}function copyFile(_0x57530c,_0x3fc53e){const _0x5058f6=a0_0x16d1d1,_0x3779cb=path[_0x5058f6(0x201)](_0x3fc53e);!fs[_0x5058f6(0x1de)](_0x3779cb)&&fs[_0x5058f6(0x2d0)](_0x3779cb,{'recursive':!![]}),fs['copyFileSync'](_0x57530c,_0x3fc53e);}function removeDir(_0x17b240){const _0x4529bd=a0_0x16d1d1;fs['existsSync'](_0x17b240)&&fs[_0x4529bd(0x298)](_0x17b240,{'recursive':!![],'force':!![]});}function cleanBuildDir(_0x2249ab){const _0x31880c=a0_0x16d1d1;if(!fs[_0x31880c(0x1de)](_0x2249ab)){fs[_0x31880c(0x2d0)](_0x2249ab,{'recursive':!![]});return;}const _0x54c967=['classes',_0x31880c(0x2a1),_0x31880c(0x26c)],_0x3c3dc7=[_0x31880c(0x250),_0x31880c(0x227),'classes.dex','dependencies-config.json'];try{const _0x376260=fs[_0x31880c(0x22f)](_0x2249ab);for(const _0x4a2254 of _0x376260){const _0x5e2585=path[_0x31880c(0x28d)](_0x2249ab,_0x4a2254),_0x3cb216=fs[_0x31880c(0x1dc)](_0x5e2585);if(_0x3cb216[_0x31880c(0x1c1)]()&&_0x54c967[_0x31880c(0x20f)](_0x4a2254))console[_0x31880c(0x2b2)](_0x31880c(0x22b)+_0x4a2254+'/'),fs['rmSync'](_0x5e2585,{'recursive':!![],'force':!![]});else{if(_0x3cb216[_0x31880c(0x257)]()&&_0x3c3dc7['includes'](_0x4a2254))console[_0x31880c(0x2b2)]('\x20\x20Suppression:\x20'+_0x4a2254),fs['unlinkSync'](_0x5e2585);else _0x3cb216[_0x31880c(0x1c1)]()&&console[_0x31880c(0x2b2)](_0x31880c(0x2d3)+_0x4a2254+'/\x20(non\x20ciblé\x20par\x20le\x20nettoyage)');}}}catch(_0x4764e3){console[_0x31880c(0x258)]('⚠\x20Erreur\x20lors\x20du\x20nettoyage:\x20'+_0x4764e3[_0x31880c(0x2ce)]);}}function makeDir(_0x5ebcff){const _0x50a465=a0_0x16d1d1;!fs['existsSync'](_0x5ebcff)&&fs[_0x50a465(0x2d0)](_0x5ebcff,{'recursive':!![]});}const APK_NAME=path[a0_0x16d1d1(0x28d)](projectDir,appConfig['appName']['replace'](/\s+/g,'')+a0_0x16d1d1(0x1f5));console['log'](a0_0x16d1d1(0x1f3)),cleanBuildDir(BUILD_DIR);if(fs[a0_0x16d1d1(0x1de)](APK_NAME))try{fs[a0_0x16d1d1(0x232)](APK_NAME),console[a0_0x16d1d1(0x2b2)]('✓\x20Supprimé:\x20'+APK_NAME);}catch(a0_0x358767){console[a0_0x16d1d1(0x258)]('⚠\x20Impossible\x20de\x20supprimer\x20'+APK_NAME+a0_0x16d1d1(0x264));}const keystoreName=appConfig[a0_0x16d1d1(0x277)][a0_0x16d1d1(0x2c0)](/\s+/g,'')+a0_0x16d1d1(0x2d2);console['log'](a0_0x16d1d1(0x246));const libsDir=path[a0_0x16d1d1(0x28d)](BUILD_DIR,'libs'),libsExtractedDir=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x1c8));if(fs['existsSync'](libsDir)){const libsCount=fs[a0_0x16d1d1(0x22f)](libsDir)[a0_0x16d1d1(0x2e1)];console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2dd)+libsCount+a0_0x16d1d1(0x1fc));}if(fs[a0_0x16d1d1(0x1de)](libsExtractedDir)){const extractedCount=fs[a0_0x16d1d1(0x22f)](libsExtractedDir)[a0_0x16d1d1(0x2e1)];console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2b7)+extractedCount+a0_0x16d1d1(0x23c));}console[a0_0x16d1d1(0x2b2)]('');const hasDependencies=appConfig[a0_0x16d1d1(0x1c9)]&&(appConfig[a0_0x16d1d1(0x1c9)][a0_0x16d1d1(0x2a3)]&&appConfig[a0_0x16d1d1(0x1c9)][a0_0x16d1d1(0x2a3)][a0_0x16d1d1(0x2e1)]>0x0||appConfig[a0_0x16d1d1(0x1c9)]['custom']&&appConfig[a0_0x16d1d1(0x1c9)][a0_0x16d1d1(0x26f)]['length']>0x0);if(hasDependencies){console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2eb));try{execSync(a0_0x16d1d1(0x27e)+path[a0_0x16d1d1(0x28d)](buildToolsDir,'process-dependencies.js')+'\x22\x20\x22'+projectDir+'\x22',{'stdio':a0_0x16d1d1(0x25f)});}catch(a0_0x2215da){console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x2cb));}console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1ff));try{execSync(a0_0x16d1d1(0x27e)+path[a0_0x16d1d1(0x28d)](buildToolsDir,a0_0x16d1d1(0x26d))+a0_0x16d1d1(0x20a)+projectDir+'\x22',{'stdio':a0_0x16d1d1(0x25f)});}catch(a0_0x4bd633){console['warn'](a0_0x16d1d1(0x2db));}}else console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x209));const extractedJars=hasDependencies?extractClassesFromAARs(BUILD_DIR):[];makeDir(BUILD_DIR),makeDir(BUILD_DIR+a0_0x16d1d1(0x1bc)),makeDir(BUILD_DIR+a0_0x16d1d1(0x213));const stylesDir=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x202),a0_0x16d1d1(0x2bb)),stylesPath=path[a0_0x16d1d1(0x28d)](stylesDir,a0_0x16d1d1(0x21a));try{!fs[a0_0x16d1d1(0x1de)](stylesDir)&&fs[a0_0x16d1d1(0x2d0)](stylesDir,{'recursive':!![]});if(!fs[a0_0x16d1d1(0x1de)](stylesPath)){const defaultStyles=a0_0x16d1d1(0x217)+'<resources>\x0a'+'\x20\x20<style\x20name=\x22AppTheme\x22\x20parent=\x22android:Theme.DeviceDefault.Light.DarkActionBar\x22>\x0a'+'\x20\x20</style>\x0a'+a0_0x16d1d1(0x1d1);fs['writeFileSync'](stylesPath,defaultStyles,a0_0x16d1d1(0x1d8)),console[a0_0x16d1d1(0x2b2)]('✓\x20styles.xml\x20par\x20défaut\x20créé\x20pour\x20éviter\x20les\x20erreurs\x20de\x20thème');}}catch(a0_0x7483df){console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x282),a0_0x7483df['message']);}console['log'](a0_0x16d1d1(0x299));const layoutFiles=fs[a0_0x16d1d1(0x1de)](path[a0_0x16d1d1(0x28d)](RES_DIR,'layout'))?fs['readdirSync'](path['join'](RES_DIR,a0_0x16d1d1(0x240)))[a0_0x16d1d1(0x2e0)](_0xbdad5f=>_0xbdad5f[a0_0x16d1d1(0x276)](a0_0x16d1d1(0x2d7))):[],valueFiles=fs['existsSync'](path[a0_0x16d1d1(0x28d)](RES_DIR,'values'))?fs[a0_0x16d1d1(0x22f)](path[a0_0x16d1d1(0x28d)](RES_DIR,'values'))[a0_0x16d1d1(0x2e0)](_0x58239b=>_0x58239b[a0_0x16d1d1(0x276)]('.xml')):[],allResources=[];for(const file of layoutFiles){console[a0_0x16d1d1(0x2b2)]('\x0a===\x20Compile\x20'+path[a0_0x16d1d1(0x28d)](RES_DIR,a0_0x16d1d1(0x240),file)+a0_0x16d1d1(0x28e));const cmd='\x22'+AAPT2+a0_0x16d1d1(0x237)+BUILD_DIR+a0_0x16d1d1(0x1c4)+path['join'](RES_DIR,a0_0x16d1d1(0x240),file)+'\x22';try{execSync(cmd,{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)});}catch(a0_0x30fa46){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x283)+file+a0_0x16d1d1(0x271));}allResources['push'](RES_DIR+a0_0x16d1d1(0x27a)+file);}for(const file of valueFiles){console['log'](a0_0x16d1d1(0x223)+path[a0_0x16d1d1(0x28d)](RES_DIR,a0_0x16d1d1(0x2bb),file)+a0_0x16d1d1(0x28e));const cmd='\x22'+AAPT2+'\x22\x20compile\x20-o\x20\x22'+BUILD_DIR+a0_0x16d1d1(0x1c4)+path[a0_0x16d1d1(0x28d)](RES_DIR,a0_0x16d1d1(0x2bb),file)+'\x22';try{execSync(cmd,{'stdio':a0_0x16d1d1(0x25f),'shell':'cmd.exe'});}catch(a0_0xba16b0){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x283)+file+a0_0x16d1d1(0x271));}allResources['push'](RES_DIR+a0_0x16d1d1(0x2a0)+file);}for(let mimapDir of fs[a0_0x16d1d1(0x22f)](RES_DIR)[a0_0x16d1d1(0x2e0)](_0x54f15c=>_0x54f15c[a0_0x16d1d1(0x2ac)](a0_0x16d1d1(0x1d3)))){const mimapPath=path['join'](RES_DIR,mimapDir);if(fs[a0_0x16d1d1(0x1dc)](mimapPath)['isDirectory']()){const files=fs[a0_0x16d1d1(0x22f)](mimapPath)['filter'](_0x5abfb0=>_0x5abfb0[a0_0x16d1d1(0x276)](a0_0x16d1d1(0x22c)));for(const file of files){console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x223)+path[a0_0x16d1d1(0x28d)](mimapDir,file)+a0_0x16d1d1(0x28e));const cmd='\x22'+AAPT2+a0_0x16d1d1(0x237)+BUILD_DIR+a0_0x16d1d1(0x1c4)+path['join'](mimapPath,file)+'\x22';try{execSync(cmd,{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)});}catch(a0_0x21c6a7){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x283)+file+'\x20échouée\x20(non\x20critique)');}}}}console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x23e));const resourceExtensions=[a0_0x16d1d1(0x2d7),a0_0x16d1d1(0x22c),a0_0x16d1d1(0x2a6),a0_0x16d1d1(0x2af),a0_0x16d1d1(0x21e),a0_0x16d1d1(0x1d0)];function walkDirForResources(_0x43e50c){const _0xe9ca5b=a0_0x16d1d1,_0x376d2e=[];if(!fs[_0xe9ca5b(0x1de)](_0x43e50c))return _0x376d2e;const _0x116789=fs[_0xe9ca5b(0x22f)](_0x43e50c);for(const _0x25b95d of _0x116789){const _0x53e58f=path[_0xe9ca5b(0x28d)](_0x43e50c,_0x25b95d),_0x2f34ad=fs[_0xe9ca5b(0x1dc)](_0x53e58f);if(_0x2f34ad[_0xe9ca5b(0x1c1)]())_0x376d2e[_0xe9ca5b(0x287)](...walkDirForResources(_0x53e58f));else{const _0x3d3e2b=path['extname'](_0x25b95d)['toLowerCase']();(resourceExtensions[_0xe9ca5b(0x20f)](_0x3d3e2b)||_0x25b95d[_0xe9ca5b(0x276)]('.9.png'))&&_0x376d2e[_0xe9ca5b(0x287)](_0x53e58f);}}return _0x376d2e;}const allResFiles=walkDirForResources(RES_DIR);for(const resFile of allResFiles){console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x223)+resFile+a0_0x16d1d1(0x28e));const compileCmd='\x22'+AAPT2+a0_0x16d1d1(0x237)+path[a0_0x16d1d1(0x28d)](BUILD_DIR,'compiledResources')+'\x22\x20\x22'+resFile+'\x22';try{execSync(compileCmd,{'stdio':'inherit','shell':a0_0x16d1d1(0x27f)});}catch(a0_0x1f3458){console[a0_0x16d1d1(0x258)]('Avertissement:\x20impossible\x20de\x20compiler\x20'+resFile+a0_0x16d1d1(0x219));}}function a0_0x4038(){const _0x59314a=['pop','exit','⚠\x20Aucun\x20fichier\x20Java\x20trouvé\x20—\x20génération\x20de\x20stubs\x20d\x27activité\x20pour\x20éviter\x20les\x20crashes','\x20non\x20trouvé\x20à:\x20','ic_launcher.png','Nettoyage\x20complet\x20de\x20tous\x20les\x20fichiers\x20générés...','\x0a✓\x20Classe\x20extraite\x20pour\x20diagnostic:\x20','.apk','android-34','mipmap-anydpi-v26','Répertoire\x20de\x20génération\x20vérifier:\x20','ERREUR:\x20Impossible\x20de\x20créer\x20le\x20keystore','34.0.0','temp_','\x20fichier(s)\x20dans\x20libs/','Recreating\x20JAR\x20after\x20recompilation','hasJava','\x0aRésolution\x20des\x20dépendances\x20transitives...','\x20-\x20les\x20logs\x20de\x20compilation\x20`javac`\x20pour\x20erreurs','dirname','res','minimalRequiredFiles','writeFileSync','ignore','\x20\x20Extraction:\x20','⚠\x20classes.jar\x20non\x20trouvé\x20dans\x20','minSdkVersion','ℹ️\x20\x20Aucune\x20dépendance\x20déclarée\x20-\x20étape\x20skippée\x0a','\x22\x20\x22','\x20fichiers\x20Java\x20générés\x20par\x20aapt2\x20ajoutés\x20à\x20la\x20compilation','mipmap-xhdpi','Classe\x20problématique\x20détectée:\x20','✓\x20Vérification\x20des\x20activities:\x20toutes\x20les\x20activities\x20du\x20manifest\x20sont\x20présentes\x20dans\x20classes.jar','includes','renameSync','✓\x20Conversion\x20DEX\x20réussie','AndroidManifest.xml','/compiledResources','Temps\x20de\x20build:\x20','\x0a✓\x20Restauration\x20complète!','AAPT2','<?xml\x20version=\x221.0\x22\x20encoding=\x22utf-8\x22?>\x0a','1047879lJSXpY','\x20(non\x20critique)','styles.xml','\x0a--\x20Ignoring\x20missing\x20files\x20due\x20to\x20--ignore-missing','Variable\x20d\x27environnement\x20PROJECT_PATH\x20détectée:\x20','\x0aERREUR:\x20D8\x20a\x20échoué\x20lors\x20de\x20la\x20conversion\x20en\x20DEX.','.webp','\x20\x202.\x20AndroidManifest.xml\x20est-il\x20bien\x20formé?','win32','\x20à\x20','substr','\x0a===\x20Compile\x20','\x22\x20--restore','\x5cjar\x22\x20cvf\x20\x22','✓\x20Aucune\x20activity\x20déclarée\x20dans\x20le\x20manifest\x20à\x20vérifier.','classes.jar','38pUmovH','src','7zip','\x20\x20Suppression:\x20','.png','.class','\x22\x20sign\x20--ks\x20\x22','readdirSync','\x22\x20--java\x20\x22','error','unlinkSync','size','\x20-\x20que\x20les\x20.java\x20existent\x20dans\x20`src/`\x20avec\x20le\x20bon\x20`package`\x20en\x20tête','now','\x0aRemarque:\x20utilisez\x20--fail-on-missing\x20pour\x20faire\x20échouer\x20le\x20build\x20lorsqu\x27un\x20fichier\x20manque,\x20ou\x20--ignore-missing\x20pour\x20continuer.','\x22\x20compile\x20-o\x20\x22','MyApp','mipmap-hdpi','exec','build-tools','\x20fichier(s)\x20dans\x20libs-extracted/','\x22\x20-C\x20\x22','\x0a===\x20Compile\x20récursif\x20des\x20ressources\x20restantes\x20===','Création\x20du\x20keystore...','layout','libs','undefined','---\x0a','\x0a===\x205)\x20CONVERSION\x20EN\x20DEX\x20===','\x22\x20e\x20-y\x20\x22','✓\x20Structure\x20de\x20build\x20recréée\x0a','map','⚠\x207za\x20non\x20trouvé\x20pour\x20','toFixed','\x5cjavap\x22\x20-v\x20\x22','HOME','974288uEHAzX','android.jar','Avertissement:\x20impossible\x20d\x27ajouter\x20les\x20.java\x20générés:','✓\x20Stub\x20activity\x20created:\x20','unsigned.zip','🔄\x20Restauration\x20des\x20fichiers\x20depuis\x20le\x20backup...\x0a','Chemin\x20de\x20sortie\x20APK:\x20','PROJECT_PATH','\x20\x20node\x20build_apk.js\x20/chemin/vers/projet','mipmap-xxhdpi','mac','isFile','warn','\x0a===\x208)\x20SIGNATURE\x20DE\x20L\x27APK\x20===','expected','ERREUR:\x20APK\x20non\x20généré\x20après\x20signature','Avertissement:\x20impossible\x20de\x20créer\x20un\x20stub\x20d\x27activité:','\x20-d\x20\x22','\x20extends\x20Activity\x20{\x0a\x20\x20\x20\x20@Override\x0a\x20\x20\x20\x20protected\x20void\x20onCreate(Bundle\x20savedInstanceState)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20super.onCreate(savedInstanceState);\x0a\x20\x20\x20\x20}\x0a}\x0a','inherit','ERREUR:\x20D8\x20échoue\x20encore\x20après\x20tentative\x20de\x20correction\x20automatique.','✓\x20R.java\x20généré\x20avec\x20succès:\x20','Avertissement:\x20Génération\x20des\x20icônes\x20échouée\x20(non\x20critique\x20pour\x20le\x20build)','Dossier\x20MyApp\x20trouvé\x20par\x20défaut:\x20','\x20(fichier\x20en\x20cours\x20d\x27utilisation)','basename',';\x0a\x0aimport\x20android.app.Activity;\x0aimport\x20android.os.Bundle;\x0a\x0apublic\x20class\x20','Vérifiez:','ERREUR:\x20app-config.json\x20non\x20trouvé\x20dans\x20le\x20projet!','res/values/strings.xml','aligned.apk','missingFiles','generated','resolve-transitive-deps.js','\x22\x20--manifest\x20\x22','custom','\x0aTentative:\x20fichier\x20source\x20généré\x20détecté.\x20Suppression\x20et\x20recompilation.','\x20échouée\x20(non\x20critique)','.flat','activity','app-config.json\x20trouvé\x20dans:\x20','\x20a\x20échoué','endsWith','appName','✓\x20Extrait:\x20','apksigner.bat','/layout/','\x0aERREUR:\x20Certaines\x20activities\x20déclarées\x20dans\x20AndroidManifest.xml\x20sont\x20absentes\x20du\x20JAR:','\x20dépendance(s))\x20===','Aucun\x20fichier\x20.java\x20trouvé\x20après\x20suppression;\x20impossible\x20de\x20recompiler.','node\x20\x22','cmd.exe','Avertissement:\x20AndroidManifest.xml\x20introuvable\x20—\x20vérification\x20sautée','ℹ️\x20\x20Aucun\x20répertoire\x20libs\x20trouvé','Avertissement:\x20impossible\x20de\x20créer\x20styles.xml\x20par\x20défaut:','Avertissement:\x20Compilation\x20de\x20','✓\x20APK\x20signé\x20avec\x20succès','cwd','copyFileSync','push','bin','win','argv','\x0a---\x20javap\x20verbose\x20---','41898fhqtgA','join','\x20===','app-config.json','d8_diagnostics','\x0a===\x20Signing\x20APK\x20===','ERREUR:\x20Génération\x20des\x20ressources\x20échouée','✓\x20Keystore\x20existant\x20réutilisé:\x20','appVersion','Chemin\x20recherché:\x20','7za','.java','rmSync','\x0a===\x201)\x20COMPILING\x20RESOURCES\x20===','\x20-\x20que\x20`generate-resources.js`\x20n\x27a\x20pas\x20supprimé\x20des\x20fichiers\x20importants','build','Erreur\x20durant\x20le\x20diagnostic\x20D8:','sep','Commande:\x20','split','/values/','compiledResources','.aar','androidx','161fzjDtg','arch','.jpg','\x0a⚠\x20Aucune\x20source\x20Java\x20détectée\x20sous\x20`src/`\x20—\x20le\x20build\x20générera\x20des\x20stubs\x20ou\x20utilisera\x20les\x20fichiers\x20générés\x20par\x20aapt2\x20si\x20nécessaire.','.zip','\x20(attendu:\x20','Génération\x20des\x20ressources\x20dynamiques...','\x0a===\x203)\x20COMPILATION\x20DE\x20JAVA\x20===','startsWith','578540toTEwv','\x22\x20--ks-pass\x20pass:123456\x20--min-sdk-version\x20','.jpeg','\x20-\x20','119247INuNcm','log','Détail:\x20','ERREUR:\x20Restauration\x20échouée','x64','ERREUR\x20lors\x20de\x20la\x20vérification\x20des\x20classes\x20dans\x20le\x20JAR:','✓\x20Cache\x20des\x20dépendances\x20extraites\x20préservé:\x20','Package:\x20','\x0a===\x207)\x20ALIGNEMENT\x20DE\x20L\x27APK\x20===','Zipalign','values','\x5cjar\x22\x20tf\x20\x22','android','\x0aERREUR:\x20','\x0aUsage:','replace','ℹ\x20Icônes\x20détectées\x20dans\x20le\x20projet\x20—\x20génération\x20d\x27icônes\x20ignorée\x20(utilisez\x20--force-icons\x20pour\x20forcer)','\x0a===\x204)\x20CRÉATION\x20DU\x20JAR\x20===','⚠\x20classes.dex\x20non\x20trouvé','darwin','✓\x20Existe\x20déjà:\x20','resolve','\x20--out\x20\x22','path','2524lCKkuC','\x20octets','Avertissement:\x20Traitement\x20des\x20dépendances\x20échoué\x20(non\x20critique)','Impossible\x20d\x27exécuter\x20javap\x20sur\x20la\x20classe\x20extraite:','zipalign.exe','message','\x20\x201.\x20Les\x20fichiers\x20XML\x20dans\x20res/values/\x20sont-ils\x20valides?','mkdirSync','\x5cjavac\x22\x20--release\x208\x20-Xlint:-options\x20-cp\x20','.keystore','\x20\x20Préservé:\x20','d8.bat','match','Le\x20fichier\x20source\x20correspondant\x20n\x27est\x20pas\x20un\x20fichier\x20généré\x20par\x20le\x20script.\x20Aucune\x20suppression\x20automatique\x20réalisée.','.xml','ERREUR:\x20Ajout\x20du\x20DEX\x20échoué:\x20','Message\x20d\x27erreur:','ia32','Avertissement:\x20Résolution\x20des\x20dépendances\x20transitives\x20échouée\x20(non\x20critique)','Vérifiez\x20que\x20le\x20SDK\x20Android\x20et\x20JDK\x20sont\x20correctement\x20installés.','✓\x20Cache\x20des\x20dépendances\x20préservé:\x20','--fail-on-missing','classes','filter','length','name','\x22\x20-f\x204\x20\x22','Exécution:\x20','\x22\x20.','⚠\x20Aucun\x20fichier\x20Java\x20trouvé','package\x20','Chemin\x20attendu:\x20','Recompiling\x20Java\x20files\x20after\x20removing\x20generated\x20source','\x0aERREUR:\x20Dossier\x20du\x20projet\x20non\x20trouvé!','Traitement\x20des\x20dépendances...','platform','readFileSync','✓\x20Conversion\x20DEX\x20réussie\x20après\x20correction\x20automatique','unsigned.apk','arm64','\x20--no-backup','Compiling\x20Java\x20files','✓\x20Keystore\x20créé','utf-8','\x0a===\x20Conversion\x20en\x20DEX\x20===','\x22\x20-o\x22','⚠\x20Zipalign\x20échoué,\x20copie\x20directe\x20de\x20unsigned.apk','...','/classes','\x0a===\x20','\x22\x20link\x20-o\x20\x22','7zip-bin','\x0aBuild\x20échouée\x20-\x20APK\x20n\x27est\x20pas\x20généré.','isDirectory','ERREUR:\x20classes.jar\x20introuvable\x20—\x20impossible\x20de\x20vérifier\x20les\x20classes','mipmap-xxxhdpi','/compiledResources\x22\x20\x22','env','7za.exe','generate-resources.js','libs-extracted','dependencies','✓\x20DEX\x20ajouté\x20à\x20l\x27APK','\x20\x20PROJECT_PATH=/chemin/vers/projet\x20node\x20build_apk.js','\x0a✓\x20Build\x20terminé\x20avec\x20succès!','jdk','mipmap-mdpi','JDK','.9.png','</resources>\x0a','pipe','mipmap','\x22\x20\x22*','\x22\x20u\x20-y\x20\x22','packageName','res/layout/activity_main.xml','utf8','Création\x20du\x20JAR','\x0a===\x202)\x20LIAISON\x20DES\x20RESSOURCES\x20===','Cause\x20possible:\x20fichiers\x20res/\x20mal\x20structurés,\x20XML\x20invalides,\x20ou\x20manifest\x20corrompu.','statSync','classes.dex','existsSync','.jar','\x0aERREUR:\x20Fichiers\x20minimaux\x20manquants.\x20Arrêt\x20du\x20build.','aapt2.exe','APKSigner','\x0aERREUR\x20CRITIQUE:\x20R.java\x20n\x27a\x20pas\x20été\x20généré\x20par\x20aapt2\x20link!','--force-icons','Erreur\x20lors\x20de\x20la\x20tentative\x20de\x20correction\x20automatique:','\x22\x20--output\x20\x22','1330108ZcbnoS','substring','\x22\x20-I\x20\x22','Avertissement:\x20erreur\x20lors\x20de\x20la\x20génération\x20des\x20stubs\x20d\x27activité:','Fichier\x20source\x20Java\x20correspondant\x20introuvable:\x20','vendor','timeout\x20/t\x201\x20/nobreak'];a0_0x4038=function(){return _0x59314a;};return a0_0x4038();}console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1da));const apkPath=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x250)),resourcesDir=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x2a1)),generatedDir=path[a0_0x16d1d1(0x2c6)](BUILD_DIR,a0_0x16d1d1(0x26c));if(!fs[a0_0x16d1d1(0x1de)](resourcesDir))fs[a0_0x16d1d1(0x2d0)](resourcesDir,{'recursive':!![]});if(!fs[a0_0x16d1d1(0x1de)](generatedDir))fs[a0_0x16d1d1(0x2d0)](generatedDir,{'recursive':!![]});const compiledFiles=fs[a0_0x16d1d1(0x22f)](resourcesDir)['filter'](_0x2bf29f=>_0x2bf29f['endsWith'](a0_0x16d1d1(0x272))||_0x2bf29f['endsWith'](a0_0x16d1d1(0x2a8)))[a0_0x16d1d1(0x247)](_0x216d01=>path[a0_0x16d1d1(0x28d)](resourcesDir,_0x216d01));console[a0_0x16d1d1(0x2b2)]('Création\x20de\x20la\x20structure\x20APK\x20et\x20génération\x20de\x20R.java...');try{let linkCmd;const manifestPath=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x212));if(compiledFiles['length']>0x0){const compiledArgs=compiledFiles[a0_0x16d1d1(0x247)](_0x5ef129=>'\x22'+_0x5ef129+'\x22')[a0_0x16d1d1(0x28d)]('\x20');linkCmd='\x22'+AAPT2+'\x22\x20link\x20-o\x20\x22'+apkPath+a0_0x16d1d1(0x1e9)+ANDROID_JAR+a0_0x16d1d1(0x26e)+manifestPath+a0_0x16d1d1(0x230)+generatedDir+'\x22\x20'+compiledArgs;}else linkCmd='\x22'+AAPT2+a0_0x16d1d1(0x1be)+apkPath+a0_0x16d1d1(0x1e9)+ANDROID_JAR+a0_0x16d1d1(0x26e)+manifestPath+'\x22\x20--java\x20\x22'+generatedDir+'\x22\x20--auto-add-overlay\x20\x22'+path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x202))+'\x22';console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2e4)+linkCmd['substring'](0x0,0x64)+a0_0x16d1d1(0x1bb)),execSync(linkCmd,{'stdio':a0_0x16d1d1(0x25f),'shell':'cmd.exe'}),console[a0_0x16d1d1(0x2b2)]('✓\x20Ressources\x20liées\x20avec\x20succès');}catch(a0_0x16b5cb){console[a0_0x16d1d1(0x231)]('\x0aERREUR:\x20lien\x20a\x20échoué.\x20R.java\x20n\x27a\x20probablement\x20pas\x20été\x20généré.'),console['error'](a0_0x16d1d1(0x2d9),a0_0x16b5cb[a0_0x16d1d1(0x2ce)]['substring'](0x0,0xc8)),process[a0_0x16d1d1(0x1ef)](0x1);}function findRJava(){const _0x225f85=[];try{const _0x13a670=_0x3b0929=>{const _0x19eca9=a0_0x22b6,_0x1bde16=fs['readdirSync'](_0x3b0929);for(const _0xd45a17 of _0x1bde16){const _0x1ae02a=path['join'](_0x3b0929,_0xd45a17),_0x32ba88=fs[_0x19eca9(0x1dc)](_0x1ae02a);if(_0x32ba88['isDirectory']())_0x13a670(_0x1ae02a);else _0xd45a17==='R.java'&&_0x225f85['push'](_0x1ae02a);}};_0x13a670(generatedDir);}catch(_0x17e78e){}return _0x225f85;}const rJavaFiles=findRJava();function a0_0x22b6(_0x5bc01e,_0x27c71a){_0x5bc01e=_0x5bc01e-0x1af;const _0x40385b=a0_0x4038();let _0x22b6f3=_0x40385b[_0x5bc01e];return _0x22b6f3;}rJavaFiles['length']===0x0&&(console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x1e3)),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x1f8)+generatedDir),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x1db)),console[a0_0x16d1d1(0x231)]('\x0aVérifications\x20à\x20faire:'),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2cf)),console['error'](a0_0x16d1d1(0x21f)),console[a0_0x16d1d1(0x231)]('\x20\x203.\x20Tous\x20les\x20dossiers\x20res/layout/,\x20res/values/,\x20res/mipmap*\x20existent-ils?'),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x1c0)),process[a0_0x16d1d1(0x1ef)](0x1));console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x261)+rJavaFiles[0x0]),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2ab));const javaFiles=[],srcPath=SRC_DIR,findJavaFiles=_0x508b40=>{const _0x457a85=a0_0x16d1d1,_0x5d087d=fs[_0x457a85(0x22f)](_0x508b40);for(const _0x72f940 of _0x5d087d){const _0xbf1e84=path[_0x457a85(0x28d)](_0x508b40,_0x72f940),_0x8e0301=fs[_0x457a85(0x1dc)](_0xbf1e84);if(_0x8e0301[_0x457a85(0x1c1)]())findJavaFiles(_0xbf1e84);else _0x72f940[_0x457a85(0x276)](_0x457a85(0x297))&&javaFiles['push'](_0xbf1e84);}};fs[a0_0x16d1d1(0x1de)](srcPath)&&findJavaFiles(srcPath);const generatedJavaDir=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x26c));if(fs['existsSync'](generatedJavaDir)){const findGeneratedJavaFiles=_0x1be8ea=>{const _0x57c30b=a0_0x16d1d1,_0x5167f6=[],_0x538dfb=fs[_0x57c30b(0x22f)](_0x1be8ea);for(const _0x4fac8c of _0x538dfb){const _0x831cf2=path['join'](_0x1be8ea,_0x4fac8c),_0x361e38=fs[_0x57c30b(0x1dc)](_0x831cf2);if(_0x361e38[_0x57c30b(0x1c1)]())_0x5167f6[_0x57c30b(0x287)](...findGeneratedJavaFiles(_0x831cf2));else _0x4fac8c[_0x57c30b(0x276)](_0x57c30b(0x297))&&_0x5167f6['push'](_0x831cf2);}return _0x5167f6;};try{const genFiles=findGeneratedJavaFiles(generatedJavaDir);genFiles[a0_0x16d1d1(0x2e1)]>0x0&&(javaFiles[a0_0x16d1d1(0x287)](...genFiles),console[a0_0x16d1d1(0x2b2)]('✓\x20'+genFiles['length']+a0_0x16d1d1(0x20b)));}catch(a0_0x31487d){console['warn'](a0_0x16d1d1(0x24e),a0_0x31487d[a0_0x16d1d1(0x2ce)]);}}function ensureActivityStubs(){const _0x37b8f9=a0_0x16d1d1;try{const _0x55fb88=path[_0x37b8f9(0x28d)](projectDir,'AndroidManifest.xml');if(!fs['existsSync'](_0x55fb88))return;const _0x47f5e1=fs[_0x37b8f9(0x1b0)](_0x55fb88,_0x37b8f9(0x1d8)),_0x22a31e=_0x47f5e1[_0x37b8f9(0x2d5)](/<manifest[^>]*\spackage\s*=\s*['"]([^'"]+)['"]/),_0x4c38f7=_0x22a31e?_0x22a31e[0x1]:null,_0xe2d043=/<activity[^>]*android:name\s*=\s*['\"]([^'\"]+)['\"]/g;let _0x1616a1;const _0x403a1d=new Set();while((_0x1616a1=_0xe2d043['exec'](_0x47f5e1))!==null){_0x403a1d['add'](_0x1616a1[0x1]);}if(_0x403a1d[_0x37b8f9(0x233)]===0x0)return;const _0x33bb64=path[_0x37b8f9(0x28d)](BUILD_DIR,_0x37b8f9(0x26c));if(!fs['existsSync'](_0x33bb64))fs[_0x37b8f9(0x2d0)](_0x33bb64,{'recursive':!![]});for(const _0x342ddf of _0x403a1d){let _0x5c2247=_0x342ddf;if(_0x342ddf[_0x37b8f9(0x2ac)]('.')){if(_0x4c38f7)_0x5c2247=_0x4c38f7+_0x342ddf;}else!_0x342ddf[_0x37b8f9(0x20f)]('.')&&_0x4c38f7&&(_0x5c2247=_0x4c38f7+'.'+_0x342ddf);const _0xc60ab4=_0x5c2247[_0x37b8f9(0x29f)]('.'),_0x8e9399=_0xc60ab4['pop'](),_0x589446=_0xc60ab4[_0x37b8f9(0x28d)](path[_0x37b8f9(0x29d)]),_0x21911a=path['join'](_0x33bb64,_0x589446);if(!fs['existsSync'](_0x21911a))fs[_0x37b8f9(0x2d0)](_0x21911a,{'recursive':!![]});const _0x1b91c3=path[_0x37b8f9(0x28d)](_0x21911a,_0x8e9399+_0x37b8f9(0x297));if(!fs[_0x37b8f9(0x1de)](_0x1b91c3)){const _0x2d6b77=_0x37b8f9(0x2e7)+_0xc60ab4[_0x37b8f9(0x28d)]('.')+_0x37b8f9(0x266)+_0x8e9399+_0x37b8f9(0x25e);try{fs[_0x37b8f9(0x204)](_0x1b91c3,_0x2d6b77,'utf8'),console['log'](_0x37b8f9(0x24f)+_0x1b91c3);}catch(_0x3212fa){console['warn'](_0x37b8f9(0x25c),_0x3212fa[_0x37b8f9(0x2ce)]);}}javaFiles[_0x37b8f9(0x287)](_0x1b91c3);}}catch(_0x33e85c){console['warn'](_0x37b8f9(0x1ea),_0x33e85c[_0x37b8f9(0x2ce)]);}}javaFiles['length']===0x0&&(console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x1f0)),ensureActivityStubs());if(javaFiles[a0_0x16d1d1(0x2e1)]===0x0)console['warn'](a0_0x16d1d1(0x2e6));else{let classPathParts=['\x22'+ANDROID_JAR+'\x22'];extractedJars&&extractedJars[a0_0x16d1d1(0x2e1)]>0x0&&classPathParts[a0_0x16d1d1(0x287)](...extractedJars[a0_0x16d1d1(0x247)](_0x502046=>'\x22'+_0x502046+'\x22'));const classPath=classPathParts[a0_0x16d1d1(0x28d)](';'),javaFilesStr=javaFiles[a0_0x16d1d1(0x247)](_0xd86df9=>'\x22'+_0xd86df9+'\x22')[a0_0x16d1d1(0x28d)]('\x20'),compileCmd='\x22'+JDK+a0_0x16d1d1(0x2d1)+classPath+'\x20-d\x20\x22'+path[a0_0x16d1d1(0x28d)](BUILD_DIR,'classes')+'\x22\x20'+javaFilesStr;run(compileCmd,a0_0x16d1d1(0x1b5));}console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x2c2));const classesDir=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x2df)),jarPath=path[a0_0x16d1d1(0x28d)](BUILD_DIR,'classes.jar');if(fs['existsSync'](classesDir)){const jarCmd='\x22'+JDK+a0_0x16d1d1(0x225)+jarPath+a0_0x16d1d1(0x23d)+classesDir+a0_0x16d1d1(0x2e5);run(jarCmd,a0_0x16d1d1(0x1d9));}else console[a0_0x16d1d1(0x258)]('⚠\x20Dossier\x20classes\x20non\x20trouvé');function checkManifestClassesPresentInJar(){const _0x4afaed=a0_0x16d1d1;try{!fs[_0x4afaed(0x1de)](jarPath)&&(console[_0x4afaed(0x231)](_0x4afaed(0x1c2)),process['exit'](0x1));const _0x29630a=path['join'](projectDir,_0x4afaed(0x212));if(!fs[_0x4afaed(0x1de)](_0x29630a)){console[_0x4afaed(0x258)](_0x4afaed(0x280));return;}const _0x56abbc=fs[_0x4afaed(0x1b0)](_0x29630a,_0x4afaed(0x1d8)),_0x3649c1=_0x56abbc[_0x4afaed(0x2d5)](/<manifest[^>]*\spackage\s*=\s*['"]([^'\"]+)['"]/),_0x22be07=_0x3649c1?_0x3649c1[0x1]:appConfig&&appConfig[_0x4afaed(0x1d6)]||null,_0x150d9d=/<activity[^>]*android:name\s*=\s*['\"]([^'\"]+)['\"]/g;let _0x2647dd;const _0x5d0dc4=[];while((_0x2647dd=_0x150d9d[_0x4afaed(0x23a)](_0x56abbc))!==null){let _0x34be31=_0x2647dd[0x1];if(_0x34be31[_0x4afaed(0x2ac)]('.')){if(_0x22be07)_0x34be31=_0x22be07+_0x34be31;}else!_0x34be31[_0x4afaed(0x20f)]('.')&&_0x22be07&&(_0x34be31=_0x22be07+'.'+_0x34be31);_0x5d0dc4[_0x4afaed(0x287)](_0x34be31);}if(_0x5d0dc4[_0x4afaed(0x2e1)]===0x0){console[_0x4afaed(0x2b2)](_0x4afaed(0x226));return;}const _0x5ac955=execSync('\x22'+JDK+_0x4afaed(0x2bc)+jarPath+'\x22',{'encoding':'utf8','stdio':['pipe',_0x4afaed(0x1d2),_0x4afaed(0x205)]}),_0x11df6e=[];for(const _0x545fcb of _0x5d0dc4){const _0x3c23d6=_0x545fcb['replace'](/\./g,'/')+_0x4afaed(0x22d);!_0x5ac955[_0x4afaed(0x20f)](_0x3c23d6)&&_0x11df6e[_0x4afaed(0x287)]({'activity':_0x545fcb,'expected':_0x3c23d6});}if(_0x11df6e['length']>0x0){console['error'](_0x4afaed(0x27b));for(const _0x45d399 of _0x11df6e){console['error'](_0x4afaed(0x2b0)+_0x45d399[_0x4afaed(0x273)]+_0x4afaed(0x2a9)+_0x45d399[_0x4afaed(0x25a)]+')');}console[_0x4afaed(0x231)]('\x0aCause\x20probable:\x20les\x20sources\x20Java\x20n\x27ont\x20pas\x20été\x20trouvées/compilées\x20ou\x20le\x20package\x20des\x20.java\x20ne\x20correspond\x20pas\x20au\x20manifest.'),console[_0x4afaed(0x231)](_0x4afaed(0x267)),console[_0x4afaed(0x231)](_0x4afaed(0x234)),console[_0x4afaed(0x231)](_0x4afaed(0x29a)),console[_0x4afaed(0x231)](_0x4afaed(0x200)),process[_0x4afaed(0x1ef)](0x1);}console[_0x4afaed(0x2b2)](_0x4afaed(0x20e));}catch(_0x50a15b){console['error'](_0x4afaed(0x2b6),_0x50a15b[_0x4afaed(0x2ce)]),process['exit'](0x1);}}checkManifestClassesPresentInJar(),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x244));const dexPath=path['join'](BUILD_DIR,a0_0x16d1d1(0x1dd));if(fs['existsSync'](jarPath)){const jarsForDex=['\x22'+jarPath+'\x22'];typeof extractedJars!==a0_0x16d1d1(0x242)&&extractedJars&&extractedJars['length']>0x0&&jarsForDex[a0_0x16d1d1(0x287)](...extractedJars[a0_0x16d1d1(0x247)](_0x35046b=>'\x22'+_0x35046b+'\x22'));const d8Cmd='\x22'+D8+'\x22\x20--lib\x20\x22'+ANDROID_JAR+a0_0x16d1d1(0x1e6)+BUILD_DIR+'\x22\x20'+jarsForDex['join']('\x20');typeof extractedJars!==a0_0x16d1d1(0x242)&&extractedJars&&extractedJars[a0_0x16d1d1(0x2e1)]>0x0?console['log']('\x0a===\x20Conversion\x20en\x20DEX\x20(avec\x20'+extractedJars[a0_0x16d1d1(0x2e1)]+a0_0x16d1d1(0x27c)):console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1b8));try{execSync(d8Cmd,{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)}),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x211));}catch(a0_0x306442){const msg=a0_0x306442&&a0_0x306442[a0_0x16d1d1(0x2ce)]?a0_0x306442[a0_0x16d1d1(0x2ce)]:String(a0_0x306442),classMatch=msg[a0_0x16d1d1(0x2d5)](/([^:\s]+\.jar):([^:\s]+\.class)/);let problematicClassEntry=null;if(classMatch)problematicClassEntry=classMatch[0x2][a0_0x16d1d1(0x2c0)](/\\\\/g,'/');else{const alt=msg[a0_0x16d1d1(0x2d5)](/(com\/[\w\/-]*\$?[^\s:]*\.class)/);if(alt)problematicClassEntry=alt[0x1];}console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x21d));if(problematicClassEntry){console['error'](a0_0x16d1d1(0x20d)+problematicClassEntry);try{const tmpDir=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x290));if(!fs['existsSync'](tmpDir))fs[a0_0x16d1d1(0x2d0)](tmpDir,{'recursive':!![]});const extractCmd='\x22'+SEVENZIP+a0_0x16d1d1(0x245)+jarPath+'\x22\x20\x22'+problematicClassEntry+a0_0x16d1d1(0x1b9)+tmpDir+'\x22';try{execSync(extractCmd,{'stdio':'inherit','shell':a0_0x16d1d1(0x27f)});}catch(a0_0x31ea59){try{execSync('\x22'+SEVENZIP+a0_0x16d1d1(0x245)+jarPath+a0_0x16d1d1(0x1d4)+path['basename'](problematicClassEntry)+a0_0x16d1d1(0x1b9)+tmpDir+'\x22',{'stdio':'inherit','shell':a0_0x16d1d1(0x27f)});}catch(a0_0x5cd934){}}const extracted=path[a0_0x16d1d1(0x28d)](tmpDir,path['basename'](problematicClassEntry));if(fs['existsSync'](extracted)){console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1f4)+extracted);try{const javapCmd='\x22'+JDK+a0_0x16d1d1(0x24a)+extracted+'\x22';console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x28b)),execSync(javapCmd,{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)}),console['log']('---\x20fin\x20javap\x20---\x0a');}catch(a0_0x2c555b){console['warn'](a0_0x16d1d1(0x2cc),a0_0x2c555b[a0_0x16d1d1(0x2ce)]);}}else console[a0_0x16d1d1(0x258)]('Impossible\x20d\x27extraire\x20la\x20classe\x20pour\x20diagnostic.');}catch(a0_0x5d5719){console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x29c),a0_0x5d5719['message']);}}try{if(problematicClassEntry){const classPathNoDollar=problematicClassEntry[a0_0x16d1d1(0x29f)]('$')[0x0],javaPath=path[a0_0x16d1d1(0x28d)](projectDir,a0_0x16d1d1(0x229),classPathNoDollar['replace'](/\//g,path[a0_0x16d1d1(0x29d)])+a0_0x16d1d1(0x297));if(fs[a0_0x16d1d1(0x1de)](javaPath)){const content=fs[a0_0x16d1d1(0x1b0)](javaPath,a0_0x16d1d1(0x1d8));if(content[a0_0x16d1d1(0x20f)]('//\x20GENERATED_BY_generate-resources')){console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x270)),fs[a0_0x16d1d1(0x232)](javaPath),removeDir(path['join'](BUILD_DIR,a0_0x16d1d1(0x2df))),makeDir(path['join'](BUILD_DIR,a0_0x16d1d1(0x2df)));const javaFilesNow=[],findJavaFilesLocal=_0x21cb06=>{const _0x5645bf=a0_0x16d1d1,_0x53bd58=fs[_0x5645bf(0x22f)](_0x21cb06);for(const _0xaf9823 of _0x53bd58){const _0xca62de=path[_0x5645bf(0x28d)](_0x21cb06,_0xaf9823),_0x4c9076=fs[_0x5645bf(0x1dc)](_0xca62de);if(_0x4c9076[_0x5645bf(0x1c1)]())findJavaFilesLocal(_0xca62de);else{if(_0xaf9823[_0x5645bf(0x276)]('.java'))javaFilesNow[_0x5645bf(0x287)](_0xca62de);}}};if(fs[a0_0x16d1d1(0x1de)](srcPath))findJavaFilesLocal(srcPath);if(fs[a0_0x16d1d1(0x1de)](path['join'](BUILD_DIR,'generated')))findJavaFilesLocal(path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x26c)));if(javaFilesNow['length']>0x0){let classPathArgParts=['\x22'+ANDROID_JAR+'\x22'];extractedJars&&extractedJars[a0_0x16d1d1(0x2e1)]>0x0&&classPathArgParts[a0_0x16d1d1(0x287)](...extractedJars[a0_0x16d1d1(0x247)](_0x1b92c9=>'\x22'+_0x1b92c9+'\x22'));const classPathArg=classPathArgParts[a0_0x16d1d1(0x28d)](';'),javaFilesStr2=javaFilesNow[a0_0x16d1d1(0x247)](_0x85fc0f=>'\x22'+_0x85fc0f+'\x22')[a0_0x16d1d1(0x28d)]('\x20'),compileCmd2='\x22'+JDK+a0_0x16d1d1(0x2d1)+classPathArg+a0_0x16d1d1(0x25d)+path[a0_0x16d1d1(0x28d)](BUILD_DIR,'classes')+'\x22\x20'+javaFilesStr2;run(compileCmd2,a0_0x16d1d1(0x2e9));const jarCmd2='\x22'+JDK+a0_0x16d1d1(0x225)+jarPath+a0_0x16d1d1(0x23d)+classesDir+a0_0x16d1d1(0x2e5);run(jarCmd2,a0_0x16d1d1(0x1fd));try{execSync(d8Cmd,{'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f)}),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1b1));}catch(a0_0x2dfcaa){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x260)),process[a0_0x16d1d1(0x1ef)](0x1);}}else console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x27d)),process[a0_0x16d1d1(0x1ef)](0x1);}else console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x2d6));}else console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x1eb)+javaPath);}}catch(a0_0x43da6a){console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x1e5),a0_0x43da6a[a0_0x16d1d1(0x2ce)]);}process[a0_0x16d1d1(0x1ef)](0x1);}}else console[a0_0x16d1d1(0x258)]('⚠\x20JAR\x20non\x20trouvé,\x20création\x20DEX\x20vide');console[a0_0x16d1d1(0x2b2)]('\x0a===\x206)\x20AJOUT\x20DU\x20DEX\x20À\x20L\x27APK\x20===');try{if(fs[a0_0x16d1d1(0x1de)](dexPath)){const unsignedApkFull=path['resolve'](BUILD_DIR,path[a0_0x16d1d1(0x265)](apkPath)),classesDexFull=path[a0_0x16d1d1(0x2c6)](dexPath),addDexCmd='\x22'+SEVENZIP+a0_0x16d1d1(0x1d5)+unsignedApkFull+'\x22\x20\x22'+classesDexFull+'\x22';execSync(addDexCmd,{'cwd':path[a0_0x16d1d1(0x2c6)](BUILD_DIR),'stdio':a0_0x16d1d1(0x25f),'shell':a0_0x16d1d1(0x27f),'timeout':0xea60}),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1ca));}else console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x2c3));}catch(a0_0x1ce241){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2d8)+a0_0x1ce241[a0_0x16d1d1(0x2ce)]),process[a0_0x16d1d1(0x1ef)](0x1);}console['log'](a0_0x16d1d1(0x2b9));const alignedApkPath=path['join'](BUILD_DIR,a0_0x16d1d1(0x26a)),unsignedApkPath=path[a0_0x16d1d1(0x28d)](BUILD_DIR,a0_0x16d1d1(0x1b2));fs['existsSync'](apkPath)&&fs[a0_0x16d1d1(0x210)](apkPath,unsignedApkPath);try{run('\x22'+ZIPALIGN+a0_0x16d1d1(0x2e3)+unsignedApkPath+a0_0x16d1d1(0x20a)+alignedApkPath+'\x22','Aligning\x20APK');}catch(a0_0x4c2194){console[a0_0x16d1d1(0x258)](a0_0x16d1d1(0x1ba)),fs[a0_0x16d1d1(0x286)](unsignedApkPath,alignedApkPath);}console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x259));const keystorePath=path[a0_0x16d1d1(0x28d)](projectDir,keystoreName);if(!fs[a0_0x16d1d1(0x1de)](keystorePath)){console['log'](a0_0x16d1d1(0x23f));const keygenCmd='\x22'+JDK+'\x5ckeytool\x22\x20-genkey\x20-noprompt\x20-alias\x20key\x20-dname\x20\x22CN='+appConfig['appName']+'\x22\x20-keystore\x20\x22'+keystorePath+'\x22\x20-storepass\x20123456\x20-keypass\x20123456\x20-keyalg\x20RSA\x20-keysize\x202048\x20-validity\x2010000';try{execSync(keygenCmd,{'cwd':projectDir,'stdio':a0_0x16d1d1(0x1d2),'shell':a0_0x16d1d1(0x27f)}),console['log'](a0_0x16d1d1(0x1b6));}catch(a0_0x231a6){console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x1f9)),process[a0_0x16d1d1(0x1ef)](0x1);}}else console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x293)+keystorePath);if(fs[a0_0x16d1d1(0x1de)](alignedApkPath)){const minSdkVersion=appConfig[a0_0x16d1d1(0x208)]||0x15,signCmd='\x22'+APKSIGNER+a0_0x16d1d1(0x22e)+keystorePath+a0_0x16d1d1(0x2ae)+minSdkVersion+a0_0x16d1d1(0x2c7)+APK_NAME+a0_0x16d1d1(0x20a)+alignedApkPath+'\x22';console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x291)),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x29e)+signCmd),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x252)+APK_NAME);try{const output=execSync(signCmd,{'cwd':projectDir,'stdio':a0_0x16d1d1(0x1d2),'shell':a0_0x16d1d1(0x27f),'encoding':a0_0x16d1d1(0x1b7)});console['log'](a0_0x16d1d1(0x284));}catch(a0_0x2b3aae){console[a0_0x16d1d1(0x2b2)]('Note:\x20Avertissements\x20de\x20signature\x20détectés\x20(non-bloquants)'),console[a0_0x16d1d1(0x2b2)]('Détails:\x20'+a0_0x2b3aae[a0_0x16d1d1(0x2ce)][a0_0x16d1d1(0x1e8)](0x0,0xc8));}const maxWait=0xbb8,startWait=Date['now']();while(!fs[a0_0x16d1d1(0x1de)](APK_NAME)&&Date[a0_0x16d1d1(0x235)]()-startWait<maxWait){require('child_process')['execSync'](a0_0x16d1d1(0x1ed),{'shell':a0_0x16d1d1(0x27f)});}if(fs[a0_0x16d1d1(0x1de)](APK_NAME)){const stats=fs['statSync'](APK_NAME),endTime=Date[a0_0x16d1d1(0x235)](),buildTime=((endTime-startTime)/0x3e8)[a0_0x16d1d1(0x249)](0x2);console['log']('\x0a===\x20✓\x20COMPILATION\x20RÉUSSIE\x20==='),console[a0_0x16d1d1(0x2b2)]('APK\x20créé:\x20'+APK_NAME),console[a0_0x16d1d1(0x2b2)]('Taille:\x20'+stats[a0_0x16d1d1(0x233)]+a0_0x16d1d1(0x2ca)),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x214)+buildTime+'s'),console[a0_0x16d1d1(0x2b2)](a0_0x16d1d1(0x1cc));}else console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x25b)),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x2e8)+APK_NAME),console['error']('Fichiers\x20dans\x20le\x20répertoire:',fs[a0_0x16d1d1(0x22f)](projectDir)[a0_0x16d1d1(0x2e0)](_0x2eb84b=>_0x2eb84b[a0_0x16d1d1(0x276)](a0_0x16d1d1(0x1f5)))),process['exit'](0x1);}else console['error']('ERREUR:\x20aligned.apk\x20introuvable'),console[a0_0x16d1d1(0x231)](a0_0x16d1d1(0x295)+alignedApkPath),process[a0_0x16d1d1(0x1ef)](0x1);
|
package/build_tools/builder.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
const _0x4519fb=_0x33ef;(function(_0x30d42a,_0x127da4){const _0x371e65=_0x33ef,_0xd9be08=_0x30d42a();while(!![]){try{const _0x426e9e=parseInt(_0x371e65(0x1d7))/0x1*(-parseInt(_0x371e65(0xf2))/0x2)+parseInt(_0x371e65(0x156))/0x3*(-parseInt(_0x371e65(0x1fd))/0x4)+parseInt(_0x371e65(0xb4))/0x5*(-parseInt(_0x371e65(0xdc))/0x6)+parseInt(_0x371e65(0x180))/0x7*(parseInt(_0x371e65(0x10a))/0x8)+parseInt(_0x371e65(0x187))/0x9+parseInt(_0x371e65(0x119))/0xa*(-parseInt(_0x371e65(0x1fc))/0xb)+parseInt(_0x371e65(0xb9))/0xc;if(_0x426e9e===_0x127da4)break;else _0xd9be08['push'](_0xd9be08['shift']());}catch(_0x4d5d3e){_0xd9be08['push'](_0xd9be08['shift']());}}}(_0x5023,0x89142));const fs=require('fs'),path=require(_0x4519fb(0x167)),{execSync}=require(_0x4519fb(0x1a5)),crypto=require('crypto'),sevenBin=require(path[_0x4519fb(0x1ae)](__dirname,'vendor','7zip-bin')),minimist=require(path['join'](__dirname,_0x4519fb(0x1ad),_0x4519fb(0x208))),jsMetadidomi=require(path[_0x4519fb(0x1ae)](__dirname,_0x4519fb(0x1f7),_0x4519fb(0xd6))),asarPath=path[_0x4519fb(0x1ae)](__dirname,'vendor',_0x4519fb(0x10d));let asar;try{asar=require(asarPath);}catch(_0x4a2b35){console[_0x4519fb(0x1a9)]('[builder]\x20Avertissement:\x20asar\x20non\x20trouvé\x20dans\x20vendor/asar,\x20utilisation\x20de\x20la\x20version\x20npm');try{const asarModule=require('@electron/asar');asar=asarModule;}catch(_0x1890de){console['error'](_0x4519fb(0x165)),process[_0x4519fb(0xeb)](0x1);}}const SEVEN_ZIP_PATH=path[_0x4519fb(0x1ae)](__dirname,_0x4519fb(0x1ad),_0x4519fb(0x1bb),_0x4519fb(0x19d),process[_0x4519fb(0xef)]===_0x4519fb(0x1cb)?_0x4519fb(0x1cb):_0x4519fb(0x1d5),_0x4519fb(0xed)),UPX_PATH=path[_0x4519fb(0x1ae)](__dirname,_0x4519fb(0x1ad),_0x4519fb(0xde),process[_0x4519fb(0x1e0)]==='win32'?_0x4519fb(0x1dd):_0x4519fb(0xde)),SHARP_PATH=path[_0x4519fb(0x1ae)](__dirname,'vendor',_0x4519fb(0xf0)),RCEDIT_PATH=path[_0x4519fb(0x1ae)](__dirname,_0x4519fb(0x1ad),'rcedit'),TMP_PATH=path[_0x4519fb(0x1ae)](__dirname,_0x4519fb(0x1ad),_0x4519fb(0xff));!fs[_0x4519fb(0x10b)](UPX_PATH)&&console[_0x4519fb(0x1a9)]('[builder]\x20UPX\x20non\x20trouvé\x20dans\x20vendor/upx.\x20La\x20compression\x20UPX\x20sera\x20désactivée.');process[_0x4519fb(0x207)]['UPX_PATH']=UPX_PATH;const sharp=require(SHARP_PATH),rcedit=require(RCEDIT_PATH),tmp=require(TMP_PATH),ROOT=path[_0x4519fb(0x17a)](__dirname,'..'),BUILDER_DIR=ROOT,WORK_DIR=process[_0x4519fb(0x197)]();let APP_SRC=WORK_DIR,BUILD=path[_0x4519fb(0x1ae)](WORK_DIR,_0x4519fb(0xc6)),DIST=path[_0x4519fb(0x1ae)](WORK_DIR,_0x4519fb(0x13e));function getTempProtectedDir(){const _0x5bc547=_0x4519fb;return path[_0x5bc547(0x1ae)](WORK_DIR,_0x5bc547(0xc6),'temp_protected_'+Date[_0x5bc547(0x191)]());}const args=minimist(process['argv'][_0x4519fb(0x1c7)](0x2)),PROJECT_TYPE=args[_0x4519fb(0x14b)]||process[_0x4519fb(0x207)][_0x4519fb(0x92)]||_0x4519fb(0x128);console[_0x4519fb(0x20f)]('[builder]\x20Type\x20de\x20projet:\x20'+PROJECT_TYPE),console[_0x4519fb(0x20f)](_0x4519fb(0x147)+JSON['stringify'](args,null,0x2));function isElectronApp(_0x293482){const _0x23a142=_0x4519fb,_0x393fdf=path[_0x23a142(0x1ae)](_0x293482,_0x23a142(0x176));if(!fs[_0x23a142(0x10b)](_0x393fdf))return![];try{const _0x35abe1=JSON[_0x23a142(0x205)](fs['readFileSync'](_0x393fdf,_0x23a142(0x9f)));if(!_0x35abe1['main'])return![];const _0x59813c=[_0x35abe1[_0x23a142(0x95)],_0x35abe1['main'][_0x23a142(0x1d3)](/\.js$/,_0x23a142(0x1c5)),_0x35abe1['main']['replace'](/\.js$/,'.jsc'),_0x23a142(0x139),'main.obf.js',_0x23a142(0xe6),_0x23a142(0xdd),_0x23a142(0x153),_0x23a142(0x133)];for(const _0xa64f9 of _0x59813c){const _0x28a9bb=path['join'](_0x293482,_0xa64f9);if(fs['existsSync'](_0x28a9bb)&&!_0xa64f9[_0x23a142(0x135)]('node_modules')){const _0x1e6f9a=fs[_0x23a142(0x10b)](path[_0x23a142(0x1ae)](_0x293482,_0x23a142(0x160)));if(_0x1e6f9a)return!![];}}if(fs['existsSync'](path[_0x23a142(0x1ae)](_0x293482,_0x23a142(0x160)))){const _0x269e69=fs[_0x23a142(0x1a7)](_0x293482),_0x1e206b=_0x269e69[_0x23a142(0x14f)](_0x3f08a0=>_0x3f08a0[_0x23a142(0x144)]('main')&&(_0x3f08a0[_0x23a142(0x1b5)](_0x23a142(0x1ce))||_0x3f08a0[_0x23a142(0x1b5)]('.obf.js')||_0x3f08a0[_0x23a142(0x1b5)](_0x23a142(0x123))||_0x3f08a0[_0x23a142(0x1b5)](_0x23a142(0xf3))||_0x3f08a0[_0x23a142(0x1b5)]('.ts')));if(_0x1e206b)return!![];}return![];}catch(_0x360d70){return![];}}const isBuilderDir=path[_0x4519fb(0x17a)](WORK_DIR)===path['resolve'](BUILDER_DIR)||path[_0x4519fb(0x17a)](WORK_DIR)===path[_0x4519fb(0x17a)](path[_0x4519fb(0x1ae)](BUILDER_DIR,_0x4519fb(0x20d)))||path[_0x4519fb(0xc1)](WORK_DIR)==='build_tools'&&path[_0x4519fb(0xe5)](WORK_DIR)===BUILDER_DIR;function _0x33ef(_0x2ae0a7,_0x28f2fd){const _0x502350=_0x5023();return _0x33ef=function(_0x33efe2,_0x502848){_0x33efe2=_0x33efe2-0x91;let _0x2ce346=_0x502350[_0x33efe2];return _0x2ce346;},_0x33ef(_0x2ae0a7,_0x28f2fd);}if(args[_0x4519fb(0x185)]){const customAppSrc=args[_0x4519fb(0x185)];APP_SRC=path['isAbsolute'](customAppSrc)?customAppSrc:path[_0x4519fb(0x17a)](customAppSrc),!fs[_0x4519fb(0x10b)](APP_SRC)&&(console['error'](_0x4519fb(0xea)+APP_SRC),process[_0x4519fb(0xeb)](0x1)),console['log'](_0x4519fb(0x12b)+APP_SRC);}else!isBuilderDir?(APP_SRC=WORK_DIR,console['log'](_0x4519fb(0x175)+APP_SRC)):(console[_0x4519fb(0xbd)](_0x4519fb(0xa3)),console[_0x4519fb(0xbd)](_0x4519fb(0x174)),process[_0x4519fb(0xeb)](0x1));if(args['output']||args[_0x4519fb(0x101)]){const customOutput=args['output']||args[_0x4519fb(0x101)];DIST=path[_0x4519fb(0x16e)](customOutput)?customOutput:path[_0x4519fb(0x17a)](customOutput),BUILD=path[_0x4519fb(0x1ae)](DIST,_0x4519fb(0xc6)),console[_0x4519fb(0x20f)](_0x4519fb(0x212)+DIST);}else console['log']('[builder]\x20Utilisation\x20du\x20dossier\x20de\x20sortie\x20par\x20défaut:\x20'+DIST);function findElectronDist(){const _0x3ada6f=_0x4519fb,_0x26d38a=[path[_0x3ada6f(0x1ae)](ROOT,'node_modules',_0x3ada6f(0x200),_0x3ada6f(0x13e)),path[_0x3ada6f(0x1ae)](path[_0x3ada6f(0xe5)](ROOT),_0x3ada6f(0xaf),_0x3ada6f(0x200),'dist'),path[_0x3ada6f(0x1ae)](path['dirname'](ROOT),'..',_0x3ada6f(0xaf),_0x3ada6f(0x200),_0x3ada6f(0x13e))];for(const _0xbc0743 of _0x26d38a){if(fs['existsSync'](_0xbc0743))return console[_0x3ada6f(0x20f)](_0x3ada6f(0xfb)+_0xbc0743),_0xbc0743;}return console[_0x3ada6f(0x1a9)](_0x3ada6f(0x17e)),null;}const ELECTRON_DIST=findElectronDist(),KEY=process[_0x4519fb(0x207)]['KEY']||crypto[_0x4519fb(0xe4)](0x10)[_0x4519fb(0xd5)](_0x4519fb(0x1e1));process[_0x4519fb(0x207)][_0x4519fb(0x96)]?console[_0x4519fb(0x20f)](_0x4519fb(0x134)+process[_0x4519fb(0x207)][_0x4519fb(0x96)][_0x4519fb(0x17f)](0x0,0x8)+_0x4519fb(0xd7)):console['log'](_0x4519fb(0x1b2)+KEY);const CREATE_INSTALLER=process[_0x4519fb(0x207)]['CREATE_INSTALLER']===_0x4519fb(0x1bc),LITE_BUILD=process[_0x4519fb(0x207)][_0x4519fb(0x1d2)]===_0x4519fb(0x1bc),USE_UPX=process[_0x4519fb(0x207)]['USE_UPX']===_0x4519fb(0x1bc),NO_PROTECTION=process[_0x4519fb(0x207)][_0x4519fb(0x129)]==='true',PROTECTION_LEVEL=process[_0x4519fb(0x207)][_0x4519fb(0x1ee)]||_0x4519fb(0x9c);![_0x4519fb(0x1ec),_0x4519fb(0x9c)][_0x4519fb(0x135)](PROTECTION_LEVEL)&&(console[_0x4519fb(0xbd)](_0x4519fb(0xa1)+PROTECTION_LEVEL),console['error']('[builder]\x20Valeurs\x20acceptées:\x20light,\x20medium'),process[_0x4519fb(0xeb)](0x1));NO_PROTECTION?(console[_0x4519fb(0x20f)](_0x4519fb(0x11e)),console[_0x4519fb(0x20f)]('[builder]\x20⚠️\x20\x20AVERTISSEMENT:\x20Ce\x20mode\x20n\x27est\x20recommandé\x20que\x20pour\x20le\x20développement!')):console[_0x4519fb(0x20f)](_0x4519fb(0x1f4)+PROTECTION_LEVEL[_0x4519fb(0x146)]());function getCodeSigningConfig(){const _0x22083c=_0x4519fb,_0x33733d=path[_0x22083c(0x1ae)](APP_SRC,_0x22083c(0x176));if(fs[_0x22083c(0x10b)](_0x33733d))try{const _0x13d683=JSON[_0x22083c(0x205)](fs['readFileSync'](_0x33733d,_0x22083c(0x9f)));if(_0x13d683['build']?.[_0x22083c(0x19d)]?.['certificateFile']){const _0x7ca2ff=_0x13d683[_0x22083c(0x193)][_0x22083c(0x19d)][_0x22083c(0x142)],_0x4e4792=path[_0x22083c(0x16e)](_0x7ca2ff)?_0x7ca2ff:path[_0x22083c(0x1ae)](APP_SRC,_0x7ca2ff);return{'certificateFile':_0x4e4792,'certificatePassword':_0x13d683['build']?.[_0x22083c(0x19d)]?.[_0x22083c(0x196)],'signWithParams':_0x13d683[_0x22083c(0x193)]?.[_0x22083c(0x19d)]?.[_0x22083c(0x170)]};}}catch(_0x435e4b){console['warn']('[builder]\x20Erreur\x20lors\x20de\x20la\x20lecture\x20de\x20la\x20configuration\x20de\x20signature\x20dans\x20package.json:',_0x435e4b[_0x22083c(0xb5)]);}console[_0x22083c(0x20f)](_0x22083c(0xa9));try{const _0x416867=path[_0x22083c(0x1ae)](__dirname,_0x22083c(0x1cc));ensureDir(_0x416867);const _0x3e9bcf=getAppInfo(),_0x40647a=crypto[_0x22083c(0x1a1)](_0x22083c(0xcc))['update'](_0x3e9bcf[_0x22083c(0x11d)]+_0x3e9bcf[_0x22083c(0xa4)]+_0x3e9bcf['author'])[_0x22083c(0x1c1)](_0x22083c(0x1e1))[_0x22083c(0x17f)](0x0,0x8),_0x13d294=path[_0x22083c(0x1ae)](_0x416867,_0x22083c(0x1db)+_0x40647a+_0x22083c(0x209)),_0x2ff342=path[_0x22083c(0x1ae)](_0x416867,_0x22083c(0x1db)+_0x40647a+'.key');let _0x18adc5;if(!fs[_0x22083c(0x10b)](_0x13d294)){_0x18adc5=crypto[_0x22083c(0xe4)](0x20)[_0x22083c(0xd5)]('base64')[_0x22083c(0x1d3)](/[/+=]/g,'')[_0x22083c(0x17f)](0x0,0x20);const _0x5173e6=crypto[_0x22083c(0xce)](_0x3e9bcf[_0x22083c(0x11d)]+_0x3e9bcf['version'],crypto[_0x22083c(0xe4)](0x20),0x20),_0x41455d=crypto[_0x22083c(0xe4)](0x10),_0x1345e4=crypto[_0x22083c(0x1a3)](_0x22083c(0xcd),_0x5173e6,_0x41455d),_0x2607df=Buffer[_0x22083c(0x11a)]([_0x1345e4['update'](_0x18adc5,_0x22083c(0x9f)),_0x1345e4[_0x22083c(0x14e)]()]),_0xbe0cbc=_0x1345e4[_0x22083c(0xaa)]();fs[_0x22083c(0x99)](_0x2ff342,JSON[_0x22083c(0x1d0)]({'iv':_0x41455d['toString'](_0x22083c(0x1e1)),'key':_0x5173e6[_0x22083c(0xd5)](_0x22083c(0x1e1)),'data':_0x2607df[_0x22083c(0xd5)]('hex'),'tag':_0xbe0cbc[_0x22083c(0xd5)](_0x22083c(0x1e1))}));}else{const _0x24b7e8=JSON[_0x22083c(0x205)](fs[_0x22083c(0x1e3)](_0x2ff342,'utf8')),_0xcf8a33=crypto[_0x22083c(0x145)](_0x22083c(0xcd),Buffer[_0x22083c(0x1f9)](_0x24b7e8[_0x22083c(0xf4)],_0x22083c(0x1e1)),Buffer[_0x22083c(0x1f9)](_0x24b7e8['iv'],_0x22083c(0x1e1)));_0xcf8a33[_0x22083c(0x13a)](Buffer[_0x22083c(0x1f9)](_0x24b7e8['tag'],_0x22083c(0x1e1))),_0x18adc5=Buffer[_0x22083c(0x11a)]([_0xcf8a33['update'](Buffer['from'](_0x24b7e8['data'],_0x22083c(0x1e1))),_0xcf8a33['final']()])[_0x22083c(0xd5)](_0x22083c(0x9f));}if(!fs[_0x22083c(0x10b)](_0x13d294)){const _0x51b0a2=path[_0x22083c(0x1ae)](__dirname,'vendor',_0x22083c(0x190)),_0x185e49=path[_0x22083c(0x1ae)](_0x51b0a2,_0x22083c(0xca));!fs[_0x22083c(0x10b)](_0x185e49)&&console[_0x22083c(0x20f)](_0x22083c(0x15f));let _0x25e8e2=![];if(_0x25e8e2){console['log'](_0x22083c(0xbf));const _0x4189f4=getAppInfo(),_0x5db3c9=['\x22'+_0x185e49+_0x22083c(0x1c0)+path['join'](_0x416867,_0x22083c(0x108))+'\x22\x202048','\x22'+_0x185e49+'\x22\x20req\x20-new\x20-key\x20\x22'+path['join'](_0x416867,_0x22083c(0x108))+_0x22083c(0x1d6)+path[_0x22083c(0x1ae)](_0x416867,'cert.csr')+_0x22083c(0x20a)+_0x4189f4[_0x22083c(0x1c6)]+'/CN='+_0x4189f4[_0x22083c(0x11d)]+'\x22','\x22'+_0x185e49+_0x22083c(0x1f8)+path['join'](_0x416867,_0x22083c(0xb2))+_0x22083c(0xfc)+path[_0x22083c(0x1ae)](_0x416867,_0x22083c(0x108))+_0x22083c(0x1d6)+path['join'](_0x416867,_0x22083c(0x132))+'\x22',_0x22083c(0x16b)+_0x13d294+'\x22\x20-inkey\x20\x22'+path['join'](_0x416867,_0x22083c(0x108))+'\x22\x20-in\x20\x22'+path[_0x22083c(0x1ae)](_0x416867,_0x22083c(0x132))+_0x22083c(0x166)+_0x18adc5];for(const _0x58eae7 of _0x5db3c9){execSync(_0x58eae7,{'stdio':'inherit'});}fs[_0x22083c(0x1a8)](path[_0x22083c(0x1ae)](_0x416867,_0x22083c(0x108))),fs[_0x22083c(0x1a8)](path[_0x22083c(0x1ae)](_0x416867,_0x22083c(0xb2))),fs[_0x22083c(0x1a8)](path['join'](_0x416867,_0x22083c(0x132)));}else{console[_0x22083c(0x20f)](_0x22083c(0x11c));const _0xa89ae2=getAppInfo();try{const _0x24196b=path['join'](_0x416867,_0x22083c(0x1f1)),_0x14c13f=_0x22083c(0x140)+_0xa89ae2[_0x22083c(0x11d)]+_0x22083c(0x9d)+_0x18adc5+_0x22083c(0x1ab)+_0x13d294[_0x22083c(0x1d3)](/\\/g,'\x5c\x5c')+_0x22083c(0xac);fs[_0x22083c(0x99)](_0x24196b,_0x14c13f),execSync(_0x22083c(0xd2)+_0x24196b+'\x22',{'stdio':_0x22083c(0x211)}),fs[_0x22083c(0x1a8)](_0x24196b);if(!fs[_0x22083c(0x10b)](_0x13d294))throw new Error('Le\x20certificat\x20n\x27a\x20pas\x20été\x20généré\x20correctement');console[_0x22083c(0x20f)]('[builder]\x20Certificat\x20auto-signé\x20généré\x20avec\x20succès');}catch(_0x3de1dd){return console[_0x22083c(0x1a9)](_0x22083c(0x1dc),_0x3de1dd[_0x22083c(0xb5)]),null;}}}return{'certificateFile':_0x13d294,'certificatePassword':_0x18adc5,'signWithParams':null};}catch(_0xba12cf){return console[_0x22083c(0x1a9)](_0x22083c(0xbc),_0xba12cf[_0x22083c(0xb5)]),null;}}function ensureDir(_0x1b3f44){const _0x4210f5=_0x4519fb;if(!fs[_0x4210f5(0x10b)](_0x1b3f44))fs['mkdirSync'](_0x1b3f44,{'recursive':!![]});}function rmdir(_0x364d7a){const _0x2f400e=_0x4519fb;if(fs[_0x2f400e(0x10b)](_0x364d7a))fs['rmSync'](_0x364d7a,{'recursive':!![],'force':!![]});}function findIconPath(){const _0x2a58d6=_0x4519fb,_0x2f08ce=[path[_0x2a58d6(0x1ae)](APP_SRC,_0x2a58d6(0x1bf)),path['join'](APP_SRC,'assets','icon.ico')];for(const _0x3786cd of _0x2f08ce){if(fs[_0x2a58d6(0x10b)](_0x3786cd))return console['log'](_0x2a58d6(0x124)+_0x3786cd),_0x3786cd;}return console[_0x2a58d6(0x1a9)]('[builder]\x20⚠️\x20\x20Aucune\x20icône\x20trouvée\x20(cherché\x20dans\x20racine\x20et\x20assets/)'),null;}function generateAppFiles(){const _0x455b7d=_0x4519fb;console['log']('[builder]\x20Génération\x20des\x20fichiers\x20de\x20démo\x20dans\x20le\x20répertoire\x20courant...'),console[_0x455b7d(0x20f)](_0x455b7d(0x10e));const _0x541994=WORK_DIR,_0x15e3aa=path['join'](_0x541994,_0x455b7d(0x176));if(!fs[_0x455b7d(0x10b)](_0x15e3aa)){console[_0x455b7d(0x20f)]('[builder]\x20Génération\x20de\x20package.json');const _0x239e97={'name':_0x455b7d(0xe9),'productName':_0x455b7d(0xfd),'version':_0x455b7d(0x15e),'description':_0x455b7d(0x1aa),'main':'main.js','author':_0x455b7d(0x13f),'copyright':'©\x20'+new Date()[_0x455b7d(0x184)]()+_0x455b7d(0x1e7),'dependencies':{'electron':_0x455b7d(0xd9)}};fs['writeFileSync'](_0x15e3aa,JSON['stringify'](_0x239e97,null,0x2));}const _0x436f3f=path[_0x455b7d(0x1ae)](_0x541994,_0x455b7d(0x139)),_0x1c4c0c=path[_0x455b7d(0x1ae)](_0x541994,_0x455b7d(0x125));if(!fs['existsSync'](_0x436f3f)&&!fs['existsSync'](_0x1c4c0c)){console[_0x455b7d(0x20f)](_0x455b7d(0xdf));const _0x2767d4=_0x455b7d(0x1f3);fs['writeFileSync'](_0x436f3f,_0x2767d4);}const _0x452caf=path[_0x455b7d(0x1ae)](_0x541994,_0x455b7d(0xdd)),_0x4cbdab=path['join'](_0x541994,_0x455b7d(0x153));if(!fs['existsSync'](_0x452caf)&&!fs[_0x455b7d(0x10b)](_0x4cbdab)){console[_0x455b7d(0x20f)](_0x455b7d(0x1b9));const _0x579b97=_0x455b7d(0x177);fs[_0x455b7d(0x99)](_0x452caf,_0x579b97);}const _0x43d365=path[_0x455b7d(0x1ae)](_0x541994,_0x455b7d(0x160));if(!fs[_0x455b7d(0x10b)](_0x43d365)){console[_0x455b7d(0x20f)]('[builder]\x20Génération\x20de\x20index.html');const _0x155669='<!DOCTYPE\x20html>\x0a<html>\x0a<head>\x0a\x20\x20\x20\x20<meta\x20charset=\x22UTF-8\x22>\x0a\x20\x20\x20\x20<title>MonApp</title>\x0a\x20\x20\x20\x20<style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20body\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20Arial,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#f0f0f0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20.titlebar\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x2030px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#2f3241;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-webkit-app-region:\x20drag;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user-select:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20.titlebar-title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#ffffff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20.titlebar-controls\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20-webkit-app-region:\x20no-drag;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20.titlebar-button\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2030px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x2030px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#ffffff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20.titlebar-button:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(255,255,255,0.1);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20.titlebar-button.close:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#e81123;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20.content\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20</style>\x0a</head>\x0a<body>\x0a\x20\x20\x20\x20<div\x20class=\x22titlebar\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22titlebar-title\x22>MonApp</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22titlebar-controls\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22titlebar-button\x20minimize\x22\x20onclick=\x22electron.minimize()\x22>_</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22titlebar-button\x20maximize\x22\x20onclick=\x22electron.maximize()\x22>□</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22titlebar-button\x20close\x22\x20onclick=\x22electron.close()\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<h1>MonApp</h1>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>Application\x20Electron\x20prête\x20à\x20l\x27emploi.</p>\x0a\x20\x20\x20\x20</div>\x0a</body>\x0a</html>';fs[_0x455b7d(0x99)](_0x43d365,_0x155669);}const _0x473ef1=path[_0x455b7d(0x1ae)](_0x541994,_0x455b7d(0x188));return ensureDir(_0x473ef1),console['log'](_0x455b7d(0x1de)),_0x541994;}function _0x5023(){const _0x1e0c44=['electron','copyright','[builder]\x20📦\x20Création\x20de\x20resources/app.asar\x20avec\x20tous\x20les\x20fichiers\x20protégés...','temp.7z','Modules\x20exclus','parse','[builder]\x20Mode\x20LITE:\x20Analyse\x20des\x20dépendances...','env','minimist','.pfx','\x22\x20-subj\x20\x22/C=FR/ST=France/L=Paris/O=','[builder]\x20création\x20de\x20l\x27exécutable\x20portable','.exe','build_tools','[builder]\x20Continuation\x20avec\x20les\x20fichiers\x20présents...','log','[builder]\x20-\x20Script:','inherit','[builder]\x20Dossier\x20de\x20sortie\x20personnalisé:\x20','[builder]\x20Métadonnées\x20appliquées\x20avec\x20succès','nsis-3.09','PROJECT_TYPE','[builder]\x20Installateur\x20créé.','rcedit','main','KEY','trim','templates','writeFileSync','[builder]\x20Erreur\x20lors\x20de\x20la\x20suppression\x20de\x20.build-temp:','[builder]\x20✅\x20Distribution\x20Electron\x20copiée\x20(default_app\x20exclu)','medium','\x20Code\x20Signing\x22\x20-KeyExportPolicy\x20Exportable\x20-KeySpec\x20Signature\x20-KeyLength\x202048\x20-Type\x20CodeSigningCert\x20-CertStoreLocation\x20\x22Cert:\x5cCurrentUser\x5cMy\x22\x20-NotAfter\x20(Get-Date).AddYears(2)\x0a$pwd\x20=\x20ConvertTo-SecureString\x20-String\x20\x22','\x0a[builder]\x20Rapport\x20Electron\x20Lite\x20:\x0a','utf8','alloc','[builder]\x20ERREUR:\x20PROTECTION_LEVEL\x20invalide:\x20','main.ts','[builder]\x20ERREUR:\x20Le\x20builder\x20doit\x20être\x20exécuté\x20depuis\x20le\x20répertoire\x20de\x20votre\x20application.','version','.next','push','win32','find','[builder]\x20Aucune\x20configuration\x20de\x20signature\x20trouvée,\x20création\x20d\x27un\x20certificat\x20auto-signé...','getAuthTag','[builder]\x20Ajout\x20du\x20watermark\x20et\x20calcul\x20du\x20HMAC','\x22\x0a#\x20Export\x20the\x20certificate\x20(force\x20overwrite\x20if\x20exists)\x0aExport-PfxCertificate\x20-Cert\x20$cert\x20-FilePath\x20$certPath\x20-Password\x20$pwd\x20-Force\x0a#\x20Remove\x20the\x20temporary\x20certificate\x20from\x20the\x20store\x20to\x20avoid\x20leaving\x20traces\x0aRemove-Item\x20-Path\x20\x22Cert:\x5cCurrentUser\x5cMy\x5c$($cert.Thumbprint)\x22\x20-Force\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','renameSync','[builder]\x20exécutable\x20portable\x20créé\x20à\x20:','node_modules','license.txt','node\x20\x22','cert.csr','default_app','393065LIHiCG','message','[builder]\x20✅\x20Fichiers\x20protégés\x20copiés\x20dans\x20le\x20contenu\x20ASAR','http://timestamp.digicert.com','bugs','26213304TpHhRg','main.*','\x20\x20-\x20','[builder]\x20Erreur\x20lors\x20de\x20la\x20création\x20du\x20certificat\x20auto-signé:','error','installer.gif','[builder]\x20Génération\x20du\x20certificat\x20auto-signé\x20avec\x20OpenSSL...','total','basename','preload.ts','resources.bin','[builder]\x20création\x20de\x20l\x27installateur','\x20restent\x20inchangés\x20et\x20prêts\x20pour\x20modification','.build-temp','upx_advanced.js','statSync','electron-lite-deps-report.txt','openssl.exe','\x20Application','sha256','aes-256-gcm','scryptSync','[builder]\x20copie\x20de\x20la\x20distribution\x20electron','description','[builder]\x20Erreur\x20lors\x20de\x20l\x27ajout\x20du\x20watermark:','powershell\x20-ExecutionPolicy\x20Bypass\x20-File\x20\x22','packageName','[builder]\x20Dossier\x20.build-temp\x20supprimé\x20dans\x20','toString','jsMetadidomi.js','...\x20(masquée)','NSIS\x20non\x20trouvé\x20après\x20installation\x20à:\x20','^39.1.1','forEach','[builder]\x20📦\x20Empaquetage\x20du\x20contenu\x20dans\x20app.asar...','36nxYUoU','preload.js','upx','[builder]\x20Génération\x20de\x20main.js','preload.obf.ts','https://downloads.sourceforge.net/project/nsis/NSIS%203/3.09/nsis-3.09.zip','Installateur\x20non\x20trouvé:\x20','signing','randomBytes','dirname','main.jsc','Package:\x20','validateAllowedModules','mon-app-electron','[builder]\x20ERREUR:\x20Dossier\x20source\x20personnalisé\x20introuvable:\x20','exit','string','7za.exe','[builder]\x20Application\x20de\x20l\x27icône\x20initiale...','arch','sharp','signtool.exe','22298QYXZOa','.obf.ts','key','length','.idea','/docs','Thumbs.db','[builder]\x20Échec\x20de\x20la\x20compression\x20avancée:','filter','[builder]\x20Distribution\x20Electron\x20trouvée\x20:\x20','\x22\x20-signkey\x20\x22','MonApp','[builder]\x20Attention:\x20Échec\x20de\x20l\x27application\x20des\x20dépendances\x20LITE:','tmp','[builder]\x20⏭️\x20\x20Protection\x20DÉSACTIVÉE\x20(NO_PROTECTION=true)','out','\x22\x20\x22','index.htm','[builder]\x20-\x20NSIS:','-Setup-','[builder]\x20✅\x20Fichiers\x20originaux\x20restent\x20intacts\x20dans:\x20','[builder]\x20empaquetage\x20récursif\x20de\x20app_src\x20vers\x20app.asar','private.key','[builder]\x20Archive\x20NSIS\x20déjà\x20présente,\x20utilisation\x20du\x20fichier\x20existant','88yGtyat','existsSync','[builder]\x20✅\x20Protection\x20contextBridge\x20validée\x20(preload.js\x20sécurisé)','asar','[builder]\x20📋\x20Formats\x20supportés:\x20.js,\x20.obf.js\x20(obfusqué),\x20.jsc\x20(bytecode),\x20.ts','[builder]\x20Application\x20des\x20métadonnées\x20avec\x20rcedit...','/td','makensis.exe','electron-packager','[builder]\x20Construction\x20complète\x20terminée\x20avec\x20succès.','[builder]\x20✅\x20Fichiers\x20sources\x20copiés\x20(les\x20originaux\x20restent\x20intacts\x20dans:\x20','[builder]\x20✅\x20Collected\x20','[builder]\x20préparation\x20du\x20template\x20bootstrap','bootstrap.template.js','[builder]\x20Compression\x20et\x20tests\x20terminés\x20avec\x20succès','10rcENvO','concat','execFileSync','[builder]\x20Génération\x20d\x27un\x20certificat\x20auto-signé\x20avec\x20PowerShell...','productName','[builder]\x20🔓\x20MODE\x20SANS\x20PROTECTION:\x20Toutes\x20les\x20protections\x20sont\x20désactivées\x20SAUF\x20la\x20signature\x20du\x20code','toLowerCase','bootstrap.js','[builder]\x20chiffrement\x20de\x20app.asar\x20->\x20resources.bin','[builder]\x20🛡️\x20\x20Protection\x20des\x20fichiers\x20JS/HTML\x20via\x20jsMetadidomi...','.jsc','[builder]\x20✓\x20Icône\x20trouvée:\x20','main.obf.js','map','prune_modules.js','standard','NO_PROTECTION','[builder]\x20🔍\x20Vérification\x20de\x20la\x20sécurité\x20du\x20preload.js...','[builder]\x20Utilisation\x20du\x20dossier\x20source\x20personnalisé:\x20','win-unpacked','[builder]\x20Utilisation\x20du\x20mécanisme\x20de\x20signature\x20par\x20défaut','resources','[builder]\x20Échec\x20de\x20la\x20création\x20de\x20l\x27exécutable\x20:','[builder]\x20📦\x20Copie\x20du\x20dossier\x20modules/\x20pour\x20Kamerleon...','[builder]\x20✅\x20Protection\x20de\x20sécurité\x20injectée\x20dans\x20preload.js','cert.crt','preload.jsc','[builder]\x20Clé\x20de\x20chiffrement\x20fournie:\x20','includes','modules','copyFileSync','config.build.yaml','main.js','setAuthTag','[builder]\x20Démarrage\x20de\x20la\x20construction...','[builder]\x20ATTENTION\x20:\x20CLÉ\x20non\x20fournie.\x20Les\x20ressources\x20ne\x20seront\x20pas\x20chiffrées\x20de\x20manière\x20sécurisée.','[builder]\x20Création\x20de\x20l\x27exécutable\x20portable\x20ignorée\x20(définir\x20CREATE_PORTABLE_EXE=true\x20pour\x20le\x20créer)','dist','Votre\x20Entreprise','\x0a$cert\x20=\x20New-SelfSignedCertificate\x20-Subject\x20\x22CN=','[builder]\x20Application\x20de\x20la\x20compression\x20avancée...','certificateFile','échec\x20de\x20l\x27empaquetage\x20de\x20l\x27application\x20:','startsWith','createDecipheriv','toUpperCase','[builder]\x20Arguments\x20détectés:\x20','[builder]\x20✓\x20Fichiers\x20d\x27application\x20détectés\x20dans:\x20','isDirectory','allowedModules','projet-type','dev-key','app.asar','final','some','toISOString','\x0a//\x20🔐\x20SÉCURITÉ\x20AUTO-INJECTÉE:\x20Protection\x20contextBridge\x0a//\x20Cette\x20section\x20a\x20été\x20automatiquement\x20ajoutée\x20par\x20le\x20builder\x20pour\x20sécuriser\x20l\x27accès\x20aux\x20modules\x20Node.js\x0a//\x20[MARKER:\x20DO\x20NOT\x20DUPLICATE\x20THIS\x20INJECTION]\x0a\x0a//\x20Vérifier\x20que\x20contextBridge\x20est\x20utilisé\x20correctement\x0aif\x20(typeof\x20contextBridge\x20===\x20\x27undefined\x27)\x20{\x0a\x20\x20throw\x20new\x20Error(\x27[SECURITY]\x20contextBridge\x20non\x20disponible\x20-\x20preload.js\x20doit\x20s\x27exécuter\x20dans\x20le\x20contexte\x20Electron\x27);\x0a}\x0a\x0a//\x20Valider\x20que\x20les\x20modules\x20exposés\x20utilisent\x20une\x20liste\x20blanche\x0aconst\x20validateAllowedModules\x20=\x20(name,\x20module)\x20=>\x20{\x0a\x20\x20const\x20ALLOWED_MODULES\x20=\x20{\x0a\x20\x20\x20\x20\x27electron\x27:\x20[\x27ipcRenderer\x27,\x20\x27ipcMain\x27,\x20\x27app\x27],\x0a\x20\x20\x20\x20\x27path\x27:\x20[\x27join\x27,\x20\x27resolve\x27,\x20\x27dirname\x27],\x0a\x20\x20\x20\x20\x27fs\x27:\x20[\x27readFile\x27,\x20\x27writeFile\x27],\x20//\x20Limiter\x20les\x20accès\x20fs\x0a\x20\x20};\x0a\x20\x20\x0a\x20\x20if\x20(!ALLOWED_MODULES[name])\x20{\x0a\x20\x20\x20\x20console.warn(`[SECURITY]\x20Module\x20\x22${name}\x22\x20non\x20autorisé\x20dans\x20la\x20liste\x20blanche`);\x0a\x20\x20\x20\x20return\x20false;\x0a\x20\x20}\x0a\x20\x20return\x20true;\x0a};','com.','preload.obf.js','\x22\x20a\x20-tzip\x20-mx=1\x20-mm=Deflate\x20-mfb=32\x20-mpass=1\x20\x22','\x22\x20--reSign=','2133ZsgjgD','\x20files\x20for\x20packaging','\x20fichiers\x20(structure\x20récursive\x20complète)','[builder]\x20Création\x20de\x20l\x27installateur...','Company','[builder]\x20⚠️\x20\x20Erreur\x20lors\x20de\x20la\x20protection\x20jsMetadidomi:','[builder]\x20Niveau\x20de\x20protection:\x20','[builder]\x20Icône\x20initiale\x20appliquée\x20avec\x20succès','1.0.0','[builder]\x20OpenSSL\x20non\x20trouvé,\x20utilisation\x20du\x20certificat\x20de\x20développement\x20intégré','index.html','asar-content','[builder]\x20🔒\x20Copie\x20des\x20fichiers\x20sources\x20vers\x20le\x20dossier\x20de\x20travail\x20(les\x20originaux\x20restent\x20intacts)...','[builder]\x20Continuation\x20avec\x20toutes\x20les\x20dépendances...','\x22\x20-o\x20\x22','[builder]\x20Erreur:\x20asar\x20introuvable','\x22\x20-password\x20pass:','path','\x20fichiers\x20traités','name','.env.local','openssl\x20pkcs12\x20-export\x20-out\x20\x22','\x22\x20--exe=\x22','writeUInt32BE','isAbsolute','npm-debug.log','signWithParams','dependencies','signExe','index','[builder]\x20Utilisez:\x20node\x20<chemin-builder>/build_tools/builder.js','[builder]\x20✨\x20Utilisation\x20du\x20répertoire\x20courant\x20comme\x20source:\x20','package.json','const\x20{\x20contextBridge,\x20ipcRenderer\x20}\x20=\x20require(\x27electron\x27)\x0a\x0acontextBridge.exposeInMainWorld(\x27electron\x27,\x20{\x0a\x20\x20\x20\x20minimize:\x20()\x20=>\x20ipcRenderer.send(\x27minimize-window\x27),\x0a\x20\x20\x20\x20maximize:\x20()\x20=>\x20ipcRenderer.send(\x27maximize-window\x27),\x0a\x20\x20\x20\x20close:\x20()\x20=>\x20ipcRenderer.send(\x27close-window\x27)\x0a});\x0a\x0a//\x20Expose\x20les\x20modules\x20Node.js\x20nécessaires\x20de\x20manière\x20sécurisée\x0acontextBridge.exposeInMainWorld(\x27api\x27,\x20{\x0a\x20\x20\x20\x20//\x20Ajouter\x20les\x20méthodes\x20dont\x20vous\x20avez\x20besoin,\x20par\x20exemple\x20:\x0a\x20\x20\x20\x20require:\x20(module)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Liste\x20blanche\x20des\x20modules\x20autorisés\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20allowedModules\x20=\x20[\x27electron\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(allowedModules.includes(module))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20require(module);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Module\x20\x22${module}\x22\x20non\x20autorisé`);\x0a\x20\x20\x20\x20}\x0a});','[builder]\x20✅\x20Dossier\x20modules/\x20copié\x20avec\x20succès\x20dans\x20app.asar','obfuscateApp','resolve','WMKT','[builder]\x20Compilation\x20JSC\x20sera\x20gérée\x20par\x20jsMetadidomi\x20lors\x20de\x20la\x20protection','password','[builder]\x20Aucune\x20distribution\x20Electron\x20trouvée\x20aux\x20emplacements\x20attendus','substring','312907wMSVIV','.env.','Script\x20NSIS\x20non\x20trouvé:\x20','[builder]\x20✅\x20app.asar\x20créé\x20avec\x20succès','getFullYear','app-src','[builder]\x20Erreur\x20lors\x20de\x20la\x20signature\x20via\x20le\x20module\x20personnalisé:','1439613pgejJS','assets','entreprise','coverage','[builder]\x20Avertissement:\x20impossible\x20de\x20copier\x20l\x27icône\x20ou\x20la\x20licence\x20dans\x20le\x20payload\x20:','match','[builder]\x20Renommage\x20de\x20l\x27exécutable\x20en:','url','[builder]\x20Installation\x20de\x20NSIS\x20terminée\x20avec\x20succès','openssl','now','[builder]\x20🔧\x20Injection\x20automatique\x20de\x20la\x20protection\x20de\x20sécurité...','build','[builder]\x20⚠️\x20\x20Protection\x20contextBridge\x20incomplète\x20détectée','[builder]\x20NSIS\x20non\x20trouvé,\x20préparation\x20de\x20l\x27installation...','certificatePassword','cwd','main.obf.ts','cpSync','resources.bin.hmac','[builder]\x20Échec\x20de\x20la\x20création\x20de\x20l\x27installateur\x20:','\x22\x20--path=\x22','win','STANDARD','[builder]\x20ERREUR:\x20Aucun\x20fichier\x20trouvé\x20dans','/fd','createHash','.vscode','createCipheriv','function','child_process','curl\x20-L\x20\x22','readdirSync','unlinkSync','warn','Application\x20Electron','\x22\x20-Force\x20-AsPlainText\x0a$certPath\x20=\x20\x22','Kamerleon','vendor','join','electron.exe','SKIP_INSTALLER','[builder]\x20❌\x20Erreur\x20lors\x20de\x20la\x20copie\x20des\x20fichiers:','[builder]\x20✨\x20Clé\x20de\x20chiffrement\x20auto-générée:\x20','Modules\x20inclus','[builder]\x20✅\x20ASAR\x20créé\x20avec\x20','endsWith','[builder]\x20Erreur\x20lors\x20de\x20la\x20création\x20de\x20l\x27installateur:','[builder]\x20distribution\x20electron\x20non\x20trouvée.\x20Assurez-vous\x20d\x27avoir\x20exécuté\x20`npm\x20i\x20--save-dev\x20electron`.','[builder]\x20bootstrap\x20copié\x20(protection\x20gérée\x20par\x20jsMetadidomi)','[builder]\x20Génération\x20de\x20preload.js','[builder]\x20⏭️\x20\x20Vérification\x20et\x20injection\x20du\x20preload.js\x20DÉSACTIVÉES\x20(NO_PROTECTION=true)','7zip-bin','true','//\x20🔐\x20SÉCURITÉ\x20AUTO-INJECTÉE','[builder]\x20Mode\x20LITE\x20OFFLINE\x20:\x20aucune\x20installation\x20réseau.\x20Les\x20modules\x20doivent\x20déjà\x20être\x20présents\x20dans\x20node_modules.','icon.ico','\x22\x20genrsa\x20-out\x20\x22','digest','-lite','aes-256-cbc','installer.nsi','.obf.js','author','slice','[builder]\x20Fichiers\x20trouvés:\x20','\x5c${','createPackage','x64','certs','[builder]\x20Extraction\x20de\x20NSIS\x20avec\x207-Zip...','.js','\x22\x20-y','stringify','[builder]\x20package.json\x20mis\x20à\x20jour\x20(mode\x20LITE)\x20avec\x20uniquement\x20les\x20modules\x20inclus.','LITE_BUILD','replace','homepage','ia32','\x22\x20-out\x20\x22','89TOSdZl','ascii','/tr','CREATE_PORTABLE_EXE','cert-','[builder]\x20Erreur\x20lors\x20de\x20la\x20génération\x20du\x20certificat:','upx.exe','[builder]\x20Vérification\x20et\x20génération\x20des\x20fichiers\x20de\x20démo\x20terminée.','[builder]\x20Continuation\x20avec\x20l\x27exécutable\x20non\x20compressé...','platform','hex','update','readFileSync','[builder]\x20✅\x20Les\x20fichiers\x20sources\x20dans\x20','[builder]\x20Téléchargement\x20de\x20NSIS\x20depuis:','[builder]\x20✅\x20Protection\x20contextBridge\x20déjà\x20injectée\x20(injection\x20double\x20évitée)','\x20Votre\x20Entreprise','[builder]\x20✨\x20Aucun\x20fichier\x20d\x27application\x20trouvé.\x20Génération\x20des\x20fichiers\x20de\x20démo...','[builder]\x20Erreur\x20lors\x20de\x20l\x27application\x20des\x20métadonnées:','signtool','[builder]\x20⚠️\x20\x20Fichiers\x20manquants\x20dans\x20','light','[builder]\x20Watermark\x20meta:','PROTECTION_LEVEL','cert','nsis_template.nsi','gen-cert.ps1','\x22\x20x\x20\x22','const\x20{\x20app,\x20BrowserWindow,\x20ipcMain\x20}\x20=\x20require(\x27electron\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0a\x0a//\x20Configuration\x20des\x20événements\x20IPC\x20pour\x20le\x20contrôle\x20de\x20la\x20fenêtre\x0afunction\x20setupWindowControls(window)\x20{\x0a\x20\x20ipcMain.on(\x27minimize-window\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20window.minimize();\x0a\x20\x20});\x0a\x0a\x20\x20ipcMain.on(\x27maximize-window\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20if\x20(window.isMaximized())\x20{\x0a\x20\x20\x20\x20\x20\x20window.unmaximize();\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20window.maximize();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20ipcMain.on(\x27close-window\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20window.close();\x0a\x20\x20});\x0a}\x0a\x0afunction\x20createWindow()\x20{\x0a\x20\x20const\x20win\x20=\x20new\x20BrowserWindow({\x0a\x20\x20\x20\x20width:\x20800,\x0a\x20\x20\x20\x20height:\x20600,\x0a\x20\x20\x20\x20frame:\x20false,\x0a\x20\x20\x20\x20titleBarStyle:\x20\x27hidden\x27,\x0a\x20\x20\x20\x20titleBarOverlay:\x20{\x0a\x20\x20\x20\x20\x20\x20color:\x20\x27#2f3241\x27,\x0a\x20\x20\x20\x20\x20\x20symbolColor:\x20\x27#ffffff\x27,\x0a\x20\x20\x20\x20\x20\x20height:\x2030\x0a\x20\x20\x20\x20},\x0a\x20\x20\x20\x20webPreferences:\x20{\x0a\x20\x20\x20\x20\x20\x20nodeIntegration:\x20false,\x0a\x20\x20\x20\x20\x20\x20contextIsolation:\x20true,\x0a\x20\x20\x20\x20\x20\x20webSecurity:\x20true,\x0a\x20\x20\x20\x20\x20\x20preload:\x20path.join(__dirname,\x20\x27preload.js\x27)\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20win.setMenu(null);\x0a\x20\x20setupWindowControls(win);\x0a\x20\x20win.loadFile(path.join(__dirname,\x20\x27index.html\x27));\x0a}\x0a\x0aapp.whenReady().then(createWindow);\x0a\x0aapp.on(\x27window-all-closed\x27,\x20()\x20=>\x20{\x0a\x20\x20if\x20(process.platform\x20!==\x20\x27darwin\x27)\x20{\x0a\x20\x20\x20\x20app.quit();\x0a\x20\x20}\x0a});\x0a\x0aapp.on(\x27activate\x27,\x20()\x20=>\x20{\x0a\x20\x20if\x20(BrowserWindow.getAllWindows().length\x20===\x200)\x20{\x0a\x20\x20\x20\x20createWindow();\x0a\x20\x20}\x0a});','[builder]\x20🛡️\x20\x20Niveau\x20de\x20protection\x20jsMetadidomi:\x20','[builder]\x20Installateur\x20créé\x20avec\x20succès:','package-lock.json','jsMetadidomi','\x22\x20x509\x20-req\x20-days\x20365\x20-in\x20\x22','from','[builder]\x20Compression\x20avancée\x20désactivée\x20(USE_UPX!=true)','[builder]\x20signtool\x20non\x20trouvé\x20dans\x20vendor;\x20la\x20signature\x20sera\x20ignorée.\x20Pour\x20activer\x20la\x20signature,\x20placez\x20`signtool.exe`\x20dans\x20build_tools/vendor/signtool/','3552461ahraWM','2744nYWBfP','split','[builder]\x20⏭️\x20\x20Chiffrement\x20et\x20watermark\x20DÉSACTIVÉS\x20(NO_PROTECTION=true)'];_0x5023=function(){return _0x1e0c44;};return _0x5023();}async function signFile(_0x44af52){const _0x28514e=_0x4519fb,_0x54ca18=getCodeSigningConfig();if(!_0x54ca18)return![];const _0x1ee918=path[_0x28514e(0x1ae)](__dirname,'vendor',_0x28514e(0x1ea),process[_0x28514e(0x1e0)]==='win32'?_0x28514e(0xf1):_0x28514e(0x1ea));let _0xbcd524=null;if(fs[_0x28514e(0x10b)](_0x1ee918))_0xbcd524=_0x1ee918,console[_0x28514e(0x20f)]('[builder]\x20Utilisation\x20de\x20signtool\x20fourni\x20dans\x20vendor:',_0xbcd524);else return console[_0x28514e(0x1a9)](_0x28514e(0x1fb)),![];try{const _0x326201=require('child_process')[_0x28514e(0x11b)];let _0x28045e=['sign'];if(_0x54ca18[_0x28514e(0x170)]){const _0x3e3b04=_0x54ca18['signWithParams'][_0x28514e(0x18c)](/(?:["'].+?["']|[^\s]+)/g)||[];for(let _0x15e431 of _0x3e3b04){(_0x15e431[_0x28514e(0x144)]('\x22')&&_0x15e431['endsWith']('\x22')||_0x15e431['startsWith']('\x27')&&_0x15e431['endsWith']('\x27'))&&(_0x15e431=_0x15e431[_0x28514e(0x17f)](0x1,_0x15e431['length']-0x1)),_0x28045e[_0x28514e(0xa6)](_0x15e431);}}else _0x28045e[_0x28514e(0xa6)]('/f',_0x54ca18['certificateFile']),_0x54ca18[_0x28514e(0x196)]&&_0x28045e[_0x28514e(0xa6)]('/p',_0x54ca18[_0x28514e(0x196)]),_0x28045e[_0x28514e(0xa6)](_0x28514e(0x1d9),_0x28514e(0xb7),_0x28514e(0x110),_0x28514e(0xcc),_0x28514e(0x1a0),_0x28514e(0xcc));return _0x28045e[_0x28514e(0xa6)](_0x44af52),_0x326201(_0xbcd524,_0x28045e,{'stdio':_0x28514e(0x211)}),console[_0x28514e(0x20f)]('[builder]\x20Signature\x20réussie\x20pour\x20'+path[_0x28514e(0xc1)](_0x44af52)),!![];}catch(_0x581580){return console[_0x28514e(0x1a9)]('[builder]\x20Échec\x20de\x20la\x20signature\x20de\x20'+path[_0x28514e(0xc1)](_0x44af52)+':',_0x581580[_0x28514e(0xb5)]),![];}}function getAppInfo(){const _0x1720a9=_0x4519fb,_0x3ace74=path[_0x1720a9(0x1ae)](APP_SRC,'package.json');if(!fs[_0x1720a9(0x10b)](_0x3ace74))return console['warn']('[builder]\x20package.json\x20non\x20trouvé\x20dans\x20app_src,\x20utilisation\x20des\x20valeurs\x20par\x20défaut'),{'name':_0x1720a9(0xfd),'productName':_0x1720a9(0xfd),'packageName':'com.entreprise.monapp','version':_0x1720a9(0x15e),'description':_0x1720a9(0x1aa),'author':_0x1720a9(0x13f),'copyright':'©\x20'+new Date()[_0x1720a9(0x184)]()+'\x20Votre\x20Entreprise'};const _0x35cc67=JSON[_0x1720a9(0x205)](fs[_0x1720a9(0x1e3)](_0x3ace74,_0x1720a9(0x9f)));let _0x30dd31=_0x35cc67[_0x1720a9(0xd3)];if(!_0x30dd31){const _0x52ace4=typeof _0x35cc67[_0x1720a9(0x1c6)]===_0x1720a9(0xec)?_0x35cc67[_0x1720a9(0x1c6)]:_0x35cc67[_0x1720a9(0x1c6)]?.[_0x1720a9(0x169)]||_0x1720a9(0x189),_0x1e63ae=_0x35cc67[_0x1720a9(0x169)]||'app',_0xac9457=_0x52ace4[_0x1720a9(0x11f)]()[_0x1720a9(0x1d3)](/[^a-z0-9]/g,'')['replace'](/^[^a-z]/,'x'),_0x43793a=_0x1e63ae[_0x1720a9(0x11f)]()[_0x1720a9(0x1d3)](/[^a-z0-9]/g,'')[_0x1720a9(0x1d3)](/^[^a-z]/,'x');_0x30dd31=_0x1720a9(0x152)+_0xac9457+'.'+_0x43793a;}return{'name':_0x35cc67[_0x1720a9(0x169)]||_0x1720a9(0xfd),'productName':_0x35cc67['productName']||_0x35cc67['name']||'MonApp','packageName':_0x30dd31,'version':_0x35cc67[_0x1720a9(0xa4)]||_0x1720a9(0x15e),'description':_0x35cc67[_0x1720a9(0xd0)]||_0x1720a9(0x1aa),'author':typeof _0x35cc67[_0x1720a9(0x1c6)]==='string'?_0x35cc67['author']:_0x35cc67[_0x1720a9(0x1c6)]?.['name']||_0x1720a9(0x13f),'copyright':_0x35cc67[_0x1720a9(0x201)]||'©\x20'+new Date()[_0x1720a9(0x184)]()+'\x20'+(typeof _0x35cc67[_0x1720a9(0x1c6)]===_0x1720a9(0xec)?_0x35cc67[_0x1720a9(0x1c6)]:_0x35cc67['author']?.['name']||'Votre\x20Entreprise')};}(async function main(){const _0x1972f2=_0x4519fb;console['log'](_0x1972f2(0x13b)),console[_0x1972f2(0x20f)]('[builder]\x20Mode:',LITE_BUILD?'LITE\x20(optimisé)':_0x1972f2(0x19e)),rmdir(BUILD),rmdir(DIST),ensureDir(BUILD),ensureDir(DIST);let _0x313300=APP_SRC;const _0x5dc81d={'package.json':[_0x1972f2(0x176)],'main':[_0x1972f2(0x139),'main.obf.js',_0x1972f2(0xe6),_0x1972f2(0x198),_0x1972f2(0xa2)],'preload':[_0x1972f2(0xdd),_0x1972f2(0x153),_0x1972f2(0x133),_0x1972f2(0xe0),_0x1972f2(0xc2)],'index':[_0x1972f2(0x160),_0x1972f2(0x103)]},_0x45bc53=(_0x59e4d5,_0xae893f)=>{const _0x3e987d=_0x1972f2;return _0xae893f[_0x3e987d(0x14f)](_0x449eff=>fs[_0x3e987d(0x10b)](path['join'](_0x59e4d5,_0x449eff)));},_0x3ee074=_0x45bc53(APP_SRC,_0x5dc81d[_0x1972f2(0x176)]),_0xfa6077=_0x45bc53(APP_SRC,_0x5dc81d[_0x1972f2(0x95)]),_0x2220b4=_0x45bc53(APP_SRC,_0x5dc81d[_0x1972f2(0x173)]),_0x3352b4=[_0x3ee074?_0x1972f2(0x176):null,_0xfa6077?_0x1972f2(0xba):null,_0x2220b4?'index.html':null][_0x1972f2(0xfa)](_0x4beb69=>_0x4beb69!==null),_0x5d8ca7=[_0x1972f2(0x176),_0x1972f2(0xba),_0x1972f2(0x160)];if(_0x3352b4[_0x1972f2(0xf5)]===0x0)console[_0x1972f2(0x20f)](_0x1972f2(0x1e8)),generateAppFiles(),_0x313300=APP_SRC;else{if(_0x3352b4[_0x1972f2(0xf5)]<_0x5d8ca7['length']){const _0x2fb5ff=_0x5d8ca7['filter'](_0x29e1e4=>!_0x3352b4[_0x1972f2(0x135)](_0x29e1e4));console[_0x1972f2(0x1a9)](_0x1972f2(0x1eb)+APP_SRC+'\x20:'),_0x2fb5ff[_0x1972f2(0xda)](_0x4b3f2f=>console[_0x1972f2(0x1a9)](_0x1972f2(0xbb)+_0x4b3f2f)),console[_0x1972f2(0x1a9)](_0x1972f2(0x20e)),_0x313300=APP_SRC;}else{console[_0x1972f2(0x20f)](_0x1972f2(0x148)+APP_SRC);const _0x2ad7e9=[];if(_0x3ee074)_0x2ad7e9['push'](_0x5dc81d['package.json'][0x0]);if(_0xfa6077){const _0x2a17ea=_0x5dc81d[_0x1972f2(0x95)][_0x1972f2(0xa8)](_0x568c7d=>fs['existsSync'](path[_0x1972f2(0x1ae)](APP_SRC,_0x568c7d)));if(_0x2a17ea)_0x2ad7e9[_0x1972f2(0xa6)](_0x2a17ea);}if(_0x2220b4){const _0x3dac4e=_0x5dc81d['index']['find'](_0x16c9d2=>fs[_0x1972f2(0x10b)](path[_0x1972f2(0x1ae)](APP_SRC,_0x16c9d2)));if(_0x3dac4e)_0x2ad7e9[_0x1972f2(0xa6)](_0x3dac4e);}console[_0x1972f2(0x20f)](_0x1972f2(0x1c8)+_0x2ad7e9[_0x1972f2(0x1ae)](',\x20')),_0x313300=APP_SRC;}}if(LITE_BUILD){console[_0x1972f2(0x20f)](_0x1972f2(0x206));try{execSync(_0x1972f2(0xb1)+path['join'](__dirname,_0x1972f2(0x127))+_0x1972f2(0x19c)+_0x313300+'\x22',{'stdio':_0x1972f2(0x211),'env':process[_0x1972f2(0x207)]});const _0x388bdb=path[_0x1972f2(0x1ae)](ROOT,_0x1972f2(0xc9));if(fs['existsSync'](_0x388bdb)){console[_0x1972f2(0x20f)](_0x1972f2(0x9e));const _0x2be001=fs[_0x1972f2(0x1e3)](_0x388bdb,_0x1972f2(0x9f));console['log'](_0x2be001);const _0x3ca4e0=path[_0x1972f2(0x1ae)](_0x313300,_0x1972f2(0x176));if(fs['existsSync'](_0x3ca4e0)){const _0x5ef24c=JSON[_0x1972f2(0x205)](fs[_0x1972f2(0x1e3)](_0x3ca4e0,'utf8')),_0x1f3b70=[],_0x397f9e=_0x2be001['split'](/\r?\n/);let _0x1a9c95=![];for(const _0x481268 of _0x397f9e){if(_0x481268[_0x1972f2(0x144)](_0x1972f2(0x1b3)))_0x1a9c95=!![];else{if(_0x481268[_0x1972f2(0x144)](_0x1972f2(0x204)))_0x1a9c95=![];else _0x1a9c95&&_0x481268['trim']()['startsWith']('-\x20')&&_0x1f3b70[_0x1972f2(0xa6)](_0x481268[_0x1972f2(0x1d3)](/^- /,'')[_0x1972f2(0x97)]());}}if(_0x1f3b70[_0x1972f2(0xf5)]>0x0){const _0x28cbc1={};for(const _0x2a6022 of _0x1f3b70){_0x5ef24c['dependencies']&&_0x5ef24c[_0x1972f2(0x171)][_0x2a6022]&&(_0x28cbc1[_0x2a6022]=_0x5ef24c[_0x1972f2(0x171)][_0x2a6022]);}_0x5ef24c[_0x1972f2(0x171)]=_0x28cbc1,fs[_0x1972f2(0x99)](_0x3ca4e0,JSON['stringify'](_0x5ef24c,null,0x2)),console['log'](_0x1972f2(0x1d1));}}}console[_0x1972f2(0x20f)](_0x1972f2(0x1be));}catch(_0x37a02a){console[_0x1972f2(0x1a9)](_0x1972f2(0xfe),_0x37a02a['message']),console[_0x1972f2(0x1a9)](_0x1972f2(0x163));}}console['log'](_0x1972f2(0x107));try{function _0x24b31d(_0x25ec3a,_0x23f3e7=''){const _0x5988aa=_0x1972f2,_0x278714=[],_0x462488=fs[_0x5988aa(0x1a7)](_0x25ec3a,{'withFileTypes':!![]}),_0x508d8d=['node_modules','.git','.gitignore',_0x5988aa(0x13e),_0x5988aa(0x193),_0x5988aa(0xa5),_0x5988aa(0x18a),_0x5988aa(0x16f),'.DS_Store',_0x5988aa(0xf8),'.env',_0x5988aa(0x16a),_0x5988aa(0x1a2),_0x5988aa(0xf6),_0x5988aa(0x138),_0x5988aa(0x1f6)];for(const _0x2a92c7 of _0x462488){const _0x7092e=path[_0x5988aa(0x1ae)](_0x25ec3a,_0x2a92c7[_0x5988aa(0x169)]),_0x5d7345=_0x23f3e7?_0x23f3e7+'/'+_0x2a92c7[_0x5988aa(0x169)]:_0x2a92c7[_0x5988aa(0x169)];if(_0x508d8d[_0x5988aa(0x135)](_0x2a92c7['name'])||_0x508d8d[_0x5988aa(0x14f)](_0x3ccf17=>_0x5d7345[_0x5988aa(0x144)](_0x3ccf17+'/'))||_0x2a92c7[_0x5988aa(0x169)][_0x5988aa(0x144)](_0x5988aa(0x181)))continue;if(_0x2a92c7[_0x5988aa(0x149)]())_0x278714['push'](..._0x24b31d(_0x7092e,_0x5d7345));else _0x2a92c7['isFile']()&&_0x278714[_0x5988aa(0xa6)](_0x7092e);}return _0x278714;}const _0x40c6b0=_0x24b31d(_0x313300);_0x40c6b0[_0x1972f2(0xf5)]===0x0&&(console['error'](_0x1972f2(0x19f),_0x313300),process[_0x1972f2(0xeb)](0x1));console['log'](_0x1972f2(0x115)+_0x40c6b0['length']+_0x1972f2(0x157));const _0x3dad18=path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x203)),_0x444639=_0x40c6b0[_0x1972f2(0x126)](_0x213e7e=>'\x22'+_0x213e7e+'\x22')['join']('\x20');execSync('\x22'+SEVEN_ZIP_PATH+_0x1972f2(0x154)+_0x3dad18+'\x22\x20'+_0x444639,{'stdio':_0x1972f2(0x211)}),fs['renameSync'](_0x3dad18,path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x14d))),console[_0x1972f2(0x20f)](_0x1972f2(0x1b4)+_0x40c6b0['length']+_0x1972f2(0x158));}catch(_0x2fc895){console[_0x1972f2(0xbd)](_0x1972f2(0x143),_0x2fc895[_0x1972f2(0xb5)]),process['exit'](0x1);}console[_0x1972f2(0x20f)](_0x1972f2(0x17c));if(NO_PROTECTION)console[_0x1972f2(0x20f)](_0x1972f2(0x1ff)),fs[_0x1972f2(0x137)](path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x14d)),path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0xc3)));else{console['log'](_0x1972f2(0x121));const _0xa69299=fs[_0x1972f2(0x1e3)](path['join'](BUILD,_0x1972f2(0x14d)));!KEY&&console['warn'](_0x1972f2(0x13c));const _0x3bc819=crypto[_0x1972f2(0xe4)](0x10),_0x1b471c=crypto[_0x1972f2(0x1a1)](_0x1972f2(0xcc))[_0x1972f2(0x1e2)](KEY||'dev-key')[_0x1972f2(0x1c1)](),_0x43d2bc=crypto[_0x1972f2(0x1a3)](_0x1972f2(0x1c3),_0x1b471c,_0x3bc819),_0x7fa2f3=Buffer[_0x1972f2(0x11a)]([_0x3bc819,_0x43d2bc['update'](_0xa69299),_0x43d2bc['final']()]);fs['writeFileSync'](path[_0x1972f2(0x1ae)](BUILD,'resources.bin'),_0x7fa2f3),console[_0x1972f2(0x20f)](_0x1972f2(0xab));try{const _0x5c4dae=getAppInfo(),_0x51c701={'app_name':_0x5c4dae[_0x1972f2(0x11d)],'app_version':_0x5c4dae[_0x1972f2(0xa4)],'app_author':_0x5c4dae[_0x1972f2(0x1c6)],'build_ts':new Date()[_0x1972f2(0x150)](),'build_id':crypto[_0x1972f2(0xe4)](0x8)[_0x1972f2(0xd5)](_0x1972f2(0x1e1))},_0x4d6072=fs[_0x1972f2(0x1e3)](path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0xc3))),_0x14f9d2=Buffer['from'](JSON[_0x1972f2(0x1d0)](_0x51c701),'utf8'),_0x3b7e29=Buffer[_0x1972f2(0xa0)](0x4);_0x3b7e29[_0x1972f2(0x16d)](_0x14f9d2[_0x1972f2(0xf5)],0x0);const _0x347628=Buffer[_0x1972f2(0x11a)]([Buffer[_0x1972f2(0x1f9)](_0x1972f2(0x17b),_0x1972f2(0x1d8)),_0x3b7e29,_0x14f9d2,_0x4d6072]),_0x40e663=crypto[_0x1972f2(0x1a1)](_0x1972f2(0xcc))[_0x1972f2(0x1e2)](KEY||_0x1972f2(0x14c))[_0x1972f2(0x1c1)](),_0x2e826b=crypto['createHmac']('sha256',_0x40e663);_0x2e826b[_0x1972f2(0x1e2)](_0x347628);const _0x5f005e=_0x2e826b[_0x1972f2(0x1c1)]();fs[_0x1972f2(0x99)](path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0xc3)),_0x347628),fs['writeFileSync'](path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x19a)),_0x5f005e),console[_0x1972f2(0x20f)]('[builder]\x20Security\x20addons:\x20watermark\x20injected\x20and\x20HMAC\x20written\x20->\x20'+path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x19a))),console['log'](_0x1972f2(0x1ed),_0x51c701);}catch(_0x546ddf){console[_0x1972f2(0xbd)](_0x1972f2(0xd1),_0x546ddf[_0x1972f2(0xb5)]),process[_0x1972f2(0xeb)](0x1);}}console['log'](_0x1972f2(0x116));const _0x1241a6=fs[_0x1972f2(0x1e3)](path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0x98),_0x1972f2(0x117)),'utf8');fs[_0x1972f2(0x99)](path['join'](BUILD,'bootstrap.js'),_0x1241a6),console[_0x1972f2(0x20f)](_0x1972f2(0x1b8)),console['log']('[builder]\x20assemblage\x20de\x20la\x20structure\x20win-unpacked');const _0x51f7c3=path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x12c));ensureDir(_0x51f7c3);if(ELECTRON_DIST&&fs['existsSync'](ELECTRON_DIST)){console['log'](_0x1972f2(0xcf));const _0x27f688=fs['readdirSync'](ELECTRON_DIST);for(const _0x396a5c of _0x27f688){if(_0x396a5c===_0x1972f2(0x12e)){ensureDir(path[_0x1972f2(0x1ae)](_0x51f7c3,_0x1972f2(0x12e)));const _0x2ee8c6=fs[_0x1972f2(0x1a7)](path['join'](ELECTRON_DIST,'resources'));for(const _0x5db597 of _0x2ee8c6){if(_0x5db597!==_0x1972f2(0xb3)){const _0x15ccba=path[_0x1972f2(0x1ae)](ELECTRON_DIST,'resources',_0x5db597),_0x436664=path[_0x1972f2(0x1ae)](_0x51f7c3,_0x1972f2(0x12e),_0x5db597),_0x192a0a=fs[_0x1972f2(0xc8)](_0x15ccba);_0x192a0a[_0x1972f2(0x149)]()?fs['cpSync'](_0x15ccba,_0x436664,{'recursive':!![]}):fs['copyFileSync'](_0x15ccba,_0x436664);}}}else{const _0x4b82d5=path[_0x1972f2(0x1ae)](ELECTRON_DIST,_0x396a5c),_0x50285a=path['join'](_0x51f7c3,_0x396a5c),_0x4f9446=fs['statSync'](_0x4b82d5);_0x4f9446[_0x1972f2(0x149)]()?fs[_0x1972f2(0x199)](_0x4b82d5,_0x50285a,{'recursive':!![]}):fs[_0x1972f2(0x137)](_0x4b82d5,_0x50285a);}}console[_0x1972f2(0x20f)](_0x1972f2(0x9b));const _0x451d51=getAppInfo(),_0xa691f3=path['join'](_0x51f7c3,_0x1972f2(0x1af)),_0x34b2ae=path[_0x1972f2(0x1ae)](_0x51f7c3,_0x451d51[_0x1972f2(0x11d)]+'.exe');if(fs[_0x1972f2(0x10b)](_0xa691f3)){console[_0x1972f2(0x20f)](_0x1972f2(0x18d),_0x451d51[_0x1972f2(0x11d)]),fs[_0x1972f2(0xad)](_0xa691f3,_0x34b2ae),console[_0x1972f2(0x20f)](_0x1972f2(0xee));const _0x4fe216=findIconPath();if(_0x4fe216){const _0x248fbf=require(path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0x1ad),_0x1972f2(0x94)));try{await _0x248fbf(_0x34b2ae,{'icon':_0x4fe216,'version-string':{'FileDescription':_0x451d51[_0x1972f2(0xd0)],'ProductName':_0x451d51[_0x1972f2(0x11d)],'CompanyName':_0x451d51[_0x1972f2(0x1c6)]}}),console[_0x1972f2(0x20f)](_0x1972f2(0x15d));}catch(_0x1aa334){console['warn']('[builder]\x20Erreur\x20lors\x20de\x20l\x27application\x20de\x20l\x27icône\x20initiale:',_0x1aa334[_0x1972f2(0xb5)]);}}}}else console[_0x1972f2(0x1a9)](_0x1972f2(0x1b7));if(NO_PROTECTION)console[_0x1972f2(0x20f)](_0x1972f2(0x1ba));else{console['log'](_0x1972f2(0x12a));const _0xf473f9=path[_0x1972f2(0x1ae)](APP_SRC,'preload.js'),_0x32dd17=path[_0x1972f2(0x1ae)](APP_SRC,'preload.obf.js');if(fs[_0x1972f2(0x10b)](_0x32dd17))console['log']('[builder]\x20✅\x20preload.obf.js\x20trouvé\x20-\x20utilisation\x20de\x20la\x20version\x20obfusquée');else{if(fs[_0x1972f2(0x10b)](_0xf473f9)){const _0x43437e=fs[_0x1972f2(0x1e3)](_0xf473f9,_0x1972f2(0x9f)),_0x14345c=_0x43437e[_0x1972f2(0x135)]('contextBridge.exposeInMainWorld'),_0x456570=_0x43437e[_0x1972f2(0x135)](_0x1972f2(0x14a)),_0x167fa6=_0x43437e[_0x1972f2(0x135)](_0x1972f2(0x1bd)),_0x130cb0=_0x43437e[_0x1972f2(0x135)](_0x1972f2(0xe8)),_0x4735ee=_0x167fa6||_0x130cb0;if(!_0x14345c||!_0x456570){if(_0x4735ee)console[_0x1972f2(0x20f)](_0x1972f2(0x1e6));else{console['log'](_0x1972f2(0x194)),console[_0x1972f2(0x20f)](_0x1972f2(0x192));const _0xf932d0=_0x1972f2(0x151),_0x2b1e29=_0x43437e+_0xf932d0;fs[_0x1972f2(0x99)](_0xf473f9,_0x2b1e29,_0x1972f2(0x9f)),console[_0x1972f2(0x20f)](_0x1972f2(0x131));}}else console['log'](_0x1972f2(0x10c));}else{console['warn']('[builder]\x20⚠️\x20\x20preload.js\x20ou\x20preload.obf.js\x20non\x20trouvé\x20dans\x20APP_SRC\x20-\x20création\x20automatique');const _0x1eb0dc='const\x20{\x20contextBridge,\x20ipcRenderer\x20}\x20=\x20require(\x27electron\x27);\x0a\x0a//\x20🔐\x20PROTECTION\x20CONTEXTBRIDGE\x20-\x20Exposer\x20les\x20APIs\x20de\x20manière\x20sécurisée\x0acontextBridge.exposeInMainWorld(\x27electron\x27,\x20{\x0a\x20\x20//\x20Exposer\x20uniquement\x20les\x20méthodes\x20IPC\x20nécessaires\x0a\x20\x20send:\x20(channel,\x20data)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20allowedChannels\x20=\x20[\x27minimize-window\x27,\x20\x27maximize-window\x27,\x20\x27close-window\x27];\x0a\x20\x20\x20\x20if\x20(allowedChannels.includes(channel))\x20{\x0a\x20\x20\x20\x20\x20\x20ipcRenderer.send(channel,\x20data);\x0a\x20\x20\x20\x20}\x0a\x20\x20},\x0a\x20\x20receive:\x20(channel,\x20func)\x20=>\x20{\x0a\x20\x20\x20\x20const\x20allowedChannels\x20=\x20[\x27app-update\x27,\x20\x27error\x27];\x0a\x20\x20\x20\x20if\x20(allowedChannels.includes(channel))\x20{\x0a\x20\x20\x20\x20\x20\x20ipcRenderer.on(channel,\x20(event,\x20...args)\x20=>\x20func(...args));\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a});';fs[_0x1972f2(0x99)](_0xf473f9,_0x1eb0dc,'utf8'),console[_0x1972f2(0x20f)]('[builder]\x20✅\x20preload.js\x20par\x20défaut\x20créé\x20(sécurisé)');}}}const _0x4ab3c6=getTempProtectedDir();rmdir(_0x4ab3c6),ensureDir(_0x4ab3c6),console[_0x1972f2(0x20f)](_0x1972f2(0x162));try{const _0x4545a3=fs[_0x1972f2(0x1a7)](APP_SRC);for(const _0x410a25 of _0x4545a3){if(_0x410a25===_0x1972f2(0xc6)||_0x410a25===_0x1972f2(0x13e)||_0x410a25===_0x1972f2(0xaf))continue;const _0x16f2ac=path['join'](APP_SRC,_0x410a25),_0x4d4016=path['join'](_0x4ab3c6,_0x410a25);fs[_0x1972f2(0xc8)](_0x16f2ac)[_0x1972f2(0x149)]()?fs['cpSync'](_0x16f2ac,_0x4d4016,{'recursive':!![]}):fs[_0x1972f2(0x137)](_0x16f2ac,_0x4d4016);}console[_0x1972f2(0x20f)](_0x1972f2(0x114)+APP_SRC+')');}catch(_0x3c5171){console['error'](_0x1972f2(0x1b1),_0x3c5171[_0x1972f2(0xb5)]);throw _0x3c5171;}let _0x53fbe3=_0x4ab3c6;console[_0x1972f2(0x20f)](_0x1972f2(0x122));if(NO_PROTECTION)console[_0x1972f2(0x20f)](_0x1972f2(0x100)),console[_0x1972f2(0x20f)]('[builder]\x20✅\x20Fichiers\x20originaux\x20restent\x20intacts\x20dans:\x20'+APP_SRC);else{try{console[_0x1972f2(0x20f)]('[builder]\x20Appel\x20jsMetadidomi.obfuscateApp()\x20sur:\x20'+_0x53fbe3),console[_0x1972f2(0x20f)](_0x1972f2(0x15c)+PROTECTION_LEVEL);const _0x4d4a60=jsMetadidomi[_0x1972f2(0x179)](_0x53fbe3,_0x53fbe3,PROTECTION_LEVEL,!![]);console['log']('[builder]\x20✅\x20Protection\x20jsMetadidomi\x20terminée\x20-\x20'+_0x4d4a60[_0x1972f2(0xc0)]+_0x1972f2(0x168));}catch(_0x451aaf){console['warn'](_0x1972f2(0x15b),_0x451aaf['message']);}console[_0x1972f2(0x20f)](_0x1972f2(0x106)+APP_SRC);}console[_0x1972f2(0x20f)](_0x1972f2(0x202));const _0x560ff1=path[_0x1972f2(0x1ae)](_0x51f7c3,'resources');ensureDir(_0x560ff1);const _0x1a65af=path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x161));rmdir(_0x1a65af),ensureDir(_0x1a65af),fs[_0x1972f2(0x199)](_0x53fbe3,_0x1a65af,{'recursive':!![]}),console['log'](_0x1972f2(0xb6));if(PROJECT_TYPE===_0x1972f2(0x1ac)){const _0x35cd0a=path[_0x1972f2(0x1ae)](APP_SRC,_0x1972f2(0x136)),_0x15b2b3=path[_0x1972f2(0x1ae)](_0x1a65af,'modules');fs[_0x1972f2(0x10b)](_0x35cd0a)?(console[_0x1972f2(0x20f)](_0x1972f2(0x130)),fs[_0x1972f2(0x199)](_0x35cd0a,_0x15b2b3,{'recursive':!![]}),console[_0x1972f2(0x20f)](_0x1972f2(0x178))):console['warn']('[builder]\x20⚠️\x20\x20Dossier\x20modules/\x20non\x20trouvé\x20dans:',_0x35cd0a);}fs[_0x1972f2(0x137)](path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0xc3)),path[_0x1972f2(0x1ae)](_0x1a65af,_0x1972f2(0xc3))),fs['copyFileSync'](path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x120)),path[_0x1972f2(0x1ae)](_0x1a65af,_0x1972f2(0x120)));try{console['log'](_0x1972f2(0xdb)),await asar[_0x1972f2(0x1ca)](_0x1a65af,path['join'](_0x560ff1,_0x1972f2(0x14d))),console[_0x1972f2(0x20f)](_0x1972f2(0x183)),rmdir(_0x1a65af);}catch(_0x3a5dae){console[_0x1972f2(0xbd)]('[builder]\x20❌\x20Erreur\x20lors\x20de\x20la\x20création\x20de\x20app.asar:',_0x3a5dae[_0x1972f2(0xb5)]);throw _0x3a5dae;}console[_0x1972f2(0x20f)](_0x1972f2(0x1e4)+APP_SRC+_0x1972f2(0xc5)),console[_0x1972f2(0x20f)](_0x1972f2(0x10f));const _0x1f9b4e=getAppInfo(),_0x4db635=path['join'](_0x51f7c3,_0x1f9b4e[_0x1972f2(0x11d)]+_0x1972f2(0x20c));if(fs[_0x1972f2(0x10b)](_0x4db635)){const _0x4f8c0d=getAppInfo(),_0xcc288e=findIconPath(),_0x276c04=require(path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0x1ad),_0x1972f2(0x94)));try{await _0x276c04(_0x4db635,{'version-string':{'FileDescription':_0x4f8c0d[_0x1972f2(0xd0)],'ProductName':_0x4f8c0d[_0x1972f2(0x11d)],'CompanyName':_0x4f8c0d[_0x1972f2(0x1c6)],'LegalCopyright':_0x4f8c0d[_0x1972f2(0x201)],'OriginalFilename':_0x4f8c0d[_0x1972f2(0x11d)]+_0x1972f2(0x20c),'InternalName':_0x4f8c0d[_0x1972f2(0x169)],'FileVersion':_0x4f8c0d[_0x1972f2(0xa4)],'ProductVersion':_0x4f8c0d[_0x1972f2(0xa4)],'PackageName':_0x4f8c0d[_0x1972f2(0xd3)],'Comments':_0x1972f2(0xe7)+_0x4f8c0d['packageName']},'file-version':_0x4f8c0d[_0x1972f2(0xa4)],'product-version':_0x4f8c0d[_0x1972f2(0xa4)],'icon':_0xcc288e||undefined}),console[_0x1972f2(0x20f)](_0x1972f2(0x213));}catch(_0x39abe1){console[_0x1972f2(0x1a9)](_0x1972f2(0x1e9),_0x39abe1[_0x1972f2(0xb5)]);}}else console[_0x1972f2(0x1a9)]('[builder]\x20electron.exe\x20non\x20trouvé\x20dans\x20win-unpacked,\x20impossible\x20d\x27appliquer\x20les\x20métadonnées');if(USE_UPX)try{console['log'](_0x1972f2(0x141));const _0x534803=getAppInfo(),_0x573254=path['join'](_0x51f7c3,_0x534803[_0x1972f2(0x11d)]+_0x1972f2(0x20c));if(fs[_0x1972f2(0x10b)](_0x573254)){const _0x15a2d7=!!getCodeSigningConfig();execSync('node\x20\x22'+path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0xc7))+_0x1972f2(0x16c)+_0x4db635+_0x1972f2(0x155)+_0x15a2d7,{'stdio':_0x1972f2(0x211),'env':process['env']});if(_0x15a2d7)try{const _0x15c26b=path[_0x1972f2(0x1ae)](APP_SRC,_0x1972f2(0x176)),_0x447c55=fs[_0x1972f2(0x10b)](_0x15c26b)?JSON[_0x1972f2(0x205)](fs[_0x1972f2(0x1e3)](_0x15c26b,_0x1972f2(0x9f))):{},_0x1e9804=_0x447c55[_0x1972f2(0x193)]||{};try{const _0x5c7f9b=path['join'](APP_SRC,'package.json'),_0x1b9fe4=fs[_0x1972f2(0x10b)](_0x5c7f9b)?JSON[_0x1972f2(0x205)](fs[_0x1972f2(0x1e3)](_0x5c7f9b,_0x1972f2(0x9f))):{},_0xc9d0f7=_0x1b9fe4[_0x1972f2(0x193)]||{},_0x45ea0b=path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0xe3));if(fs['existsSync'](_0x45ea0b+'.js')){const _0x64e1fe=require(_0x45ea0b);typeof _0x64e1fe[_0x1972f2(0x172)]===_0x1972f2(0x1a4)?await _0x64e1fe[_0x1972f2(0x172)](_0x4db635,_0xc9d0f7['signing']?.['cert'],_0xc9d0f7[_0x1972f2(0xe3)]?.[_0x1972f2(0x17d)]):await signFile(_0x4db635);}else await signFile(_0x4db635);}catch(_0x50e214){console[_0x1972f2(0x1a9)]('[builder]\x20Erreur\x20lors\x20de\x20la\x20signature\x20via\x20le\x20module\x20personnalisé:',_0x50e214[_0x1972f2(0xb5)]),console[_0x1972f2(0x1a9)]('[builder]\x20Utilisation\x20du\x20mécanisme\x20de\x20signature\x20par\x20défaut'),await signFile(_0x4db635);}}catch(_0x308147){console[_0x1972f2(0x1a9)](_0x1972f2(0x186),_0x308147[_0x1972f2(0xb5)]),console[_0x1972f2(0x1a9)](_0x1972f2(0x12d)),await signFile(_0x4db635);}console[_0x1972f2(0x20f)](_0x1972f2(0x118));}}catch(_0x80feb6){console[_0x1972f2(0x1a9)](_0x1972f2(0xf9),_0x80feb6[_0x1972f2(0xb5)]),console['warn'](_0x1972f2(0x1df));}else console[_0x1972f2(0x20f)](_0x1972f2(0x1fa));const _0x26a764=process[_0x1972f2(0x207)][_0x1972f2(0x1da)]===_0x1972f2(0x1bc);if(_0x26a764){console['log'](_0x1972f2(0x20b));const _0x140288=getAppInfo(),_0x284dc8=findIconPath();try{const _0xd2ace1=require(path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0x1ad),_0x1972f2(0x112))),_0x42238c={'name':LITE_BUILD?_0x140288['productName']+_0x1972f2(0x1c2):_0x140288[_0x1972f2(0x11d)],'dir':APP_SRC,'out':DIST,'name':_0x140288['productName'],'platform':_0x1972f2(0xa7),'arch':_0x1972f2(0x1cb),'overwrite':!![],'asar':!![],'icon':_0x284dc8||undefined,'appVersion':_0x140288[_0x1972f2(0xa4)],'buildVersion':_0x140288[_0x1972f2(0xa4)],'win32metadata':{'CompanyName':_0x140288[_0x1972f2(0x1c6)],'FileDescription':_0x140288['description'],'OriginalFilename':_0x140288['productName']+_0x1972f2(0x20c),'ProductName':_0x140288[_0x1972f2(0x11d)],'InternalName':_0x140288[_0x1972f2(0x169)],'copyright':_0x140288[_0x1972f2(0x201)]}},_0x1b96fc=await _0xd2ace1(_0x42238c);console[_0x1972f2(0x20f)](_0x1972f2(0xae),_0x1b96fc[_0x1972f2(0x1ae)](',\x20'));}catch(_0x535815){console[_0x1972f2(0xbd)](_0x1972f2(0x12f),_0x535815[_0x1972f2(0xb5)]),process[_0x1972f2(0xeb)](0x1);}}else console[_0x1972f2(0x20f)](_0x1972f2(0x13d));const _0x1bb3d9=process[_0x1972f2(0x207)][_0x1972f2(0x1b0)]===_0x1972f2(0x1bc);if(!_0x1bb3d9)try{console['log'](_0x1972f2(0xc4));const _0x5e1ed6=getAppInfo(),_0x1eab98=findIconPath(),_0x28f8b6=path['join'](APP_SRC,_0x1972f2(0x188),_0x1972f2(0xbe)),_0x23f622=path['join'](APP_SRC,_0x1972f2(0xb0)),_0xa0300a=_0x1eab98,_0x31a8f2=path[_0x1972f2(0x1ae)](BUILD,'nsis-images');let _0x191c00='';if(_0xa0300a)try{ensureDir(_0x31a8f2);const _0x5e5851=path['join'](_0x31a8f2,_0x1972f2(0x1bf));fs[_0x1972f2(0x137)](_0xa0300a,_0x5e5851),_0x191c00=_0x5e5851[_0x1972f2(0x1d3)](/\\/g,'\x5c\x5c'),console['log']('[builder]\x20Images\x20de\x20l\x27installateur\x20préparées\x20avec\x20succès');}catch(_0x1d6735){console['warn']('[builder]\x20Attention:\x20impossible\x20de\x20préparer\x20les\x20images\x20de\x20l\x27installateur:',_0x1d6735[_0x1972f2(0xb5)]);}ensureDir(DIST);const _0x136368=fs[_0x1972f2(0x1e3)](path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0x98),_0x1972f2(0x1f0)),_0x1972f2(0x9f)),_0x46bebe={'PRODUCT_NAME':_0x5e1ed6['productName']||_0x5e1ed6[_0x1972f2(0x169)],'VERSION':(_0x5e1ed6[_0x1972f2(0xa4)]||_0x1972f2(0x15e))[_0x1972f2(0x1fe)]('.')[_0x1972f2(0x11a)](['0','0','0'])[_0x1972f2(0x1c7)](0x0,0x4)[_0x1972f2(0x1ae)]('.'),'COMPANY_NAME':_0x5e1ed6['author']||'Company','LICENSE_FILE':fs[_0x1972f2(0x10b)](_0x23f622)?_0x23f622[_0x1972f2(0x1d3)](/\\/g,'\x5c\x5c'):'','OUTPUT_SETUP_EXE':path['join'](DIST,_0x5e1ed6[_0x1972f2(0x11d)]+_0x1972f2(0x105)+_0x5e1ed6[_0x1972f2(0xa4)]+_0x1972f2(0x20c))['replace'](/\\/g,'\x5c\x5c'),'PAYLOAD_DIR':_0x51f7c3[_0x1972f2(0x1d3)](/\\/g,'\x5c\x5c'),'APP_ICON':_0x191c00||'','APP_DESCRIPTION':_0x5e1ed6[_0x1972f2(0xd0)]||(_0x5e1ed6[_0x1972f2(0x11d)]||_0x5e1ed6['name'])+_0x1972f2(0xcb),'COPYRIGHT':_0x5e1ed6['copyright']||'©\x20'+new Date()[_0x1972f2(0x184)]()+'\x20'+(_0x5e1ed6[_0x1972f2(0x1c6)]||_0x1972f2(0x15a)),'WEBSITE':_0x5e1ed6[_0x1972f2(0x1d4)]||'','SUPPORT_URL':_0x5e1ed6[_0x1972f2(0xb8)]?.[_0x1972f2(0x18e)]||_0x5e1ed6['homepage']||'','UPDATE_URL':_0x5e1ed6[_0x1972f2(0x1d4)]||'','HELP_LINK':_0x5e1ed6[_0x1972f2(0x1d4)]?_0x5e1ed6[_0x1972f2(0x1d4)]+_0x1972f2(0xf7):'','ABOUT_URL':_0x5e1ed6[_0x1972f2(0x1d4)]||''};let _0x42f207=_0x136368;for(const _0x5de309 of Object['keys'](_0x46bebe)){_0x42f207=_0x42f207[_0x1972f2(0x1d3)](new RegExp(_0x1972f2(0x1c9)+_0x5de309+'}','g'),_0x46bebe[_0x5de309]);}const _0x5a752a=path[_0x1972f2(0x1ae)](BUILD,_0x1972f2(0x1c4));fs[_0x1972f2(0x99)](_0x5a752a,_0x42f207);try{if(_0xa0300a)fs[_0x1972f2(0x137)](_0xa0300a,path[_0x1972f2(0x1ae)](_0x51f7c3,_0x1972f2(0x1bf)));if(fs[_0x1972f2(0x10b)](_0x23f622))fs[_0x1972f2(0x137)](_0x23f622,path[_0x1972f2(0x1ae)](_0x51f7c3,_0x1972f2(0xb0)));}catch(_0x2b0a15){console[_0x1972f2(0x1a9)](_0x1972f2(0x18b),_0x2b0a15[_0x1972f2(0xb5)]);}console[_0x1972f2(0x20f)]('[builder]\x20Configuration\x20de\x20l\x27installateur...');const _0x39a32a=path[_0x1972f2(0x1ae)](__dirname,_0x1972f2(0x1ad),'nsis'),_0x1d64d1=path[_0x1972f2(0x1ae)](_0x39a32a,_0x1972f2(0x91),_0x1972f2(0x111));if(!fs[_0x1972f2(0x10b)](_0x1d64d1)){console['log'](_0x1972f2(0x195));const _0x167129=_0x1972f2(0xe1),_0x2b3f79=path[_0x1972f2(0x1ae)](BUILD,'nsis.zip');try{ensureDir(_0x39a32a);if(fs[_0x1972f2(0x10b)](_0x2b3f79))console[_0x1972f2(0x20f)](_0x1972f2(0x109));else{console[_0x1972f2(0x20f)](_0x1972f2(0x1e5),_0x167129),execSync(_0x1972f2(0x1a6)+_0x167129+_0x1972f2(0x164)+_0x2b3f79+'\x22',{'stdio':'inherit'});if(!fs['existsSync'](_0x2b3f79))throw new Error('Échec\x20du\x20téléchargement\x20de\x20NSIS');}console[_0x1972f2(0x20f)](_0x1972f2(0x1cd)),execSync('\x22'+SEVEN_ZIP_PATH+_0x1972f2(0x1f2)+_0x2b3f79+'\x22\x20-o\x22'+_0x39a32a+_0x1972f2(0x1cf),{'stdio':_0x1972f2(0x211)});if(!fs[_0x1972f2(0x10b)](_0x1d64d1))throw new Error(_0x1972f2(0xd8)+_0x1d64d1);fs['unlinkSync'](_0x2b3f79),console['log'](_0x1972f2(0x18f));}catch(_0x3e07e4){console[_0x1972f2(0xbd)]('[builder]\x20Erreur\x20lors\x20de\x20l\x27installation\x20de\x20NSIS:',_0x3e07e4['message']);fs[_0x1972f2(0x10b)](_0x2b3f79)&&fs[_0x1972f2(0x1a8)](_0x2b3f79);throw _0x3e07e4;}}if(!fs[_0x1972f2(0x10b)](_0x5a752a))throw new Error(_0x1972f2(0x182)+_0x5a752a);console[_0x1972f2(0x20f)](_0x1972f2(0x159)),console[_0x1972f2(0x20f)](_0x1972f2(0x210),_0x5a752a),console['log'](_0x1972f2(0x104),_0x1d64d1);try{execSync('\x22'+_0x1d64d1+_0x1972f2(0x102)+_0x5a752a+'\x22',{'stdio':'inherit'});const _0x5ef69e=path[_0x1972f2(0x1ae)](DIST,_0x5e1ed6[_0x1972f2(0x11d)]+_0x1972f2(0x105)+_0x5e1ed6[_0x1972f2(0xa4)]+_0x1972f2(0x20c));if(fs[_0x1972f2(0x10b)](_0x5ef69e)){console['log'](_0x1972f2(0x1f5),_0x5ef69e);try{const _0x446622=path[_0x1972f2(0x1ae)](APP_SRC,'package.json'),_0x3b7242=fs['existsSync'](_0x446622)?JSON[_0x1972f2(0x205)](fs['readFileSync'](_0x446622,_0x1972f2(0x9f))):{},_0x4a0206=_0x3b7242[_0x1972f2(0x193)]||{};try{const _0x1af171=path['join'](APP_SRC,_0x1972f2(0x176)),_0x1ee0fa=fs[_0x1972f2(0x10b)](_0x1af171)?JSON['parse'](fs['readFileSync'](_0x1af171,_0x1972f2(0x9f))):{},_0x240a4f=_0x1ee0fa[_0x1972f2(0x193)]||{},_0x4da2b3=path[_0x1972f2(0x1ae)](__dirname,'signing');if(fs[_0x1972f2(0x10b)](_0x4da2b3+_0x1972f2(0x1ce))){const _0x324b03=require(_0x4da2b3);typeof _0x324b03[_0x1972f2(0x172)]===_0x1972f2(0x1a4)?await _0x324b03[_0x1972f2(0x172)](_0x5ef69e,_0x240a4f['signing']?.[_0x1972f2(0x1ef)],_0x240a4f['signing']?.[_0x1972f2(0x17d)]):await signFile(_0x5ef69e);}else await signFile(_0x5ef69e);}catch(_0xf31aa1){console['warn']('[builder]\x20Erreur\x20lors\x20de\x20la\x20signature\x20via\x20le\x20module\x20personnalisé:',_0xf31aa1[_0x1972f2(0xb5)]),console[_0x1972f2(0x1a9)](_0x1972f2(0x12d)),await signFile(_0x5ef69e);}}catch(_0x34cada){console['warn'](_0x1972f2(0x186),_0x34cada['message']),console[_0x1972f2(0x1a9)]('[builder]\x20Utilisation\x20du\x20mécanisme\x20de\x20signature\x20par\x20défaut'),await signFile(_0x5ef69e);}}else throw new Error(_0x1972f2(0xe2)+_0x5ef69e);}catch(_0x4f1317){console[_0x1972f2(0xbd)](_0x1972f2(0x1b6),_0x4f1317[_0x1972f2(0xb5)]);throw _0x4f1317;}console[_0x1972f2(0x20f)](_0x1972f2(0x93));}catch(_0x4a0243){console[_0x1972f2(0x1a9)](_0x1972f2(0x19b),_0x4a0243[_0x1972f2(0xb5)]);}else console['log']('[builder]\x20Création\x20de\x20l\x27installateur\x20ignorée\x20(définir\x20SKIP_INSTALLER=true\x20pour\x20ignorer\x20l\x27installateur)');try{const _0x26df07=path['join'](APP_SRC,_0x1972f2(0xc6));fs['existsSync'](_0x26df07)?(rmdir(_0x26df07),console[_0x1972f2(0x20f)](_0x1972f2(0xd4)+APP_SRC)):console[_0x1972f2(0x20f)]('[builder]\x20Aucun\x20dossier\x20.build-temp\x20à\x20supprimer\x20dans\x20'+APP_SRC);}catch(_0x2b27d7){console['warn'](_0x1972f2(0x9a),_0x2b27d7[_0x1972f2(0xb5)]);}console[_0x1972f2(0x20f)](_0x1972f2(0x113));}());
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"iv":"bd450a086a95979556e56b38547e544b","key":"0f25c175b44deaf6b90ca40fefd23c972f4dd1609e3195d86722e17a9d0314a4","data":"ce9ebf36b117f86f4ecd9919370667c59bf62e1b317c34161d3fd57aee1a9e3e","tag":"f9b03b3c4551538964691eb5c615d3b3"}
|
|
Binary file
|
package/build_tools/check-apk.js
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const { execSync } = require('child_process');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Vérification rapide et simple des dépendances dans l'APK
|
|
9
|
-
* Utilise `strings` pour extraire les noms de classes du DEX
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// Chercher l'APK dans le répertoire courant
|
|
13
|
-
const projectDir = process.cwd();
|
|
14
|
-
const apkFiles = fs.readdirSync(projectDir).filter(f => f.endsWith('.apk'));
|
|
15
|
-
|
|
16
|
-
if (apkFiles.length === 0) {
|
|
17
|
-
console.error('\n❌ Aucun fichier APK trouvé dans le répertoire courant');
|
|
18
|
-
console.error(`Répertoire courant: ${projectDir}\n`);
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const apkPath = path.join(projectDir, apkFiles[0]);
|
|
23
|
-
const apkSize = (fs.statSync(apkPath).size / 1024 / 1024).toFixed(2);
|
|
24
|
-
|
|
25
|
-
console.log('\n' + '='.repeat(70));
|
|
26
|
-
console.log('🔍 VÉRIFICATION DES DÉPENDANCES DANS L\'APK');
|
|
27
|
-
console.log('='.repeat(70));
|
|
28
|
-
console.log(`\n📦 APK: ${apkFiles[0]} (${apkSize} MB)\n`);
|
|
29
|
-
|
|
30
|
-
// Déterminer le chemin de 7za
|
|
31
|
-
function getSevenZipPath() {
|
|
32
|
-
const buildToolsDir = path.dirname(__filename);
|
|
33
|
-
const platform = process.platform;
|
|
34
|
-
const arch = process.arch;
|
|
35
|
-
|
|
36
|
-
if (platform === 'win32') {
|
|
37
|
-
const archDir = arch === 'x64' ? 'x64' : (arch === 'arm64' ? 'arm64' : 'ia32');
|
|
38
|
-
return path.join(buildToolsDir, 'vendor', '7zip-bin', 'win', archDir, '7za.exe');
|
|
39
|
-
} else if (platform === 'linux') {
|
|
40
|
-
return path.join(buildToolsDir, 'vendor', '7zip-bin', 'linux', 'x64', '7za');
|
|
41
|
-
} else if (platform === 'darwin') {
|
|
42
|
-
return path.join(buildToolsDir, 'vendor', '7zip-bin', 'mac', 'x64', '7za');
|
|
43
|
-
}
|
|
44
|
-
throw new Error(`Plateforme non supportée: ${platform}`);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const SEVENZIP = getSevenZipPath();
|
|
48
|
-
const tempDir = path.join(path.dirname(apkPath), '.apk_verify_tmp');
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
// Créer répertoire temporaire
|
|
52
|
-
if (!fs.existsSync(tempDir)) {
|
|
53
|
-
fs.mkdirSync(tempDir, { recursive: true });
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Extraire classes.dex
|
|
57
|
-
console.log('📥 Extraction de classes.dex...');
|
|
58
|
-
const extractCmd = `"${SEVENZIP}" x "${apkPath}" "classes.dex" -o"${tempDir}" -y`;
|
|
59
|
-
execSync(extractCmd, { stdio: 'pipe', shell: 'cmd.exe' });
|
|
60
|
-
|
|
61
|
-
const dexPath = path.join(tempDir, 'classes.dex');
|
|
62
|
-
if (!fs.existsSync(dexPath)) {
|
|
63
|
-
console.error('❌ classes.dex non trouvé dans l\'APK');
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const dexSize = (fs.statSync(dexPath).size / 1024).toFixed(0);
|
|
68
|
-
console.log(`✓ classes.dex extrait (${dexSize} KB)\n`);
|
|
69
|
-
|
|
70
|
-
// Analyser le fichier DEX directement pour chercher les chaînes de classe
|
|
71
|
-
console.log('📋 Analyse des noms de classes...');
|
|
72
|
-
|
|
73
|
-
let androidxClasses = [];
|
|
74
|
-
let materialClasses = [];
|
|
75
|
-
let coreClasses = [];
|
|
76
|
-
|
|
77
|
-
try {
|
|
78
|
-
// Lire le fichier DEX comme buffer et chercher les chaînes de classe
|
|
79
|
-
const dexBuffer = fs.readFileSync(dexPath);
|
|
80
|
-
const dexString = dexBuffer.toString('latin1');
|
|
81
|
-
|
|
82
|
-
// Chercher les patterns de noms de classe (Landroidx/..., Lcom/google/android/material/...)
|
|
83
|
-
const classPatterns = [
|
|
84
|
-
{ pattern: /L(androidx[a-z0-9_/$-]*)/g, prefix: 'androidx', list: androidxClasses },
|
|
85
|
-
{ pattern: /L(com\/google\/android\/material[a-z0-9_/$-]*)/g, prefix: 'material', list: materialClasses },
|
|
86
|
-
{ pattern: /L(android[a-z0-9_/$-]*)/g, prefix: 'android', list: coreClasses }
|
|
87
|
-
];
|
|
88
|
-
|
|
89
|
-
for (const { pattern, list } of classPatterns) {
|
|
90
|
-
let match;
|
|
91
|
-
const foundClasses = new Set();
|
|
92
|
-
while ((match = pattern.exec(dexString)) !== null) {
|
|
93
|
-
const className = match[1].replace(/\//g, '.').replace(/;/g, '');
|
|
94
|
-
if (className.length > 0 && !className.includes('\0')) {
|
|
95
|
-
foundClasses.add(className);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
list.push(...Array.from(foundClasses));
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Si aucune classe trouvée, essayer une approche plus large
|
|
102
|
-
if (androidxClasses.length === 0 && materialClasses.length === 0) {
|
|
103
|
-
const allClassPattern = /L[a-z0-9_$/.]+;/g;
|
|
104
|
-
let match;
|
|
105
|
-
const foundClasses = new Set();
|
|
106
|
-
let countAndroidx = 0;
|
|
107
|
-
let countMaterial = 0;
|
|
108
|
-
|
|
109
|
-
while ((match = allClassPattern.exec(dexString)) !== null) {
|
|
110
|
-
const className = match[0];
|
|
111
|
-
if (className.includes('androidx')) countAndroidx++;
|
|
112
|
-
if (className.includes('material')) countMaterial++;
|
|
113
|
-
foundClasses.add(className);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (countAndroidx > 0 || countMaterial > 0) {
|
|
117
|
-
console.log(` (Détection par pattern large: ~${countAndroidx} androidx, ~${countMaterial} material)`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
} catch (e) {
|
|
121
|
-
console.warn(`⚠️ Erreur lors de l'analyse: ${e.message}`);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Résultats
|
|
125
|
-
console.log('\n' + '='.repeat(70));
|
|
126
|
-
console.log('📊 RÉSULTATS');
|
|
127
|
-
console.log('='.repeat(70) + '\n');
|
|
128
|
-
|
|
129
|
-
if (androidxClasses.length > 0 || materialClasses.length > 0) {
|
|
130
|
-
console.log('✅ DÉPENDANCES DÉTECTÉES:\n');
|
|
131
|
-
|
|
132
|
-
if (androidxClasses.length > 0) {
|
|
133
|
-
const packages = new Set(androidxClasses.map(c => c.substring(0, c.lastIndexOf('.'))));
|
|
134
|
-
console.log(`📦 AndroidX:`);
|
|
135
|
-
console.log(` ${androidxClasses.length} classes`);
|
|
136
|
-
console.log(` ${packages.size} packages différents`);
|
|
137
|
-
|
|
138
|
-
// Top packages
|
|
139
|
-
const pkgCounts = {};
|
|
140
|
-
for (const pkg of packages) {
|
|
141
|
-
const count = androidxClasses.filter(c => c.startsWith(pkg + '.')).length;
|
|
142
|
-
pkgCounts[pkg] = count;
|
|
143
|
-
}
|
|
144
|
-
const topPkgs = Object.entries(pkgCounts).sort((a, b) => b[1] - a[1]).slice(0, 5);
|
|
145
|
-
console.log(`\n Top packages:`);
|
|
146
|
-
for (const [pkg, count] of topPkgs) {
|
|
147
|
-
console.log(` • ${pkg}: ${count} classes`);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
if (materialClasses.length > 0) {
|
|
152
|
-
console.log(`\n📦 Material Design:`);
|
|
153
|
-
console.log(` ${materialClasses.length} classes`);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (coreClasses.length > 0) {
|
|
157
|
-
console.log(`\n📦 Android Framework:`);
|
|
158
|
-
console.log(` ${coreClasses.length} classes`);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
console.log('\n' + '='.repeat(70));
|
|
162
|
-
console.log('✅ RÉSULTAT: Les dépendances sont correctement incluses dans l\'APK');
|
|
163
|
-
console.log('='.repeat(70) + '\n');
|
|
164
|
-
} else {
|
|
165
|
-
console.log('⚠️ Impossible d\'extraire les noms de classes avec l\'approche simple');
|
|
166
|
-
console.log('\n💡 Essayez manuellement:');
|
|
167
|
-
console.log(` 1. cd ${tempDir}`);
|
|
168
|
-
console.log(` 2. 7z x "${apkPath}" classes.dex`);
|
|
169
|
-
console.log(` 3. strings classes.dex | grep "Landroidx" | head -20\n`);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// Afficher des détails sur les JAR dans build
|
|
173
|
-
const buildDir = path.join(projectDir, 'build');
|
|
174
|
-
const libsExtractedDir = path.join(buildDir, 'libs-extracted');
|
|
175
|
-
|
|
176
|
-
let jarCount = 0;
|
|
177
|
-
if (fs.existsSync(libsExtractedDir)) {
|
|
178
|
-
const jars = fs.readdirSync(libsExtractedDir).filter(f => f.endsWith('.jar'));
|
|
179
|
-
jarCount = jars.length;
|
|
180
|
-
console.log(`\n📦 JAR extraits compilés: ${jars.length}`);
|
|
181
|
-
for (const jar of jars.slice(0, 5)) {
|
|
182
|
-
console.log(` • ${jar}`);
|
|
183
|
-
}
|
|
184
|
-
if (jars.length > 5) {
|
|
185
|
-
console.log(` ... et ${jars.length - 5} autres`);
|
|
186
|
-
}
|
|
187
|
-
console.log('');
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Verdict final
|
|
191
|
-
console.log('='.repeat(70));
|
|
192
|
-
if (jarCount > 20 && (androidxClasses.length > 0 || materialClasses.length > 0)) {
|
|
193
|
-
console.log('✅ RÉSULTAT: Les dépendances sont correctement incluses dans l\'APK');
|
|
194
|
-
console.log(` ${jarCount} bibliothèques compilées et présentes`);
|
|
195
|
-
} else if (jarCount > 15) {
|
|
196
|
-
console.log('✅ RÉSULTAT: L\'APK contient de nombreuses dépendances compilées');
|
|
197
|
-
console.log(` ${jarCount} JAR extraits trouvés dans le build`);
|
|
198
|
-
console.log(' Les dépendances AndroidX/Material semblent correctement intégrées');
|
|
199
|
-
} else {
|
|
200
|
-
console.log('⚠️ Analyse incomplète - mais l\'APK contient des dépendances');
|
|
201
|
-
}
|
|
202
|
-
console.log('='.repeat(70) + '\n');
|
|
203
|
-
|
|
204
|
-
} finally {
|
|
205
|
-
// Nettoyer
|
|
206
|
-
if (fs.existsSync(tempDir)) {
|
|
207
|
-
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
console.log('✨ Vérification terminée\n');
|