@evomap/evolver 1.88.4 → 1.89.0

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.
Files changed (91) hide show
  1. package/.cursor/BUGBOT.md +182 -0
  2. package/.env.example +68 -0
  3. package/.git-commit-guard-token +1 -0
  4. package/.github/CODEOWNERS +63 -0
  5. package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
  6. package/.github/pull_request_template.md +45 -0
  7. package/.github/workflows/test.yml +75 -0
  8. package/CHANGELOG.md +1123 -0
  9. package/README.md +86 -553
  10. package/README.public.md +594 -0
  11. package/SECURITY.md +108 -0
  12. package/assets/gep/events.jsonl +3 -0
  13. package/examples/atp-consumer-quickstart.md +100 -0
  14. package/examples/hello-world.md +38 -0
  15. package/index.js +30 -1
  16. package/package.json +6 -17
  17. package/proxy-package.json +39 -0
  18. package/public.manifest.json +141 -0
  19. package/src/evolve/guards.js +721 -1
  20. package/src/evolve/pipeline/collect.js +1283 -1
  21. package/src/evolve/pipeline/dispatch.js +421 -1
  22. package/src/evolve/pipeline/enrich.js +434 -1
  23. package/src/evolve/pipeline/hub.js +319 -1
  24. package/src/evolve/pipeline/select.js +274 -1
  25. package/src/evolve/pipeline/signals.js +206 -1
  26. package/src/evolve/utils.js +264 -1
  27. package/src/evolve.js +350 -1
  28. package/src/gep/a2aProtocol.js +4395 -1
  29. package/src/gep/autoDistillConv.js +205 -1
  30. package/src/gep/autoDistillLlm.js +315 -1
  31. package/src/gep/candidateEval.js +92 -1
  32. package/src/gep/candidates.js +198 -1
  33. package/src/gep/contentHash.js +30 -1
  34. package/src/gep/conversationSniffer.js +266 -1
  35. package/src/gep/crypto.js +89 -1
  36. package/src/gep/curriculum.js +163 -1
  37. package/src/gep/deviceId.js +218 -1
  38. package/src/gep/envFingerprint.js +118 -1
  39. package/src/gep/epigenetics.js +31 -1
  40. package/src/gep/execBridge.js +711 -1
  41. package/src/gep/explore.js +289 -1
  42. package/src/gep/hash.js +15 -1
  43. package/src/gep/hubFetch.js +359 -1
  44. package/src/gep/hubReview.js +207 -1
  45. package/src/gep/hubSearch.js +526 -1
  46. package/src/gep/hubVerify.js +306 -1
  47. package/src/gep/learningSignals.js +89 -1
  48. package/src/gep/memoryGraph.js +1374 -1
  49. package/src/gep/memoryGraphAdapter.js +203 -1
  50. package/src/gep/mutation.js +203 -1
  51. package/src/gep/narrativeMemory.js +108 -1
  52. package/src/gep/oauthLogin.js +143 -0
  53. package/src/gep/openPRRegistry.js +205 -1
  54. package/src/gep/personality.js +423 -1
  55. package/src/gep/policyCheck.js +599 -1
  56. package/src/gep/prompt.js +836 -1
  57. package/src/gep/recallInject.js +409 -1
  58. package/src/gep/recallVerifier.js +318 -1
  59. package/src/gep/reflection.js +177 -1
  60. package/src/gep/selector.js +602 -1
  61. package/src/gep/skillDistiller.js +1294 -1
  62. package/src/gep/solidify.js +1699 -1
  63. package/src/gep/strategy.js +136 -1
  64. package/src/gep/tokenSavings.js +88 -1
  65. package/src/gep/workspaceKeychain.js +174 -1
  66. package/src/proxy/extensions/traceControl.js +99 -1
  67. package/src/proxy/inject.js +52 -1
  68. package/src/proxy/trace/extractor.js +534 -1
  69. package/src/proxy/trace/usage.js +105 -1
  70. package/CONTRIBUTING.md +0 -19
  71. package/assets/cover.png +0 -0
  72. package/scripts/a2a_export.js +0 -63
  73. package/scripts/a2a_ingest.js +0 -79
  74. package/scripts/a2a_promote.js +0 -118
  75. package/scripts/analyze_by_skill.js +0 -121
  76. package/scripts/build_binaries.js +0 -479
  77. package/scripts/check-changelog.js +0 -166
  78. package/scripts/extract_log.js +0 -85
  79. package/scripts/generate_history.js +0 -75
  80. package/scripts/gep_append_event.js +0 -96
  81. package/scripts/gep_personality_report.js +0 -234
  82. package/scripts/human_report.js +0 -147
  83. package/scripts/recall-verify-report.js +0 -234
  84. package/scripts/recover_loop.js +0 -61
  85. package/scripts/seed-merchants.js +0 -91
  86. package/scripts/suggest_version.js +0 -89
  87. package/scripts/validate-modules.js +0 -38
  88. package/scripts/validate-suite.js +0 -78
  89. package/skills/index.json +0 -14
  90. /package/assets/gep/{genes.seed.json → genes.json} +0 -0
  91. /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
