@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/recallInject.js
CHANGED
|
@@ -1 +1,409 @@
|
|
|
1
|
-
const _0x57601a=_0x44ad;(function(_0x82da68,_0x3a41d0){const _0x7e40cd=_0x44ad,_0x388ea5=_0x82da68();while(!![]){try{const _0x470659=-parseInt(_0x7e40cd(0x3cc,'\x45\x63\x28\x61'))/(0x279*-0x5+0xae3+-0x1*-0x17b)+-parseInt(_0x7e40cd(0x2a1,'\x24\x49\x55\x63'))/(-0x1ad2+-0x278+-0x1f4*-0xf)*(parseInt(_0x7e40cd(0x236,'\x47\x4a\x6e\x4d'))/(-0x2674+-0x53*0x77+0x4d0c))+-parseInt(_0x7e40cd(0x315,'\x30\x4b\x62\x36'))/(0x15c1+0x5*-0x28d+-0x8fc)+-parseInt(_0x7e40cd(0x2cd,'\x4f\x2a\x62\x28'))/(-0x777*0x3+0x1966+-0x2fc)+parseInt(_0x7e40cd(0x3b7,'\x48\x72\x75\x34'))/(0x1e7*0x13+0x15de+-0x39fd)+-parseInt(_0x7e40cd(0x290,'\x5e\x49\x45\x34'))/(-0x1645+0x469*0x1+0x11e3)+parseInt(_0x7e40cd(0x272,'\x4d\x34\x2a\x6d'))/(0x104c*-0x2+-0xeff+0x2f9f)*(parseInt(_0x7e40cd(0x2be,'\x45\x63\x28\x61'))/(-0x1b42+0x251*-0x2+0x1fed));if(_0x470659===_0x3a41d0)break;else _0x388ea5['push'](_0x388ea5['shift']());}catch(_0x3211c9){_0x388ea5['push'](_0x388ea5['shift']());}}}(_0x15ab,0xefcaf+0xf2529+0xc385*-0x17));const _0x476195=(function(){const _0x445652=_0x44ad,_0x5cc343={'\x74\x70\x56\x65\x42':function(_0x264c41,_0xfb254a){return _0x264c41(_0xfb254a);},'\x50\x70\x6d\x44\x44':function(_0x4f509,_0x3be4cd){return _0x4f509||_0x3be4cd;},'\x63\x56\x68\x6c\x47':_0x445652(0x37a,'\x69\x69\x4c\x4b')+'\x73','\x55\x48\x51\x6e\x46':'\x73\x74\x61\x62\x6c\x65\x5f\x73'+_0x445652(0x3b8,'\x77\x46\x36\x69')+'\x6c\x61\x74\x65\x61\x75','\x73\x69\x43\x52\x72':_0x445652(0x259,'\x79\x43\x35\x78')};let _0x54357a=!![];return function(_0x146b94,_0x4d82d6){const _0x48cef5=_0x54357a?function(){const _0x4cfa52=_0x44ad,_0x34ca16={'\x68\x49\x42\x64\x77':function(_0x47fa70,_0x58f1d3){const _0x27f97b=_0x44ad;return _0x5cc343[_0x27f97b(0x2d5,'\x6a\x39\x6a\x57')](_0x47fa70,_0x58f1d3);},'\x74\x4b\x6c\x58\x4e':function(_0x343d06,_0x2aadd6){const _0x3b95b8=_0x44ad;return _0x5cc343[_0x3b95b8(0x2d6,'\x55\x32\x61\x4b')](_0x343d06,_0x2aadd6);},'\x44\x49\x42\x4a\x6a':_0x5cc343[_0x4cfa52(0x23e,'\x26\x44\x4b\x36')],'\x49\x45\x70\x41\x55':_0x5cc343[_0x4cfa52(0x26f,'\x64\x67\x62\x4d')]};if(_0x4d82d6){if(_0x5cc343[_0x4cfa52(0x39f,'\x77\x46\x36\x69')]===_0x5cc343[_0x4cfa52(0x1ed,'\x79\x66\x47\x75')]){const _0xc73e7a=_0x4d82d6['\x61\x70\x70\x6c\x79'](_0x146b94,arguments);return _0x4d82d6=null,_0xc73e7a;}else{const _0x4f50c9=_0x34ca16[_0x4cfa52(0x2ab,'\x45\x28\x7a\x26')](_0x110701,_0x34ca16[_0x4cfa52(0x1fc,'\x47\x4a\x6e\x4d')](_0x1b704e,'')),_0x2be6ca=_0x4f50c9[_0x4cfa52(0x2a8,'\x6a\x39\x6a\x57')+_0x4cfa52(0x3cf,'\x35\x62\x76\x5b')](),_0x14b849=/\b(error|exception|fail(?:ed|ure)?)\b|错误|异常|报错|失败/i[_0x4cfa52(0x34c,'\x29\x71\x48\x6c')](_0x2be6ca);let _0x134320=[],_0x57cf9e=[];try{const _0x348798=_0x34ca16['\x68\x49\x42\x64\x77'](_0x59d914,_0x34ca16[_0x4cfa52(0x1f6,'\x53\x2a\x75\x64')]);_0x134320=_0x348798[_0x4cfa52(0x36f,'\x35\x62\x76\x5b')+_0x4cfa52(0x393,'\x69\x69\x4c\x4b')](_0x4f50c9,_0x2be6ca,_0x14b849)||[],_0x57cf9e=_0x348798['\x5f\x65\x78\x74\x72\x61\x63\x74'+_0x4cfa52(0x1de,'\x69\x69\x4c\x4b')+_0x4cfa52(0x312,'\x78\x41\x68\x52')](_0x2be6ca)||[];}catch(_0x3dc096){return[];}const _0x5766fe=new _0x4ea4da();for(const _0x1acdd9 of _0x134320)_0x5766fe[_0x4cfa52(0x30f,'\x6a\x39\x6a\x57')](_0x1acdd9);for(const _0x456807 of _0x57cf9e)_0x5766fe[_0x4cfa52(0x2eb,'\x26\x44\x4b\x36')](_0x456807);return _0x5766fe[_0x4cfa52(0x228,'\x66\x63\x41\x23')](_0x34ca16[_0x4cfa52(0x369,'\x45\x28\x7a\x26')]),_0x183b37['\x66\x72\x6f\x6d'](_0x5766fe);}}}:function(){};return _0x54357a=![],_0x48cef5;};}()),_0x49e504=_0x476195(this,function(){const _0x5b2898=_0x44ad,_0x2bab14={};_0x2bab14[_0x5b2898(0x3ac,'\x43\x35\x6a\x21')]=_0x5b2898(0x2a7,'\x37\x73\x63\x24')+_0x5b2898(0x27b,'\x26\x44\x4b\x36');const _0x2a6d66=_0x2bab14;return _0x49e504['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x5b2898(0x335,'\x69\x69\x4c\x4b')](_0x5b2898(0x2b3,'\x5d\x50\x52\x73')+_0x5b2898(0x2aa,'\x24\x49\x55\x63'))[_0x5b2898(0x36b,'\x44\x6d\x42\x64')]()[_0x5b2898(0x2b4,'\x37\x73\x63\x24')+_0x5b2898(0x2b0,'\x77\x46\x36\x69')](_0x49e504)[_0x5b2898(0x355,'\x6b\x32\x77\x58')](_0x2a6d66['\x4d\x7a\x6b\x4c\x76']);});_0x49e504();const _0x5946fd=require(_0x57601a(0x299,'\x26\x44\x4b\x36'));function _0x4ce2d5(){const _0xef0cfe=_0x57601a,_0x2ac66c={'\x53\x77\x4c\x4d\x61':function(_0x224c88,_0x470dae){return _0x224c88(_0x470dae);},'\x4c\x64\x69\x54\x49':function(_0x23ea4f,_0x1e68c5){return _0x23ea4f===_0x1e68c5;},'\x64\x71\x76\x47\x58':_0xef0cfe(0x279,'\x48\x72\x75\x34'),'\x57\x58\x64\x57\x50':_0xef0cfe(0x37d,'\x79\x66\x47\x75')},_0x4b0eb2=_0x2ac66c[_0xef0cfe(0x247,'\x35\x62\x76\x5b')](String,process.env.EVOLVER_RECALL_MODE||'')[_0xef0cfe(0x32d,'\x32\x45\x25\x57')+_0xef0cfe(0x3ad,'\x48\x72\x75\x34')]()[_0xef0cfe(0x3b6,'\x49\x37\x32\x51')]();return _0x2ac66c['\x4c\x64\x69\x54\x49'](_0x4b0eb2,_0x2ac66c[_0xef0cfe(0x24c,'\x68\x54\x5a\x24')])||_0x2ac66c['\x4c\x64\x69\x54\x49'](_0x4b0eb2,_0xef0cfe(0x280,'\x49\x37\x32\x51'))?_0x4b0eb2:_0x2ac66c[_0xef0cfe(0x374,'\x48\x72\x75\x34')];}function _0x23af73(){const _0x47c135=_0x57601a,_0x251cfe={'\x44\x78\x70\x51\x76':function(_0x5a7e68,_0x1f9729){return _0x5a7e68(_0x1f9729);},'\x77\x6d\x49\x54\x73':function(_0x2d0f74,_0x1ce553){return _0x2d0f74>_0x1ce553;},'\x64\x58\x4c\x47\x59':function(_0x4a4f3a,_0x56aeb2){return _0x4a4f3a<=_0x56aeb2;}},_0x421688=_0x251cfe[_0x47c135(0x327,'\x68\x72\x6a\x66')](Number,process.env.EVOLVER_RECALL_MIN_SIM);return Number[_0x47c135(0x2ad,'\x68\x72\x6a\x66')](_0x421688)&&_0x251cfe['\x77\x6d\x49\x54\x73'](_0x421688,-0x1a63+0x66b*-0x4+0x340f)&&_0x251cfe[_0x47c135(0x3c3,'\x79\x66\x47\x75')](_0x421688,0x169f*0x1+0x2*0x36f+-0x4*0x75f)?_0x421688:0x148d+-0x1929+-0x1*-0x49c+0.75;}function _0x5966c4(){const _0x373c04=_0x57601a,_0x5f34fa={};_0x5f34fa[_0x373c04(0x246,'\x26\x75\x67\x5d')]=function(_0x39a3fb,_0x31eb1f){return _0x39a3fb>_0x31eb1f;},_0x5f34fa['\x4b\x50\x4b\x74\x61']=function(_0x1f6cf5,_0x3d62fe){return _0x1f6cf5<=_0x3d62fe;};const _0x1cf782=_0x5f34fa,_0xdb4447=parseInt(process.env.EVOLVER_RECALL_MAX,-0x1*0x9c3+-0x1946+0x49*0x7b);return Number[_0x373c04(0x32f,'\x26\x75\x67\x5d')](_0xdb4447)&&_0x1cf782[_0x373c04(0x31f,'\x29\x71\x48\x6c')](_0xdb4447,0x3b9*-0x9+-0xb29+0x1*0x2caa)&&_0x1cf782[_0x373c04(0x305,'\x68\x72\x6a\x66')](_0xdb4447,-0xa26+-0x1e0b*0x1+-0xd69*-0x3)?_0xdb4447:-0x13fb+-0x443*-0x1+0xfb9;}const _0x13cc95=-0x76*-0x47+-0x49d*0x2+0x518*-0x4,_0x37ccc0=-0x2a8*0x5+-0x39c*0x7+0x2754;function _0xd3228e(_0xac2505){const _0x249485=_0x57601a,_0x4170ad={'\x44\x67\x49\x53\x43':function(_0x249c96,_0x3d0636){return _0x249c96<=_0x3d0636;},'\x66\x56\x52\x52\x69':function(_0x345b55,_0x4e3236){return _0x345b55(_0x4e3236);},'\x68\x6f\x6e\x49\x72':function(_0x49ec89,_0x2a1482){return _0x49ec89||_0x2a1482;},'\x61\x72\x4d\x78\x51':'\x4c\x66\x61\x76\x4a','\x49\x56\x7a\x44\x73':'\x2e\x2f\x73\x69\x67\x6e\x61\x6c'+'\x73','\x6f\x45\x62\x49\x48':'\x73\x74\x61\x62\x6c\x65\x5f\x73'+_0x249485(0x38b,'\x4d\x34\x2a\x6d')+_0x249485(0x27c,'\x4d\x34\x2a\x6d')},_0x5b6512=_0x4170ad['\x66\x56\x52\x52\x69'](String,_0x4170ad[_0x249485(0x2e1,'\x26\x44\x4b\x36')](_0xac2505,'')),_0x5b6cb1=_0x5b6512[_0x249485(0x344,'\x30\x4b\x62\x36')+_0x249485(0x3a8,'\x40\x77\x57\x24')](),_0x38b2f3=/\b(error|exception|fail(?:ed|ure)?)\b|错误|异常|报错|失败/i['\x74\x65\x73\x74'](_0x5b6cb1);let _0x17f615=[],_0x4aa773=[];try{if(_0x249485(0x2d1,'\x53\x2a\x75\x64')===_0x4170ad[_0x249485(0x2c5,'\x43\x4c\x69\x42')]){const _0xefabc9=_0x46cee2(_0x18fde6.env.EVOLVER_RECALL_MAX,0xb4b+0x16a0+-0x21e1);return _0x35558d[_0x249485(0x206,'\x4f\x2a\x62\x28')](_0xefabc9)&&_0xefabc9>-0x2590+0x6a4+0x1eec&&KzTQWm[_0x249485(0x34f,'\x68\x72\x6a\x66')](_0xefabc9,-0x2*-0xbbc+0x3*0x8e9+0x3229*-0x1)?_0xefabc9:-0x1e43*-0x1+-0x1*-0x69a+0x2a2*-0xe;}else{const _0x5bded8=_0x4170ad[_0x249485(0x293,'\x48\x72\x75\x34')](require,_0x4170ad[_0x249485(0x331,'\x39\x68\x74\x33')]);_0x17f615=_0x5bded8[_0x249485(0x274,'\x36\x62\x5a\x6f')+_0x249485(0x38d,'\x79\x43\x35\x78')](_0x5b6512,_0x5b6cb1,_0x38b2f3)||[],_0x4aa773=_0x5bded8[_0x249485(0x313,'\x26\x75\x67\x5d')+_0x249485(0x24e,'\x39\x68\x74\x33')+_0x249485(0x38a,'\x4d\x34\x2a\x6d')](_0x5b6cb1)||[];}}catch(_0x4be3e1){return[];}const _0x444e19=new Set();for(const _0x40a348 of _0x17f615)_0x444e19[_0x249485(0x397,'\x78\x41\x68\x52')](_0x40a348);for(const _0x410ee2 of _0x4aa773)_0x444e19[_0x249485(0x2b7,'\x21\x21\x36\x47')](_0x410ee2);return _0x444e19[_0x249485(0x372,'\x45\x63\x28\x61')](_0x4170ad[_0x249485(0x1e4,'\x79\x43\x35\x78')]),Array[_0x249485(0x2a6,'\x43\x35\x6a\x21')](_0x444e19);}const _0x1c4b33=-0x14ac+-0x190d+0x2dc5;function _0x8c827e(_0x4f3dec){const _0x2d9807=_0x57601a,_0x144d25={'\x73\x64\x4e\x42\x51':function(_0x3b411b,_0x159bef){return _0x3b411b===_0x159bef;},'\x78\x56\x56\x57\x6a':function(_0x371cbb,_0x58311e){return _0x371cbb(_0x58311e);},'\x69\x56\x70\x6e\x7a':function(_0x55e18c,_0x2a4216){return _0x55e18c!==_0x2a4216;},'\x51\x7a\x5a\x46\x6d':_0x2d9807(0x347,'\x29\x71\x48\x6c'),'\x67\x75\x61\x53\x4d':_0x2d9807(0x1ea,'\x58\x36\x79\x67')+'\x6f\x72','\x64\x4c\x72\x72\x49':function(_0x230aad,_0x50f09c){return _0x230aad(_0x50f09c);}},_0x4be349=_0x144d25[_0x2d9807(0x282,'\x47\x4a\x6e\x4d')](_0xd3228e,_0x4f3dec);let _0xf281e1=[];try{if(_0x144d25[_0x2d9807(0x276,'\x26\x75\x67\x5d')](_0x2d9807(0x31c,'\x43\x35\x6a\x21'),_0x144d25[_0x2d9807(0x39a,'\x4d\x6c\x4d\x57')]))_0x164df1=(_0x144d25[_0x2d9807(0x2d2,'\x37\x73\x63\x24')](typeof _0x258cbf[_0x2d9807(0x301,'\x79\x66\x47\x75')+'\x6c'],_0x2d9807(0x1e0,'\x6a\x39\x6a\x57'))?_0x561044['\x67\x65\x74\x48\x75\x62\x55\x72'+'\x6c']():_0x4c5cc6[_0x2d9807(0x294,'\x79\x4e\x57\x62')+'\x6c']())||'',_0x4e95af=_0x5c2bf7['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,'');else{const {tokenize:_0x4df057}=_0x144d25[_0x2d9807(0x399,'\x30\x4b\x62\x36')](require,_0x144d25[_0x2d9807(0x21a,'\x71\x32\x31\x55')]),_0x29fb95=new Set();for(const _0x3322f8 of _0x144d25[_0x2d9807(0x2e5,'\x29\x71\x48\x6c')](_0x4df057,_0x4f3dec)){!_0x29fb95[_0x2d9807(0x2dc,'\x48\x72\x75\x34')](_0x3322f8)&&(_0x29fb95[_0x2d9807(0x248,'\x79\x66\x47\x75')](_0x3322f8),_0xf281e1[_0x2d9807(0x3c1,'\x37\x73\x63\x24')](_0x3322f8));if(_0xf281e1[_0x2d9807(0x30c,'\x44\x6d\x42\x64')]>=_0x1c4b33)break;}}}catch(_0x58d40e){_0xf281e1=[];}const _0x2c8848=new Set();for(const _0x1877e7 of _0x4be349)_0x2c8848[_0x2d9807(0x3d6,'\x49\x37\x32\x51')](_0x1877e7);for(const _0x2c256d of _0xf281e1)_0x2c8848[_0x2d9807(0x2eb,'\x26\x44\x4b\x36')](_0x2c256d);return Array[_0x2d9807(0x250,'\x26\x6d\x76\x64')](_0x2c8848);}async function _0x1c666c(_0x15d2fe,_0x304d18){const _0x5a526f=_0x57601a,_0x2eb589={'\x69\x59\x47\x4e\x63':function(_0x13cd54,_0x4cb6e8){return _0x13cd54(_0x4cb6e8);},'\x49\x6f\x58\x6c\x71':function(_0x4c80b4,_0xffb54b){return _0x4c80b4===_0xffb54b;},'\x4d\x57\x73\x72\x49':_0x5a526f(0x22c,'\x54\x4f\x4e\x32'),'\x69\x4f\x70\x68\x62':_0x5a526f(0x2d8,'\x43\x35\x6a\x21'),'\x46\x7a\x58\x46\x51':function(_0x451190,_0x4e9893){return _0x451190(_0x4e9893);},'\x54\x59\x56\x52\x4b':_0x5a526f(0x360,'\x6a\x39\x6a\x57')+'\x73','\x46\x44\x7a\x44\x71':_0x5a526f(0x1ef,'\x47\x7a\x4c\x78'),'\x54\x74\x46\x58\x77':'\x72\x49\x44\x6b\x69','\x63\x6a\x59\x49\x74':function(_0x23e281,_0x362223){return _0x23e281(_0x362223);},'\x4e\x52\x44\x4d\x6b':_0x5a526f(0x257,'\x45\x28\x7a\x26')+'\x72\x63\x68','\x66\x59\x44\x7a\x48':_0x5a526f(0x1ec,'\x78\x41\x68\x52')+_0x5a526f(0x2d7,'\x6b\x32\x77\x58'),'\x56\x53\x4e\x49\x63':function(_0x5b6461,_0x388aa6){return _0x5b6461===_0x388aa6;},'\x5a\x4d\x67\x76\x74':_0x5a526f(0x263,'\x47\x4a\x6e\x4d'),'\x52\x59\x47\x6d\x4e':_0x5a526f(0x235,'\x43\x35\x6a\x21'),'\x63\x4b\x55\x55\x49':_0x5a526f(0x2f1,'\x5e\x49\x45\x34'),'\x78\x77\x71\x4c\x51':_0x5a526f(0x29f,'\x30\x4b\x62\x36'),'\x4e\x6f\x50\x6e\x74':function(_0x36c7e8,_0xf40051){return _0x36c7e8===_0xf40051;},'\x68\x72\x76\x70\x46':function(_0x5999af,_0x45a80a){return _0x5999af===_0x45a80a;},'\x42\x79\x74\x70\x53':'\x77\x71\x54\x6b\x6b','\x46\x45\x43\x79\x47':function(_0x473eb8,_0x3a1746){return _0x473eb8!==_0x3a1746;},'\x41\x43\x79\x47\x74':_0x5a526f(0x2a2,'\x45\x63\x28\x61'),'\x75\x6e\x46\x44\x56':function(_0x47ebbe,_0x86707d){return _0x47ebbe!==_0x86707d;},'\x48\x79\x6d\x6f\x64':_0x5a526f(0x3ae,'\x26\x75\x67\x5d'),'\x59\x6d\x73\x73\x72':function(_0x4ac04f,_0x1eee05){return _0x4ac04f===_0x1eee05;},'\x44\x53\x69\x75\x49':_0x5a526f(0x303,'\x79\x66\x47\x75'),'\x76\x53\x42\x41\x48':function(_0x4e56b6,_0x141ae8){return _0x4e56b6!==_0x141ae8;},'\x58\x78\x51\x6b\x4f':_0x5a526f(0x3d2,'\x43\x4c\x69\x42'),'\x54\x55\x47\x62\x54':function(_0x1d2bd7,_0x19eb39){return _0x1d2bd7<_0x19eb39;},'\x6e\x77\x4f\x70\x4f':function(_0x44b0d8,_0x554121){return _0x44b0d8===_0x554121;},'\x42\x53\x49\x56\x59':_0x5a526f(0x2af,'\x35\x62\x76\x5b')};let _0x395ca5,_0x491b4c;try{if(_0x2eb589[_0x5a526f(0x346,'\x69\x69\x4c\x4b')](_0x2eb589[_0x5a526f(0x358,'\x26\x44\x4b\x36')],_0x2eb589[_0x5a526f(0x2ba,'\x37\x73\x63\x24')])){const _0x483d45=YStMYT['\x69\x59\x47\x4e\x63'](_0x37786d,_0x24c94e.env.EVOLVER_RECALL_MODE||'')[_0x5a526f(0x309,'\x23\x32\x4e\x4c')+_0x5a526f(0x317,'\x65\x58\x35\x67')]()[_0x5a526f(0x32e,'\x30\x4b\x62\x36')]();return YStMYT[_0x5a526f(0x3b3,'\x5d\x50\x52\x73')](_0x483d45,YStMYT[_0x5a526f(0x2f6,'\x79\x66\x47\x75')])||YStMYT[_0x5a526f(0x202,'\x78\x41\x68\x52')](_0x483d45,_0x5a526f(0x2db,'\x45\x63\x28\x61'))?_0x483d45:YStMYT[_0x5a526f(0x26a,'\x54\x4f\x4e\x32')];}else _0x395ca5=_0x2eb589[_0x5a526f(0x288,'\x45\x63\x28\x61')](require,_0x2eb589[_0x5a526f(0x261,'\x30\x4b\x62\x36')]),_0x491b4c=require(_0x2eb589[_0x5a526f(0x2bd,'\x71\x32\x31\x55')]);}catch(_0x2cd64a){return[];}try{if(_0x2eb589[_0x5a526f(0x3b9,'\x58\x36\x79\x67')](_0x2eb589[_0x5a526f(0x3cd,'\x71\x32\x31\x55')],_0x2eb589[_0x5a526f(0x39d,'\x43\x35\x6a\x21')]))_0x4d543c='';else{if(_0x2eb589['\x56\x53\x4e\x49\x63'](typeof _0x395ca5[_0x5a526f(0x240,'\x44\x6d\x42\x64')+_0x5a526f(0x27f,'\x24\x49\x55\x63')+'\x64'],_0x2eb589[_0x5a526f(0x1eb,'\x45\x63\x28\x61')])&&!_0x395ca5[_0x5a526f(0x2c7,'\x45\x28\x7a\x26')+'\x69\x63\x45\x6e\x61\x62\x6c\x65'+'\x64']())return[];}}catch(_0x4ce83f){}let _0x4c3449='';try{if(_0x2eb589[_0x5a526f(0x23d,'\x36\x62\x5a\x6f')](_0x2eb589[_0x5a526f(0x25b,'\x79\x4e\x57\x62')],_0x5a526f(0x2c3,'\x26\x6d\x76\x64')))return[];else _0x4c3449=(_0x2eb589[_0x5a526f(0x2e0,'\x43\x4c\x69\x42')](typeof _0x491b4c[_0x5a526f(0x21b,'\x79\x43\x35\x78')+'\x6c'],_0x2eb589[_0x5a526f(0x31d,'\x47\x4a\x6e\x4d')])?_0x491b4c[_0x5a526f(0x2ca,'\x35\x62\x76\x5b')+'\x6c']():_0x395ca5[_0x5a526f(0x28c,'\x4d\x6c\x4d\x57')+'\x6c']())||'',_0x4c3449=_0x4c3449[_0x5a526f(0x37b,'\x64\x67\x62\x4d')](/\/+$/,'');}catch(_0x413915){if(_0x2eb589[_0x5a526f(0x329,'\x32\x45\x25\x57')](_0x2eb589[_0x5a526f(0x3da,'\x45\x63\x28\x61')],_0x5a526f(0x3c8,'\x36\x62\x5a\x6f')))_0x4c3449='';else return;}if(!_0x4c3449)return[];let _0x51195a={};try{_0x2eb589[_0x5a526f(0x337,'\x64\x67\x62\x4d')](_0x5a526f(0x26b,'\x49\x37\x32\x51'),_0x2eb589[_0x5a526f(0x3a5,'\x33\x49\x5e\x39')])?_0xabf02d=_0x50fa91['\x67\x65\x74\x4e\x6f\x64\x65\x49'+'\x64']()||'':_0x51195a=_0x491b4c[_0x5a526f(0x379,'\x30\x4b\x62\x36')+_0x5a526f(0x2a5,'\x24\x49\x55\x63')]();}catch(_0x17a919){_0x51195a={};}let _0x436f6d=[];try{_0x436f6d=await _0x395ca5[_0x5a526f(0x285,'\x58\x36\x79\x67')+'\x61\x6e\x74\x69\x63\x52\x65\x73'+_0x5a526f(0x203,'\x49\x37\x32\x51')](_0x4c3449,_0x51195a,_0x15d2fe,_0x304d18);}catch(_0x39371c){if(_0x2eb589[_0x5a526f(0x1f1,'\x39\x68\x74\x33')](_0x5a526f(0x2d0,'\x46\x4a\x33\x59'),_0x2eb589[_0x5a526f(0x225,'\x79\x43\x35\x78')]))return[];else{const _0x370a2=YStMYT[_0x5a526f(0x2c9,'\x45\x63\x28\x61')](_0xeaaf21,YStMYT[_0x5a526f(0x29d,'\x66\x63\x41\x23')]);_0x52ad74=_0x370a2[_0x5a526f(0x3d1,'\x29\x71\x48\x6c')+'\x52\x65\x67\x65\x78'](_0x399edd,_0x3325e0,_0x316a26)||[],_0x31bbad=_0x370a2[_0x5a526f(0x238,'\x64\x67\x62\x4d')+'\x4b\x65\x79\x77\x6f\x72\x64\x53'+_0x5a526f(0x33f,'\x4f\x2a\x62\x28')](_0x11a39d)||[];}}if(!Array[_0x5a526f(0x2fe,'\x43\x35\x6a\x21')](_0x436f6d))return[];const _0x371672=_0x23af73();let _0x360018='';try{_0x360018=_0x491b4c[_0x5a526f(0x204,'\x4d\x34\x2a\x6d')+'\x64']()||'';}catch(_0x5d0534){_0x360018='';}const _0x3c35b3=[];for(const _0x143f80 of _0x436f6d){if(_0x2eb589[_0x5a526f(0x28d,'\x49\x37\x32\x51')](_0x2eb589[_0x5a526f(0x361,'\x36\x62\x5a\x6f')],_0x5a526f(0x389,'\x39\x68\x74\x33'))){if(!_0x143f80||_0x2eb589[_0x5a526f(0x21d,'\x68\x54\x5a\x24')](typeof _0x143f80,_0x2eb589[_0x5a526f(0x333,'\x44\x6d\x42\x64')]))continue;const _0x2275b0=_0x2eb589[_0x5a526f(0x3c7,'\x21\x21\x36\x47')](Number,_0x143f80['\x5f\x73\x65\x6d\x61\x6e\x74\x69'+_0x5a526f(0x3d4,'\x6a\x39\x6a\x57')+_0x5a526f(0x298,'\x33\x49\x5e\x39')]);if(!Number[_0x5a526f(0x32c,'\x23\x32\x4e\x4c')](_0x2275b0)||_0x2eb589[_0x5a526f(0x323,'\x77\x46\x36\x69')](_0x2275b0,_0x371672))continue;if(_0x360018&&_0x143f80[_0x5a526f(0x38c,'\x55\x32\x61\x4b')+_0x5a526f(0x342,'\x54\x4e\x34\x62')]&&_0x2eb589[_0x5a526f(0x3ab,'\x64\x67\x62\x4d')](_0x143f80[_0x5a526f(0x3bf,'\x49\x37\x32\x51')+_0x5a526f(0x354,'\x79\x43\x35\x78')],_0x360018))continue;const _0x52bc2c={};_0x52bc2c[_0x5a526f(0x364,'\x71\x32\x31\x55')]=_0x143f80[_0x5a526f(0x1f2,'\x55\x32\x61\x4b')]||_0x143f80[_0x5a526f(0x353,'\x54\x4e\x34\x62')]||'',_0x52bc2c['\x73\x6f\x75\x72\x63\x65\x5f\x6e'+_0x5a526f(0x26c,'\x46\x4a\x33\x59')]=_0x143f80[_0x5a526f(0x334,'\x79\x4e\x57\x62')+'\x6f\x64\x65\x5f\x69\x64']||'',_0x52bc2c[_0x5a526f(0x33b,'\x49\x37\x32\x51')]=_0x143f80[_0x5a526f(0x33b,'\x49\x37\x32\x51')]||'',_0x52bc2c[_0x5a526f(0x1e6,'\x54\x4e\x34\x62')+'\x74\x79']=_0x2275b0,_0x52bc2c[_0x5a526f(0x3c5,'\x36\x62\x5a\x6f')]=_0x143f80[_0x5a526f(0x2f4,'\x49\x37\x32\x51')+_0x5a526f(0x21e,'\x26\x6d\x76\x64')]||_0x143f80[_0x5a526f(0x29a,'\x46\x4a\x33\x59')]||_0x143f80[_0x5a526f(0x2cc,'\x47\x4a\x6e\x4d')]||'',_0x52bc2c[_0x5a526f(0x386,'\x45\x28\x7a\x26')]=_0x143f80[_0x5a526f(0x371,'\x45\x63\x28\x61')+'\x72\x79']||_0x143f80[_0x5a526f(0x26d,'\x4f\x2a\x62\x28')]||'',_0x52bc2c[_0x5a526f(0x2bc,'\x33\x49\x5e\x39')]=_0x2eb589[_0x5a526f(0x229,'\x66\x63\x41\x23')],_0x3c35b3[_0x5a526f(0x381,'\x43\x35\x6a\x21')](_0x52bc2c);}else _0x46ac04=_0x47cd9e['\x73\x63\x6f\x72\x65\x47\x65\x6e'+'\x65\x53\x65\x6d\x61\x6e\x74\x69'+'\x63'](_0x1eab27,_0x47824b)||0x1300+-0x2055+0xd55;}return _0x3c35b3;}function _0x21e33b(_0x5aba5a){const _0x57ce37=_0x57601a,_0x1434f0={'\x57\x56\x51\x44\x48':function(_0x907128,_0x1e7c77){return _0x907128!=_0x1e7c77;},'\x64\x56\x44\x63\x63':_0x57ce37(0x1e5,'\x77\x46\x36\x69')+_0x57ce37(0x3a9,'\x4f\x2a\x62\x28')+'\x65\x64','\x6a\x6f\x47\x62\x64':_0x57ce37(0x343,'\x58\x36\x79\x67'),'\x4d\x78\x73\x57\x74':function(_0x534f4b,_0x4cf31b){return _0x534f4b+_0x4cf31b;},'\x44\x52\x6d\x48\x51':function(_0x57cf3a,_0x1bb97f){return _0x57cf3a===_0x1bb97f;},'\x41\x77\x6f\x41\x70':function(_0x2d95f2,_0x2ea95f){return _0x2d95f2+_0x2ea95f;},'\x64\x6a\x73\x72\x6f':function(_0x8e8acc,_0x5c30ed){return _0x8e8acc-_0x5c30ed;},'\x6c\x5a\x69\x69\x42':function(_0x1a0fa7,_0xdadef9){return _0x1a0fa7-_0xdadef9;},'\x70\x52\x6c\x43\x4f':function(_0x372fda,_0x5f1653){return _0x372fda(_0x5f1653);},'\x67\x79\x74\x45\x44':_0x57ce37(0x2fa,'\x45\x28\x7a\x26')+'\x6f\x72','\x45\x72\x4c\x62\x53':function(_0x1001d0,_0x5b68dd){return _0x1001d0!==_0x5b68dd;},'\x6b\x48\x58\x65\x71':_0x57ce37(0x3d9,'\x6b\x32\x77\x58'),'\x45\x6d\x59\x45\x63':_0x57ce37(0x398,'\x79\x4e\x57\x62'),'\x7a\x58\x46\x4b\x56':function(_0xf03f70,_0x4e3d9c){return _0xf03f70===_0x4e3d9c;},'\x58\x74\x50\x4a\x6d':function(_0x3956d2,_0x131f71){return _0x3956d2!==_0x131f71;},'\x75\x6e\x73\x77\x44':function(_0x501d2e,_0x577e7d){return _0x501d2e<_0x577e7d;},'\x6f\x65\x68\x63\x47':_0x57ce37(0x2e6,'\x24\x49\x55\x63'),'\x72\x71\x6a\x48\x52':_0x57ce37(0x308,'\x24\x49\x55\x63'),'\x6b\x62\x53\x65\x6e':function(_0x3a0052,_0x243751){return _0x3a0052!==_0x243751;},'\x46\x48\x50\x67\x4f':_0x57ce37(0x20a,'\x77\x46\x36\x69'),'\x51\x6d\x70\x42\x46':function(_0x59c3cf,_0x2b8671){return _0x59c3cf===_0x2b8671;},'\x62\x78\x4e\x68\x75':_0x57ce37(0x34d,'\x47\x4a\x6e\x4d'),'\x61\x65\x56\x47\x43':_0x57ce37(0x1ee,'\x43\x35\x6a\x21'),'\x50\x51\x43\x6d\x49':_0x57ce37(0x2fc,'\x79\x43\x35\x78'),'\x42\x41\x72\x43\x72':_0x57ce37(0x351,'\x79\x43\x35\x78'),'\x4b\x6a\x6b\x49\x69':'\x20\u2014\x20','\x4f\x75\x6c\x58\x56':function(_0x31c017,_0x236d6c){return _0x31c017+_0x236d6c;},'\x57\x76\x66\x4a\x6f':function(_0x34a617,_0x33e513){return _0x34a617*_0x33e513;}};let _0x1f34a0=[],_0x2f90fc;try{_0x1f34a0=_0x1434f0[_0x57ce37(0x2b5,'\x6b\x32\x77\x58')](require,_0x57ce37(0x22b,'\x71\x32\x31\x55')+_0x57ce37(0x2e3,'\x39\x68\x74\x33'))[_0x57ce37(0x2ea,'\x36\x62\x5a\x6f')+'\x73']()||[],_0x2f90fc=_0x1434f0[_0x57ce37(0x349,'\x45\x28\x7a\x26')](require,_0x1434f0[_0x57ce37(0x377,'\x55\x32\x61\x4b')]);}catch(_0x29e0d9){if(_0x1434f0[_0x57ce37(0x209,'\x6a\x39\x6a\x57')](_0x1434f0[_0x57ce37(0x345,'\x40\x77\x57\x24')],_0x1434f0[_0x57ce37(0x384,'\x26\x6d\x76\x64')]))return[];else{const _0x5923b4=(_0x40de4d[_0x57ce37(0x2e4,'\x49\x37\x32\x51')]||'')[_0x57ce37(0x32b,'\x53\x2a\x75\x64')]()[_0x57ce37(0x3b5,'\x40\x77\x57\x24')](0x27d+0x242b*0x1+-0x26a8,-0x6e3+-0x1cca+0x23fd),_0x48e49=(_0x112d9f['\x73\x75\x6d\x6d\x61\x72\x79']||'')[_0x57ce37(0x3ca,'\x45\x63\x28\x61')]()[_0x57ce37(0x23b,'\x6b\x32\x77\x58')](/\s+/g,'\x20')[_0x57ce37(0x31a,'\x36\x62\x5a\x6f')]()[_0x57ce37(0x255,'\x6a\x39\x6a\x57')](-0x12f8+-0x1af+0x14a7,_0xd3c86),_0x4d3e84=_0x1434f0[_0x57ce37(0x241,'\x54\x4f\x4e\x32')](_0x5c8d25[_0x57ce37(0x33a,'\x43\x35\x6a\x21')+'\x74\x79'],null)?_0x10e14b[_0x57ce37(0x3b4,'\x44\x6d\x42\x64')+'\x74\x79'][_0x57ce37(0x1f4,'\x5e\x49\x45\x34')](-0x1e9b*0x1+-0x2377+0x210a*0x2):'\x3f',_0x39b885=_0x2dbea4[_0x57ce37(0x2ec,'\x24\x49\x55\x63')]?_0x57ce37(0x212,'\x30\x4b\x62\x36')+_0x8e164f['\x61\x73\x73\x65\x74\x5f\x69\x64']:_0x1434f0['\x64\x56\x44\x63\x63'];if(_0x1b1993[_0x57ce37(0x1e9,'\x43\x35\x6a\x21')])_0x264a1d=!![];_0x2a23cd[_0x57ce37(0x319,'\x26\x75\x67\x5d')]('\x2d\x20'+(_0x5923b4?'\x47\x65\x6e\x65\x20\x22'+_0x5923b4+'\x22':_0x1434f0[_0x57ce37(0x271,'\x45\x28\x7a\x26')])+'\x20\x28'+_0x39b885+_0x57ce37(0x34b,'\x79\x4e\x57\x62')+_0x4d3e84+'\x29'+(_0x48e49?_0x1434f0['\x4d\x78\x73\x57\x74']('\x3a\x20',_0x48e49):''));}}if(!Array[_0x57ce37(0x3a7,'\x68\x72\x6a\x66')](_0x1f34a0)||_0x1434f0[_0x57ce37(0x3a0,'\x79\x4e\x57\x62')](_0x1f34a0[_0x57ce37(0x213,'\x37\x33\x6b\x6f')],-0x1*-0x16ff+0x1f*0x46+-0x1f79)||!_0x2f90fc)return[];const _0x34a696=[];for(const _0x4c1bce of _0x1f34a0){if(!_0x4c1bce||_0x4c1bce[_0x57ce37(0x29b,'\x58\x36\x79\x67')]!==_0x57ce37(0x370,'\x40\x77\x57\x24'))continue;const _0x538fa6=Array[_0x57ce37(0x350,'\x4d\x6c\x4d\x57')](_0x4c1bce[_0x57ce37(0x2dd,'\x37\x33\x6b\x6f')+_0x57ce37(0x1f0,'\x66\x63\x41\x23')])?_0x4c1bce[_0x57ce37(0x3c9,'\x26\x6d\x76\x64')+'\x6d\x61\x74\x63\x68']:[];let _0x5c0aee=0x1f3d+-0x6d*0x4f+0x2*0x133;for(const _0x108866 of _0x538fa6){try{if(_0x1434f0['\x58\x74\x50\x4a\x6d'](_0x57ce37(0x352,'\x39\x68\x74\x33'),_0x57ce37(0x264,'\x30\x4b\x62\x36'))){if(_0x2f90fc[_0x57ce37(0x207,'\x39\x68\x74\x33')+_0x57ce37(0x2c6,'\x40\x77\x57\x24')+_0x57ce37(0x219,'\x68\x54\x5a\x24')](_0x108866,_0x5aba5a))_0x5c0aee++;}else{if(KJrKko[_0x57ce37(0x256,'\x54\x4f\x4e\x32')](typeof _0x5cd47e[_0x57ce37(0x25c,'\x48\x72\x75\x34')+_0x57ce37(0x2ef,'\x26\x6d\x76\x64')+'\x64'],_0x57ce37(0x2c2,'\x79\x43\x35\x78'))&&!_0x511618[_0x57ce37(0x339,'\x29\x71\x48\x6c')+_0x57ce37(0x30a,'\x4d\x6c\x4d\x57')+'\x64']())return[];}}catch(_0x339dd2){}}if(_0x1434f0[_0x57ce37(0x29e,'\x26\x6d\x76\x64')](_0x5c0aee,0x14*0x9f+0x60d*-0x4+-0x1*-0xbc9))continue;let _0x582da2=-0x26ef*-0x1+-0x18ff+-0xdf0;try{if(_0x1434f0[_0x57ce37(0x28e,'\x79\x66\x47\x75')]===_0x1434f0[_0x57ce37(0x324,'\x39\x68\x74\x33')])return[];else _0x582da2=_0x2f90fc['\x73\x63\x6f\x72\x65\x47\x65\x6e'+_0x57ce37(0x3b1,'\x30\x4b\x62\x36')+'\x63'](_0x4c1bce,_0x5aba5a)||-0x1*-0x93b+0x24+-0x95f*0x1;}catch(_0x106b35){if(_0x1434f0[_0x57ce37(0x251,'\x45\x63\x28\x61')](_0x57ce37(0x391,'\x47\x7a\x4c\x78'),_0x1434f0[_0x57ce37(0x322,'\x78\x41\x68\x52')])){const _0x2be1c0=_0xc17a90[_0x57ce37(0x3a4,'\x79\x66\x47\x75')](_0x53f7f0=>_0x11d80e(_0x53f7f0)['\x73\x70\x6c\x69\x74']('\x7c')[-0x2145+0x273+0x1ed2])['\x66\x69\x6c\x74\x65\x72'](_0x5873e0=>_0x5873e0&&!_0x5873e0[_0x57ce37(0x390,'\x6b\x32\x77\x58')+'\x74\x68']('\x2f'))[_0x57ce37(0x332,'\x68\x54\x5a\x24')](0xda7*-0x1+-0x1*-0x113d+-0x396,-0x2c9*-0x3+-0xecc+0x675);if(_0x2be1c0[_0x57ce37(0x35c,'\x43\x4c\x69\x42')])_0x33d060=_0x1434f0[_0x57ce37(0x24b,'\x4d\x6c\x4d\x57')](_0x57ce37(0x2da,'\x43\x35\x6a\x21')+'\x20',_0x2be1c0[_0x57ce37(0x38e,'\x54\x4e\x34\x62')]('\x2c\x20'));}else _0x582da2=-0xc*-0xec+0x1270+-0x10*0x1d8;}let _0x2f913b=(_0x4c1bce[_0x57ce37(0x338,'\x4d\x34\x2a\x6d')]||'')[_0x57ce37(0x2b9,'\x79\x43\x35\x78')]()[_0x57ce37(0x23f,'\x79\x4e\x57\x62')]();if(!_0x2f913b&&_0x4c1bce[_0x57ce37(0x1df,'\x78\x41\x68\x52')]&&_0x1434f0[_0x57ce37(0x244,'\x54\x4e\x34\x62')](typeof _0x4c1bce[_0x57ce37(0x3bb,'\x36\x62\x5a\x6f')],_0x1434f0[_0x57ce37(0x35b,'\x5e\x49\x45\x34')])){if(_0x1434f0[_0x57ce37(0x2a9,'\x55\x32\x61\x4b')](_0x1434f0['\x61\x65\x56\x47\x43'],_0x1434f0[_0x57ce37(0x22d,'\x32\x45\x25\x57')])){const _0x55efc8=_0x1434f0[_0x57ce37(0x2fb,'\x30\x4b\x62\x36')](_0x1434f0['\x6c\x5a\x69\x69\x42'](_0x2caa3d['\x64\x65\x61\x64\x6c\x69\x6e\x65'+'\x4d\x73'],_0x23c0b6[_0x57ce37(0x383,'\x66\x63\x41\x23')]()),_0x1867e4);_0x4bf0a5=_0x29d4a2[_0x57ce37(0x37f,'\x45\x28\x7a\x26')](_0x4e7752,_0x55efc8);}else{const _0x18c404=[];if(Array[_0x57ce37(0x385,'\x6b\x32\x77\x58')](_0x4c1bce[_0x57ce37(0x1f5,'\x5e\x49\x45\x34')][_0x57ce37(0x2e9,'\x23\x32\x4e\x4c')]))_0x18c404[_0x57ce37(0x1e2,'\x53\x2a\x75\x64')](_0x4c1bce[_0x57ce37(0x310,'\x71\x32\x31\x55')][_0x57ce37(0x1e8,'\x39\x68\x74\x33')][_0x57ce37(0x356,'\x43\x4c\x69\x42')](-0x1*-0x22d3+0x77c+-0x1*0x2a4f,-0x3*-0x713+0x2268+-0x379e)[_0x57ce37(0x2a0,'\x4d\x34\x2a\x6d')]('\x3b\x20'));if(typeof _0x4c1bce[_0x57ce37(0x222,'\x26\x6d\x76\x64')][_0x57ce37(0x25e,'\x5d\x50\x52\x73')]===_0x1434f0['\x42\x41\x72\x43\x72'])_0x18c404[_0x57ce37(0x321,'\x78\x41\x68\x52')](_0x4c1bce[_0x57ce37(0x2f5,'\x45\x63\x28\x61')][_0x57ce37(0x21f,'\x48\x72\x75\x34')]);_0x2f913b=_0x18c404[_0x57ce37(0x38f,'\x55\x32\x61\x4b')](Boolean)[_0x57ce37(0x281,'\x4f\x2a\x62\x28')](_0x1434f0[_0x57ce37(0x31e,'\x45\x63\x28\x61')])[_0x57ce37(0x33e,'\x43\x35\x6a\x21')]();}}if(!_0x2f913b){const _0x12cc5b=_0x538fa6[_0x57ce37(0x278,'\x53\x2a\x75\x64')](_0x3c1ae7=>String(_0x3c1ae7)[_0x57ce37(0x368,'\x77\x46\x36\x69')]('\x7c')[0x12ec+-0xbc5*-0x1+-0x1eb1])[_0x57ce37(0x2cf,'\x39\x68\x74\x33')](_0x45138d=>_0x45138d&&!_0x45138d[_0x57ce37(0x2d4,'\x5d\x50\x52\x73')+'\x74\x68']('\x2f'))[_0x57ce37(0x2f3,'\x5d\x50\x52\x73')](-0x13a0+-0xd9e+-0x6a6*-0x5,-0x9*0x1ed+0x1faf+-0xe56);if(_0x12cc5b[_0x57ce37(0x243,'\x53\x2a\x75\x64')])_0x2f913b=_0x1434f0[_0x57ce37(0x1fe,'\x78\x41\x68\x52')](_0x57ce37(0x39c,'\x4d\x34\x2a\x6d')+'\x20',_0x12cc5b[_0x57ce37(0x362,'\x48\x72\x75\x34')]('\x2c\x20'));}_0x34a696[_0x57ce37(0x296,'\x39\x68\x74\x33')]({'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x4c1bce[_0x57ce37(0x304,'\x79\x66\x47\x75')]||'','\x73\x6f\x75\x72\x63\x65\x5f\x6e\x6f\x64\x65\x5f\x69\x64':_0x4c1bce[_0x57ce37(0x318,'\x64\x67\x62\x4d')+_0x57ce37(0x245,'\x40\x77\x57\x24')]||_0x4c1bce[_0x57ce37(0x28b,'\x26\x75\x67\x5d')+_0x57ce37(0x27a,'\x29\x71\x48\x6c')]||'','\x63\x68\x61\x69\x6e\x5f\x69\x64':_0x4c1bce[_0x57ce37(0x252,'\x40\x77\x57\x24')]||'','\x73\x69\x6d\x69\x6c\x61\x72\x69\x74\x79':Math[_0x57ce37(0x3cb,'\x48\x72\x75\x34')](0x1*0x1b9a+0x1da4+-0x393d,_0x1434f0[_0x57ce37(0x35a,'\x4d\x34\x2a\x6d')](_0x1434f0[_0x57ce37(0x291,'\x24\x49\x55\x63')](-0x1b1*0xd+0x1d*0x85+0x376*0x2+0.75,_0x1434f0[_0x57ce37(0x210,'\x43\x35\x6a\x21')](0x68e*-0x4+0x5bf+0x1*0x1479+0.05,_0x5c0aee)),_0x1434f0[_0x57ce37(0x20e,'\x43\x4c\x69\x42')](0x593*-0x7+0x1*0x2484+0x281+0.1,_0x582da2))),'\x74\x69\x74\x6c\x65':_0x4c1bce['\x69\x64']||_0x4c1bce[_0x57ce37(0x25a,'\x43\x35\x6a\x21')+_0x57ce37(0x3b0,'\x49\x37\x32\x51')]||'','\x73\x75\x6d\x6d\x61\x72\x79':_0x2f913b,'\x6f\x72\x69\x67\x69\x6e':_0x57ce37(0x326,'\x46\x4a\x33\x59'),'\x5f\x68\x69\x74\x73':_0x5c0aee});}return _0x34a696;}function _0x18cb18(_0x21ea45){const _0x3ed138=_0x57601a,_0xec76f8={'\x43\x4c\x4d\x68\x56':function(_0x48f790,_0x53160a){return _0x48f790(_0x53160a);},'\x58\x52\x4c\x71\x56':function(_0x5eac51,_0x1dc91f){return _0x5eac51||_0x1dc91f;}},_0x3426bc=(_0x21ea45&&_0x21ea45[_0x3ed138(0x3af,'\x26\x44\x4b\x36')]?_0xec76f8[_0x3ed138(0x302,'\x78\x41\x68\x52')](String,_0x21ea45[_0x3ed138(0x336,'\x29\x71\x48\x6c')]):'')[_0x3ed138(0x306,'\x45\x28\x7a\x26')](),_0x4d8c9b=(_0x21ea45&&_0x21ea45[_0x3ed138(0x3a1,'\x68\x72\x6a\x66')]?_0xec76f8[_0x3ed138(0x3c0,'\x45\x28\x7a\x26')](String,_0x21ea45[_0x3ed138(0x30b,'\x30\x4b\x62\x36')]):'')[_0x3ed138(0x306,'\x45\x28\x7a\x26')]();return!!_0xec76f8['\x58\x52\x4c\x71\x56'](_0x3426bc,_0x4d8c9b);}function _0x32e63a(_0x94df41){const _0x26e60e=_0x57601a,_0x5395df={};_0x5395df[_0x26e60e(0x33c,'\x66\x63\x41\x23')]=_0x26e60e(0x2ed,'\x30\x4b\x62\x36')+_0x26e60e(0x3c6,'\x40\x77\x57\x24')+_0x26e60e(0x21c,'\x29\x71\x48\x6c')+_0x26e60e(0x230,'\x5e\x49\x45\x34')+_0x26e60e(0x316,'\x45\x28\x7a\x26'),_0x5395df[_0x26e60e(0x26e,'\x23\x32\x4e\x4c')]=_0x26e60e(0x330,'\x49\x37\x32\x51')+_0x26e60e(0x366,'\x44\x6d\x42\x64')+'\x65\x64',_0x5395df[_0x26e60e(0x1fd,'\x54\x4e\x34\x62')]=function(_0x117b7a,_0x2f6750){return _0x117b7a+_0x2f6750;},_0x5395df[_0x26e60e(0x365,'\x23\x32\x4e\x4c')]=_0x26e60e(0x249,'\x44\x6d\x42\x64')+_0x26e60e(0x2ff,'\x54\x4f\x4e\x32')+_0x26e60e(0x226,'\x68\x54\x5a\x24')+_0x26e60e(0x30d,'\x58\x36\x79\x67')+_0x26e60e(0x2b1,'\x5e\x49\x45\x34')+_0x26e60e(0x37e,'\x26\x75\x67\x5d')+_0x26e60e(0x1e7,'\x53\x2a\x75\x64')+_0x26e60e(0x254,'\x30\x4b\x62\x36')+_0x26e60e(0x27d,'\x44\x6d\x42\x64')+_0x26e60e(0x2d9,'\x79\x66\x47\x75'),_0x5395df['\x50\x4f\x51\x50\x43']='\x54\x6f\x20\x72\x65\x75\x73\x65'+_0x26e60e(0x3bc,'\x26\x44\x4b\x36')+_0x26e60e(0x215,'\x26\x44\x4b\x36')+_0x26e60e(0x2cb,'\x68\x54\x5a\x24')+_0x26e60e(0x1f8,'\x69\x69\x4c\x4b')+_0x26e60e(0x297,'\x78\x41\x68\x52')+_0x26e60e(0x20c,'\x68\x54\x5a\x24')+_0x26e60e(0x341,'\x54\x4f\x4e\x32')+'\x6c\x6c\x60\x29\x2e';const _0x476423=_0x5395df,_0x4e211a=(_0x94df41||[])[_0x26e60e(0x1f3,'\x26\x75\x67\x5d')](_0x18cb18);if(!_0x4e211a[_0x26e60e(0x292,'\x5e\x49\x45\x34')])return'';const _0x1fa303=[_0x476423[_0x26e60e(0x200,'\x69\x69\x4c\x4b')]];let _0x526464=![];for(const _0x16d6d2 of _0x4e211a){const _0x2045f4=(_0x16d6d2[_0x26e60e(0x2b2,'\x26\x75\x67\x5d')]||'')[_0x26e60e(0x39e,'\x58\x36\x79\x67')]()[_0x26e60e(0x394,'\x26\x44\x4b\x36')](-0x1ca7+0x1*0x385+0x1922,-0x1*-0x167f+0x3f*-0x9+-0x8e*0x24),_0x5be065=(_0x16d6d2[_0x26e60e(0x231,'\x54\x4f\x4e\x32')]||'')[_0x26e60e(0x3c4,'\x46\x4a\x33\x59')]()[_0x26e60e(0x216,'\x48\x72\x75\x34')](/\s+/g,'\x20')[_0x26e60e(0x33d,'\x47\x7a\x4c\x78')]()[_0x26e60e(0x1f9,'\x4f\x2a\x62\x28')](-0x1e9f+-0xa41+0x28e0,_0x37ccc0),_0x517729=_0x16d6d2[_0x26e60e(0x208,'\x5d\x50\x52\x73')+'\x74\x79']!=null?_0x16d6d2[_0x26e60e(0x266,'\x6b\x32\x77\x58')+'\x74\x79'][_0x26e60e(0x218,'\x53\x2a\x75\x64')](-0x3*0x8fe+0xe0c+0xcf0):'\x3f',_0x2c3f64=_0x16d6d2[_0x26e60e(0x1e9,'\x43\x35\x6a\x21')]?_0x26e60e(0x3d7,'\x39\x68\x74\x33')+_0x16d6d2[_0x26e60e(0x367,'\x79\x4e\x57\x62')]:_0x476423[_0x26e60e(0x3d0,'\x40\x77\x57\x24')];if(_0x16d6d2[_0x26e60e(0x22f,'\x4f\x2a\x62\x28')])_0x526464=!![];_0x1fa303[_0x26e60e(0x395,'\x36\x62\x5a\x6f')]('\x2d\x20'+(_0x2045f4?_0x26e60e(0x39b,'\x39\x68\x74\x33')+_0x2045f4+'\x22':_0x26e60e(0x262,'\x6a\x39\x6a\x57'))+'\x20\x28'+_0x2c3f64+_0x26e60e(0x217,'\x47\x7a\x4c\x78')+_0x517729+'\x29'+(_0x5be065?_0x476423[_0x26e60e(0x31b,'\x54\x4f\x4e\x32')]('\x3a\x20',_0x5be065):''));}_0x1fa303[_0x26e60e(0x2e8,'\x65\x58\x35\x67')](_0x476423[_0x26e60e(0x277,'\x4f\x2a\x62\x28')]);if(_0x526464)_0x1fa303[_0x26e60e(0x1fb,'\x5e\x49\x45\x34')](_0x476423[_0x26e60e(0x378,'\x47\x4a\x6e\x4d')]);const _0x4dee94=_0x1fa303[_0x26e60e(0x24d,'\x26\x75\x67\x5d')]('\x0a');return _0x4dee94[_0x26e60e(0x1dd,'\x35\x62\x76\x5b')]>_0x13cc95?_0x4dee94[_0x26e60e(0x273,'\x45\x63\x28\x61')](-0x7*0x74+-0x1e4a*-0x1+-0x1b1e,_0x13cc95):_0x4dee94;}function _0x15ab(){const _0xa95a37=['\x74\x6d\x6b\x72\x63\x71\x39\x54','\x57\x4f\x47\x56\x6f\x75\x71\x2b','\x6e\x77\x56\x64\x4c\x75\x71\x43','\x57\x51\x6a\x4c\x66\x57\x34','\x63\x38\x6f\x73\x57\x4f\x72\x53','\x70\x43\x6f\x56\x57\x51\x44\x4a\x41\x57','\x78\x62\x68\x63\x55\x71\x50\x6a','\x57\x51\x52\x64\x56\x49\x78\x63\x56\x71\x61','\x45\x53\x6f\x6f\x57\x51\x42\x63\x47\x71\x4f\x75\x57\x50\x78\x63\x4b\x57','\x61\x43\x6f\x49\x61\x38\x6b\x6f\x57\x35\x30','\x57\x34\x46\x64\x4e\x38\x6f\x4a\x57\x35\x64\x63\x48\x47','\x57\x51\x6a\x50\x61\x62\x72\x46','\x57\x52\x64\x63\x50\x61\x33\x64\x4d\x57\x65','\x57\x52\x68\x63\x4e\x53\x6b\x4c\x57\x51\x71\x32\x57\x50\x65','\x57\x51\x33\x63\x52\x53\x6b\x75\x57\x52\x65\x51\x57\x50\x58\x41\x69\x47','\x74\x58\x61\x75\x63\x64\x65\x70\x73\x43\x6b\x46','\x57\x51\x5a\x63\x55\x74\x46\x64\x48\x64\x64\x63\x56\x4c\x52\x64\x4a\x57','\x57\x52\x33\x63\x4d\x6d\x6f\x33\x42\x61','\x57\x4f\x42\x64\x49\x38\x6b\x41\x57\x35\x2f\x64\x47\x66\x5a\x63\x4e\x4a\x34','\x57\x51\x57\x79\x57\x34\x2f\x64\x4b\x53\x6f\x43\x57\x51\x74\x63\x4f\x61\x53','\x57\x50\x68\x64\x4d\x74\x78\x63\x53\x73\x65','\x65\x64\x69\x53\x57\x34\x70\x63\x48\x57','\x69\x38\x6b\x42\x57\x4f\x76\x39\x6d\x61','\x57\x4f\x44\x64\x57\x50\x6a\x6b\x6e\x72\x52\x63\x53\x78\x79','\x43\x53\x6f\x32\x57\x51\x69\x35\x57\x51\x5a\x63\x55\x57','\x66\x4d\x5a\x64\x54\x65\x4f\x51','\x78\x38\x6f\x4b\x57\x50\x46\x63\x49\x49\x47','\x6f\x4b\x7a\x42\x69\x53\x6f\x70\x67\x43\x6b\x72','\x63\x33\x42\x64\x4b\x30\x6d\x49\x57\x35\x4f\x75\x7a\x57','\x44\x30\x2f\x63\x4b\x6d\x6b\x48\x57\x34\x47\x74\x6f\x4d\x4f','\x57\x51\x6d\x46\x57\x34\x33\x64\x4d\x53\x6f\x45\x57\x35\x46\x64\x51\x72\x4f','\x6c\x38\x6f\x37\x44\x68\x5a\x63\x54\x57','\x70\x38\x6f\x53\x45\x78\x4f','\x43\x66\x74\x63\x4c\x6d\x6b\x4c','\x57\x36\x4a\x63\x47\x49\x69\x4e','\x57\x50\x61\x31\x62\x30\x65\x70','\x42\x4b\x76\x58\x57\x4f\x5a\x64\x4d\x43\x6b\x7a\x57\x37\x68\x63\x53\x57','\x57\x35\x56\x63\x4f\x75\x71\x51\x7a\x47\x38','\x42\x53\x6f\x4a\x57\x4f\x44\x71','\x57\x52\x33\x63\x48\x43\x6f\x73\x42\x53\x6b\x41\x6a\x4c\x72\x6b','\x62\x47\x4b\x6e\x57\x35\x70\x64\x48\x47','\x73\x6d\x6f\x38\x57\x50\x53\x4e\x57\x52\x34','\x6a\x75\x74\x64\x48\x30\x71\x64','\x57\x35\x56\x63\x4f\x30\x43','\x72\x57\x74\x64\x54\x74\x35\x68','\x57\x52\x6c\x63\x53\x58\x4a\x64\x4e\x58\x4a\x63\x51\x65\x64\x64\x52\x71','\x57\x35\x47\x6d\x57\x50\x72\x72\x6f\x31\x38','\x66\x4d\x64\x64\x53\x31\x69','\x71\x6d\x6b\x34\x6e\x4a\x39\x68\x72\x57','\x57\x51\x70\x64\x4a\x43\x6b\x69\x57\x34\x64\x64\x4f\x71','\x57\x34\x46\x64\x47\x6d\x6f\x41\x57\x35\x6c\x63\x53\x57','\x57\x35\x6a\x4d\x76\x43\x6f\x6d\x7a\x43\x6b\x50\x57\x51\x6d','\x57\x36\x50\x5a\x61\x48\x65\x61\x46\x47','\x57\x52\x74\x64\x56\x5a\x33\x63\x4d\x4a\x38','\x57\x35\x78\x63\x54\x4c\x69\x71\x45\x59\x6c\x64\x4d\x61','\x57\x37\x7a\x4a\x66\x73\x43\x68\x46\x71','\x79\x38\x6f\x45\x6e\x6d\x6b\x36\x57\x37\x44\x31','\x57\x50\x75\x75\x6d\x30\x4f\x2f','\x6b\x6d\x6b\x6e\x65\x6d\x6b\x68\x57\x37\x39\x56\x78\x57\x61','\x6c\x43\x6b\x53\x44\x67\x46\x63\x53\x57','\x57\x35\x69\x37\x57\x4f\x4c\x55\x57\x51\x48\x63\x57\x34\x4a\x64\x49\x61','\x62\x4b\x7a\x41\x66\x38\x6f\x34','\x57\x37\x69\x35\x57\x35\x56\x64\x4b\x53\x6b\x71','\x57\x4f\x4f\x44\x6e\x65\x34\x55\x61\x61','\x72\x57\x38\x76\x62\x64\x65\x64\x74\x47','\x79\x53\x6f\x76\x63\x53\x6b\x47\x57\x37\x31\x50','\x57\x50\x5a\x64\x4b\x43\x6b\x37\x57\x35\x4a\x64\x4a\x31\x4e\x63\x4d\x71','\x70\x67\x57\x33\x57\x36\x4e\x64\x4c\x6d\x6b\x41\x57\x34\x4f\x39','\x66\x64\x4e\x63\x53\x4e\x64\x64\x52\x61','\x66\x64\x35\x56\x65\x47','\x57\x50\x43\x6e\x46\x59\x4b\x73','\x57\x35\x69\x37\x57\x4f\x4c\x55\x57\x51\x48\x63\x57\x34\x4a\x64\x47\x47','\x79\x5a\x4b\x77\x6d\x48\x79','\x66\x43\x6b\x74\x57\x51\x66\x30\x65\x57\x6e\x65\x57\x35\x4b','\x57\x50\x76\x46\x57\x50\x72\x44\x69\x49\x64\x63\x48\x33\x57','\x45\x5a\x74\x63\x4b\x47\x66\x50','\x46\x48\x70\x64\x51\x74\x58\x44','\x57\x35\x6a\x37\x46\x53\x6f\x42\x44\x6d\x6b\x38','\x64\x38\x6b\x6d\x57\x4f\x44\x49\x64\x71\x6e\x7a\x57\x35\x79','\x57\x37\x4a\x63\x4c\x62\x74\x64\x47\x74\x74\x64\x48\x65\x46\x64\x4f\x57','\x68\x53\x6f\x46\x57\x4f\x44\x52\x76\x53\x6f\x55\x79\x57','\x46\x63\x78\x63\x4a\x71\x6e\x63\x6e\x53\x6f\x37\x57\x36\x61','\x64\x43\x6f\x2f\x70\x43\x6f\x35\x62\x38\x6f\x77\x6b\x67\x43','\x6b\x49\x71\x37\x57\x35\x6d','\x57\x51\x30\x50\x64\x78\x34\x49\x66\x38\x6b\x64\x57\x51\x34','\x57\x51\x43\x47\x70\x4d\x47\x4a\x68\x57','\x57\x36\x71\x35\x77\x4b\x53\x7a\x6c\x38\x6f\x51\x57\x50\x38\x62\x61\x6d\x6b\x51\x57\x50\x2f\x64\x54\x38\x6f\x74','\x6b\x71\x4c\x49\x6b\x38\x6f\x73','\x57\x36\x2f\x63\x4e\x5a\x38\x59\x57\x36\x33\x63\x49\x48\x30','\x6a\x4c\x44\x74\x65\x6d\x6f\x68\x64\x57','\x57\x36\x64\x64\x52\x53\x6f\x2f\x57\x4f\x71\x4d','\x46\x38\x6b\x76\x64\x71\x50\x4e','\x57\x51\x56\x63\x4e\x38\x6f\x33\x42\x43\x6b\x6a\x63\x31\x6e\x52','\x6c\x38\x6b\x38\x57\x52\x61\x49\x57\x51\x4a\x63\x56\x43\x6b\x69\x73\x57','\x41\x38\x6f\x65\x57\x51\x74\x63\x4e\x57\x34\x42\x57\x50\x65','\x57\x52\x68\x63\x48\x43\x6f\x35\x74\x61\x31\x71','\x57\x52\x4a\x63\x49\x53\x6f\x5a','\x57\x50\x56\x64\x4d\x43\x6b\x56\x57\x35\x33\x63\x47\x62\x78\x63\x51\x5a\x38','\x77\x4a\x2f\x64\x54\x57','\x57\x35\x6e\x37\x79\x6d\x6f\x71\x42\x47','\x44\x66\x70\x63\x4a\x53\x6b\x47','\x65\x48\x44\x34\x57\x35\x47\x39','\x6a\x43\x6f\x7a\x74\x71','\x57\x50\x6e\x54\x6e\x4a\x39\x70','\x45\x43\x6f\x69\x66\x6d\x6b\x36\x57\x36\x7a\x38\x73\x61','\x72\x63\x70\x64\x54\x62\x62\x50\x57\x4f\x2f\x64\x54\x47','\x57\x50\x62\x6a\x57\x4f\x72\x72\x6d\x48\x52\x63\x49\x47','\x6f\x48\x6e\x35\x57\x4f\x33\x64\x47\x31\x69','\x57\x51\x6c\x64\x47\x58\x4e\x63\x50\x73\x43','\x6b\x4c\x58\x65\x6b\x47','\x70\x66\x62\x76\x6b\x53\x6f\x44\x67\x6d\x6b\x33\x78\x71','\x57\x37\x74\x64\x55\x6d\x6f\x2b\x57\x52\x6d\x62\x6d\x58\x75\x68','\x57\x34\x54\x49\x66\x58\x30\x77','\x57\x35\x37\x63\x51\x4b\x47\x42','\x57\x36\x68\x64\x56\x53\x6f\x4e\x57\x52\x75\x68\x6a\x61','\x79\x38\x6f\x70\x6e\x6d\x6b\x36\x57\x36\x62\x55\x7a\x47\x65','\x6f\x38\x6f\x68\x46\x76\x6a\x6b','\x57\x37\x78\x64\x53\x53\x6f\x4f\x57\x51\x61\x6f\x6f\x47\x57\x67','\x75\x38\x6f\x32\x57\x51\x71\x55\x57\x52\x43','\x67\x6d\x6b\x65\x7a\x30\x64\x63\x50\x57','\x69\x62\x2f\x63\x51\x67\x30','\x62\x38\x6b\x50\x57\x4f\x48\x67\x57\x34\x6a\x75\x57\x34\x76\x30','\x67\x53\x6f\x64\x57\x50\x6d','\x57\x4f\x66\x70\x57\x52\x35\x6f\x64\x57','\x57\x52\x68\x63\x56\x6d\x6f\x69\x76\x53\x6b\x68','\x57\x36\x50\x56\x74\x53\x6f\x34\x45\x47','\x57\x50\x2f\x64\x51\x49\x68\x63\x4b\x68\x6c\x64\x54\x71','\x6a\x66\x6a\x63\x6c\x6d\x6f\x67\x64\x53\x6b\x42\x66\x57','\x76\x4e\x2f\x63\x55\x53\x6b\x4c\x57\x36\x4f','\x78\x43\x6f\x50\x57\x52\x50\x62\x57\x34\x6e\x79\x57\x35\x39\x71','\x45\x59\x33\x63\x56\x74\x50\x56','\x57\x4f\x35\x30\x57\x51\x66\x5a\x61\x61','\x57\x37\x64\x64\x4b\x53\x6f\x2b\x57\x36\x5a\x63\x4b\x43\x6f\x50\x57\x36\x34','\x57\x52\x4a\x63\x54\x43\x6b\x52\x57\x52\x38\x37','\x57\x37\x56\x64\x4e\x43\x6b\x4e\x6e\x6d\x6f\x41\x63\x65\x50\x61\x79\x43\x6f\x43\x6a\x57','\x57\x52\x52\x63\x4a\x43\x6f\x4c','\x57\x4f\x37\x63\x56\x43\x6b\x72\x57\x35\x69\x32','\x57\x51\x74\x63\x47\x38\x6f\x57','\x57\x36\x52\x64\x4c\x6d\x6f\x73\x57\x37\x70\x63\x47\x53\x6f\x36\x57\x36\x34','\x64\x64\x69\x57','\x57\x36\x78\x63\x4e\x73\x75\x47\x57\x37\x68\x63\x48\x47\x52\x64\x4d\x71','\x63\x5a\x38\x32','\x44\x38\x6f\x77\x57\x50\x56\x63\x47\x59\x61','\x73\x76\x5a\x63\x4c\x53\x6b\x65\x57\x35\x69','\x68\x59\x6a\x4a','\x57\x4f\x64\x64\x54\x43\x6b\x2b\x57\x36\x68\x64\x4e\x47','\x68\x38\x6b\x62\x45\x4b\x2f\x63\x50\x57','\x57\x52\x71\x42\x57\x34\x4b','\x57\x51\x5a\x63\x55\x43\x6f\x37\x42\x6d\x6b\x6d\x6c\x76\x6a\x47','\x57\x34\x48\x38\x45\x43\x6f\x78\x45\x38\x6b\x50\x57\x51\x4a\x63\x53\x61','\x68\x61\x35\x69\x57\x4f\x42\x64\x4d\x57','\x63\x6d\x6b\x6b\x57\x52\x4c\x2f\x65\x57\x54\x66\x57\x35\x47','\x68\x49\x30\x38\x57\x35\x78\x64\x4b\x47','\x57\x52\x71\x66\x57\x34\x78\x64\x4e\x47','\x73\x4d\x6d\x59\x74\x6d\x6b\x57\x57\x51\x42\x64\x56\x53\x6b\x46\x57\x50\x31\x2f\x6e\x72\x37\x63\x4f\x57','\x46\x73\x46\x63\x4e\x71\x31\x55\x6e\x38\x6f\x62\x57\x37\x6d','\x46\x38\x6f\x76\x57\x51\x44\x38\x57\x35\x69','\x57\x51\x47\x68\x57\x36\x70\x64\x56\x6d\x6b\x5a\x57\x36\x6d\x39','\x69\x58\x37\x63\x51\x77\x74\x64\x4b\x74\x76\x49\x57\x4f\x30','\x73\x38\x6b\x6a\x6c\x4c\x70\x63\x54\x30\x37\x63\x54\x53\x6b\x68','\x44\x43\x6f\x65\x57\x52\x52\x63\x4c\x62\x53\x71','\x41\x65\x70\x63\x4b\x38\x6b\x56\x57\x35\x61\x41','\x57\x52\x6d\x79\x57\x35\x4e\x64\x47\x43\x6f\x74\x57\x36\x33\x64\x4e\x58\x61','\x44\x62\x52\x64\x4c\x62\x76\x45','\x57\x50\x71\x39\x77\x74\x79','\x7a\x77\x56\x63\x55\x38\x6b\x55\x57\x36\x57','\x57\x52\x70\x63\x54\x6d\x6f\x7a\x46\x5a\x65','\x67\x43\x6f\x49\x6d\x38\x6b\x42\x57\x34\x6e\x79\x57\x50\x48\x34','\x6a\x61\x70\x63\x52\x32\x4e\x64\x47\x61','\x74\x45\x6b\x62\x4c\x78\x78\x64\x48\x6d\x6f\x73\x57\x34\x4b\x74\x57\x50\x38','\x64\x64\x54\x77\x57\x35\x61\x68','\x6a\x58\x56\x63\x4a\x32\x37\x64\x4a\x47','\x57\x51\x76\x50\x63\x62\x72\x6e\x44\x43\x6b\x53\x57\x37\x6d','\x57\x52\x43\x51\x61\x78\x4b\x4c\x65\x38\x6b\x61\x57\x51\x47','\x65\x5a\x48\x4f','\x57\x37\x62\x58\x79\x74\x58\x4b\x71\x38\x6b\x47\x57\x51\x68\x64\x51\x6d\x6f\x2f\x57\x36\x54\x44','\x57\x36\x4b\x66\x57\x50\x31\x39\x57\x51\x47','\x69\x53\x6f\x66\x46\x66\x6c\x63\x4b\x72\x47\x57\x57\x52\x6d','\x6d\x38\x6f\x50\x69\x61','\x70\x4a\x53\x6e\x57\x37\x56\x64\x56\x57','\x70\x77\x64\x64\x55\x66\x69\x39\x57\x35\x4f\x7a\x7a\x57','\x57\x4f\x4b\x41\x6d\x65\x57\x35\x68\x61','\x69\x53\x6f\x79\x75\x66\x37\x63\x4e\x61\x75','\x43\x72\x57\x33\x57\x36\x4e\x64\x4e\x53\x6b\x44\x57\x34\x43\x57','\x57\x4f\x6d\x54\x78\x48\x6d\x72\x6d\x6d\x6f\x56\x70\x57','\x57\x51\x65\x74\x57\x34\x47','\x57\x52\x4e\x64\x56\x64\x5a\x63\x4b\x63\x42\x64\x54\x57','\x77\x43\x6f\x5a\x64\x6d\x6b\x52\x57\x35\x75','\x45\x38\x6f\x62\x69\x38\x6b\x42\x57\x37\x34','\x57\x4f\x65\x38\x6a\x4e\x30\x65','\x70\x53\x6f\x2f\x6b\x38\x6f\x51\x61\x43\x6f\x46','\x73\x53\x6f\x32\x57\x52\x4f\x38\x57\x51\x64\x63\x4f\x43\x6b\x6e\x44\x61','\x63\x6d\x6f\x74\x57\x4f\x76\x4c\x75\x6d\x6f\x2f\x44\x32\x6d','\x44\x64\x79\x51\x57\x36\x70\x64\x48\x38\x6b\x44\x57\x34\x71\x2f','\x57\x34\x68\x63\x4a\x65\x75\x42\x41\x57','\x57\x51\x4e\x63\x54\x6d\x6b\x30\x57\x51\x30','\x63\x57\x31\x4d','\x57\x37\x7a\x63\x65\x4a\x65\x4d','\x7a\x63\x56\x63\x4e\x71\x4c\x58\x41\x6d\x6b\x2b\x57\x37\x79','\x57\x34\x46\x63\x52\x65\x57\x43\x79\x57\x52\x64\x4a\x48\x4b','\x57\x52\x4a\x63\x53\x43\x6b\x5a\x57\x36\x75\x58\x57\x4f\x65\x70\x7a\x71','\x57\x51\x56\x64\x55\x59\x52\x63\x48\x73\x65','\x7a\x76\x78\x63\x4a\x53\x6b\x54\x57\x35\x61\x54\x69\x77\x43','\x62\x38\x6b\x50\x57\x50\x50\x71\x57\x35\x31\x75\x57\x35\x6a\x64','\x57\x51\x61\x6f\x62\x31\x47\x45','\x76\x43\x6b\x69\x57\x50\x79\x32\x72\x43\x6f\x6b\x79\x4e\x75','\x57\x51\x74\x63\x48\x43\x6f\x77\x41\x48\x4f','\x74\x77\x52\x63\x55\x6d\x6b\x4b\x57\x35\x57','\x65\x43\x6f\x32\x45\x77\x66\x38','\x6a\x53\x6f\x78\x74\x4c\x4a\x63\x4c\x57','\x57\x51\x33\x64\x4f\x71\x4e\x63\x53\x71\x71','\x57\x36\x42\x64\x50\x6d\x6f\x34\x57\x51\x71\x77\x63\x73\x6d\x6e','\x57\x4f\x4e\x64\x4b\x43\x6b\x57\x57\x34\x6c\x64\x49\x30\x43','\x57\x36\x71\x55\x57\x35\x70\x64\x4b\x38\x6b\x44\x57\x35\x6d\x30','\x57\x36\x6d\x31\x57\x36\x46\x64\x4d\x38\x6b\x72\x57\x35\x6d\x33\x75\x57','\x57\x50\x33\x63\x49\x6d\x6b\x66\x57\x4f\x38\x59','\x69\x43\x6f\x52\x57\x51\x35\x67\x71\x47','\x78\x53\x6f\x48\x57\x51\x79\x2b\x57\x52\x5a\x63\x54\x53\x6f\x6a\x67\x57','\x57\x37\x4a\x63\x47\x74\x4b\x48\x57\x37\x47','\x62\x53\x6b\x6a\x44\x47','\x57\x36\x61\x30\x57\x36\x42\x64\x4b\x47','\x77\x38\x6b\x72\x6d\x61\x6a\x51','\x57\x36\x37\x63\x50\x66\x47\x54\x42\x61','\x6f\x53\x6f\x71\x57\x50\x48\x66\x76\x61','\x57\x50\x74\x63\x54\x53\x6b\x65\x57\x52\x57\x75','\x7a\x43\x6f\x45\x57\x4f\x30\x6d\x57\x4f\x43','\x57\x51\x5a\x64\x51\x4a\x46\x63\x47\x71','\x6d\x53\x6f\x69\x57\x51\x39\x4f\x76\x71','\x57\x52\x75\x42\x57\x35\x4a\x64\x47\x61','\x6c\x4c\x7a\x63\x61\x43\x6f\x62\x64\x38\x6b\x6e\x7a\x61','\x6d\x43\x6f\x39\x57\x51\x66\x32\x71\x71','\x57\x36\x6c\x63\x4e\x48\x79\x52\x57\x37\x70\x63\x48\x47\x33\x64\x4c\x61','\x57\x52\x78\x64\x52\x4a\x56\x63\x4c\x4a\x52\x63\x48\x38\x6f\x52\x57\x52\x6d','\x6a\x47\x48\x39\x57\x4f\x70\x64\x48\x4c\x33\x64\x54\x62\x4f','\x76\x5a\x65\x69\x57\x36\x6c\x64\x4f\x61','\x45\x62\x33\x63\x4b\x59\x31\x5a','\x41\x68\x62\x53\x57\x51\x56\x64\x4e\x71','\x78\x74\x35\x4c\x57\x4f\x4a\x63\x4a\x72\x54\x6b\x57\x4f\x61','\x57\x4f\x6d\x77\x70\x65\x79\x4f\x63\x5a\x75','\x57\x52\x65\x6f\x70\x67\x6d\x31','\x71\x71\x79\x4d\x6c\x64\x61\x63\x77\x61','\x75\x31\x64\x63\x4d\x38\x6b\x63\x57\x34\x53','\x57\x37\x47\x56\x57\x36\x68\x64\x4c\x6d\x6b\x43','\x57\x51\x4a\x63\x4d\x43\x6f\x54\x7a\x6d\x6b\x7a\x79\x57','\x57\x36\x46\x63\x4d\x62\x46\x64\x4a\x59\x5a\x64\x4a\x71','\x57\x37\x56\x63\x55\x4a\x68\x64\x4f\x49\x65','\x67\x6d\x6b\x61\x41\x30\x46\x64\x4f\x4b\x33\x63\x51\x43\x6b\x44','\x64\x64\x72\x32\x65\x6d\x6f\x4a\x57\x37\x78\x63\x51\x57','\x7a\x38\x6b\x2b\x79\x33\x35\x6a\x57\x34\x34','\x57\x51\x33\x63\x52\x53\x6b\x62\x57\x51\x57\x47\x57\x50\x62\x71','\x62\x64\x61\x4b\x57\x34\x5a\x63\x4b\x71','\x57\x35\x71\x39\x57\x50\x54\x79\x57\x50\x65','\x57\x37\x35\x49\x62\x64\x61\x42\x45\x38\x6b\x33\x69\x61','\x61\x32\x56\x64\x54\x61\x79\x2f\x57\x34\x4b\x74\x46\x61','\x66\x71\x30\x68\x57\x36\x68\x63\x51\x47','\x57\x51\x6a\x53\x63\x47','\x68\x59\x66\x32\x64\x53\x6f\x54\x57\x37\x46\x63\x52\x43\x6b\x59','\x79\x43\x6b\x35\x6f\x74\x7a\x57','\x57\x36\x6c\x63\x4d\x66\x50\x48\x67\x75\x79','\x57\x51\x76\x30\x68\x72\x54\x79\x46\x6d\x6b\x34\x57\x35\x75','\x57\x36\x2f\x63\x4b\x64\x6c\x64\x4d\x73\x65','\x57\x4f\x78\x64\x4e\x43\x6b\x2f\x57\x34\x69','\x57\x35\x66\x2b\x68\x72\x43\x6b','\x62\x33\x34\x4b\x57\x35\x64\x63\x4b\x48\x53\x66\x57\x4f\x65','\x57\x37\x37\x64\x4c\x6d\x6f\x6a\x57\x52\x65\x69','\x6c\x38\x6f\x74\x76\x4c\x37\x63\x49\x58\x71','\x63\x43\x6f\x4c\x43\x32\x33\x63\x50\x47','\x68\x38\x6f\x76\x57\x50\x48\x30\x76\x6d\x6f\x2f\x44\x61','\x57\x50\x31\x4e\x57\x50\x54\x34\x57\x51\x39\x34\x57\x35\x78\x64\x54\x71','\x45\x4b\x48\x47\x57\x52\x46\x64\x48\x6d\x6b\x6c','\x57\x4f\x4a\x63\x48\x5a\x4a\x64\x48\x47\x34','\x61\x68\x64\x64\x51\x75\x4f\x52\x57\x36\x47\x74\x44\x61','\x57\x36\x52\x63\x4e\x49\x6d\x4e\x57\x36\x4e\x63\x53\x62\x64\x64\x4c\x71','\x57\x36\x6a\x48\x57\x37\x42\x64\x4d\x38\x6b\x76\x57\x35\x43\x59\x71\x57','\x45\x4c\x76\x53\x57\x52\x37\x64\x49\x53\x6b\x6f\x57\x36\x53','\x77\x4a\x4e\x64\x56\x72\x47','\x68\x53\x6f\x56\x65\x43\x6f\x37\x6f\x47','\x64\x61\x58\x37\x57\x37\x53\x68\x57\x51\x57','\x41\x30\x37\x63\x4a\x38\x6b\x2b\x57\x35\x71','\x68\x43\x6f\x54\x7a\x77\x38\x74\x45\x6d\x6f\x4d\x57\x51\x4a\x64\x4a\x43\x6f\x31\x57\x51\x69','\x57\x51\x56\x63\x55\x71\x37\x64\x4d\x73\x74\x63\x56\x4e\x46\x64\x4f\x47','\x72\x53\x6f\x65\x57\x51\x5a\x63\x48\x58\x30\x7a\x57\x50\x46\x63\x4b\x57','\x57\x50\x37\x64\x50\x59\x4e\x63\x53\x5a\x75','\x57\x50\x62\x64\x57\x50\x61','\x79\x53\x6f\x45\x6a\x43\x6b\x4b\x57\x37\x76\x2b\x76\x61','\x57\x36\x37\x64\x4e\x38\x6f\x4c\x57\x4f\x69\x32','\x62\x4a\x4e\x63\x4c\x75\x5a\x64\x48\x47','\x63\x6d\x6b\x2b\x7a\x4b\x2f\x63\x48\x71','\x57\x4f\x62\x45\x57\x4f\x35\x76','\x65\x53\x6b\x71\x57\x4f\x44\x5a\x65\x47\x54\x7a\x57\x34\x75','\x78\x4e\x7a\x71\x57\x50\x46\x64\x4f\x57','\x57\x52\x4c\x59\x62\x48\x31\x66\x44\x57','\x57\x52\x78\x63\x50\x6d\x6b\x50\x57\x51\x69\x53\x57\x50\x30','\x57\x36\x78\x63\x51\x66\x65\x33\x73\x71','\x61\x49\x75\x57\x57\x36\x4e\x64\x4e\x53\x6f\x62','\x57\x52\x4a\x64\x4c\x53\x6b\x6a\x57\x35\x74\x64\x56\x71','\x61\x43\x6f\x54\x63\x43\x6f\x61\x66\x61','\x57\x52\x42\x63\x49\x6d\x6f\x58','\x6f\x53\x6f\x64\x57\x51\x72\x4b\x66\x47\x76\x66\x57\x50\x65','\x57\x37\x76\x49\x68\x48\x38\x41\x43\x71','\x57\x37\x50\x49\x45\x38\x6f\x2f\x7a\x57','\x62\x59\x38\x5a\x57\x36\x46\x63\x55\x47','\x57\x4f\x78\x64\x4c\x38\x6b\x31\x57\x35\x47','\x57\x50\x70\x64\x51\x4a\x42\x63\x47\x4a\x33\x63\x50\x43\x6f\x55\x57\x50\x71','\x57\x4f\x53\x59\x68\x4d\x61\x69','\x57\x52\x62\x59\x61\x62\x43','\x57\x51\x47\x4e\x61\x77\x47\x35','\x64\x49\x4b\x30\x57\x35\x2f\x64\x4d\x43\x6f\x36\x68\x38\x6b\x6e','\x57\x50\x4f\x4a\x6b\x4b\x43\x68','\x57\x52\x2f\x63\x4a\x38\x6f\x53\x41\x6d\x6b\x6c\x6f\x47\x7a\x52','\x79\x73\x38\x54\x57\x36\x70\x64\x4c\x47','\x74\x78\x6a\x53\x57\x50\x56\x64\x55\x47','\x67\x78\x4e\x64\x53\x71\x48\x51\x57\x51\x37\x64\x51\x4b\x34','\x79\x53\x6f\x59\x57\x51\x38','\x57\x37\x54\x33\x67\x63\x34\x61','\x44\x30\x37\x63\x4b\x53\x6b\x36\x57\x35\x61\x54\x70\x67\x4f','\x57\x4f\x58\x42\x57\x50\x7a\x30\x62\x57','\x66\x59\x6a\x76\x67\x43\x6f\x56\x57\x37\x46\x63\x4f\x6d\x6b\x55','\x72\x58\x61\x48\x62\x63\x53\x35\x76\x6d\x6b\x75','\x6e\x62\x66\x47\x57\x50\x4a\x64\x48\x76\x33\x64\x50\x72\x53','\x61\x38\x6f\x53\x64\x6d\x6b\x4a\x57\x35\x48\x63\x57\x4f\x69','\x64\x61\x31\x2f\x57\x37\x38\x69\x57\x4f\x43\x37\x6c\x47','\x57\x4f\x46\x63\x55\x6d\x6f\x41\x74\x6d\x6b\x67','\x76\x73\x79\x51\x57\x36\x75','\x73\x43\x6b\x32\x68\x48\x72\x6b','\x57\x4f\x78\x63\x47\x6d\x6f\x44\x76\x38\x6b\x51','\x57\x52\x74\x64\x4f\x63\x5a\x63\x4c\x64\x37\x63\x49\x6d\x6f\x54\x57\x51\x69','\x79\x38\x6f\x73\x6f\x6d\x6b\x48\x57\x37\x48\x38\x71\x57\x65','\x57\x35\x33\x63\x54\x32\x75\x70\x41\x47','\x57\x36\x6c\x63\x4d\x48\x46\x64\x49\x74\x74\x64\x4c\x4d\x78\x64\x56\x57','\x57\x4f\x47\x54\x72\x64\x4b\x6d\x6e\x47','\x79\x67\x39\x58\x57\x52\x56\x64\x49\x71','\x57\x52\x43\x54\x57\x34\x37\x64\x51\x53\x6f\x36','\x61\x53\x6f\x50\x62\x43\x6b\x57\x57\x35\x48\x76','\x57\x37\x4a\x63\x4d\x64\x30\x56\x57\x37\x5a\x63\x4e\x71\x61','\x44\x72\x4b\x6b\x6c\x62\x43','\x74\x6d\x6f\x50\x57\x4f\x78\x63\x4e\x73\x4b','\x57\x52\x68\x64\x56\x61\x4e\x63\x4e\x64\x5a\x63\x56\x53\x6f\x2b\x57\x51\x69','\x78\x74\x4e\x64\x4e\x48\x39\x53','\x43\x78\x76\x61\x63\x43\x6f\x34\x70\x53\x6b\x66','\x57\x52\x61\x50\x6f\x32\x34\x59','\x64\x57\x2f\x63\x4f\x33\x68\x64\x4c\x5a\x66\x4d\x57\x4f\x61','\x57\x52\x6c\x63\x47\x53\x6f\x5a\x76\x58\x50\x62\x41\x71','\x57\x4f\x42\x64\x52\x53\x6b\x53\x57\x35\x4a\x64\x4c\x61','\x57\x34\x37\x63\x54\x58\x71\x72\x57\x35\x71','\x57\x52\x74\x63\x4f\x6d\x6b\x33','\x64\x74\x4c\x4e\x67\x6d\x6f\x54\x57\x36\x65','\x64\x77\x68\x64\x50\x78\x4b\x4d\x57\x35\x38','\x71\x6d\x6f\x62\x6a\x71\x43','\x6a\x76\x6a\x63\x6b\x53\x6f\x70\x68\x47','\x68\x53\x6b\x66\x57\x52\x54\x4b\x67\x4b\x50\x77\x57\x34\x65','\x65\x71\x54\x4c\x57\x37\x69\x62','\x57\x36\x52\x63\x4c\x33\x6e\x64\x66\x30\x6d\x71\x79\x61','\x57\x51\x75\x7a\x57\x34\x52\x64\x4e\x6d\x6f\x63\x57\x36\x56\x64\x50\x71','\x57\x36\x68\x63\x47\x4a\x4b\x53','\x76\x38\x6b\x6d\x63\x47\x31\x6f','\x70\x76\x50\x42\x6b\x53\x6f\x62\x68\x53\x6b\x43\x79\x61','\x73\x57\x47\x70\x57\x36\x2f\x64\x47\x61','\x74\x38\x6f\x4a\x57\x50\x31\x77\x57\x35\x4c\x49\x57\x35\x72\x41','\x62\x6d\x6f\x4a\x63\x53\x6b\x6b\x57\x35\x6a\x66','\x57\x37\x46\x64\x50\x43\x6f\x4b\x57\x51\x57\x73\x69\x47','\x57\x51\x61\x56\x63\x30\x71\x4a','\x6a\x4e\x66\x57\x57\x52\x64\x63\x47\x43\x6f\x65\x57\x50\x53\x75\x57\x52\x44\x43\x69\x53\x6f\x76\x57\x51\x43','\x57\x35\x50\x4d\x7a\x38\x6f\x42\x79\x38\x6b\x78\x57\x52\x70\x63\x56\x71','\x57\x4f\x37\x64\x4a\x43\x6b\x4f\x57\x35\x37\x64\x47\x75\x46\x63\x54\x74\x75','\x57\x35\x58\x57\x79\x6d\x6f\x32\x79\x53\x6b\x51\x57\x4f\x2f\x63\x51\x57','\x57\x50\x4b\x41\x57\x35\x2f\x64\x47\x6d\x6f\x63','\x57\x52\x4a\x63\x49\x43\x6f\x39\x77\x59\x38','\x57\x51\x5a\x64\x54\x38\x6b\x34\x57\x37\x68\x64\x4c\x61','\x57\x51\x4c\x35\x57\x51\x42\x63\x4a\x43\x6f\x74\x57\x4f\x7a\x4b\x79\x59\x2f\x64\x55\x4e\x4b\x62\x57\x50\x57','\x57\x34\x6c\x63\x47\x31\x4c\x53\x62\x47','\x57\x37\x57\x4b\x57\x37\x56\x64\x4e\x43\x6b\x72\x57\x35\x34','\x67\x61\x44\x75\x6c\x53\x6f\x52','\x57\x50\x6e\x6a\x57\x50\x6e\x57\x69\x58\x33\x63\x55\x32\x4f','\x57\x34\x4c\x57\x44\x38\x6f\x46\x45\x38\x6b\x4b\x57\x36\x61','\x57\x51\x4a\x64\x55\x4a\x5a\x63\x4e\x71','\x67\x53\x6f\x75\x57\x4f\x72\x48\x75\x6d\x6f\x66\x45\x78\x34','\x57\x52\x33\x63\x4c\x38\x6b\x43\x57\x36\x57','\x67\x38\x6b\x6a\x45\x4b\x53','\x61\x38\x6f\x48\x70\x38\x6b\x42\x57\x35\x48\x66\x57\x50\x50\x36','\x78\x43\x6f\x2f\x57\x50\x4c\x71','\x57\x35\x68\x63\x56\x76\x75\x68\x42\x47\x4a\x64\x49\x63\x6d','\x68\x38\x6f\x56\x42\x67\x4e\x63\x54\x61','\x57\x51\x6e\x55\x68\x61\x31\x4f','\x57\x51\x70\x63\x48\x53\x6f\x39\x7a\x53\x6b\x69','\x69\x31\x58\x46\x69\x71','\x57\x52\x56\x64\x47\x4e\x6e\x49\x68\x76\x6d\x73\x42\x71','\x57\x52\x71\x46\x6d\x66\x71\x44','\x75\x59\x74\x64\x54\x47\x31\x34\x57\x50\x4a\x64\x51\x57','\x57\x4f\x65\x52\x78\x47\x4f\x44\x6a\x53\x6f\x69','\x57\x34\x56\x63\x4b\x76\x44\x6a\x65\x31\x6d\x70','\x79\x4c\x74\x63\x4b\x53\x6b\x4c','\x57\x34\x58\x47\x61\x4e\x62\x74\x44\x38\x6b\x78\x46\x57','\x7a\x49\x57\x69\x57\x36\x2f\x64\x48\x6d\x6b\x72\x57\x35\x4b\x73','\x57\x35\x42\x64\x55\x53\x6f\x37\x57\x4f\x6d\x4b','\x57\x51\x4a\x64\x4e\x72\x30\x6a','\x78\x58\x2f\x64\x4d\x58\x4c\x2f','\x41\x4c\x6c\x63\x4c\x6d\x6b\x52\x57\x37\x53\x41\x69\x77\x71','\x57\x36\x52\x64\x4c\x6d\x6f\x76\x57\x36\x4a\x63\x4e\x53\x6f\x59\x57\x36\x6d\x4b','\x57\x36\x2f\x63\x49\x64\x6d\x52\x57\x37\x4e\x63\x49\x48\x30','\x6f\x53\x6f\x56\x6a\x57','\x46\x63\x56\x63\x4a\x61','\x57\x37\x4b\x31\x57\x52\x78\x64\x4a\x53\x6b\x6e\x57\x35\x38\x4a\x63\x47','\x57\x50\x56\x64\x4b\x43\x6b\x4f\x57\x35\x52\x64\x49\x57','\x46\x75\x4b\x34\x57\x34\x74\x63\x47\x72\x78\x63\x52\x76\x4f','\x57\x4f\x43\x4e\x72\x63\x30\x6d\x6c\x6d\x6f\x6a\x6e\x71','\x79\x6d\x6f\x50\x6f\x43\x6b\x6c\x57\x35\x53','\x57\x52\x44\x4e\x57\x52\x39\x43\x68\x71','\x62\x61\x7a\x31','\x6b\x43\x6f\x52\x45\x78\x54\x61\x57\x51\x43\x46\x57\x4f\x4f','\x57\x36\x31\x4f\x69\x57\x57\x43\x43\x6d\x6b\x6d\x6e\x71','\x57\x52\x61\x38\x42\x61\x79\x70','\x67\x4a\x72\x4e\x67\x6d\x6f\x55\x57\x37\x2f\x63\x4f\x6d\x6b\x2f','\x57\x51\x64\x63\x4a\x6d\x6b\x62\x57\x37\x69\x52\x57\x34\x75','\x57\x35\x75\x72\x57\x52\x35\x58\x57\x50\x71','\x57\x37\x66\x38\x7a\x5a\x58\x49\x74\x6d\x6f\x42\x57\x37\x5a\x64\x4c\x6d\x6f\x4f\x57\x35\x31\x34\x71\x53\x6f\x42','\x57\x37\x4a\x63\x4d\x61\x52\x64\x4d\x5a\x68\x64\x49\x4c\x56\x64\x47\x57','\x61\x59\x71\x6b\x57\x34\x42\x64\x4c\x53\x6f\x72\x61\x53\x6b\x6d','\x6d\x78\x5a\x64\x4a\x76\x38\x52\x44\x6d\x6b\x51\x57\x34\x50\x32\x64\x4a\x4b\x48\x57\x36\x65','\x57\x37\x39\x59\x68\x48\x53\x41\x43\x6d\x6b\x6e\x70\x61','\x57\x4f\x6a\x56\x63\x72\x4c\x69','\x57\x50\x64\x63\x49\x43\x6f\x37\x78\x71','\x57\x4f\x43\x6b\x66\x31\x65\x6c','\x67\x73\x71\x4e\x57\x35\x4a\x64\x4f\x38\x6f\x6b\x6a\x43\x6b\x61','\x78\x49\x78\x64\x49\x48\x48\x4c\x57\x50\x5a\x64\x4f\x76\x53','\x57\x50\x33\x64\x53\x61\x33\x63\x50\x30\x47','\x57\x4f\x75\x2f\x63\x4b\x53\x67','\x6e\x43\x6f\x2f\x6d\x43\x6f\x66\x61\x6d\x6f\x76\x68\x4d\x65','\x62\x49\x50\x2f\x57\x4f\x64\x63\x47\x47\x34\x70\x57\x50\x61','\x71\x43\x6b\x37\x6d\x74\x38','\x57\x52\x52\x64\x4d\x67\x6e\x37\x57\x51\x33\x64\x4c\x30\x4e\x64\x47\x58\x6d\x4f\x6a\x47\x74\x64\x52\x57','\x6f\x57\x66\x62\x70\x43\x6f\x4f','\x57\x52\x37\x64\x50\x49\x70\x63\x47\x74\x46\x63\x50\x71','\x6f\x53\x6f\x4a\x63\x43\x6b\x50\x57\x36\x65','\x57\x4f\x37\x63\x53\x43\x6b\x49\x57\x50\x30\x54','\x57\x50\x43\x53\x7a\x62\x57\x50','\x57\x36\x50\x55\x66\x58\x79\x70\x44\x43\x6b\x72','\x6a\x48\x76\x58\x57\x50\x4a\x64\x4e\x4b\x2f\x64\x4b\x72\x4f','\x7a\x4a\x6d\x73\x57\x36\x78\x64\x53\x71','\x57\x35\x46\x64\x50\x38\x6f\x4d\x57\x4f\x75\x4d','\x7a\x6d\x6f\x75\x6e\x53\x6b\x4e\x57\x37\x47','\x41\x30\x64\x63\x4d\x57','\x57\x51\x46\x63\x47\x6d\x6f\x53\x75\x71\x7a\x66\x69\x47','\x41\x75\x46\x63\x49\x43\x6b\x52\x57\x34\x57\x78\x6f\x5a\x4b','\x57\x51\x79\x52\x6e\x67\x69\x4c\x67\x43\x6b\x6c','\x66\x4a\x62\x31','\x57\x37\x4a\x63\x4c\x62\x37\x64\x48\x4a\x4e\x64\x49\x75\x42\x64\x4c\x71','\x73\x4a\x46\x63\x4a\x74\x6a\x78','\x66\x38\x6f\x69\x57\x50\x62\x6e\x73\x53\x6f\x57\x44\x78\x4b','\x57\x51\x47\x78\x63\x4b\x43\x55','\x61\x38\x6b\x68\x79\x67\x52\x63\x53\x61','\x57\x51\x6c\x63\x47\x53\x6f\x2b\x76\x47\x44\x76\x79\x47','\x57\x51\x5a\x64\x4f\x64\x33\x63\x4b\x61','\x57\x52\x71\x45\x57\x35\x4a\x64\x4e\x38\x6f\x76','\x62\x4b\x4e\x64\x53\x4c\x71\x67','\x57\x36\x33\x63\x54\x33\x58\x4e\x67\x61','\x66\x47\x31\x4a\x57\x36\x4f','\x57\x50\x37\x64\x4f\x63\x5a\x63\x48\x47','\x76\x72\x43\x33\x65\x73\x57','\x70\x61\x78\x63\x55\x4d\x68\x64\x4f\x4a\x76\x52\x57\x50\x65','\x63\x53\x6b\x6d\x41\x47','\x57\x36\x6c\x63\x48\x30\x76\x69\x61\x4e\x34\x76\x79\x71','\x57\x50\x6c\x63\x52\x38\x6f\x4f\x42\x53\x6b\x62\x6e\x75\x6e\x37','\x62\x61\x35\x39','\x57\x52\x39\x4a\x6b\x48\x72\x6e\x45\x38\x6b\x5a\x57\x34\x4b','\x63\x74\x48\x4e\x57\x34\x38\x77','\x57\x37\x79\x30\x57\x37\x56\x64\x4d\x43\x6b\x72\x57\x35\x38\x2f\x72\x61','\x57\x37\x6e\x64\x57\x50\x2f\x63\x47\x53\x6b\x64\x57\x52\x68\x64\x4a\x48\x62\x76\x43\x77\x42\x64\x56\x71','\x6a\x47\x31\x35\x57\x4f\x4e\x64\x4a\x57','\x57\x52\x6d\x46\x57\x34\x70\x64\x47\x43\x6f\x65\x57\x35\x46\x64\x54\x62\x43','\x57\x52\x61\x58\x69\x67\x57\x4a\x68\x38\x6b\x6a\x57\x52\x79','\x57\x50\x52\x63\x55\x38\x6f\x4d\x73\x49\x65','\x57\x51\x69\x32\x69\x77\x47\x4a\x6a\x43\x6b\x68\x57\x51\x53','\x76\x4a\x6c\x64\x56\x71','\x71\x63\x70\x64\x53\x64\x54\x72','\x67\x78\x4e\x64\x51\x48\x48\x4b\x57\x50\x4a\x64\x52\x66\x53','\x57\x51\x33\x63\x47\x6d\x6f\x54\x43\x38\x6b\x63','\x57\x36\x35\x64\x6d\x74\x61\x41','\x64\x38\x6f\x6f\x57\x50\x50\x48\x73\x38\x6f\x56\x7a\x66\x43','\x42\x76\x78\x63\x56\x6d\x6b\x36\x57\x35\x79\x74\x6d\x71','\x42\x75\x4c\x59\x57\x51\x46\x64\x47\x53\x6b\x71\x57\x37\x37\x63\x54\x57','\x57\x52\x54\x51\x67\x74\x48\x70','\x57\x52\x64\x63\x49\x43\x6f\x48\x43\x62\x31\x61\x77\x43\x6b\x62','\x6f\x6d\x6f\x52\x57\x52\x50\x53\x43\x47','\x57\x51\x33\x63\x4f\x6d\x6f\x64\x41\x62\x30','\x57\x52\x42\x63\x4e\x38\x6f\x4d\x78\x72\x58\x39\x7a\x43\x6b\x78','\x57\x34\x4a\x64\x54\x38\x6f\x79\x57\x37\x78\x63\x4b\x71','\x71\x59\x74\x64\x53\x62\x61','\x75\x64\x33\x63\x53\x48\x72\x36\x57\x4f\x6a\x69\x75\x53\x6f\x37\x6f\x53\x6b\x75\x57\x51\x4b\x44','\x57\x37\x42\x63\x4c\x4c\x35\x50\x62\x61','\x75\x47\x57\x45\x64\x49\x47\x64\x74\x38\x6b\x35','\x57\x35\x6a\x32\x75\x43\x6f\x71\x44\x53\x6b\x51\x57\x52\x42\x63\x56\x61','\x57\x52\x52\x63\x4e\x38\x6f\x5a\x42\x6d\x6b\x6d\x6d\x76\x38','\x66\x38\x6b\x67\x57\x52\x50\x58\x63\x57\x69','\x73\x53\x6f\x55\x57\x34\x4c\x79\x57\x35\x62\x69\x57\x50\x66\x72','\x73\x38\x6b\x2f\x70\x5a\x6e\x61\x76\x53\x6f\x55','\x43\x59\x43\x47','\x57\x34\x61\x38\x57\x4f\x48\x51\x57\x51\x48\x34\x57\x34\x42\x64\x4e\x57','\x70\x57\x72\x5a\x57\x50\x34','\x67\x6d\x6f\x69\x57\x4f\x76\x48','\x57\x52\x64\x64\x4e\x43\x6b\x4b\x57\x34\x6c\x64\x4e\x66\x74\x63\x49\x73\x38','\x43\x58\x79\x42\x6a\x63\x79','\x57\x37\x56\x64\x4b\x53\x6b\x53\x6d\x38\x6f\x79\x45\x48\x72\x69\x7a\x38\x6f\x42\x6b\x43\x6f\x35\x6d\x61','\x77\x5a\x2f\x64\x52\x71\x72\x76','\x57\x4f\x2f\x64\x50\x4a\x4f','\x41\x53\x6f\x6f\x57\x51\x68\x63\x47\x71\x57\x44\x57\x51\x56\x63\x49\x71','\x57\x50\x2f\x64\x4a\x43\x6b\x56\x57\x35\x34','\x6a\x62\x4a\x63\x53\x4d\x47','\x75\x30\x66\x34\x57\x4f\x56\x64\x49\x61','\x71\x32\x46\x63\x55\x53\x6b\x51\x57\x36\x47'];_0x15ab=function(){return _0xa95a37;};return _0x15ab();}function _0x4b7778(_0x57a5d8,_0x47cb4a,_0x53e323,_0x2b4a39){const _0x489e0e=_0x57601a,_0x3fe29d={'\x42\x73\x73\x5a\x4a':function(_0x482913,_0x54d3fb){return _0x482913(_0x54d3fb);},'\x6d\x6a\x76\x42\x63':_0x489e0e(0x396,'\x58\x36\x79\x67')+_0x489e0e(0x221,'\x24\x49\x55\x63'),'\x45\x50\x47\x41\x6a':function(_0x364d42,_0x5d2401){return _0x364d42!==_0x5d2401;},'\x6c\x5a\x76\x51\x72':_0x489e0e(0x227,'\x55\x32\x61\x4b'),'\x77\x50\x4a\x48\x49':_0x489e0e(0x28f,'\x26\x75\x67\x5d'),'\x69\x72\x44\x7a\x65':function(_0x55bf2c,_0x42da47){return _0x55bf2c===_0x42da47;},'\x4e\x63\x65\x6c\x54':_0x489e0e(0x20d,'\x43\x4c\x69\x42'),'\x46\x68\x66\x46\x67':_0x489e0e(0x25d,'\x23\x32\x4e\x4c')+_0x489e0e(0x224,'\x26\x75\x67\x5d'),'\x73\x65\x52\x49\x57':_0x489e0e(0x359,'\x71\x32\x31\x55')+_0x489e0e(0x34a,'\x32\x45\x25\x57')+_0x489e0e(0x23a,'\x79\x4e\x57\x62'),'\x61\x74\x6c\x7a\x63':_0x489e0e(0x2c4,'\x79\x66\x47\x75'),'\x53\x70\x55\x4c\x58':function(_0x6f1bb2,_0xd1f628){return _0x6f1bb2===_0xd1f628;},'\x46\x56\x67\x6d\x5a':'\x68\x75\x62','\x64\x79\x53\x79\x52':_0x489e0e(0x265,'\x39\x68\x74\x33')+_0x489e0e(0x2c0,'\x40\x77\x57\x24')+_0x489e0e(0x35e,'\x6b\x32\x77\x58'),'\x61\x4d\x46\x66\x48':_0x489e0e(0x36e,'\x77\x46\x36\x69')+_0x489e0e(0x2ee,'\x21\x21\x36\x47'),'\x4d\x77\x43\x79\x4c':_0x489e0e(0x325,'\x64\x67\x62\x4d')+_0x489e0e(0x260,'\x21\x21\x36\x47')+_0x489e0e(0x258,'\x69\x69\x4c\x4b')};let _0x54b014;try{({logAssetCall:_0x54b014}=require(_0x3fe29d['\x6d\x6a\x76\x42\x63']));}catch(_0x3b756f){if(_0x3fe29d[_0x489e0e(0x2ce,'\x48\x72\x75\x34')](_0x3fe29d[_0x489e0e(0x2f0,'\x21\x21\x36\x47')],_0x3fe29d['\x77\x50\x4a\x48\x49']))return;else({logAssetCall:_0x2ea16f}=_0x3fe29d[_0x489e0e(0x2de,'\x77\x46\x36\x69')](_0x49f820,_0x3fe29d[_0x489e0e(0x300,'\x26\x6d\x76\x64')]));}const _0x41fd81=_0x3fe29d[_0x489e0e(0x267,'\x54\x4e\x34\x62')](_0x47cb4a,_0x3fe29d[_0x489e0e(0x220,'\x47\x4a\x6e\x4d')])?_0x3fe29d[_0x489e0e(0x239,'\x39\x68\x74\x33')]:_0x3fe29d[_0x489e0e(0x2c8,'\x65\x58\x35\x67')];for(const _0x336cf6 of _0x57a5d8){try{_0x54b014({'\x72\x75\x6e\x5f\x69\x64':_0x53e323,'\x61\x63\x74\x69\x6f\x6e':_0x41fd81,'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x336cf6[_0x489e0e(0x28a,'\x4d\x6c\x4d\x57')]||undefined,'\x61\x73\x73\x65\x74\x5f\x74\x79\x70\x65':_0x3fe29d[_0x489e0e(0x3a2,'\x53\x2a\x75\x64')],'\x73\x6f\x75\x72\x63\x65\x5f\x6e\x6f\x64\x65\x5f\x69\x64':_0x336cf6[_0x489e0e(0x237,'\x32\x45\x25\x57')+_0x489e0e(0x376,'\x4d\x34\x2a\x6d')]||undefined,'\x63\x68\x61\x69\x6e\x5f\x69\x64':_0x336cf6['\x63\x68\x61\x69\x6e\x5f\x69\x64']||undefined,'\x73\x63\x6f\x72\x65':_0x336cf6[_0x489e0e(0x36c,'\x37\x33\x6b\x6f')+'\x74\x79'],'\x73\x69\x67\x6e\x61\x6c\x73':_0x2b4a39['\x73\x6c\x69\x63\x65'](-0xc8*0x31+0x100b+0x163d,0x2a5*0xc+0x1*-0x19d1+-0x5e3),'\x72\x65\x61\x73\x6f\x6e':_0x3fe29d[_0x489e0e(0x340,'\x45\x63\x28\x61')](_0x336cf6[_0x489e0e(0x242,'\x26\x6d\x76\x64')],_0x3fe29d['\x46\x56\x67\x6d\x5a'])?'\x68\x75\x62\x5f\x73\x65\x6d\x61'+_0x489e0e(0x2ac,'\x43\x35\x6a\x21')+_0x489e0e(0x32a,'\x53\x2a\x75\x64'):_0x3fe29d['\x64\x79\x53\x79\x52'],'\x65\x78\x74\x72\x61':{'\x76\x69\x61':_0x3fe29d[_0x489e0e(0x3c2,'\x43\x35\x6a\x21')],'\x61\x74\x74\x72\x69\x62\x75\x74\x69\x6f\x6e':_0x3fe29d[_0x489e0e(0x1ff,'\x53\x2a\x75\x64')],'\x6f\x72\x69\x67\x69\x6e':_0x336cf6[_0x489e0e(0x388,'\x5d\x50\x52\x73')]}});}catch(_0x208ded){}}}async function _0x46eccf(_0xc04bce){const _0x5418cc=_0x57601a,_0x4ede5a={'\x59\x4b\x4b\x6f\x73':function(_0x4699ea,_0x2ab3f7){return _0x4699ea||_0x2ab3f7;},'\x73\x45\x55\x77\x6a':function(_0x1a1235,_0x1751c9){return _0x1a1235===_0x1751c9;},'\x64\x6d\x4b\x71\x79':_0x5418cc(0x348,'\x54\x4e\x34\x62'),'\x76\x52\x6c\x62\x51':function(_0x4e974c,_0xd85b42){return _0x4e974c(_0xd85b42);},'\x4c\x75\x54\x76\x4f':function(_0x453717,_0x1036bb){return _0x453717(_0x1036bb);},'\x6d\x4a\x44\x49\x52':function(_0x282724,_0x15ff15){return _0x282724>_0x15ff15;},'\x5a\x4c\x59\x42\x66':function(_0x4801f9,_0x4fd829){return _0x4801f9-_0x4fd829;},'\x68\x6e\x74\x6e\x79':function(_0x490960,_0x2ab6f0){return _0x490960-_0x2ab6f0;},'\x49\x48\x59\x63\x41':function(_0x29bc6f,_0x2753da){return _0x29bc6f>=_0x2753da;},'\x4a\x5a\x56\x72\x65':function(_0x4b58ad,_0x914c63,_0x17b4a0){return _0x4b58ad(_0x914c63,_0x17b4a0);},'\x61\x50\x6d\x78\x76':function(_0x378341,_0x34a500){return _0x378341!==_0x34a500;},'\x77\x75\x69\x46\x59':_0x5418cc(0x23c,'\x55\x32\x61\x4b'),'\x43\x4b\x58\x64\x4b':function(_0x17d14b){return _0x17d14b();},'\x75\x49\x64\x6e\x64':function(_0x50b48e,_0x6aafa5){return _0x50b48e+_0x6aafa5;},'\x59\x66\x78\x4a\x50':_0x5418cc(0x295,'\x4d\x6c\x4d\x57'),'\x66\x4a\x45\x44\x79':_0x5418cc(0x2e2,'\x79\x66\x47\x75'),'\x70\x47\x48\x4a\x79':function(_0x4e9013,_0x2e9ee7,_0x3605ea,_0x1a783f,_0x4713db){return _0x4e9013(_0x2e9ee7,_0x3605ea,_0x1a783f,_0x4713db);},'\x55\x75\x49\x45\x79':function(_0x3a3ec6,_0x464932){return _0x3a3ec6===_0x464932;}},_0x70a777=_0x4ede5a[_0x5418cc(0x284,'\x6a\x39\x6a\x57')](_0xc04bce,{}),_0x589b24=_0x70a777[_0x5418cc(0x232,'\x45\x28\x7a\x26')]||_0x4ce2d5(),_0x2977ee={};_0x2977ee[_0x5418cc(0x234,'\x21\x21\x36\x47')]=![],_0x2977ee[_0x5418cc(0x320,'\x26\x6d\x76\x64')]=null,_0x2977ee[_0x5418cc(0x387,'\x79\x4e\x57\x62')]=[],_0x2977ee['\x64\x72\x6f\x70\x70\x65\x64']=0x0,_0x2977ee[_0x5418cc(0x2d3,'\x79\x43\x35\x78')]=[];if(_0x4ede5a[_0x5418cc(0x363,'\x37\x73\x63\x24')](_0x589b24,_0x4ede5a[_0x5418cc(0x223,'\x37\x33\x6b\x6f')]))return _0x2977ee;const _0x16f003=_0x4ede5a['\x76\x52\x6c\x62\x51'](_0x8c827e,_0x70a777[_0x5418cc(0x287,'\x55\x32\x61\x4b')]),_0x508b7f={};_0x508b7f[_0x5418cc(0x3d3,'\x66\x63\x41\x23')]=![],_0x508b7f[_0x5418cc(0x201,'\x39\x68\x74\x33')]=null,_0x508b7f['\x64\x65\x63\x69\x64\x65\x64']=[],_0x508b7f[_0x5418cc(0x22a,'\x78\x41\x68\x52')]=0x0,_0x508b7f['\x73\x69\x67\x6e\x61\x6c\x73']=[];if(!_0x16f003[_0x5418cc(0x24a,'\x79\x43\x35\x78')])return _0x508b7f;const _0x4dfcc1=_0x4ede5a[_0x5418cc(0x233,'\x35\x62\x76\x5b')](_0x21e33b,_0x16f003),_0x3962b5=0x136d*-0x1+-0xa39*-0x1+0x9ca;let _0x386545=Number[_0x5418cc(0x3ce,'\x66\x63\x41\x23')](_0x70a777['\x74\x69\x6d\x65\x6f\x75\x74\x4d'+'\x73'])&&_0x4ede5a[_0x5418cc(0x24f,'\x43\x4c\x69\x42')](_0x70a777[_0x5418cc(0x2fd,'\x78\x41\x68\x52')+'\x73'],-0x7*0x51a+-0x1e1e+0x41d4)?_0x70a777[_0x5418cc(0x283,'\x4d\x34\x2a\x6d')+'\x73']:0x8*0x44f+0x1*-0x10fa+-0x9ae;if(Number[_0x5418cc(0x270,'\x39\x68\x74\x33')](_0x70a777['\x64\x65\x61\x64\x6c\x69\x6e\x65'+'\x4d\x73'])){const _0x5ec822=_0x4ede5a[_0x5418cc(0x1f7,'\x78\x41\x68\x52')](_0x4ede5a[_0x5418cc(0x380,'\x4d\x6c\x4d\x57')](_0x70a777[_0x5418cc(0x2bb,'\x48\x72\x75\x34')+'\x4d\x73'],Date[_0x5418cc(0x1e3,'\x21\x21\x36\x47')]()),_0x3962b5);_0x386545=Math[_0x5418cc(0x3a6,'\x30\x4b\x62\x36')](_0x386545,_0x5ec822);}const _0x119d61=_0x4ede5a[_0x5418cc(0x3d8,'\x6b\x32\x77\x58')](_0x386545,-0x1*-0x109a+-0x1a*0x1+-0xf54)?await _0x4ede5a[_0x5418cc(0x205,'\x78\x41\x68\x52')](_0x1c666c,_0x16f003,_0x386545):[],_0xac5279=new Set(),_0x395644=[];let _0x545de5=-0x117+-0x1*-0x1f45+0xf17*-0x2;for(const _0x2dcf19 of[..._0x119d61,..._0x4dfcc1]){if(_0x4ede5a[_0x5418cc(0x20b,'\x54\x4f\x4e\x32')](_0x4ede5a[_0x5418cc(0x382,'\x21\x21\x36\x47')],_0x4ede5a[_0x5418cc(0x2f9,'\x45\x28\x7a\x26')]))_0x1e7f93=[];else{const _0x586bc8=_0x2dcf19[_0x5418cc(0x2f7,'\x45\x63\x28\x61')]||_0x2dcf19['\x6f\x72\x69\x67\x69\x6e']+'\x3a'+_0x2dcf19[_0x5418cc(0x27e,'\x21\x21\x36\x47')];if(_0x586bc8&&_0xac5279[_0x5418cc(0x3aa,'\x68\x54\x5a\x24')](_0x586bc8)){_0x545de5++;continue;}if(_0x586bc8)_0xac5279[_0x5418cc(0x2f8,'\x45\x28\x7a\x26')](_0x586bc8);_0x395644['\x70\x75\x73\x68'](_0x2dcf19);}}_0x395644[_0x5418cc(0x2e7,'\x21\x21\x36\x47')]((_0x35882c,_0x1807f7)=>(_0x1807f7[_0x5418cc(0x3b2,'\x4d\x6c\x4d\x57')+'\x74\x79']||0x259+-0xb*0x171+0x1ee*0x7)-(_0x35882c[_0x5418cc(0x3b2,'\x4d\x6c\x4d\x57')+'\x74\x79']||0x17ae+-0xd*-0x245+-0x352f));const _0x569218=_0x395644['\x73\x6c\x69\x63\x65'](-0x7*-0x313+0x1d2f+-0x32b4,_0x4ede5a[_0x5418cc(0x2b6,'\x79\x4e\x57\x62')](_0x5966c4));_0x545de5+=Math[_0x5418cc(0x1fa,'\x26\x44\x4b\x36')](-0x23f6+0xa*0x1cd+-0x47d*-0x4,_0x395644[_0x5418cc(0x3be,'\x43\x35\x6a\x21')]-_0x569218['\x6c\x65\x6e\x67\x74\x68']);const _0x3093a3=_0x569218[_0x5418cc(0x37c,'\x79\x66\x47\x75')](_0x18cb18);_0x545de5+=_0x4ede5a[_0x5418cc(0x211,'\x5e\x49\x45\x34')](_0x569218[_0x5418cc(0x269,'\x37\x73\x63\x24')],_0x3093a3[_0x5418cc(0x269,'\x37\x73\x63\x24')]);const _0x35479c={};_0x35479c[_0x5418cc(0x36a,'\x4d\x6c\x4d\x57')]=![],_0x35479c['\x74\x65\x78\x74']=null,_0x35479c[_0x5418cc(0x30e,'\x47\x4a\x6e\x4d')]=[],_0x35479c[_0x5418cc(0x2a3,'\x45\x28\x7a\x26')]=_0x545de5,_0x35479c[_0x5418cc(0x35f,'\x26\x75\x67\x5d')]=_0x16f003;if(!_0x3093a3[_0x5418cc(0x3bd,'\x64\x67\x62\x4d')])return _0x35479c;const _0x53ad13=_0x4ede5a[_0x5418cc(0x34e,'\x26\x75\x67\x5d')](_0x32e63a,_0x3093a3),_0x1a84e9={};_0x1a84e9[_0x5418cc(0x286,'\x46\x4a\x33\x59')]=![],_0x1a84e9['\x74\x65\x78\x74']=null,_0x1a84e9[_0x5418cc(0x2ae,'\x4f\x2a\x62\x28')]=[],_0x1a84e9[_0x5418cc(0x375,'\x4f\x2a\x62\x28')]=_0x545de5,_0x1a84e9['\x73\x69\x67\x6e\x61\x6c\x73']=_0x16f003;if(!_0x53ad13)return _0x1a84e9;const _0x7cdee0=_0x70a777['\x72\x75\x6e\x49\x64']||_0x4ede5a[_0x5418cc(0x1e1,'\x54\x4e\x34\x62')](_0x4ede5a[_0x5418cc(0x253,'\x45\x63\x28\x61')],_0x70a777[_0x5418cc(0x2bf,'\x37\x33\x6b\x6f')+'\x64']||_0x4ede5a['\x66\x4a\x45\x44\x79']);return _0x4ede5a[_0x5418cc(0x214,'\x37\x33\x6b\x6f')](_0x4b7778,_0x3093a3,_0x589b24,_0x7cdee0,_0x16f003),{'\x69\x6e\x6a\x65\x63\x74':_0x4ede5a[_0x5418cc(0x314,'\x23\x32\x4e\x4c')](_0x589b24,_0x5418cc(0x275,'\x79\x66\x47\x75')),'\x74\x65\x78\x74':_0x53ad13,'\x64\x65\x63\x69\x64\x65\x64':_0x3093a3,'\x64\x72\x6f\x70\x70\x65\x64':_0x545de5,'\x73\x69\x67\x6e\x61\x6c\x73':_0x16f003};}const _0x362d87={};_0x362d87['\x73\x65\x61\x72\x63\x68\x48\x75'+'\x62']=_0x1c666c,_0x362d87['\x6d\x61\x74\x63\x68\x4c\x6f\x63'+_0x57601a(0x35d,'\x23\x32\x4e\x4c')]=_0x21e33b,_0x362d87[_0x57601a(0x2df,'\x78\x41\x68\x52')+_0x57601a(0x328,'\x26\x6d\x76\x64')]=_0x4b7778;const _0x386512={};function _0x44ad(_0x501081,_0x3ee451){_0x501081=_0x501081-(0x15df+-0x1c33+0x831);const _0x569573=_0x15ab();let _0x253edf=_0x569573[_0x501081];if(_0x44ad['\x55\x72\x6a\x50\x70\x58']===undefined){var _0x51bbf9=function(_0x51b8c7){const _0x316bae='\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 _0x54b338='',_0x4578b6='',_0x2b2e1e=_0x54b338+_0x51bbf9,_0x16b830=(''+function(){return-0x1552+0x3e*0x47+0x420;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x134f+-0x1632+-0x4a*-0xa);for(let _0x2f426d=-0x4*-0x4f7+0x5e+-0x143a,_0x9d7abf,_0x33dcd4,_0x2fe889=0x13*0x1e5+0x18b5+-0x3cb4;_0x33dcd4=_0x51b8c7['\x63\x68\x61\x72\x41\x74'](_0x2fe889++);~_0x33dcd4&&(_0x9d7abf=_0x2f426d%(0x2034+-0x8*0x25f+0x34e*-0x4)?_0x9d7abf*(-0x664+0x21*-0x1+0x6c5)+_0x33dcd4:_0x33dcd4,_0x2f426d++%(-0x1f*0x89+-0x1b7*0x11+0x2dc2))?_0x54b338+=_0x16b830||_0x2b2e1e['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2fe889+(-0xc7b*0x3+0x13d8+0x81*0x23))-(0x15+-0xfcf+0xfc4)!==0x60a+-0x2584+0x6*0x53f?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x42*-0xb+-0x2*-0xb5+-0x341&_0x9d7abf>>(-(0x8dc+-0x2399*0x1+-0x29*-0xa7)*_0x2f426d&-0xe16+0x154f+-0x733)):_0x2f426d:0x3d5*0x2+0xdd8+-0x1582){_0x33dcd4=_0x316bae['\x69\x6e\x64\x65\x78\x4f\x66'](_0x33dcd4);}for(let _0x51603f=-0x1*0x2252+0x1b5d+-0x1*-0x6f5,_0x5a1917=_0x54b338['\x6c\x65\x6e\x67\x74\x68'];_0x51603f<_0x5a1917;_0x51603f++){_0x4578b6+='\x25'+('\x30\x30'+_0x54b338['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x51603f)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x259+0xf2*-0x16+0x1283*0x1))['\x73\x6c\x69\x63\x65'](-(-0xa07+0x1849+-0xe40));}return decodeURIComponent(_0x4578b6);};const _0xa7b2df=function(_0x2e4479,_0x449e39){let _0x1e8f95=[],_0x5d6900=0xc9b+0x1f92+-0x2c2d*0x1,_0x3571db,_0x2bfcec='';_0x2e4479=_0x51bbf9(_0x2e4479);let _0x4700a0;for(_0x4700a0=0x1*0x1b47+0x1a88+-0x1db*0x1d;_0x4700a0<0x3cb*0x2+0x1d08+-0x239e;_0x4700a0++){_0x1e8f95[_0x4700a0]=_0x4700a0;}for(_0x4700a0=0x4*0x20+-0x92e+-0x457*-0x2;_0x4700a0<0xe6+-0x25*-0xef+-0x2271;_0x4700a0++){_0x5d6900=(_0x5d6900+_0x1e8f95[_0x4700a0]+_0x449e39['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x4700a0%_0x449e39['\x6c\x65\x6e\x67\x74\x68']))%(0xd5*-0x13+0x1128+-0x1*0x59),_0x3571db=_0x1e8f95[_0x4700a0],_0x1e8f95[_0x4700a0]=_0x1e8f95[_0x5d6900],_0x1e8f95[_0x5d6900]=_0x3571db;}_0x4700a0=0x1*0xacf+-0x3*-0x9c2+-0x14b*0x1f,_0x5d6900=-0x1*0x6d3+0x607+-0x44*-0x3;for(let _0x56696c=0x2408+-0x2*0x3d2+0x1c64*-0x1;_0x56696c<_0x2e4479['\x6c\x65\x6e\x67\x74\x68'];_0x56696c++){_0x4700a0=(_0x4700a0+(-0x11c6+0x143f+-0x278))%(-0xe95*0x2+0x2163+0x37*-0xf),_0x5d6900=(_0x5d6900+_0x1e8f95[_0x4700a0])%(0x825+-0x1f69+0xc22*0x2),_0x3571db=_0x1e8f95[_0x4700a0],_0x1e8f95[_0x4700a0]=_0x1e8f95[_0x5d6900],_0x1e8f95[_0x5d6900]=_0x3571db,_0x2bfcec+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2e4479['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x56696c)^_0x1e8f95[(_0x1e8f95[_0x4700a0]+_0x1e8f95[_0x5d6900])%(-0x3*0x4b+0x1*0x2087+-0x1ea6)]);}return _0x2bfcec;};_0x44ad['\x53\x50\x73\x5a\x4d\x46']=_0xa7b2df,_0x44ad['\x6d\x65\x4c\x46\x6b\x67']={},_0x44ad['\x55\x72\x6a\x50\x70\x58']=!![];}const _0x338e3e=_0x569573[-0x389*0x5+-0x1*-0x1961+-0x7b4],_0x3ee211=_0x501081+_0x338e3e,_0x5f5b06=_0x44ad['\x6d\x65\x4c\x46\x6b\x67'][_0x3ee211];if(!_0x5f5b06){if(_0x44ad['\x54\x41\x4f\x61\x4d\x4a']===undefined){const _0x46b361=function(_0x523c86){this['\x6f\x68\x4d\x5a\x41\x68']=_0x523c86,this['\x4f\x48\x50\x71\x45\x4a']=[0xc*0x20+-0x162b+0x14ac,0x1012+-0x1925+-0x17*-0x65,-0x1*-0x1b3d+-0x6c1*-0x4+-0x3641],this['\x76\x70\x75\x4a\x79\x75']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x73\x50\x6a\x55\x52\x55']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x54\x62\x43\x6a\x4a\x4f']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x46b361['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x57\x64\x79\x47\x74\x41']=function(){const _0x4f1539=new RegExp(this['\x73\x50\x6a\x55\x52\x55']+this['\x54\x62\x43\x6a\x4a\x4f']),_0x422d59=_0x4f1539['\x74\x65\x73\x74'](this['\x76\x70\x75\x4a\x79\x75']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4f\x48\x50\x71\x45\x4a'][0x2*-0x475+0x21c3+0x8*-0x31b]:--this['\x4f\x48\x50\x71\x45\x4a'][0xd7c+-0x135d*0x2+0x193e];return this['\x4d\x4b\x4e\x53\x6f\x56'](_0x422d59);},_0x46b361['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4d\x4b\x4e\x53\x6f\x56']=function(_0xa006e8){if(!Boolean(~_0xa006e8))return _0xa006e8;return this['\x77\x65\x5a\x74\x47\x66'](this['\x6f\x68\x4d\x5a\x41\x68']);},_0x46b361['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x77\x65\x5a\x74\x47\x66']=function(_0x543a23){for(let _0x4017a3=0x24c2+-0x193e+-0xb84,_0x2962ba=this['\x4f\x48\x50\x71\x45\x4a']['\x6c\x65\x6e\x67\x74\x68'];_0x4017a3<_0x2962ba;_0x4017a3++){this['\x4f\x48\x50\x71\x45\x4a']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x2962ba=this['\x4f\x48\x50\x71\x45\x4a']['\x6c\x65\x6e\x67\x74\x68'];}return _0x543a23(this['\x4f\x48\x50\x71\x45\x4a'][-0x7b3+-0x48c+0xc3f*0x1]);},(''+function(){return 0x267c+-0x2*0x533+-0x1c16;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x191f*-0x1+0xf23+0x9fd)&&new _0x46b361(_0x44ad)['\x57\x64\x79\x47\x74\x41'](),_0x44ad['\x54\x41\x4f\x61\x4d\x4a']=!![];}_0x253edf=_0x44ad['\x53\x50\x73\x5a\x4d\x46'](_0x253edf,_0x3ee451),_0x44ad['\x6d\x65\x4c\x46\x6b\x67'][_0x3ee211]=_0x253edf;}else _0x253edf=_0x5f5b06;return _0x253edf;}_0x386512[_0x57601a(0x392,'\x55\x32\x61\x4b')+'\x72\x54\x61\x73\x6b']=_0x46eccf,_0x386512[_0x57601a(0x20f,'\x23\x32\x4e\x4c')]=_0x4ce2d5,_0x386512[_0x57601a(0x3d5,'\x37\x73\x63\x24')+'\x6d']=_0x23af73,_0x386512['\x67\x65\x74\x4d\x61\x78\x49\x6e'+_0x57601a(0x311,'\x5d\x50\x52\x73')]=_0x5966c4,_0x386512[_0x57601a(0x29c,'\x54\x4e\x34\x62')+_0x57601a(0x268,'\x37\x33\x6b\x6f')+'\x72\x65']=_0xd3228e,_0x386512[_0x57601a(0x22e,'\x29\x71\x48\x6c')+_0x57601a(0x25f,'\x46\x4a\x33\x59')]=_0x8c827e,_0x386512[_0x57601a(0x2b8,'\x47\x7a\x4c\x78')+_0x57601a(0x2a4,'\x37\x73\x63\x24')]=_0x32e63a,_0x386512['\x5f\x69\x6e\x74\x65\x72\x6e\x61'+'\x6c\x73']=_0x362d87,module[_0x57601a(0x36d,'\x78\x41\x68\x52')]=_0x386512;
|
|
1
|
+
// recallInject.js
|
|
2
|
+
// Harness-agnostic core for "runtime asset injection" (P4-c): when a general
|
|
3
|
+
// agent is about to work on a task, find GEP assets (Hub genes + local genes)
|
|
4
|
+
// that match the task and surface a distilled hint the agent can use.
|
|
5
|
+
//
|
|
6
|
+
// This module is PURE: no stdin/stdout, no process.exit. It is driven by the
|
|
7
|
+
// per-harness hook entrypoint (src/adapters/scripts/evolver-task-recall.js) and
|
|
8
|
+
// is unit-testable in isolation. The entrypoint owns the fail-open latch +
|
|
9
|
+
// watchdog + stdout shape; this module owns the matching/gating/logging.
|
|
10
|
+
//
|
|
11
|
+
// HARD INVARIANTS (do not regress — these are the P4-c scope contract):
|
|
12
|
+
// 1. SEARCH-ONLY. We call fetchSemanticResults (a free GET
|
|
13
|
+
// /a2a/assets/semantic-search) and NEVER hubSearch()/fetchAssetById() —
|
|
14
|
+
// Phase-2 fetch SPENDS CREDITS (hubSearch.js:379 logs "Fetch cost"). The
|
|
15
|
+
// recall path must never spend a credit, in any mode. No money surface.
|
|
16
|
+
// 2. LLM-FREE / NO CHILD PROCESS. We extract signals with ONLY the pure
|
|
17
|
+
// extractors _extractRegex + _extractKeywordScore. We must NOT call
|
|
18
|
+
// extractSignals() — it calls _extractLLM(), a SYNC execFileSync('curl',
|
|
19
|
+
// ['-m','10',...]) that (a) blocks the event loop for up to 10s so the
|
|
20
|
+
// entrypoint watchdog can't fire, and (b) ships a raw-prompt corpus to the
|
|
21
|
+
// Hub. Both are forbidden here.
|
|
22
|
+
// 3. SHADOW-FIRST. In 'shadow' we compute + log what WOULD inject but return
|
|
23
|
+
// inject:false (the entrypoint injects nothing). In 'off' the entrypoint
|
|
24
|
+
// never calls us. Only 'enforce' returns inject:true.
|
|
25
|
+
// 4. HIGH-CONFIDENCE ONLY. Hub rows must clear the similarity HIGH band
|
|
26
|
+
// (>= EVOLVER_RECALL_MIN_SIM, default 0.75). Local genes must have >=1
|
|
27
|
+
// real signal-pattern hit (not bag-of-words noise).
|
|
28
|
+
// 5. NO Hub used_asset_ids / reuse-credit reporting. Attribution is a LOCAL
|
|
29
|
+
// JSONL artifact only (assetCallLog). Promoting it to Hub credit needs a
|
|
30
|
+
// stronger usage signal AND team sign-off (it changes money).
|
|
31
|
+
|
|
32
|
+
const path = require('path');
|
|
33
|
+
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Mode parsing: EVOLVER_RECALL_MODE ∈ off (default) | shadow | enforce.
|
|
36
|
+
// Anything unknown/absent -> off (safest). Mirrors the conv-distill/P3 cadence
|
|
37
|
+
// of a single 3-state env var.
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
function getMode() {
|
|
40
|
+
const v = String(process.env.EVOLVER_RECALL_MODE || '').toLowerCase().trim();
|
|
41
|
+
return v === 'shadow' || v === 'enforce' ? v : 'off';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Similarity HIGH band. Ported as an in-repo literal from
|
|
45
|
+
// gep-mcp-server/src/searchEnrich.js (SIMILARITY_BAND_HIGH = 0.75) — that file
|
|
46
|
+
// is a separate ESM repo and must NOT be imported. Operator-tunable.
|
|
47
|
+
function getMinSim() {
|
|
48
|
+
const n = Number(process.env.EVOLVER_RECALL_MIN_SIM);
|
|
49
|
+
return Number.isFinite(n) && n > 0 && n <= 1 ? n : 0.75;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Max assets injected per turn. Default 1 (top hit only) to minimise context
|
|
53
|
+
// pollution; the entrypoint blocks every prompt, so we stay terse.
|
|
54
|
+
function getMaxInject() {
|
|
55
|
+
const n = parseInt(process.env.EVOLVER_RECALL_MAX, 10);
|
|
56
|
+
return Number.isFinite(n) && n > 0 && n <= 10 ? n : 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Hard ceiling on injected text length (defense against a giant nl_summary
|
|
60
|
+
// bloating the agent's context window).
|
|
61
|
+
const INJECT_CHAR_CEILING = 800;
|
|
62
|
+
const SUMMARY_CLIP = 200;
|
|
63
|
+
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// LLM-free signal extraction. Uses ONLY the pure extractors. We deliberately
|
|
66
|
+
// do NOT call signals.extractSignals (curl/event-loop-block, see invariant 2)
|
|
67
|
+
// and do NOT call _mergeSignals (it console.log()s to STDOUT — which would
|
|
68
|
+
// corrupt the hook's single-JSON stdout contract; we inline a Set-merge).
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
function extractSignalsPure(prompt) {
|
|
71
|
+
const corpus = String(prompt || '');
|
|
72
|
+
const lower = corpus.toLowerCase();
|
|
73
|
+
const errorHit = /\b(error|exception|fail(?:ed|ure)?)\b|错误|异常|报错|失败/i.test(lower);
|
|
74
|
+
|
|
75
|
+
let regexSignals = [];
|
|
76
|
+
let scoreSignals = [];
|
|
77
|
+
try {
|
|
78
|
+
const sig = require('./signals');
|
|
79
|
+
regexSignals = sig._extractRegex(corpus, lower, errorHit) || [];
|
|
80
|
+
scoreSignals = sig._extractKeywordScore(lower) || [];
|
|
81
|
+
} catch (_) {
|
|
82
|
+
// signals.js unreachable — degrade to no signals (local/Hub then no-op).
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Inline Set-merge (do NOT use sig._mergeSignals — it writes to stdout).
|
|
87
|
+
const merged = new Set();
|
|
88
|
+
for (const s of regexSignals) merged.add(s);
|
|
89
|
+
for (const s of scoreSignals) merged.add(s);
|
|
90
|
+
// 'stable_success_plateau' is the extractor's "nothing interesting" default;
|
|
91
|
+
// it carries no task content, so drop it to avoid a noise query.
|
|
92
|
+
merged.delete('stable_success_plateau');
|
|
93
|
+
return Array.from(merged);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// The closed-vocabulary extractors above only fire on the evolver's own corpus
|
|
97
|
+
// shapes (errors, specific feature-request phrasings). A normal task prompt
|
|
98
|
+
// ("add retry with backoff to the http client") yields NO closed-vocab signal,
|
|
99
|
+
// so on its own the recall hook would almost never fire for real coding work.
|
|
100
|
+
// Embedding-based semantic search wants the actual task WORDS, so we also add a
|
|
101
|
+
// token projection of the prompt. tokenize() drops stop-words and short tokens;
|
|
102
|
+
// buildSemanticQuery (inside fetchSemanticResults) caps the outgoing query to
|
|
103
|
+
// 12 terms, so this stays a bounded token-projection — never the verbatim
|
|
104
|
+
// prompt. Capped here too as defense-in-depth.
|
|
105
|
+
const MAX_QUERY_TOKENS = 12;
|
|
106
|
+
function buildSignalList(prompt) {
|
|
107
|
+
const coreSignals = extractSignalsPure(prompt);
|
|
108
|
+
let tokens = [];
|
|
109
|
+
try {
|
|
110
|
+
const { tokenize } = require('./selector');
|
|
111
|
+
// De-dup while preserving order, then cap.
|
|
112
|
+
const seen = new Set();
|
|
113
|
+
for (const t of tokenize(prompt)) {
|
|
114
|
+
if (!seen.has(t)) { seen.add(t); tokens.push(t); }
|
|
115
|
+
if (tokens.length >= MAX_QUERY_TOKENS) break;
|
|
116
|
+
}
|
|
117
|
+
} catch (_) { tokens = []; }
|
|
118
|
+
|
|
119
|
+
const merged = new Set();
|
|
120
|
+
for (const s of coreSignals) merged.add(s);
|
|
121
|
+
for (const t of tokens) merged.add(t);
|
|
122
|
+
return Array.from(merged);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Hub search — SEARCH-ONLY, credit-free. Returns the rows that clear the HIGH
|
|
127
|
+
// similarity band, best-effort self-suppressed, never spending a credit.
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
async function searchHub(signalList, timeoutMs) {
|
|
130
|
+
let hs, a2a;
|
|
131
|
+
try {
|
|
132
|
+
hs = require('./hubSearch');
|
|
133
|
+
a2a = require('./a2aProtocol');
|
|
134
|
+
} catch (_) {
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
// Honor the HUBSEARCH_SEMANTIC kill-switch the same way hubSearch() does:
|
|
138
|
+
// an operator who set it to false/0 to stop semantic Hub traffic must not
|
|
139
|
+
// have this hook keep issuing semantic GETs on every prompt (Bugbot #183
|
|
140
|
+
// medium). When disabled -> no Hub call, local genes only.
|
|
141
|
+
try { if (typeof hs.isSemanticEnabled === 'function' && !hs.isSemanticEnabled()) return []; } catch (_) {}
|
|
142
|
+
// Resolve the Hub URL via a2aProtocol.getHubUrl(), the canonical resolver
|
|
143
|
+
// that honors BOTH A2A_HUB_URL and the legacy EVOMAP_HUB_URL fallback.
|
|
144
|
+
// hubSearch.getHubUrl() reads only A2A_HUB_URL, so a node configured with the
|
|
145
|
+
// legacy var alone would silently skip recall while every other Hub feature
|
|
146
|
+
// (auth, heartbeat, memory) still worked (Bugbot #183 medium). Strip trailing
|
|
147
|
+
// slashes to match hubSearch's own normalization. Fall back to hs.getHubUrl()
|
|
148
|
+
// only if a2a is unavailable.
|
|
149
|
+
let hubUrl = '';
|
|
150
|
+
try {
|
|
151
|
+
hubUrl = (typeof a2a.getHubUrl === 'function' ? a2a.getHubUrl() : hs.getHubUrl()) || '';
|
|
152
|
+
hubUrl = hubUrl.replace(/\/+$/, '');
|
|
153
|
+
} catch (_) { hubUrl = ''; }
|
|
154
|
+
// Air-gapped / no Hub configured -> zero egress, local genes only.
|
|
155
|
+
if (!hubUrl) return [];
|
|
156
|
+
|
|
157
|
+
let headers = {};
|
|
158
|
+
try { headers = a2a.buildHubHeaders(); } catch (_) { headers = {}; }
|
|
159
|
+
|
|
160
|
+
let rows = [];
|
|
161
|
+
try {
|
|
162
|
+
// fetchSemanticResults already owns an AbortController bound to timeoutMs
|
|
163
|
+
// and returns [] on timeout/error/non-200 (hubSearch.js:160). It hits
|
|
164
|
+
// GET /a2a/assets/semantic-search?...&type=Gene -> genes only, no fetch,
|
|
165
|
+
// no credit. The query is a token-trimmed projection of the signals
|
|
166
|
+
// (buildSemanticQuery), NOT the verbatim prompt.
|
|
167
|
+
rows = await hs.fetchSemanticResults(hubUrl, headers, signalList, timeoutMs);
|
|
168
|
+
} catch (_) {
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
if (!Array.isArray(rows)) return [];
|
|
172
|
+
|
|
173
|
+
const minSim = getMinSim();
|
|
174
|
+
let selfId = '';
|
|
175
|
+
try { selfId = a2a.getNodeId() || ''; } catch (_) { selfId = ''; }
|
|
176
|
+
|
|
177
|
+
const out = [];
|
|
178
|
+
for (const r of rows) {
|
|
179
|
+
if (!r || typeof r !== 'object') continue;
|
|
180
|
+
const sim = Number(r._semantic_similarity);
|
|
181
|
+
if (!Number.isFinite(sim) || sim < minSim) continue; // drop drag-net matches
|
|
182
|
+
// Best-effort self-suppression: only when source_node_id is present (the
|
|
183
|
+
// semantic endpoint often omits it — do NOT treat absence as a hard gate).
|
|
184
|
+
if (selfId && r.source_node_id && r.source_node_id === selfId) continue;
|
|
185
|
+
out.push({
|
|
186
|
+
asset_id: r.asset_id || r.assetId || '',
|
|
187
|
+
source_node_id: r.source_node_id || '',
|
|
188
|
+
chain_id: r.chain_id || '',
|
|
189
|
+
similarity: sim,
|
|
190
|
+
title: r.short_title || r.nl_title || r.name || '',
|
|
191
|
+
summary: r.nl_summary || r.summary || '',
|
|
192
|
+
origin: 'hub',
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
// Local genes — match against on-disk genes with a real signal-pattern hit.
|
|
200
|
+
// We use the EXPORTED scorers (scoreGene is NOT exported, and selectGene uses
|
|
201
|
+
// Math.random + env I/O so it's unsuitable). Require >=1 pattern hit so we
|
|
202
|
+
// inject only genes whose signals_match actually fire for this task, not
|
|
203
|
+
// bag-of-words near-misses.
|
|
204
|
+
// ---------------------------------------------------------------------------
|
|
205
|
+
function matchLocalGenes(signalList) {
|
|
206
|
+
let genes = [];
|
|
207
|
+
let sel;
|
|
208
|
+
try {
|
|
209
|
+
genes = require('./assetStore').loadGenes() || [];
|
|
210
|
+
sel = require('./selector');
|
|
211
|
+
} catch (_) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
if (!Array.isArray(genes) || genes.length === 0 || !sel) return [];
|
|
215
|
+
|
|
216
|
+
const out = [];
|
|
217
|
+
for (const gene of genes) {
|
|
218
|
+
if (!gene || gene.type !== 'Gene') continue;
|
|
219
|
+
const patterns = Array.isArray(gene.signals_match) ? gene.signals_match : [];
|
|
220
|
+
let hits = 0;
|
|
221
|
+
for (const p of patterns) {
|
|
222
|
+
try { if (sel.matchPatternToSignals(p, signalList)) hits++; } catch (_) { /* skip */ }
|
|
223
|
+
}
|
|
224
|
+
if (hits < 1) continue; // require a real pattern hit, not noise
|
|
225
|
+
let sem = 0;
|
|
226
|
+
try { sem = sel.scoreGeneSemantic(gene, signalList) || 0; } catch (_) { sem = 0; }
|
|
227
|
+
// Many genes (incl. genesis genes) carry no `summary`. Fall back to a terse
|
|
228
|
+
// projection of the strategy/avoid text or the matched signal patterns so
|
|
229
|
+
// the injected line is actionable rather than a dangling "...: " (caught by
|
|
230
|
+
// real-gene E2E where synthetic fixtures had summaries).
|
|
231
|
+
let summary = (gene.summary || '').toString().trim();
|
|
232
|
+
if (!summary && gene.strategy && typeof gene.strategy === 'object') {
|
|
233
|
+
const pieces = [];
|
|
234
|
+
if (Array.isArray(gene.strategy.steps)) pieces.push(gene.strategy.steps.slice(0, 3).join('; '));
|
|
235
|
+
if (typeof gene.strategy.approach === 'string') pieces.push(gene.strategy.approach);
|
|
236
|
+
summary = pieces.filter(Boolean).join(' — ').trim();
|
|
237
|
+
}
|
|
238
|
+
if (!summary) {
|
|
239
|
+
const pats = patterns
|
|
240
|
+
.map(p => String(p).split('|')[0]) // first alias of each multi-lang pattern
|
|
241
|
+
.filter(p => p && !p.startsWith('/'))
|
|
242
|
+
.slice(0, 4);
|
|
243
|
+
if (pats.length) summary = 'matches: ' + pats.join(', ');
|
|
244
|
+
}
|
|
245
|
+
out.push({
|
|
246
|
+
asset_id: gene.asset_id || '',
|
|
247
|
+
source_node_id: gene.source_node_id || gene.author_node_id || '',
|
|
248
|
+
chain_id: gene.chain_id || '',
|
|
249
|
+
// Map local score into a 0..1-ish band for ranking next to Hub similarity.
|
|
250
|
+
// hits dominate; semantic cosine breaks ties.
|
|
251
|
+
similarity: Math.min(1, 0.75 + 0.05 * hits + 0.1 * sem),
|
|
252
|
+
title: gene.id || gene.short_title || '',
|
|
253
|
+
summary,
|
|
254
|
+
origin: 'local',
|
|
255
|
+
_hits: hits,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return out;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// ---------------------------------------------------------------------------
|
|
262
|
+
// Build the injected text. Distilled hint, NOT raw JSON. Each line uses
|
|
263
|
+
// nl_summary/title (always present in list/search responses) — never
|
|
264
|
+
// payload.strategy (often empty for distilled/sybil assets). Hard char ceiling.
|
|
265
|
+
// ---------------------------------------------------------------------------
|
|
266
|
+
// A candidate is "hollow" when it has neither a title nor a summary: there is
|
|
267
|
+
// nothing actionable to render (a dangling "Gene "": " helps no one). Hollow
|
|
268
|
+
// candidates are excluded from BOTH the injected text and the attribution log,
|
|
269
|
+
// so the log can never claim an asset was injected that never appeared in the
|
|
270
|
+
// hook context (Bugbot #183 low: log/inject must agree by construction).
|
|
271
|
+
function isRenderable(d) {
|
|
272
|
+
const title = (d && d.title ? String(d.title) : '').trim();
|
|
273
|
+
const summary = (d && d.summary ? String(d.summary) : '').trim();
|
|
274
|
+
return !!(title || summary);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
function buildInjectText(decided) {
|
|
278
|
+
const renderable = (decided || []).filter(isRenderable);
|
|
279
|
+
if (!renderable.length) return '';
|
|
280
|
+
const lines = ['[Evolver — relevant prior capability]'];
|
|
281
|
+
let anyPublished = false;
|
|
282
|
+
for (const d of renderable) {
|
|
283
|
+
const title = (d.title || '').toString().slice(0, 80);
|
|
284
|
+
const summary = (d.summary || '').toString().replace(/\s+/g, ' ').trim().slice(0, SUMMARY_CLIP);
|
|
285
|
+
const sim = d.similarity != null ? d.similarity.toFixed(2) : '?';
|
|
286
|
+
const idTag = d.asset_id ? `asset ${d.asset_id}` : 'local, unpublished';
|
|
287
|
+
if (d.asset_id) anyPublished = true;
|
|
288
|
+
lines.push(`- ${title ? `Gene "${title}"` : 'Gene'} (${idTag}, sim ${sim})${summary ? ': ' + summary : ''}`);
|
|
289
|
+
}
|
|
290
|
+
lines.push('A prior distilled approach may fit this task. Adapt it; verify before applying.');
|
|
291
|
+
if (anyPublished) lines.push('To reuse a published asset: `gep_reuse <asset_id>` (or `gep_recall`).');
|
|
292
|
+
const text = lines.join('\n');
|
|
293
|
+
return text.length > INJECT_CHAR_CEILING ? text.slice(0, INJECT_CHAR_CEILING) : text;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// ---------------------------------------------------------------------------
|
|
297
|
+
// Local reuse logging. Records WHICH assets were (would be) injected, keyed by
|
|
298
|
+
// a stable run_id derived from the session, so a later Stop hook can correlate
|
|
299
|
+
// "asset injected -> session outcome" LOCALLY. This is correlational/local
|
|
300
|
+
// only — it is NOT Hub credit and must not be promoted to one without sign-off.
|
|
301
|
+
// ---------------------------------------------------------------------------
|
|
302
|
+
function logInjections(decided, mode, runId, signalList) {
|
|
303
|
+
let logAssetCall;
|
|
304
|
+
try { ({ logAssetCall } = require('./assetCallLog')); } catch (_) { return; }
|
|
305
|
+
const action = mode === 'enforce' ? 'asset_inject' : 'asset_inject_shadow';
|
|
306
|
+
for (const d of decided) {
|
|
307
|
+
try {
|
|
308
|
+
logAssetCall({
|
|
309
|
+
run_id: runId,
|
|
310
|
+
action,
|
|
311
|
+
asset_id: d.asset_id || undefined,
|
|
312
|
+
asset_type: 'Gene',
|
|
313
|
+
source_node_id: d.source_node_id || undefined,
|
|
314
|
+
chain_id: d.chain_id || undefined,
|
|
315
|
+
score: d.similarity,
|
|
316
|
+
signals: signalList.slice(0, 8),
|
|
317
|
+
reason: d.origin === 'hub' ? 'hub_semantic_high_band' : 'local_gene_pattern_hit',
|
|
318
|
+
extra: { via: 'task_recall', attribution: 'correlational_local', origin: d.origin },
|
|
319
|
+
});
|
|
320
|
+
} catch (_) { /* logging is best-effort; never block injection */ }
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
// Entry point of the core. Returns:
|
|
326
|
+
// { inject: bool, text: string|null, decided: [], dropped: number, signals: [] }
|
|
327
|
+
// inject is true ONLY in enforce mode with >=1 decided asset. In shadow we log
|
|
328
|
+
// but return inject:false. Throwing is acceptable — the hook entrypoint wraps
|
|
329
|
+
// this in try/.catch -> finish({}) (fail-open).
|
|
330
|
+
// ---------------------------------------------------------------------------
|
|
331
|
+
async function recallForTask(opts) {
|
|
332
|
+
const o = opts || {};
|
|
333
|
+
const mode = o.mode || getMode();
|
|
334
|
+
if (mode === 'off') return { inject: false, text: null, decided: [], dropped: 0, signals: [] };
|
|
335
|
+
|
|
336
|
+
const signalList = buildSignalList(o.prompt);
|
|
337
|
+
if (!signalList.length) return { inject: false, text: null, decided: [], dropped: 0, signals: [] };
|
|
338
|
+
|
|
339
|
+
// Do LOCAL gene work (synchronous disk I/O via loadGenes + ranking) BEFORE
|
|
340
|
+
// the Hub await, so it runs while the full budget is available — never after
|
|
341
|
+
// the Hub search has consumed most of the watchdog window (Bugbot #183
|
|
342
|
+
// medium: post-await local work could overrun the watchdog and spuriously
|
|
343
|
+
// skip injection). After the Hub await, only in-memory merge/text/log remain.
|
|
344
|
+
const localRows = matchLocalGenes(signalList);
|
|
345
|
+
|
|
346
|
+
// Bound the Hub call by the time REMAINING until the entrypoint's absolute
|
|
347
|
+
// deadline (passed as deadlineMs, ms-since-epoch), minus a safety margin for
|
|
348
|
+
// the in-memory post-processing + finish(). If too little remains, skip the
|
|
349
|
+
// Hub call (local genes still apply). Falls back to the static timeoutMs when
|
|
350
|
+
// no deadline is supplied (e.g. unit tests / non-hook callers).
|
|
351
|
+
const POST_AWAIT_SAFETY_MS = 150;
|
|
352
|
+
let hubBudget = Number.isFinite(o.timeoutMs) && o.timeoutMs > 0 ? o.timeoutMs : 2000;
|
|
353
|
+
if (Number.isFinite(o.deadlineMs)) {
|
|
354
|
+
const remaining = o.deadlineMs - Date.now() - POST_AWAIT_SAFETY_MS;
|
|
355
|
+
hubBudget = Math.min(hubBudget, remaining);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Hub (search-only, credit-free), only if there's a usable budget left.
|
|
359
|
+
const hubRows = hubBudget >= 300 ? await searchHub(signalList, hubBudget) : [];
|
|
360
|
+
|
|
361
|
+
const seen = new Set();
|
|
362
|
+
const candidates = [];
|
|
363
|
+
let dropped = 0;
|
|
364
|
+
for (const r of [...hubRows, ...localRows]) {
|
|
365
|
+
const key = r.asset_id || `${r.origin}:${r.title}`;
|
|
366
|
+
if (key && seen.has(key)) { dropped++; continue; } // de-dup local vs hub
|
|
367
|
+
if (key) seen.add(key);
|
|
368
|
+
candidates.push(r);
|
|
369
|
+
}
|
|
370
|
+
candidates.sort((a, b) => (b.similarity || 0) - (a.similarity || 0));
|
|
371
|
+
|
|
372
|
+
const topN = candidates.slice(0, getMaxInject());
|
|
373
|
+
dropped += Math.max(0, candidates.length - topN.length);
|
|
374
|
+
|
|
375
|
+
// Filter out hollow candidates ONCE, so the injected text and the attribution
|
|
376
|
+
// log operate on the exact same set — the log can never claim an asset was
|
|
377
|
+
// injected that wasn't rendered into the hook context (Bugbot #183 low).
|
|
378
|
+
const decided = topN.filter(isRenderable);
|
|
379
|
+
dropped += topN.length - decided.length;
|
|
380
|
+
if (!decided.length) return { inject: false, text: null, decided: [], dropped, signals: signalList };
|
|
381
|
+
|
|
382
|
+
const text = buildInjectText(decided);
|
|
383
|
+
if (!text) return { inject: false, text: null, decided: [], dropped, signals: signalList };
|
|
384
|
+
|
|
385
|
+
const runId = o.runId || ('recall:' + (o.sessionId || 'unknown'));
|
|
386
|
+
logInjections(decided, mode, runId, signalList);
|
|
387
|
+
|
|
388
|
+
// SHADOW returns the computed text (for tests/inspection) but inject:false —
|
|
389
|
+
// the entrypoint only injects when inject is true (enforce).
|
|
390
|
+
return {
|
|
391
|
+
inject: mode === 'enforce',
|
|
392
|
+
text,
|
|
393
|
+
decided,
|
|
394
|
+
dropped,
|
|
395
|
+
signals: signalList,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
module.exports = {
|
|
400
|
+
recallForTask,
|
|
401
|
+
// exported for unit tests:
|
|
402
|
+
getMode,
|
|
403
|
+
getMinSim,
|
|
404
|
+
getMaxInject,
|
|
405
|
+
extractSignalsPure,
|
|
406
|
+
buildSignalList,
|
|
407
|
+
buildInjectText,
|
|
408
|
+
_internals: { searchHub, matchLocalGenes, logInjections },
|
|
409
|
+
};
|