@evomap/evolver 1.91.0 → 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/atp/hubClient.js +13 -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/sessionHandler.js +123 -53
- package/src/proxy/extensions/traceControl.js +123 -1
- package/src/proxy/index.js +57 -2
- package/src/proxy/inject.js +52 -1
- package/src/proxy/router/messages_route.js +6 -0
- package/src/proxy/server/routes.js +40 -62
- 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
|
@@ -1 +1,318 @@
|
|
|
1
|
-
const _0x22aab7=_0x3ab7;(function(_0x52abe3,_0x13c878){const _0x82e148=_0x3ab7,_0x15a455=_0x52abe3();while(!![]){try{const _0xd5a8b5=-parseInt(_0x82e148(0x201,'\x21\x33\x59\x50'))/(-0xcf2+-0x1a37*-0x1+-0xd44)+-parseInt(_0x82e148(0x136,'\x35\x74\x52\x57'))/(0x12cc+-0x1ccf+0xa05)+-parseInt(_0x82e148(0x1dd,'\x37\x79\x6d\x71'))/(-0xffe+0x4bf+0x5a1*0x2)*(-parseInt(_0x82e148(0x1e4,'\x26\x21\x43\x62'))/(0x2363*-0x1+0x14cb+0xe9c))+parseInt(_0x82e148(0x1e6,'\x44\x4d\x59\x46'))/(-0x218+-0x2*-0xfb+-0xd*-0x3)*(parseInt(_0x82e148(0x228,'\x4d\x21\x40\x31'))/(0xc83+-0x41b*-0x5+-0x2104))+-parseInt(_0x82e148(0x10b,'\x5a\x63\x48\x4e'))/(-0x1*-0x1471+0x1*0x2f+-0x1499*0x1)+-parseInt(_0x82e148(0x1f8,'\x58\x46\x6b\x6e'))/(-0xa7a+0xe1+-0x9a1*-0x1)+-parseInt(_0x82e148(0x21d,'\x59\x52\x32\x71'))/(0x1ab2+-0x233*-0x9+-0x2e74)*(-parseInt(_0x82e148(0x118,'\x4f\x21\x79\x6a'))/(-0x2c5*-0x2+0xd95+-0x1315));if(_0xd5a8b5===_0x13c878)break;else _0x15a455['push'](_0x15a455['shift']());}catch(_0x52a02c){_0x15a455['push'](_0x15a455['shift']());}}}(_0x11ab,-0x34811*0x1+0x2a2d4+0x2d9e7));const _0x25cedb=(function(){const _0x1c9023=_0x3ab7,_0x3994af={};_0x3994af[_0x1c9023(0x1aa,'\x75\x54\x39\x46')]=function(_0x1db008,_0x15b24d){return _0x1db008!==_0x15b24d;},_0x3994af[_0x1c9023(0xd2,'\x75\x54\x39\x46')]=_0x1c9023(0x148,'\x64\x61\x57\x57'),_0x3994af[_0x1c9023(0xf4,'\x4f\x6e\x4e\x6f')]=function(_0x45f422,_0x25fb25){return _0x45f422!==_0x25fb25;},_0x3994af['\x48\x50\x78\x7a\x6f']=_0x1c9023(0x133,'\x72\x54\x2a\x30');const _0x7db734=_0x3994af;let _0x15abfa=!![];return function(_0x31d67f,_0x456108){const _0x14778c=_0x1c9023,_0x31ee20={};_0x31ee20[_0x14778c(0x11f,'\x23\x43\x77\x79')]=_0x14778c(0x203,'\x38\x4b\x40\x4e')+_0x14778c(0x188,'\x23\x43\x77\x79');const _0x284074=_0x31ee20,_0x308250=_0x15abfa?function(){const _0x298822=_0x14778c;if(_0x7db734[_0x298822(0x102,'\x37\x79\x6d\x71')](_0x298822(0x14e,'\x47\x46\x54\x68'),_0x7db734[_0x298822(0xf0,'\x35\x74\x52\x57')])){const _0x13786f={};return _0x13786f[_0x298822(0x220,'\x6b\x6a\x4a\x23')]=_0x298822(0x216,'\x72\x54\x2a\x30')+_0x298822(0x173,'\x5a\x63\x48\x4e')+'\x67',_0x13786f[_0x298822(0x140,'\x37\x79\x6d\x71')]=_0x284074[_0x298822(0xdd,'\x76\x66\x2a\x61')],_0x13786f[_0x298822(0x142,'\x37\x79\x6d\x71')+'\x6d\x73']=_0x6d8ce7,_0x13786f[_0x298822(0x190,'\x47\x46\x54\x68')+'\x5f\x68\x61\x73\x68']=_0x59441f[_0x298822(0x205,'\x58\x46\x6b\x6e')]||null,_0x13786f;}else{if(_0x456108){if(_0x7db734[_0x298822(0xc8,'\x39\x76\x6c\x4c')](_0x7db734['\x48\x50\x78\x7a\x6f'],_0x7db734[_0x298822(0x22d,'\x62\x71\x57\x5a')]))_0x127845[_0x298822(0xc1,'\x65\x40\x31\x41')](_0x38ef59);else{const _0x42a9ba=_0x456108[_0x298822(0x1ef,'\x59\x52\x32\x71')](_0x31d67f,arguments);return _0x456108=null,_0x42a9ba;}}}}:function(){};return _0x15abfa=![],_0x308250;};}()),_0x493762=_0x25cedb(this,function(){const _0x44b37e=_0x3ab7,_0x19ddb3={};_0x19ddb3[_0x44b37e(0xdc,'\x6d\x41\x42\x21')]=_0x44b37e(0x132,'\x29\x66\x78\x4a')+'\x2b\x29\x2b\x24';const _0x1839c1=_0x19ddb3;return _0x493762[_0x44b37e(0x21c,'\x6d\x32\x4e\x4e')]()[_0x44b37e(0x141,'\x76\x66\x2a\x61')](_0x44b37e(0x1a9,'\x65\x40\x31\x41')+'\x2b\x29\x2b\x24')[_0x44b37e(0xf5,'\x75\x54\x39\x46')]()[_0x44b37e(0x1ff,'\x4d\x21\x40\x31')+_0x44b37e(0xe6,'\x37\x4c\x77\x4e')](_0x493762)[_0x44b37e(0xbf,'\x62\x71\x57\x5a')](_0x1839c1[_0x44b37e(0xb5,'\x37\x79\x6d\x71')]);});_0x493762();'use strict';const {envInt:_0x3f0910,envFloat:_0x59259f}=require(_0x22aab7(0x12f,'\x4f\x21\x79\x6a')+'\x67'),{fetchAssetById:_0x3bc734}=require(_0x22aab7(0x15e,'\x52\x33\x69\x67')+_0x22aab7(0x12e,'\x6b\x6a\x4a\x23')),{computeAssetId:_0x43cd25}=require(_0x22aab7(0xfc,'\x4e\x40\x4a\x59')+_0x22aab7(0xf8,'\x29\x66\x78\x4a')),{writeMemoryGraphEvent:_0x35168f}=require(_0x22aab7(0x1bf,'\x75\x54\x39\x46')+_0x22aab7(0x1d3,'\x72\x74\x6c\x73'));let _0x39cdc4=[];const _0x13bbeb=new Set();let _0x4239b0=![],_0x5cfa8e=null;const _0x24db94={};_0x24db94['\x6f\x6b']=0x0,_0x24db94[_0x22aab7(0xd3,'\x29\x66\x78\x4a')]=0x0,_0x24db94[_0x22aab7(0x147,'\x47\x46\x54\x68')]=0x0,_0x24db94[_0x22aab7(0x1b9,'\x67\x45\x4f\x46')]=0x0;let _0x62d4c8=_0x24db94;const _0x3475ed=[0x3d3*-0x1+0xfd9+-0x1*-0x782,0x1b97+-0x36a9+0x55aa,-0x580*-0x2a+-0x1829d+0x3*0x81ff];function _0x315886(){const _0x357991=_0x22aab7,_0x6161c8={'\x49\x56\x72\x79\x46':function(_0x7de6e,_0x330f6f){return _0x7de6e(_0x330f6f);}};return _0x6161c8[_0x357991(0xf9,'\x59\x52\x32\x71')](String,process.env.EVOLVE_RECALL_VERIFY||'\x30')==='\x31';}function _0x43b319(){const _0x531bc9=_0x22aab7,_0x2d0a17={'\x67\x62\x68\x4b\x72':function(_0x2c1828,_0x231638,_0x11eeb8){return _0x2c1828(_0x231638,_0x11eeb8);},'\x49\x41\x6d\x69\x54':_0x531bc9(0x1e5,'\x21\x33\x59\x50')+_0x531bc9(0x187,'\x38\x4b\x40\x4e')+'\x52\x49\x46\x59\x5f\x53\x41\x4d'+'\x50\x4c\x45\x5f\x52\x41\x54\x45','\x4c\x66\x67\x7a\x6e':function(_0x33565a,_0x343aae){return _0x33565a<_0x343aae;},'\x71\x78\x6a\x55\x70':function(_0x4f6e6e,_0x15e2a5){return _0x4f6e6e>_0x15e2a5;}},_0x47ee30=_0x2d0a17['\x67\x62\x68\x4b\x72'](_0x59259f,_0x2d0a17[_0x531bc9(0xc7,'\x79\x5e\x62\x38')],-0xb*0x149+-0x211b+-0x5*-0x973);if(!Number[_0x531bc9(0x1df,'\x4d\x21\x40\x31')](_0x47ee30)||_0x2d0a17[_0x531bc9(0x1de,'\x43\x24\x5d\x6e')](_0x47ee30,-0x8f+-0x1b2a+-0x2f*-0x97)||_0x2d0a17[_0x531bc9(0x22e,'\x36\x57\x4d\x6b')](_0x47ee30,0x18da+-0x1e1*-0xb+0x4*-0xb61))return 0x199c+-0x176+0x1*-0x1825;return _0x47ee30;}function _0x5c8882(){const _0x34bc83=_0x22aab7,_0xd5909c={'\x66\x77\x71\x45\x4b':function(_0x1deb35,_0x113eaf,_0x4ab985){return _0x1deb35(_0x113eaf,_0x4ab985);}};return _0xd5909c[_0x34bc83(0x13e,'\x39\x76\x6c\x4c')](_0x3f0910,_0x34bc83(0x1c9,'\x43\x24\x5d\x6e')+'\x45\x43\x41\x4c\x4c\x5f\x56\x45'+_0x34bc83(0x105,'\x79\x5e\x62\x38')+_0x34bc83(0x121,'\x43\x24\x5d\x6e'),-0x1c57*-0x1+-0x3*-0x107+-0x4*0x79b);}function _0x3ab7(_0x52988d,_0x2a5640){_0x52988d=_0x52988d-(0xc89+-0x1f44+0x136c);const _0x3fbf01=_0x11ab();let _0xb2166a=_0x3fbf01[_0x52988d];if(_0x3ab7['\x41\x4e\x6b\x61\x4c\x61']===undefined){var _0x251d83=function(_0x3f2edb){const _0x58fa0c='\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 _0x50f175='',_0x4776f0='',_0x45224d=_0x50f175+_0x251d83,_0x204ede=(''+function(){return 0x4*-0x626+0x9*0x101+0x1*0xf8f;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xc*0x54+0x2*-0x9c7+0x177f);for(let _0x227a19=0x1b16+0x1a4d*-0x1+-0x3*0x43,_0x402a35,_0x5b83cd,_0x966bd6=0x1c8a*-0x1+-0x21de+0x4*0xf9a;_0x5b83cd=_0x3f2edb['\x63\x68\x61\x72\x41\x74'](_0x966bd6++);~_0x5b83cd&&(_0x402a35=_0x227a19%(0x111b+-0xaa+-0x106d)?_0x402a35*(-0x1ea2+-0x7*-0xd6+-0x1*-0x1908)+_0x5b83cd:_0x5b83cd,_0x227a19++%(0xb5*0x17+0x26b4+-0x36f3))?_0x50f175+=_0x204ede||_0x45224d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x966bd6+(0x1*0x1a17+-0x28d*0x7+-0x832))-(0x1ca3*0x1+-0x13ec+-0x8ad)!==-0xb9*0x1f+-0x1b9a*0x1+-0x10ab*-0x3?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x2070+0x1*-0x1baf+0x2*0x1e8f&_0x402a35>>(-(0x1c*0x3b+-0x35d*0x5+0xa5f)*_0x227a19&0x23*-0xe+-0x181d+0x8af*0x3)):_0x227a19:-0x3dd+0xe*0xc1+-0x6b1){_0x5b83cd=_0x58fa0c['\x69\x6e\x64\x65\x78\x4f\x66'](_0x5b83cd);}for(let _0x18d561=-0x21d3+-0x7c9*0x5+-0xc2*-0x60,_0x2310ac=_0x50f175['\x6c\x65\x6e\x67\x74\x68'];_0x18d561<_0x2310ac;_0x18d561++){_0x4776f0+='\x25'+('\x30\x30'+_0x50f175['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x18d561)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x1*0x190a+-0x1*-0x431+-0x1d2b))['\x73\x6c\x69\x63\x65'](-(-0x1*-0xdee+0x12f7*-0x1+0x50b));}return decodeURIComponent(_0x4776f0);};const _0xc6b00a=function(_0x355d27,_0xcca946){let _0x5e0b7e=[],_0x18fafc=-0xb23*0x1+0xc77*0x3+-0x1a42,_0xf943c3,_0x1a0f90='';_0x355d27=_0x251d83(_0x355d27);let _0x12a486;for(_0x12a486=0x21ec+0x1a7b*-0x1+0xf*-0x7f;_0x12a486<0x2*0x11b7+-0x2320+0xb2*0x1;_0x12a486++){_0x5e0b7e[_0x12a486]=_0x12a486;}for(_0x12a486=-0x160c+-0x3*-0xac1+-0xa37;_0x12a486<-0x10e3+-0x16a*0x1b+0x3811;_0x12a486++){_0x18fafc=(_0x18fafc+_0x5e0b7e[_0x12a486]+_0xcca946['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x12a486%_0xcca946['\x6c\x65\x6e\x67\x74\x68']))%(-0x262d+-0x181*-0x1+0x25ac),_0xf943c3=_0x5e0b7e[_0x12a486],_0x5e0b7e[_0x12a486]=_0x5e0b7e[_0x18fafc],_0x5e0b7e[_0x18fafc]=_0xf943c3;}_0x12a486=0x1c27+0xcd4+-0x28fb,_0x18fafc=0x4fa+-0x55a+0x60;for(let _0x41520b=-0xd*-0x27b+0x2b*0x77+-0x343c;_0x41520b<_0x355d27['\x6c\x65\x6e\x67\x74\x68'];_0x41520b++){_0x12a486=(_0x12a486+(-0x2176+0x2211+-0x9a))%(-0x2350+0xf6c+0xe*0x17e),_0x18fafc=(_0x18fafc+_0x5e0b7e[_0x12a486])%(0x20b*0x8+0x27c*0x8+-0xb8*0x31),_0xf943c3=_0x5e0b7e[_0x12a486],_0x5e0b7e[_0x12a486]=_0x5e0b7e[_0x18fafc],_0x5e0b7e[_0x18fafc]=_0xf943c3,_0x1a0f90+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x355d27['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x41520b)^_0x5e0b7e[(_0x5e0b7e[_0x12a486]+_0x5e0b7e[_0x18fafc])%(-0x25a1+0xb*0x2a2+-0x9ab*-0x1)]);}return _0x1a0f90;};_0x3ab7['\x7a\x61\x4e\x70\x48\x4c']=_0xc6b00a,_0x3ab7['\x4d\x64\x47\x70\x72\x78']={},_0x3ab7['\x41\x4e\x6b\x61\x4c\x61']=!![];}const _0x134548=_0x3fbf01[-0x72f+0x103b*0x1+-0xc*0xc1],_0x581b77=_0x52988d+_0x134548,_0x137907=_0x3ab7['\x4d\x64\x47\x70\x72\x78'][_0x581b77];if(!_0x137907){if(_0x3ab7['\x47\x57\x48\x58\x46\x76']===undefined){const _0x1d0ae4=function(_0x4fb82c){this['\x6f\x5a\x57\x63\x4f\x61']=_0x4fb82c,this['\x42\x73\x4b\x76\x53\x4e']=[-0x1290+-0xf01+-0x2192*-0x1,-0xfec+-0x175*-0x6+0x72e,-0x19de+-0x1b26+-0x34*-0x105],this['\x76\x52\x73\x53\x68\x4b']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x71\x7a\x58\x4a\x74\x67']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x73\x50\x47\x48\x4c\x44']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x1d0ae4['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x41\x74\x69\x6c\x74\x55']=function(){const _0x3f1ab=new RegExp(this['\x71\x7a\x58\x4a\x74\x67']+this['\x73\x50\x47\x48\x4c\x44']),_0x308f64=_0x3f1ab['\x74\x65\x73\x74'](this['\x76\x52\x73\x53\x68\x4b']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x42\x73\x4b\x76\x53\x4e'][-0xca*-0x1+0x242a+-0x24f3]:--this['\x42\x73\x4b\x76\x53\x4e'][0xb87+-0x15e8*-0x1+-0xb25*0x3];return this['\x66\x56\x48\x4c\x55\x77'](_0x308f64);},_0x1d0ae4['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x66\x56\x48\x4c\x55\x77']=function(_0x310228){if(!Boolean(~_0x310228))return _0x310228;return this['\x76\x67\x68\x47\x51\x65'](this['\x6f\x5a\x57\x63\x4f\x61']);},_0x1d0ae4['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x76\x67\x68\x47\x51\x65']=function(_0x58d71e){for(let _0x8dd64c=-0x20fc+0x2*0xd2d+-0x236*-0x3,_0x45f4ef=this['\x42\x73\x4b\x76\x53\x4e']['\x6c\x65\x6e\x67\x74\x68'];_0x8dd64c<_0x45f4ef;_0x8dd64c++){this['\x42\x73\x4b\x76\x53\x4e']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x45f4ef=this['\x42\x73\x4b\x76\x53\x4e']['\x6c\x65\x6e\x67\x74\x68'];}return _0x58d71e(this['\x42\x73\x4b\x76\x53\x4e'][0x1f+-0x1a24*0x1+0x1a05*0x1]);},(''+function(){return-0x215f+0x6de+0x1a81;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x13df+-0x167d+0x2a5d)&&new _0x1d0ae4(_0x3ab7)['\x41\x74\x69\x6c\x74\x55'](),_0x3ab7['\x47\x57\x48\x58\x46\x76']=!![];}_0xb2166a=_0x3ab7['\x7a\x61\x4e\x70\x48\x4c'](_0xb2166a,_0x2a5640),_0x3ab7['\x4d\x64\x47\x70\x72\x78'][_0x581b77]=_0xb2166a;}else _0xb2166a=_0x137907;return _0xb2166a;}function _0x1895f2(){const _0x1c2c94=_0x22aab7,_0x446898={};_0x446898[_0x1c2c94(0x10d,'\x44\x75\x4f\x40')]=_0x1c2c94(0x16b,'\x75\x6a\x47\x44')+_0x1c2c94(0x237,'\x4a\x71\x75\x59')+_0x1c2c94(0x156,'\x64\x61\x57\x57')+_0x1c2c94(0x10e,'\x67\x45\x4f\x46');const _0x42f70c=_0x446898;return _0x3f0910(_0x42f70c[_0x1c2c94(0x17b,'\x21\x33\x59\x50')],-0x3e*0x6a+0x2f*-0x46+0x3a0e);}function _0x530975(){const _0xe6f918=_0x22aab7,_0x5ef726={'\x56\x71\x61\x64\x5a':function(_0x4d77fa,_0xebc057,_0x3ff15f){return _0x4d77fa(_0xebc057,_0x3ff15f);}};return _0x5ef726[_0xe6f918(0x14f,'\x4d\x21\x40\x31')](_0x3f0910,_0xe6f918(0x1fc,'\x38\x4b\x40\x4e')+_0xe6f918(0x160,'\x4d\x56\x5b\x2a')+_0xe6f918(0xb9,'\x44\x4d\x59\x46')+_0xe6f918(0x1cf,'\x72\x74\x6c\x73')+_0xe6f918(0x15d,'\x2a\x68\x54\x56'),0x1967+0x1*-0x1513+0xf34);}function _0x86304(){const _0x778177=_0x22aab7,_0x59df58={'\x6e\x78\x49\x4d\x47':function(_0x3eb2a9,_0x4a62d9,_0x109931){return _0x3eb2a9(_0x4a62d9,_0x109931);},'\x4c\x69\x6a\x66\x51':_0x778177(0x168,'\x72\x74\x6c\x73')+_0x778177(0x1af,'\x4f\x6e\x4e\x6f')+_0x778177(0x12d,'\x52\x33\x69\x67')+'\x45\x4d\x50\x54\x53'};return _0x59df58[_0x778177(0x14a,'\x65\x40\x31\x41')](_0x3f0910,_0x59df58[_0x778177(0xe7,'\x4f\x6e\x4e\x6f')],-0x1d*0x3b+-0x21f1*0x1+0x28a3);}function _0x2ff01e(){const _0x23368b=_0x22aab7,_0x4b6f8a={'\x45\x56\x62\x54\x78':function(_0x2a8d66,_0x536775,_0x2d1621){return _0x2a8d66(_0x536775,_0x2d1621);}};return _0x4b6f8a['\x45\x56\x62\x54\x78'](_0x3f0910,_0x23368b(0x13f,'\x6c\x51\x57\x46')+_0x23368b(0x1fd,'\x72\x74\x6c\x73')+_0x23368b(0x1ce,'\x52\x33\x69\x67')+_0x23368b(0x208,'\x72\x54\x2a\x30')+'\x55\x54\x5f\x4d\x53',0x349f*-0x1+-0x7*-0x175+0x52*0xe6);}function _0x11ab(){const _0x323921=['\x69\x32\x42\x63\x4b\x66\x33\x64\x53\x43\x6f\x6e\x72\x38\x6f\x50','\x57\x36\x4e\x63\x4d\x30\x68\x64\x4e\x58\x75\x30','\x72\x6d\x6b\x76\x7a\x43\x6f\x4a\x57\x36\x57\x56','\x6f\x59\x38\x52\x66\x73\x57','\x41\x38\x6f\x45\x46\x6d\x6f\x4d\x57\x35\x78\x63\x54\x71\x37\x63\x55\x61','\x6e\x4d\x37\x63\x48\x74\x54\x44\x57\x4f\x66\x70\x44\x57','\x72\x58\x72\x41','\x6b\x63\x44\x52\x57\x37\x5a\x64\x51\x61','\x64\x32\x70\x63\x4e\x65\x66\x6b\x76\x31\x52\x64\x51\x61','\x65\x74\x4a\x63\x4b\x43\x6f\x51\x57\x50\x30','\x57\x52\x54\x47\x41\x58\x79\x77','\x6b\x38\x6b\x52\x57\x50\x71\x7a','\x57\x51\x4f\x79\x57\x52\x69\x44\x57\x37\x43\x4f\x44\x53\x6b\x2f','\x76\x73\x37\x64\x4c\x57\x34\x6e\x65\x48\x74\x63\x50\x71','\x74\x43\x6b\x43\x57\x4f\x4e\x63\x56\x66\x38','\x68\x53\x6f\x35\x73\x57','\x57\x34\x61\x71\x57\x52\x78\x63\x55\x6d\x6f\x6e','\x57\x50\x37\x63\x51\x71\x52\x64\x54\x75\x57','\x61\x48\x50\x49','\x57\x50\x5a\x63\x49\x38\x6f\x6c\x57\x52\x70\x63\x4f\x43\x6f\x56\x57\x4f\x37\x63\x49\x47','\x57\x51\x34\x44\x6c\x33\x4b\x69\x57\x37\x5a\x63\x52\x6d\x6b\x32','\x6c\x43\x6f\x51\x6c\x61','\x57\x50\x76\x73\x57\x37\x78\x64\x51\x38\x6b\x69\x57\x50\x4c\x4c\x57\x4f\x33\x63\x48\x43\x6b\x63\x57\x50\x70\x63\x4b\x61','\x6b\x76\x4e\x63\x50\x5a\x4e\x63\x52\x57','\x43\x32\x38\x67\x57\x52\x64\x64\x51\x71','\x57\x52\x69\x65\x69\x65\x6d\x51','\x57\x37\x4f\x59\x70\x4d\x31\x56\x57\x51\x56\x63\x55\x43\x6b\x79','\x57\x35\x79\x37\x6d\x4d\x35\x52','\x63\x67\x4a\x63\x4a\x75\x76\x61','\x57\x4f\x6c\x63\x4c\x38\x6f\x6a\x6b\x47\x64\x64\x56\x71\x4b','\x57\x34\x56\x63\x53\x61\x7a\x35\x57\x50\x4f','\x65\x57\x72\x78\x57\x36\x33\x64\x53\x57','\x63\x58\x66\x43\x77\x38\x6f\x76\x68\x78\x5a\x64\x4a\x4d\x72\x66\x76\x38\x6b\x62','\x69\x4d\x37\x63\x4e\x4c\x6e\x6f','\x57\x4f\x70\x63\x4d\x43\x6f\x64\x6f\x58\x5a\x64\x54\x61\x48\x47','\x63\x53\x6f\x42\x57\x50\x74\x63\x47\x75\x42\x64\x54\x38\x6f\x75\x57\x37\x43','\x6a\x38\x6b\x31\x44\x6d\x6b\x6b\x57\x34\x69\x71\x72\x76\x79','\x42\x64\x69\x50\x57\x35\x75\x61\x67\x53\x6f\x38\x57\x50\x6d','\x43\x59\x71\x41\x57\x34\x34\x75\x65\x53\x6f\x4d','\x61\x59\x4c\x4b\x57\x51\x42\x64\x54\x71','\x71\x73\x31\x65\x69\x43\x6b\x49\x73\x71\x42\x63\x55\x6d\x6f\x71\x74\x47','\x42\x67\x53\x4f\x6e\x38\x6b\x36\x44\x4b\x52\x64\x49\x61','\x63\x43\x6f\x77\x78\x4c\x66\x77','\x77\x63\x37\x63\x4b\x65\x7a\x2f','\x70\x4e\x56\x63\x4b\x77\x37\x64\x4b\x61','\x57\x36\x68\x64\x4e\x43\x6f\x39\x6b\x68\x61\x38\x68\x43\x6b\x67','\x57\x4f\x54\x75\x67\x43\x6b\x69\x43\x53\x6b\x63\x57\x36\x6a\x53','\x57\x4f\x66\x54\x63\x6d\x6b\x66\x45\x53\x6b\x42\x57\x36\x38','\x79\x47\x6e\x66\x45\x58\x53','\x69\x53\x6b\x38\x57\x51\x31\x6f\x57\x37\x6d','\x57\x4f\x65\x4f\x57\x51\x33\x64\x50\x49\x46\x64\x51\x64\x62\x74','\x79\x30\x34\x57\x57\x4f\x74\x64\x47\x65\x5a\x63\x4b\x38\x6f\x42','\x57\x37\x4b\x4a\x6e\x4e\x4b','\x65\x57\x71\x76\x65\x47\x35\x65\x6b\x58\x75','\x57\x34\x6a\x4f\x57\x52\x34\x32\x57\x37\x69\x52\x65\x43\x6b\x41','\x43\x68\x75\x71\x57\x52\x4a\x64\x54\x57','\x46\x61\x61\x54\x57\x34\x71\x38','\x79\x43\x6f\x49\x6a\x53\x6b\x31\x57\x36\x4e\x64\x4e\x77\x75\x64','\x72\x38\x6b\x6e\x57\x52\x2f\x63\x4a\x77\x65','\x42\x4d\x71\x37\x57\x50\x5a\x64\x55\x57','\x57\x52\x72\x45\x78\x53\x6f\x41\x57\x50\x2f\x64\x48\x63\x37\x63\x53\x71','\x77\x53\x6f\x48\x73\x53\x6f\x43\x57\x37\x70\x63\x51\x5a\x70\x63\x4d\x71','\x6e\x6d\x6b\x62\x57\x4f\x38\x72\x65\x65\x4a\x63\x4b\x47','\x64\x6d\x6f\x56\x74\x66\x48\x4f\x57\x37\x2f\x63\x49\x78\x4b','\x57\x51\x53\x31\x67\x38\x6f\x51\x57\x4f\x58\x6c\x46\x4b\x57','\x6e\x6d\x6b\x4e\x79\x43\x6f\x4d\x57\x52\x78\x63\x4e\x4c\x4b\x72\x68\x71\x56\x63\x4a\x31\x53','\x57\x36\x4a\x64\x52\x43\x6f\x76\x68\x4b\x47','\x57\x51\x52\x64\x56\x67\x58\x70\x43\x61\x69\x4d\x45\x57','\x57\x37\x34\x54\x57\x4f\x5a\x64\x51\x31\x74\x63\x4c\x38\x6b\x50\x57\x51\x65','\x57\x36\x61\x49\x57\x51\x33\x64\x4e\x67\x69','\x77\x4c\x65\x2b\x6f\x53\x6b\x42','\x6c\x4e\x33\x63\x4e\x47\x30\x54','\x57\x37\x6d\x32\x69\x76\x71\x49\x57\x37\x70\x63\x4e\x47','\x57\x36\x54\x46\x57\x4f\x75\x46\x57\x34\x4f\x6e\x6e\x38\x6b\x78','\x43\x4c\x52\x63\x55\x30\x78\x64\x56\x53\x6f\x65\x75\x57','\x6c\x33\x4a\x63\x4e\x5a\x61\x43','\x64\x38\x6b\x5a\x57\x52\x75\x65\x70\x71','\x57\x52\x62\x56\x7a\x62\x6d\x50\x57\x51\x75','\x68\x43\x6f\x50\x74\x66\x75','\x57\x51\x71\x74\x57\x4f\x74\x64\x4b\x72\x2f\x64\x53\x72\x72\x30','\x65\x32\x4e\x63\x49\x61','\x57\x51\x46\x64\x51\x4b\x7a\x64\x41\x47\x34','\x57\x50\x74\x63\x4b\x53\x6f\x72\x6c\x58\x78\x64\x52\x71\x48\x47','\x64\x6d\x6f\x53\x74\x31\x66\x4c','\x57\x52\x75\x6c\x63\x67\x6d\x6a\x57\x37\x53','\x6b\x6d\x6b\x4b\x45\x6d\x6b\x42\x57\x36\x4f\x6d\x77\x65\x69','\x64\x53\x6f\x2b\x57\x37\x74\x63\x4d\x38\x6f\x65\x6f\x67\x39\x6b','\x6b\x6d\x6b\x7a\x57\x52\x53','\x6e\x64\x44\x54\x57\x51\x52\x63\x4f\x43\x6b\x2f\x41\x49\x61','\x57\x37\x53\x38\x6a\x4e\x6e\x4e\x57\x52\x52\x63\x4c\x6d\x6b\x64','\x57\x34\x61\x71\x57\x52\x78\x63\x55\x6d\x6f\x6e\x57\x37\x76\x65\x57\x4f\x47','\x57\x51\x35\x2f\x77\x43\x6f\x32\x57\x50\x37\x64\x47\x5a\x6c\x63\x53\x57','\x44\x62\x4a\x64\x56\x76\x6c\x64\x55\x38\x6f\x73\x67\x53\x6b\x59\x67\x72\x31\x37\x57\x36\x4e\x64\x48\x61','\x43\x57\x35\x75\x43\x71\x57\x59\x42\x47','\x6f\x78\x42\x63\x50\x72\x35\x71','\x57\x50\x65\x68\x6c\x48\x75\x37','\x57\x34\x4b\x63\x57\x4f\x74\x64\x4c\x77\x70\x63\x4f\x53\x6b\x45\x57\x52\x79','\x43\x4b\x71\x57\x57\x4f\x74\x64\x4b\x30\x74\x63\x48\x6d\x6f\x78','\x6a\x66\x70\x63\x55\x57\x70\x63\x50\x43\x6b\x70','\x57\x51\x64\x64\x4f\x65\x72\x76\x41\x48\x4b\x4e\x46\x71','\x57\x36\x56\x63\x4f\x75\x33\x64\x48\x71\x4b\x33\x57\x52\x4e\x64\x51\x71','\x57\x50\x57\x2f\x57\x37\x39\x49\x57\x51\x54\x2b\x62\x53\x6b\x31\x74\x6d\x6b\x37\x45\x38\x6f\x77','\x66\x58\x34\x39','\x57\x37\x53\x4d\x57\x51\x74\x64\x54\x31\x6c\x63\x55\x6d\x6b\x47\x57\x50\x43','\x63\x47\x43\x32\x68\x57','\x6a\x66\x70\x63\x55\x57\x2f\x63\x54\x53\x6b\x2b\x72\x43\x6b\x55','\x79\x59\x4c\x74\x45\x63\x34','\x68\x73\x66\x66\x57\x50\x6c\x63\x52\x61','\x57\x35\x4a\x63\x54\x4e\x2f\x64\x55\x64\x6d\x78\x57\x50\x33\x64\x4b\x47','\x6e\x30\x78\x63\x51\x72\x4e\x63\x52\x43\x6b\x70','\x57\x37\x66\x48\x57\x51\x53\x47\x57\x37\x71','\x57\x50\x4c\x35\x64\x53\x6b\x69','\x44\x57\x65\x55\x57\x36\x71\x77','\x57\x4f\x4f\x75\x63\x47\x43\x51','\x63\x47\x37\x63\x4f\x6d\x6f\x66\x57\x52\x38','\x57\x37\x79\x43\x57\x50\x78\x63\x54\x6d\x6b\x65\x57\x35\x74\x63\x4c\x63\x43','\x6f\x32\x68\x63\x48\x59\x7a\x4e\x57\x50\x62\x79\x45\x47','\x63\x4a\x50\x49\x57\x51\x5a\x64\x51\x75\x4c\x77\x6d\x57','\x68\x38\x6f\x5a\x73\x4c\x6e\x34\x57\x35\x74\x63\x4b\x4e\x71','\x63\x43\x6b\x4b\x57\x50\x75\x38\x63\x71','\x6d\x63\x54\x47\x57\x51\x4a\x63\x4c\x38\x6b\x2f\x41\x73\x57','\x57\x35\x70\x64\x51\x53\x6f\x61\x63\x47','\x57\x36\x4e\x63\x4b\x76\x78\x64\x47\x48\x34\x55\x57\x51\x52\x64\x54\x61','\x67\x59\x50\x55\x57\x52\x78\x63\x4f\x61','\x69\x43\x6b\x74\x57\x52\x48\x55\x57\x35\x4a\x64\x49\x53\x6b\x45\x6f\x61','\x6d\x61\x7a\x76\x57\x36\x4a\x64\x55\x47','\x57\x4f\x75\x62\x65\x57\x53\x56\x57\x51\x6d','\x65\x4a\x58\x46\x57\x36\x46\x64\x47\x67\x7a\x32\x74\x61','\x57\x35\x75\x6d\x57\x50\x78\x63\x51\x43\x6f\x6c\x57\x34\x6e\x64\x57\x4f\x53','\x76\x43\x6b\x53\x63\x47\x48\x65\x57\x37\x68\x63\x50\x68\x57\x33\x6c\x61','\x45\x78\x44\x35\x6f\x6d\x6f\x49','\x79\x43\x6b\x78\x66\x6d\x6f\x6c\x57\x51\x4f\x64\x57\x36\x56\x63\x4c\x61','\x65\x76\x4a\x63\x4e\x47\x65\x4c\x43\x6d\x6f\x33','\x41\x47\x47\x32\x57\x35\x75\x76\x61\x6d\x6f\x32\x57\x50\x57','\x67\x5a\x44\x7a\x57\x35\x6c\x64\x4c\x61','\x70\x43\x6b\x35\x79\x38\x6b\x71\x57\x35\x47\x70\x72\x31\x47','\x69\x76\x2f\x63\x4a\x58\x65\x56\x41\x43\x6f\x75\x77\x57','\x42\x43\x6b\x6e\x66\x6d\x6f\x72\x57\x51\x71\x64','\x6b\x53\x6b\x78\x57\x52\x48\x68\x57\x35\x46\x64\x4d\x53\x6b\x74\x6e\x71','\x6b\x57\x66\x48\x57\x4f\x5a\x63\x4a\x47','\x57\x37\x74\x63\x56\x48\x57\x74\x6b\x76\x38\x6c\x44\x57\x46\x63\x4c\x47\x34\x70','\x6c\x38\x6b\x68\x45\x53\x6b\x67\x57\x35\x30','\x57\x37\x75\x7a\x57\x50\x5a\x63\x48\x38\x6f\x64','\x76\x38\x6b\x61\x46\x38\x6f\x49\x57\x36\x34\x59\x42\x66\x47','\x6b\x76\x34\x44\x46\x53\x6b\x76','\x71\x53\x6f\x39\x44\x38\x6f\x35\x57\x34\x34','\x63\x57\x38\x35\x6c\x48\x61','\x6b\x32\x39\x55\x57\x4f\x72\x46\x71\x6d\x6b\x50\x57\x4f\x4f\x75\x57\x52\x4b\x6c\x57\x50\x50\x63','\x69\x4a\x76\x4f\x57\x50\x42\x63\x55\x61','\x57\x52\x4b\x63\x57\x52\x75\x44\x57\x34\x34\x73\x43\x53\x6b\x30','\x57\x36\x61\x47\x65\x4d\x39\x58\x57\x51\x2f\x63\x4e\x57','\x6b\x32\x52\x63\x4a\x76\x56\x64\x50\x38\x6f\x6a','\x72\x4e\x34\x68\x57\x52\x4e\x63\x49\x76\x6d\x46\x71\x43\x6f\x4e\x45\x57\x61','\x57\x51\x33\x63\x53\x43\x6f\x36\x57\x50\x4f','\x57\x50\x37\x63\x50\x43\x6f\x64\x68\x47\x79','\x66\x4b\x70\x63\x54\x71\x6a\x30\x57\x51\x54\x38\x76\x47','\x72\x67\x79\x43\x57\x52\x4a\x64\x53\x33\x37\x63\x4a\x43\x6f\x47','\x57\x36\x72\x64\x57\x52\x6d\x47\x57\x37\x61','\x74\x43\x6b\x4d\x68\x38\x6f\x77\x57\x4f\x38','\x57\x51\x69\x36\x68\x53\x6f\x36\x57\x4f\x44\x44\x79\x4b\x6d','\x45\x76\x53\x4b\x68\x53\x6b\x51\x42\x74\x5a\x63\x54\x71','\x57\x51\x4e\x63\x56\x43\x6f\x4f\x57\x50\x70\x63\x48\x6d\x6f\x64\x57\x52\x64\x63\x51\x47','\x63\x49\x52\x63\x54\x38\x6f\x44\x57\x52\x61\x77\x78\x49\x34','\x76\x43\x6f\x76\x6f\x53\x6b\x38\x57\x36\x79','\x57\x34\x68\x64\x4d\x6d\x6f\x42\x61\x4d\x43','\x6e\x67\x42\x63\x48\x66\x6c\x64\x53\x53\x6f\x6e\x75\x71','\x57\x34\x6c\x63\x4d\x61\x31\x36\x57\x4f\x71\x52\x57\x36\x43\x69','\x66\x75\x42\x63\x50\x77\x78\x64\x4a\x6d\x6f\x4f\x42\x6d\x6f\x65','\x57\x52\x64\x63\x55\x38\x6f\x6d\x57\x50\x42\x63\x47\x38\x6f\x7a\x57\x51\x5a\x63\x51\x47','\x57\x35\x50\x77\x57\x51\x75\x34','\x65\x49\x6a\x4d\x57\x51\x57','\x46\x53\x6f\x65\x79\x6d\x6f\x54\x57\x37\x37\x63\x4d\x71\x5a\x63\x54\x71','\x57\x36\x39\x65\x57\x51\x4b\x51\x57\x35\x65','\x45\x43\x6f\x69\x42\x53\x6f\x58\x57\x34\x6c\x63\x47\x47','\x57\x36\x48\x4d\x57\x4f\x61\x31\x57\x35\x38','\x64\x78\x70\x63\x4a\x65\x47','\x64\x67\x4a\x63\x4c\x74\x31\x71','\x57\x36\x4f\x58\x57\x52\x2f\x64\x55\x4c\x33\x63\x55\x6d\x6b\x56\x57\x4f\x53','\x57\x4f\x37\x64\x47\x75\x7a\x50\x76\x47','\x57\x51\x6c\x64\x56\x66\x4c\x64\x41\x4a\x71\x37\x45\x47','\x57\x34\x62\x4d\x57\x52\x30','\x44\x4c\x4c\x45\x6e\x38\x6f\x31','\x57\x52\x30\x76\x63\x43\x6f\x76\x57\x4f\x57','\x79\x43\x6b\x42\x66\x6d\x6f\x6c\x57\x51\x69\x6b\x57\x36\x4b','\x57\x51\x69\x61\x65\x4d\x6a\x4b\x69\x53\x6b\x47\x57\x4f\x71','\x76\x38\x6b\x79\x57\x50\x64\x63\x48\x30\x34','\x57\x52\x31\x2f\x77\x4a\x43\x4c','\x6d\x76\x4e\x63\x55\x61\x38','\x57\x4f\x56\x63\x4d\x6d\x6f\x4b\x57\x52\x68\x63\x4d\x57','\x69\x72\x54\x33\x57\x4f\x37\x63\x49\x57','\x61\x38\x6b\x7a\x57\x50\x57\x44\x68\x47','\x43\x62\x62\x52\x75\x57\x47','\x44\x43\x6b\x58\x57\x4f\x4a\x63\x4e\x4c\x47','\x79\x43\x6b\x78\x66\x6d\x6f\x6c\x57\x51\x4f\x64\x57\x36\x53','\x57\x52\x4a\x63\x55\x38\x6f\x35\x57\x50\x52\x63\x4d\x43\x6f\x56\x57\x52\x68\x63\x51\x57','\x57\x51\x4f\x75\x57\x51\x43\x6c\x57\x35\x75\x4a','\x75\x77\x43\x65\x65\x43\x6b\x35','\x73\x78\x31\x62\x6e\x38\x6f\x68\x57\x35\x53\x6a\x45\x57','\x69\x77\x78\x63\x4c\x59\x39\x75\x57\x50\x48\x70\x44\x57','\x57\x37\x71\x4d\x57\x50\x56\x63\x56\x6d\x6b\x42\x57\x35\x78\x63\x4b\x64\x43','\x45\x53\x6f\x59\x79\x53\x6f\x51\x57\x35\x6c\x63\x4d\x71\x37\x63\x53\x47','\x57\x4f\x42\x63\x4e\x43\x6f\x73\x6e\x61','\x41\x32\x65\x67\x61\x53\x6b\x68','\x6f\x43\x6f\x34\x57\x37\x70\x63\x50\x38\x6f\x2b','\x43\x33\x53\x52\x68\x38\x6b\x32','\x6f\x38\x6b\x31\x42\x38\x6b\x46\x57\x36\x53\x71\x73\x76\x75','\x57\x51\x2f\x64\x52\x4c\x35\x64\x43\x61\x47\x52\x71\x71','\x57\x52\x53\x4d\x64\x4b\x66\x65','\x7a\x75\x61\x4f\x66\x43\x6b\x35\x69\x74\x53','\x57\x36\x64\x64\x52\x38\x6f\x6b\x62\x30\x47','\x57\x37\x30\x51\x69\x33\x47','\x6e\x77\x64\x63\x4c\x4c\x6c\x64\x54\x38\x6f\x76\x75\x6d\x6f\x4b','\x77\x38\x6f\x73\x57\x36\x47','\x57\x50\x78\x63\x4f\x43\x6f\x47\x57\x50\x4e\x63\x56\x61','\x57\x52\x70\x63\x4d\x43\x6f\x54\x70\x57\x4b','\x57\x52\x75\x72\x62\x71','\x57\x36\x65\x5a\x57\x51\x37\x64\x48\x47','\x6b\x43\x6b\x64\x57\x52\x48\x62\x57\x35\x42\x64\x4c\x6d\x6b\x70','\x75\x43\x6f\x2f\x41\x53\x6f\x47\x57\x34\x64\x63\x48\x47\x56\x63\x49\x47','\x57\x51\x53\x6c\x62\x33\x43\x73\x57\x37\x30','\x79\x38\x6b\x6c\x65\x38\x6f\x42\x57\x51\x57\x61\x57\x36\x4b','\x6b\x5a\x44\x37\x57\x51\x78\x63\x50\x38\x6b\x48\x7a\x57','\x57\x4f\x31\x70\x45\x57\x34\x55','\x6f\x43\x6b\x49\x79\x38\x6b\x44\x57\x36\x69\x70\x78\x31\x71','\x64\x68\x6c\x63\x47\x73\x62\x56\x57\x50\x54\x79\x45\x61','\x57\x37\x42\x64\x50\x6d\x6f\x48\x6d\x4c\x6d','\x57\x51\x70\x63\x49\x43\x6f\x53\x57\x51\x78\x63\x47\x57','\x75\x6d\x6b\x42\x57\x51\x52\x63\x4b\x66\x4e\x64\x53\x43\x6f\x69\x57\x36\x4b','\x66\x53\x6b\x33\x41\x43\x6b\x6b\x57\x35\x79\x6a\x73\x75\x71','\x57\x36\x6c\x63\x4d\x74\x76\x42\x57\x51\x38','\x45\x6d\x6b\x32\x62\x53\x6f\x6c\x57\x51\x53','\x6a\x6d\x6f\x6b\x74\x75\x72\x41','\x57\x50\x68\x64\x47\x67\x31\x4c\x41\x47','\x57\x50\x39\x50\x43\x43\x6f\x39\x57\x4f\x38','\x57\x36\x47\x4c\x77\x6d\x6f\x67\x57\x4f\x78\x64\x4d\x73\x78\x63\x55\x61','\x71\x6d\x6f\x69\x57\x36\x37\x64\x54\x58\x69\x45\x57\x4f\x61','\x66\x63\x6a\x74\x57\x36\x64\x64\x49\x57','\x79\x6d\x6b\x46\x65\x38\x6f\x44\x57\x51\x30\x6f\x57\x37\x78\x63\x4c\x61','\x74\x43\x6f\x5a\x70\x38\x6b\x2f\x57\x37\x42\x64\x4c\x66\x79\x63','\x57\x51\x53\x79\x57\x51\x65\x77\x57\x35\x53\x48\x41\x61','\x41\x43\x6f\x2b\x69\x53\x6b\x69\x57\x37\x61','\x76\x6d\x6b\x62\x57\x4f\x52\x63\x4a\x61','\x57\x52\x35\x49\x57\x37\x37\x63\x51\x61\x6c\x64\x4b\x43\x6b\x56\x57\x50\x71\x71\x66\x61\x4f\x55','\x42\x76\x66\x31\x62\x38\x6f\x2b\x57\x37\x6d\x74\x75\x61','\x6e\x6d\x6b\x67\x57\x50\x61\x78\x64\x71\x78\x63\x47\x38\x6b\x43','\x69\x63\x6c\x63\x53\x38\x6f\x74\x57\x52\x30','\x57\x52\x75\x70\x62\x33\x71\x6a\x57\x37\x47','\x67\x43\x6f\x56\x57\x37\x6c\x63\x4c\x38\x6f\x70\x69\x78\x48\x79','\x42\x6d\x6f\x59\x6e\x6d\x6b\x4e\x57\x34\x47','\x72\x4e\x79\x65\x57\x52\x68\x63\x4a\x71\x50\x4c\x79\x43\x6f\x58\x45\x64\x4e\x63\x54\x49\x43','\x57\x50\x37\x63\x49\x43\x6f\x75\x6f\x72\x2f\x64\x54\x71\x47','\x57\x52\x75\x47\x6b\x63\x53\x79','\x57\x52\x33\x63\x4f\x38\x6f\x54\x63\x71','\x57\x52\x6d\x56\x65\x78\x39\x78','\x57\x34\x71\x72\x57\x51\x2f\x63\x55\x38\x6f\x61','\x78\x4d\x54\x61\x6f\x38\x6f\x76\x57\x37\x30\x56\x43\x71','\x67\x43\x6b\x45\x57\x51\x31\x72\x57\x35\x65','\x57\x52\x57\x75\x57\x50\x2f\x64\x4e\x62\x46\x64\x47\x58\x61','\x41\x74\x53\x59\x57\x35\x38\x64','\x57\x50\x6e\x55\x76\x43\x6f\x49\x57\x51\x71','\x57\x37\x30\x78\x57\x4f\x4e\x64\x47\x65\x30','\x6a\x6d\x6b\x35\x46\x38\x6b\x74\x57\x36\x79\x69\x74\x31\x4b','\x62\x38\x6f\x65\x6f\x53\x6b\x2f\x57\x52\x6d\x51\x75\x76\x68\x64\x51\x38\x6b\x36\x6b\x57','\x57\x37\x34\x37\x57\x52\x37\x64\x54\x31\x68\x63\x4b\x38\x6b\x5a\x57\x4f\x30','\x57\x52\x61\x61\x57\x50\x2f\x64\x4e\x62\x61','\x57\x52\x57\x6d\x57\x50\x56\x64\x49\x47\x5a\x64\x49\x59\x50\x48','\x57\x52\x52\x63\x51\x43\x6f\x2b\x57\x50\x5a\x63\x48\x71','\x57\x52\x30\x46\x57\x52\x43\x6e\x57\x35\x38\x34\x46\x53\x6b\x30','\x71\x53\x6b\x42\x77\x6d\x6f\x5a\x57\x37\x65\x52\x44\x4b\x57','\x74\x63\x75\x4f\x57\x36\x75\x58','\x57\x52\x43\x59\x57\x52\x69\x55\x57\x35\x43','\x57\x37\x68\x64\x4a\x53\x6f\x54\x6b\x77\x43\x48','\x77\x48\x70\x63\x54\x68\x39\x43\x44\x53\x6b\x53\x57\x52\x61','\x77\x4d\x6d\x41','\x77\x71\x33\x63\x56\x32\x6e\x66\x79\x6d\x6b\x47','\x57\x4f\x34\x77\x6a\x62\x65\x6a\x57\x51\x52\x63\x48\x67\x75','\x6a\x4e\x5a\x63\x4b\x66\x4e\x64\x50\x38\x6f\x2b\x73\x38\x6f\x50','\x67\x67\x34\x63\x43\x43\x6b\x6f\x72\x59\x56\x63\x56\x71','\x57\x50\x5a\x64\x50\x30\x54\x76\x44\x47','\x64\x75\x42\x63\x47\x58\x69\x36\x45\x6d\x6f\x32','\x57\x4f\x68\x63\x4a\x6d\x6f\x66\x70\x47','\x57\x36\x52\x64\x4a\x43\x6f\x69\x6c\x4d\x43','\x63\x64\x72\x48','\x57\x4f\x65\x4f\x57\x51\x33\x64\x50\x49\x46\x64\x52\x59\x66\x74','\x64\x65\x37\x63\x47\x47','\x67\x6d\x6f\x41\x6a\x6d\x6f\x4b\x57\x36\x57\x53\x46\x4b\x69','\x61\x43\x6f\x35\x75\x76\x50\x4f\x57\x34\x47','\x57\x35\x61\x55\x57\x4f\x2f\x63\x56\x6d\x6f\x33','\x6a\x6d\x6f\x77\x74\x38\x6b\x77\x57\x36\x48\x65\x57\x51\x46\x64\x4f\x47','\x57\x37\x4e\x63\x4e\x68\x68\x64\x4f\x59\x47','\x62\x6d\x6f\x71\x57\x34\x42\x63\x52\x6d\x6f\x7a','\x65\x66\x6c\x63\x4c\x4d\x35\x61','\x57\x36\x4b\x35\x6f\x65\x66\x54\x57\x37\x75\x65\x57\x50\x72\x79\x57\x36\x44\x4d\x57\x51\x38','\x57\x52\x71\x41\x62\x4d\x61\x58\x57\x37\x52\x63\x51\x53\x6b\x34','\x76\x61\x76\x45\x42\x61\x57\x52','\x57\x52\x75\x79\x57\x52\x75\x6c\x57\x35\x6d\x4a\x46\x6d\x6b\x70','\x57\x4f\x38\x33\x62\x77\x48\x4a\x6a\x38\x6b\x56\x57\x52\x6d','\x63\x5a\x71\x72\x69\x48\x47','\x57\x52\x4b\x63\x57\x52\x75\x44\x57\x34\x34','\x78\x32\x47\x30\x57\x4f\x5a\x64\x48\x47','\x57\x51\x65\x4a\x68\x53\x6f\x6b\x57\x51\x4b','\x75\x33\x38\x61\x6e\x38\x6b\x6f\x63\x62\x46\x63\x4a\x47','\x43\x53\x6f\x5a\x6d\x38\x6b\x4a\x57\x36\x56\x64\x47\x57','\x68\x6d\x6f\x56\x57\x36\x68\x63\x4a\x6d\x6f\x6b\x69\x61','\x42\x6d\x6f\x33\x6a\x53\x6b\x31\x57\x36\x52\x64\x4a\x4d\x47\x56','\x57\x34\x2f\x63\x55\x77\x37\x64\x4d\x4a\x47','\x66\x62\x47\x4b','\x57\x52\x75\x58\x64\x53\x6f\x38\x57\x4f\x31\x67','\x63\x33\x47\x71\x7a\x38\x6b\x76\x44\x47','\x57\x36\x52\x63\x53\x4a\x39\x42\x57\x51\x4b\x61\x57\x35\x69\x4c','\x57\x4f\x30\x33\x57\x52\x65\x43\x57\x37\x65','\x57\x50\x4a\x63\x4e\x59\x46\x64\x4f\x68\x4a\x64\x48\x43\x6b\x64\x42\x71','\x65\x33\x37\x63\x54\x4d\x31\x48','\x57\x52\x4b\x61\x65\x33\x48\x4a\x6c\x6d\x6b\x4d','\x75\x57\x35\x6e\x45\x47\x75','\x72\x58\x72\x6c\x45\x47\x34\x31\x44\x61\x6d','\x57\x35\x6c\x63\x4e\x74\x54\x73\x57\x4f\x6d','\x57\x50\x78\x64\x56\x4b\x54\x63\x72\x61','\x70\x74\x38\x57\x65\x49\x6d','\x69\x4e\x2f\x63\x4a\x65\x37\x64\x50\x57','\x68\x31\x4e\x63\x4e\x47\x43\x4e\x42\x43\x6f\x4d\x72\x57','\x6b\x49\x31\x34','\x61\x6d\x6f\x31\x74\x65\x35\x31\x57\x34\x37\x63\x48\x57','\x6f\x38\x6b\x31\x42\x43\x6b\x6e\x57\x36\x47\x73','\x57\x4f\x4f\x34\x57\x4f\x61\x48\x57\x36\x75\x44\x76\x6d\x6b\x43','\x57\x35\x50\x61\x6e\x6d\x6b\x49\x75\x43\x6b\x71\x57\x34\x57','\x70\x63\x66\x71\x57\x34\x5a\x64\x4a\x47','\x75\x53\x6b\x44\x45\x6d\x6f\x4d\x57\x36\x65\x55\x46\x75\x38','\x57\x52\x30\x64\x57\x51\x38\x45\x57\x34\x6d\x71\x6f\x38\x6b\x4e','\x57\x36\x4e\x63\x4d\x30\x70\x64\x4a\x72\x79\x32\x57\x52\x33\x64\x55\x71','\x57\x52\x34\x75\x57\x51\x43\x6d\x57\x34\x38\x2f\x46\x53\x6b\x70','\x64\x38\x6b\x52\x57\x52\x79\x48','\x57\x37\x31\x6f\x57\x4f\x70\x64\x49\x48\x52\x64\x56\x72\x62\x4d','\x57\x34\x38\x6f\x57\x50\x78\x63\x51\x38\x6f\x36','\x61\x71\x66\x6f\x57\x4f\x52\x63\x48\x6d\x6b\x74\x76\x61\x61','\x6f\x4d\x37\x63\x4b\x63\x54\x61\x57\x52\x54\x6d','\x6f\x4d\x6c\x63\x4d\x63\x54\x35\x57\x4f\x61','\x72\x57\x33\x63\x50\x32\x54\x56','\x57\x36\x33\x63\x4e\x62\x50\x47\x57\x51\x65','\x76\x53\x6b\x72\x57\x50\x52\x63\x48\x75\x46\x64\x54\x6d\x6f\x64\x57\x36\x4f','\x63\x62\x69\x59\x63\x61\x39\x64','\x6e\x59\x48\x62\x57\x52\x64\x63\x4d\x57','\x43\x4c\x65\x2b\x57\x4f\x74\x64\x49\x76\x37\x63\x4a\x43\x6f\x61','\x69\x68\x47\x56','\x74\x68\x43\x34\x6e\x38\x6b\x55','\x70\x72\x4e\x63\x4d\x38\x6f\x57\x57\x4f\x4f\x2f\x7a\x62\x47','\x62\x53\x6f\x35\x57\x34\x42\x63\x4c\x38\x6f\x68\x69\x77\x39\x43','\x57\x36\x56\x63\x49\x30\x6c\x64\x47\x62\x6d\x50\x57\x52\x64\x64\x55\x61','\x45\x6d\x6f\x69\x42\x53\x6f\x57\x57\x34\x37\x63\x48\x61','\x67\x4e\x37\x63\x4e\x62\x75\x62','\x66\x49\x50\x73','\x61\x77\x33\x63\x48\x49\x64\x63\x4f\x57','\x43\x53\x6f\x5a\x6d\x43\x6b\x58\x57\x36\x4a\x64\x47\x78\x71\x75','\x62\x58\x66\x42\x57\x36\x4a\x64\x49\x4b\x47\x2f\x76\x71','\x57\x52\x68\x63\x51\x43\x6f\x35\x57\x50\x46\x63\x53\x53\x6f\x75\x57\x51\x52\x63\x50\x47','\x57\x50\x43\x34\x57\x4f\x70\x64\x54\x61\x47','\x57\x4f\x47\x50\x6b\x64\x75\x43','\x76\x75\x43\x43','\x57\x37\x78\x63\x56\x49\x39\x78\x57\x51\x71\x79\x57\x36\x34\x37','\x6c\x38\x6f\x35\x43\x4c\x48\x4c','\x57\x37\x61\x71\x57\x50\x4e\x63\x55\x38\x6b\x33\x57\x34\x56\x63\x4d\x49\x4f','\x57\x37\x54\x41\x57\x52\x34\x44\x57\x34\x47','\x76\x53\x6b\x72\x57\x50\x4a\x63\x4c\x30\x74\x64\x54\x47','\x57\x50\x79\x77\x6c\x47\x57\x51\x57\x51\x2f\x63\x4a\x4d\x6d','\x57\x51\x65\x42\x62\x33\x6d\x73\x57\x37\x5a\x63\x54\x38\x6b\x39','\x57\x51\x44\x4a\x76\x38\x6f\x6d\x57\x4f\x38','\x62\x72\x50\x33\x57\x51\x4a\x63\x48\x61','\x57\x51\x6a\x6c\x74\x57','\x70\x6d\x6b\x59\x79\x6d\x6b\x78\x57\x37\x71\x75\x73\x76\x75','\x72\x72\x70\x63\x4f\x4e\x62\x41\x41\x6d\x6b\x48','\x6c\x6d\x6b\x72\x57\x50\x50\x61\x57\x35\x38','\x57\x34\x4b\x5a\x57\x50\x74\x63\x4d\x43\x6f\x36','\x57\x37\x70\x63\x4b\x77\x78\x64\x51\x63\x6d','\x57\x34\x4b\x78\x57\x4f\x52\x64\x4c\x78\x4e\x63\x55\x6d\x6b\x78\x57\x51\x65','\x41\x74\x69\x56','\x57\x37\x43\x71\x57\x51\x74\x63\x50\x53\x6b\x59','\x57\x51\x79\x61\x61\x78\x48\x54\x6a\x71','\x78\x38\x6f\x6e\x57\x37\x2f\x64\x53\x61','\x78\x38\x6f\x64\x7a\x6d\x6f\x54\x57\x34\x37\x63\x4e\x71\x4b','\x57\x51\x69\x75\x57\x4f\x37\x64\x49\x48\x33\x64\x53\x72\x6e\x59','\x6b\x75\x78\x63\x50\x47\x33\x63\x54\x53\x6b\x6a','\x57\x51\x4f\x75\x57\x51\x75\x7a\x57\x35\x79\x48\x46\x53\x6b\x30','\x57\x37\x78\x63\x56\x49\x39\x78\x57\x51\x71\x79\x57\x35\x71\x50','\x57\x4f\x6e\x49\x41\x57\x43\x31','\x57\x51\x50\x56\x7a\x61\x62\x39\x57\x51\x53\x73\x57\x52\x79','\x70\x65\x56\x63\x4c\x57\x6e\x58','\x73\x72\x5a\x64\x4e\x66\x44\x39\x6b\x43\x6f\x6c\x78\x73\x33\x64\x51\x30\x30\x51','\x63\x6d\x6f\x55\x76\x4c\x54\x4c\x57\x37\x33\x64\x47\x67\x4f','\x72\x47\x46\x63\x4f\x4e\x7a\x42\x7a\x53\x6b\x39\x57\x4f\x4f','\x6b\x65\x78\x63\x55\x58\x4e\x63\x4f\x38\x6b\x67\x73\x71','\x71\x71\x75\x2b\x57\x35\x38\x68\x68\x38\x6f\x5a\x57\x51\x71','\x66\x38\x6b\x4b\x57\x50\x43\x42\x6e\x61','\x62\x59\x54\x2b\x57\x4f\x5a\x64\x53\x75\x39\x62\x67\x61','\x66\x48\x79\x4e\x68\x47\x35\x6f\x6a\x49\x38'];_0x11ab=function(){return _0x323921;};return _0x11ab();}function _0x4fe30e(_0x51c8f6,_0x4e0a3d,_0x215cc1,_0x5d6b60){const _0x985d8a=_0x22aab7,_0x49f1c5={'\x46\x6f\x4a\x66\x43':'\x72\x6f\x75\x6e\x64\x74\x72\x69'+_0x985d8a(0x200,'\x72\x54\x2a\x30')+'\x63\x68','\x61\x75\x50\x43\x78':_0x985d8a(0x210,'\x4a\x71\x75\x59')+'\x66\x74','\x44\x68\x77\x78\x76':function(_0x27c77c,_0x1732c3){return _0x27c77c||_0x1732c3;},'\x71\x55\x61\x6f\x65':_0x985d8a(0x178,'\x47\x46\x54\x68')+_0x985d8a(0x110,'\x6d\x32\x4e\x4e'),'\x6a\x67\x56\x62\x66':function(_0x99ddc2,_0x3025f4){return _0x99ddc2+_0x3025f4;},'\x41\x4e\x57\x65\x56':_0x985d8a(0xea,'\x38\x4b\x40\x4e'),'\x4c\x78\x71\x41\x43':_0x985d8a(0x18c,'\x62\x71\x57\x5a'),'\x56\x70\x54\x4c\x6b':function(_0x1d0bb7,_0x517d70){return _0x1d0bb7(_0x517d70);},'\x72\x41\x74\x79\x63':_0x985d8a(0x163,'\x6c\x62\x38\x33'),'\x71\x4d\x49\x61\x4e':function(_0x29eea4,_0x145de0){return _0x29eea4===_0x145de0;},'\x4c\x6b\x4a\x4f\x52':function(_0x501467,_0xc41daf){return _0x501467===_0xc41daf;},'\x44\x4d\x4e\x4a\x61':_0x985d8a(0x1f5,'\x33\x65\x53\x5a')+_0x985d8a(0x1a7,'\x2a\x68\x54\x56'),'\x47\x48\x63\x69\x43':function(_0x1095da,_0x32c3f9){return _0x1095da===_0x32c3f9;},'\x63\x79\x46\x69\x4a':_0x985d8a(0x212,'\x59\x52\x32\x71')+_0x985d8a(0x221,'\x23\x43\x77\x79')+'\x67'},_0x5a492c=Date[_0x985d8a(0x1ec,'\x65\x40\x31\x41')](),_0x5ebeb7={'\x6f\x75\x74\x63\x6f\x6d\x65':_0x4e0a3d,'\x72\x65\x61\x73\x6f\x6e':_0x49f1c5[_0x985d8a(0x1b4,'\x72\x74\x6c\x73')](_0x215cc1,null),'\x61\x74\x74\x65\x6d\x70\x74\x73':_0x5d6b60&&Number[_0x985d8a(0x1b0,'\x26\x21\x43\x62')](_0x5d6b60[_0x985d8a(0x152,'\x6b\x6a\x4a\x23')])?_0x5d6b60[_0x985d8a(0x14d,'\x68\x6d\x37\x21')]:_0x51c8f6[_0x985d8a(0x1d5,'\x37\x79\x6d\x71')]||-0x7c8*0x4+-0x11*-0x19b+0x3d5,'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x5d6b60&&Number[_0x985d8a(0x16c,'\x76\x66\x2a\x61')](_0x5d6b60[_0x985d8a(0x149,'\x73\x6c\x79\x55')+'\x6d\x73'])?_0x5d6b60[_0x985d8a(0xff,'\x29\x66\x78\x4a')+'\x6d\x73']:-0x1d23+-0x1007+0x11a*0x29,'\x61\x67\x65\x5f\x61\x74\x5f\x76\x65\x72\x69\x66\x79\x5f\x6d\x73':_0x51c8f6['\x70\x75\x62\x6c\x69\x73\x68\x65'+_0x985d8a(0x123,'\x6d\x41\x42\x21')]?_0x5a492c-_0x51c8f6[_0x985d8a(0x16d,'\x72\x54\x2a\x30')+_0x985d8a(0x1ae,'\x77\x66\x62\x65')]:-0xd4b+0x18fc+0x29*-0x49,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x5d6b60&&_0x5d6b60[_0x985d8a(0x165,'\x75\x54\x39\x46')+'\x5f\x68\x61\x73\x68']?_0x5d6b60[_0x985d8a(0xd8,'\x4a\x71\x75\x59')+_0x985d8a(0x1b7,'\x33\x65\x53\x5a')]:null},_0x3a6ce8={'\x74\x79\x70\x65':_0x985d8a(0x100,'\x37\x79\x6d\x71')+_0x985d8a(0x19a,'\x77\x66\x62\x65'),'\x6b\x69\x6e\x64':_0x49f1c5['\x71\x55\x61\x6f\x65'],'\x69\x64':_0x49f1c5[_0x985d8a(0x184,'\x26\x57\x4e\x71')](_0x49f1c5[_0x985d8a(0x20d,'\x44\x75\x4f\x40')](_0x49f1c5['\x41\x4e\x57\x65\x56']+_0x5a492c,'\x5f'),Math[_0x985d8a(0x19e,'\x4f\x21\x79\x6a')]()[_0x985d8a(0x11e,'\x4f\x21\x79\x6a')](-0x21fd+-0x1b47*-0x1+0x1*0x6da)[_0x985d8a(0x114,'\x23\x43\x77\x79')](0x1*0x10db+0x253+0x3*-0x664,0x4da+0x3*0x1a5+-0x9bf)),'\x74\x73':_0x5a492c,'\x61\x73\x73\x65\x74':{'\x74\x79\x70\x65':_0x51c8f6[_0x985d8a(0xcd,'\x58\x46\x6b\x6e')]||_0x49f1c5[_0x985d8a(0x1e2,'\x6c\x51\x57\x46')],'\x69\x64':_0x51c8f6[_0x985d8a(0x1f6,'\x6d\x32\x4e\x4e')]||null},'\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6f\x6e':_0x5ebeb7,'\x73\x69\x67\x6e\x61\x6c':{'\x73\x69\x67\x6e\x61\x6c\x73':Array[_0x985d8a(0x232,'\x33\x65\x53\x5a')](_0x51c8f6[_0x985d8a(0x101,'\x64\x61\x57\x57')])?_0x51c8f6[_0x985d8a(0xe2,'\x6c\x51\x57\x46')][_0x985d8a(0xcb,'\x75\x54\x39\x46')](0x4*0x438+0x98e*-0x4+0x1558,0x22ab+-0x36b+-0x1f38):[]}};try{_0x49f1c5[_0x985d8a(0xd1,'\x68\x6d\x37\x21')](_0x35168f,_0x3a6ce8);}catch(_0xeaa340){if(_0x49f1c5['\x72\x41\x74\x79\x63']===_0x49f1c5[_0x985d8a(0x20e,'\x75\x6a\x47\x44')])_0x49f1c5[_0x985d8a(0x131,'\x6d\x32\x4e\x4e')](process.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&console[_0x985d8a(0xdb,'\x67\x45\x4f\x46')](_0x49f1c5['\x6a\x67\x56\x62\x66'](_0x985d8a(0xec,'\x62\x71\x57\x5a')+_0x985d8a(0x15a,'\x64\x61\x57\x57')+_0x985d8a(0x1a8,'\x64\x61\x57\x57')+_0x985d8a(0x1e0,'\x38\x4b\x40\x4e')+_0x985d8a(0x192,'\x35\x74\x52\x57')+_0x985d8a(0x1a3,'\x4d\x56\x5b\x2a'),_0xeaa340&&_0xeaa340[_0x985d8a(0xc9,'\x29\x66\x78\x4a')]||_0xeaa340));else{const _0x41d7b0={};return _0x41d7b0[_0x985d8a(0x1da,'\x2a\x68\x54\x56')]=_0x49f1c5[_0x985d8a(0xc0,'\x21\x33\x59\x50')],_0x41d7b0[_0x985d8a(0x18a,'\x47\x36\x4a\x51')]=_0x49f1c5[_0x985d8a(0xcc,'\x35\x74\x52\x57')],_0x41d7b0[_0x985d8a(0x226,'\x26\x57\x4e\x71')+'\x6d\x73']=_0x5309b3,_0x41d7b0[_0x985d8a(0x1be,'\x67\x45\x4f\x46')+_0x985d8a(0x128,'\x4d\x21\x40\x31')]=_0xefc36c,_0x41d7b0;}}if(_0x49f1c5[_0x985d8a(0x1ba,'\x47\x46\x54\x68')](_0x4e0a3d,_0x49f1c5[_0x985d8a(0x171,'\x58\x46\x6b\x6e')]))_0x62d4c8['\x6f\x6b']++;else{if(_0x49f1c5[_0x985d8a(0x150,'\x36\x57\x4d\x6b')](_0x4e0a3d,_0x49f1c5[_0x985d8a(0x1d6,'\x75\x54\x39\x46')]))_0x62d4c8[_0x985d8a(0x154,'\x59\x52\x32\x71')]++;else{if(_0x49f1c5[_0x985d8a(0x219,'\x5a\x63\x48\x4e')](_0x4e0a3d,_0x49f1c5[_0x985d8a(0x21e,'\x79\x5e\x62\x38')]))_0x62d4c8['\x6d\x69\x73\x6d\x61\x74\x63\x68']++;else _0x62d4c8[_0x985d8a(0x124,'\x6c\x62\x38\x33')]++;}}}function _0x11b433(_0x25bbb5){const _0x261a7c=_0x22aab7,_0x39f8d1={'\x44\x63\x7a\x64\x78':function(_0x1bb83d,_0x4a1510,_0x4e3ee5){return _0x1bb83d(_0x4a1510,_0x4e3ee5);},'\x65\x42\x79\x6d\x67':'\x45\x56\x4f\x4c\x56\x45\x5f\x52'+_0x261a7c(0xb8,'\x47\x46\x54\x68')+_0x261a7c(0x1c5,'\x6d\x41\x42\x21')+_0x261a7c(0x1d9,'\x62\x71\x57\x5a'),'\x66\x6b\x50\x51\x46':function(_0x2839d3,_0x2dd09a){return _0x2839d3<_0x2dd09a;},'\x47\x4e\x4b\x6a\x61':function(_0x579c77,_0x573fdb){return _0x579c77(_0x573fdb);},'\x78\x5a\x79\x6a\x45':function(_0x562c68,_0x56d178){return _0x562c68(_0x56d178);},'\x72\x48\x46\x55\x4a':_0x261a7c(0x1f9,'\x68\x6d\x37\x21'),'\x64\x4a\x61\x6c\x4a':function(_0x218a21,_0x327298,_0x38c529,_0x4a33a6){return _0x218a21(_0x327298,_0x38c529,_0x4a33a6);},'\x42\x65\x4d\x65\x79':_0x261a7c(0x1c1,'\x23\x43\x77\x79')+_0x261a7c(0x17a,'\x4b\x41\x4c\x5e')+_0x261a7c(0x12a,'\x67\x45\x4f\x46'),'\x4d\x59\x45\x71\x53':'\x66\x65\x61\x74\x75\x72\x65\x5f'+_0x261a7c(0x159,'\x4f\x21\x79\x6a'),'\x6c\x76\x66\x45\x57':_0x261a7c(0x1b3,'\x58\x46\x6b\x6e'),'\x4b\x6f\x66\x4d\x77':_0x261a7c(0x21f,'\x29\x66\x78\x4a')+_0x261a7c(0xc5,'\x4d\x21\x40\x31'),'\x41\x58\x78\x6e\x4c':function(_0x19f4ec){return _0x19f4ec();},'\x59\x45\x75\x74\x59':function(_0x4a2bcf,_0x5a5751){return _0x4a2bcf<_0x5a5751;},'\x4e\x46\x7a\x4a\x41':function(_0x46adae,_0x207346,_0x1fe3da,_0x38047f){return _0x46adae(_0x207346,_0x1fe3da,_0x38047f);},'\x44\x64\x78\x63\x6e':_0x261a7c(0x1b6,'\x33\x65\x53\x5a')+_0x261a7c(0x1a2,'\x68\x6d\x37\x21'),'\x6e\x6d\x53\x76\x43':function(_0x5bbddf,_0x548764){return _0x5bbddf+_0x548764;},'\x55\x64\x6e\x4b\x4f':function(_0x18670d,_0x10c6f3){return _0x18670d>=_0x10c6f3;},'\x75\x6a\x49\x53\x4c':_0x261a7c(0x18d,'\x52\x33\x69\x67')+'\x6c\x6c'},_0x41a07c={'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x25bbb5&&_0x25bbb5[_0x261a7c(0x127,'\x2a\x6c\x4d\x66')]?_0x39f8d1[_0x261a7c(0xd6,'\x6c\x51\x57\x46')](String,_0x25bbb5[_0x261a7c(0x231,'\x64\x61\x57\x57')]):null,'\x74\x79\x70\x65':_0x25bbb5&&_0x25bbb5[_0x261a7c(0xbc,'\x77\x66\x62\x65')]?_0x39f8d1['\x78\x5a\x79\x6a\x45'](String,_0x25bbb5[_0x261a7c(0xe4,'\x33\x65\x53\x5a')]):_0x39f8d1[_0x261a7c(0x1c7,'\x6c\x62\x38\x33')],'\x73\x69\x67\x6e\x61\x6c\x73':Array[_0x261a7c(0x1c2,'\x23\x43\x77\x79')](_0x25bbb5&&_0x25bbb5[_0x261a7c(0xb7,'\x44\x4d\x59\x46')])?_0x25bbb5[_0x261a7c(0xb7,'\x44\x4d\x59\x46')]:[],'\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x41\x74':_0x25bbb5&&Number[_0x261a7c(0x1d1,'\x36\x57\x4d\x6b')](_0x25bbb5[_0x261a7c(0x122,'\x6c\x62\x38\x33')+'\x64\x41\x74'])?_0x25bbb5[_0x261a7c(0x1f4,'\x4d\x56\x5b\x2a')+_0x261a7c(0x181,'\x4e\x40\x4a\x59')]:Date[_0x261a7c(0x153,'\x4d\x56\x5b\x2a')](),'\x61\x74\x74\x65\x6d\x70\x74\x73':0x0,'\x6e\x65\x78\x74\x45\x6c\x69\x67\x69\x62\x6c\x65\x41\x74':0x0};if(!_0x315886()){_0x39f8d1[_0x261a7c(0x1cd,'\x26\x57\x4e\x71')](_0x4fe30e,_0x41a07c,_0x39f8d1[_0x261a7c(0xe8,'\x67\x45\x4f\x46')],_0x261a7c(0x15c,'\x64\x61\x57\x57')+_0x261a7c(0x19c,'\x44\x4d\x59\x46'));const _0x2774a5={};return _0x2774a5[_0x261a7c(0x1a1,'\x4a\x71\x75\x59')]=![],_0x2774a5[_0x261a7c(0x16e,'\x62\x71\x57\x5a')]=_0x39f8d1[_0x261a7c(0xde,'\x6d\x41\x42\x21')],_0x2774a5;}if(!_0x41a07c[_0x261a7c(0x111,'\x79\x5e\x62\x38')]){if(_0x39f8d1[_0x261a7c(0x1e1,'\x38\x4b\x40\x4e')]===_0x261a7c(0x222,'\x5a\x63\x48\x4e')){_0x39f8d1[_0x261a7c(0x1bb,'\x5a\x63\x48\x4e')](_0x4fe30e,_0x41a07c,_0x39f8d1[_0x261a7c(0x179,'\x59\x52\x32\x71')],_0x39f8d1['\x4b\x6f\x66\x4d\x77']);const _0x399ccb={};return _0x399ccb[_0x261a7c(0x11d,'\x64\x61\x57\x57')]=![],_0x399ccb[_0x261a7c(0x138,'\x68\x6d\x37\x21')]=_0x39f8d1[_0x261a7c(0x158,'\x5a\x63\x48\x4e')],_0x399ccb;}else{const _0xdccb49=oAEDFm[_0x261a7c(0x1cc,'\x68\x6d\x37\x21')](_0x30d029,oAEDFm[_0x261a7c(0xf7,'\x47\x46\x54\x68')],-0x1d17+-0x24d4+-0x4*-0x107b);if(!_0x49f948[_0x261a7c(0xba,'\x4f\x6e\x4e\x6f')](_0xdccb49)||oAEDFm['\x66\x6b\x50\x51\x46'](_0xdccb49,0x914+-0x43*-0x81+-0x2ad7)||_0xdccb49>-0x18*0x19e+0x13*0x1b9+0x52*0x13)return 0x1*0x43d+0x1*-0x723+0x1*0x2e7;return _0xdccb49;}}const _0x541f4e=_0x39f8d1[_0x261a7c(0x23a,'\x29\x66\x78\x4a')](_0x43b319);if(_0x39f8d1['\x59\x45\x75\x74\x59'](_0x541f4e,-0x9f*-0x1a+0x1*-0x2141+0x111c)&&Math[_0x261a7c(0x108,'\x26\x21\x43\x62')]()>=_0x541f4e){_0x39f8d1[_0x261a7c(0x12b,'\x43\x24\x5d\x6e')](_0x4fe30e,_0x41a07c,_0x39f8d1['\x42\x65\x4d\x65\x79'],_0x261a7c(0x238,'\x72\x74\x6c\x73')+_0x261a7c(0xe9,'\x47\x36\x4a\x51'));const _0x14a684={};return _0x14a684[_0x261a7c(0x1ee,'\x67\x45\x4f\x46')]=![],_0x14a684[_0x261a7c(0x17c,'\x75\x54\x39\x46')]=_0x39f8d1[_0x261a7c(0xe3,'\x43\x24\x5d\x6e')],_0x14a684;}_0x41a07c[_0x261a7c(0x125,'\x44\x75\x4f\x40')+_0x261a7c(0x162,'\x4a\x71\x75\x59')]=_0x39f8d1[_0x261a7c(0x15f,'\x6d\x32\x4e\x4e')](_0x41a07c[_0x261a7c(0xb3,'\x4f\x6e\x4e\x6f')+'\x64\x41\x74'],_0x39f8d1[_0x261a7c(0x19f,'\x36\x57\x4d\x6b')](_0x530975));const _0x3d5e35=_0x39f8d1[_0x261a7c(0x180,'\x4d\x56\x5b\x2a')](_0x5c8882);while(_0x39f8d1[_0x261a7c(0x115,'\x4e\x40\x4a\x59')](_0x39cdc4[_0x261a7c(0x233,'\x44\x4d\x59\x46')],_0x3d5e35)){const _0x2fe6cf=_0x39cdc4['\x73\x68\x69\x66\x74']();_0x39f8d1[_0x261a7c(0x1c6,'\x59\x52\x32\x71')](_0x4fe30e,_0x2fe6cf,_0x261a7c(0x109,'\x76\x66\x2a\x61')+_0x261a7c(0x223,'\x52\x29\x75\x54')+_0x261a7c(0x18b,'\x37\x4c\x77\x4e'),_0x39f8d1[_0x261a7c(0x1b5,'\x26\x21\x43\x62')]);}_0x39cdc4[_0x261a7c(0x103,'\x75\x54\x39\x46')](_0x41a07c);const _0x15c77c={};return _0x15c77c['\x65\x6e\x71\x75\x65\x75\x65\x64']=!![],_0x15c77c;}async function _0x45197d(_0x30c1c4,_0x4d83dd){const _0x5d2221=_0x22aab7,_0x4fecb8={'\x68\x50\x52\x44\x43':_0x5d2221(0xe5,'\x44\x4d\x59\x46')+'\x70\x5f\x6d\x69\x73\x73\x69\x6e'+'\x67','\x59\x63\x4a\x54\x64':_0x5d2221(0xca,'\x47\x36\x4a\x51')+_0x5d2221(0x214,'\x4d\x56\x5b\x2a')+_0x5d2221(0x204,'\x36\x57\x4d\x6b'),'\x68\x5a\x74\x50\x50':_0x5d2221(0x139,'\x64\x61\x57\x57')+_0x5d2221(0xd4,'\x4f\x6e\x4e\x6f'),'\x52\x50\x6e\x4e\x76':_0x5d2221(0x1f7,'\x4e\x40\x4a\x59')+'\x61\x63\x68\x61\x62\x6c\x65','\x50\x43\x6c\x6a\x6f':function(_0x28afc7,_0x5b752f){return _0x28afc7-_0x5b752f;},'\x66\x77\x67\x50\x70':function(_0x420d98,_0x17ea1a){return _0x420d98-_0x17ea1a;},'\x73\x69\x52\x73\x5a':_0x5d2221(0xc3,'\x38\x4b\x40\x4e')+_0x5d2221(0xbb,'\x21\x33\x59\x50'),'\x6f\x4b\x63\x4d\x49':function(_0x2d6f47,_0x4b45d3){return _0x2d6f47!==_0x4b45d3;},'\x67\x4a\x71\x74\x55':_0x5d2221(0x1eb,'\x52\x33\x69\x67')+_0x5d2221(0x1ab,'\x59\x52\x32\x71'),'\x66\x57\x76\x78\x5a':function(_0x76c12c,_0x463709){return _0x76c12c(_0x463709);},'\x65\x53\x69\x66\x41':function(_0xf254c7,_0x1dbb8a){return _0xf254c7===_0x1dbb8a;},'\x72\x55\x56\x59\x4b':_0x5d2221(0x135,'\x65\x40\x31\x41'),'\x44\x59\x68\x4b\x70':_0x5d2221(0x1a6,'\x35\x74\x52\x57'),'\x79\x74\x72\x52\x43':'\x72\x6f\x75\x6e\x64\x74\x72\x69'+_0x5d2221(0xd9,'\x4b\x41\x4c\x5e')+'\x63\x68','\x41\x4d\x63\x79\x4d':_0x5d2221(0x174,'\x4f\x6e\x4e\x6f')+'\x66\x74'},_0x2ae8f7=Date[_0x5d2221(0xc6,'\x21\x33\x59\x50')]();if(!_0x30c1c4){const _0x54b489={};return _0x54b489[_0x5d2221(0x10c,'\x67\x45\x4f\x46')]=_0x4fecb8[_0x5d2221(0x207,'\x4d\x56\x5b\x2a')],_0x54b489[_0x5d2221(0xd5,'\x64\x61\x57\x57')]=_0x4fecb8[_0x5d2221(0x176,'\x44\x75\x4f\x40')],_0x54b489[_0x5d2221(0x1d2,'\x21\x33\x59\x50')+'\x6d\x73']=0x0,_0x54b489[_0x5d2221(0x1a4,'\x65\x40\x31\x41')+_0x5d2221(0x217,'\x4d\x56\x5b\x2a')]=null,_0x54b489;}let _0x4211e0;try{_0x4211e0=await _0x3bc734(_0x30c1c4,{'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0x2ff01e(),'\x62\x79\x70\x61\x73\x73\x43\x61\x63\x68\x65':!![]});}catch(_0x4324c2){return{'\x6f\x75\x74\x63\x6f\x6d\x65':_0x4fecb8[_0x5d2221(0x1d7,'\x72\x74\x6c\x73')],'\x72\x65\x61\x73\x6f\x6e':_0x4fecb8[_0x5d2221(0xce,'\x4f\x6e\x4e\x6f')],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x4fecb8[_0x5d2221(0x22c,'\x2a\x6c\x4d\x66')](Date[_0x5d2221(0x144,'\x36\x57\x4d\x6b')](),_0x2ae8f7),'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':null,'\x65\x72\x72\x6f\x72':_0x4324c2&&_0x4324c2['\x6d\x65\x73\x73\x61\x67\x65']||String(_0x4324c2)};}const _0x435608=_0x4fecb8[_0x5d2221(0x230,'\x4d\x56\x5b\x2a')](Date[_0x5d2221(0x1f3,'\x26\x57\x4e\x71')](),_0x2ae8f7);if(!_0x4211e0||!_0x4211e0['\x6f\x6b']){const _0x20b460={};return _0x20b460[_0x5d2221(0xeb,'\x26\x57\x4e\x71')]=_0x4fecb8[_0x5d2221(0xfb,'\x4e\x40\x4a\x59')],_0x20b460[_0x5d2221(0x19d,'\x72\x54\x2a\x30')]=_0x4fecb8[_0x5d2221(0x213,'\x2a\x68\x54\x56')],_0x20b460[_0x5d2221(0x142,'\x37\x79\x6d\x71')+'\x6d\x73']=_0x435608,_0x20b460[_0x5d2221(0x15b,'\x72\x54\x2a\x30')+'\x5f\x68\x61\x73\x68']=null,_0x20b460[_0x5d2221(0x1c3,'\x77\x66\x62\x65')]=_0x4211e0&&_0x4211e0['\x65\x72\x72\x6f\x72']||_0x4fecb8[_0x5d2221(0x189,'\x4b\x41\x4c\x5e')],_0x20b460;}if(!_0x4211e0[_0x5d2221(0x1ac,'\x6d\x32\x4e\x4e')]){const _0x228dc7={};return _0x228dc7[_0x5d2221(0x183,'\x6c\x62\x38\x33')]=_0x5d2221(0x212,'\x59\x52\x32\x71')+'\x70\x5f\x6d\x69\x73\x73\x69\x6e'+'\x67',_0x228dc7[_0x5d2221(0x1f0,'\x26\x21\x43\x62')]=null,_0x228dc7[_0x5d2221(0xe0,'\x4d\x21\x40\x31')+'\x6d\x73']=_0x435608,_0x228dc7[_0x5d2221(0x172,'\x37\x79\x6d\x71')+_0x5d2221(0x191,'\x35\x74\x52\x57')]=null,_0x228dc7;}const _0x3ced8a=_0x4211e0[_0x5d2221(0x13c,'\x64\x61\x57\x57')];if(_0x4fecb8[_0x5d2221(0x193,'\x4a\x71\x75\x59')](_0x3ced8a['\x61\x73\x73\x65\x74\x5f\x69\x64'],_0x30c1c4)){const _0x234b0c={};return _0x234b0c[_0x5d2221(0xfd,'\x37\x4c\x77\x4e')]=_0x4fecb8['\x68\x50\x52\x44\x43'],_0x234b0c[_0x5d2221(0x138,'\x68\x6d\x37\x21')]=_0x4fecb8[_0x5d2221(0x10f,'\x47\x36\x4a\x51')],_0x234b0c[_0x5d2221(0x19b,'\x36\x57\x4d\x6b')+'\x6d\x73']=_0x435608,_0x234b0c['\x72\x65\x63\x61\x6c\x6c\x65\x64'+_0x5d2221(0x20a,'\x21\x33\x59\x50')]=_0x3ced8a[_0x5d2221(0xd4,'\x4f\x6e\x4e\x6f')]||null,_0x234b0c;}let _0x43c1b6;try{_0x43c1b6=_0x4fecb8[_0x5d2221(0x229,'\x52\x29\x75\x54')](_0x43cd25,_0x3ced8a);}catch(_0x131898){return{'\x6f\x75\x74\x63\x6f\x6d\x65':_0x4fecb8['\x59\x63\x4a\x54\x64'],'\x72\x65\x61\x73\x6f\x6e':'\x68\x61\x73\x68\x5f\x72\x65\x63'+_0x5d2221(0x11b,'\x52\x33\x69\x67')+_0x5d2221(0x17f,'\x4e\x40\x4a\x59'),'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x435608,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':null,'\x65\x72\x72\x6f\x72':_0x131898&&_0x131898[_0x5d2221(0x14b,'\x47\x36\x4a\x51')]||_0x4fecb8[_0x5d2221(0x1d4,'\x23\x43\x77\x79')](String,_0x131898)};}if(_0x43c1b6!==_0x3ced8a[_0x5d2221(0x1a0,'\x62\x71\x57\x5a')]){if(_0x4fecb8[_0x5d2221(0xb6,'\x43\x24\x5d\x6e')](_0x4fecb8[_0x5d2221(0x16a,'\x6d\x41\x42\x21')],_0x4fecb8[_0x5d2221(0x175,'\x52\x33\x69\x67')])){const _0x6d5756={};return _0x6d5756[_0x5d2221(0xee,'\x29\x66\x78\x4a')]=_0x4fecb8[_0x5d2221(0x185,'\x6d\x32\x4e\x4e')],_0x6d5756[_0x5d2221(0x209,'\x58\x46\x6b\x6e')]=null,_0x6d5756[_0x5d2221(0x196,'\x6c\x62\x38\x33')+'\x6d\x73']=_0x4a98a3,_0x6d5756[_0x5d2221(0xb4,'\x75\x6a\x47\x44')+_0x5d2221(0x112,'\x26\x57\x4e\x71')]=null,_0x6d5756;}else{const _0x307923={};return _0x307923[_0x5d2221(0x113,'\x52\x33\x69\x67')]=_0x4fecb8[_0x5d2221(0x1c8,'\x44\x4d\x59\x46')],_0x307923[_0x5d2221(0x166,'\x36\x57\x4d\x6b')]=_0x4fecb8[_0x5d2221(0xbe,'\x21\x33\x59\x50')],_0x307923[_0x5d2221(0x211,'\x77\x66\x62\x65')+'\x6d\x73']=_0x435608,_0x307923[_0x5d2221(0x20f,'\x4b\x41\x4c\x5e')+'\x5f\x68\x61\x73\x68']=_0x43c1b6,_0x307923;}}const _0xdef0c={};return _0xdef0c[_0x5d2221(0x1cb,'\x26\x64\x25\x4f')]='\x72\x6f\x75\x6e\x64\x74\x72\x69'+_0x5d2221(0x1a7,'\x2a\x68\x54\x56'),_0xdef0c[_0x5d2221(0x155,'\x52\x29\x75\x54')]=null,_0xdef0c['\x6c\x61\x74\x65\x6e\x63\x79\x5f'+'\x6d\x73']=_0x435608,_0xdef0c[_0x5d2221(0xdf,'\x52\x29\x75\x54')+_0x5d2221(0xc2,'\x4a\x71\x75\x59')]=_0x43c1b6,_0xdef0c;}async function _0x1de281(){const _0x56fce4=_0x22aab7,_0x5bccc3={'\x71\x43\x42\x59\x78':function(_0xdf9189,_0x514fc4){return _0xdf9189===_0x514fc4;},'\x64\x53\x76\x77\x4b':_0x56fce4(0x198,'\x23\x43\x77\x79')+_0x56fce4(0x195,'\x59\x52\x32\x71')+_0x56fce4(0xb2,'\x6c\x51\x57\x46')+'\x63\x6b\x20\x66\x61\x69\x6c\x65'+_0x56fce4(0x169,'\x4d\x56\x5b\x2a'),'\x6b\x5a\x46\x52\x70':function(_0xae5c6f){return _0xae5c6f();},'\x58\x6d\x67\x6f\x61':function(_0x2cfc58,_0x4ac8ff){return _0x2cfc58<_0x4ac8ff;},'\x6a\x57\x59\x70\x5a':function(_0x10de39,_0x54e824){return _0x10de39<=_0x54e824;},'\x6a\x47\x56\x56\x69':_0x56fce4(0x1fb,'\x44\x75\x4f\x40'),'\x6f\x43\x6e\x4a\x46':function(_0x441706,_0x4f4d80){return _0x441706!==_0x4f4d80;},'\x54\x47\x4e\x76\x42':_0x56fce4(0xcf,'\x4d\x56\x5b\x2a'),'\x47\x45\x63\x69\x6e':function(_0x2530ff,_0x1929a5,_0x2cb0df){return _0x2530ff(_0x1929a5,_0x2cb0df);},'\x45\x49\x6c\x67\x4d':function(_0x42f8a1,_0x4e1fbd){return _0x42f8a1===_0x4e1fbd;},'\x4c\x50\x6c\x69\x4b':_0x56fce4(0x119,'\x38\x4b\x40\x4e')+_0x56fce4(0xda,'\x62\x71\x57\x5a')+'\x67','\x4d\x4e\x6c\x4f\x48':function(_0x2253c6,_0x14c3d8){return _0x2253c6===_0x14c3d8;},'\x41\x76\x4f\x4e\x4b':_0x56fce4(0x17d,'\x44\x75\x4f\x40')+_0x56fce4(0xbd,'\x62\x71\x57\x5a')+_0x56fce4(0x1d0,'\x33\x65\x53\x5a'),'\x69\x77\x45\x56\x41':function(_0x12913c,_0x7c2ba3){return _0x12913c===_0x7c2ba3;},'\x6d\x56\x75\x58\x70':'\x68\x75\x62\x5f\x75\x6e\x72\x65'+'\x61\x63\x68\x61\x62\x6c\x65','\x45\x7a\x67\x71\x63':function(_0xbafcaf,_0xa59128){return _0xbafcaf&&_0xa59128;},'\x50\x50\x74\x6f\x67':function(_0x21bd18,_0x665e09){return _0x21bd18-_0x665e09;},'\x6f\x59\x63\x44\x76':function(_0x21760d,_0xe73b05){return _0x21760d+_0xe73b05;},'\x52\x6f\x53\x56\x75':function(_0x146a2c,_0x403f8d,_0xe1d19c,_0x2c09fa,_0x20f243){return _0x146a2c(_0x403f8d,_0xe1d19c,_0x2c09fa,_0x20f243);}},_0x4c333f={};_0x4c333f['\x70\x72\x6f\x63\x65\x73\x73\x65'+'\x64']=0x0;if(_0x5bccc3[_0x56fce4(0x116,'\x38\x4b\x40\x4e')](_0x39cdc4[_0x56fce4(0x1e9,'\x35\x74\x52\x57')],-0x15cf*-0x1+-0x54*0x31+-0x5bb))return _0x4c333f;const _0x32cf24=Date[_0x56fce4(0x1f3,'\x26\x57\x4e\x71')](),_0x1ccad0=_0x5bccc3[_0x56fce4(0x134,'\x76\x66\x2a\x61')](_0x86304),_0x557b1d=[];for(let _0x153d7a=0x749+0x2b9+0x3*-0x356;_0x5bccc3[_0x56fce4(0x107,'\x75\x6a\x47\x44')](_0x153d7a,_0x39cdc4['\x6c\x65\x6e\x67\x74\x68']);_0x153d7a++){const _0x18b1a6=_0x39cdc4[_0x153d7a];_0x5bccc3[_0x56fce4(0x1ad,'\x73\x6c\x79\x55')](_0x18b1a6['\x6e\x65\x78\x74\x45\x6c\x69\x67'+'\x69\x62\x6c\x65\x41\x74'],_0x32cf24)&&!_0x13bbeb['\x68\x61\x73'](_0x18b1a6[_0x56fce4(0x126,'\x44\x4d\x59\x46')])&&_0x557b1d[_0x56fce4(0x1ea,'\x59\x52\x32\x71')](_0x18b1a6);}const _0x403215={};_0x403215[_0x56fce4(0xf1,'\x52\x29\x75\x54')+'\x64']=0x0;if(_0x557b1d[_0x56fce4(0x130,'\x59\x52\x32\x71')]===0x2558+-0x152b*-0x1+0x3a83*-0x1)return _0x403215;let _0x51b647=-0x22a8+-0xd*-0x17f+0xf35;for(const _0x2543d3 of _0x557b1d){if('\x6e\x73\x6b\x4f\x70'===_0x5bccc3[_0x56fce4(0x164,'\x47\x46\x54\x68')])_0x12a486&&(_0x308f64(_0x310228),_0x58d71e=null),_0x3f1ab=![];else{_0x13bbeb[_0x56fce4(0x170,'\x5a\x63\x48\x4e')](_0x2543d3['\x61\x73\x73\x65\x74\x5f\x69\x64']);try{if(_0x5bccc3[_0x56fce4(0xe1,'\x47\x36\x4a\x51')](_0x5bccc3[_0x56fce4(0x143,'\x72\x54\x2a\x30')],_0x5bccc3[_0x56fce4(0x1e8,'\x2a\x68\x54\x56')])){const _0x5b1ba7={'\x4f\x68\x61\x56\x54':function(_0x58118e,_0x2336b1){const _0x4afbc7=_0x56fce4;return _0x5bccc3[_0x4afbc7(0x13b,'\x36\x57\x4d\x6b')](_0x58118e,_0x2336b1);},'\x6f\x43\x74\x56\x6d':_0x5bccc3[_0x56fce4(0x16f,'\x6b\x6a\x4a\x23')]};_0x5bccc3['\x6b\x5a\x46\x52\x70'](_0x38115b)[_0x56fce4(0x11a,'\x52\x33\x69\x67')](function(_0x370020){const _0x76342f=_0x56fce4;_0x5b1ba7['\x4f\x68\x61\x56\x54'](_0x6f1924.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&_0x143ddf[_0x76342f(0x20b,'\x26\x64\x25\x4f')](_0x5b1ba7[_0x76342f(0x120,'\x64\x61\x57\x57')]+(_0x370020&&_0x370020[_0x76342f(0x197,'\x58\x46\x6b\x6e')]||_0x370020));});}else{_0x2543d3[_0x56fce4(0x1f2,'\x76\x66\x2a\x61')]+=-0x1a1b+-0x1d8c+0x37a8;const _0x14b1e9=await _0x5bccc3['\x47\x45\x63\x69\x6e'](_0x45197d,_0x2543d3['\x61\x73\x73\x65\x74\x5f\x69\x64'],_0x2543d3[_0x56fce4(0x235,'\x4f\x6e\x4e\x6f')]),_0x35e2e3=_0x5bccc3[_0x56fce4(0x206,'\x68\x6d\x37\x21')](_0x14b1e9[_0x56fce4(0x220,'\x6b\x6a\x4a\x23')],_0x5bccc3[_0x56fce4(0x199,'\x2a\x68\x54\x56')])||_0x5bccc3[_0x56fce4(0xc4,'\x4d\x21\x40\x31')](_0x14b1e9[_0x56fce4(0xee,'\x29\x66\x78\x4a')],_0x5bccc3['\x41\x76\x4f\x4e\x4b'])&&_0x5bccc3[_0x56fce4(0x1a5,'\x75\x6a\x47\x44')](_0x14b1e9[_0x56fce4(0x146,'\x2a\x6c\x4d\x66')],_0x5bccc3[_0x56fce4(0x20c,'\x23\x43\x77\x79')]),_0x48e434=_0x5bccc3[_0x56fce4(0xd0,'\x2a\x68\x54\x56')](_0x2543d3[_0x56fce4(0x1f1,'\x52\x29\x75\x54')],_0x1ccad0);if(_0x5bccc3['\x45\x7a\x67\x71\x63'](_0x35e2e3,_0x48e434)){const _0x26ca0e=Math[_0x56fce4(0x202,'\x36\x57\x4d\x6b')](_0x5bccc3[_0x56fce4(0x1e3,'\x6b\x6a\x4a\x23')](_0x2543d3[_0x56fce4(0x22b,'\x4f\x21\x79\x6a')],0x2*-0x982+-0x2d*0x73+0x273c),_0x3475ed[_0x56fce4(0x18e,'\x58\x46\x6b\x6e')]-(-0x18*-0x19a+-0x12e0+-0x138f));_0x2543d3[_0x56fce4(0x1c0,'\x52\x29\x75\x54')+'\x69\x62\x6c\x65\x41\x74']=_0x5bccc3[_0x56fce4(0x236,'\x67\x45\x4f\x46')](Date[_0x56fce4(0x12c,'\x77\x66\x62\x65')](),_0x3475ed[_0x26ca0e]);}else{_0x5bccc3[_0x56fce4(0xf3,'\x43\x24\x5d\x6e')](_0x4fe30e,_0x2543d3,_0x14b1e9[_0x56fce4(0xef,'\x4d\x56\x5b\x2a')],_0x14b1e9[_0x56fce4(0x145,'\x39\x76\x6c\x4c')],{'\x61\x74\x74\x65\x6d\x70\x74\x73':_0x2543d3['\x61\x74\x74\x65\x6d\x70\x74\x73'],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x14b1e9[_0x56fce4(0x1dc,'\x39\x76\x6c\x4c')+'\x6d\x73'],'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x14b1e9[_0x56fce4(0x18f,'\x64\x61\x57\x57')+_0x56fce4(0x1bd,'\x65\x40\x31\x41')]});const _0x23198c=_0x39cdc4[_0x56fce4(0x161,'\x4a\x71\x75\x59')](_0x2543d3);if(_0x5bccc3[_0x56fce4(0x227,'\x4d\x56\x5b\x2a')](_0x23198c,-(0x194*-0x10+-0x1*-0x2342+-0xa01)))_0x39cdc4['\x73\x70\x6c\x69\x63\x65'](_0x23198c,-0x47*0x23+0x17ae+-0xdf8);}_0x51b647+=0x140+-0x6fd*0x5+0x21b2;}}finally{_0x13bbeb[_0x56fce4(0x1ed,'\x4d\x21\x40\x31')](_0x2543d3[_0x56fce4(0x1db,'\x59\x52\x32\x71')]);}}}const _0xf06779={};return _0xf06779['\x70\x72\x6f\x63\x65\x73\x73\x65'+'\x64']=_0x51b647,_0xf06779;}function _0x4ee2fe(){const _0xea26a0=_0x22aab7,_0x33a049={'\x54\x7a\x5a\x5a\x7a':function(_0x522666,_0xb69e7c){return _0x522666===_0xb69e7c;},'\x4a\x4a\x79\x73\x6c':function(_0x3d077b,_0x5e2187){return _0x3d077b+_0x5e2187;},'\x68\x6f\x45\x44\x59':_0xea26a0(0x10a,'\x37\x79\x6d\x71'),'\x51\x55\x75\x52\x56':function(_0x59f100){return _0x59f100();},'\x6a\x76\x51\x50\x68':function(_0x10ffc8,_0x4e3810,_0x5c6a85){return _0x10ffc8(_0x4e3810,_0x5c6a85);},'\x52\x4f\x47\x43\x74':_0xea26a0(0x17e,'\x26\x21\x43\x62')};if(_0x4239b0)return;_0x4239b0=!![];const _0x23c0e0=_0x1895f2();_0x5cfa8e=_0x33a049[_0xea26a0(0x1fa,'\x4a\x71\x75\x59')](setInterval,function(){const _0xc194d0=_0xea26a0;if(_0x33a049[_0xc194d0(0x13d,'\x72\x74\x6c\x73')]===_0x33a049[_0xc194d0(0x186,'\x72\x54\x2a\x30')])_0x33a049[_0xc194d0(0x1e7,'\x6b\x6a\x4a\x23')](_0x1de281)[_0xc194d0(0x11c,'\x4f\x6e\x4e\x6f')](function(_0x235f91){const _0xf0d080=_0xc194d0;_0x33a049[_0xf0d080(0x22a,'\x6d\x32\x4e\x4e')](process.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&console[_0xf0d080(0x215,'\x43\x24\x5d\x6e')](_0x33a049[_0xf0d080(0x239,'\x21\x33\x59\x50')](_0xf0d080(0x13a,'\x47\x36\x4a\x51')+_0xf0d080(0x21b,'\x5a\x63\x48\x4e')+_0xf0d080(0x106,'\x2a\x68\x54\x56')+'\x63\x6b\x20\x66\x61\x69\x6c\x65'+_0xf0d080(0x1b1,'\x52\x29\x75\x54'),_0x235f91&&_0x235f91['\x6d\x65\x73\x73\x61\x67\x65']||_0x235f91));});else return _0x56b0b8[_0xc194d0(0x225,'\x29\x66\x78\x4a')]({},_0x36ae83);},_0x23c0e0),_0x5cfa8e&&typeof _0x5cfa8e[_0xea26a0(0x1b8,'\x65\x40\x31\x41')]===_0x33a049[_0xea26a0(0xfa,'\x4d\x21\x40\x31')]&&_0x5cfa8e[_0xea26a0(0x14c,'\x68\x6d\x37\x21')]();}function _0x261029(){const _0x3ea56e=_0x22aab7,_0x57358d={'\x73\x6a\x4e\x76\x53':function(_0x582e25,_0x4bb6dd){return _0x582e25(_0x4bb6dd);}};_0x5cfa8e&&(_0x57358d[_0x3ea56e(0x167,'\x4d\x56\x5b\x2a')](clearInterval,_0x5cfa8e),_0x5cfa8e=null),_0x4239b0=![];}function _0xdd0387(){const _0x3e66f0=_0x22aab7;return Object[_0x3e66f0(0x1fe,'\x58\x46\x6b\x6e')]({},_0x62d4c8);}function _0x494521(){const _0x4784c0=_0x22aab7;_0x261029(),_0x39cdc4=[],_0x13bbeb[_0x4784c0(0xfe,'\x5a\x63\x48\x4e')]();const _0x1e5b80={};_0x1e5b80['\x6f\x6b']=0x0,_0x1e5b80['\x6d\x69\x73\x73\x69\x6e\x67']=0x0,_0x1e5b80[_0x4784c0(0x117,'\x52\x29\x75\x54')]=0x0,_0x1e5b80[_0x4784c0(0x129,'\x6b\x6a\x4a\x23')]=0x0,_0x62d4c8=_0x1e5b80;}function _0x2ab93c(){const _0x79e91=_0x22aab7;return _0x39cdc4[_0x79e91(0xed,'\x26\x21\x43\x62')];}const _0x1beb15={};_0x1beb15[_0x22aab7(0xb1,'\x39\x76\x6c\x4c')+_0x22aab7(0x182,'\x52\x29\x75\x54')+'\x41\x73\x73\x65\x74']=_0x11b433,_0x1beb15[_0x22aab7(0xd7,'\x79\x5e\x62\x38')+'\x63\x65']=_0x45197d,_0x1beb15['\x73\x74\x61\x72\x74\x57\x6f\x72'+_0x22aab7(0x177,'\x6d\x41\x42\x21')]=_0x4ee2fe,_0x1beb15[_0x22aab7(0x137,'\x26\x21\x43\x62')+'\x65\x72']=_0x261029,_0x1beb15[_0x22aab7(0x218,'\x26\x57\x4e\x71')+_0x22aab7(0x151,'\x44\x4d\x59\x46')]=_0xdd0387,_0x1beb15[_0x22aab7(0xf2,'\x4a\x71\x75\x59')+_0x22aab7(0x21a,'\x44\x75\x4f\x40')]=_0x1de281,_0x1beb15[_0x22aab7(0x224,'\x6b\x6a\x4a\x23')+_0x22aab7(0x1d8,'\x4e\x40\x4a\x59')]=_0x494521,_0x1beb15[_0x22aab7(0xf6,'\x52\x29\x75\x54')+_0x22aab7(0x1ca,'\x26\x64\x25\x4f')+'\x6f\x72\x54\x65\x73\x74\x69\x6e'+'\x67']=_0x2ab93c,module['\x65\x78\x70\x6f\x72\x74\x73']=_0x1beb15;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// recallVerifier — confirm that assets we publish to Hub can actually be
|
|
5
|
+
// recalled later. After a successful publish (capsule bundle, anti-pattern,
|
|
6
|
+
// or skill bundle), enqueue the asset_id; a background worker uses Hub's
|
|
7
|
+
// Phase 2 deterministic lookup to verify the asset round-trips, with
|
|
8
|
+
// exponential backoff to absorb Hub indexing latency. Outcomes land as
|
|
9
|
+
// MemoryGraphEvents of kind 'recall_verify' so a report script can compute
|
|
10
|
+
// per-asset-type success rates and gate releases.
|
|
11
|
+
//
|
|
12
|
+
// Scope: only assets with a content-hash asset_id are verified. MemoryGraph
|
|
13
|
+
// events themselves go through a different transport (POST /a2a/memory/event,
|
|
14
|
+
// not the asset store) and produce no asset_id, so they cannot be subject to
|
|
15
|
+
// roundtrip verification. This naturally terminates any recursion of
|
|
16
|
+
// recall_verify events that would otherwise mirror to Hub.
|
|
17
|
+
//
|
|
18
|
+
// Graceful degradation: if fetchAssetById fails for any reason (network,
|
|
19
|
+
// auth, schema), the worker emits 'verification_skipped' rather than
|
|
20
|
+
// throwing. Verification must NEVER block the daemon cycle.
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
const { envInt, envFloat } = require('../config');
|
|
24
|
+
const { fetchAssetById } = require('./hubSearch');
|
|
25
|
+
const { computeAssetId } = require('./contentHash');
|
|
26
|
+
const { writeMemoryGraphEvent } = require('./memoryGraph');
|
|
27
|
+
|
|
28
|
+
// --- Module state (per-process lifetime, bounded) ---
|
|
29
|
+
|
|
30
|
+
let _queue = [];
|
|
31
|
+
const _inflightAssetIds = new Set();
|
|
32
|
+
let _workerStarted = false;
|
|
33
|
+
let _workerTimer = null;
|
|
34
|
+
let _lastReport = { ok: 0, missing: 0, mismatch: 0, skipped: 0 };
|
|
35
|
+
|
|
36
|
+
// Backoff schedule between attempts. attempt 1 fires INITIAL_WAIT_MS after
|
|
37
|
+
// publish; if it returns missing, retries fire after these intervals.
|
|
38
|
+
const BACKOFF_MS = [5000, 15000, 60000];
|
|
39
|
+
|
|
40
|
+
// --- Env getters (read at call time, never module-load) ---
|
|
41
|
+
|
|
42
|
+
function _isFeatureEnabled() {
|
|
43
|
+
// Default OFF: Hub /a2a/fetch contract is strict (unknown asset_id → empty
|
|
44
|
+
// results, 0 cost) so client-side round-trip verification is redundant as a
|
|
45
|
+
// default safety net. Operators who want end-to-end SLA observability can
|
|
46
|
+
// opt in with EVOLVE_RECALL_VERIFY=1; events still emit locally and (once
|
|
47
|
+
// Hub-side schema lands, see EvoMap/evomap-hub#670) optionally to Hub.
|
|
48
|
+
return String(process.env.EVOLVE_RECALL_VERIFY || '0') === '1';
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function _getSampleRate() {
|
|
52
|
+
// Clamp to [0, 1] to match the startup banner in index.js. A negative
|
|
53
|
+
// env value would otherwise make the gate `Math.random() >= rate`
|
|
54
|
+
// always true → every verify silently skipped, while the banner
|
|
55
|
+
// (which does its own range clamp) still shows 1.0. Operators need
|
|
56
|
+
// the implementation and the banner to agree. (Bugbot review on PR #53.)
|
|
57
|
+
const raw = envFloat('EVOLVE_RECALL_VERIFY_SAMPLE_RATE', 1.0);
|
|
58
|
+
if (!Number.isFinite(raw) || raw < 0 || raw > 1) return 1.0;
|
|
59
|
+
return raw;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _getQueueMax() {
|
|
63
|
+
return envInt('EVOLVE_RECALL_VERIFY_QUEUE_MAX', 256);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function _getPollMs() {
|
|
67
|
+
return envInt('EVOLVE_RECALL_VERIFY_POLL_MS', 5000);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function _getInitialWaitMs() {
|
|
71
|
+
return envInt('EVOLVE_RECALL_VERIFY_INITIAL_WAIT_MS', 5000);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function _getMaxAttempts() {
|
|
75
|
+
return envInt('EVOLVE_RECALL_VERIFY_ATTEMPTS', 3);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function _getFetchTimeoutMs() {
|
|
79
|
+
return envInt('EVOLVE_RECALL_VERIFY_FETCH_TIMEOUT_MS', 8000);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// --- Event emission ---
|
|
83
|
+
|
|
84
|
+
function _emitEvent(entry, outcome, reason, extras) {
|
|
85
|
+
const ts = Date.now();
|
|
86
|
+
const verification = {
|
|
87
|
+
outcome,
|
|
88
|
+
reason: reason || null,
|
|
89
|
+
attempts: extras && Number.isFinite(extras.attempts) ? extras.attempts : (entry.attempts || 0),
|
|
90
|
+
latency_ms: extras && Number.isFinite(extras.latency_ms) ? extras.latency_ms : 0,
|
|
91
|
+
age_at_verify_ms: entry.publishedAt ? (ts - entry.publishedAt) : 0,
|
|
92
|
+
recalled_hash: extras && extras.recalled_hash ? extras.recalled_hash : null,
|
|
93
|
+
};
|
|
94
|
+
const ev = {
|
|
95
|
+
type: 'MemoryGraphEvent',
|
|
96
|
+
kind: 'recall_verify',
|
|
97
|
+
id: 'mge_' + ts + '_' + Math.random().toString(36).slice(2, 10),
|
|
98
|
+
ts,
|
|
99
|
+
asset: {
|
|
100
|
+
type: entry.type || 'Unknown',
|
|
101
|
+
id: entry.asset_id || null,
|
|
102
|
+
},
|
|
103
|
+
verification,
|
|
104
|
+
signal: { signals: Array.isArray(entry.signals) ? entry.signals.slice(0, 8) : [] },
|
|
105
|
+
};
|
|
106
|
+
try {
|
|
107
|
+
writeMemoryGraphEvent(ev);
|
|
108
|
+
} catch (writeErr) {
|
|
109
|
+
if (process.env.EVOLVE_RECALL_VERIFY_DEBUG === '1') {
|
|
110
|
+
console.warn('[RecallVerify] writeMemoryGraphEvent failed: ' + (writeErr && writeErr.message || writeErr));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (outcome === 'roundtrip_ok') _lastReport.ok++;
|
|
114
|
+
else if (outcome === 'roundtrip_missing') _lastReport.missing++;
|
|
115
|
+
else if (outcome === 'roundtrip_mismatch') _lastReport.mismatch++;
|
|
116
|
+
else _lastReport.skipped++;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// --- Public API ---
|
|
120
|
+
|
|
121
|
+
function enqueuePublishedAsset(input) {
|
|
122
|
+
const entry = {
|
|
123
|
+
asset_id: input && input.asset_id ? String(input.asset_id) : null,
|
|
124
|
+
type: input && input.type ? String(input.type) : 'Unknown',
|
|
125
|
+
signals: Array.isArray(input && input.signals) ? input.signals : [],
|
|
126
|
+
publishedAt: input && Number.isFinite(input.publishedAt) ? input.publishedAt : Date.now(),
|
|
127
|
+
attempts: 0,
|
|
128
|
+
nextEligibleAt: 0,
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
if (!_isFeatureEnabled()) {
|
|
132
|
+
_emitEvent(entry, 'verification_skipped', 'feature_disabled');
|
|
133
|
+
return { enqueued: false, reason: 'feature_disabled' };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (!entry.asset_id) {
|
|
137
|
+
_emitEvent(entry, 'verification_skipped', 'missing_asset_id');
|
|
138
|
+
return { enqueued: false, reason: 'missing_asset_id' };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const sampleRate = _getSampleRate();
|
|
142
|
+
if (sampleRate < 1.0 && Math.random() >= sampleRate) {
|
|
143
|
+
_emitEvent(entry, 'verification_skipped', 'sample_rate');
|
|
144
|
+
return { enqueued: false, reason: 'sample_rate' };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
entry.nextEligibleAt = entry.publishedAt + _getInitialWaitMs();
|
|
148
|
+
|
|
149
|
+
const queueMax = _getQueueMax();
|
|
150
|
+
while (_queue.length >= queueMax) {
|
|
151
|
+
const dropped = _queue.shift();
|
|
152
|
+
_emitEvent(dropped, 'verification_skipped', 'queue_full');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
_queue.push(entry);
|
|
156
|
+
return { enqueued: true };
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Single-asset verification. Returns one of the four outcomes.
|
|
160
|
+
// outcome ∈ { roundtrip_ok | roundtrip_missing | roundtrip_mismatch | verification_skipped }
|
|
161
|
+
async function verifyOnce(assetId, assetType) {
|
|
162
|
+
const t0 = Date.now();
|
|
163
|
+
if (!assetId) {
|
|
164
|
+
return { outcome: 'verification_skipped', reason: 'missing_asset_id', latency_ms: 0, recalled_hash: null };
|
|
165
|
+
}
|
|
166
|
+
let result;
|
|
167
|
+
try {
|
|
168
|
+
result = await fetchAssetById(assetId, { timeoutMs: _getFetchTimeoutMs(), bypassCache: true });
|
|
169
|
+
} catch (err) {
|
|
170
|
+
return {
|
|
171
|
+
outcome: 'verification_skipped',
|
|
172
|
+
reason: 'hub_unreachable',
|
|
173
|
+
latency_ms: Date.now() - t0,
|
|
174
|
+
recalled_hash: null,
|
|
175
|
+
error: err && err.message || String(err),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const latency = Date.now() - t0;
|
|
180
|
+
|
|
181
|
+
if (!result || !result.ok) {
|
|
182
|
+
return {
|
|
183
|
+
outcome: 'verification_skipped',
|
|
184
|
+
reason: 'hub_unreachable',
|
|
185
|
+
latency_ms: latency,
|
|
186
|
+
recalled_hash: null,
|
|
187
|
+
error: (result && result.error) || 'fetch_not_ok',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!result.asset) {
|
|
192
|
+
return { outcome: 'roundtrip_missing', reason: null, latency_ms: latency, recalled_hash: null };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const recalled = result.asset;
|
|
196
|
+
if (recalled.asset_id !== assetId) {
|
|
197
|
+
return { outcome: 'roundtrip_missing', reason: 'wrong_asset', latency_ms: latency, recalled_hash: recalled.asset_id || null };
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Recompute the asset_id from the recalled body. If it doesn't match what
|
|
201
|
+
// the recalled asset claims its asset_id is, the Hub re-encoded or
|
|
202
|
+
// corrupted the asset between publish and fetch.
|
|
203
|
+
let recomputed;
|
|
204
|
+
try {
|
|
205
|
+
recomputed = computeAssetId(recalled);
|
|
206
|
+
} catch (hashErr) {
|
|
207
|
+
return {
|
|
208
|
+
outcome: 'verification_skipped',
|
|
209
|
+
reason: 'hash_recompute_failed',
|
|
210
|
+
latency_ms: latency,
|
|
211
|
+
recalled_hash: null,
|
|
212
|
+
error: hashErr && hashErr.message || String(hashErr),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (recomputed !== recalled.asset_id) {
|
|
217
|
+
return { outcome: 'roundtrip_mismatch', reason: 'hash_drift', latency_ms: latency, recalled_hash: recomputed };
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return { outcome: 'roundtrip_ok', reason: null, latency_ms: latency, recalled_hash: recomputed };
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Drain the queue once. Public + idempotent so tests can drive it
|
|
224
|
+
// synchronously without waiting on setInterval.
|
|
225
|
+
async function _runWorkerOnce() {
|
|
226
|
+
if (_queue.length === 0) return { processed: 0 };
|
|
227
|
+
const now = Date.now();
|
|
228
|
+
const maxAttempts = _getMaxAttempts();
|
|
229
|
+
const ready = [];
|
|
230
|
+
for (let i = 0; i < _queue.length; i++) {
|
|
231
|
+
const entry = _queue[i];
|
|
232
|
+
if (entry.nextEligibleAt <= now && !_inflightAssetIds.has(entry.asset_id)) {
|
|
233
|
+
ready.push(entry);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (ready.length === 0) return { processed: 0 };
|
|
237
|
+
|
|
238
|
+
let processed = 0;
|
|
239
|
+
for (const entry of ready) {
|
|
240
|
+
_inflightAssetIds.add(entry.asset_id);
|
|
241
|
+
try {
|
|
242
|
+
entry.attempts += 1;
|
|
243
|
+
const verifyResult = await verifyOnce(entry.asset_id, entry.type);
|
|
244
|
+
|
|
245
|
+
const isRetryable = (verifyResult.outcome === 'roundtrip_missing' ||
|
|
246
|
+
(verifyResult.outcome === 'verification_skipped' && verifyResult.reason === 'hub_unreachable'));
|
|
247
|
+
const hasAttemptsLeft = entry.attempts < maxAttempts;
|
|
248
|
+
|
|
249
|
+
if (isRetryable && hasAttemptsLeft) {
|
|
250
|
+
const backoffIdx = Math.min(entry.attempts - 1, BACKOFF_MS.length - 1);
|
|
251
|
+
entry.nextEligibleAt = Date.now() + BACKOFF_MS[backoffIdx];
|
|
252
|
+
} else {
|
|
253
|
+
_emitEvent(entry, verifyResult.outcome, verifyResult.reason, {
|
|
254
|
+
attempts: entry.attempts,
|
|
255
|
+
latency_ms: verifyResult.latency_ms,
|
|
256
|
+
recalled_hash: verifyResult.recalled_hash,
|
|
257
|
+
});
|
|
258
|
+
const idx = _queue.indexOf(entry);
|
|
259
|
+
if (idx !== -1) _queue.splice(idx, 1);
|
|
260
|
+
}
|
|
261
|
+
processed += 1;
|
|
262
|
+
} finally {
|
|
263
|
+
// Always release inflight (including on retry) — next poll re-adds.
|
|
264
|
+
_inflightAssetIds.delete(entry.asset_id);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return { processed };
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function startWorker() {
|
|
271
|
+
if (_workerStarted) return;
|
|
272
|
+
_workerStarted = true;
|
|
273
|
+
const pollMs = _getPollMs();
|
|
274
|
+
_workerTimer = setInterval(function () {
|
|
275
|
+
_runWorkerOnce().catch(function (err) {
|
|
276
|
+
if (process.env.EVOLVE_RECALL_VERIFY_DEBUG === '1') {
|
|
277
|
+
console.warn('[RecallVerify] worker tick failed: ' + (err && err.message || err));
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}, pollMs);
|
|
281
|
+
if (_workerTimer && typeof _workerTimer.unref === 'function') {
|
|
282
|
+
_workerTimer.unref();
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function stopWorker() {
|
|
287
|
+
if (_workerTimer) {
|
|
288
|
+
clearInterval(_workerTimer);
|
|
289
|
+
_workerTimer = null;
|
|
290
|
+
}
|
|
291
|
+
_workerStarted = false;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function getLastReport() {
|
|
295
|
+
return Object.assign({}, _lastReport);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function _resetForTesting() {
|
|
299
|
+
stopWorker();
|
|
300
|
+
_queue = [];
|
|
301
|
+
_inflightAssetIds.clear();
|
|
302
|
+
_lastReport = { ok: 0, missing: 0, mismatch: 0, skipped: 0 };
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function _getQueueLengthForTesting() {
|
|
306
|
+
return _queue.length;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
module.exports = {
|
|
310
|
+
enqueuePublishedAsset,
|
|
311
|
+
verifyOnce,
|
|
312
|
+
startWorker,
|
|
313
|
+
stopWorker,
|
|
314
|
+
getLastReport,
|
|
315
|
+
_runWorkerOnce,
|
|
316
|
+
_resetForTesting,
|
|
317
|
+
_getQueueLengthForTesting,
|
|
318
|
+
};
|