@evomap/evolver 1.91.1 → 1.91.2
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/index.js +1 -1
- package/package.json +1 -1
- package/src/evolve/guards.js +1 -1
- package/src/evolve/pipeline/collect.js +1 -1
- package/src/evolve/pipeline/dispatch.js +1 -1
- package/src/evolve/pipeline/enrich.js +1 -1
- package/src/evolve/pipeline/hub.js +1 -1
- package/src/evolve/pipeline/select.js +1 -1
- package/src/evolve/pipeline/signals.js +1 -1
- package/src/evolve/utils.js +1 -1
- package/src/evolve.js +1 -1
- package/src/gep/a2aProtocol.js +5175 -1
- package/src/gep/antiAbuseTelemetry.js +233 -1
- package/src/gep/assetStore.js +3 -2
- package/src/gep/autoDistillConv.js +205 -1
- package/src/gep/autoDistillLlm.js +315 -1
- package/src/gep/candidateEval.js +92 -1
- package/src/gep/candidates.js +1 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationDistiller.js +270 -1
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +93 -1
- package/src/gep/curriculum.js +1 -1
- package/src/gep/deviceId.js +218 -1
- package/src/gep/envFingerprint.js +118 -1
- package/src/gep/epigenetics.js +31 -1
- package/src/gep/execBridge.js +712 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +672 -1
- package/src/gep/hubReview.js +212 -1
- package/src/gep/hubSearch.js +544 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +1 -1
- package/src/gep/memoryGraph.js +1449 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +1 -1
- package/src/gep/narrativeMemory.js +1 -1
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +1 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +1 -1
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +1 -1
- package/src/gep/savingsCore.js +1 -1
- package/src/gep/selector.js +1 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +1 -1
- package/src/gep/trajectoryExport.js +3841 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +123 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/trace/extractor.js +2355 -1
- package/src/proxy/trace/usage.js +105 -1
- package/src/webui/client/clientJs/bootstrap.js +6 -0
- package/src/webui/client/clientJs/github.js +225 -0
- package/src/webui/client/clientJs/i18n.js +14 -0
- package/src/webui/client/clientJs/index.js +3 -0
- package/src/webui/client/clientJs/pipelines.js +3 -1
- package/src/webui/client/indexHtml.js +10 -0
- package/src/webui/client/stylesCss.js +61 -0
- package/src/webui/observer/github.js +340 -0
- package/src/webui/observer/index.js +4 -0
- package/src/webui/server/routes.js +11 -0
package/src/gep/deviceId.js
CHANGED
|
@@ -1 +1,218 @@
|
|
|
1
|
-
const _0x4a8a09=_0x3009;(function(_0x18e730,_0x5df4e6){const _0x578912=_0x3009,_0x4b76aa=_0x18e730();while(!![]){try{const _0x592458=-parseInt(_0x578912(0x1ed,'\x4f\x66\x6d\x5b'))/(0xfe2+0x20cb*-0x1+0x1*0x10ea)+-parseInt(_0x578912(0x16d,'\x49\x52\x32\x71'))/(0xd6*0x6+-0x1bfb+0x1*0x16f9)*(-parseInt(_0x578912(0x14c,'\x53\x71\x31\x29'))/(0x771+-0x2058+0x18ea))+-parseInt(_0x578912(0x171,'\x46\x24\x46\x35'))/(-0xae5+-0x27e+0x2f*0x49)*(parseInt(_0x578912(0x11a,'\x38\x44\x6b\x59'))/(0x1*0x22d3+0xf08+-0x31d6))+parseInt(_0x578912(0x1e6,'\x33\x67\x69\x5a'))/(-0x3*-0x38f+-0x529*-0x2+0x5b*-0x3b)+parseInt(_0x578912(0x16c,'\x68\x74\x32\x24'))/(0x1f2b+0x3c6*-0x2+-0x5*0x4b8)*(-parseInt(_0x578912(0x211,'\x4e\x6d\x5b\x43'))/(-0x4f*-0x5f+0x66e+-0x23b7))+-parseInt(_0x578912(0x1b8,'\x6c\x42\x43\x72'))/(0x1c88+0x11*-0xe5+-0xd4a)+parseInt(_0x578912(0x172,'\x39\x38\x4a\x29'))/(-0x3*0xbbc+0x13e9+-0x19*-0x9d);if(_0x592458===_0x5df4e6)break;else _0x4b76aa['push'](_0x4b76aa['shift']());}catch(_0x50e318){_0x4b76aa['push'](_0x4b76aa['shift']());}}}(_0x1a77,0xd6df9*0x1+-0x1192f*0x1+-0x44c8e));const _0x123084=(function(){let _0x42bbe0=!![];return function(_0x2af907,_0x40cb61){const _0x389877=_0x42bbe0?function(){const _0x534ebb=_0x3009;if(_0x40cb61){const _0x4ad29a=_0x40cb61[_0x534ebb(0xff,'\x46\x24\x46\x35')](_0x2af907,arguments);return _0x40cb61=null,_0x4ad29a;}}:function(){};return _0x42bbe0=![],_0x389877;};}()),_0x5df302=_0x123084(this,function(){const _0x4d9cd7=_0x3009,_0x4c4772={};_0x4c4772['\x44\x4f\x6c\x4a\x50']=_0x4d9cd7(0x1c6,'\x49\x6d\x4a\x23')+_0x4d9cd7(0xee,'\x49\x44\x42\x4d');const _0x39eba7=_0x4c4772;return _0x5df302[_0x4d9cd7(0x14b,'\x49\x6d\x4a\x23')]()[_0x4d9cd7(0x21a,'\x33\x67\x69\x5a')](_0x39eba7['\x44\x4f\x6c\x4a\x50'])[_0x4d9cd7(0x19c,'\x31\x74\x32\x72')]()[_0x4d9cd7(0x14f,'\x47\x21\x70\x7a')+_0x4d9cd7(0x113,'\x49\x6e\x4f\x6b')](_0x5df302)[_0x4d9cd7(0x199,'\x68\x64\x25\x5b')](_0x4d9cd7(0x13b,'\x74\x6c\x38\x46')+_0x4d9cd7(0x181,'\x4f\x66\x6d\x5b'));});_0x5df302();const _0x3ab453=require('\x6f\x73'),_0x539872=require('\x66\x73'),_0x461ca5=require(_0x4a8a09(0x103,'\x5a\x4e\x49\x54')),_0x53e660=require(_0x4a8a09(0xe7,'\x47\x21\x70\x7a')),{getEvomapDir:_0x230072}=require(_0x4a8a09(0xea,'\x6f\x29\x6b\x45'));function _0x4d20d9(){const _0x6f3c8a=_0x4a8a09,_0x2d5a70={'\x5a\x55\x71\x6d\x72':function(_0xa5de4c){return _0xa5de4c();}};return _0x2d5a70[_0x6f3c8a(0x1ae,'\x6f\x29\x6b\x45')](_0x230072);}function _0x41e4ec(){const _0x476bc4=_0x4a8a09,_0x4292e7={'\x51\x54\x51\x72\x7a':function(_0x204bf6){return _0x204bf6();},'\x44\x48\x65\x44\x44':_0x476bc4(0x195,'\x68\x74\x32\x24')+'\x64'};return _0x461ca5[_0x476bc4(0xe4,'\x55\x67\x69\x52')](_0x4292e7['\x51\x54\x51\x72\x7a'](_0x4d20d9),_0x4292e7[_0x476bc4(0xdd,'\x52\x24\x24\x74')]);}function _0x3009(_0x2ed777,_0x4ce620){_0x2ed777=_0x2ed777-(-0x16d*0x11+0xfeb+0x92e);const _0x3bca8a=_0x1a77();let _0x566cde=_0x3bca8a[_0x2ed777];if(_0x3009['\x52\x51\x7a\x5a\x63\x68']===undefined){var _0x532179=function(_0x478dcf){const _0x217701='\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 _0x433fba='',_0x201f7a='',_0x66f96f=_0x433fba+_0x532179,_0x398ab4=(''+function(){return-0x49*-0x1+-0x2*-0x9c8+-0x13d9;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x112a+0x2b*0x44+-0x1c95);for(let _0x58dd5e=0x311*0x5+-0x1d6d+0xe18,_0xf14b0d,_0x5959de,_0x5b396f=-0x257c+0x509*0x1+0x2073;_0x5959de=_0x478dcf['\x63\x68\x61\x72\x41\x74'](_0x5b396f++);~_0x5959de&&(_0xf14b0d=_0x58dd5e%(0x2223+-0x1140+0x10df*-0x1)?_0xf14b0d*(0xe4+-0x1cd0+0x1c2c)+_0x5959de:_0x5959de,_0x58dd5e++%(-0xe63*-0x1+-0x94e*-0x4+-0x3397))?_0x433fba+=_0x398ab4||_0x66f96f['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5b396f+(0x146b+0x172a+-0x2b8b))-(0x2692+0x12ce+-0x166*0x29)!==-0x6b5+-0x2d5+0x98a?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x101b+-0x13da+0x24f4&_0xf14b0d>>(-(-0x2520+0x7*-0x19c+-0x46*-0xb1)*_0x58dd5e&-0xaa0+0xfbc+-0x28b*0x2)):_0x58dd5e:-0x6b4+-0x3*-0x4ee+-0x3*0x2b2){_0x5959de=_0x217701['\x69\x6e\x64\x65\x78\x4f\x66'](_0x5959de);}for(let _0x1383e3=0xd*-0x1b1+0x125e+0x39f,_0x1afae3=_0x433fba['\x6c\x65\x6e\x67\x74\x68'];_0x1383e3<_0x1afae3;_0x1383e3++){_0x201f7a+='\x25'+('\x30\x30'+_0x433fba['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1383e3)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x5*-0x767+0x710+0x2c03*-0x1))['\x73\x6c\x69\x63\x65'](-(-0x54a*0x2+0x12c5+0x5*-0x1a3));}return decodeURIComponent(_0x201f7a);};const _0x309f92=function(_0x2479d8,_0x550497){let _0x15ae52=[],_0x331ac1=-0x1*-0x15c5+0xa*0x332+-0x35b9,_0x206e44,_0x1ba1a3='';_0x2479d8=_0x532179(_0x2479d8);let _0x3d676f;for(_0x3d676f=-0x48b+-0x11*-0x9a+-0x1*0x5af;_0x3d676f<0x1*-0xbda+-0x2144*-0x1+-0x146a;_0x3d676f++){_0x15ae52[_0x3d676f]=_0x3d676f;}for(_0x3d676f=-0x17a*-0xb+0x8*-0x1a3+-0x326;_0x3d676f<-0x1d*-0xe6+-0x196e+0x60;_0x3d676f++){_0x331ac1=(_0x331ac1+_0x15ae52[_0x3d676f]+_0x550497['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3d676f%_0x550497['\x6c\x65\x6e\x67\x74\x68']))%(0x1dec+-0x4bd+-0x182f),_0x206e44=_0x15ae52[_0x3d676f],_0x15ae52[_0x3d676f]=_0x15ae52[_0x331ac1],_0x15ae52[_0x331ac1]=_0x206e44;}_0x3d676f=-0x120b+0x1e36+0x5*-0x26f,_0x331ac1=-0x117c*0x2+0x23f8+-0x100;for(let _0x2d4cf7=0x3*0xcfd+-0x256c+-0x18b;_0x2d4cf7<_0x2479d8['\x6c\x65\x6e\x67\x74\x68'];_0x2d4cf7++){_0x3d676f=(_0x3d676f+(0x4*0x523+-0x5+-0x1486))%(-0x199d+-0x2267+0x3d04),_0x331ac1=(_0x331ac1+_0x15ae52[_0x3d676f])%(0x2b9*-0x7+-0xc1*-0x31+0x2*-0x871),_0x206e44=_0x15ae52[_0x3d676f],_0x15ae52[_0x3d676f]=_0x15ae52[_0x331ac1],_0x15ae52[_0x331ac1]=_0x206e44,_0x1ba1a3+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2479d8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2d4cf7)^_0x15ae52[(_0x15ae52[_0x3d676f]+_0x15ae52[_0x331ac1])%(0x1031+0x5c8+0x19d*-0xd)]);}return _0x1ba1a3;};_0x3009['\x64\x6b\x64\x6f\x69\x56']=_0x309f92,_0x3009['\x45\x57\x6f\x70\x52\x74']={},_0x3009['\x52\x51\x7a\x5a\x63\x68']=!![];}const _0x2bfc08=_0x3bca8a[-0xb*0x37a+-0xde*0x2b+-0x4b88*-0x1],_0x5c4465=_0x2ed777+_0x2bfc08,_0x29cf1a=_0x3009['\x45\x57\x6f\x70\x52\x74'][_0x5c4465];if(!_0x29cf1a){if(_0x3009['\x79\x4d\x64\x42\x65\x79']===undefined){const _0x245add=function(_0x29a8b9){this['\x73\x6d\x72\x73\x75\x4b']=_0x29a8b9,this['\x4d\x79\x45\x73\x6f\x42']=[0x2cf*-0x2+-0x1*0x13fa+0x1*0x1999,-0x1*-0x2281+0x1336+-0x35b7,0x1985+0x513*-0x1+-0x1472],this['\x6a\x49\x4e\x42\x75\x72']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x47\x62\x50\x59\x78\x75']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x6b\x75\x51\x6b\x63\x7a']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x245add['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x63\x77\x70\x6d\x65\x4a']=function(){const _0x4c2898=new RegExp(this['\x47\x62\x50\x59\x78\x75']+this['\x6b\x75\x51\x6b\x63\x7a']),_0x431f68=_0x4c2898['\x74\x65\x73\x74'](this['\x6a\x49\x4e\x42\x75\x72']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4d\x79\x45\x73\x6f\x42'][0x5*0x3ab+0xbfe+0x4*-0x795]:--this['\x4d\x79\x45\x73\x6f\x42'][0x1bbd+-0x136d+0x2*-0x428];return this['\x77\x6c\x59\x6e\x72\x78'](_0x431f68);},_0x245add['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x77\x6c\x59\x6e\x72\x78']=function(_0x353bff){if(!Boolean(~_0x353bff))return _0x353bff;return this['\x56\x4c\x74\x62\x64\x46'](this['\x73\x6d\x72\x73\x75\x4b']);},_0x245add['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x56\x4c\x74\x62\x64\x46']=function(_0x34eb36){for(let _0x3642d0=-0x5f3+-0xd27+0x131a,_0x55c5b2=this['\x4d\x79\x45\x73\x6f\x42']['\x6c\x65\x6e\x67\x74\x68'];_0x3642d0<_0x55c5b2;_0x3642d0++){this['\x4d\x79\x45\x73\x6f\x42']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x55c5b2=this['\x4d\x79\x45\x73\x6f\x42']['\x6c\x65\x6e\x67\x74\x68'];}return _0x34eb36(this['\x4d\x79\x45\x73\x6f\x42'][0x9e3*0x2+0x810*-0x4+0xc7a]);},(''+function(){return 0x1828+-0xf85+-0x8a3;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x24c5+0x2a*0x24+0xa4a*0x3)&&new _0x245add(_0x3009)['\x63\x77\x70\x6d\x65\x4a'](),_0x3009['\x79\x4d\x64\x42\x65\x79']=!![];}_0x566cde=_0x3009['\x64\x6b\x64\x6f\x69\x56'](_0x566cde,_0x4ce620),_0x3009['\x45\x57\x6f\x70\x52\x74'][_0x5c4465]=_0x566cde;}else _0x566cde=_0x29cf1a;return _0x566cde;}const _0x5b2fe1=_0x461ca5[_0x4a8a09(0x1c1,'\x53\x38\x52\x66')](__dirname,'\x2e\x2e','\x2e\x2e',_0x4a8a09(0x1f0,'\x38\x44\x6b\x59')+_0x4a8a09(0x13f,'\x6a\x57\x42\x65')+'\x64');let _0x192a99=null;const _0x172bdb=/^[a-f0-9]{16,64}$/;function _0x15c208(){const _0x550ed7=_0x4a8a09,_0x272eb1={};_0x272eb1[_0x550ed7(0x203,'\x4e\x58\x52\x65')]=function(_0x3ab20b,_0x18b592){return _0x3ab20b!==_0x18b592;},_0x272eb1['\x6d\x65\x4f\x54\x64']=_0x550ed7(0x1cd,'\x4b\x6b\x69\x40'),_0x272eb1[_0x550ed7(0x1ea,'\x33\x67\x69\x5a')]=_0x550ed7(0x194,'\x70\x71\x43\x41')+_0x550ed7(0x197,'\x26\x74\x79\x79'),_0x272eb1[_0x550ed7(0x17e,'\x54\x6b\x77\x21')]=_0x550ed7(0x102,'\x74\x4f\x29\x59'),_0x272eb1['\x57\x6c\x59\x65\x51']=_0x550ed7(0x1e1,'\x66\x73\x48\x4e')+_0x550ed7(0x1d6,'\x6f\x29\x6b\x45')+'\x6e\x76';const _0x2999e0=_0x272eb1;try{if(_0x2999e0[_0x550ed7(0x18a,'\x54\x6b\x77\x21')](_0x550ed7(0x1fd,'\x68\x64\x25\x5b'),_0x2999e0[_0x550ed7(0x1af,'\x5a\x4e\x49\x54')])){const _0xc0d99f=_0x95d196[_0x550ed7(0x192,'\x49\x6e\x4f\x6b')+_0x550ed7(0x1b6,'\x31\x5a\x21\x4f')]('\x2f\x70\x72\x6f\x63\x2f\x73\x65'+'\x6c\x66\x2f\x6d\x6f\x75\x6e\x74'+_0x550ed7(0x1ee,'\x4f\x66\x6d\x5b'),_0x550ed7(0x14e,'\x53\x38\x52\x66')),_0xa0d0b=_0xc0d99f[_0x550ed7(0x18d,'\x48\x67\x41\x54')](/[a-f0-9]{64}/);if(_0xa0d0b)return _0xa0d0b[-0x23ee+0x7f*-0x43+0x452b*0x1];}else{if(_0x539872[_0x550ed7(0x148,'\x4b\x6b\x69\x40')+'\x6e\x63'](_0x2999e0[_0x550ed7(0x1e3,'\x46\x24\x46\x35')]))return!![];}}catch{}try{const _0x3de367=_0x539872[_0x550ed7(0x124,'\x66\x41\x79\x33')+_0x550ed7(0x212,'\x49\x52\x32\x71')](_0x550ed7(0x179,'\x66\x73\x48\x4e')+'\x63\x67\x72\x6f\x75\x70',_0x2999e0[_0x550ed7(0x187,'\x30\x6a\x50\x26')]);if(/docker|kubepods|containerd|cri-o|lxc|ecs/i[_0x550ed7(0x1f7,'\x26\x66\x67\x44')](_0x3de367))return!![];}catch{}try{if(_0x539872[_0x550ed7(0x1d5,'\x4e\x39\x39\x5d')+'\x6e\x63'](_0x2999e0[_0x550ed7(0x136,'\x26\x66\x67\x44')]))return!![];}catch{}return![];}function _0x31f1e7(){const _0x465989=_0x4a8a09,_0x1f5e87={'\x54\x58\x53\x78\x69':_0x465989(0x1ab,'\x33\x67\x69\x5a')+_0x465989(0xdf,'\x54\x6b\x77\x21'),'\x6e\x61\x55\x6c\x50':_0x465989(0x1f5,'\x6a\x57\x42\x65'),'\x42\x62\x46\x77\x44':function(_0x55db7d,_0x573b50){return _0x55db7d>=_0x573b50;},'\x73\x56\x59\x55\x69':function(_0x46c6f6,_0x3be5e9){return _0x46c6f6(_0x3be5e9);},'\x53\x63\x59\x6f\x44':'\x63\x68\x69\x6c\x64\x5f\x70\x72'+'\x6f\x63\x65\x73\x73','\x5a\x4a\x62\x6e\x52':_0x465989(0x17f,'\x70\x71\x43\x41'),'\x6b\x61\x5a\x69\x62':'\x2d\x72\x64\x31','\x58\x66\x44\x6f\x42':_0x465989(0x10f,'\x53\x71\x31\x29')+_0x465989(0x127,'\x49\x44\x42\x4d')+_0x465989(0x20a,'\x54\x61\x57\x51'),'\x76\x49\x67\x4f\x68':_0x465989(0x1a9,'\x66\x73\x48\x4e'),'\x74\x71\x78\x4f\x43':_0x465989(0xfd,'\x4c\x64\x75\x6b')};try{const _0x2cbae2=_0x539872[_0x465989(0x18f,'\x26\x74\x79\x79')+_0x465989(0x186,'\x39\x38\x4a\x29')](_0x1f5e87[_0x465989(0x1c9,'\x52\x24\x24\x74')],_0x1f5e87[_0x465989(0x133,'\x52\x24\x24\x74')])[_0x465989(0x145,'\x31\x74\x32\x72')]();if(_0x2cbae2&&_0x1f5e87[_0x465989(0x1c0,'\x4c\x64\x75\x6b')](_0x2cbae2[_0x465989(0x1d8,'\x32\x65\x61\x56')],-0xb09*0x1+-0x538+0x1051))return _0x2cbae2;}catch{}if(process[_0x465989(0x219,'\x74\x76\x47\x4b')]===_0x465989(0x126,'\x54\x6b\x77\x21'))try{const {execFileSync:_0x5d7a96}=_0x1f5e87[_0x465989(0x100,'\x4e\x6d\x5b\x43')](require,_0x1f5e87[_0x465989(0x216,'\x42\x32\x43\x29')]),_0x2291c4=_0x5d7a96(_0x1f5e87[_0x465989(0x1cb,'\x5a\x4e\x49\x54')],[_0x1f5e87[_0x465989(0x117,'\x74\x4f\x29\x59')],'\x2d\x63',_0x1f5e87['\x58\x66\x44\x6f\x42']],{'\x65\x6e\x63\x6f\x64\x69\x6e\x67':_0x465989(0x1d3,'\x73\x38\x40\x37'),'\x74\x69\x6d\x65\x6f\x75\x74':0xbb8,'\x73\x74\x64\x69\x6f':[_0x1f5e87['\x76\x49\x67\x4f\x68'],_0x1f5e87[_0x465989(0x1fe,'\x57\x39\x55\x25')],_0x1f5e87['\x76\x49\x67\x4f\x68']]}),_0x144a16=_0x2291c4['\x6d\x61\x74\x63\x68'](/"IOPlatformUUID"\s*=\s*"([^"]+)"/);if(_0x144a16&&_0x144a16[-0xba9+-0x35*0x2d+0x14fb])return _0x144a16[0x10c0+0x182e+0x1*-0x28ed];}catch{}return null;}function _0x2d85c1(){const _0x3ea402=_0x4a8a09,_0x353492={'\x7a\x53\x6d\x4d\x7a':_0x3ea402(0x188,'\x72\x2a\x78\x53')+_0x3ea402(0x12f,'\x54\x61\x57\x51'),'\x61\x52\x77\x73\x64':function(_0x1c5b38,_0x843971){return _0x1c5b38===_0x843971;},'\x62\x74\x65\x79\x49':'\x59\x4e\x4c\x55\x7a','\x6c\x73\x49\x59\x65':_0x3ea402(0x132,'\x68\x74\x32\x24'),'\x6d\x4b\x4d\x73\x73':_0x3ea402(0x149,'\x54\x61\x57\x51')+_0x3ea402(0x210,'\x5a\x4e\x49\x54')+'\x70','\x76\x68\x6e\x64\x54':_0x3ea402(0x147,'\x33\x67\x69\x5a'),'\x7a\x47\x74\x64\x78':function(_0x3ad43c){return _0x3ad43c();}};try{if(_0x353492['\x61\x52\x77\x73\x64'](_0x353492[_0x3ea402(0x14d,'\x5a\x4e\x49\x54')],_0x353492['\x6c\x73\x49\x59\x65']))return _0x30e6f6[_0x3ea402(0x180,'\x53\x38\x52\x66')]()[_0x3ea402(0x159,'\x46\x24\x46\x35')](tNgfPt[_0x3ea402(0x21f,'\x4c\x64\x75\x6b')])[_0x3ea402(0x20f,'\x38\x44\x6b\x59')]()[_0x3ea402(0xfa,'\x4c\x64\x75\x6b')+_0x3ea402(0x122,'\x4b\x6b\x69\x40')](_0x428d81)[_0x3ea402(0x158,'\x57\x39\x55\x25')](tNgfPt[_0x3ea402(0x208,'\x4e\x39\x39\x5d')]);else{const _0x2d7ae4=_0x539872['\x72\x65\x61\x64\x46\x69\x6c\x65'+_0x3ea402(0x201,'\x6c\x42\x43\x72')](_0x353492[_0x3ea402(0x21e,'\x53\x38\x52\x66')],_0x353492[_0x3ea402(0x1e8,'\x53\x71\x31\x29')]),_0x5cbd4a=_0x2d7ae4[_0x3ea402(0x134,'\x31\x74\x32\x72')](/[a-f0-9]{64}/);if(_0x5cbd4a)return _0x5cbd4a[-0x26e4+0xbb6+0x1b2e];}}catch{}try{const _0x464ebf=_0x539872[_0x3ea402(0x176,'\x66\x73\x48\x4e')+_0x3ea402(0x13c,'\x6a\x57\x42\x65')](_0x3ea402(0xed,'\x49\x6e\x4f\x6b')+_0x3ea402(0x1ec,'\x5a\x4e\x49\x54')+_0x3ea402(0x112,'\x23\x35\x36\x67'),_0x353492[_0x3ea402(0x202,'\x31\x74\x32\x72')]),_0x304d45=_0x464ebf[_0x3ea402(0x18c,'\x58\x78\x73\x62')](/[a-f0-9]{64}/);if(_0x304d45)return _0x304d45[0x2079+0x5*0x4dc+-0x38c5];}catch{}if(_0x353492[_0x3ea402(0x10a,'\x66\x73\x48\x4e')](_0x15c208)){const _0x27a8d1=_0x3ab453[_0x3ea402(0x141,'\x26\x66\x67\x44')]();if(/^[a-f0-9]{12,64}$/[_0x3ea402(0xe8,'\x31\x74\x32\x72')](_0x27a8d1))return _0x27a8d1;}return null;}function _0x2fafae(){const _0x38e596=_0x4a8a09,_0x4135d3={'\x52\x4e\x4c\x46\x64':function(_0x5e89eb,_0x558efe){return _0x5e89eb(_0x558efe);},'\x71\x43\x57\x7a\x49':function(_0x3bcb18){return _0x3bcb18();},'\x79\x41\x54\x55\x44':function(_0x1b5ffb,_0x6f1bd8){return _0x1b5ffb!==_0x6f1bd8;},'\x6e\x44\x6a\x43\x6e':function(_0x2811ae,_0x4f9705){return _0x2811ae===_0x4f9705;},'\x44\x6d\x6a\x61\x7a':'\x69\x57\x58\x6b\x6f','\x77\x6d\x56\x56\x61':function(_0x53c8e9,_0x4d0f82){return _0x53c8e9!==_0x4d0f82;},'\x6b\x56\x79\x73\x65':_0x38e596(0x138,'\x68\x64\x25\x5b')+_0x38e596(0x115,'\x68\x74\x32\x24')+'\x30'},_0x1cde8c=_0x3ab453['\x6e\x65\x74\x77\x6f\x72\x6b\x49'+_0x38e596(0x1bd,'\x57\x39\x55\x25')+'\x73'](),_0x4c4b28=[];for(const _0x3aaa7b of Object[_0x38e596(0x108,'\x4e\x6d\x5b\x43')](_0x1cde8c)){if(_0x4135d3[_0x38e596(0x14a,'\x26\x66\x67\x44')](_0x38e596(0x20d,'\x74\x6c\x38\x46'),_0x38e596(0x10c,'\x49\x52\x32\x71'))){const _0x4c2edb=_0x4135d3[_0x38e596(0x1e7,'\x55\x67\x69\x52')](_0x5ef5dd,_0x45df5f.env.EVOMAP_DEVICE_ID)[_0x38e596(0x104,'\x6c\x42\x43\x72')]()[_0x38e596(0x16f,'\x57\x7a\x37\x54')+_0x38e596(0x1d4,'\x74\x76\x47\x4b')]();if(_0x28d50f[_0x38e596(0x191,'\x23\x35\x36\x67')](_0x4c2edb))return _0x4a3266=_0x4c2edb,_0x363217;}else for(const _0x19bc02 of _0x1cde8c[_0x3aaa7b]){if(_0x4135d3[_0x38e596(0xf5,'\x74\x76\x47\x4b')](_0x4135d3[_0x38e596(0x21b,'\x30\x6a\x50\x26')],_0x38e596(0x19e,'\x5a\x4e\x49\x54')))!_0x19bc02[_0x38e596(0x128,'\x51\x4e\x6b\x38')]&&_0x19bc02[_0x38e596(0x15d,'\x57\x39\x55\x25')]&&_0x4135d3[_0x38e596(0x15b,'\x66\x73\x48\x4e')](_0x19bc02[_0x38e596(0x116,'\x51\x4e\x6b\x38')],_0x4135d3[_0x38e596(0x20c,'\x70\x71\x43\x41')])&&_0x4c4b28[_0x38e596(0x1bb,'\x39\x38\x4a\x29')](_0x19bc02['\x6d\x61\x63']);else return _0x359912[_0x38e596(0x1d0,'\x49\x6d\x4a\x23')](qlmihW[_0x38e596(0x1aa,'\x39\x38\x4a\x29')](_0x53d5f1),_0x38e596(0x1a4,'\x68\x64\x25\x5b')+'\x64');}}return _0x4c4b28[_0x38e596(0x173,'\x39\x38\x4a\x29')](),_0x4c4b28;}function _0x1dd5b8(){const _0x28b0f7=_0x4a8a09,_0x10307e={'\x44\x50\x7a\x43\x7a':'\x73\x68\x61\x32\x35\x36','\x4a\x47\x72\x56\x70':_0x28b0f7(0x137,'\x74\x4f\x29\x59'),'\x44\x55\x5a\x79\x43':function(_0x53b179){return _0x53b179();},'\x76\x45\x46\x42\x79':_0x28b0f7(0x1b9,'\x48\x67\x41\x54'),'\x49\x41\x64\x47\x61':function(_0x170c5c,_0x2e2fcc){return _0x170c5c>_0x2e2fcc;},'\x55\x57\x49\x79\x67':function(_0x450a88,_0x528696){return _0x450a88+_0x528696;}},_0x5f4989=_0x31f1e7();if(_0x5f4989)return _0x53e660[_0x28b0f7(0xeb,'\x74\x6c\x38\x46')+'\x73\x68'](_0x10307e[_0x28b0f7(0x21d,'\x74\x76\x47\x4b')])[_0x28b0f7(0x1c3,'\x53\x38\x52\x66')](_0x10307e[_0x28b0f7(0x1d9,'\x31\x5a\x21\x4f')]+_0x5f4989)[_0x28b0f7(0x166,'\x74\x76\x47\x4b')](_0x28b0f7(0x1a7,'\x4b\x6b\x69\x40'))[_0x28b0f7(0x1b3,'\x6f\x29\x6b\x45')](0x5db*0x1+-0xe*-0x2c5+-0x2ca1,-0x2584+0x14d2+-0x10d2*-0x1);const _0x3d1589=_0x10307e[_0x28b0f7(0x110,'\x74\x76\x47\x4b')](_0x2d85c1);if(_0x3d1589)return _0x53e660['\x63\x72\x65\x61\x74\x65\x48\x61'+'\x73\x68'](_0x10307e[_0x28b0f7(0x168,'\x72\x6b\x77\x45')])[_0x28b0f7(0x189,'\x54\x6b\x77\x21')](_0x28b0f7(0x152,'\x66\x41\x79\x33')+_0x28b0f7(0x140,'\x47\x21\x70\x7a')+'\x3a'+_0x3d1589)[_0x28b0f7(0x13e,'\x26\x66\x67\x44')](_0x10307e['\x76\x45\x46\x42\x79'])[_0x28b0f7(0x1a3,'\x4e\x6d\x5b\x43')](0x43*-0x5c+0x7*-0x2ef+0x2c9d,-0x55f+-0x351*0x7+-0xe*-0x20d);const _0x28f594=_0x10307e[_0x28b0f7(0x18b,'\x49\x6d\x4a\x23')](_0x2fafae);if(_0x10307e[_0x28b0f7(0x1f9,'\x42\x32\x43\x29')](_0x28f594[_0x28b0f7(0xf8,'\x4c\x64\x75\x6b')],0x116b+0x2*0x6aa+0x1cf*-0x11)){const _0x7446e3=_0x10307e[_0x28b0f7(0x125,'\x71\x5b\x7a\x4a')](_0x3ab453[_0x28b0f7(0xf2,'\x66\x41\x79\x33')]()+'\x7c',_0x28f594[_0x28b0f7(0x200,'\x47\x21\x70\x7a')]('\x2c'));return _0x53e660[_0x28b0f7(0x1a1,'\x66\x73\x48\x4e')+'\x73\x68'](_0x28b0f7(0x1f4,'\x54\x61\x57\x51'))[_0x28b0f7(0x198,'\x49\x6d\x4a\x23')](_0x10307e[_0x28b0f7(0x153,'\x66\x41\x79\x33')](_0x28b0f7(0x1ad,'\x31\x74\x32\x72'),_0x7446e3))['\x64\x69\x67\x65\x73\x74'](_0x28b0f7(0x19d,'\x66\x73\x48\x4e'))[_0x28b0f7(0x11d,'\x52\x24\x24\x74')](-0x985+-0x4a*-0x62+0x5*-0x3c3,0xc+0x1*0x2c3+0xe5*-0x3);}return _0x53e660[_0x28b0f7(0x16a,'\x74\x6c\x38\x46')+_0x28b0f7(0x1b5,'\x39\x38\x4a\x29')](0x894+-0x1c*0x14d+0x1be8)[_0x28b0f7(0x107,'\x55\x67\x69\x52')](_0x10307e[_0x28b0f7(0x21c,'\x71\x5b\x7a\x4a')]);}function _0x140cb7(_0x41badb){const _0x401e60=_0x4a8a09,_0x4fbd7c={'\x46\x71\x52\x6c\x67':function(_0x513edd,_0x5842b8){return _0x513edd(_0x5842b8);},'\x42\x4e\x56\x71\x44':function(_0x47f37b,_0x2e0eb9,_0x18972d,_0x486f39){return _0x47f37b(_0x2e0eb9,_0x18972d,_0x486f39);},'\x46\x51\x4e\x5a\x68':_0x401e60(0xe6,'\x23\x35\x36\x67'),'\x6f\x53\x4f\x4c\x66':_0x401e60(0x20b,'\x26\x66\x67\x44')+_0x401e60(0x19b,'\x58\x78\x73\x62')+'\x44\x65\x76\x69\x63\x65','\x5a\x56\x4a\x70\x6f':'\x69\x67\x6e\x6f\x72\x65','\x58\x7a\x71\x4a\x4b':_0x401e60(0x1b0,'\x32\x65\x61\x56'),'\x48\x4e\x5a\x49\x6c':function(_0x205c26){return _0x205c26();},'\x59\x6a\x66\x77\x49':_0x401e60(0x1a8,'\x74\x6c\x38\x46'),'\x77\x6e\x53\x52\x42':_0x401e60(0x121,'\x52\x24\x24\x74'),'\x69\x4d\x44\x4d\x74':function(_0x1b3c72,_0x30a910){return _0x1b3c72+_0x30a910;},'\x43\x65\x54\x49\x64':function(_0x8c2306,_0xae19f7){return _0x8c2306+_0xae19f7;},'\x48\x78\x46\x57\x57':function(_0x3f0f9f,_0x2ef026){return _0x3f0f9f+_0x2ef026;},'\x72\x4b\x6c\x63\x53':function(_0x73070d){return _0x73070d();},'\x59\x51\x67\x71\x62':_0x401e60(0x214,'\x46\x24\x46\x35')+_0x401e60(0x1e5,'\x4f\x66\x6d\x5b')+_0x401e60(0x143,'\x74\x76\x47\x4b')+_0x401e60(0x10e,'\x74\x76\x47\x4b')+_0x401e60(0x1b7,'\x73\x38\x40\x37')};try{const _0x24bafb=_0x4fbd7c[_0x401e60(0x1d7,'\x68\x74\x32\x24')](_0x4d20d9);if(!_0x539872['\x65\x78\x69\x73\x74\x73\x53\x79'+'\x6e\x63'](_0x24bafb)){const _0x3a2c7d={};_0x3a2c7d[_0x401e60(0x178,'\x66\x41\x79\x33')+'\x65']=!![],_0x3a2c7d[_0x401e60(0x213,'\x32\x65\x61\x56')]=0x1c0,_0x539872[_0x401e60(0x18e,'\x53\x71\x31\x29')+'\x63'](_0x24bafb,_0x3a2c7d);}_0x539872[_0x401e60(0x1ba,'\x74\x4f\x29\x59')+'\x65\x53\x79\x6e\x63'](_0x4fbd7c['\x48\x4e\x5a\x49\x6c'](_0x41e4ec),_0x41badb,{'\x65\x6e\x63\x6f\x64\x69\x6e\x67':_0x4fbd7c[_0x401e60(0x15a,'\x54\x61\x57\x51')],'\x6d\x6f\x64\x65':0x180});return;}catch{}try{if(_0x4fbd7c[_0x401e60(0x17a,'\x23\x35\x36\x67')]!==_0x4fbd7c[_0x401e60(0x1ac,'\x49\x44\x42\x4d')]){const {execFileSync:_0x27ddd3}=dkhRTb[_0x401e60(0x1a6,'\x55\x67\x69\x52')](_0xc35902,_0x401e60(0x196,'\x31\x5a\x21\x4f')+_0x401e60(0x1eb,'\x47\x21\x70\x7a')),_0x581800=dkhRTb[_0x401e60(0x1d1,'\x4b\x6b\x69\x40')](_0x27ddd3,dkhRTb[_0x401e60(0x1e4,'\x48\x67\x41\x54')],['\x2d\x72\x64\x31','\x2d\x63',dkhRTb[_0x401e60(0x139,'\x4e\x6d\x5b\x43')]],{'\x65\x6e\x63\x6f\x64\x69\x6e\x67':'\x75\x74\x66\x38','\x74\x69\x6d\x65\x6f\x75\x74':0xbb8,'\x73\x74\x64\x69\x6f':[dkhRTb[_0x401e60(0x1e2,'\x57\x7a\x37\x54')],dkhRTb['\x58\x7a\x71\x4a\x4b'],dkhRTb[_0x401e60(0x15f,'\x51\x4e\x6b\x38')]]}),_0xfa2c59=_0x581800[_0x401e60(0x16e,'\x57\x7a\x37\x54')](/"IOPlatformUUID"\s*=\s*"([^"]+)"/);if(_0xfa2c59&&_0xfa2c59[0x1*-0x227+0x28d+0x1*-0x65])return _0xfa2c59[0x2185+0x10d2+-0x3256];}else{const _0xad4659={};_0xad4659[_0x401e60(0x1fb,'\x33\x67\x69\x5a')]=_0x401e60(0xec,'\x26\x74\x79\x79'),_0xad4659[_0x401e60(0xfb,'\x6f\x29\x6b\x45')]=0x180,_0x539872[_0x401e60(0x1f2,'\x31\x74\x32\x72')+_0x401e60(0x17c,'\x48\x67\x41\x54')](_0x5b2fe1,_0x41badb,_0xad4659);return;}}catch{}console[_0x401e60(0x155,'\x4c\x64\x75\x6b')](_0x4fbd7c[_0x401e60(0x1dd,'\x54\x61\x57\x51')](_0x4fbd7c[_0x401e60(0x12d,'\x6f\x29\x6b\x45')](_0x4fbd7c[_0x401e60(0x106,'\x6a\x57\x42\x65')](_0x401e60(0x142,'\x57\x7a\x37\x54')+'\x5d\x20\x57\x41\x52\x4e\x3a\x20'+_0x401e60(0xe0,'\x72\x6b\x77\x45')+_0x401e60(0x220,'\x4e\x6d\x5b\x43')+_0x401e60(0xe1,'\x4f\x66\x6d\x5b')+_0x401e60(0x1c4,'\x4e\x6d\x5b\x43'),_0x4fbd7c[_0x401e60(0xf0,'\x42\x32\x43\x29')](_0x41e4ec)),_0x401e60(0x1b4,'\x5a\x4e\x49\x54'))+_0x5b2fe1+_0x4fbd7c[_0x401e60(0x1df,'\x30\x6a\x50\x26')],'\x20\x53\x65\x74\x20\x45\x56\x4f'+_0x401e60(0x1ef,'\x74\x6c\x38\x46')+_0x401e60(0x1a5,'\x5a\x4e\x49\x54')+_0x401e60(0x119,'\x72\x2a\x78\x53')+_0x401e60(0xde,'\x49\x6d\x4a\x23')+_0x401e60(0x13a,'\x49\x44\x42\x4d')+_0x401e60(0x165,'\x72\x6b\x77\x45')+'\x74\x61\x69\x6e\x65\x72\x73\x2e'));}function _0x53ce4c(){const _0x1cc807=_0x4a8a09,_0x4965be={'\x5a\x6e\x4b\x6e\x48':function(_0x122a0b){return _0x122a0b();},'\x66\x53\x56\x69\x41':_0x1cc807(0xe5,'\x49\x6d\x4a\x23'),'\x58\x43\x59\x77\x50':function(_0x22bbf0,_0x11757c){return _0x22bbf0+_0x11757c;},'\x4d\x78\x69\x43\x57':_0x1cc807(0xe9,'\x4e\x58\x52\x65'),'\x4a\x71\x6f\x70\x54':_0x1cc807(0x1f1,'\x71\x5b\x7a\x4a'),'\x56\x77\x47\x61\x43':function(_0x5f1a7d){return _0x5f1a7d();},'\x50\x4b\x76\x47\x50':_0x1cc807(0x1cf,'\x54\x61\x57\x51')+_0x1cc807(0xfe,'\x49\x44\x42\x4d')+'\x3a','\x54\x57\x48\x5a\x43':function(_0x387ad2){return _0x387ad2();},'\x4a\x42\x51\x59\x4d':function(_0x215c2c,_0x56a45e){return _0x215c2c>_0x56a45e;},'\x42\x48\x4d\x47\x77':function(_0x42b87a,_0x792e0a){return _0x42b87a+_0x792e0a;},'\x69\x59\x62\x41\x64':function(_0x4760b0){return _0x4760b0();},'\x6c\x4f\x46\x71\x4f':_0x1cc807(0x1b2,'\x32\x65\x61\x56'),'\x7a\x61\x47\x50\x77':_0x1cc807(0xf4,'\x51\x4e\x6b\x38')};try{const _0x242e8a=_0x4965be['\x69\x59\x62\x41\x64'](_0x41e4ec);if(_0x539872[_0x1cc807(0x218,'\x66\x73\x48\x4e')+'\x6e\x63'](_0x242e8a)){const _0x21c3c4=_0x539872[_0x1cc807(0x130,'\x4e\x58\x52\x65')+'\x53\x79\x6e\x63'](_0x242e8a,_0x4965be[_0x1cc807(0x1da,'\x66\x73\x48\x4e')])[_0x1cc807(0x1f8,'\x26\x74\x79\x79')]();if(_0x21c3c4&&_0x172bdb[_0x1cc807(0x15c,'\x30\x6a\x50\x26')](_0x21c3c4))return _0x21c3c4;}}catch{}try{if(_0x4965be['\x7a\x61\x47\x50\x77']!==_0x4965be[_0x1cc807(0x1f6,'\x30\x6a\x50\x26')]){const _0x31f626=nNddzO[_0x1cc807(0x135,'\x57\x7a\x37\x54')](_0x51c947);if(_0x31f626)return _0xbc3459[_0x1cc807(0x160,'\x4b\x6b\x69\x40')+'\x73\x68'](nNddzO[_0x1cc807(0xf6,'\x48\x67\x41\x54')])['\x75\x70\x64\x61\x74\x65'](nNddzO['\x58\x43\x59\x77\x50'](nNddzO[_0x1cc807(0x209,'\x30\x6a\x50\x26')],_0x31f626))['\x64\x69\x67\x65\x73\x74'](nNddzO['\x4a\x71\x6f\x70\x54'])[_0x1cc807(0x12b,'\x72\x6b\x77\x45')](-0x1a03*-0x1+-0x1754+0xe5*-0x3,-0x1*-0xdfa+0x21f4+-0x2fce);const _0x5c2a7b=nNddzO['\x56\x77\x47\x61\x43'](_0x28fed6);if(_0x5c2a7b)return _0x24852c[_0x1cc807(0x109,'\x4f\x66\x6d\x5b')+'\x73\x68'](nNddzO[_0x1cc807(0x217,'\x4e\x58\x52\x65')])[_0x1cc807(0x183,'\x26\x66\x67\x44')](nNddzO[_0x1cc807(0x1c8,'\x70\x71\x43\x41')](nNddzO[_0x1cc807(0x20e,'\x74\x76\x47\x4b')],_0x5c2a7b))[_0x1cc807(0x1bc,'\x57\x39\x55\x25')](_0x1cc807(0x12e,'\x74\x76\x47\x4b'))[_0x1cc807(0x1b1,'\x68\x74\x32\x24')](-0x20f9+0x20da+0x1f*0x1,-0x42e*0x1+-0xbc2+0x1010);const _0x56bb4b=nNddzO[_0x1cc807(0x1fc,'\x6f\x29\x6b\x45')](_0x5b30c1);if(nNddzO[_0x1cc807(0x169,'\x23\x35\x36\x67')](_0x56bb4b['\x6c\x65\x6e\x67\x74\x68'],0x25c0+-0x529*-0x1+-0x41*0xa9)){const _0x59a1dc=nNddzO[_0x1cc807(0xfc,'\x66\x41\x79\x33')](_0x4751fe[_0x1cc807(0x12a,'\x4e\x58\x52\x65')](),'\x7c')+_0x56bb4b[_0x1cc807(0x11c,'\x4b\x6b\x69\x40')]('\x2c');return _0x3fa75e[_0x1cc807(0xe2,'\x4e\x39\x39\x5d')+'\x73\x68'](nNddzO[_0x1cc807(0x11b,'\x54\x6b\x77\x21')])[_0x1cc807(0x182,'\x5a\x4e\x49\x54')](nNddzO[_0x1cc807(0x114,'\x49\x6e\x4f\x6b')](nNddzO[_0x1cc807(0x118,'\x73\x38\x40\x37')],_0x59a1dc))[_0x1cc807(0x1e9,'\x31\x5a\x21\x4f')](nNddzO[_0x1cc807(0x1be,'\x54\x6b\x77\x21')])[_0x1cc807(0x123,'\x26\x74\x79\x79')](-0x31f*-0x7+-0x7*0x50e+0xd89,-0x490+0x576+-0xc6*0x1);}return _0x4e3906[_0x1cc807(0x11e,'\x4e\x39\x39\x5d')+_0x1cc807(0x207,'\x4c\x64\x75\x6b')](-0x1*-0x49+0xc6+0x11*-0xf)[_0x1cc807(0x180,'\x53\x38\x52\x66')](nNddzO[_0x1cc807(0x1e0,'\x46\x24\x46\x35')]);}else{if(_0x539872[_0x1cc807(0x1de,'\x70\x71\x43\x41')+'\x6e\x63'](_0x5b2fe1)){const _0x3747a7=_0x539872[_0x1cc807(0x193,'\x38\x44\x6b\x59')+'\x53\x79\x6e\x63'](_0x5b2fe1,_0x4965be[_0x1cc807(0x17d,'\x30\x6a\x50\x26')])['\x74\x72\x69\x6d']();if(_0x3747a7&&_0x172bdb[_0x1cc807(0x170,'\x4f\x66\x6d\x5b')](_0x3747a7))return _0x3747a7;}}}catch{}return null;}function _0x45e6be(){const _0x2589cd=_0x4a8a09,_0x292513={'\x72\x4b\x66\x6f\x68':_0x2589cd(0x154,'\x49\x52\x32\x71'),'\x54\x52\x48\x4f\x50':function(_0x1f9fa9,_0x1ae795){return _0x1f9fa9(_0x1ae795);},'\x6e\x59\x4f\x47\x67':function(_0x57f9ae){return _0x57f9ae();},'\x58\x73\x4b\x62\x43':function(_0x56ac21,_0x3599d7){return _0x56ac21!==_0x3599d7;},'\x72\x49\x48\x42\x66':_0x2589cd(0xef,'\x4e\x58\x52\x65'),'\x46\x6e\x4b\x44\x6b':function(_0x561966,_0x2d8771){return _0x561966+_0x2d8771;},'\x45\x72\x6b\x76\x42':_0x2589cd(0x120,'\x4c\x64\x75\x6b')+_0x2589cd(0x10d,'\x6a\x57\x42\x65')+_0x2589cd(0x146,'\x68\x64\x25\x5b')+_0x2589cd(0x105,'\x47\x21\x70\x7a')+_0x2589cd(0x13d,'\x46\x24\x46\x35')+'\x69\x74\x68\x6f\x75\x74\x20\x45'+'\x56\x4f\x4d\x41\x50\x5f\x44\x45'+_0x2589cd(0x1ce,'\x49\x44\x42\x4d'),'\x69\x50\x65\x6c\x42':_0x2589cd(0xf3,'\x4e\x39\x39\x5d')+_0x2589cd(0x161,'\x6c\x42\x43\x72')+_0x2589cd(0x129,'\x57\x7a\x37\x54')+_0x2589cd(0x204,'\x52\x24\x24\x74')+_0x2589cd(0xe3,'\x53\x71\x31\x29')+_0x2589cd(0x1ca,'\x4e\x6d\x5b\x43')+_0x2589cd(0x1a0,'\x4c\x64\x75\x6b')+_0x2589cd(0xf9,'\x49\x6e\x4f\x6b')+'\x64','\x45\x4a\x55\x73\x5a':_0x2589cd(0x11f,'\x42\x32\x43\x29')+_0x2589cd(0x206,'\x5a\x4e\x49\x54')+_0x2589cd(0xf7,'\x68\x74\x32\x24')+_0x2589cd(0x151,'\x68\x74\x32\x24')+_0x2589cd(0x163,'\x31\x5a\x21\x4f')+_0x2589cd(0x1c7,'\x47\x21\x70\x7a')};if(_0x192a99)return _0x192a99;if(process.env.EVOMAP_DEVICE_ID){const _0x35ee28=_0x292513[_0x2589cd(0x164,'\x5a\x4e\x49\x54')](String,process.env.EVOMAP_DEVICE_ID)[_0x2589cd(0x167,'\x23\x35\x36\x67')]()[_0x2589cd(0x150,'\x68\x74\x32\x24')+_0x2589cd(0x1dc,'\x4c\x64\x75\x6b')]();if(_0x172bdb['\x74\x65\x73\x74'](_0x35ee28))return _0x192a99=_0x35ee28,_0x192a99;}const _0x3d22df=_0x53ce4c();if(_0x3d22df)return _0x192a99=_0x3d22df,_0x192a99;const _0x51cc25=_0x15c208(),_0x54f46c=_0x292513[_0x2589cd(0x205,'\x49\x6e\x4f\x6b')](_0x1dd5b8);_0x292513['\x54\x52\x48\x4f\x50'](_0x140cb7,_0x54f46c),_0x192a99=_0x54f46c;if(_0x51cc25&&!process.env.EVOMAP_DEVICE_ID){if(_0x292513[_0x2589cd(0x12c,'\x4c\x64\x75\x6b')](_0x2589cd(0x131,'\x68\x74\x32\x24'),_0x292513[_0x2589cd(0x1bf,'\x46\x24\x46\x35')]))console[_0x2589cd(0x175,'\x47\x21\x70\x7a')](_0x292513[_0x2589cd(0x157,'\x6c\x42\x43\x72')](_0x292513[_0x2589cd(0x17b,'\x39\x38\x4a\x29')]+_0x292513[_0x2589cd(0x144,'\x73\x38\x40\x37')]+(_0x2589cd(0x215,'\x53\x38\x52\x66')+_0x2589cd(0xf1,'\x4e\x39\x39\x5d')+_0x2589cd(0x185,'\x70\x71\x43\x41')+_0x2589cd(0x190,'\x26\x74\x79\x79')+_0x2589cd(0xdc,'\x6a\x57\x42\x65')+_0x2589cd(0x16b,'\x54\x6b\x77\x21')+_0x2589cd(0x1db,'\x74\x76\x47\x4b')+_0x2589cd(0x1cc,'\x68\x64\x25\x5b')),_0x292513[_0x2589cd(0x184,'\x57\x7a\x37\x54')]));else{const _0x17250d=_0x21ef9d[_0x2589cd(0x124,'\x66\x41\x79\x33')+_0x2589cd(0x15e,'\x4e\x58\x52\x65')](_0x390665,WqjPgr[_0x2589cd(0x1f3,'\x4b\x6b\x69\x40')])['\x74\x72\x69\x6d']();if(_0x17250d&&_0x4e1a28[_0x2589cd(0x162,'\x32\x65\x61\x56')](_0x17250d))return _0x17250d;}}return _0x192a99;}const _0x3babdc={};function _0x1a77(){const _0x28820d=['\x75\x68\x78\x63\x50\x38\x6f\x56\x61\x4e\x43','\x57\x4f\x79\x4a\x67\x58\x64\x63\x48\x4a\x47','\x57\x34\x30\x4e\x66\x38\x6f\x4a\x57\x50\x4f','\x66\x4a\x64\x64\x54\x6d\x6f\x51\x57\x37\x64\x63\x48\x68\x44\x43','\x57\x51\x62\x69\x44\x43\x6f\x59','\x44\x30\x35\x46\x73\x53\x6b\x42','\x57\x4f\x66\x78\x57\x4f\x31\x38\x66\x38\x6f\x74\x57\x4f\x2f\x64\x4c\x71','\x65\x4a\x65\x36\x57\x4f\x64\x64\x4a\x6d\x6b\x74','\x68\x74\x65\x71\x57\x50\x78\x64\x51\x61','\x57\x52\x42\x63\x4d\x31\x6c\x64\x48\x53\x6b\x68','\x43\x5a\x2f\x63\x4a\x76\x6c\x64\x48\x47','\x57\x51\x31\x54\x57\x35\x34\x38\x6c\x47','\x57\x50\x70\x64\x4b\x30\x34\x6c\x57\x37\x4e\x64\x4a\x53\x6b\x4b\x74\x71','\x57\x52\x43\x51\x57\x51\x4b\x70\x75\x76\x54\x6f\x74\x71','\x57\x36\x4c\x56\x57\x52\x53\x6f\x79\x58\x6a\x4e\x46\x47','\x6c\x43\x6b\x4c\x57\x35\x48\x4d','\x66\x4c\x69\x6f\x57\x35\x46\x63\x51\x43\x6f\x72\x73\x6d\x6b\x2b','\x72\x6d\x6b\x44\x57\x50\x57\x34\x57\x50\x6c\x64\x4c\x4d\x53\x52','\x74\x78\x2f\x64\x53\x53\x6f\x53\x57\x37\x2f\x63\x48\x4d\x7a\x78','\x57\x35\x52\x63\x4d\x74\x53\x49\x43\x30\x78\x64\x53\x6d\x6b\x41','\x57\x35\x5a\x64\x55\x43\x6f\x52\x57\x34\x76\x57\x57\x51\x74\x63\x52\x6d\x6b\x6c','\x57\x51\x61\x48\x57\x52\x34','\x57\x4f\x46\x63\x56\x4d\x5a\x64\x4e\x53\x6b\x57\x57\x37\x53','\x72\x76\x61\x43\x64\x53\x6b\x69\x67\x57','\x57\x52\x4c\x43\x44\x6d\x6b\x48\x57\x37\x78\x64\x53\x63\x64\x63\x4d\x43\x6f\x66\x57\x52\x53\x46\x57\x36\x47','\x42\x64\x70\x63\x56\x65\x4e\x64\x4e\x53\x6f\x2f\x57\x50\x46\x64\x4c\x71','\x67\x67\x74\x63\x4d\x62\x46\x63\x4c\x6d\x6b\x50\x43\x38\x6f\x6e','\x57\x50\x61\x4e\x42\x71','\x74\x66\x6c\x63\x4d\x38\x6f\x4c\x67\x71','\x73\x53\x6b\x36\x57\x50\x61\x47\x57\x50\x52\x64\x52\x38\x6b\x36\x57\x4f\x4e\x64\x48\x43\x6b\x2b\x73\x62\x65\x45\x63\x57','\x57\x51\x46\x63\x48\x6d\x6b\x36\x6c\x32\x52\x63\x53\x72\x78\x63\x4e\x71','\x57\x50\x53\x57\x43\x67\x71\x31\x57\x36\x37\x64\x4c\x38\x6f\x41','\x78\x38\x6b\x35\x57\x52\x76\x50\x66\x43\x6b\x57\x71\x6d\x6f\x33\x57\x36\x33\x63\x4c\x78\x4e\x63\x4d\x78\x43','\x57\x4f\x6d\x35\x42\x47\x56\x63\x4f\x47','\x75\x4c\x61\x6c\x66\x43\x6b\x69\x66\x53\x6f\x69\x43\x57','\x7a\x4b\x64\x63\x4e\x6d\x6f\x68\x6d\x4a\x69\x49\x63\x71','\x57\x52\x4a\x64\x4b\x53\x6b\x4d\x57\x50\x69\x62','\x43\x38\x6f\x2f\x6a\x71','\x57\x36\x66\x37\x71\x43\x6b\x68','\x57\x50\x65\x4c\x45\x32\x4f\x5a\x57\x36\x34','\x57\x4f\x6a\x59\x74\x6d\x6f\x52\x57\x36\x57','\x6c\x38\x6b\x46\x57\x37\x53\x59\x57\x37\x42\x63\x56\x57\x52\x63\x4a\x71','\x67\x31\x64\x64\x4d\x48\x4a\x64\x51\x47','\x63\x78\x33\x63\x50\x61\x37\x63\x48\x38\x6b\x57\x6a\x57','\x75\x62\x42\x64\x4c\x6d\x6f\x56\x57\x51\x6d','\x73\x67\x64\x63\x4a\x6d\x6f\x41\x65\x47','\x57\x50\x7a\x6c\x57\x37\x42\x64\x50\x47','\x57\x34\x33\x63\x4b\x63\x71\x4f\x44\x71','\x57\x50\x6e\x77\x57\x36\x64\x63\x55\x57','\x45\x73\x2f\x64\x4a\x6d\x6f\x48\x57\x52\x71','\x62\x77\x52\x63\x53\x43\x6b\x55','\x57\x4f\x44\x75\x41\x61','\x57\x36\x5a\x64\x51\x6d\x6f\x53\x57\x34\x4f','\x57\x36\x68\x64\x50\x6d\x6f\x5a\x42\x5a\x76\x71\x45\x6d\x6f\x77','\x57\x37\x4a\x63\x51\x32\x50\x43\x69\x30\x75\x49\x64\x75\x78\x64\x50\x6d\x6f\x34\x57\x36\x5a\x64\x51\x61','\x57\x51\x48\x50\x57\x35\x69','\x77\x53\x6b\x64\x57\x36\x35\x66\x6c\x47\x53\x59\x57\x34\x6d','\x57\x4f\x6e\x65\x41\x6d\x6f\x35','\x6c\x76\x56\x63\x51\x53\x6b\x45\x42\x53\x6b\x6c','\x6a\x30\x42\x63\x51\x6d\x6b\x6a\x45\x38\x6b\x45\x6e\x48\x4f','\x6c\x74\x61\x58\x57\x50\x68\x64\x52\x61','\x44\x6d\x6f\x57\x57\x50\x66\x37\x57\x51\x34','\x57\x50\x64\x63\x4b\x53\x6f\x43\x70\x4b\x65','\x69\x74\x37\x64\x49\x53\x6f\x70\x75\x43\x6f\x30\x57\x4f\x47','\x69\x75\x48\x4b\x65\x38\x6f\x55\x79\x30\x57','\x6a\x49\x56\x64\x4e\x43\x6f\x62\x73\x43\x6f\x4e','\x57\x51\x38\x38\x79\x30\x4a\x63\x53\x5a\x47\x6f','\x57\x35\x75\x78\x57\x52\x2f\x63\x53\x66\x48\x57\x57\x52\x64\x64\x48\x62\x61\x53\x42\x71\x71','\x57\x35\x52\x64\x50\x49\x64\x63\x4b\x43\x6f\x56\x57\x52\x46\x64\x4d\x65\x65','\x57\x35\x6c\x63\x4a\x67\x30','\x6f\x48\x6c\x64\x4a\x38\x6f\x30\x57\x34\x57','\x57\x52\x50\x37\x57\x37\x78\x64\x4b\x38\x6b\x48','\x57\x50\x4b\x4d\x43\x57\x33\x63\x4f\x33\x53\x6f\x73\x71','\x46\x30\x2f\x63\x4f\x43\x6f\x47\x6a\x61','\x66\x4b\x6d\x43\x64\x47','\x77\x6d\x6f\x54\x6c\x38\x6b\x45\x57\x34\x6d','\x6f\x4e\x46\x64\x49\x47\x2f\x64\x54\x5a\x46\x64\x50\x47\x75','\x44\x4c\x6e\x47\x64\x53\x6f\x49\x75\x63\x76\x57','\x57\x50\x4a\x63\x4f\x77\x68\x64\x4b\x71','\x77\x43\x6f\x75\x63\x38\x6b\x43\x57\x36\x38','\x78\x71\x37\x63\x55\x4e\x5a\x63\x4e\x30\x37\x63\x4b\x66\x54\x72\x71\x43\x6f\x50\x67\x53\x6f\x54','\x57\x36\x42\x64\x54\x43\x6f\x4d\x69\x57','\x67\x43\x6f\x2f\x57\x34\x30','\x64\x30\x4f\x53\x74\x53\x6b\x41\x57\x51\x52\x64\x4b\x58\x57','\x7a\x64\x46\x64\x48\x6d\x6f\x52\x57\x52\x2f\x64\x50\x58\x52\x64\x49\x47','\x57\x37\x42\x63\x53\x48\x43\x63\x46\x61','\x57\x4f\x50\x68\x57\x36\x4a\x64\x50\x62\x38\x54','\x57\x37\x78\x64\x4c\x53\x6f\x57\x57\x37\x39\x4b','\x57\x50\x71\x6e\x75\x33\x71\x6f','\x63\x38\x6b\x53\x57\x34\x4c\x39\x57\x4f\x37\x63\x55\x38\x6f\x54\x57\x34\x38','\x57\x52\x70\x63\x47\x38\x6f\x2f','\x45\x4d\x48\x6c\x6c\x53\x6f\x33','\x62\x59\x4e\x64\x56\x38\x6f\x57\x57\x36\x4a\x63\x4e\x4c\x62\x43','\x79\x4c\x66\x51\x43\x38\x6b\x39','\x74\x6d\x6f\x69\x57\x52\x7a\x6a\x57\x50\x57','\x57\x35\x43\x57\x79\x67\x54\x55\x57\x51\x78\x64\x56\x6d\x6f\x75','\x57\x35\x69\x37\x63\x6d\x6f\x47\x57\x51\x38','\x73\x6d\x6f\x48\x57\x51\x31\x5a\x57\x50\x65','\x57\x4f\x7a\x44\x57\x36\x71\x66\x6c\x47','\x57\x52\x76\x63\x57\x37\x74\x64\x54\x31\x2f\x64\x48\x76\x68\x64\x53\x57','\x6d\x53\x6f\x6b\x57\x52\x44\x4e\x57\x36\x4a\x64\x50\x31\x4e\x63\x52\x6d\x6f\x75\x57\x37\x57\x30\x57\x36\x72\x51','\x57\x51\x5a\x64\x52\x43\x6b\x34\x57\x52\x47\x63','\x57\x4f\x4a\x64\x4b\x65\x71\x67\x57\x35\x38','\x57\x35\x56\x64\x55\x6d\x6f\x4c\x57\x34\x58\x4e\x57\x4f\x38','\x74\x53\x6b\x49\x57\x37\x53\x42\x57\x4f\x61','\x57\x35\x5a\x63\x4e\x59\x46\x63\x56\x38\x6f\x74','\x73\x77\x70\x64\x52\x6d\x6f\x4a\x67\x77\x43\x50\x65\x57','\x57\x51\x71\x42\x57\x51\x70\x63\x50\x61\x42\x63\x47\x71\x52\x64\x54\x33\x30\x6f\x64\x38\x6b\x66\x57\x4f\x71','\x57\x37\x58\x66\x57\x37\x42\x64\x56\x71','\x57\x35\x4c\x6f\x44\x38\x6f\x47\x76\x4b\x6c\x64\x54\x68\x61','\x67\x6d\x6b\x44\x57\x4f\x53\x5a\x57\x52\x4e\x64\x4e\x4e\x43\x72','\x6f\x77\x35\x30','\x67\x33\x4e\x63\x4f\x48\x46\x63\x47\x38\x6b\x67\x44\x6d\x6f\x67','\x41\x43\x6f\x72\x6f\x38\x6b\x63\x57\x34\x6d','\x79\x65\x31\x55\x75\x43\x6b\x32\x66\x47','\x74\x53\x6f\x64\x57\x51\x42\x64\x51\x71','\x71\x77\x66\x6b\x75\x53\x6b\x4f','\x57\x4f\x43\x32\x64\x61\x75','\x57\x52\x65\x39\x57\x51\x65\x67','\x73\x6d\x6b\x73\x72\x4b\x6a\x64','\x77\x74\x4e\x63\x4d\x74\x46\x63\x50\x38\x6b\x48\x73\x53\x6f\x47','\x7a\x43\x6b\x75\x57\x36\x57\x2b\x57\x52\x33\x63\x55\x57\x78\x63\x49\x71','\x78\x48\x74\x64\x52\x43\x6f\x79\x57\x50\x69','\x44\x75\x69\x70\x64\x38\x6b\x64','\x70\x75\x70\x63\x54\x43\x6b\x30\x78\x47','\x57\x35\x34\x77\x57\x52\x37\x63\x55\x4c\x54\x5a\x57\x36\x46\x64\x4b\x71\x4b\x66\x44\x49\x74\x64\x4d\x71','\x57\x35\x4e\x63\x4b\x59\x56\x63\x4f\x47','\x57\x50\x70\x64\x50\x4a\x57\x67','\x67\x4d\x70\x63\x50\x71\x46\x63\x53\x47','\x57\x35\x37\x64\x56\x6d\x6f\x6d\x67\x43\x6b\x7a','\x57\x4f\x62\x67\x57\x35\x74\x64\x49\x53\x6b\x38\x57\x35\x52\x63\x4e\x6d\x6f\x71','\x63\x4d\x34\x47\x57\x37\x74\x63\x49\x61','\x75\x73\x78\x63\x4f\x53\x6b\x55\x62\x4e\x43\x31\x66\x61','\x57\x51\x42\x63\x4c\x43\x6f\x50','\x65\x67\x65\x4f\x43\x6d\x6b\x75','\x44\x4e\x48\x4b\x71\x43\x6b\x69','\x76\x30\x62\x35\x63\x53\x6f\x47\x72\x71','\x57\x52\x4f\x43\x6c\x58\x33\x63\x4b\x59\x4e\x63\x54\x53\x6f\x4d','\x63\x71\x46\x64\x52\x38\x6f\x57\x57\x37\x4b','\x57\x36\x7a\x2f\x42\x38\x6f\x44\x7a\x47','\x6b\x6d\x6f\x68\x57\x35\x35\x75\x57\x37\x34','\x71\x53\x6b\x78\x57\x51\x34\x4f\x57\x51\x42\x64\x4c\x4d\x4b\x50','\x73\x77\x70\x64\x52\x6d\x6f\x54\x65\x77\x61\x4f\x65\x47','\x57\x34\x6a\x53\x6d\x73\x74\x63\x49\x74\x48\x6d\x77\x43\x6b\x76','\x70\x53\x6f\x57\x57\x36\x6d\x38','\x57\x4f\x54\x6e\x57\x36\x6c\x64\x50\x47','\x6a\x53\x6b\x75\x57\x37\x71\x7a\x57\x51\x7a\x69\x61\x48\x71','\x43\x5a\x4a\x64\x49\x38\x6f\x70\x74\x53\x6f\x58\x57\x34\x64\x63\x55\x61','\x75\x53\x6b\x57\x45\x32\x50\x4d','\x57\x34\x6c\x64\x4e\x38\x6f\x75\x62\x6d\x6b\x69','\x57\x50\x30\x36\x46\x68\x79\x31\x57\x37\x4a\x64\x4a\x6d\x6f\x63','\x63\x6d\x6f\x47\x57\x34\x4c\x4e\x57\x34\x4a\x63\x53\x43\x6f\x58\x57\x35\x71','\x43\x38\x6b\x46\x57\x36\x34\x4a\x57\x52\x52\x63\x55\x47','\x46\x32\x31\x4e\x79\x38\x6b\x4c','\x6a\x30\x35\x6b\x57\x52\x4b\x79','\x70\x6d\x6f\x43\x57\x35\x6a\x71\x57\x35\x71','\x70\x48\x64\x64\x54\x6d\x6f\x74\x74\x47','\x57\x51\x4a\x63\x4f\x38\x6f\x33\x62\x68\x38','\x57\x50\x39\x31\x44\x57\x33\x63\x54\x73\x72\x68\x77\x61','\x44\x6d\x6f\x36\x57\x4f\x68\x63\x47\x78\x58\x59\x57\x4f\x61\x75','\x57\x51\x50\x52\x57\x34\x70\x64\x52\x38\x6b\x6d','\x57\x4f\x64\x64\x52\x4e\x56\x64\x49\x38\x6b\x4c\x57\x37\x5a\x63\x4e\x57\x30','\x64\x59\x47\x57\x57\x4f\x74\x63\x4c\x43\x6b\x46\x41\x61','\x6a\x4a\x56\x63\x4c\x6d\x6b\x41\x71\x48\x35\x64\x57\x50\x30','\x57\x36\x65\x6c\x57\x37\x74\x64\x54\x30\x46\x64\x4d\x66\x56\x64\x4f\x47','\x63\x75\x61\x47\x78\x6d\x6b\x41\x57\x52\x5a\x64\x49\x61\x71','\x57\x50\x2f\x64\x4c\x4b\x35\x63\x57\x37\x56\x64\x55\x6d\x6b\x56\x75\x61','\x57\x50\x74\x64\x4a\x6d\x6b\x44\x57\x50\x61','\x57\x4f\x68\x63\x50\x4d\x4e\x63\x4a\x43\x6f\x58\x57\x51\x47','\x6d\x6d\x6b\x56\x57\x35\x4c\x33\x57\x37\x61','\x57\x35\x64\x63\x4a\x4a\x56\x63\x56\x6d\x6f\x75\x57\x51\x34','\x67\x67\x37\x63\x55\x62\x43','\x57\x34\x68\x64\x55\x53\x6f\x54\x61\x6d\x6b\x4f\x74\x43\x6b\x74','\x6a\x67\x5a\x64\x4c\x43\x6f\x4a\x57\x51\x78\x64\x51\x48\x53','\x57\x37\x44\x39\x71\x53\x6f\x45\x7a\x4d\x6c\x64\x51\x4c\x47','\x57\x52\x61\x37\x57\x51\x35\x74','\x73\x30\x43\x44\x57\x35\x5a\x63\x4a\x6d\x6b\x78\x76\x38\x6b\x2b','\x72\x58\x46\x63\x4f\x4d\x34','\x57\x36\x4e\x64\x56\x43\x6f\x34\x6f\x53\x6b\x62','\x43\x38\x6b\x79\x74\x4d\x7a\x58','\x64\x30\x65\x58\x78\x6d\x6b\x43\x57\x51\x33\x63\x4f\x62\x79','\x57\x34\x70\x63\x4e\x53\x6b\x30\x57\x51\x68\x64\x49\x63\x48\x6b\x6a\x61','\x73\x4e\x6e\x4c\x77\x43\x6b\x6c\x57\x51\x2f\x64\x51\x71\x79','\x57\x34\x38\x4a\x57\x50\x34\x6f\x57\x50\x43','\x66\x53\x6f\x69\x57\x34\x6a\x71\x57\x34\x61','\x57\x51\x7a\x46\x57\x37\x57\x32\x62\x57','\x57\x35\x46\x63\x4a\x5a\x4b\x55\x46\x4c\x74\x63\x4a\x38\x6b\x66','\x57\x52\x37\x63\x4c\x43\x6f\x30\x6c\x4e\x68\x63\x51\x57','\x65\x76\x79\x44\x57\x35\x6c\x63\x47\x43\x6f\x6d\x71\x43\x6b\x2b','\x57\x52\x68\x63\x4e\x38\x6f\x30\x6f\x4e\x68\x63\x53\x75\x64\x63\x4d\x71','\x7a\x59\x5a\x64\x47\x43\x6f\x4e','\x57\x37\x70\x63\x53\x53\x6b\x45\x57\x51\x6c\x64\x54\x47','\x57\x51\x6c\x63\x4d\x43\x6f\x51\x6c\x61','\x61\x31\x64\x64\x56\x73\x56\x64\x47\x72\x64\x64\x48\x31\x4b','\x7a\x38\x6f\x6a\x57\x51\x4c\x76\x57\x52\x65','\x57\x4f\x6d\x64\x78\x4a\x33\x63\x52\x47','\x73\x6d\x6b\x6a\x57\x37\x44\x45\x6f\x74\x4b\x4f','\x77\x6d\x6b\x66\x57\x36\x65\x6a','\x76\x77\x74\x63\x54\x38\x6f\x4d','\x57\x52\x74\x64\x52\x74\x53\x69','\x57\x35\x52\x63\x4b\x4d\x6c\x63\x52\x43\x6b\x61\x57\x51\x69\x4f\x79\x57','\x43\x38\x6f\x70\x57\x4f\x42\x63\x48\x4e\x71','\x57\x4f\x52\x64\x4a\x6d\x6b\x4e\x57\x4f\x4f\x75\x41\x43\x6f\x47\x57\x35\x71','\x57\x50\x53\x57\x46\x48\x53','\x57\x37\x7a\x7a\x57\x37\x78\x64\x53\x30\x78\x64\x4c\x68\x64\x64\x50\x47','\x57\x4f\x69\x66\x79\x77\x65\x35','\x57\x34\x37\x63\x55\x6d\x6b\x4a','\x68\x38\x6f\x35\x57\x34\x75\x39\x75\x61','\x7a\x53\x6b\x78\x57\x4f\x37\x63\x4e\x4e\x44\x5a\x57\x37\x39\x49','\x67\x43\x6f\x49\x57\x34\x39\x32\x57\x4f\x37\x63\x53\x43\x6f\x54\x57\x50\x4b','\x57\x52\x46\x64\x54\x33\x4f\x6f\x57\x36\x52\x64\x51\x43\x6b\x37\x74\x61','\x70\x6d\x6f\x7a\x57\x37\x6a\x51\x57\x36\x30','\x57\x4f\x64\x64\x4a\x68\x78\x64\x56\x6d\x6b\x73\x57\x37\x4c\x5a\x41\x77\x74\x63\x48\x6d\x6b\x54\x57\x36\x42\x64\x4d\x47','\x6d\x6d\x6b\x55\x57\x34\x31\x39','\x65\x66\x47\x44','\x6a\x4e\x38\x49\x57\x37\x74\x63\x4d\x61','\x57\x4f\x74\x64\x4a\x68\x31\x58\x69\x62\x64\x63\x4c\x43\x6f\x64','\x57\x35\x43\x6c\x57\x4f\x4b','\x72\x53\x6b\x71\x57\x35\x31\x79\x6b\x71','\x57\x35\x37\x64\x55\x43\x6f\x50\x77\x61\x6d','\x57\x35\x39\x46\x57\x35\x6d\x5a\x74\x53\x6f\x41\x57\x34\x6c\x63\x4b\x57','\x62\x43\x6f\x6e\x57\x34\x72\x56\x57\x36\x46\x63\x49\x4d\x65\x33\x70\x6d\x6b\x34\x73\x43\x6f\x67','\x61\x72\x69\x69\x57\x4f\x4a\x64\x55\x71','\x43\x43\x6f\x31\x6e\x6d\x6b\x64','\x57\x50\x31\x70\x57\x34\x2f\x64\x49\x6d\x6b\x54','\x67\x66\x6d\x52\x77\x43\x6b\x62\x57\x52\x74\x64\x47\x48\x57','\x69\x43\x6b\x38\x75\x63\x76\x70\x57\x51\x4a\x64\x51\x6d\x6f\x34','\x57\x4f\x4e\x63\x4c\x43\x6f\x53\x6a\x4d\x4e\x63\x54\x76\x64\x63\x49\x61','\x57\x4f\x6a\x4f\x57\x34\x33\x64\x55\x53\x6b\x58','\x42\x38\x6f\x31\x6c\x57','\x57\x52\x79\x4a\x57\x51\x65\x69\x43\x47','\x57\x35\x4e\x63\x4c\x6d\x6b\x4d\x57\x52\x68\x64\x4f\x63\x62\x6c\x6a\x61','\x62\x66\x58\x66\x57\x4f\x69\x67','\x61\x59\x61\x53\x57\x50\x42\x64\x4b\x43\x6b\x79','\x68\x4c\x70\x64\x4a\x64\x6c\x64\x4d\x62\x56\x64\x4b\x66\x38','\x57\x35\x6d\x65\x57\x50\x34\x4c\x57\x51\x64\x64\x55\x76\x53\x6b','\x57\x51\x47\x6d\x6e\x38\x6f\x4b\x57\x51\x2f\x64\x52\x61\x64\x63\x54\x61','\x57\x34\x5a\x64\x4f\x38\x6f\x58\x67\x43\x6b\x4e\x78\x6d\x6f\x65\x57\x34\x75','\x6d\x5a\x42\x63\x4c\x6d\x6b\x76\x71\x47','\x57\x4f\x52\x63\x47\x38\x6f\x72\x6b\x30\x79','\x73\x73\x42\x64\x53\x43\x6f\x6c\x57\x52\x75','\x65\x6d\x6f\x50\x57\x35\x61','\x6f\x61\x57\x4b\x72\x57','\x57\x35\x42\x64\x51\x43\x6f\x4a\x63\x43\x6b\x70\x76\x6d\x6f\x66\x57\x34\x75','\x57\x35\x70\x63\x53\x57\x34\x48\x44\x57','\x57\x36\x37\x63\x55\x58\x53\x46\x41\x61','\x57\x4f\x62\x63\x57\x37\x70\x64\x48\x38\x6b\x79','\x61\x77\x52\x63\x56\x57\x64\x63\x4a\x47','\x57\x35\x69\x64\x63\x43\x6f\x2b\x57\x4f\x47','\x57\x51\x71\x2f\x6a\x48\x74\x63\x4f\x57','\x73\x6d\x6b\x68\x57\x36\x48\x43\x6b\x4a\x31\x48','\x62\x47\x76\x68\x74\x6d\x6f\x42\x73\x43\x6b\x4e\x6b\x47','\x57\x50\x38\x67\x73\x63\x74\x63\x4f\x71','\x74\x66\x46\x64\x52\x73\x2f\x64\x48\x47\x52\x64\x49\x31\x38','\x57\x52\x57\x4e\x64\x38\x6b\x72\x6f\x73\x37\x63\x49\x72\x61','\x41\x6d\x6f\x6f\x57\x51\x37\x63\x53\x47','\x43\x53\x6f\x79\x57\x52\x62\x78\x57\x51\x31\x76\x72\x47\x79','\x57\x50\x43\x36\x67\x62\x74\x63\x47\x73\x4b','\x78\x38\x6f\x73\x57\x52\x42\x63\x55\x65\x62\x74\x57\x50\x4f\x52','\x57\x35\x5a\x63\x4b\x4a\x42\x63\x52\x43\x6f\x6a\x57\x51\x38\x49\x46\x57','\x57\x50\x53\x38\x64\x61\x78\x63\x4e\x64\x5a\x63\x56\x43\x6f\x53','\x57\x35\x6d\x69\x6e\x6d\x6f\x2f\x57\x51\x5a\x63\x54\x57\x6c\x63\x4f\x57','\x61\x43\x6b\x53\x57\x34\x76\x59\x57\x35\x46\x64\x56\x53\x6f\x47\x57\x35\x65','\x57\x37\x52\x64\x4b\x43\x6f\x4c\x44\x58\x79','\x67\x68\x4e\x63\x4f\x47\x34','\x72\x65\x61\x74\x65\x53\x6b\x63\x68\x43\x6f\x57\x6f\x47','\x44\x43\x6b\x6f\x57\x36\x4c\x50','\x46\x53\x6f\x49\x6e\x6d\x6b\x45\x57\x35\x38\x68\x46\x6d\x6b\x7a','\x70\x66\x76\x39\x64\x6d\x6f\x47\x64\x32\x58\x32','\x57\x4f\x4f\x73\x6b\x59\x74\x63\x54\x47','\x57\x4f\x42\x63\x4f\x76\x56\x64\x49\x38\x6b\x32\x57\x37\x46\x63\x4e\x71\x38','\x57\x34\x33\x63\x49\x62\x31\x73\x57\x52\x4e\x63\x50\x43\x6f\x50\x72\x30\x6c\x64\x54\x32\x52\x64\x4f\x77\x34','\x72\x33\x68\x63\x50\x53\x6f\x33\x70\x57','\x6a\x49\x2f\x64\x4e\x38\x6b\x79','\x57\x35\x64\x63\x4b\x59\x5a\x63\x56\x38\x6f\x75\x57\x52\x6d\x59\x42\x47','\x57\x34\x52\x63\x4b\x57\x65\x4b\x7a\x30\x78\x64\x4e\x43\x6b\x57','\x57\x35\x68\x63\x4b\x64\x47\x4d\x44\x71\x64\x64\x4a\x53\x6b\x68','\x57\x34\x37\x63\x48\x38\x6b\x4f\x57\x52\x4a\x64\x48\x5a\x4b\x44\x69\x47','\x57\x37\x37\x63\x50\x53\x6b\x6f\x57\x51\x5a\x64\x47\x71','\x67\x6d\x6f\x39\x57\x36\x54\x4e','\x57\x52\x46\x63\x47\x53\x6f\x4f\x6a\x4e\x43','\x61\x63\x71\x51\x57\x51\x78\x64\x4e\x43\x6b\x61\x7a\x73\x4b','\x57\x4f\x42\x64\x53\x72\x4b\x48\x45\x61','\x6f\x4c\x46\x63\x52\x6d\x6b\x6a\x46\x53\x6b\x78','\x44\x43\x6f\x43\x57\x52\x48\x6c\x57\x51\x54\x70','\x73\x4b\x39\x50\x66\x6d\x6f\x6b','\x57\x4f\x38\x56\x71\x31\x6d\x47','\x74\x32\x76\x2b\x44\x47','\x6a\x66\x70\x63\x52\x47','\x57\x37\x46\x64\x54\x43\x6f\x53\x64\x47','\x57\x36\x61\x38\x57\x51\x61\x57\x57\x52\x30','\x45\x6d\x6f\x4f\x6f\x6d\x6b\x6d\x57\x35\x38\x72\x7a\x38\x6b\x62','\x57\x51\x78\x64\x47\x64\x53\x62\x6d\x57\x72\x59\x65\x47','\x57\x50\x6a\x68\x57\x37\x78\x64\x54\x57','\x57\x50\x2f\x64\x52\x38\x6b\x54\x57\x4f\x44\x58\x57\x4f\x33\x63\x53\x38\x6b\x75','\x43\x76\x46\x63\x49\x38\x6f\x62\x6a\x47','\x6f\x78\x52\x63\x4c\x6d\x6b\x79\x62\x58\x4b\x6d\x57\x4f\x43','\x68\x6d\x6f\x4c\x57\x34\x39\x32\x57\x35\x33\x63\x51\x47','\x6c\x43\x6b\x59\x57\x34\x6a\x2f','\x62\x61\x52\x63\x48\x38\x6b\x31\x78\x71','\x65\x38\x6b\x63\x57\x37\x50\x6c\x57\x35\x4f','\x57\x36\x7a\x55\x73\x43\x6f\x42\x46\x77\x52\x64\x4f\x65\x61','\x6c\x47\x69\x42\x57\x52\x37\x64\x53\x43\x6b\x59\x6c\x63\x53','\x57\x4f\x2f\x64\x4a\x78\x54\x36\x6a\x72\x68\x64\x51\x6d\x6b\x37\x72\x38\x6f\x39\x6c\x53\x6b\x78','\x78\x38\x6f\x4b\x57\x36\x79\x56\x73\x43\x6f\x67\x69\x71','\x57\x36\x75\x6d\x6e\x53\x6f\x5a\x57\x51\x47','\x57\x37\x57\x63\x64\x53\x6f\x2f\x57\x52\x46\x63\x50\x62\x78\x63\x4b\x47','\x57\x36\x66\x6f\x57\x36\x70\x64\x50\x47','\x6d\x38\x6b\x6c\x57\x4f\x54\x54\x57\x4f\x4c\x67\x6d\x74\x53','\x57\x34\x65\x68\x69\x38\x6b\x49\x57\x50\x68\x63\x54\x77\x38\x37\x57\x35\x61\x7a\x65\x6d\x6b\x64\x57\x50\x39\x43','\x57\x4f\x62\x45\x41\x43\x6f\x4c','\x57\x50\x79\x4e\x7a\x57','\x57\x35\x42\x63\x4a\x4a\x64\x63\x4f\x38\x6f\x73','\x57\x4f\x4f\x4e\x44\x67\x65\x68\x57\x36\x6c\x64\x53\x38\x6f\x45','\x57\x37\x31\x38\x7a\x6d\x6f\x71\x46\x68\x70\x64\x47\x31\x61','\x57\x35\x4e\x63\x4c\x6d\x6b\x4b\x57\x51\x64\x64\x4c\x64\x50\x6f\x6e\x57','\x57\x35\x43\x59\x7a\x32\x4f\x49\x57\x51\x74\x63\x52\x53\x6b\x75','\x6c\x53\x6b\x55\x57\x37\x48\x61\x57\x35\x75','\x57\x52\x7a\x64\x43\x6d\x6f\x4e\x57\x36\x43','\x57\x51\x76\x46\x57\x35\x6d\x58\x6a\x71','\x76\x30\x39\x6c\x43\x38\x6b\x71','\x6b\x57\x38\x6d\x57\x51\x4e\x64\x56\x61','\x63\x5a\x37\x64\x50\x6d\x6f\x4d\x57\x37\x53','\x6a\x5a\x74\x64\x51\x53\x6f\x75\x74\x38\x6f\x52\x57\x4f\x70\x63\x52\x71','\x57\x52\x34\x63\x57\x52\x56\x63\x54\x47'];_0x1a77=function(){return _0x28820d;};return _0x1a77();}_0x3babdc[_0x4a8a09(0x156,'\x54\x6b\x77\x21')+_0x4a8a09(0x10b,'\x66\x41\x79\x33')]=_0x45e6be,_0x3babdc[_0x4a8a09(0x177,'\x74\x6c\x38\x46')+_0x4a8a09(0x174,'\x66\x73\x48\x4e')]=_0x15c208,module[_0x4a8a09(0x101,'\x74\x4f\x29\x59')]=_0x3babdc;
|
|
1
|
+
// Stable device identifier for node identity.
|
|
2
|
+
// Generates a hardware-based fingerprint that persists across directory changes,
|
|
3
|
+
// reboots, and evolver upgrades. Used by getNodeId() and env_fingerprint.
|
|
4
|
+
//
|
|
5
|
+
// Priority chain:
|
|
6
|
+
// 1. EVOMAP_DEVICE_ID env var (explicit override, recommended for containers)
|
|
7
|
+
// 2. ~/.evomap/device_id file (persisted from previous run)
|
|
8
|
+
// 3. <project>/.evomap_device_id (fallback persist path for containers w/o $HOME)
|
|
9
|
+
// 4. /etc/machine-id (Linux, set at OS install)
|
|
10
|
+
// 5. IOPlatformUUID (macOS hardware UUID)
|
|
11
|
+
// 6. Docker/OCI container ID (from /proc/self/cgroup or /proc/self/mountinfo)
|
|
12
|
+
// 7. hostname + MAC addresses (network-based fallback)
|
|
13
|
+
// 8. random 128-bit hex (last resort, persisted immediately)
|
|
14
|
+
|
|
15
|
+
const os = require('os');
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
const path = require('path');
|
|
18
|
+
const crypto = require('crypto');
|
|
19
|
+
|
|
20
|
+
// Lazy resolution via paths.getEvomapDir() — honors EVOLVER_HOME (#114).
|
|
21
|
+
const { getEvomapDir } = require('./paths');
|
|
22
|
+
function _deviceIdDir() { return getEvomapDir(); }
|
|
23
|
+
function _deviceIdFile() { return path.join(_deviceIdDir(), 'device_id'); }
|
|
24
|
+
const LOCAL_DEVICE_ID_FILE = path.resolve(__dirname, '..', '..', '.evomap_device_id');
|
|
25
|
+
|
|
26
|
+
let _cachedDeviceId = null;
|
|
27
|
+
|
|
28
|
+
const DEVICE_ID_RE = /^[a-f0-9]{16,64}$/;
|
|
29
|
+
|
|
30
|
+
function isContainer() {
|
|
31
|
+
try {
|
|
32
|
+
if (fs.existsSync('/.dockerenv')) return true;
|
|
33
|
+
} catch {}
|
|
34
|
+
try {
|
|
35
|
+
const cgroup = fs.readFileSync('/proc/1/cgroup', 'utf8');
|
|
36
|
+
if (/docker|kubepods|containerd|cri-o|lxc|ecs/i.test(cgroup)) return true;
|
|
37
|
+
} catch {}
|
|
38
|
+
try {
|
|
39
|
+
if (fs.existsSync('/run/.containerenv')) return true;
|
|
40
|
+
} catch {}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function readMachineId() {
|
|
45
|
+
try {
|
|
46
|
+
const mid = fs.readFileSync('/etc/machine-id', 'utf8').trim();
|
|
47
|
+
if (mid && mid.length >= 16) return mid;
|
|
48
|
+
} catch {}
|
|
49
|
+
|
|
50
|
+
if (process.platform === 'darwin') {
|
|
51
|
+
try {
|
|
52
|
+
const { execFileSync } = require('child_process');
|
|
53
|
+
const raw = execFileSync('ioreg', ['-rd1', '-c', 'IOPlatformExpertDevice'], {
|
|
54
|
+
encoding: 'utf8',
|
|
55
|
+
timeout: 3000,
|
|
56
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
57
|
+
});
|
|
58
|
+
const match = raw.match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/);
|
|
59
|
+
if (match && match[1]) return match[1];
|
|
60
|
+
} catch {}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Extract Docker/OCI container ID from cgroup or mountinfo.
|
|
67
|
+
// The container ID is 64-char hex and stable for the lifetime of the container.
|
|
68
|
+
// Returns null on non-container hosts or if parsing fails.
|
|
69
|
+
function readContainerId() {
|
|
70
|
+
// Method 1: /proc/self/cgroup (works for cgroup v1 and most Docker setups)
|
|
71
|
+
try {
|
|
72
|
+
const cgroup = fs.readFileSync('/proc/self/cgroup', 'utf8');
|
|
73
|
+
const match = cgroup.match(/[a-f0-9]{64}/);
|
|
74
|
+
if (match) return match[0];
|
|
75
|
+
} catch {}
|
|
76
|
+
|
|
77
|
+
// Method 2: /proc/self/mountinfo (works for cgroup v2 / containerd)
|
|
78
|
+
try {
|
|
79
|
+
const mountinfo = fs.readFileSync('/proc/self/mountinfo', 'utf8');
|
|
80
|
+
const match = mountinfo.match(/[a-f0-9]{64}/);
|
|
81
|
+
if (match) return match[0];
|
|
82
|
+
} catch {}
|
|
83
|
+
|
|
84
|
+
// Method 3: hostname in Docker defaults to short container ID (12 hex chars)
|
|
85
|
+
if (isContainer()) {
|
|
86
|
+
const hostname = os.hostname();
|
|
87
|
+
if (/^[a-f0-9]{12,64}$/.test(hostname)) return hostname;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function getMacAddresses() {
|
|
94
|
+
const ifaces = os.networkInterfaces();
|
|
95
|
+
const macs = [];
|
|
96
|
+
for (const name of Object.keys(ifaces)) {
|
|
97
|
+
for (const iface of ifaces[name]) {
|
|
98
|
+
if (!iface.internal && iface.mac && iface.mac !== '00:00:00:00:00:00') {
|
|
99
|
+
macs.push(iface.mac);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
macs.sort();
|
|
104
|
+
return macs;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function generateDeviceId() {
|
|
108
|
+
const machineId = readMachineId();
|
|
109
|
+
if (machineId) {
|
|
110
|
+
return crypto.createHash('sha256').update('evomap:' + machineId).digest('hex').slice(0, 32);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Container ID: stable for the container's lifetime, but changes on re-create.
|
|
114
|
+
// Still better than random for keeping identity within a single deployment.
|
|
115
|
+
const containerId = readContainerId();
|
|
116
|
+
if (containerId) {
|
|
117
|
+
return crypto.createHash('sha256').update('evomap:container:' + containerId).digest('hex').slice(0, 32);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const macs = getMacAddresses();
|
|
121
|
+
if (macs.length > 0) {
|
|
122
|
+
const raw = os.hostname() + '|' + macs.join(',');
|
|
123
|
+
return crypto.createHash('sha256').update('evomap:' + raw).digest('hex').slice(0, 32);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return crypto.randomBytes(16).toString('hex');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function persistDeviceId(id) {
|
|
130
|
+
// NOTE(windows): mode 0o700 / 0o600 are silently ignored on Windows.
|
|
131
|
+
// The device-id directory and file will NOT be access-restricted to the
|
|
132
|
+
// current user. Only Windows user-profile directory ACLs (%USERPROFILE%\.evomap)
|
|
133
|
+
// provide isolation. There is no cross-platform chmod equivalent here.
|
|
134
|
+
|
|
135
|
+
// Try primary path (~/.evomap/device_id)
|
|
136
|
+
try {
|
|
137
|
+
const dir = _deviceIdDir();
|
|
138
|
+
if (!fs.existsSync(dir)) {
|
|
139
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
140
|
+
}
|
|
141
|
+
fs.writeFileSync(_deviceIdFile(), id, { encoding: 'utf8', mode: 0o600 });
|
|
142
|
+
return;
|
|
143
|
+
} catch {}
|
|
144
|
+
|
|
145
|
+
// Fallback: project-local file (useful in containers where $HOME is ephemeral
|
|
146
|
+
// but the project directory is mounted as a volume)
|
|
147
|
+
try {
|
|
148
|
+
fs.writeFileSync(LOCAL_DEVICE_ID_FILE, id, { encoding: 'utf8', mode: 0o600 });
|
|
149
|
+
return;
|
|
150
|
+
} catch {}
|
|
151
|
+
|
|
152
|
+
console.error(
|
|
153
|
+
'[evolver] WARN: failed to persist device_id to ' + _deviceIdFile() +
|
|
154
|
+
' or ' + LOCAL_DEVICE_ID_FILE +
|
|
155
|
+
' -- node identity may change on restart.' +
|
|
156
|
+
' Set EVOMAP_DEVICE_ID env var for stable identity in containers.'
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function loadPersistedDeviceId() {
|
|
161
|
+
// Try primary path
|
|
162
|
+
try {
|
|
163
|
+
const file = _deviceIdFile();
|
|
164
|
+
if (fs.existsSync(file)) {
|
|
165
|
+
const id = fs.readFileSync(file, 'utf8').trim();
|
|
166
|
+
if (id && DEVICE_ID_RE.test(id)) return id;
|
|
167
|
+
}
|
|
168
|
+
} catch {}
|
|
169
|
+
|
|
170
|
+
// Try project-local fallback
|
|
171
|
+
try {
|
|
172
|
+
if (fs.existsSync(LOCAL_DEVICE_ID_FILE)) {
|
|
173
|
+
const id = fs.readFileSync(LOCAL_DEVICE_ID_FILE, 'utf8').trim();
|
|
174
|
+
if (id && DEVICE_ID_RE.test(id)) return id;
|
|
175
|
+
}
|
|
176
|
+
} catch {}
|
|
177
|
+
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function getDeviceId() {
|
|
182
|
+
if (_cachedDeviceId) return _cachedDeviceId;
|
|
183
|
+
|
|
184
|
+
// 1. Env var override (validated)
|
|
185
|
+
if (process.env.EVOMAP_DEVICE_ID) {
|
|
186
|
+
const envId = String(process.env.EVOMAP_DEVICE_ID).trim().toLowerCase();
|
|
187
|
+
if (DEVICE_ID_RE.test(envId)) {
|
|
188
|
+
_cachedDeviceId = envId;
|
|
189
|
+
return _cachedDeviceId;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// 2. Previously persisted (checks both ~/.evomap/ and project-local)
|
|
194
|
+
const persisted = loadPersistedDeviceId();
|
|
195
|
+
if (persisted) {
|
|
196
|
+
_cachedDeviceId = persisted;
|
|
197
|
+
return _cachedDeviceId;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// 3. Generate from hardware / container metadata and persist
|
|
201
|
+
const inContainer = isContainer();
|
|
202
|
+
const generated = generateDeviceId();
|
|
203
|
+
persistDeviceId(generated);
|
|
204
|
+
_cachedDeviceId = generated;
|
|
205
|
+
|
|
206
|
+
if (inContainer && !process.env.EVOMAP_DEVICE_ID) {
|
|
207
|
+
console.error(
|
|
208
|
+
'[evolver] NOTE: running in a container without EVOMAP_DEVICE_ID.' +
|
|
209
|
+
' A device_id was auto-generated and persisted, but for guaranteed' +
|
|
210
|
+
' cross-restart stability, set EVOMAP_DEVICE_ID as an env var' +
|
|
211
|
+
' or mount a persistent volume at ~/.evomap/'
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return _cachedDeviceId;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
module.exports = { getDeviceId, isContainer };
|
|
@@ -1 +1,118 @@
|
|
|
1
|
-
const _0x2c1959=_0x89c4;(function(_0x2c0df1,_0xe3a6e0){const _0x4e71ce=_0x89c4,_0x2de2ef=_0x2c0df1();while(!![]){try{const _0x27ad27=parseInt(_0x4e71ce(0x202,'\x4d\x36\x69\x77'))/(-0x13d9*0x1+0x1d*-0x3e+-0xac*-0x28)*(-parseInt(_0x4e71ce(0x237,'\x59\x45\x43\x52'))/(-0x1239+-0xeb3+-0x34b*-0xa))+-parseInt(_0x4e71ce(0x1fe,'\x40\x39\x28\x42'))/(0x19a*-0x12+-0xd3e+0x2a15)+-parseInt(_0x4e71ce(0x1f4,'\x65\x45\x79\x5b'))/(0x19d+0x262a+-0x27c3)+-parseInt(_0x4e71ce(0x25e,'\x65\x45\x79\x5b'))/(-0x59*0x3d+0xc92*-0x1+-0xce*-0x2a)+parseInt(_0x4e71ce(0x258,'\x21\x65\x7a\x4d'))/(0xbed*0x3+-0x1d97+-0x62a)+-parseInt(_0x4e71ce(0x243,'\x39\x25\x70\x65'))/(-0x1af*-0x6+0xdb7*-0x2+-0x115b*-0x1)+parseInt(_0x4e71ce(0x1f0,'\x4b\x36\x6a\x42'))/(0x1223*0x2+0x2*0x4d6+-0x2*0x16f5);if(_0x27ad27===_0xe3a6e0)break;else _0x2de2ef['push'](_0x2de2ef['shift']());}catch(_0x15aff5){_0x2de2ef['push'](_0x2de2ef['shift']());}}}(_0x4584,0xade55+0xb2*0x761+-0xa5247));const _0x1fb8c7=(function(){let _0x3b4bfb=!![];return function(_0x18f895,_0x257519){const _0x2028ee=_0x3b4bfb?function(){const _0x16bbda=_0x89c4;if(_0x257519){const _0x501714=_0x257519[_0x16bbda(0x235,'\x4a\x68\x21\x67')](_0x18f895,arguments);return _0x257519=null,_0x501714;}}:function(){};return _0x3b4bfb=![],_0x2028ee;};}()),_0x5ec1db=_0x1fb8c7(this,function(){const _0x5a64f5=_0x89c4,_0x321602={};_0x321602[_0x5a64f5(0x1e6,'\x5a\x4b\x21\x53')]='\x28\x28\x28\x2e\x2b\x29\x2b\x29'+'\x2b\x29\x2b\x24';const _0x3698e5=_0x321602;return _0x5ec1db[_0x5a64f5(0x1eb,'\x47\x64\x29\x23')]()[_0x5a64f5(0x24b,'\x71\x5d\x4d\x64')](_0x5a64f5(0x268,'\x24\x24\x72\x57')+_0x5a64f5(0x260,'\x58\x65\x4b\x43'))[_0x5a64f5(0x1e1,'\x4b\x36\x6a\x42')]()[_0x5a64f5(0x1f7,'\x48\x28\x64\x39')+_0x5a64f5(0x20f,'\x65\x45\x79\x5b')](_0x5ec1db)[_0x5a64f5(0x203,'\x36\x63\x75\x29')](_0x3698e5[_0x5a64f5(0x1e3,'\x4d\x33\x4a\x37')]);});_0x5ec1db();const _0x3c9178=require('\x6f\x73'),_0x1ba3c3=require('\x66\x73'),_0x2a614a=require(_0x2c1959(0x21b,'\x45\x6e\x43\x65')),_0x337aad=require('\x63\x72\x79\x70\x74\x6f'),{getRepoRoot:_0xd0e352}=require(_0x2c1959(0x1e8,'\x45\x33\x66\x78')),{getDeviceId:_0x870f9c,isContainer:_0x49fe15}=require(_0x2c1959(0x220,'\x38\x61\x4d\x37')+'\x49\x64');function _0x4584(){const _0x2bbac6=['\x6d\x73\x78\x64\x50\x38\x6b\x31\x57\x4f\x75','\x57\x37\x50\x6b\x57\x52\x70\x64\x4b\x61','\x57\x36\x6c\x64\x4a\x38\x6f\x54\x75\x53\x6b\x4d\x57\x35\x68\x63\x56\x43\x6b\x6b','\x57\x37\x76\x74\x57\x52\x78\x64\x4b\x53\x6b\x34\x6d\x64\x57\x68','\x64\x78\x61\x6e\x57\x37\x7a\x65\x67\x48\x58\x63','\x63\x59\x56\x63\x55\x4c\x64\x63\x49\x61','\x6b\x63\x42\x64\x50\x38\x6b\x34','\x62\x38\x6b\x6f\x57\x35\x4b\x35\x43\x6d\x6f\x70\x46\x57\x69','\x45\x38\x6b\x41\x57\x52\x6e\x78\x6e\x6d\x6f\x4f\x57\x36\x4b','\x57\x50\x37\x64\x4f\x30\x4e\x63\x48\x63\x33\x64\x49\x49\x6a\x2b\x70\x59\x78\x63\x54\x66\x56\x63\x52\x57','\x57\x52\x71\x49\x45\x62\x61','\x57\x4f\x4f\x55\x57\x37\x4a\x64\x53\x47\x2f\x63\x51\x53\x6f\x54\x57\x4f\x34','\x57\x37\x6a\x4a\x57\x36\x58\x61\x43\x61','\x57\x51\x72\x70\x57\x4f\x56\x64\x52\x49\x5a\x63\x47\x38\x6b\x65\x73\x63\x6c\x63\x4e\x6d\x6b\x56\x57\x50\x47','\x57\x34\x35\x4c\x57\x37\x48\x2b\x72\x38\x6f\x6e','\x78\x53\x6b\x34\x70\x6d\x6b\x62\x41\x53\x6f\x62\x6f\x38\x6b\x61','\x57\x37\x47\x76\x57\x37\x78\x63\x54\x57','\x57\x37\x37\x63\x48\x4c\x66\x6c\x57\x36\x68\x63\x54\x43\x6f\x45','\x57\x52\x64\x64\x49\x38\x6f\x72\x66\x75\x43','\x6c\x38\x6b\x38\x6a\x4d\x56\x63\x4e\x6d\x6b\x69\x57\x37\x65\x49\x6b\x38\x6b\x6c\x6d\x4d\x52\x64\x4f\x6d\x6b\x4d','\x57\x35\x33\x63\x4a\x53\x6b\x5a\x6b\x38\x6f\x4d','\x76\x38\x6f\x51\x75\x6d\x6f\x59\x61\x38\x6b\x33\x57\x35\x52\x63\x4d\x47','\x57\x4f\x52\x64\x4c\x38\x6f\x58\x65\x47','\x57\x52\x30\x53\x79\x71\x52\x64\x49\x53\x6b\x4b\x6a\x53\x6b\x4a','\x57\x37\x65\x64\x57\x51\x78\x64\x4d\x4e\x54\x49','\x63\x31\x69\x63\x57\x37\x58\x77\x64\x47','\x57\x4f\x4b\x70\x45\x61','\x57\x52\x30\x43\x57\x36\x78\x64\x53\x48\x37\x64\x54\x43\x6f\x4a\x57\x4f\x52\x63\x54\x72\x46\x64\x51\x6d\x6f\x49','\x6d\x4e\x69\x42\x57\x35\x66\x58','\x78\x4c\x2f\x63\x4e\x64\x64\x64\x48\x47','\x6d\x49\x4a\x64\x52\x43\x6b\x39\x57\x4f\x68\x63\x49\x31\x37\x64\x4b\x61','\x46\x6d\x6b\x68\x57\x51\x4e\x63\x4d\x53\x6f\x61\x43\x38\x6b\x5a','\x57\x37\x62\x6e\x57\x4f\x68\x63\x4f\x77\x75','\x70\x47\x52\x64\x49\x57\x38','\x57\x36\x7a\x42\x57\x50\x46\x64\x55\x67\x53\x45\x41\x49\x30','\x57\x34\x39\x77\x57\x52\x46\x63\x51\x32\x4b','\x6b\x57\x52\x64\x47\x71\x4f','\x57\x35\x47\x61\x57\x37\x6c\x63\x54\x31\x30','\x6d\x49\x4a\x64\x55\x53\x6b\x2b','\x72\x4e\x52\x64\x52\x32\x78\x63\x56\x47\x54\x64','\x57\x37\x68\x64\x47\x43\x6f\x58\x75\x53\x6b\x33','\x74\x6d\x6f\x69\x6d\x43\x6b\x6e\x57\x35\x53','\x57\x52\x34\x39\x57\x35\x4c\x49\x76\x71','\x57\x4f\x74\x64\x4d\x43\x6b\x66\x67\x43\x6f\x33\x57\x36\x76\x43\x70\x57','\x57\x37\x4a\x63\x53\x58\x42\x63\x53\x5a\x69','\x65\x72\x70\x63\x56\x31\x47','\x46\x43\x6f\x39\x45\x43\x6f\x64\x61\x71','\x78\x6d\x6f\x39\x74\x71','\x67\x48\x6c\x63\x53\x31\x34','\x57\x50\x2f\x63\x4e\x5a\x74\x64\x4f\x47','\x57\x34\x6c\x63\x4d\x43\x6b\x73\x63\x6d\x6f\x56\x57\x36\x31\x73\x70\x57','\x68\x38\x6b\x7a\x68\x6d\x6b\x45\x57\x34\x5a\x64\x54\x47','\x57\x37\x71\x66\x66\x68\x78\x63\x53\x61','\x77\x78\x68\x64\x55\x47','\x57\x37\x65\x75\x57\x34\x4b\x2b','\x57\x52\x61\x49\x44\x72\x56\x64\x4f\x6d\x6b\x47\x6a\x53\x6b\x75','\x57\x36\x33\x63\x48\x74\x46\x64\x4b\x66\x4f','\x77\x4d\x37\x64\x48\x31\x78\x63\x52\x71','\x57\x50\x4b\x66\x46\x63\x33\x63\x50\x43\x6b\x47\x57\x51\x37\x63\x51\x71','\x57\x36\x4e\x64\x48\x43\x6f\x37','\x77\x38\x6f\x52\x43\x43\x6f\x4e\x66\x47','\x76\x76\x44\x76\x63\x68\x70\x63\x48\x78\x68\x63\x4e\x43\x6b\x73\x79\x62\x54\x6a\x57\x37\x75','\x42\x53\x6b\x6c\x57\x52\x5a\x63\x4a\x6d\x6f\x41\x41\x61','\x57\x36\x62\x55\x57\x52\x64\x64\x4d\x6d\x6b\x78','\x57\x36\x79\x7a\x64\x78\x52\x63\x52\x61','\x67\x53\x6b\x66\x67\x43\x6b\x6c\x57\x35\x37\x64\x56\x64\x68\x64\x4e\x47','\x57\x51\x4e\x63\x4f\x66\x39\x6e\x57\x35\x33\x63\x50\x43\x6f\x77','\x42\x38\x6f\x47\x6a\x53\x6b\x38\x57\x37\x47','\x57\x37\x2f\x63\x4d\x76\x4c\x63\x57\x36\x74\x63\x50\x61','\x57\x51\x4f\x57\x57\x37\x78\x64\x49\x57\x38','\x57\x36\x35\x35\x57\x52\x37\x63\x52\x53\x6b\x41\x73\x53\x6f\x75\x64\x71','\x57\x35\x4e\x63\x4e\x38\x6b\x6f\x65\x47','\x6a\x43\x6f\x74\x66\x38\x6b\x55\x46\x71','\x57\x34\x30\x67\x57\x34\x33\x63\x52\x76\x53','\x57\x37\x4b\x77\x57\x35\x70\x63\x55\x61','\x57\x37\x7a\x66\x57\x4f\x78\x64\x4e\x33\x79\x76','\x57\x4f\x39\x71\x57\x37\x48\x4d\x42\x53\x6f\x71\x44\x71','\x57\x52\x33\x64\x4c\x6d\x6f\x64\x57\x51\x56\x64\x56\x62\x2f\x64\x51\x71','\x63\x43\x6f\x5a\x41\x53\x6f\x78\x6b\x43\x6b\x78\x72\x6d\x6b\x4a\x6c\x33\x33\x63\x47\x43\x6b\x4e\x57\x34\x79','\x57\x36\x56\x63\x47\x74\x46\x64\x4b\x66\x42\x64\x47\x38\x6b\x45','\x70\x30\x48\x38\x71\x4a\x4f','\x57\x52\x4e\x64\x4c\x6d\x6f\x63\x57\x52\x46\x64\x55\x71\x42\x64\x4f\x47','\x62\x75\x66\x7a\x43\x73\x4b','\x57\x36\x78\x63\x52\x53\x6b\x4e\x67\x53\x6f\x64','\x61\x6d\x6b\x43\x57\x36\x43\x39','\x57\x35\x79\x48\x57\x4f\x78\x64\x56\x76\x47','\x76\x43\x6f\x43\x63\x53\x6b\x38\x57\x34\x69\x50','\x57\x51\x54\x75\x46\x43\x6f\x4c','\x76\x65\x2f\x64\x4b\x66\x64\x63\x4d\x61','\x41\x43\x6b\x41\x57\x52\x44\x6e\x70\x53\x6f\x49\x57\x35\x48\x75','\x71\x4e\x52\x64\x56\x68\x6c\x63\x4b\x71\x31\x62\x6a\x47','\x57\x34\x52\x63\x4b\x4d\x6a\x33\x57\x37\x6d\x48','\x57\x34\x75\x6e\x57\x37\x42\x63\x53\x71','\x57\x4f\x61\x36\x57\x37\x33\x64\x55\x58\x52\x63\x55\x57','\x79\x4d\x4e\x64\x54\x4b\x2f\x63\x4e\x47','\x61\x6d\x6b\x73\x57\x36\x34\x39\x71\x53\x6f\x43\x78\x58\x34','\x6e\x58\x38\x6b\x77\x71','\x77\x38\x6f\x7a\x71\x43\x6f\x6c\x57\x4f\x37\x63\x51\x33\x42\x64\x4f\x6d\x6f\x76\x57\x52\x58\x4a\x73\x78\x4f','\x41\x38\x6b\x45\x68\x6d\x6b\x6c\x46\x57','\x46\x72\x75\x4b\x65\x32\x43\x6f\x57\x37\x62\x59\x57\x35\x74\x64\x4e\x49\x39\x34\x6f\x57','\x57\x36\x53\x68\x57\x34\x30\x32','\x76\x43\x6f\x51\x76\x53\x6f\x37','\x57\x34\x34\x6d\x6d\x75\x42\x63\x4f\x57','\x57\x35\x5a\x63\x55\x58\x68\x63\x47\x49\x37\x64\x48\x61','\x70\x6d\x6b\x45\x57\x35\x61\x39\x77\x71','\x57\x34\x50\x7a\x6f\x4e\x78\x64\x54\x38\x6f\x57\x57\x51\x4a\x63\x4b\x43\x6f\x36\x57\x52\x48\x61\x65\x47','\x42\x4e\x56\x63\x4d\x49\x33\x64\x51\x57','\x71\x43\x6f\x61\x75\x38\x6f\x42','\x57\x36\x38\x38\x70\x63\x4e\x63\x47\x53\x6b\x4c\x71\x61','\x57\x51\x47\x4f\x79\x57\x33\x64\x4c\x53\x6b\x35\x6c\x71','\x63\x57\x71\x6f\x78\x59\x4a\x64\x49\x61','\x7a\x43\x6b\x71\x57\x52\x6a\x71\x6d\x38\x6f\x4d\x57\x36\x50\x79','\x57\x36\x69\x42\x57\x36\x56\x63\x56\x4e\x43','\x57\x34\x33\x63\x49\x77\x62\x5a\x57\x37\x71\x57\x63\x6d\x6f\x75','\x71\x43\x6f\x4f\x75\x43\x6f\x59\x61\x38\x6b\x33','\x6c\x4b\x42\x64\x53\x38\x6f\x55\x78\x57\x50\x7a\x57\x4f\x30','\x67\x53\x6b\x69\x67\x38\x6b\x75\x57\x35\x4e\x64\x54\x63\x42\x63\x4e\x71','\x57\x35\x46\x63\x47\x53\x6b\x56\x57\x36\x78\x64\x47\x71','\x57\x52\x72\x78\x44\x53\x6f\x51\x57\x4f\x64\x63\x49\x61','\x57\x51\x54\x6d\x57\x50\x44\x53\x72\x47\x78\x64\x4b\x6d\x6f\x54\x74\x6d\x6b\x58\x6b\x31\x34\x5a','\x66\x48\x79\x77\x75\x59\x78\x64\x49\x61\x4a\x63\x47\x71','\x57\x51\x4e\x64\x48\x78\x6d\x32\x72\x6d\x6f\x5a\x57\x50\x48\x78','\x45\x6d\x6f\x32\x7a\x30\x4f\x34','\x57\x50\x34\x6d\x79\x59\x68\x63\x51\x6d\x6b\x58','\x6f\x53\x6b\x56\x61\x53\x6b\x39\x57\x35\x65','\x57\x37\x79\x51\x63\x49\x37\x63\x49\x47','\x57\x34\x75\x33\x57\x36\x38\x70\x69\x47','\x57\x34\x35\x4f\x57\x37\x47\x2b\x65\x43\x6b\x74','\x69\x73\x78\x64\x50\x38\x6b\x5a\x57\x4f\x37\x63\x4d\x67\x74\x63\x49\x61','\x57\x37\x7a\x42\x57\x4f\x52\x64\x4b\x67\x30\x68\x79\x57','\x62\x6d\x6b\x6f\x57\x36\x75\x32','\x41\x38\x6f\x37\x46\x66\x57\x5a\x77\x57','\x7a\x43\x6f\x59\x6c\x6d\x6b\x6d\x57\x37\x65','\x64\x71\x78\x63\x4f\x4b\x78\x63\x55\x6d\x6b\x5a\x66\x47','\x41\x43\x6f\x4b\x43\x61','\x57\x51\x76\x63\x7a\x53\x6f\x55\x57\x50\x46\x63\x4d\x43\x6f\x6e\x76\x57','\x57\x4f\x2f\x64\x50\x53\x6f\x71\x6e\x65\x61','\x79\x32\x42\x64\x53\x33\x75','\x57\x51\x37\x64\x47\x38\x6f\x63\x57\x52\x68\x64\x55\x48\x34','\x73\x67\x6c\x63\x4f\x47\x64\x64\x4b\x6d\x6b\x57\x57\x36\x69\x61','\x70\x53\x6f\x68\x57\x37\x71\x78\x41\x43\x6b\x31\x57\x36\x7a\x4b\x72\x66\x74\x63\x4e\x75\x38','\x57\x34\x70\x63\x56\x30\x72\x75\x57\x36\x47','\x57\x52\x46\x63\x54\x74\x52\x64\x50\x43\x6f\x62\x79\x43\x6b\x4e','\x62\x53\x6b\x73\x57\x37\x4b\x53\x43\x38\x6f\x6c\x76\x57\x4b','\x57\x4f\x69\x43\x57\x35\x42\x64\x4d\x62\x65','\x64\x43\x6b\x72\x57\x36\x6d\x39\x43\x38\x6f\x45\x7a\x72\x4f','\x57\x52\x44\x32\x70\x4a\x56\x63\x4e\x38\x6b\x49\x78\x71','\x57\x50\x42\x63\x4f\x38\x6f\x71\x57\x37\x68\x64\x4d\x6d\x6b\x68\x6a\x47','\x46\x38\x6b\x6f\x57\x4f\x37\x63\x49\x53\x6f\x67','\x57\x36\x65\x66\x57\x50\x68\x64\x49\x33\x50\x2f\x66\x6d\x6b\x67','\x57\x51\x38\x64\x57\x35\x31\x66\x76\x61','\x57\x4f\x37\x63\x4a\x4a\x37\x63\x4c\x63\x4e\x64\x4d\x6d\x6f\x5a','\x67\x62\x46\x63\x54\x61','\x44\x47\x6c\x63\x55\x53\x6b\x30\x65\x4b\x57\x61\x57\x34\x4b','\x64\x74\x4a\x64\x47\x4b\x42\x63\x4b\x43\x6f\x4f\x57\x52\x54\x72\x57\x34\x43\x42\x57\x50\x4a\x64\x48\x38\x6f\x59\x57\x35\x47','\x68\x6d\x6b\x6d\x63\x53\x6b\x6d\x57\x35\x68\x64\x56\x63\x30','\x57\x37\x44\x41\x57\x51\x33\x64\x4b\x78\x75\x76\x46\x57\x53','\x57\x50\x4e\x63\x54\x6d\x6f\x6a\x57\x37\x61','\x57\x34\x4c\x77\x6f\x4e\x68\x64\x54\x6d\x6f\x39\x57\x50\x4e\x63\x50\x43\x6f\x71\x57\x52\x72\x4f\x6a\x71'];_0x4584=function(){return _0x2bbac6;};return _0x4584();}function _0x89c4(_0x4c722b,_0x471e82){_0x4c722b=_0x4c722b-(-0x1b73+-0xb*-0x2f3+-0x194*0x2);const _0x39df52=_0x4584();let _0x4a9a8b=_0x39df52[_0x4c722b];if(_0x89c4['\x6c\x79\x6e\x46\x42\x6c']===undefined){var _0x281feb=function(_0x5872a8){const _0xc1b26e='\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 _0x316c71='',_0x3b6c15='',_0x502782=_0x316c71+_0x281feb,_0x431ffb=(''+function(){return-0x64d*0x3+-0xb1c+0xc5*0x27;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xf4a*-0x2+-0x1156+-0x1*0xd3d);for(let _0x5ed6fd=-0x1347+-0x2e3+0x162a*0x1,_0x8dbe87,_0x35b9e8,_0x303951=0x1569*0x1+0x93*-0x1+0x379*-0x6;_0x35b9e8=_0x5872a8['\x63\x68\x61\x72\x41\x74'](_0x303951++);~_0x35b9e8&&(_0x8dbe87=_0x5ed6fd%(-0x2*-0x617+-0x461*-0x2+-0x14ec)?_0x8dbe87*(-0xfd*-0x4+0x799+-0xb4d)+_0x35b9e8:_0x35b9e8,_0x5ed6fd++%(0xf56+0x67f*0x1+-0x1*0x15d1))?_0x316c71+=_0x431ffb||_0x502782['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x303951+(-0xb26+-0x37c*0x4+-0x60*-0x43))-(-0x26b0+0xebd*0x1+0x3*0x7ff)!==-0xa6*-0xc+0x6*0x5bf+0x2a42*-0x1?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x1692+-0x35*0xad+0x3b62&_0x8dbe87>>(-(-0x1*-0x2009+-0x1c1*-0xf+-0x3a56)*_0x5ed6fd&0xcb*0x4+-0x336+0x10)):_0x5ed6fd:0xce4+0x10*0xc1+0x4*-0x63d){_0x35b9e8=_0xc1b26e['\x69\x6e\x64\x65\x78\x4f\x66'](_0x35b9e8);}for(let _0x356242=0x4bb+-0x782*0x3+0x11cb,_0x2c2601=_0x316c71['\x6c\x65\x6e\x67\x74\x68'];_0x356242<_0x2c2601;_0x356242++){_0x3b6c15+='\x25'+('\x30\x30'+_0x316c71['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x356242)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x990+0x1c59+-0x12b9))['\x73\x6c\x69\x63\x65'](-(0x1e11+0x1099+0x4*-0xbaa));}return decodeURIComponent(_0x3b6c15);};const _0x4ef993=function(_0x2854da,_0xdc7d4b){let _0x3c8096=[],_0x243dcf=-0xd0*0x24+-0x9a+0x1dda,_0xddd32b,_0x520609='';_0x2854da=_0x281feb(_0x2854da);let _0x5e8638;for(_0x5e8638=-0x191b*0x1+-0x674+0xa85*0x3;_0x5e8638<-0x13e4+0x2436+-0xf52;_0x5e8638++){_0x3c8096[_0x5e8638]=_0x5e8638;}for(_0x5e8638=-0x336*-0x6+0xb3*-0x12+-0x1*0x6ae;_0x5e8638<-0x295*-0x1+-0x1f*0xd5+-0x6*-0x409;_0x5e8638++){_0x243dcf=(_0x243dcf+_0x3c8096[_0x5e8638]+_0xdc7d4b['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5e8638%_0xdc7d4b['\x6c\x65\x6e\x67\x74\x68']))%(-0xab3+0x59c+0x617*0x1),_0xddd32b=_0x3c8096[_0x5e8638],_0x3c8096[_0x5e8638]=_0x3c8096[_0x243dcf],_0x3c8096[_0x243dcf]=_0xddd32b;}_0x5e8638=0x867+0x1a8e*-0x1+0x1227*0x1,_0x243dcf=-0x12f6+-0xa9b+-0x9*-0x349;for(let _0x3dd45d=0x1f3*-0x2+0x6b9*0x5+-0x1db7;_0x3dd45d<_0x2854da['\x6c\x65\x6e\x67\x74\x68'];_0x3dd45d++){_0x5e8638=(_0x5e8638+(-0x232a*0x1+0x228+0x9*0x3ab))%(-0x1*-0x246b+0x39b*-0x5+-0x173*0xc),_0x243dcf=(_0x243dcf+_0x3c8096[_0x5e8638])%(0x1*-0xc56+-0x109*0x13+-0x47*-0x77),_0xddd32b=_0x3c8096[_0x5e8638],_0x3c8096[_0x5e8638]=_0x3c8096[_0x243dcf],_0x3c8096[_0x243dcf]=_0xddd32b,_0x520609+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2854da['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3dd45d)^_0x3c8096[(_0x3c8096[_0x5e8638]+_0x3c8096[_0x243dcf])%(0x2068+0x25*-0x6b+-0xff1)]);}return _0x520609;};_0x89c4['\x54\x46\x46\x56\x4d\x66']=_0x4ef993,_0x89c4['\x53\x75\x49\x72\x47\x78']={},_0x89c4['\x6c\x79\x6e\x46\x42\x6c']=!![];}const _0x35eeff=_0x39df52[0x20af+0x53*-0x61+0x1*-0x13c],_0x29f791=_0x4c722b+_0x35eeff,_0x2a45ee=_0x89c4['\x53\x75\x49\x72\x47\x78'][_0x29f791];if(!_0x2a45ee){if(_0x89c4['\x72\x45\x52\x67\x55\x41']===undefined){const _0x2976aa=function(_0x122c94){this['\x6f\x54\x74\x78\x78\x64']=_0x122c94,this['\x4c\x51\x43\x68\x64\x65']=[-0x8*-0x2ea+-0x1512*-0x1+-0x2c61,0x2*-0xc3a+-0xe45+0x26b9,0x1b4c+-0x1317+-0x835*0x1],this['\x6e\x41\x4c\x51\x45\x66']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x68\x74\x62\x79\x75\x51']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x69\x43\x48\x4b\x50\x53']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x2976aa['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x62\x70\x53\x41\x67\x58']=function(){const _0x44bc52=new RegExp(this['\x68\x74\x62\x79\x75\x51']+this['\x69\x43\x48\x4b\x50\x53']),_0x35afec=_0x44bc52['\x74\x65\x73\x74'](this['\x6e\x41\x4c\x51\x45\x66']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4c\x51\x43\x68\x64\x65'][0x61b*-0x5+0xd3*-0xf+0x2ae5]:--this['\x4c\x51\x43\x68\x64\x65'][-0x6a*0x59+-0xc47*0x3+0x49af];return this['\x70\x71\x6e\x78\x4c\x65'](_0x35afec);},_0x2976aa['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x70\x71\x6e\x78\x4c\x65']=function(_0xbf9863){if(!Boolean(~_0xbf9863))return _0xbf9863;return this['\x6c\x6d\x42\x77\x4c\x63'](this['\x6f\x54\x74\x78\x78\x64']);},_0x2976aa['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6c\x6d\x42\x77\x4c\x63']=function(_0x580532){for(let _0x3e79e9=-0x4*0x109+0x10a2+-0x63f*0x2,_0x276e14=this['\x4c\x51\x43\x68\x64\x65']['\x6c\x65\x6e\x67\x74\x68'];_0x3e79e9<_0x276e14;_0x3e79e9++){this['\x4c\x51\x43\x68\x64\x65']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x276e14=this['\x4c\x51\x43\x68\x64\x65']['\x6c\x65\x6e\x67\x74\x68'];}return _0x580532(this['\x4c\x51\x43\x68\x64\x65'][-0x10be+-0x1999+0x2a57]);},(''+function(){return 0x1828+0x35b*-0x5+-0x761;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x886+-0xd85+-0x140*-0x4)&&new _0x2976aa(_0x89c4)['\x62\x70\x53\x41\x67\x58'](),_0x89c4['\x72\x45\x52\x67\x55\x41']=!![];}_0x4a9a8b=_0x89c4['\x54\x46\x46\x56\x4d\x66'](_0x4a9a8b,_0x471e82),_0x89c4['\x53\x75\x49\x72\x47\x78'][_0x29f791]=_0x4a9a8b;}else _0x4a9a8b=_0x2a45ee;return _0x4a9a8b;}function _0x21e57a(){const _0x39a702=_0x2c1959,_0x55d57e={};_0x55d57e[_0x39a702(0x1da,'\x71\x5d\x4d\x64')]=function(_0x529086,_0x427d50){return _0x529086||_0x427d50;},_0x55d57e[_0x39a702(0x22e,'\x44\x55\x66\x42')]=_0x39a702(0x1d7,'\x30\x6b\x64\x4d');const _0x19070c=_0x55d57e,_0x4bfdd0=[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 _0x806edd of _0x4bfdd0){const _0x15ab53=_0x19070c[_0x39a702(0x24a,'\x47\x64\x29\x23')](_0x806edd,'')[_0x39a702(0x259,'\x56\x56\x39\x6a')]();if(_0x15ab53)return _0x15ab53[_0x39a702(0x21a,'\x74\x58\x59\x72')](-0x4c0+0x1d0e+-0x184e,0x47*0x24+-0xe64+-0x4cc*-0x1);}return _0x19070c[_0x39a702(0x21e,'\x71\x5d\x4d\x64')];}function _0x26a483(){const _0x1ce79f=_0x2c1959,_0x3d3dda={'\x62\x52\x6d\x44\x64':_0x1ce79f(0x226,'\x51\x75\x30\x48'),'\x75\x6c\x55\x63\x6f':function(_0x1e4f2a,_0x36a438){return _0x1e4f2a(_0x36a438);},'\x64\x50\x4d\x46\x4f':function(_0x2d93b2,_0x4c9b69){return _0x2d93b2!==_0x4c9b69;},'\x77\x78\x52\x57\x67':_0x1ce79f(0x252,'\x5a\x4b\x21\x53'),'\x52\x63\x5a\x65\x44':'\x75\x6e\x6b\x6e\x6f\x77\x6e','\x49\x65\x4c\x50\x76':_0x1ce79f(0x274,'\x36\x63\x75\x29'),'\x45\x68\x62\x55\x76':_0x1ce79f(0x230,'\x48\x28\x64\x39'),'\x66\x6a\x56\x79\x63':_0x1ce79f(0x271,'\x58\x65\x4b\x43'),'\x66\x6b\x77\x4c\x7a':function(_0x6c58b,_0x541c09){return _0x6c58b(_0x541c09);},'\x49\x75\x4f\x69\x64':_0x1ce79f(0x231,'\x23\x62\x7a\x75'),'\x4f\x58\x46\x66\x42':_0x1ce79f(0x269,'\x58\x65\x4b\x43')+_0x1ce79f(0x1d8,'\x23\x44\x67\x76'),'\x7a\x68\x54\x62\x4a':function(_0x402c8e){return _0x402c8e();},'\x49\x59\x4d\x72\x59':function(_0x1b5013,_0x2fb992){return _0x1b5013||_0x2fb992;}},_0x2241fa=_0xd0e352();let _0x8b6239=null,_0x331dc3=null;const _0x5955b7=_0x2a614a[_0x1ce79f(0x246,'\x45\x4c\x5e\x35')](__dirname,'\x2e\x2e','\x2e\x2e',_0x1ce79f(0x213,'\x45\x6e\x43\x65')+_0x1ce79f(0x24c,'\x33\x73\x78\x32'));try{if(_0x3d3dda[_0x1ce79f(0x23e,'\x74\x58\x59\x72')]!==_0x3d3dda['\x66\x6a\x56\x79\x63'])try{const _0x26582e=_0x392ff1['\x72\x65\x61\x64\x46\x69\x6c\x65'+_0x1ce79f(0x205,'\x74\x58\x59\x72')](_0x59c4cf[_0x1ce79f(0x1fb,'\x45\x6e\x43\x65')](_0x52b303,_0x1ce79f(0x1f9,'\x4a\x34\x74\x55')+_0x1ce79f(0x222,'\x6c\x63\x44\x59')),_0x3d3dda[_0x1ce79f(0x1ec,'\x23\x49\x51\x5a')]),_0x4c783f=_0x128c4b[_0x1ce79f(0x22d,'\x73\x35\x6c\x64')](_0x26582e);_0x4deee5=_0x4c783f&&_0x4c783f[_0x1ce79f(0x1f1,'\x58\x65\x4b\x43')]?_0x3d3dda['\x75\x6c\x55\x63\x6f'](_0x478294,_0x4c783f['\x76\x65\x72\x73\x69\x6f\x6e']):null,_0x598d42=_0x4c783f&&_0x4c783f[_0x1ce79f(0x22b,'\x56\x56\x39\x6a')]?_0x3d3dda[_0x1ce79f(0x1ea,'\x5d\x54\x6d\x25')](_0x5d50b5,_0x4c783f[_0x1ce79f(0x251,'\x74\x58\x59\x72')]):null;}catch(_0x3723c3){}else{const _0x1867e3=_0x1ba3c3[_0x1ce79f(0x23b,'\x40\x5b\x50\x28')+_0x1ce79f(0x255,'\x2a\x65\x40\x4b')](_0x5955b7,_0x3d3dda[_0x1ce79f(0x221,'\x5d\x78\x73\x35')]),_0x55227b=JSON[_0x1ce79f(0x21d,'\x48\x28\x64\x39')](_0x1867e3);_0x8b6239=_0x55227b&&_0x55227b[_0x1ce79f(0x1db,'\x6c\x63\x44\x59')]?_0x3d3dda['\x66\x6b\x77\x4c\x7a'](String,_0x55227b[_0x1ce79f(0x244,'\x73\x35\x6c\x64')]):null,_0x331dc3=_0x55227b&&_0x55227b[_0x1ce79f(0x23f,'\x4d\x36\x69\x77')]?_0x3d3dda['\x66\x6b\x77\x4c\x7a'](String,_0x55227b[_0x1ce79f(0x249,'\x23\x44\x67\x76')]):null;}}catch(_0x464715){}if(!_0x8b6239)try{if(_0x1ce79f(0x272,'\x45\x33\x66\x78')!==_0x3d3dda[_0x1ce79f(0x207,'\x48\x50\x38\x24')]){if(!_0x5248f6||_0x3d3dda[_0x1ce79f(0x24d,'\x44\x55\x66\x42')](typeof _0x25d15f,_0x3d3dda[_0x1ce79f(0x209,'\x38\x61\x4d\x37')]))return _0x3d3dda[_0x1ce79f(0x25d,'\x23\x44\x67\x76')];const _0x13de6e=[_0x290881[_0x1ce79f(0x24e,'\x2a\x6a\x43\x56')+'\x64']||'',_0x2b1a48[_0x1ce79f(0x254,'\x23\x44\x67\x76')+_0x1ce79f(0x23c,'\x38\x61\x4d\x37')]||'',_0x5462ef[_0x1ce79f(0x1ef,'\x24\x24\x72\x57')]||'',_0x43f200[_0x1ce79f(0x225,'\x6c\x63\x44\x59')]||'',_0x75b42a[_0x1ce79f(0x264,'\x2a\x6a\x43\x56')]||'',_0x19a3c0[_0x1ce79f(0x1d9,'\x43\x51\x25\x40')]||_0x4f899c[_0x1ce79f(0x200,'\x5a\x4b\x21\x53')+_0x1ce79f(0x261,'\x45\x33\x66\x78')]||'',_0x401437[_0x1ce79f(0x1d6,'\x45\x6e\x43\x65')+'\x65\x72\x73\x69\x6f\x6e']||_0xbfd12a[_0x1ce79f(0x1f8,'\x4f\x28\x26\x62')+_0x1ce79f(0x1fd,'\x2a\x6a\x43\x56')]||''][_0x1ce79f(0x1f3,'\x63\x41\x78\x2a')]('\x7c');return _0x2ef478[_0x1ce79f(0x266,'\x4d\x33\x4a\x37')+'\x73\x68'](_0x3d3dda[_0x1ce79f(0x247,'\x21\x65\x7a\x4d')])[_0x1ce79f(0x228,'\x58\x65\x4b\x43')](_0x13de6e,_0x3d3dda[_0x1ce79f(0x212,'\x4b\x36\x6a\x42')])[_0x1ce79f(0x250,'\x4d\x33\x4a\x37')](_0x3d3dda['\x45\x68\x62\x55\x76'])[_0x1ce79f(0x1f5,'\x45\x6e\x43\x65')](-0x18d*0x6+0x1d10+-0x13c2,-0x3*-0xc8e+-0xf2*0x23+-0x484);}else{const _0xedf826=_0x1ba3c3[_0x1ce79f(0x24f,'\x44\x55\x66\x42')+_0x1ce79f(0x1df,'\x44\x55\x66\x42')](_0x2a614a[_0x1ce79f(0x1f6,'\x4f\x28\x26\x62')](_0x2241fa,_0x3d3dda[_0x1ce79f(0x248,'\x38\x61\x4d\x37')]),_0x3d3dda['\x62\x52\x6d\x44\x64']),_0x3925e4=JSON[_0x1ce79f(0x26f,'\x43\x51\x25\x40')](_0xedf826);_0x8b6239=_0x3925e4&&_0x3925e4[_0x1ce79f(0x214,'\x5d\x54\x6d\x25')]?String(_0x3925e4[_0x1ce79f(0x242,'\x45\x4c\x5e\x35')]):null,_0x331dc3=_0x3925e4&&_0x3925e4['\x6e\x61\x6d\x65']?_0x3d3dda[_0x1ce79f(0x265,'\x4d\x36\x69\x77')](String,_0x3925e4[_0x1ce79f(0x251,'\x74\x58\x59\x72')]):null;}}catch(_0x2e09b0){}const _0x2c6cad=(process.env.EVOLVER_REGION||'')[_0x1ce79f(0x216,'\x56\x67\x65\x63')]()[_0x1ce79f(0x1f2,'\x30\x6b\x64\x4d')+_0x1ce79f(0x1dc,'\x43\x51\x25\x40')]()[_0x1ce79f(0x245,'\x21\x65\x7a\x4d')](0x1a66+0x15f9+-0x305f,0x1df*0x8+-0x1ef5+0x556*0x3)||undefined;return{'\x64\x65\x76\x69\x63\x65\x5f\x69\x64':_0x3d3dda[_0x1ce79f(0x215,'\x64\x6b\x40\x25')](_0x870f9c),'\x6e\x6f\x64\x65\x5f\x76\x65\x72\x73\x69\x6f\x6e':process[_0x1ce79f(0x262,'\x23\x75\x23\x7a')],'\x70\x6c\x61\x74\x66\x6f\x72\x6d':process['\x70\x6c\x61\x74\x66\x6f\x72\x6d'],'\x61\x72\x63\x68':process[_0x1ce79f(0x219,'\x56\x67\x65\x63')],'\x6f\x73\x5f\x72\x65\x6c\x65\x61\x73\x65':_0x3c9178['\x72\x65\x6c\x65\x61\x73\x65'](),'\x68\x6f\x73\x74\x6e\x61\x6d\x65':_0x337aad['\x63\x72\x65\x61\x74\x65\x48\x61'+'\x73\x68'](_0x3d3dda[_0x1ce79f(0x223,'\x23\x62\x7a\x75')])[_0x1ce79f(0x267,'\x23\x62\x7a\x75')](_0x3c9178[_0x1ce79f(0x1e5,'\x23\x44\x67\x76')]())[_0x1ce79f(0x239,'\x59\x45\x43\x52')](_0x3d3dda[_0x1ce79f(0x23a,'\x5a\x4b\x21\x53')])[_0x1ce79f(0x1f5,'\x45\x6e\x43\x65')](0x2*-0x20b+-0x1039+-0x3*-0x6c5,-0xdf*-0x1d+0xe*-0xd9+-0xd59),'\x65\x76\x6f\x6c\x76\x65\x72\x5f\x76\x65\x72\x73\x69\x6f\x6e':_0x8b6239,'\x63\x6c\x69\x65\x6e\x74':_0x3d3dda[_0x1ce79f(0x238,'\x71\x5d\x4d\x64')](_0x331dc3,_0x1ce79f(0x206,'\x59\x45\x43\x52')),'\x63\x6c\x69\x65\x6e\x74\x5f\x76\x65\x72\x73\x69\x6f\x6e':_0x8b6239,'\x6d\x6f\x64\x65\x6c':_0x21e57a(),'\x72\x65\x67\x69\x6f\x6e':_0x2c6cad,'\x63\x77\x64':_0x337aad[_0x1ce79f(0x20a,'\x23\x62\x7a\x75')+'\x73\x68'](_0x3d3dda[_0x1ce79f(0x25b,'\x4a\x68\x21\x67')])[_0x1ce79f(0x240,'\x30\x6b\x64\x4d')](process[_0x1ce79f(0x1ee,'\x6c\x63\x44\x59')]())[_0x1ce79f(0x233,'\x5d\x54\x6d\x25')](_0x3d3dda[_0x1ce79f(0x23d,'\x50\x6f\x5b\x5e')])[_0x1ce79f(0x21f,'\x23\x49\x51\x5a')](0x1*-0x2117+0x1*-0x1bb+-0x1169*-0x2,0x41a*0x9+0x1875*-0x1+-0xc69),'\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72':_0x49fe15(),'\x63\x61\x70\x74\x75\x72\x65\x64\x5f\x61\x74':new Date()['\x74\x6f\x49\x53\x4f\x53\x74\x72'+_0x1ce79f(0x22a,'\x44\x55\x66\x42')]()};}function _0x283771(_0x2bdedf){const _0x3bfb68=_0x2c1959,_0x2a01e0={};_0x2a01e0[_0x3bfb68(0x201,'\x36\x63\x75\x29')]=function(_0x5bee75,_0x47d671){return _0x5bee75!==_0x47d671;},_0x2a01e0[_0x3bfb68(0x25f,'\x4b\x36\x6a\x42')]=_0x3bfb68(0x263,'\x2a\x65\x40\x4b'),_0x2a01e0[_0x3bfb68(0x257,'\x39\x25\x70\x65')]='\x75\x6e\x6b\x6e\x6f\x77\x6e',_0x2a01e0[_0x3bfb68(0x273,'\x56\x56\x39\x6a')]=_0x3bfb68(0x25c,'\x40\x39\x28\x42'),_0x2a01e0[_0x3bfb68(0x234,'\x4f\x28\x26\x62')]='\x75\x74\x66\x38',_0x2a01e0['\x76\x58\x4e\x48\x63']=_0x3bfb68(0x224,'\x23\x62\x7a\x75');const _0x545d26=_0x2a01e0;if(!_0x2bdedf||_0x545d26[_0x3bfb68(0x211,'\x4a\x34\x74\x55')](typeof _0x2bdedf,_0x545d26[_0x3bfb68(0x253,'\x44\x55\x66\x42')]))return _0x545d26[_0x3bfb68(0x26a,'\x5e\x67\x66\x31')];const _0x30a4a3=[_0x2bdedf[_0x3bfb68(0x22f,'\x65\x45\x79\x5b')+'\x64']||'',_0x2bdedf[_0x3bfb68(0x22c,'\x23\x75\x23\x7a')+_0x3bfb68(0x20b,'\x48\x50\x38\x24')]||'',_0x2bdedf[_0x3bfb68(0x236,'\x58\x65\x4b\x43')]||'',_0x2bdedf[_0x3bfb68(0x25a,'\x23\x62\x7a\x75')]||'',_0x2bdedf[_0x3bfb68(0x227,'\x38\x61\x4d\x37')]||'',_0x2bdedf[_0x3bfb68(0x270,'\x65\x45\x79\x5b')]||_0x2bdedf[_0x3bfb68(0x26e,'\x38\x72\x71\x56')+_0x3bfb68(0x1e4,'\x68\x6f\x25\x69')]||'',_0x2bdedf[_0x3bfb68(0x1e7,'\x23\x44\x67\x76')+_0x3bfb68(0x1e0,'\x45\x4c\x5e\x35')]||_0x2bdedf[_0x3bfb68(0x26e,'\x38\x72\x71\x56')+_0x3bfb68(0x21c,'\x44\x55\x66\x42')]||''][_0x3bfb68(0x1ff,'\x23\x75\x23\x7a')]('\x7c');return _0x337aad[_0x3bfb68(0x204,'\x39\x25\x70\x65')+'\x73\x68'](_0x545d26['\x5a\x42\x4b\x54\x53'])[_0x3bfb68(0x26b,'\x33\x73\x78\x32')](_0x30a4a3,_0x545d26[_0x3bfb68(0x1fa,'\x6c\x63\x44\x59')])[_0x3bfb68(0x20d,'\x47\x64\x29\x23')](_0x545d26[_0x3bfb68(0x1de,'\x48\x50\x38\x24')])[_0x3bfb68(0x229,'\x4a\x68\x21\x67')](-0x118*-0x5+0x1db0+0x2ee*-0xc,0x2057+0x79c+-0x1*0x27e3);}function _0x26032b(_0x55ea7f,_0x5cfa9a){const _0x166869=_0x2c1959,_0x64d8f6={'\x51\x44\x59\x52\x75':function(_0x16db56,_0x2354a7){return _0x16db56===_0x2354a7;},'\x45\x73\x62\x68\x46':function(_0x394d33,_0x2a8fa2){return _0x394d33(_0x2a8fa2);}};return _0x64d8f6['\x51\x44\x59\x52\x75'](_0x64d8f6[_0x166869(0x218,'\x64\x6b\x40\x25')](_0x283771,_0x55ea7f),_0x283771(_0x5cfa9a));}const _0x3b1a3b={};_0x3b1a3b[_0x2c1959(0x20c,'\x23\x75\x23\x7a')+'\x6e\x76\x46\x69\x6e\x67\x65\x72'+'\x70\x72\x69\x6e\x74']=_0x26a483,_0x3b1a3b[_0x2c1959(0x217,'\x30\x6b\x64\x4d')+_0x2c1959(0x26d,'\x2a\x65\x40\x4b')+'\x79']=_0x283771,_0x3b1a3b[_0x2c1959(0x1fc,'\x23\x44\x67\x76')+_0x2c1959(0x20e,'\x4a\x34\x74\x55')]=_0x26032b,_0x3b1a3b[_0x2c1959(0x1dd,'\x33\x73\x78\x32')+_0x2c1959(0x1ed,'\x51\x75\x30\x48')]=_0x21e57a,module[_0x2c1959(0x1e9,'\x63\x41\x78\x2a')]=_0x3b1a3b;
|
|
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
|
+
};
|
package/src/gep/epigenetics.js
CHANGED
|
@@ -1 +1,31 @@
|
|
|
1
|
-
const _0x4182f3=_0x233e;function _0xfc25(){const _0x8eb325=['\x6d\x31\x65\x58\x57\x36\x4a\x63\x53\x53\x6b\x51\x57\x36\x35\x72\x57\x34\x64\x63\x53\x47','\x57\x34\x6e\x35\x65\x43\x6b\x46','\x62\x72\x47\x57\x57\x34\x57\x42\x57\x50\x42\x63\x53\x53\x6f\x6e','\x57\x50\x46\x64\x4f\x4e\x38\x47\x64\x68\x4b\x4b\x79\x47','\x6c\x38\x6f\x31\x71\x53\x6f\x6c\x57\x51\x47','\x77\x58\x6e\x4c\x57\x50\x64\x63\x56\x61','\x69\x38\x6f\x2b\x6c\x38\x6b\x4c','\x6f\x6d\x6b\x65\x67\x38\x6f\x4f\x75\x47','\x46\x62\x2f\x63\x4c\x74\x2f\x64\x4b\x71','\x6f\x43\x6f\x43\x57\x36\x4f\x46\x44\x65\x71\x35','\x57\x52\x70\x63\x56\x53\x6b\x42\x57\x37\x35\x66\x6a\x43\x6b\x71\x6b\x57','\x46\x73\x6e\x6f\x64\x71','\x57\x52\x4e\x63\x4d\x64\x69\x4c\x57\x50\x6e\x77\x57\x34\x5a\x63\x48\x59\x64\x63\x4d\x53\x6b\x4b\x57\x37\x4b','\x64\x48\x68\x63\x53\x76\x6d\x77\x57\x34\x68\x63\x4c\x38\x6f\x32','\x69\x38\x6f\x77\x73\x43\x6f\x51\x74\x78\x44\x5a','\x6a\x4e\x4b\x78\x76\x43\x6b\x67\x57\x35\x68\x64\x51\x47\x4e\x64\x54\x73\x78\x63\x56\x53\x6f\x78','\x57\x34\x52\x64\x50\x67\x6a\x7a\x57\x34\x72\x56\x57\x4f\x79','\x75\x59\x6c\x63\x54\x59\x68\x64\x52\x57','\x71\x32\x71\x6e\x57\x50\x75\x7a\x57\x34\x53\x63\x75\x57','\x77\x38\x6b\x32\x57\x50\x74\x63\x51\x65\x79\x70\x57\x4f\x68\x63\x4f\x71','\x57\x50\x46\x63\x4c\x53\x6b\x51\x57\x51\x4b','\x6e\x53\x6f\x4d\x41\x47\x6a\x35\x57\x37\x4b\x79\x57\x50\x75','\x57\x50\x53\x64\x57\x50\x61\x71\x65\x74\x56\x63\x51\x53\x6f\x4c','\x75\x6d\x6f\x31\x74\x38\x6f\x70\x57\x35\x79','\x57\x37\x2f\x63\x4b\x30\x2f\x63\x54\x43\x6b\x63\x57\x37\x46\x64\x48\x4b\x70\x64\x4b\x6d\x6b\x4a\x57\x52\x65\x72\x57\x51\x65','\x57\x4f\x61\x6b\x57\x37\x75\x72\x57\x52\x57\x2b','\x75\x38\x6b\x35\x61\x74\x4e\x63\x47\x6d\x6f\x72\x66\x43\x6b\x46','\x79\x47\x72\x70\x57\x50\x4a\x63\x47\x71','\x77\x4d\x74\x63\x54\x6d\x6f\x48\x74\x57\x35\x2f\x42\x57','\x76\x4e\x70\x63\x47\x53\x6f\x56\x74\x58\x62\x34\x7a\x71','\x57\x35\x78\x63\x56\x61\x61\x47\x57\x52\x61\x42\x69\x61','\x57\x52\x42\x63\x4f\x67\x70\x63\x4b\x53\x6f\x49\x6d\x4a\x39\x6e','\x44\x53\x6b\x68\x57\x51\x2f\x63\x49\x33\x57\x4a\x57\x51\x56\x63\x4d\x47','\x67\x38\x6f\x78\x7a\x43\x6f\x73\x44\x71','\x77\x6d\x6f\x4f\x57\x35\x70\x63\x4f\x53\x6b\x53\x77\x78\x34\x2b\x57\x52\x2f\x64\x50\x53\x6f\x69\x57\x35\x2f\x64\x4d\x61','\x71\x4b\x44\x47\x69\x30\x2f\x63\x47\x59\x30\x5a','\x42\x48\x62\x58\x57\x52\x2f\x63\x47\x61','\x6d\x43\x6f\x35\x42\x62\x7a\x4f','\x57\x52\x33\x64\x50\x75\x4f\x67\x6f\x47','\x57\x37\x54\x53\x43\x64\x72\x43\x57\x4f\x4c\x70\x57\x35\x61','\x57\x35\x33\x63\x50\x65\x46\x63\x4a\x53\x6f\x47','\x75\x38\x6b\x72\x6f\x43\x6b\x66\x57\x35\x70\x63\x49\x43\x6f\x35\x57\x52\x42\x63\x52\x4c\x47\x4e\x57\x37\x70\x63\x52\x47','\x76\x61\x70\x63\x47\x5a\x33\x64\x49\x57','\x57\x34\x68\x64\x48\x76\x75\x73\x69\x68\x4b\x57','\x45\x48\x56\x63\x49\x64\x4e\x63\x50\x71','\x57\x51\x33\x63\x50\x6d\x6b\x35\x57\x36\x76\x6e\x70\x53\x6b\x68\x70\x47','\x79\x43\x6b\x46\x57\x50\x4c\x79\x6e\x58\x62\x31\x44\x31\x64\x64\x4e\x53\x6b\x65\x70\x38\x6f\x4e','\x57\x51\x42\x63\x47\x59\x31\x57\x57\x34\x30\x6b\x57\x37\x4e\x63\x51\x57','\x73\x73\x50\x6c\x57\x51\x4e\x63\x56\x71','\x46\x59\x64\x64\x50\x4a\x4c\x39','\x63\x58\x34\x42\x57\x36\x71\x6b\x57\x4f\x33\x63\x56\x53\x6f\x42','\x6a\x38\x6b\x6a\x6e\x6d\x6f\x74\x72\x78\x30','\x42\x61\x48\x4d\x57\x52\x34','\x57\x35\x68\x63\x54\x48\x6d\x4e','\x66\x58\x37\x63\x4a\x30\x4f\x72\x57\x35\x5a\x63\x4a\x53\x6f\x4f','\x45\x6d\x6b\x2f\x6b\x65\x65','\x57\x51\x42\x63\x47\x77\x4a\x63\x4b\x43\x6f\x42\x6d\x38\x6f\x72','\x57\x50\x4a\x63\x55\x74\x4f\x45\x57\x50\x76\x2f\x57\x50\x66\x67\x57\x50\x6d\x52\x57\x52\x6d','\x43\x78\x48\x52\x57\x52\x75\x67','\x73\x32\x75\x52\x57\x4f\x30','\x7a\x62\x4e\x63\x4b\x5a\x78\x63\x52\x71','\x70\x32\x71\x70\x74\x43\x6b\x43\x57\x34\x52\x63\x4b\x4d\x75','\x63\x53\x6b\x33\x57\x4f\x2f\x64\x4f\x38\x6f\x34\x66\x64\x38','\x57\x50\x68\x64\x4c\x62\x64\x63\x51\x38\x6b\x4d\x57\x51\x6c\x64\x50\x61','\x57\x51\x2f\x64\x48\x57\x42\x64\x49\x61','\x43\x33\x56\x64\x54\x53\x6b\x54\x57\x36\x30\x72\x6e\x43\x6f\x56\x57\x4f\x48\x31\x57\x52\x65','\x57\x37\x66\x66\x57\x50\x69\x36\x6d\x61\x5a\x63\x56\x43\x6f\x4e','\x57\x50\x42\x64\x4c\x5a\x5a\x64\x54\x78\x71','\x57\x50\x5a\x64\x56\x78\x69\x49\x6e\x4d\x65\x4b\x7a\x61','\x73\x4b\x69\x48\x71\x73\x33\x64\x50\x33\x47\x62\x57\x36\x31\x45\x45\x48\x64\x63\x4d\x57','\x57\x50\x5a\x64\x4b\x59\x4e\x64\x53\x33\x52\x63\x55\x61','\x44\x49\x33\x63\x52\x74\x38\x30','\x6e\x43\x6f\x2f\x42\x58\x66\x35\x57\x36\x75','\x45\x43\x6b\x78\x77\x53\x6f\x70\x72\x77\x35\x44\x64\x57','\x68\x38\x6b\x4b\x69\x6d\x6f\x4a\x45\x38\x6b\x4f\x42\x53\x6b\x65','\x75\x33\x4a\x63\x4b\x38\x6f\x6c\x77\x47','\x57\x35\x44\x45\x57\x4f\x4b\x4b\x6c\x72\x37\x63\x4f\x61','\x77\x66\x31\x2f\x57\x52\x75\x33\x57\x34\x69\x7a\x57\x34\x47','\x67\x6d\x6b\x55\x77\x53\x6f\x35\x6f\x6d\x6f\x7a\x76\x71','\x66\x53\x6f\x69\x77\x43\x6f\x6a\x57\x50\x64\x64\x4c\x53\x6b\x4d\x57\x50\x69','\x57\x4f\x62\x54\x46\x53\x6f\x46\x71\x38\x6b\x79\x57\x4f\x4e\x63\x4a\x61','\x75\x53\x6b\x64\x7a\x38\x6f\x62\x6a\x38\x6f\x7a\x71\x43\x6b\x77','\x75\x6d\x6b\x6b\x44\x43\x6f\x41\x6c\x43\x6f\x61\x76\x53\x6b\x2b','\x57\x4f\x4c\x34\x45\x43\x6f\x46\x75\x53\x6b\x45','\x57\x50\x76\x37\x45\x6d\x6f\x51\x46\x47','\x69\x64\x4b\x32\x57\x34\x43\x63','\x64\x38\x6f\x61\x74\x53\x6f\x6b\x43\x47','\x63\x62\x31\x39\x66\x57','\x6c\x77\x78\x64\x4e\x31\x62\x78\x57\x37\x4e\x64\x51\x71\x58\x35\x45\x33\x57','\x61\x43\x6b\x4c\x6d\x78\x42\x64\x4b\x4a\x75\x50','\x65\x53\x6f\x45\x6a\x6d\x6f\x2b\x64\x53\x6f\x53\x43\x6d\x6b\x47\x62\x61','\x43\x33\x52\x64\x54\x6d\x6f\x38\x57\x51\x61\x30\x6f\x43\x6f\x69\x57\x50\x30','\x57\x34\x58\x55\x62\x53\x6b\x45\x74\x38\x6b\x2f\x63\x6d\x6f\x59','\x68\x43\x6b\x6f\x57\x35\x54\x66\x57\x36\x38','\x6f\x6d\x6b\x4b\x57\x37\x50\x5a\x57\x34\x74\x63\x4b\x53\x6f\x47\x57\x4f\x69','\x57\x37\x30\x58\x6f\x43\x6f\x66\x63\x4d\x76\x33\x57\x34\x54\x58\x57\x52\x50\x4f\x57\x35\x78\x63\x54\x47','\x57\x34\x31\x36\x6d\x38\x6b\x56\x44\x47'];_0xfc25=function(){return _0x8eb325;};return _0xfc25();}function _0x233e(_0x1a06fd,_0x1b5168){_0x1a06fd=_0x1a06fd-(0x73f+-0x1*0x4cd+-0xfe);const _0x1e7376=_0xfc25();let _0x30389f=_0x1e7376[_0x1a06fd];if(_0x233e['\x72\x71\x4f\x61\x49\x44']===undefined){var _0x5b0dc3=function(_0x578b87){const _0x17c36b='\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 _0xc14836='',_0x34e6ef='',_0x1a5c0b=_0xc14836+_0x5b0dc3,_0x79dc83=(''+function(){return-0x2*0x519+0xb*-0x21d+0x2171;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x6*-0x5e7+0x1*0x14d3+-0x2*0x1c1e);for(let _0x3c985a=-0x37*-0x53+0x4e3+-0x16b8,_0x4204f7,_0x14e4eb,_0x43a9e8=-0x305*0x3+0x5d*-0x2e+-0x897*-0x3;_0x14e4eb=_0x578b87['\x63\x68\x61\x72\x41\x74'](_0x43a9e8++);~_0x14e4eb&&(_0x4204f7=_0x3c985a%(0x473*0x1+-0x1e3d*0x1+0x19ce)?_0x4204f7*(-0x26fd*0x1+0xd64+0x19d9)+_0x14e4eb:_0x14e4eb,_0x3c985a++%(-0x789+-0x1f65*-0x1+-0x17d8))?_0xc14836+=_0x79dc83||_0x1a5c0b['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x43a9e8+(0x1*-0x53c+-0x22a*-0x1+0x31c))-(-0x1*0x22a5+-0xb9d+-0x1*-0x2e4c)!==0x37*0x5+-0xa*-0x20b+0x5*-0x44d?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xbc4+-0x1*0x1f4e+0x1489&_0x4204f7>>(-(-0x2ab*0x2+-0x2*0x9e3+0x191e)*_0x3c985a&0x2*-0x3e1+0x1556+-0xd8e)):_0x3c985a:0x172a+0xd97+-0x24c1){_0x14e4eb=_0x17c36b['\x69\x6e\x64\x65\x78\x4f\x66'](_0x14e4eb);}for(let _0x38d9fd=0x5*0x71f+0x96f+-0x1*0x2d0a,_0x847304=_0xc14836['\x6c\x65\x6e\x67\x74\x68'];_0x38d9fd<_0x847304;_0x38d9fd++){_0x34e6ef+='\x25'+('\x30\x30'+_0xc14836['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x38d9fd)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0xc8*0x5+0x453+-0xd*0x7))['\x73\x6c\x69\x63\x65'](-(0x76*0x28+0x1702+-0x2970));}return decodeURIComponent(_0x34e6ef);};const _0x3f1a15=function(_0x3a98ea,_0x4efa5e){let _0x46486b=[],_0x2bb235=-0x174*-0x7+0x1b6*-0x2+0x20*-0x36,_0xed36e6,_0xfd0944='';_0x3a98ea=_0x5b0dc3(_0x3a98ea);let _0x7d2498;for(_0x7d2498=-0x40*-0x55+0x97f+-0x1ebf;_0x7d2498<-0x1ac9+-0xc90+-0x3ab*-0xb;_0x7d2498++){_0x46486b[_0x7d2498]=_0x7d2498;}for(_0x7d2498=0xbb2+0x138d+0x1*-0x1f3f;_0x7d2498<-0x1cd7+0x1d40+0x97*0x1;_0x7d2498++){_0x2bb235=(_0x2bb235+_0x46486b[_0x7d2498]+_0x4efa5e['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x7d2498%_0x4efa5e['\x6c\x65\x6e\x67\x74\x68']))%(0x10d4+-0x1e23+-0x197*-0x9),_0xed36e6=_0x46486b[_0x7d2498],_0x46486b[_0x7d2498]=_0x46486b[_0x2bb235],_0x46486b[_0x2bb235]=_0xed36e6;}_0x7d2498=-0x1e96+0x1c65+-0x1*-0x231,_0x2bb235=0x81d*0x1+0x1f47*0x1+-0x2764;for(let _0x269ad3=0x12d*-0x1b+-0x2*-0xd4b+-0x1*-0x529;_0x269ad3<_0x3a98ea['\x6c\x65\x6e\x67\x74\x68'];_0x269ad3++){_0x7d2498=(_0x7d2498+(-0x5b2+0x1*-0x254b+-0x2*-0x157f))%(-0x1b*0xc3+0xde4+0x7ad),_0x2bb235=(_0x2bb235+_0x46486b[_0x7d2498])%(-0xded+-0xf0c+0x1df9*0x1),_0xed36e6=_0x46486b[_0x7d2498],_0x46486b[_0x7d2498]=_0x46486b[_0x2bb235],_0x46486b[_0x2bb235]=_0xed36e6,_0xfd0944+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x3a98ea['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x269ad3)^_0x46486b[(_0x46486b[_0x7d2498]+_0x46486b[_0x2bb235])%(0x2121+-0x599+-0x1a88)]);}return _0xfd0944;};_0x233e['\x45\x4e\x76\x70\x73\x70']=_0x3f1a15,_0x233e['\x46\x55\x65\x4a\x62\x52']={},_0x233e['\x72\x71\x4f\x61\x49\x44']=!![];}const _0x5f3cfd=_0x1e7376[-0x101*-0x13+-0x1e99+0xb86],_0x21706c=_0x1a06fd+_0x5f3cfd,_0x25b0ce=_0x233e['\x46\x55\x65\x4a\x62\x52'][_0x21706c];if(!_0x25b0ce){if(_0x233e['\x79\x4c\x44\x4a\x4b\x57']===undefined){const _0x7f141=function(_0x33c136){this['\x6d\x74\x70\x61\x6b\x4b']=_0x33c136,this['\x62\x47\x77\x6d\x7a\x68']=[0x2*0xb5d+0x2078+0x47*-0xc7,0x2423+-0x1020+0x1403*-0x1,0x10b0+-0x2365+0x1*0x12b5],this['\x69\x5a\x65\x46\x49\x6f']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x42\x58\x6d\x50\x4a\x7a']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x6f\x72\x73\x68\x78\x74']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x7f141['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x65\x4e\x49\x67\x48\x4f']=function(){const _0x4f366f=new RegExp(this['\x42\x58\x6d\x50\x4a\x7a']+this['\x6f\x72\x73\x68\x78\x74']),_0xfde95e=_0x4f366f['\x74\x65\x73\x74'](this['\x69\x5a\x65\x46\x49\x6f']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x62\x47\x77\x6d\x7a\x68'][-0x9d4+-0x18f*0x18+0x1*0x2f3d]:--this['\x62\x47\x77\x6d\x7a\x68'][-0x1b01+-0x1*0x159+0x1*0x1c5a];return this['\x74\x54\x4a\x4a\x75\x57'](_0xfde95e);},_0x7f141['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x74\x54\x4a\x4a\x75\x57']=function(_0x47bf1c){if(!Boolean(~_0x47bf1c))return _0x47bf1c;return this['\x56\x73\x55\x57\x4b\x6b'](this['\x6d\x74\x70\x61\x6b\x4b']);},_0x7f141['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x56\x73\x55\x57\x4b\x6b']=function(_0x2b665b){for(let _0x2897dd=-0x94*-0xa+-0xc76+0x6ae,_0x32f555=this['\x62\x47\x77\x6d\x7a\x68']['\x6c\x65\x6e\x67\x74\x68'];_0x2897dd<_0x32f555;_0x2897dd++){this['\x62\x47\x77\x6d\x7a\x68']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x32f555=this['\x62\x47\x77\x6d\x7a\x68']['\x6c\x65\x6e\x67\x74\x68'];}return _0x2b665b(this['\x62\x47\x77\x6d\x7a\x68'][-0xc8a+-0xb06*0x1+0x1790]);},(''+function(){return-0x4*-0x85f+0x4a*0x59+-0x3b36*0x1;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1*0x1b14+0x79a+-0x22ad*0x1)&&new _0x7f141(_0x233e)['\x65\x4e\x49\x67\x48\x4f'](),_0x233e['\x79\x4c\x44\x4a\x4b\x57']=!![];}_0x30389f=_0x233e['\x45\x4e\x76\x70\x73\x70'](_0x30389f,_0x1b5168),_0x233e['\x46\x55\x65\x4a\x62\x52'][_0x21706c]=_0x30389f;}else _0x30389f=_0x25b0ce;return _0x30389f;}(function(_0x498a8c,_0x269d58){const _0x5aff6d=_0x233e,_0xa86b64=_0x498a8c();while(!![]){try{const _0x116845=parseInt(_0x5aff6d(0x19d,'\x75\x40\x69\x31'))/(-0x231a*0x1+-0xb80+0x2e9b)*(parseInt(_0x5aff6d(0x1ad,'\x2a\x68\x5e\x4d'))/(0x215c+0x1*-0x1f3+-0x1f67))+-parseInt(_0x5aff6d(0x187,'\x61\x4a\x67\x66'))/(0x265*0xf+-0x1*0x1ff3+0x3f5*-0x1)*(-parseInt(_0x5aff6d(0x1c5,'\x36\x6a\x39\x23'))/(-0x458+0xda2+-0x4a3*0x2))+parseInt(_0x5aff6d(0x186,'\x73\x61\x6d\x55'))/(-0x2229+0x991*-0x3+0x1*0x3ee1)*(parseInt(_0x5aff6d(0x19c,'\x75\x39\x44\x5b'))/(0x1*-0xfd1+-0x1cc0+0xedd*0x3))+-parseInt(_0x5aff6d(0x18d,'\x4b\x5e\x47\x21'))/(-0x3ad*0x1+0xc1*-0xf+0xf03)+-parseInt(_0x5aff6d(0x1b2,'\x58\x25\x56\x78'))/(0x1a5*0xe+-0xfc6*-0x1+0x1*-0x26c4)*(-parseInt(_0x5aff6d(0x1c3,'\x6d\x65\x76\x62'))/(-0xbb6+-0x1f31+-0x6*-0x728))+parseInt(_0x5aff6d(0x1be,'\x58\x25\x56\x78'))/(-0x5*-0x259+-0x8cd*-0x3+-0x261a)*(parseInt(_0x5aff6d(0x1a5,'\x52\x32\x24\x47'))/(0x24f*-0x2+0x23e1+-0x1f38))+parseInt(_0x5aff6d(0x1d1,'\x65\x6b\x57\x38'))/(0x11a*0x1f+-0x783*-0x1+0x299d*-0x1)*(-parseInt(_0x5aff6d(0x1bf,'\x52\x32\x24\x47'))/(-0x6*-0x3c7+0xa*0x191+0x1*-0x2647));if(_0x116845===_0x269d58)break;else _0xa86b64['push'](_0xa86b64['shift']());}catch(_0x30dfe6){_0xa86b64['push'](_0xa86b64['shift']());}}}(_0xfc25,-0xe596*0x1+-0x19844+-0x9*-0x8353));const _0x18d65a=(function(){const _0x1c3801=_0x233e,_0x1993d9={};_0x1993d9[_0x1c3801(0x1b8,'\x39\x4b\x4b\x62')]=_0x1c3801(0x1a3,'\x6f\x70\x6e\x58'),_0x1993d9['\x6c\x68\x4e\x49\x74']=function(_0x467bb3,_0x715c3a){return _0x467bb3===_0x715c3a;},_0x1993d9[_0x1c3801(0x18a,'\x2a\x79\x66\x4e')]='\x49\x6e\x53\x7a\x78',_0x1993d9[_0x1c3801(0x175,'\x63\x47\x42\x61')]=_0x1c3801(0x18c,'\x75\x39\x44\x5b'),_0x1993d9[_0x1c3801(0x17b,'\x70\x52\x6b\x4d')]='\x63\x47\x78\x51\x67';const _0x4a0b15=_0x1993d9;let _0x5637ed=!![];return function(_0x170fea,_0x1b47e4){const _0x5a04c9=_0x1c3801,_0xee54d7={'\x75\x44\x66\x66\x53':_0x4a0b15['\x70\x66\x6f\x52\x58'],'\x51\x72\x6d\x4a\x4a':function(_0x25e5ae,_0x545729){const _0x5ac2f8=_0x233e;return _0x4a0b15[_0x5ac2f8(0x1cc,'\x45\x54\x54\x71')](_0x25e5ae,_0x545729);},'\x6d\x79\x50\x50\x57':_0x4a0b15[_0x5a04c9(0x18a,'\x2a\x79\x66\x4e')]};if(_0x4a0b15[_0x5a04c9(0x1af,'\x68\x28\x21\x54')](_0x4a0b15[_0x5a04c9(0x1b9,'\x32\x66\x7a\x59')],_0x4a0b15[_0x5a04c9(0x190,'\x40\x7a\x66\x45')])){const _0x33e58b=_0x1106ee&&_0x5b8224[_0x5a04c9(0x19a,'\x45\x5e\x63\x72')]?_0x4b2266(_0x350ada[_0x5a04c9(0x1cf,'\x50\x45\x25\x5a')]):'',_0x25f62c=_0xdcab71&&_0x351e4a[_0x5a04c9(0x1c6,'\x46\x6c\x74\x6e')]?_0xac8557(_0x53cf21[_0x5a04c9(0x1cb,'\x75\x48\x26\x52')]):'',_0x4d9aa2=_0x58b732&&_0x387b18[_0x5a04c9(0x1b1,'\x2a\x56\x53\x28')+_0x5a04c9(0x178,'\x30\x23\x46\x76')]?_0xfd2fb7(_0x1795b3[_0x5a04c9(0x183,'\x66\x24\x30\x6f')+_0x5a04c9(0x1a4,'\x28\x4b\x51\x49')]):'';return[_0x33e58b,_0x25f62c,_0x4d9aa2][_0x5a04c9(0x1aa,'\x65\x44\x67\x62')](_0x1a94d)['\x6a\x6f\x69\x6e']('\x2f')||_0xee54d7['\x75\x44\x66\x66\x53'];}else{const _0x142d6a=_0x5637ed?function(){const _0x22d3b3=_0x5a04c9,_0x503168={'\x4d\x52\x48\x76\x4a':function(_0x137143,_0x2cb8fb){const _0x681e11=_0x233e;return _0xee54d7[_0x681e11(0x1ca,'\x36\x6a\x39\x23')](_0x137143,_0x2cb8fb);}};if(_0x1b47e4){if(_0xee54d7[_0x22d3b3(0x185,'\x2a\x68\x5e\x4d')](_0xee54d7[_0x22d3b3(0x195,'\x24\x36\x77\x47')],_0xee54d7[_0x22d3b3(0x1cd,'\x63\x47\x42\x61')])){const _0x285ae1=_0x1b47e4['\x61\x70\x70\x6c\x79'](_0x170fea,arguments);return _0x1b47e4=null,_0x285ae1;}else return _0x40467a&&_0x503168[_0x22d3b3(0x1c9,'\x4b\x5e\x47\x21')](_0x22e0b4[_0x22d3b3(0x174,'\x75\x40\x69\x31')],_0x3ff737);}}:function(){};return _0x5637ed=![],_0x142d6a;}};}()),_0x59b73a=_0x18d65a(this,function(){const _0x1ea77a=_0x233e,_0x1ab4f3={};_0x1ab4f3['\x6f\x71\x41\x58\x5a']=_0x1ea77a(0x1a1,'\x72\x4a\x70\x6d')+_0x1ea77a(0x19b,'\x73\x6c\x6e\x4a');const _0x204f76=_0x1ab4f3;return _0x59b73a[_0x1ea77a(0x1b3,'\x4b\x5e\x47\x21')]()[_0x1ea77a(0x17d,'\x74\x79\x28\x54')](_0x204f76[_0x1ea77a(0x1c4,'\x46\x6c\x74\x6e')])[_0x1ea77a(0x17e,'\x65\x47\x34\x5d')]()['\x63\x6f\x6e\x73\x74\x72\x75\x63'+'\x74\x6f\x72'](_0x59b73a)[_0x1ea77a(0x197,'\x45\x54\x54\x71')](_0x204f76[_0x1ea77a(0x1ab,'\x49\x6f\x79\x41')]);});_0x59b73a();'use strict';const _0x41d29e=require(_0x4182f3(0x193,'\x65\x6b\x57\x38')+'\x67');function _0x55c981(_0x5c6e9b){const _0x3c1402=_0x4182f3,_0x223c98={'\x45\x65\x46\x52\x4d':function(_0x18e83c,_0x2156db){return _0x18e83c(_0x2156db);},'\x64\x71\x79\x65\x76':_0x3c1402(0x1b0,'\x4a\x47\x5d\x6e')},_0x21cb4e=_0x5c6e9b&&_0x5c6e9b['\x70\x6c\x61\x74\x66\x6f\x72\x6d']?_0x223c98[_0x3c1402(0x1ba,'\x2a\x68\x5e\x4d')](String,_0x5c6e9b[_0x3c1402(0x1b6,'\x58\x25\x56\x78')]):'',_0x15134b=_0x5c6e9b&&_0x5c6e9b[_0x3c1402(0x199,'\x48\x39\x77\x40')]?_0x223c98[_0x3c1402(0x18e,'\x63\x47\x42\x61')](String,_0x5c6e9b[_0x3c1402(0x19f,'\x53\x6f\x73\x4f')]):'',_0x24edb6=_0x5c6e9b&&_0x5c6e9b[_0x3c1402(0x18b,'\x78\x65\x75\x48')+_0x3c1402(0x1bb,'\x61\x4a\x67\x66')]?String(_0x5c6e9b[_0x3c1402(0x1c8,'\x2a\x79\x66\x4e')+'\x73\x69\x6f\x6e']):'';return[_0x21cb4e,_0x15134b,_0x24edb6][_0x3c1402(0x1ac,'\x73\x6c\x6e\x4a')](Boolean)[_0x3c1402(0x1d0,'\x72\x4a\x70\x6d')]('\x2f')||_0x223c98[_0x3c1402(0x188,'\x36\x6a\x39\x23')];}function _0x4ebb80(_0x4a2cc9,_0x538203){const _0x105c53=_0x4182f3,_0x14a173={'\x6c\x6d\x79\x72\x6b':function(_0x1cd33f,_0xf564bd){return _0x1cd33f===_0xf564bd;},'\x68\x65\x47\x42\x77':function(_0x5a2fe4,_0x494fea){return _0x5a2fe4(_0x494fea);}};if(!_0x4a2cc9||!Array[_0x105c53(0x1d3,'\x2a\x68\x5e\x4d')](_0x4a2cc9['\x65\x70\x69\x67\x65\x6e\x65\x74'+_0x105c53(0x1d2,'\x45\x5e\x63\x72')]))return 0x21d0+0x12fc+-0x34cc;const _0x29077c=_0x55c981(_0x538203),_0x7f1bf4=_0x4a2cc9[_0x105c53(0x1b4,'\x39\x4b\x4b\x62')+_0x105c53(0x196,'\x32\x66\x7a\x59')][_0x105c53(0x198,'\x36\x6a\x39\x23')](function(_0x3e55c9){const _0x13cbd7=_0x105c53;return _0x3e55c9&&_0x14a173[_0x13cbd7(0x1a7,'\x65\x44\x67\x62')](_0x3e55c9[_0x13cbd7(0x1a2,'\x73\x61\x6d\x55')],_0x29077c);});return _0x7f1bf4?_0x14a173[_0x105c53(0x17f,'\x36\x6a\x39\x23')](Number,_0x7f1bf4[_0x105c53(0x1c1,'\x31\x37\x75\x48')])||0x1*0xf56+0x1457+-0x1*0x23ad:-0xde7+-0x1df3+0x2bda;}function _0x5103bf(_0x3a7e16,_0x5ba8c2){const _0x429662=_0x4182f3,_0x34c889={'\x43\x4b\x43\x73\x4b':function(_0x2c015e,_0x13dc7d){return _0x2c015e===_0x13dc7d;},'\x6c\x71\x61\x42\x69':function(_0x1c4924,_0x540933){return _0x1c4924(_0x540933);},'\x47\x4a\x70\x65\x6e':function(_0x111356,_0x27f132){return _0x111356<=_0x27f132;}};if(!_0x3a7e16||!Array[_0x429662(0x1ce,'\x58\x47\x67\x4f')](_0x3a7e16[_0x429662(0x179,'\x73\x6c\x6e\x4a')+_0x429662(0x1d2,'\x45\x5e\x63\x72')])||_0x3a7e16[_0x429662(0x1a8,'\x2a\x79\x66\x4e')+_0x429662(0x181,'\x68\x28\x21\x54')][_0x429662(0x1b7,'\x39\x4b\x4b\x62')]===0x20da+0xb8d*0x2+-0x37f4)return![];const _0x4c1fc2=_0x34c889['\x6c\x71\x61\x42\x69'](_0x55c981,_0x5ba8c2),_0x30e893=_0x3a7e16[_0x429662(0x177,'\x75\x4c\x41\x4f')+_0x429662(0x1ae,'\x49\x36\x4d\x71')]['\x66\x69\x6e\x64'](function(_0x8e44ba){const _0x21d25a=_0x429662;return _0x8e44ba&&_0x34c889[_0x21d25a(0x194,'\x36\x6a\x39\x23')](_0x8e44ba['\x63\x6f\x6e\x74\x65\x78\x74'],_0x4c1fc2);});if(!_0x30e893)return![];const _0x133d17=_0x34c889[_0x429662(0x1a0,'\x40\x7a\x66\x45')](Number,_0x30e893[_0x429662(0x189,'\x73\x6c\x6e\x4a')]);if(!Number['\x69\x73\x46\x69\x6e\x69\x74\x65'](_0x133d17))return![];return _0x34c889[_0x429662(0x19e,'\x2a\x56\x53\x28')](_0x133d17,_0x41d29e[_0x429662(0x1c2,'\x31\x37\x75\x48')+'\x47\x45\x4e\x45\x54\x49\x43\x5f'+_0x429662(0x184,'\x75\x4c\x41\x4f')+'\x53\x54']);}const _0x30231e={};_0x30231e[_0x4182f3(0x1b5,'\x58\x25\x56\x78')+_0x4182f3(0x191,'\x50\x45\x25\x5a')+'\x74']=_0x55c981,_0x30231e[_0x4182f3(0x1c7,'\x32\x66\x7a\x59')+_0x4182f3(0x1c0,'\x46\x6c\x74\x6e')+'\x73\x74']=_0x4ebb80,_0x30231e[_0x4182f3(0x176,'\x53\x6f\x73\x4f')+_0x4182f3(0x180,'\x68\x28\x21\x54')+_0x4182f3(0x1a6,'\x4a\x47\x5d\x6e')+'\x65\x64']=_0x5103bf,module[_0x4182f3(0x182,'\x48\x39\x77\x40')]=_0x30231e;
|
|
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 };
|