@@ -1 +1,118 @@
1
- const _0x39e00f=_0x3264;(function(_0x94035e,_0x4b9377){const _0x4531ef=_0x3264,_0x5a117b=_0x94035e();while(!![]){try{const _0x4aab4a=parseInt(_0x4531ef(0x198,'\x42\x48\x64\x25'))/(-0x1*0xa43+0x271+0x7d3)*(-parseInt(_0x4531ef(0x19d,'\x74\x4a\x21\x6d'))/(-0x6*0x5+0x1*0x21ba+-0x219a))+parseInt(_0x4531ef(0x1ae,'\x77\x5d\x41\x77'))/(0x1cbb+0x167c+-0x3334)*(parseInt(_0x4531ef(0x218,'\x77\x5d\x41\x77'))/(-0x5*0x59+0x256f+-0x23ae))+-parseInt(_0x4531ef(0x1a8,'\x79\x5b\x67\x70'))/(0x1*-0x8bf+0x103e+0x27e*-0x3)*(parseInt(_0x4531ef(0x205,'\x78\x21\x29\x5b'))/(-0x2168+-0x1*-0x173f+0xa2f))+parseInt(_0x4531ef(0x1f5,'\x65\x6b\x58\x35'))/(0x1b41*-0x1+-0x1655+0x3d1*0xd)*(-parseInt(_0x4531ef(0x207,'\x43\x40\x65\x59'))/(0x730+0x143f+-0x1b67*0x1))+-parseInt(_0x4531ef(0x1ab,'\x5b\x51\x21\x51'))/(-0x1*0xd9+-0xb4b+0xc2d*0x1)+parseInt(_0x4531ef(0x1c7,'\x75\x29\x48\x78'))/(0x1bf7+0x2*-0xbb1+-0x48b)*(parseInt(_0x4531ef(0x1f9,'\x68\x35\x49\x55'))/(0x2e1*-0x5+0x14f8+-0x688))+parseInt(_0x4531ef(0x1a5,'\x24\x74\x58\x49'))/(0x29e+-0x106+-0x18c);if(_0x4aab4a===_0x4b9377)break;else _0x5a117b['push'](_0x5a117b['shift']());}catch(_0x2c71e5){_0x5a117b['push'](_0x5a117b['shift']());}}}(_0x52a4,-0x62fce*-0x1+0x14b*0x277+-0x6305a));const _0x1c3fd7=(function(){const _0x405ac6=_0x3264,_0xc2a5ad={};_0xc2a5ad[_0x405ac6(0x1d6,'\x23\x23\x59\x4a')]=_0x405ac6(0x20e,'\x75\x29\x48\x78')+'\x2b\x29\x2b\x24',_0xc2a5ad[_0x405ac6(0x212,'\x68\x35\x49\x55')]=function(_0x4e9a8e,_0x21d343){return _0x4e9a8e!==_0x21d343;},_0xc2a5ad['\x57\x4c\x6a\x41\x50']=_0x405ac6(0x1e8,'\x34\x52\x6a\x5e');const _0x32dab3=_0xc2a5ad;let _0x23c8ad=!![];return function(_0x407ba6,_0x5d5896){const _0x1f2e2e=_0x405ac6;if(_0x32dab3[_0x1f2e2e(0x1da,'\x71\x78\x32\x5e')](_0x32dab3['\x57\x4c\x6a\x41\x50'],_0x1f2e2e(0x1ed,'\x54\x26\x34\x77')))return _0x414069[_0x1f2e2e(0x1e4,'\x4d\x4f\x78\x77')]()[_0x1f2e2e(0x1ff,'\x51\x62\x66\x5a')](_0x32dab3[_0x1f2e2e(0x1b6,'\x51\x62\x66\x5a')])[_0x1f2e2e(0x1df,'\x38\x55\x33\x6e')]()[_0x1f2e2e(0x197,'\x78\x33\x62\x72')+_0x1f2e2e(0x193,'\x43\x40\x65\x59')](_0x45de9a)[_0x1f2e2e(0x1c5,'\x78\x21\x29\x5b')](_0x32dab3[_0x1f2e2e(0x1f6,'\x53\x5a\x53\x6d')]);else{const _0x17e8f3=_0x23c8ad?function(){const _0x45d1d5=_0x1f2e2e;if(_0x5d5896){const _0x19820f=_0x5d5896[_0x45d1d5(0x192,'\x5b\x51\x21\x51')](_0x407ba6,arguments);return _0x5d5896=null,_0x19820f;}}:function(){};return _0x23c8ad=![],_0x17e8f3;}};}()),_0x31fe35=_0x1c3fd7(this,function(){const _0x1fa641=_0x3264,_0x476e72={};_0x476e72[_0x1fa641(0x206,'\x53\x5a\x53\x6d')]=_0x1fa641(0x1f1,'\x68\x35\x49\x55')+_0x1fa641(0x20f,'\x42\x48\x64\x25');const _0x1025ca=_0x476e72;return _0x31fe35[_0x1fa641(0x1cf,'\x54\x26\x34\x77')]()['\x73\x65\x61\x72\x63\x68'](_0x1025ca[_0x1fa641(0x1fe,'\x46\x23\x21\x75')])[_0x1fa641(0x1b9,'\x77\x5d\x41\x77')]()[_0x1fa641(0x1d1,'\x71\x78\x32\x5e')+_0x1fa641(0x1f4,'\x62\x57\x65\x6d')](_0x31fe35)[_0x1fa641(0x21b,'\x62\x6b\x39\x25')](_0x1025ca[_0x1fa641(0x213,'\x76\x28\x70\x6b')]);});_0x31fe35();const _0xb9cadb=require('\x6f\x73'),_0x33737c=require('\x66\x73'),_0x13655f=require(_0x39e00f(0x20d,'\x5b\x6b\x5d\x37')),_0x3a9884=require(_0x39e00f(0x1d4,'\x46\x23\x21\x75')),{getRepoRoot:_0x4db6c8}=require(_0x39e00f(0x1d5,'\x68\x52\x68\x66')),{getDeviceId:_0x10481f,isContainer:_0x5bc22e}=require(_0x39e00f(0x20a,'\x31\x75\x25\x5b')+'\x49\x64');function _0x5b76fc(){const _0x33ac15=_0x39e00f,_0x5f3e34={};_0x5f3e34[_0x33ac15(0x20b,'\x75\x29\x48\x78')]=function(_0xdcd6af,_0x30cad7){return _0xdcd6af||_0x30cad7;};const _0x165066=_0x5f3e34,_0x241fcc=[process.env.EVOLVER_MODEL_NAME,process.env.ANTHROPIC_MODEL,process.env.CLAUDE_MODEL,process.env.CLAUDE_CODE_MODEL,process.env.OPENAI_MODEL,process.env.CODEX_MODEL,process.env.CURSOR_MODEL];for(const _0x404301 of _0x241fcc){const _0x4a5af3=_0x165066[_0x33ac15(0x1a6,'\x76\x43\x50\x45')](_0x404301,'')[_0x33ac15(0x1aa,'\x24\x26\x37\x64')]();if(_0x4a5af3)return _0x4a5af3[_0x33ac15(0x1d0,'\x55\x40\x5b\x34')](0x26e+-0xef2*-0x1+-0x1160,0x52*-0x4f+0x167*0x6+0x1148);}return _0x33ac15(0x1a7,'\x29\x6d\x34\x70');}function _0x281258(){const _0x564648=_0x39e00f,_0x34e1e4={'\x42\x44\x50\x67\x6a':function(_0x1ba5e3){return _0x1ba5e3();},'\x64\x67\x6b\x52\x53':_0x564648(0x1fd,'\x71\x78\x32\x5e')+_0x564648(0x1ec,'\x76\x43\x50\x45'),'\x6f\x76\x48\x4c\x59':_0x564648(0x1fb,'\x38\x21\x45\x6b'),'\x47\x65\x47\x62\x66':function(_0x20770c,_0x3b5eb3){return _0x20770c(_0x3b5eb3);},'\x5a\x6b\x51\x61\x53':'\x73\x68\x61\x32\x35\x36','\x63\x68\x64\x49\x51':_0x564648(0x1e6,'\x24\x74\x58\x49'),'\x53\x58\x50\x63\x64':function(_0x53fbff,_0x21609d){return _0x53fbff||_0x21609d;},'\x55\x48\x47\x79\x53':_0x564648(0x1d9,'\x77\x5d\x41\x77')},_0x383a48=_0x34e1e4[_0x564648(0x1bc,'\x5b\x51\x21\x51')](_0x4db6c8);let _0x45da03=null,_0x3b11dd=null;const _0x47741c=_0x13655f[_0x564648(0x1f0,'\x77\x29\x56\x65')](__dirname,'\x2e\x2e','\x2e\x2e',_0x34e1e4[_0x564648(0x1c1,'\x2a\x4f\x41\x35')]);try{const _0x1368c7=_0x33737c[_0x564648(0x1fc,'\x77\x29\x56\x65')+_0x564648(0x1c8,'\x78\x33\x62\x72')](_0x47741c,_0x34e1e4[_0x564648(0x1cb,'\x38\x55\x33\x6e')]),_0x2a3a4a=JSON[_0x564648(0x1dd,'\x51\x62\x66\x5a')](_0x1368c7);_0x45da03=_0x2a3a4a&&_0x2a3a4a[_0x564648(0x217,'\x23\x23\x59\x4a')]?_0x34e1e4[_0x564648(0x1f8,'\x29\x6d\x34\x70')](String,_0x2a3a4a[_0x564648(0x1a1,'\x46\x23\x21\x75')]):null,_0x3b11dd=_0x2a3a4a&&_0x2a3a4a[_0x564648(0x204,'\x49\x6d\x66\x64')]?_0x34e1e4[_0x564648(0x195,'\x55\x40\x5b\x34')](String,_0x2a3a4a[_0x564648(0x215,'\x56\x5d\x21\x43')]):null;}catch(_0x57fef2){}if(!_0x45da03)try{const _0x1b5395=_0x33737c[_0x564648(0x1b0,'\x62\x33\x45\x36')+_0x564648(0x196,'\x54\x26\x34\x77')](_0x13655f[_0x564648(0x200,'\x58\x41\x43\x48')](_0x383a48,_0x564648(0x1c0,'\x55\x42\x76\x77')+'\x6a\x73\x6f\x6e'),_0x34e1e4[_0x564648(0x1e7,'\x42\x48\x64\x25')]),_0x2ae807=JSON[_0x564648(0x1db,'\x75\x29\x48\x78')](_0x1b5395);_0x45da03=_0x2ae807&&_0x2ae807[_0x564648(0x1e2,'\x62\x33\x45\x36')]?String(_0x2ae807[_0x564648(0x1a1,'\x46\x23\x21\x75')]):null,_0x3b11dd=_0x2ae807&&_0x2ae807['\x6e\x61\x6d\x65']?_0x34e1e4[_0x564648(0x1de,'\x31\x75\x25\x5b')](String,_0x2ae807[_0x564648(0x1bf,'\x74\x4a\x21\x6d')]):null;}catch(_0x1eb603){}const _0x3bc311=(process.env.EVOLVER_REGION||'')[_0x564648(0x1b1,'\x77\x29\x56\x65')]()[_0x564648(0x1a9,'\x5b\x51\x21\x51')+_0x564648(0x1f3,'\x62\x57\x65\x6d')]()[_0x564648(0x199,'\x2a\x73\x53\x24')](-0x1f46+-0x17d1+0x3717,-0x198b+0x7aa+-0x9e*-0x1d)||undefined;return{'\x64\x65\x76\x69\x63\x65\x5f\x69\x64':_0x10481f(),'\x6e\x6f\x64\x65\x5f\x76\x65\x72\x73\x69\x6f\x6e':process['\x76\x65\x72\x73\x69\x6f\x6e'],'\x70\x6c\x61\x74\x66\x6f\x72\x6d':process['\x70\x6c\x61\x74\x66\x6f\x72\x6d'],'\x61\x72\x63\x68':process[_0x564648(0x194,'\x53\x5a\x53\x6d')],'\x6f\x73\x5f\x72\x65\x6c\x65\x61\x73\x65':_0xb9cadb[_0x564648(0x1e3,'\x49\x6d\x66\x64')](),'\x68\x6f\x73\x74\x6e\x61\x6d\x65':_0x3a9884[_0x564648(0x1e5,'\x79\x5b\x67\x70')+'\x73\x68'](_0x34e1e4[_0x564648(0x1c4,'\x65\x6b\x58\x35')])['\x75\x70\x64\x61\x74\x65'](_0xb9cadb[_0x564648(0x19b,'\x69\x69\x4f\x4d')]())['\x64\x69\x67\x65\x73\x74'](_0x34e1e4[_0x564648(0x1eb,'\x28\x65\x6e\x70')])[_0x564648(0x1c6,'\x2a\x4f\x41\x35')](-0x1597+-0x1054+-0x25eb*-0x1,-0x9*0x1e+0x734+-0x61a),'\x65\x76\x6f\x6c\x76\x65\x72\x5f\x76\x65\x72\x73\x69\x6f\x6e':_0x45da03,'\x63\x6c\x69\x65\x6e\x74':_0x34e1e4[_0x564648(0x1bd,'\x74\x69\x57\x42')](_0x3b11dd,_0x34e1e4[_0x564648(0x1ba,'\x24\x26\x37\x64')]),'\x63\x6c\x69\x65\x6e\x74\x5f\x76\x65\x72\x73\x69\x6f\x6e':_0x45da03,'\x6d\x6f\x64\x65\x6c':_0x34e1e4[_0x564648(0x1ac,'\x5b\x6b\x5d\x37')](_0x5b76fc),'\x72\x65\x67\x69\x6f\x6e':_0x3bc311,'\x63\x77\x64':_0x3a9884[_0x564648(0x1d3,'\x77\x5d\x41\x77')+'\x73\x68'](_0x34e1e4['\x5a\x6b\x51\x61\x53'])['\x75\x70\x64\x61\x74\x65'](process[_0x564648(0x1f7,'\x28\x65\x6e\x70')]())[_0x564648(0x214,'\x69\x69\x4f\x4d')](_0x34e1e4['\x63\x68\x64\x49\x51'])[_0x564648(0x216,'\x34\x52\x6a\x5e')](-0x6f0+0x3*0x20f+0xc3,0x1822*-0x1+0x12f8+-0x2*-0x29b),'\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72':_0x5bc22e(),'\x63\x61\x70\x74\x75\x72\x65\x64\x5f\x61\x74':new Date()[_0x564648(0x1f2,'\x5b\x51\x21\x51')+_0x564648(0x19c,'\x62\x33\x45\x36')]()};}function _0x52a4(){const _0x1879e6=['\x45\x43\x6f\x63\x71\x53\x6f\x4b\x71\x67\x39\x61\x57\x4f\x53','\x42\x53\x6b\x31\x61\x43\x6f\x75\x65\x47','\x41\x4e\x4e\x64\x48\x5a\x30\x43','\x73\x38\x6b\x31\x68\x53\x6f\x32\x62\x61','\x57\x34\x42\x63\x47\x43\x6f\x4b\x64\x63\x62\x62','\x6c\x74\x43\x38\x57\x50\x4b','\x6e\x6d\x6f\x62\x57\x50\x64\x64\x48\x53\x6b\x43','\x57\x37\x61\x47\x43\x77\x58\x56\x57\x37\x78\x64\x4b\x47','\x57\x51\x74\x64\x48\x30\x44\x7a\x57\x52\x4a\x63\x52\x57\x4e\x64\x4f\x47','\x78\x43\x6b\x72\x43\x59\x4b\x6c','\x57\x36\x74\x63\x4e\x32\x48\x57\x57\x51\x64\x63\x47\x63\x71','\x57\x4f\x37\x63\x4b\x75\x2f\x64\x48\x31\x70\x64\x55\x57','\x6d\x5a\x4f\x57\x57\x4f\x48\x74\x61\x53\x6b\x38\x6b\x71','\x75\x43\x6b\x73\x57\x51\x33\x63\x49\x67\x34','\x74\x4a\x68\x63\x4b\x71','\x6f\x4d\x4b\x33\x57\x37\x53','\x57\x37\x53\x2b\x57\x34\x4a\x63\x4e\x4b\x61','\x6a\x38\x6f\x5a\x73\x38\x6f\x4e','\x45\x76\x37\x63\x52\x53\x6f\x6a\x57\x4f\x31\x74\x77\x75\x57','\x61\x6d\x6f\x64\x57\x36\x42\x64\x53\x66\x2f\x63\x51\x38\x6b\x63\x57\x36\x46\x63\x53\x76\x64\x64\x47\x57','\x57\x36\x64\x63\x48\x6d\x6b\x66\x57\x4f\x64\x64\x54\x47','\x57\x34\x34\x79\x57\x51\x4c\x4b\x46\x71','\x57\x34\x52\x63\x48\x38\x6f\x57\x68\x74\x31\x75\x57\x37\x70\x64\x4c\x47','\x57\x35\x5a\x64\x55\x6d\x6b\x61','\x57\x52\x6c\x64\x52\x32\x70\x63\x52\x72\x4e\x64\x50\x53\x6f\x4a\x57\x51\x4b','\x57\x35\x61\x75\x57\x34\x42\x63\x4e\x76\x6d','\x57\x37\x74\x63\x47\x71\x6a\x34\x57\x4f\x65','\x57\x50\x46\x64\x4c\x47\x2f\x64\x54\x6d\x6f\x49\x57\x37\x66\x73\x57\x4f\x64\x64\x4b\x65\x33\x64\x4d\x30\x43\x41','\x67\x30\x48\x70\x73\x38\x6f\x7a\x44\x43\x6b\x30','\x46\x38\x6f\x6b\x68\x53\x6b\x6d\x6f\x32\x6e\x35\x57\x52\x46\x64\x4c\x6d\x6f\x67\x57\x50\x69','\x57\x34\x47\x48\x42\x59\x53\x33\x57\x51\x38','\x79\x62\x4e\x64\x54\x4d\x50\x37','\x57\x37\x78\x64\x4b\x76\x4f\x66\x57\x34\x78\x63\x50\x43\x6f\x69\x46\x43\x6b\x63\x57\x36\x54\x4e\x57\x34\x4b','\x57\x52\x62\x6c\x76\x43\x6f\x4e\x57\x52\x38','\x6a\x6d\x6b\x66\x57\x4f\x71\x75\x57\x35\x56\x63\x48\x43\x6b\x7a','\x77\x73\x75\x6a\x78\x71\x52\x63\x4b\x4b\x30\x77','\x72\x6d\x6b\x6e\x57\x50\x68\x63\x49\x32\x64\x64\x50\x6d\x6b\x4b\x44\x61','\x57\x52\x6a\x45\x78\x75\x65','\x62\x53\x6f\x76\x57\x36\x78\x64\x4e\x63\x68\x63\x53\x6d\x6b\x76\x7a\x67\x4c\x4b\x57\x51\x4b\x34','\x6b\x75\x34\x57\x57\x51\x37\x63\x49\x71','\x57\x37\x71\x45\x78\x4e\x33\x64\x4f\x62\x31\x77\x57\x37\x61','\x57\x51\x78\x64\x47\x64\x6d\x53\x57\x37\x33\x63\x47\x71\x33\x64\x4b\x57\x4f\x6b\x57\x52\x57','\x6d\x43\x6f\x69\x57\x4f\x56\x64\x4c\x53\x6b\x71\x57\x50\x54\x36','\x57\x34\x46\x64\x53\x38\x6b\x67\x57\x50\x47\x70\x57\x52\x4c\x36\x57\x35\x65','\x57\x52\x4b\x70\x75\x53\x6f\x73','\x57\x35\x6d\x32\x57\x51\x44\x43','\x7a\x30\x46\x64\x54\x71\x61\x79','\x57\x52\x69\x2b\x57\x52\x64\x63\x4b\x63\x66\x68\x57\x4f\x75\x32','\x46\x31\x2f\x63\x54\x53\x6f\x38\x57\x50\x62\x70\x73\x30\x4f','\x57\x37\x69\x65\x41\x77\x31\x67','\x61\x43\x6b\x4e\x57\x37\x31\x37\x57\x35\x71\x57\x42\x72\x79','\x44\x33\x46\x64\x51\x73\x6c\x63\x47\x43\x6b\x69\x57\x37\x4a\x63\x56\x47','\x57\x36\x78\x63\x4e\x4c\x62\x51\x57\x52\x33\x63\x4e\x49\x74\x64\x47\x71','\x57\x50\x6e\x4b\x43\x31\x78\x64\x51\x47','\x57\x35\x34\x37\x46\x78\x62\x54\x57\x37\x43','\x43\x53\x6b\x4d\x57\x4f\x33\x63\x47\x33\x30','\x7a\x71\x52\x64\x54\x67\x2f\x64\x4f\x57','\x57\x35\x4f\x2f\x41\x31\x68\x64\x55\x6d\x6b\x74\x73\x4d\x43','\x57\x36\x33\x63\x56\x4d\x42\x63\x4d\x71','\x6f\x6d\x6b\x74\x73\x43\x6f\x45\x41\x67\x4c\x4d\x57\x34\x30','\x74\x38\x6b\x6e\x67\x31\x42\x63\x4c\x71','\x78\x59\x68\x64\x54\x32\x33\x64\x51\x4b\x74\x64\x52\x43\x6b\x43','\x43\x4d\x44\x4d\x57\x34\x4b\x61\x76\x43\x6b\x79\x62\x38\x6f\x63\x57\x37\x6c\x63\x4c\x6d\x6b\x4d','\x57\x36\x65\x43\x70\x47\x57\x41','\x57\x51\x71\x54\x57\x52\x37\x63\x4a\x4a\x72\x6b','\x77\x6d\x6b\x67\x67\x77\x46\x63\x4f\x57','\x77\x38\x6f\x34\x57\x52\x53\x39\x57\x4f\x6e\x4d\x6d\x64\x6c\x64\x4f\x33\x33\x63\x4c\x31\x64\x64\x48\x71','\x73\x75\x4a\x63\x52\x53\x6f\x7a','\x70\x78\x50\x52\x46\x63\x50\x4a\x75\x47','\x78\x4a\x57\x4b\x57\x4f\x37\x63\x4c\x66\x7a\x6a\x6c\x47','\x57\x35\x79\x4c\x73\x4e\x4a\x64\x4a\x57','\x6c\x74\x4b\x31\x57\x50\x4c\x51\x67\x38\x6b\x52\x6e\x47','\x57\x34\x4e\x63\x4f\x66\x53\x6e\x6e\x61','\x57\x35\x74\x63\x4d\x53\x6b\x48\x57\x51\x5a\x64\x56\x57','\x61\x6d\x6f\x4c\x44\x53\x6f\x57\x57\x4f\x70\x64\x56\x61\x31\x39','\x57\x34\x38\x33\x57\x36\x42\x63\x4e\x30\x6d','\x57\x34\x42\x63\x49\x76\x74\x63\x54\x43\x6b\x56\x57\x52\x71\x78\x57\x51\x69','\x78\x53\x6b\x75\x57\x50\x56\x63\x4a\x78\x4e\x64\x50\x53\x6b\x5a\x72\x71','\x57\x37\x6c\x63\x47\x32\x7a\x2f\x57\x52\x56\x63\x4b\x47\x6c\x64\x48\x57','\x64\x4c\x39\x65\x73\x6d\x6f\x65\x44\x71','\x72\x53\x6f\x42\x76\x58\x52\x63\x4f\x71\x64\x63\x51\x71','\x57\x34\x38\x69\x7a\x67\x54\x63','\x71\x62\x68\x64\x49\x67\x33\x64\x54\x66\x69','\x57\x4f\x31\x52\x57\x52\x5a\x64\x4a\x58\x68\x63\x50\x38\x6f\x2f\x64\x71\x42\x63\x4e\x6d\x6b\x30','\x57\x37\x74\x63\x48\x32\x58\x59\x57\x52\x4e\x63\x4b\x4a\x47','\x57\x36\x68\x63\x4c\x4b\x70\x63\x49\x38\x6b\x56','\x67\x43\x6b\x50\x57\x37\x58\x38\x57\x35\x38','\x6a\x49\x61\x2b\x57\x50\x62\x64\x63\x6d\x6b\x38\x67\x57','\x57\x34\x53\x4f\x46\x67\x50\x4e','\x41\x43\x6b\x79\x78\x73\x47\x69','\x57\x34\x30\x38\x75\x75\x64\x64\x50\x6d\x6b\x6f\x45\x33\x79','\x67\x76\x65\x49\x78\x74\x61','\x6c\x6d\x6b\x78\x78\x53\x6f\x71\x41\x4e\x50\x6f\x57\x4f\x57','\x57\x34\x70\x64\x53\x38\x6b\x76\x57\x4f\x38\x47\x57\x52\x39\x34','\x57\x35\x68\x64\x48\x32\x39\x2f\x57\x51\x58\x6a\x68\x71','\x71\x61\x2f\x64\x53\x76\x72\x61\x6e\x76\x4a\x63\x47\x57','\x64\x77\x69\x47\x41\x47\x4a\x63\x52\x32\x47\x61','\x57\x51\x37\x63\x47\x48\x53','\x78\x53\x6b\x66\x57\x50\x33\x63\x4a\x5a\x65','\x61\x53\x6f\x56\x57\x52\x52\x64\x47\x43\x6b\x79','\x57\x37\x64\x63\x51\x5a\x6d','\x62\x38\x6f\x78\x57\x50\x68\x63\x53\x4d\x68\x64\x4d\x43\x6b\x37\x71\x61','\x57\x35\x4f\x58\x57\x51\x50\x37\x79\x61','\x57\x51\x4c\x44\x42\x6d\x6f\x51','\x6d\x43\x6f\x69\x7a\x53\x6f\x47\x57\x50\x61','\x57\x35\x47\x42\x62\x47\x47\x4e\x57\x50\x4b','\x57\x50\x52\x64\x49\x53\x6b\x4d\x57\x51\x71','\x57\x52\x38\x79\x73\x6d\x6f\x71\x6e\x6d\x6b\x45\x57\x52\x6d','\x62\x49\x68\x63\x4c\x4c\x35\x64\x57\x52\x68\x63\x53\x68\x38','\x72\x6d\x6b\x6e\x57\x50\x74\x63\x54\x31\x4a\x64\x4b\x53\x6b\x49\x72\x71','\x57\x34\x79\x57\x73\x71','\x57\x35\x6d\x53\x78\x47','\x57\x4f\x50\x67\x77\x66\x48\x38\x57\x35\x75\x66\x57\x4f\x53\x62\x57\x35\x57\x4a\x6b\x57','\x65\x4c\x79\x5a\x57\x36\x46\x63\x49\x47','\x57\x35\x4f\x55\x57\x51\x4f','\x66\x53\x6b\x6f\x57\x51\x47\x79\x57\x35\x69','\x68\x64\x56\x64\x4c\x63\x65\x58\x57\x36\x68\x64\x4d\x61\x75','\x6a\x6d\x6b\x42\x57\x4f\x53\x42\x57\x34\x64\x63\x4c\x57','\x6c\x78\x7a\x39\x6b\x57','\x57\x52\x38\x79\x77\x53\x6f\x42\x68\x53\x6b\x62\x57\x52\x4f\x4a','\x57\x35\x78\x63\x48\x31\x4e\x63\x52\x43\x6b\x36\x57\x51\x65\x68\x57\x36\x38','\x6f\x66\x39\x6c\x44\x6d\x6f\x73','\x57\x34\x47\x53\x42\x32\x54\x48\x57\x37\x65','\x57\x37\x6c\x63\x4f\x73\x6a\x33','\x57\x35\x52\x64\x54\x6d\x6b\x6e\x57\x50\x4b\x51\x57\x51\x71','\x57\x52\x6a\x30\x6d\x59\x30\x30\x57\x36\x5a\x64\x55\x5a\x5a\x64\x47\x32\x57\x73','\x6e\x43\x6b\x6f\x57\x50\x4b\x74\x57\x35\x46\x63\x4c\x38\x6b\x4f\x72\x71','\x57\x34\x33\x64\x47\x32\x35\x2f','\x57\x36\x62\x57\x57\x36\x56\x64\x48\x77\x76\x70\x57\x4f\x30\x39\x57\x37\x6e\x7a\x78\x61','\x64\x4d\x4b\x49\x57\x35\x2f\x63\x52\x61','\x64\x4d\x42\x63\x54\x53\x6b\x32\x57\x50\x4e\x63\x4e\x6d\x6f\x6b\x57\x35\x75','\x57\x34\x78\x63\x49\x66\x44\x75\x57\x4f\x79','\x74\x38\x6b\x64\x66\x32\x68\x63\x54\x43\x6b\x52','\x61\x6d\x6f\x73\x46\x49\x38\x79\x57\x35\x31\x43\x46\x71','\x67\x53\x6b\x54\x57\x35\x48\x53\x57\x37\x47','\x57\x35\x47\x66\x63\x47\x57\x39\x57\x4f\x47\x42\x57\x51\x4b','\x67\x32\x53\x75\x57\x51\x65','\x71\x43\x6f\x47\x57\x51\x79\x48\x57\x50\x66\x34\x6b\x31\x4f','\x67\x53\x6f\x41\x57\x37\x37\x64\x50\x57'];_0x52a4=function(){return _0x1879e6;};return _0x52a4();}function _0x4c6969(_0x1428f6){const _0xd22cbc=_0x39e00f,_0x1d296d={};_0x1d296d['\x47\x72\x4d\x4f\x6c']=function(_0xe9ccde,_0x1728f7){return _0xe9ccde!==_0x1728f7;},_0x1d296d[_0xd22cbc(0x208,'\x77\x5d\x41\x77')]=_0xd22cbc(0x201,'\x62\x33\x45\x36'),_0x1d296d[_0xd22cbc(0x1cd,'\x7a\x38\x53\x35')]=_0xd22cbc(0x1a3,'\x51\x62\x66\x5a'),_0x1d296d[_0xd22cbc(0x19f,'\x58\x41\x43\x48')]='\x75\x74\x66\x38',_0x1d296d['\x49\x4e\x4b\x70\x70']=_0xd22cbc(0x1e9,'\x58\x41\x43\x48');const _0x1be798=_0x1d296d;if(!_0x1428f6||_0x1be798[_0xd22cbc(0x1ce,'\x2a\x73\x53\x24')](typeof _0x1428f6,_0x1be798[_0xd22cbc(0x1a4,'\x4d\x4f\x78\x77')]))return _0xd22cbc(0x21a,'\x77\x5d\x41\x77');const _0x1d86fa=[_0x1428f6[_0xd22cbc(0x203,'\x29\x6d\x34\x70')+'\x64']||'',_0x1428f6[_0xd22cbc(0x1cc,'\x56\x5d\x21\x43')+_0xd22cbc(0x1ef,'\x51\x5b\x45\x38')]||'',_0x1428f6[_0xd22cbc(0x191,'\x56\x5d\x21\x43')]||'',_0x1428f6['\x61\x72\x63\x68']||'',_0x1428f6[_0xd22cbc(0x1b7,'\x75\x29\x48\x78')]||'',_0x1428f6[_0xd22cbc(0x1ee,'\x65\x6b\x58\x35')]||_0x1428f6[_0xd22cbc(0x1dc,'\x56\x5d\x21\x43')+_0xd22cbc(0x1af,'\x34\x52\x6a\x5e')]||'',_0x1428f6[_0xd22cbc(0x1be,'\x38\x55\x33\x6e')+_0xd22cbc(0x1bb,'\x51\x62\x66\x5a')]||_0x1428f6[_0xd22cbc(0x1b4,'\x78\x21\x29\x5b')+'\x76\x65\x72\x73\x69\x6f\x6e']||''][_0xd22cbc(0x1b2,'\x28\x65\x6e\x70')]('\x7c');return _0x3a9884[_0xd22cbc(0x20c,'\x65\x6b\x58\x35')+'\x73\x68'](_0x1be798['\x64\x6e\x4c\x6c\x71'])[_0xd22cbc(0x1fa,'\x29\x6d\x34\x70')](_0x1d86fa,_0x1be798[_0xd22cbc(0x19e,'\x55\x40\x5b\x34')])[_0xd22cbc(0x209,'\x2a\x4f\x41\x35')](_0x1be798[_0xd22cbc(0x1b3,'\x68\x35\x49\x55')])[_0xd22cbc(0x219,'\x31\x75\x25\x5b')](0x1554+0x337+-0x188b,0x2ac+-0x1552+-0x5*-0x3be);}function _0x442028(_0x3bcec8,_0x2ef9ad){const _0xaf6a2d=_0x39e00f,_0x591b24={};_0x591b24[_0xaf6a2d(0x1e0,'\x79\x5b\x67\x70')]=function(_0x15bf6b,_0x535723){return _0x15bf6b===_0x535723;};const _0x3cf21a=_0x591b24;return _0x3cf21a[_0xaf6a2d(0x19a,'\x28\x65\x6e\x70')](_0x4c6969(_0x3bcec8),_0x4c6969(_0x2ef9ad));}function _0x3264(_0x2b2739,_0xc980a0){_0x2b2739=_0x2b2739-(-0x2*-0x105c+0x166*-0x2+0x77*-0x3d);const _0x327be4=_0x52a4();let _0x36e6f9=_0x327be4[_0x2b2739];if(_0x3264['\x52\x42\x51\x4a\x4e\x4a']===undefined){var _0x4c6351=function(_0x105b47){const _0x495505='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x44b1e0='',_0xfc0b25='',_0x4a1603=_0x44b1e0+_0x4c6351,_0x5b9cf1=(''+function(){return 0x3*0xb8b+0x1cbb*-0x1+-0x5e6;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x266*0x6+0x122c+0x1*-0x208f);for(let _0xb43811=-0x13b7+0x256f+-0x11b8,_0x12e9ca,_0x4fe7f2,_0x50b419=-0x5*-0x652+0xdd3+-0x2d6d;_0x4fe7f2=_0x105b47['\x63\x68\x61\x72\x41\x74'](_0x50b419++);~_0x4fe7f2&&(_0x12e9ca=_0xb43811%(0x215a+0x24*-0x5b+-0x148a)?_0x12e9ca*(0x184f+-0x1309+-0x2*0x283)+_0x4fe7f2:_0x4fe7f2,_0xb43811++%(0xcec*0x2+-0x2264+0x890))?_0x44b1e0+=_0x5b9cf1||_0x4a1603['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x50b419+(-0x1*0x220c+-0x1*0xdc1+-0x1*-0x2fd7))-(-0x1*0x78b+-0x213+0x9a8)!==0xf32+0x3b*0x8b+-0x2f3b?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x1327*0x2+-0x16*0x100+0x3d4d*0x1&_0x12e9ca>>(-(-0x1d52*0x1+-0x19*-0x9f+0xdcd)*_0xb43811&-0x150+-0x195a+0x10*0x1ab)):_0xb43811:-0x187*-0x17+-0x3*0x9f8+0xbf*-0x7){_0x4fe7f2=_0x495505['\x69\x6e\x64\x65\x78\x4f\x66'](_0x4fe7f2);}for(let _0xdb876=-0x1056+0xa75+0x5e1,_0x1a6255=_0x44b1e0['\x6c\x65\x6e\x67\x74\x68'];_0xdb876<_0x1a6255;_0xdb876++){_0xfc0b25+='\x25'+('\x30\x30'+_0x44b1e0['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xdb876)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x507+-0x19*0x157+-0x722*-0x4))['\x73\x6c\x69\x63\x65'](-(-0x1945+-0x1999*-0x1+-0x2*0x29));}return decodeURIComponent(_0xfc0b25);};const _0xa6fda1=function(_0x25048d,_0x19b8dc){let _0x28334e=[],_0x3de271=0x1244+0x100+-0x3*0x66c,_0x44fe93,_0x5c483d='';_0x25048d=_0x4c6351(_0x25048d);let _0x363373;for(_0x363373=0x441*0x9+-0x37*-0x9a+0x1*-0x475f;_0x363373<0xa82+-0xebe+0x4*0x14f;_0x363373++){_0x28334e[_0x363373]=_0x363373;}for(_0x363373=0x28e+0x471+0xc7*-0x9;_0x363373<0x7*0x25+-0x2*0x854+0x10a5*0x1;_0x363373++){_0x3de271=(_0x3de271+_0x28334e[_0x363373]+_0x19b8dc['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x363373%_0x19b8dc['\x6c\x65\x6e\x67\x74\x68']))%(0x74*0x1+-0x64f*-0x2+-0xf*0xce),_0x44fe93=_0x28334e[_0x363373],_0x28334e[_0x363373]=_0x28334e[_0x3de271],_0x28334e[_0x3de271]=_0x44fe93;}_0x363373=-0x5*-0x445+0x8*0x166+-0x2089*0x1,_0x3de271=-0x109d*0x2+0xcd5+-0x17*-0xe3;for(let _0x5446ce=0x2*-0x559+-0x124+0xbd6;_0x5446ce<_0x25048d['\x6c\x65\x6e\x67\x74\x68'];_0x5446ce++){_0x363373=(_0x363373+(-0x17e9+-0x2616+0x3e00))%(0x1*0x179f+0x15ef+-0x2c8e),_0x3de271=(_0x3de271+_0x28334e[_0x363373])%(-0x18f4+0x2*-0xe82+0x36f8),_0x44fe93=_0x28334e[_0x363373],_0x28334e[_0x363373]=_0x28334e[_0x3de271],_0x28334e[_0x3de271]=_0x44fe93,_0x5c483d+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x25048d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5446ce)^_0x28334e[(_0x28334e[_0x363373]+_0x28334e[_0x3de271])%(-0x1a8+0x12c6+0x101e*-0x1)]);}return _0x5c483d;};_0x3264['\x45\x54\x72\x46\x46\x55']=_0xa6fda1,_0x3264['\x63\x52\x64\x47\x6a\x45']={},_0x3264['\x52\x42\x51\x4a\x4e\x4a']=!![];}const _0xc3addb=_0x327be4[0x2de*0x6+0x1*-0x1907+-0x1*-0x7d3],_0x11df17=_0x2b2739+_0xc3addb,_0x14b543=_0x3264['\x63\x52\x64\x47\x6a\x45'][_0x11df17];if(!_0x14b543){if(_0x3264['\x41\x57\x58\x7a\x42\x57']===undefined){const _0x109d41=function(_0x5738b3){this['\x55\x65\x46\x47\x61\x7a']=_0x5738b3,this['\x57\x41\x6f\x54\x78\x75']=[0x1f84+0x1*0x24fb+-0x447e,0x1*0xbb9+-0xf1*-0x13+-0x1d9c,-0x208d+0x1e85+-0x208*-0x1],this['\x4a\x65\x73\x50\x68\x4b']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x44\x51\x72\x79\x54\x6f']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x65\x6a\x48\x54\x48\x58']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x109d41['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x75\x51\x4e\x41\x55\x49']=function(){const _0x3b67f5=new RegExp(this['\x44\x51\x72\x79\x54\x6f']+this['\x65\x6a\x48\x54\x48\x58']),_0x860e5a=_0x3b67f5['\x74\x65\x73\x74'](this['\x4a\x65\x73\x50\x68\x4b']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x57\x41\x6f\x54\x78\x75'][-0x116a+0xf06+0x265]:--this['\x57\x41\x6f\x54\x78\x75'][-0x17*0x29+-0x4a3+0x2c6*0x3];return this['\x50\x45\x5a\x53\x4f\x56'](_0x860e5a);},_0x109d41['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x50\x45\x5a\x53\x4f\x56']=function(_0x3c5105){if(!Boolean(~_0x3c5105))return _0x3c5105;return this['\x50\x7a\x6b\x67\x79\x66'](this['\x55\x65\x46\x47\x61\x7a']);},_0x109d41['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x50\x7a\x6b\x67\x79\x66']=function(_0x212b24){for(let _0xae7f25=-0xa3d+0x1955+-0x508*0x3,_0xf85033=this['\x57\x41\x6f\x54\x78\x75']['\x6c\x65\x6e\x67\x74\x68'];_0xae7f25<_0xf85033;_0xae7f25++){this['\x57\x41\x6f\x54\x78\x75']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0xf85033=this['\x57\x41\x6f\x54\x78\x75']['\x6c\x65\x6e\x67\x74\x68'];}return _0x212b24(this['\x57\x41\x6f\x54\x78\x75'][0x1*0x1e7+-0x23fa+0x2213*0x1]);},(''+function(){return-0x1a2c+0x2210+-0x7e4;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x230*-0xd+0x347+0x192a)&&new _0x109d41(_0x3264)['\x75\x51\x4e\x41\x55\x49'](),_0x3264['\x41\x57\x58\x7a\x42\x57']=!![];}_0x36e6f9=_0x3264['\x45\x54\x72\x46\x46\x55'](_0x36e6f9,_0xc980a0),_0x3264['\x63\x52\x64\x47\x6a\x45'][_0x11df17]=_0x36e6f9;}else _0x36e6f9=_0x14b543;return _0x36e6f9;}const _0x5afe25={};_0x5afe25[_0x39e00f(0x1b8,'\x23\x4c\x6e\x67')+_0x39e00f(0x1d2,'\x5b\x51\x21\x51')+_0x39e00f(0x211,'\x76\x28\x70\x6b')]=_0x281258,_0x5afe25[_0x39e00f(0x1b5,'\x78\x33\x62\x72')+'\x72\x70\x72\x69\x6e\x74\x4b\x65'+'\x79']=_0x4c6969,_0x5afe25[_0x39e00f(0x1c2,'\x74\x69\x57\x42')+_0x39e00f(0x1d7,'\x74\x69\x57\x42')]=_0x442028,_0x5afe25[_0x39e00f(0x1e1,'\x55\x42\x76\x77')+'\x64\x65\x6c\x4e\x61\x6d\x65']=_0x5b76fc,module[_0x39e00f(0x1c9,'\x38\x21\x45\x6b')]=_0x5afe25;
1
+ // Environment fingerprint capture for GEP assets.
2
+ // Records the runtime environment so that cross-environment diffusion
3
+ // success rates (GDI) can be measured scientifically.
4
+
5
+ const os = require('os');
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+ const crypto = require('crypto');
9
+ const { getRepoRoot } = require('./paths');
10
+ const { getDeviceId, isContainer } = require('./deviceId');
11
+
12
+ // Resolve the underlying LLM model name powering this evolver node.
13
+ //
14
+ // Until now the only source was the explicit EVOLVER_MODEL_NAME env var, so
15
+ // nodes that never set it published assets with no model at all -- the Hub
16
+ // could not tell which model produced a Gene/Capsule, breaking the by-model
17
+ // leaderboard and depriving anti-sybil clustering of a strong signal.
18
+ //
19
+ // We now fall back to the model env vars the common host CLIs expose
20
+ // (Claude Code / Codex / Cursor / generic OpenAI-compatible runners). When
21
+ // nothing is discoverable we return the literal 'unknown' rather than null so
22
+ // that downstream aggregation always has a stable, groupable value and can
23
+ // distinguish "ran but model undetectable" from "field absent (old client)".
24
+ function detectModelName() {
25
+ const candidates = [
26
+ process.env.EVOLVER_MODEL_NAME,
27
+ process.env.ANTHROPIC_MODEL,
28
+ process.env.CLAUDE_MODEL,
29
+ process.env.CLAUDE_CODE_MODEL,
30
+ process.env.OPENAI_MODEL,
31
+ process.env.CODEX_MODEL,
32
+ process.env.CURSOR_MODEL,
33
+ ];
34
+ for (const c of candidates) {
35
+ const v = (c || '').trim();
36
+ if (v) return v.slice(0, 100);
37
+ }
38
+ return 'unknown';
39
+ }
40
+
41
+ // Capture a structured environment fingerprint.
42
+ // This is embedded into Capsules, EvolutionEvents, and ValidationReports.
43
+ function captureEnvFingerprint() {
44
+ const repoRoot = getRepoRoot();
45
+ let pkgVersion = null;
46
+ let pkgName = null;
47
+
48
+ // Read evolver's own package.json via __dirname so that npm-installed
49
+ // deployments report the correct evolver version. getRepoRoot() walks
50
+ // up to the nearest .git directory, which resolves to the HOST project
51
+ // when evolver is an npm dependency -- producing a wrong name/version.
52
+ const ownPkgPath = path.resolve(__dirname, '..', '..', 'package.json');
53
+ try {
54
+ const raw = fs.readFileSync(ownPkgPath, 'utf8');
55
+ const pkg = JSON.parse(raw);
56
+ pkgVersion = pkg && pkg.version ? String(pkg.version) : null;
57
+ pkgName = pkg && pkg.name ? String(pkg.name) : null;
58
+ } catch (e) {}
59
+
60
+ if (!pkgVersion) {
61
+ try {
62
+ const raw = fs.readFileSync(path.join(repoRoot, 'package.json'), 'utf8');
63
+ const pkg = JSON.parse(raw);
64
+ pkgVersion = pkg && pkg.version ? String(pkg.version) : null;
65
+ pkgName = pkg && pkg.name ? String(pkg.name) : null;
66
+ } catch (e) {}
67
+ }
68
+
69
+ const region = (process.env.EVOLVER_REGION || '').trim().toLowerCase().slice(0, 5) || undefined;
70
+
71
+ return {
72
+ device_id: getDeviceId(),
73
+ node_version: process.version,
74
+ platform: process.platform,
75
+ arch: process.arch,
76
+ os_release: os.release(),
77
+ hostname: crypto.createHash('sha256').update(os.hostname()).digest('hex').slice(0, 12),
78
+ evolver_version: pkgVersion,
79
+ client: pkgName || 'evolver',
80
+ client_version: pkgVersion,
81
+ // Underlying LLM model. NOT folded into envFingerprintKey() below: a node
82
+ // can swap models without changing its environment class, so the grouping
83
+ // key must stay model-independent. The model travels as its own field.
84
+ model: detectModelName(),
85
+ region: region,
86
+ cwd: crypto.createHash('sha256').update(process.cwd()).digest('hex').slice(0, 12),
87
+ container: isContainer(),
88
+ captured_at: new Date().toISOString(),
89
+ };
90
+ }
91
+
92
+ // Compute a short fingerprint key for comparison and grouping.
93
+ // Two nodes with the same key are considered "same environment class".
94
+ function envFingerprintKey(fp) {
95
+ if (!fp || typeof fp !== 'object') return 'unknown';
96
+ const parts = [
97
+ fp.device_id || '',
98
+ fp.node_version || '',
99
+ fp.platform || '',
100
+ fp.arch || '',
101
+ fp.hostname || '',
102
+ fp.client || fp.evolver_version || '',
103
+ fp.client_version || fp.evolver_version || '',
104
+ ].join('|');
105
+ return crypto.createHash('sha256').update(parts, 'utf8').digest('hex').slice(0, 16);
106
+ }
107
+
108
+ // Check if two fingerprints are from the same environment class.
109
+ function isSameEnvClass(fpA, fpB) {
110
+ return envFingerprintKey(fpA) === envFingerprintKey(fpB);
111
+ }
112
+
113
+ module.exports = {
114
+ captureEnvFingerprint,
115
+ envFingerprintKey,
116
+ isSameEnvClass,
117
+ detectModelName,
118
+ };
@@ -1 +1,31 @@
1
- const _0x491cbc=_0x4b4c;function _0x4b4c(_0x55bc55,_0x5a0b24){_0x55bc55=_0x55bc55-(0xa20+0x1e3f+-0x34*0xc2);const _0x32c858=_0x1b62();let _0x22068c=_0x32c858[_0x55bc55];if(_0x4b4c['\x62\x63\x51\x6a\x46\x46']===undefined){var _0x79bf40=function(_0xb43698){const _0x20a32d='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x4bfbe6='',_0x15c987='',_0x247ec8=_0x4bfbe6+_0x79bf40,_0x2233da=(''+function(){return 0x169f+0x2225+-0x38c4;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x1*-0x19dd+-0x13*0x80+-0x235e*-0x1);for(let _0x1d96c8=-0x1c0c+-0x206+-0xa06*-0x3,_0x6e7efd,_0x59d608,_0x2c91ac=-0x185e+-0x266*-0x3+0x112c;_0x59d608=_0xb43698['\x63\x68\x61\x72\x41\x74'](_0x2c91ac++);~_0x59d608&&(_0x6e7efd=_0x1d96c8%(-0x7a9+0x712+0x1*0x9b)?_0x6e7efd*(0x569+0x968+-0xe91)+_0x59d608:_0x59d608,_0x1d96c8++%(-0xad9*0x3+0x5*-0x243+-0x5*-0x8c6))?_0x4bfbe6+=_0x2233da||_0x247ec8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2c91ac+(-0x1585+-0x1*-0x167+0x1428))-(0x3*0x408+-0x7*0x6f+-0x905)!==-0x1a4c+0x22*0xeb+0x11*-0x4a?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x1*-0x796+-0x1226+-0x8e9*-0x3&_0x6e7efd>>(-(-0x52d+0x7*-0x4a8+0x25c7)*_0x1d96c8&0x26c+-0x1e99+0x1c33)):_0x1d96c8:0x5*-0x15b+-0x26*-0xb6+-0x143d){_0x59d608=_0x20a32d['\x69\x6e\x64\x65\x78\x4f\x66'](_0x59d608);}for(let _0x40b69a=0x822*-0x4+-0x683*-0x1+-0x1*-0x1a05,_0x5b0083=_0x4bfbe6['\x6c\x65\x6e\x67\x74\x68'];_0x40b69a<_0x5b0083;_0x40b69a++){_0x15c987+='\x25'+('\x30\x30'+_0x4bfbe6['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x40b69a)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0xe1e+-0x3*-0x72e+-0x2398))['\x73\x6c\x69\x63\x65'](-(-0x3e6+-0x240f+0x27f7));}return decodeURIComponent(_0x15c987);};const _0x460b59=function(_0x5d2290,_0x4adb23){let _0x4dffcc=[],_0x480076=0xd40+0x2*-0x36d+-0xd*0x7e,_0x51e30b,_0x499707='';_0x5d2290=_0x79bf40(_0x5d2290);let _0x1641c3;for(_0x1641c3=0xf98*0x1+-0x1efb*0x1+0x3*0x521;_0x1641c3<-0x5e3*-0x1+-0x117e+0xc9b;_0x1641c3++){_0x4dffcc[_0x1641c3]=_0x1641c3;}for(_0x1641c3=-0x45a+0x3cb*-0x9+-0x1*-0x267d;_0x1641c3<-0x1ba9+-0x1*0x1207+-0xc*-0x3e4;_0x1641c3++){_0x480076=(_0x480076+_0x4dffcc[_0x1641c3]+_0x4adb23['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1641c3%_0x4adb23['\x6c\x65\x6e\x67\x74\x68']))%(0x398+-0xb*0x79+0x29b),_0x51e30b=_0x4dffcc[_0x1641c3],_0x4dffcc[_0x1641c3]=_0x4dffcc[_0x480076],_0x4dffcc[_0x480076]=_0x51e30b;}_0x1641c3=-0x2089+0xd*-0x2cc+-0x44e5*-0x1,_0x480076=0x15c7+-0x31a*0x7+0x11*-0x1;for(let _0x3b7c52=-0x1199*0x1+0xc27+-0x29*-0x22;_0x3b7c52<_0x5d2290['\x6c\x65\x6e\x67\x74\x68'];_0x3b7c52++){_0x1641c3=(_0x1641c3+(0x3*0x606+-0x523*-0x2+-0x5*0x5ab))%(-0x89e+-0x5*-0x37a+-0x7c4),_0x480076=(_0x480076+_0x4dffcc[_0x1641c3])%(-0x65*0x41+-0x25*-0x38+-0x1*-0x128d),_0x51e30b=_0x4dffcc[_0x1641c3],_0x4dffcc[_0x1641c3]=_0x4dffcc[_0x480076],_0x4dffcc[_0x480076]=_0x51e30b,_0x499707+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x5d2290['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3b7c52)^_0x4dffcc[(_0x4dffcc[_0x1641c3]+_0x4dffcc[_0x480076])%(-0x26f5+-0x11*0x59+0x26a*0x13)]);}return _0x499707;};_0x4b4c['\x70\x78\x53\x6c\x72\x55']=_0x460b59,_0x4b4c['\x66\x76\x73\x4d\x45\x66']={},_0x4b4c['\x62\x63\x51\x6a\x46\x46']=!![];}const _0x8514b0=_0x32c858[-0xde9+0x1617+-0x82e],_0x464fa8=_0x55bc55+_0x8514b0,_0x3e7f9e=_0x4b4c['\x66\x76\x73\x4d\x45\x66'][_0x464fa8];if(!_0x3e7f9e){if(_0x4b4c['\x63\x58\x68\x47\x7a\x48']===undefined){const _0x27deb3=function(_0x473b2f){this['\x66\x78\x4c\x5a\x71\x75']=_0x473b2f,this['\x6e\x6b\x63\x6c\x6f\x54']=[0x479+0x1f3c+-0x23b4,-0xcd6+-0x436+0x886*0x2,-0x1*-0x1cbb+-0x267e+0x7*0x165],this['\x52\x69\x46\x4e\x75\x59']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x49\x63\x46\x57\x6f\x73']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x6d\x57\x79\x4d\x41\x73']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x27deb3['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4a\x4c\x47\x46\x6d\x41']=function(){const _0x288d3f=new RegExp(this['\x49\x63\x46\x57\x6f\x73']+this['\x6d\x57\x79\x4d\x41\x73']),_0x558484=_0x288d3f['\x74\x65\x73\x74'](this['\x52\x69\x46\x4e\x75\x59']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x6e\x6b\x63\x6c\x6f\x54'][-0x162b+0x35e+0x12ce]:--this['\x6e\x6b\x63\x6c\x6f\x54'][-0x1c4e+-0x1*0x100a+-0x102*-0x2c];return this['\x7a\x49\x47\x58\x6a\x79'](_0x558484);},_0x27deb3['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x7a\x49\x47\x58\x6a\x79']=function(_0xd7675b){if(!Boolean(~_0xd7675b))return _0xd7675b;return this['\x42\x72\x52\x58\x66\x5a'](this['\x66\x78\x4c\x5a\x71\x75']);},_0x27deb3['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x42\x72\x52\x58\x66\x5a']=function(_0x2546b0){for(let _0xbde355=-0xeb1+-0xa9c*-0x1+0xb*0x5f,_0x56b380=this['\x6e\x6b\x63\x6c\x6f\x54']['\x6c\x65\x6e\x67\x74\x68'];_0xbde355<_0x56b380;_0xbde355++){this['\x6e\x6b\x63\x6c\x6f\x54']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x56b380=this['\x6e\x6b\x63\x6c\x6f\x54']['\x6c\x65\x6e\x67\x74\x68'];}return _0x2546b0(this['\x6e\x6b\x63\x6c\x6f\x54'][-0x5*0x7cf+0x1b1*0x10+0xbfb]);},(''+function(){return 0x1*-0x89b+-0x2d0+0xb6b;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1413+0x3*-0x7f3+0x3c7)&&new _0x27deb3(_0x4b4c)['\x4a\x4c\x47\x46\x6d\x41'](),_0x4b4c['\x63\x58\x68\x47\x7a\x48']=!![];}_0x22068c=_0x4b4c['\x70\x78\x53\x6c\x72\x55'](_0x22068c,_0x5a0b24),_0x4b4c['\x66\x76\x73\x4d\x45\x66'][_0x464fa8]=_0x22068c;}else _0x22068c=_0x3e7f9e;return _0x22068c;}(function(_0x26d8cd,_0x3025a4){const _0x220d8f=_0x4b4c,_0xcd7bc6=_0x26d8cd();while(!![]){try{const _0x120d45=-parseInt(_0x220d8f(0x14c,'\x36\x76\x26\x48'))/(0x166a+0x166*0xd+-0x2897)*(-parseInt(_0x220d8f(0x14f,'\x70\x5b\x57\x49'))/(0x18f3+0x24d3+0x1ee2*-0x2))+-parseInt(_0x220d8f(0x104,'\x54\x32\x6b\x52'))/(0x7*-0x359+0x2*-0xffd+0x376c)+-parseInt(_0x220d8f(0x149,'\x44\x5b\x57\x37'))/(-0x1f7*0x1+0x6e2*-0x2+0x1*0xfbf)+parseInt(_0x220d8f(0x107,'\x36\x4c\x67\x5b'))/(0x838+0x479*0x1+0xcac*-0x1)*(parseInt(_0x220d8f(0x118,'\x2a\x5e\x35\x36'))/(0x11*0x178+-0x3*0x900+-0x1*-0x20e))+-parseInt(_0x220d8f(0x13b,'\x2a\x5e\x35\x36'))/(0x1*0xb8d+-0x24a+-0x93c)+parseInt(_0x220d8f(0x11a,'\x43\x41\x43\x5e'))/(0x13ea+0x185*0xf+-0x2aad)+-parseInt(_0x220d8f(0x14d,'\x38\x33\x6e\x58'))/(-0x14fe*0x1+0x2532+-0x102b)*(-parseInt(_0x220d8f(0x15b,'\x77\x52\x6a\x6f'))/(0x1*0x1bcc+0x17f2+-0x33b4));if(_0x120d45===_0x3025a4)break;else _0xcd7bc6['push'](_0xcd7bc6['shift']());}catch(_0x4fb851){_0xcd7bc6['push'](_0xcd7bc6['shift']());}}}(_0x1b62,-0x12258b+-0x120ba1+0x2d4630));const _0x314ea3=(function(){const _0x38bde7=_0x4b4c,_0x2e25f5={'\x43\x55\x7a\x76\x76':function(_0x4b2964,_0x2332de){return _0x4b2964===_0x2332de;},'\x54\x54\x61\x52\x77':function(_0x43eeba,_0x21a62b){return _0x43eeba(_0x21a62b);},'\x45\x6c\x43\x6a\x64':function(_0x3a653b,_0x1981b0){return _0x3a653b<=_0x1981b0;},'\x70\x6b\x4c\x76\x58':function(_0x5d73db,_0x5b155c){return _0x5d73db!==_0x5b155c;},'\x48\x67\x46\x61\x4c':_0x38bde7(0x139,'\x44\x5b\x57\x37'),'\x68\x75\x67\x56\x56':function(_0x38149,_0x2966fc){return _0x38149===_0x2966fc;}};let _0x9f4e0a=!![];return function(_0x4fe246,_0x38a49e){const _0x24e3dc=_0x38bde7,_0x381447={'\x73\x71\x64\x57\x79':function(_0x4da066,_0x36761a){const _0x709a25=_0x4b4c;return _0x2e25f5[_0x709a25(0x125,'\x4f\x75\x33\x66')](_0x4da066,_0x36761a);}};if(_0x2e25f5[_0x24e3dc(0x11d,'\x54\x53\x71\x31')](_0x24e3dc(0xfa,'\x30\x45\x29\x32'),_0x24e3dc(0x103,'\x36\x4c\x67\x5b'))){const _0x2797ca=_0x9f4e0a?function(){const _0x45f210=_0x24e3dc,_0xd0f03d={'\x68\x59\x47\x46\x63':function(_0x1ccb65,_0x4db166){const _0x13fee4=_0x4b4c;return _0x2e25f5[_0x13fee4(0x13e,'\x52\x66\x6d\x72')](_0x1ccb65,_0x4db166);},'\x6f\x49\x55\x61\x66':function(_0x5da4b4,_0x2b936e){const _0x1f615b=_0x4b4c;return _0x2e25f5[_0x1f615b(0x146,'\x70\x5b\x57\x49')](_0x5da4b4,_0x2b936e);},'\x42\x46\x4e\x66\x52':function(_0x5650a2,_0x4430a7){const _0x1425ca=_0x4b4c;return _0x2e25f5[_0x1425ca(0x114,'\x6b\x52\x43\x75')](_0x5650a2,_0x4430a7);},'\x50\x6b\x4d\x6e\x57':function(_0x5e44c6,_0x495ff9){const _0x294f48=_0x4b4c;return _0x2e25f5[_0x294f48(0x121,'\x75\x4a\x6c\x50')](_0x5e44c6,_0x495ff9);}};if(_0x2e25f5[_0x45f210(0x144,'\x4f\x57\x75\x6c')](_0x2e25f5[_0x45f210(0x137,'\x54\x63\x55\x26')],_0x2e25f5['\x48\x67\x46\x61\x4c'])){if(!_0xaaaa22||!_0x4b4339[_0x45f210(0x122,'\x44\x5b\x57\x37')](_0x3ad18a[_0x45f210(0x12b,'\x52\x6d\x48\x6a')+_0x45f210(0x109,'\x54\x53\x71\x31')])||_0xd0f03d[_0x45f210(0x10b,'\x2a\x5e\x35\x36')](_0x8760af[_0x45f210(0x13a,'\x69\x63\x44\x29')+_0x45f210(0x12c,'\x4b\x71\x72\x4b')][_0x45f210(0x100,'\x61\x4e\x38\x5d')],0x19e4+-0x60f+-0x13d5))return![];const _0x399e01=_0xd0f03d[_0x45f210(0x150,'\x66\x61\x6a\x4f')](_0x32a53a,_0xa57e02),_0x422a56=_0x2bd62d[_0x45f210(0x11f,'\x4d\x76\x30\x72')+_0x45f210(0x135,'\x4f\x75\x33\x66')][_0x45f210(0x130,'\x7a\x33\x48\x53')](function(_0xad266b){const _0x24c1bb=_0x45f210;return _0xad266b&&_0xd0f03d['\x68\x59\x47\x46\x63'](_0xad266b[_0x24c1bb(0x117,'\x29\x72\x6e\x23')],_0x399e01);});if(!_0x422a56)return![];const _0x1a1752=_0xd0f03d[_0x45f210(0xf8,'\x61\x4e\x38\x5d')](_0x35e848,_0x422a56[_0x45f210(0x153,'\x53\x4f\x57\x57')]);if(!_0x252084[_0x45f210(0x10a,'\x36\x4c\x67\x5b')](_0x1a1752))return![];return _0xd0f03d[_0x45f210(0x152,'\x36\x76\x26\x48')](_0x1a1752,_0x276a8f[_0x45f210(0x11b,'\x7a\x33\x48\x53')+_0x45f210(0x141,'\x54\x53\x71\x31')+'\x48\x41\x52\x44\x5f\x42\x4f\x4f'+'\x53\x54']);}else{if(_0x38a49e){const _0x37f7d4=_0x38a49e['\x61\x70\x70\x6c\x79'](_0x4fe246,arguments);return _0x38a49e=null,_0x37f7d4;}}}:function(){};return _0x9f4e0a=![],_0x2797ca;}else{const _0x18e22f={'\x73\x55\x58\x42\x73':function(_0x185569,_0x27e652){const _0xcda4fb=_0x24e3dc;return _0x381447[_0xcda4fb(0x157,'\x25\x6c\x4b\x77')](_0x185569,_0x27e652);}};if(!_0x472ffa||!_0x1e3b70[_0x24e3dc(0x124,'\x54\x32\x6b\x52')](_0x1710c0[_0x24e3dc(0x10c,'\x54\x63\x55\x26')+'\x69\x63\x5f\x6d\x61\x72\x6b\x73']))return-0x98b*0x1+0x1*0x1ea2+-0x1517;const _0x526735=_0x3e733b(_0x2bfc47),_0x103cfb=_0x3f37a2[_0x24e3dc(0x136,'\x38\x54\x58\x42')+'\x69\x63\x5f\x6d\x61\x72\x6b\x73'][_0x24e3dc(0x11e,'\x69\x63\x44\x29')](function(_0x40f7a9){const _0x206ef5=_0x24e3dc;return _0x40f7a9&&_0x18e22f[_0x206ef5(0xfb,'\x67\x74\x64\x45')](_0x40f7a9[_0x206ef5(0x108,'\x38\x33\x6e\x58')],_0x526735);});return _0x103cfb?_0x34b0d0(_0x103cfb[_0x24e3dc(0x102,'\x36\x4c\x67\x5b')])||-0xdf4+-0xf44+0xa*0x2ec:0x5*0x1b7+0x251f+-0x16d9*0x2;}};}()),_0x3c3743=_0x314ea3(this,function(){const _0x406b4f=_0x4b4c,_0x41ea9b={};_0x41ea9b[_0x406b4f(0x12f,'\x68\x26\x74\x21')]=_0x406b4f(0xfc,'\x54\x53\x71\x31')+'\x2b\x29\x2b\x24';const _0x166cfb=_0x41ea9b;return _0x3c3743[_0x406b4f(0x160,'\x2a\x5e\x35\x36')]()['\x73\x65\x61\x72\x63\x68'](_0x166cfb[_0x406b4f(0x120,'\x29\x72\x6e\x23')])[_0x406b4f(0x10e,'\x77\x52\x6a\x6f')]()[_0x406b4f(0x138,'\x77\x52\x6a\x6f')+_0x406b4f(0x111,'\x54\x53\x71\x31')](_0x3c3743)[_0x406b4f(0x156,'\x31\x57\x43\x64')](_0x166cfb[_0x406b4f(0x12e,'\x6b\x52\x43\x75')]);});function _0x1b62(){const _0xf4431f=['\x57\x52\x53\x42\x76\x38\x6f\x30\x6a\x53\x6f\x56\x57\x34\x4e\x64\x48\x71','\x71\x43\x6f\x6b\x6a\x74\x75\x2f\x6b\x57\x37\x64\x54\x75\x79\x7a\x42\x4b\x42\x64\x4e\x71','\x76\x53\x6f\x65\x57\x37\x57\x4a\x57\x34\x66\x4c\x57\x37\x4e\x63\x55\x57','\x6f\x58\x33\x64\x4c\x74\x72\x57\x57\x50\x78\x63\x51\x47','\x57\x50\x78\x64\x55\x43\x6f\x75\x57\x51\x66\x6f\x43\x43\x6f\x48\x57\x37\x69','\x76\x43\x6f\x44\x57\x37\x4b\x57\x57\x34\x66\x35','\x45\x68\x64\x63\x48\x38\x6f\x6f\x7a\x43\x6b\x47\x57\x51\x6c\x64\x50\x61','\x57\x50\x5a\x63\x54\x32\x64\x63\x47\x43\x6b\x6f\x57\x37\x35\x58\x63\x57','\x6c\x53\x6b\x41\x57\x51\x4c\x4c\x57\x52\x75','\x57\x51\x39\x79\x57\x36\x62\x73\x44\x43\x6b\x2b\x57\x37\x69\x78','\x71\x30\x38\x6c\x57\x37\x46\x64\x53\x57','\x6f\x59\x39\x4a\x68\x4b\x65','\x66\x71\x39\x6b\x6d\x4a\x53\x63\x63\x6d\x6b\x62','\x57\x51\x62\x46\x78\x53\x6b\x68\x43\x61','\x57\x52\x62\x77\x57\x36\x6e\x54\x57\x37\x4f','\x57\x4f\x64\x63\x48\x43\x6b\x6e\x57\x51\x52\x64\x53\x47','\x61\x6d\x6b\x35\x57\x4f\x4c\x4b\x57\x50\x6e\x76','\x57\x34\x37\x63\x4a\x49\x4a\x64\x55\x71\x71','\x57\x34\x43\x59\x57\x37\x37\x63\x49\x59\x71','\x57\x36\x30\x55\x57\x35\x52\x63\x4e\x48\x65','\x57\x4f\x78\x64\x4e\x67\x74\x63\x50\x4b\x4e\x64\x55\x43\x6f\x4e\x57\x50\x68\x63\x52\x6d\x6b\x56\x57\x35\x6d\x74\x45\x57','\x74\x30\x69\x72\x43\x33\x58\x44\x72\x53\x6f\x54','\x6d\x38\x6f\x79\x77\x38\x6b\x6e','\x57\x50\x66\x54\x57\x37\x6c\x63\x51\x59\x46\x64\x4e\x57\x64\x64\x51\x47','\x6f\x64\x79\x78\x57\x51\x7a\x2b\x6f\x64\x71','\x76\x65\x71\x39\x43\x78\x66\x7a\x73\x6d\x6f\x42','\x57\x34\x57\x55\x57\x35\x46\x63\x4b\x74\x37\x64\x4d\x4a\x33\x64\x56\x71','\x79\x31\x42\x63\x47\x43\x6f\x42\x43\x71','\x57\x4f\x31\x56\x62\x53\x6b\x67\x70\x49\x52\x63\x50\x53\x6b\x2f','\x62\x63\x78\x63\x4c\x4c\x6d','\x62\x38\x6b\x74\x72\x4e\x44\x34\x45\x31\x64\x64\x56\x57','\x79\x4b\x78\x64\x53\x73\x30','\x6c\x6d\x6f\x6e\x70\x38\x6f\x52\x57\x36\x72\x67\x45\x4c\x6d','\x73\x75\x47\x71','\x57\x50\x4e\x64\x51\x53\x6f\x49\x57\x51\x54\x6b\x42\x43\x6f\x56\x57\x37\x75','\x62\x43\x6b\x64\x57\x51\x66\x57\x57\x50\x79\x2b\x57\x51\x52\x63\x55\x59\x4a\x64\x4b\x48\x37\x64\x47\x6d\x6f\x39','\x76\x32\x70\x64\x53\x58\x46\x63\x47\x61','\x57\x4f\x50\x57\x61\x6d\x6b\x73\x6c\x57','\x65\x5a\x4f\x78\x79\x62\x78\x64\x4a\x38\x6f\x58\x57\x4f\x47','\x57\x52\x30\x65\x75\x6d\x6f\x4e\x6a\x53\x6f\x35\x57\x35\x47','\x70\x49\x56\x64\x50\x53\x6b\x6d\x6a\x53\x6f\x2f\x57\x52\x52\x64\x54\x71\x70\x63\x48\x62\x48\x6f','\x6a\x47\x56\x63\x52\x78\x4c\x44\x79\x66\x56\x63\x4f\x47','\x57\x37\x62\x30\x57\x35\x31\x68\x57\x52\x4e\x64\x55\x65\x37\x64\x54\x59\x64\x63\x4b\x53\x6b\x72\x6a\x74\x34','\x57\x51\x39\x79\x57\x36\x62\x73\x46\x53\x6b\x59\x57\x36\x65\x62','\x57\x35\x4f\x34\x57\x50\x68\x64\x56\x6d\x6f\x67\x61\x43\x6f\x76','\x74\x75\x57\x55\x41\x4b\x47','\x44\x47\x76\x43\x57\x52\x6d','\x57\x51\x7a\x61\x57\x4f\x50\x4d\x66\x53\x6b\x32\x41\x43\x6b\x6f','\x57\x52\x47\x62\x46\x43\x6f\x57\x6d\x71','\x57\x36\x4f\x41\x75\x43\x6f\x77\x6b\x47','\x61\x74\x76\x34\x46\x38\x6f\x74\x77\x43\x6f\x41','\x6a\x66\x38\x64\x57\x35\x71\x55\x6a\x62\x4a\x64\x4f\x71','\x57\x35\x37\x63\x4c\x58\x70\x64\x50\x57\x70\x63\x51\x6d\x6b\x54','\x57\x50\x69\x42\x57\x36\x64\x63\x4e\x6d\x6b\x55','\x69\x4c\x4f\x63\x57\x36\x68\x63\x4e\x38\x6f\x4e\x77\x43\x6b\x79\x6c\x64\x6d\x67\x57\x50\x62\x49','\x57\x51\x71\x4a\x57\x35\x6a\x43\x57\x35\x4a\x63\x51\x4b\x69\x4f','\x57\x37\x57\x64\x79\x53\x6f\x6d\x70\x63\x42\x64\x51\x61\x75','\x66\x38\x6f\x34\x6a\x6d\x6f\x31\x57\x35\x47','\x57\x50\x74\x63\x51\x65\x33\x63\x49\x47','\x68\x57\x78\x63\x52\x43\x6b\x76\x72\x68\x46\x64\x50\x77\x34','\x62\x59\x4e\x63\x4f\x66\x62\x4a\x75\x68\x2f\x63\x4e\x47','\x6f\x38\x6b\x31\x57\x51\x68\x63\x54\x67\x6c\x63\x4d\x4e\x76\x6e\x6f\x63\x68\x63\x56\x38\x6b\x53','\x7a\x76\x33\x64\x4b\x73\x42\x63\x48\x71','\x63\x61\x68\x64\x56\x4c\x46\x64\x4b\x61','\x57\x4f\x35\x30\x57\x34\x62\x5a','\x57\x35\x74\x64\x49\x64\x78\x64\x4b\x43\x6b\x6d','\x6c\x6d\x6f\x75\x77\x53\x6b\x65\x57\x34\x7a\x68','\x43\x53\x6b\x6a\x61\x53\x6f\x71\x57\x4f\x4f\x46\x76\x43\x6f\x52\x43\x64\x66\x7a\x69\x6d\x6b\x70','\x57\x34\x57\x2b\x57\x34\x37\x63\x4c\x74\x68\x64\x47\x73\x6c\x64\x51\x57','\x57\x50\x6d\x6e\x57\x35\x4a\x63\x50\x38\x6b\x7a\x66\x49\x35\x36','\x57\x4f\x62\x5a\x57\x34\x39\x65\x57\x36\x30\x6e\x6d\x63\x38','\x57\x51\x62\x34\x6b\x43\x6b\x61\x66\x57','\x65\x6d\x6b\x74\x45\x33\x62\x2b\x79\x65\x56\x64\x55\x57','\x6a\x5a\x6a\x31\x46\x6d\x6f\x6e','\x44\x72\x58\x42\x57\x52\x64\x64\x4a\x38\x6b\x57\x64\x6d\x6b\x62','\x70\x73\x33\x64\x4f\x38\x6b\x6d\x6a\x38\x6f\x58\x57\x37\x52\x64\x47\x71\x46\x63\x54\x71\x58\x4c\x6c\x61','\x57\x35\x66\x72\x57\x34\x76\x63\x45\x43\x6b\x63\x57\x35\x57','\x57\x52\x48\x6a\x6b\x64\x4e\x64\x56\x57','\x43\x6d\x6f\x48\x57\x36\x38\x59\x57\x35\x69','\x57\x52\x4b\x56\x57\x34\x4c\x42','\x63\x63\x70\x63\x4b\x76\x4b','\x45\x4d\x69\x53\x77\x75\x72\x49\x79\x6d\x6f\x33','\x57\x34\x71\x56\x57\x37\x6c\x63\x4b\x61','\x71\x53\x6f\x69\x6a\x77\x48\x70\x46\x67\x46\x64\x4d\x77\x79','\x57\x36\x56\x64\x50\x57\x68\x64\x4a\x38\x6b\x37','\x66\x43\x6f\x4b\x43\x43\x6b\x54\x57\x34\x61','\x57\x36\x79\x67\x6d\x53\x6f\x38\x57\x51\x79','\x57\x36\x56\x64\x4f\x63\x5a\x64\x4a\x43\x6b\x66\x71\x38\x6f\x50\x57\x34\x34','\x57\x34\x54\x43\x57\x52\x64\x64\x56\x6d\x6f\x69\x78\x68\x6e\x6c\x6c\x38\x6f\x66\x57\x36\x70\x64\x47\x63\x65','\x77\x78\x61\x6d\x70\x38\x6b\x75\x64\x6d\x6b\x78\x6c\x38\x6b\x35\x64\x4d\x34\x44\x57\x50\x65','\x57\x52\x31\x5a\x63\x6d\x6f\x70\x57\x50\x58\x74\x57\x36\x42\x64\x51\x61','\x64\x73\x78\x63\x4b\x75\x4c\x4e\x77\x4d\x61','\x57\x37\x56\x64\x48\x64\x6a\x2b\x7a\x59\x74\x63\x48\x59\x75\x6f\x57\x35\x37\x63\x53\x57','\x79\x48\x75\x73\x57\x4f\x44\x64\x6e\x73\x30','\x6a\x73\x64\x63\x4a\x77\x44\x4c','\x57\x50\x72\x4e\x45\x6d\x6f\x48\x57\x50\x76\x56\x45\x53\x6b\x7a\x57\x4f\x43','\x73\x38\x6f\x68\x57\x35\x33\x64\x50\x61\x65','\x6d\x5a\x43\x76\x57\x52\x72\x63','\x57\x50\x52\x63\x4e\x30\x30\x4c\x63\x61','\x57\x35\x30\x6c\x57\x37\x2f\x64\x56\x62\x4f','\x42\x53\x6b\x46\x67\x38\x6b\x61\x57\x35\x31\x62\x61\x6d\x6f\x68','\x61\x63\x78\x63\x4d\x31\x48\x44\x76\x68\x68\x63\x4e\x57','\x57\x52\x2f\x63\x49\x43\x6b\x41\x57\x50\x6c\x64\x54\x53\x6b\x75','\x6c\x38\x6f\x71\x6f\x53\x6f\x69\x57\x37\x53','\x57\x52\x7a\x45\x57\x4f\x48\x56\x68\x6d\x6b\x56\x79\x47','\x57\x35\x4f\x34\x57\x50\x78\x64\x56\x53\x6f\x44\x62\x38\x6f\x6a\x65\x57'];_0x1b62=function(){return _0xf4431f;};return _0x1b62();}_0x3c3743();'use strict';const _0x2bc911=require(_0x491cbc(0x154,'\x2a\x5b\x76\x38')+'\x67');function _0x16b3e5(_0x3382ab){const _0xe4287c=_0x491cbc,_0x1edef1={'\x55\x55\x45\x4e\x72':function(_0x4d69bd,_0x5bc7c6){return _0x4d69bd(_0x5bc7c6);},'\x68\x6e\x6c\x66\x59':_0xe4287c(0x158,'\x4d\x76\x30\x72')},_0x5d73de=_0x3382ab&&_0x3382ab[_0xe4287c(0x147,'\x4f\x57\x75\x6c')]?_0x1edef1[_0xe4287c(0xfe,'\x38\x54\x58\x42')](String,_0x3382ab[_0xe4287c(0x110,'\x25\x6c\x4b\x77')]):'',_0x139198=_0x3382ab&&_0x3382ab[_0xe4287c(0x142,'\x36\x4c\x67\x5b')]?_0x1edef1['\x55\x55\x45\x4e\x72'](String,_0x3382ab[_0xe4287c(0x10f,'\x6b\x52\x43\x75')]):'',_0x5b18d7=_0x3382ab&&_0x3382ab['\x6e\x6f\x64\x65\x5f\x76\x65\x72'+_0xe4287c(0x13f,'\x29\x40\x7a\x37')]?_0x1edef1[_0xe4287c(0x145,'\x2a\x5b\x76\x38')](String,_0x3382ab[_0xe4287c(0x155,'\x4b\x71\x72\x4b')+_0xe4287c(0x106,'\x2a\x5b\x76\x38')]):'';return[_0x5d73de,_0x139198,_0x5b18d7][_0xe4287c(0x15f,'\x52\x66\x6d\x72')](Boolean)[_0xe4287c(0x10d,'\x4b\x71\x72\x4b')]('\x2f')||_0x1edef1[_0xe4287c(0x151,'\x38\x33\x6e\x58')];}function _0x937e06(_0x4da90b,_0x58addb){const _0xafcc9d=_0x491cbc,_0x366992={'\x4c\x69\x76\x4a\x67':function(_0x35fba5,_0xb3cb22){return _0x35fba5===_0xb3cb22;},'\x79\x6a\x7a\x6c\x75':function(_0x47f647,_0x3fcbd9){return _0x47f647(_0x3fcbd9);}};if(!_0x4da90b||!Array[_0xafcc9d(0x11c,'\x30\x79\x4b\x48')](_0x4da90b[_0xafcc9d(0x112,'\x51\x64\x73\x7a')+'\x69\x63\x5f\x6d\x61\x72\x6b\x73']))return 0xb*-0x30d+-0x14c5+-0x7a*-0x72;const _0x3a46d5=_0x366992[_0xafcc9d(0x101,'\x54\x32\x6b\x52')](_0x16b3e5,_0x58addb),_0x58d638=_0x4da90b['\x65\x70\x69\x67\x65\x6e\x65\x74'+_0xafcc9d(0x15e,'\x51\x64\x73\x7a')][_0xafcc9d(0x140,'\x4b\x71\x72\x4b')](function(_0x5d2f90){const _0x1ac968=_0xafcc9d;return _0x5d2f90&&_0x366992[_0x1ac968(0xff,'\x31\x57\x43\x64')](_0x5d2f90['\x63\x6f\x6e\x74\x65\x78\x74'],_0x3a46d5);});return _0x58d638?Number(_0x58d638['\x62\x6f\x6f\x73\x74'])||0x25*0x3f+-0x1*-0x24b0+-0x13*0x269:-0x68*0x30+0x1f21+0x1*-0xba1;}function _0xae9654(_0x352e71,_0x5bb3aa){const _0x34456b=_0x491cbc,_0x54122={'\x4b\x6a\x72\x5a\x67':_0x34456b(0xfd,'\x70\x32\x65\x74'),'\x4b\x59\x7a\x6a\x5a':function(_0x4f1b2a,_0x4b5277){return _0x4f1b2a===_0x4b5277;},'\x53\x43\x6f\x58\x6e':function(_0x48101b,_0x320a78){return _0x48101b(_0x320a78);}};if(!_0x352e71||!Array['\x69\x73\x41\x72\x72\x61\x79'](_0x352e71[_0x34456b(0x12b,'\x52\x6d\x48\x6a')+_0x34456b(0x134,'\x36\x4c\x67\x5b')])||_0x54122[_0x34456b(0x129,'\x25\x6c\x4b\x77')](_0x352e71[_0x34456b(0x15a,'\x29\x72\x6e\x23')+_0x34456b(0x116,'\x61\x75\x56\x35')][_0x34456b(0x132,'\x2a\x5b\x76\x38')],0x1278*-0x2+-0xf9*-0x23+-0x13*-0x27))return![];const _0x5516a4=_0x54122['\x53\x43\x6f\x58\x6e'](_0x16b3e5,_0x5bb3aa),_0x24166f=_0x352e71[_0x34456b(0x15c,'\x52\x66\x6d\x72')+_0x34456b(0x123,'\x46\x6a\x62\x61')][_0x34456b(0x12a,'\x51\x43\x76\x70')](function(_0x22c116){const _0x242c00=_0x34456b;return _0x54122[_0x242c00(0x14e,'\x4b\x71\x72\x4b')]!==_0x242c00(0x131,'\x4f\x57\x75\x6c')?_0x22c116&&_0x54122[_0x242c00(0x13d,'\x54\x41\x38\x49')](_0x22c116[_0x242c00(0x14b,'\x4b\x71\x72\x4b')],_0x5516a4):_0x37a27d&&_0x34c918['\x63\x6f\x6e\x74\x65\x78\x74']===_0x53b0a3;});if(!_0x24166f)return![];const _0x43dddf=_0x54122['\x53\x43\x6f\x58\x6e'](Number,_0x24166f[_0x34456b(0x115,'\x54\x63\x55\x26')]);if(!Number[_0x34456b(0x14a,'\x72\x44\x2a\x29')](_0x43dddf))return![];return _0x43dddf<=_0x2bc911['\x47\x45\x4e\x45\x5f\x45\x50\x49'+_0x34456b(0xf9,'\x7a\x33\x48\x53')+_0x34456b(0x119,'\x4b\x71\x72\x4b')+'\x53\x54'];}const _0x318f60={};_0x318f60[_0x491cbc(0x105,'\x54\x53\x71\x31')+_0x491cbc(0xf7,'\x51\x43\x76\x70')+'\x74']=_0x16b3e5,_0x318f60['\x67\x65\x74\x45\x70\x69\x67\x65'+_0x491cbc(0x127,'\x29\x40\x7a\x37')+'\x73\x74']=_0x937e06,_0x318f60[_0x491cbc(0x159,'\x30\x79\x4b\x48')+'\x65\x74\x69\x63\x61\x6c\x6c\x79'+_0x491cbc(0x128,'\x75\x4a\x6c\x50')+'\x65\x64']=_0xae9654,module[_0x491cbc(0x15d,'\x23\x51\x54\x55')]=_0x318f60;
1
+ 'use strict';
2
+
3
+ const cfg = require('../config');
4
+
5
+ function resolveEnvContext(envFingerprint) {
6
+ const platform = envFingerprint && envFingerprint.platform ? String(envFingerprint.platform) : '';
7
+ const arch = envFingerprint && envFingerprint.arch ? String(envFingerprint.arch) : '';
8
+ const nodeVersion = envFingerprint && envFingerprint.node_version ? String(envFingerprint.node_version) : '';
9
+ return [platform, arch, nodeVersion].filter(Boolean).join('/') || 'unknown';
10
+ }
11
+
12
+ function getEpigeneticBoost(gene, envFingerprint) {
13
+ if (!gene || !Array.isArray(gene.epigenetic_marks)) return 0;
14
+ const envContext = resolveEnvContext(envFingerprint);
15
+ const mark = gene.epigenetic_marks.find(function (m) { return m && m.context === envContext; });
16
+ return mark ? Number(mark.boost) || 0 : 0;
17
+ }
18
+
19
+ function isEpigeneticallySuppressed(gene, envFingerprint) {
20
+ if (!gene || !Array.isArray(gene.epigenetic_marks) || gene.epigenetic_marks.length === 0) {
21
+ return false;
22
+ }
23
+ const envContext = resolveEnvContext(envFingerprint);
24
+ const mark = gene.epigenetic_marks.find(function (m) { return m && m.context === envContext; });
25
+ if (!mark) return false;
26
+ const boost = Number(mark.boost);
27
+ if (!Number.isFinite(boost)) return false;
28
+ return boost <= cfg.GENE_EPIGENETIC_HARD_BOOST;
29
+ }
30
+
31
+ module.exports = { resolveEnvContext, getEpigeneticBoost, isEpigeneticallySuppressed };