@evomap/evolver 1.88.3 → 1.89.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/BUGBOT.md +182 -0
- package/.env.example +68 -0
- package/.git-commit-guard-token +1 -0
- package/.github/CODEOWNERS +63 -0
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
- package/.github/pull_request_template.md +45 -0
- package/.github/workflows/test.yml +75 -0
- package/CHANGELOG.md +1123 -0
- package/README.md +86 -543
- package/README.public.md +594 -0
- package/SECURITY.md +108 -0
- package/assets/gep/events.jsonl +3 -0
- package/examples/atp-consumer-quickstart.md +100 -0
- package/examples/hello-world.md +38 -0
- package/index.js +30 -1
- package/package.json +5 -15
- package/proxy-package.json +39 -0
- package/public.manifest.json +141 -0
- package/src/evolve/guards.js +721 -1
- package/src/evolve/pipeline/collect.js +1283 -1
- package/src/evolve/pipeline/dispatch.js +421 -1
- package/src/evolve/pipeline/enrich.js +434 -1
- package/src/evolve/pipeline/hub.js +319 -1
- package/src/evolve/pipeline/select.js +274 -1
- package/src/evolve/pipeline/signals.js +206 -1
- package/src/evolve/utils.js +264 -1
- package/src/evolve.js +350 -1
- package/src/gep/a2aProtocol.js +4395 -1
- package/src/gep/assetCallLog.js +30 -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 +198 -1
- package/src/gep/contentHash.js +30 -1
- package/src/gep/conversationSniffer.js +266 -1
- package/src/gep/crypto.js +89 -1
- package/src/gep/curriculum.js +163 -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 +711 -1
- package/src/gep/explore.js +289 -1
- package/src/gep/hash.js +15 -1
- package/src/gep/hubFetch.js +359 -1
- package/src/gep/hubReview.js +207 -1
- package/src/gep/hubSearch.js +526 -1
- package/src/gep/hubVerify.js +306 -1
- package/src/gep/learningSignals.js +89 -1
- package/src/gep/memoryGraph.js +1374 -1
- package/src/gep/memoryGraphAdapter.js +203 -1
- package/src/gep/mutation.js +203 -1
- package/src/gep/narrativeMemory.js +108 -1
- package/src/gep/oauthLogin.js +143 -0
- package/src/gep/openPRRegistry.js +205 -1
- package/src/gep/personality.js +423 -1
- package/src/gep/policyCheck.js +599 -1
- package/src/gep/prompt.js +836 -1
- package/src/gep/recallInject.js +409 -1
- package/src/gep/recallVerifier.js +318 -1
- package/src/gep/reflection.js +177 -1
- package/src/gep/schemas/capsule.js +26 -0
- package/src/gep/selector.js +602 -1
- package/src/gep/skillDistiller.js +1294 -1
- package/src/gep/solidify.js +1699 -1
- package/src/gep/strategy.js +136 -1
- package/src/gep/tokenSavings.js +88 -0
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +99 -1
- package/src/proxy/index.js +36 -6
- package/src/proxy/inject.js +52 -1
- package/src/proxy/trace/extractor.js +534 -1
- package/src/proxy/trace/usage.js +105 -0
- package/CONTRIBUTING.md +0 -11
- package/assets/cover.png +0 -0
- package/scripts/a2a_export.js +0 -63
- package/scripts/a2a_ingest.js +0 -79
- package/scripts/a2a_promote.js +0 -118
- package/scripts/analyze_by_skill.js +0 -121
- package/scripts/build_binaries.js +0 -479
- package/scripts/check-changelog.js +0 -166
- package/scripts/extract_log.js +0 -85
- package/scripts/generate_history.js +0 -75
- package/scripts/gep_append_event.js +0 -96
- package/scripts/gep_personality_report.js +0 -234
- package/scripts/human_report.js +0 -147
- package/scripts/recall-verify-report.js +0 -234
- package/scripts/recover_loop.js +0 -61
- package/scripts/seed-merchants.js +0 -91
- package/scripts/suggest_version.js +0 -89
- package/scripts/validate-modules.js +0 -38
- package/scripts/validate-suite.js +0 -78
- package/skills/index.json +0 -14
- /package/assets/gep/{genes.seed.json → genes.json} +0 -0
- /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
|
@@ -1 +1,318 @@
|
|
|
1
|
-
const _0x1369a7=_0x1286;(function(_0x418f24,_0x245832){const _0x3c51a6=_0x1286,_0x26f357=_0x418f24();while(!![]){try{const _0x9f1ae2=-parseInt(_0x3c51a6(0x2dd,'\x6b\x70\x67\x51'))/(-0xdf1+-0x10e9+0xa49*0x3)*(parseInt(_0x3c51a6(0x2cf,'\x71\x40\x76\x28'))/(0x23e9+-0x92f*0x1+-0x474*0x6))+-parseInt(_0x3c51a6(0x34c,'\x4a\x4a\x35\x51'))/(0x2637+-0x1*0x1435+-0x11ff)+-parseInt(_0x3c51a6(0x310,'\x68\x6f\x47\x54'))/(0x116b+0x926*-0x2+-0x1*-0xe5)+parseInt(_0x3c51a6(0x2be,'\x68\x66\x4c\x5b'))/(0x44*0x11+-0x1a3f+0x15c0)+-parseInt(_0x3c51a6(0x2eb,'\x5e\x4c\x24\x79'))/(0x833+0x243f*0x1+-0x2c6c)*(-parseInt(_0x3c51a6(0x2c4,'\x66\x71\x56\x64'))/(-0x1856+-0x1*-0x1ac+0x16b1))+parseInt(_0x3c51a6(0x2e3,'\x68\x66\x4c\x5b'))/(-0x15fd*-0x1+0x1440+-0x2a35)*(-parseInt(_0x3c51a6(0x334,'\x63\x49\x53\x35'))/(-0x1b83*-0x1+-0x13*0x2e+-0x1810))+parseInt(_0x3c51a6(0x2e7,'\x68\x38\x4b\x74'))/(0x1e3f+-0x2590+0x1*0x75b);if(_0x9f1ae2===_0x245832)break;else _0x26f357['push'](_0x26f357['shift']());}catch(_0x1f872f){_0x26f357['push'](_0x26f357['shift']());}}}(_0x38fa,-0xef3d8+0x11ed1+0x1b*0xd239));const _0x3b8589=(function(){const _0x559887=_0x1286,_0x4b9e4c={'\x6e\x55\x64\x62\x41':_0x559887(0x392,'\x5d\x5a\x40\x53')+_0x559887(0x220,'\x38\x70\x5d\x4d')+_0x559887(0x1ee,'\x37\x76\x6e\x71')+_0x559887(0x3b3,'\x50\x6c\x2a\x71')+_0x559887(0x2ec,'\x21\x57\x5d\x56')+_0x559887(0x288,'\x68\x38\x4b\x74'),'\x4e\x71\x78\x64\x62':_0x559887(0x35a,'\x32\x42\x76\x58')+_0x559887(0x2e9,'\x78\x4b\x69\x51')+_0x559887(0x2cd,'\x47\x59\x5d\x28'),'\x7a\x64\x64\x4c\x73':function(_0x3af29c,_0x3e938e){return _0x3af29c!==_0x3e938e;},'\x50\x61\x41\x5a\x57':_0x559887(0x213,'\x35\x38\x79\x73'),'\x47\x76\x7a\x71\x4f':_0x559887(0x1fd,'\x6b\x70\x67\x51'),'\x7a\x4c\x4d\x71\x46':function(_0x8ef859,_0x4d9b22){return _0x8ef859===_0x4d9b22;},'\x52\x6f\x58\x78\x62':_0x559887(0x3a9,'\x66\x71\x56\x64'),'\x41\x44\x54\x51\x77':function(_0x409adc){return _0x409adc();},'\x54\x65\x63\x69\x56':function(_0x844d6b,_0x202205){return _0x844d6b+_0x202205;},'\x4a\x4e\x47\x6c\x49':function(_0x19a775,_0xb0d1b3){return _0x19a775!==_0xb0d1b3;},'\x55\x43\x79\x45\x59':_0x559887(0x3cd,'\x50\x6d\x61\x69'),'\x59\x50\x6a\x41\x59':_0x559887(0x31f,'\x62\x66\x79\x5a')};let _0x130593=!![];return function(_0x147275,_0x4c73e2){const _0x2e1e21=_0x559887,_0x502dd3={'\x41\x42\x77\x7a\x49':function(_0x511067,_0x4b7ea5){const _0x3dc656=_0x1286;return _0x4b9e4c[_0x3dc656(0x2a4,'\x47\x59\x5d\x28')](_0x511067,_0x4b7ea5);},'\x6e\x4f\x61\x72\x54':function(_0x5d4464,_0x2ef70e){const _0xc30ec6=_0x1286;return _0x4b9e4c[_0xc30ec6(0x20e,'\x39\x6b\x71\x56')](_0x5d4464,_0x2ef70e);}};if(_0x4b9e4c[_0x2e1e21(0x37f,'\x29\x77\x39\x4d')](_0x4b9e4c[_0x2e1e21(0x338,'\x68\x66\x4c\x5b')],_0x4b9e4c[_0x2e1e21(0x316,'\x37\x79\x6b\x45')])){const _0x345ce9=_0x130593?function(){const _0x319e9f=_0x2e1e21,_0x57a2ab={};_0x57a2ab[_0x319e9f(0x345,'\x4e\x43\x38\x74')]=_0x4b9e4c[_0x319e9f(0x32f,'\x72\x79\x78\x4a')],_0x57a2ab[_0x319e9f(0x33c,'\x71\x40\x76\x28')]=_0x4b9e4c[_0x319e9f(0x254,'\x56\x29\x4f\x79')],_0x57a2ab[_0x319e9f(0x39c,'\x47\x38\x33\x51')]=_0x319e9f(0x2c6,'\x62\x66\x79\x5a')+_0x319e9f(0x28f,'\x47\x59\x5d\x28');const _0x520f0f=_0x57a2ab;if(_0x4b9e4c[_0x319e9f(0x3a7,'\x5a\x6d\x46\x6c')](_0x4b9e4c[_0x319e9f(0x2b9,'\x34\x39\x46\x30')],_0x4b9e4c[_0x319e9f(0x1f4,'\x70\x6f\x48\x63')])){if(_0x4c73e2){if(_0x4b9e4c[_0x319e9f(0x2ae,'\x72\x79\x78\x4a')](_0x4b9e4c[_0x319e9f(0x395,'\x37\x79\x6b\x45')],_0x4b9e4c[_0x319e9f(0x301,'\x6c\x4e\x53\x42')])){const _0x36379f=_0x4c73e2[_0x319e9f(0x240,'\x50\x6d\x61\x69')](_0x147275,arguments);return _0x4c73e2=null,_0x36379f;}else _0x49e54c.env.EVOLVE_RECALL_VERIFY_DEBUG==='\x31'&&_0x2dff5a[_0x319e9f(0x2a7,'\x78\x4b\x69\x51')](_0x520f0f[_0x319e9f(0x2b6,'\x68\x66\x4c\x5b')]+(_0x13672f&&_0xab6696[_0x319e9f(0x3ba,'\x4b\x49\x4f\x40')]||_0x2ae31e));}}else{const _0x4d60ba={};return _0x4d60ba['\x6f\x75\x74\x63\x6f\x6d\x65']=_0x520f0f[_0x319e9f(0x272,'\x38\x70\x5d\x4d')],_0x4d60ba[_0x319e9f(0x30d,'\x35\x2a\x32\x54')]=_0x520f0f[_0x319e9f(0x328,'\x39\x6b\x71\x56')],_0x4d60ba[_0x319e9f(0x29b,'\x5e\x4c\x24\x79')+'\x6d\x73']=0x0,_0x4d60ba[_0x319e9f(0x3b1,'\x4b\x49\x4f\x40')+_0x319e9f(0x339,'\x50\x54\x45\x78')]=null,_0x4d60ba;}}:function(){};return _0x130593=![],_0x345ce9;}else _0x4b9e4c['\x41\x44\x54\x51\x77'](_0x105058)[_0x2e1e21(0x38d,'\x35\x38\x79\x73')](function(_0x254bfc){const _0x42424e=_0x2e1e21;_0x502dd3[_0x42424e(0x2a0,'\x62\x6e\x55\x4a')](_0x315376.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&_0x45808f[_0x42424e(0x32b,'\x6f\x73\x29\x6a')](_0x502dd3[_0x42424e(0x3b6,'\x56\x46\x44\x36')](_0x42424e(0x203,'\x4b\x49\x4f\x40')+_0x42424e(0x22b,'\x50\x6f\x28\x50')+_0x42424e(0x204,'\x74\x35\x38\x24')+_0x42424e(0x307,'\x29\x73\x59\x38')+_0x42424e(0x258,'\x50\x6c\x2a\x71'),_0x254bfc&&_0x254bfc['\x6d\x65\x73\x73\x61\x67\x65']||_0x254bfc));});};}()),_0x545e33=_0x3b8589(this,function(){const _0x456642=_0x1286,_0x1df0f9={};_0x1df0f9[_0x456642(0x34d,'\x56\x46\x44\x36')]=_0x456642(0x364,'\x50\x54\x45\x78')+_0x456642(0x2b7,'\x35\x38\x79\x73');const _0x502621=_0x1df0f9;return _0x545e33['\x74\x6f\x53\x74\x72\x69\x6e\x67']()['\x73\x65\x61\x72\x63\x68'](_0x456642(0x2ce,'\x68\x6f\x47\x54')+_0x456642(0x285,'\x71\x40\x76\x28'))[_0x456642(0x276,'\x4a\x4a\x35\x51')]()[_0x456642(0x3c2,'\x35\x2a\x32\x54')+_0x456642(0x1f8,'\x50\x6d\x61\x69')](_0x545e33)[_0x456642(0x229,'\x61\x4e\x73\x40')](_0x502621[_0x456642(0x2c2,'\x4a\x4a\x35\x51')]);});_0x545e33();'use strict';const {envInt:_0x5619a3,envFloat:_0x2cc489}=require('\x2e\x2e\x2f\x63\x6f\x6e\x66\x69'+'\x67'),{fetchAssetById:_0xcb7dfe}=require(_0x1369a7(0x325,'\x32\x42\x76\x58')+_0x1369a7(0x337,'\x5a\x70\x28\x6b')),{computeAssetId:_0x346c4d}=require(_0x1369a7(0x399,'\x56\x4a\x53\x71')+_0x1369a7(0x256,'\x66\x71\x56\x64')),{writeMemoryGraphEvent:_0x4542c3}=require('\x2e\x2f\x6d\x65\x6d\x6f\x72\x79'+_0x1369a7(0x35b,'\x21\x57\x5d\x56'));let _0x3535e1=[];const _0x1e9753=new Set();let _0x1387e5=![],_0x5c2ebc=null;const _0x3052f2={};_0x3052f2['\x6f\x6b']=0x0,_0x3052f2[_0x1369a7(0x389,'\x68\x38\x4b\x74')]=0x0,_0x3052f2[_0x1369a7(0x3aa,'\x72\x79\x78\x4a')]=0x0,_0x3052f2[_0x1369a7(0x292,'\x62\x6e\x55\x4a')]=0x0;let _0xb2c662=_0x3052f2;const _0x3435ac=[-0x214c+-0xd35+0x4209,0x6a12+-0x2709+0x871*-0x1,0x1*-0x8b6f+0x85bd+0xf012];function _0x3be32f(){const _0x3b9f06=_0x1369a7,_0x31ea4a={'\x4f\x41\x64\x48\x59':function(_0x511aa8,_0x1bdd85){return _0x511aa8===_0x1bdd85;},'\x48\x63\x57\x69\x6a':function(_0x437461,_0x310af6){return _0x437461(_0x310af6);}};return _0x31ea4a[_0x3b9f06(0x26a,'\x29\x73\x59\x38')](_0x31ea4a[_0x3b9f06(0x2f7,'\x50\x6c\x2a\x71')](String,process.env.EVOLVE_RECALL_VERIFY||'\x30'),'\x31');}function _0x5045c8(){const _0x384b5f=_0x1369a7,_0x415559={'\x61\x7a\x48\x4f\x46':function(_0x5e4bbf,_0x28ba79,_0x376295){return _0x5e4bbf(_0x28ba79,_0x376295);},'\x67\x4b\x70\x54\x62':_0x384b5f(0x2d1,'\x4b\x49\x4f\x40')+_0x384b5f(0x210,'\x56\x46\x44\x36')+_0x384b5f(0x374,'\x47\x59\x5d\x28')+_0x384b5f(0x284,'\x50\x6c\x2a\x71'),'\x6f\x7a\x6d\x48\x45':function(_0x91c5db,_0x8c408d){return _0x91c5db>_0x8c408d;}},_0x15387c=_0x415559[_0x384b5f(0x306,'\x30\x75\x6f\x4b')](_0x2cc489,_0x415559[_0x384b5f(0x387,'\x78\x4b\x69\x51')],0x15de+-0x2559+-0x4*-0x3df);if(!Number[_0x384b5f(0x236,'\x37\x79\x6b\x45')](_0x15387c)||_0x15387c<-0xb+0x8*-0xc7+0x1*0x643||_0x415559[_0x384b5f(0x261,'\x72\x79\x78\x4a')](_0x15387c,-0x20de+-0x1e7f*0x1+0x3f5e))return 0x1166+0x2231+-0x3396;return _0x15387c;}function _0x1286(_0x4572c9,_0x3b5eb4){_0x4572c9=_0x4572c9-(0x8*-0x8e+0x2*0x72e+-0x7fe);const _0x1c8b03=_0x38fa();let _0xd2d9fc=_0x1c8b03[_0x4572c9];if(_0x1286['\x42\x51\x4e\x55\x57\x56']===undefined){var _0x5d6732=function(_0x6b5d04){const _0x3210d7='\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 _0x5a80f8='',_0xe17eee='',_0x25dcb0=_0x5a80f8+_0x5d6732,_0x19a62b=(''+function(){return 0x45*0x31+-0xd*0x4b+-0x966;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0xbfa+0x18c5*-0x1+0xccc);for(let _0x45ad04=-0x1*0x25d3+0xee2+-0x7*-0x347,_0x1bcc47,_0x2dc51e,_0xebc9fa=-0x1553+0xcb*-0x13+0x89*0x44;_0x2dc51e=_0x6b5d04['\x63\x68\x61\x72\x41\x74'](_0xebc9fa++);~_0x2dc51e&&(_0x1bcc47=_0x45ad04%(-0x65e*-0x6+-0x1*0xa3f+-0x1bf1)?_0x1bcc47*(-0x2630+0x2*0x284+0x2168)+_0x2dc51e:_0x2dc51e,_0x45ad04++%(-0x1*0x22eb+0x21cb*-0x1+0x225d*0x2))?_0x5a80f8+=_0x19a62b||_0x25dcb0['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xebc9fa+(-0x2*0xb24+-0x1edb+0x352d))-(0x1*0x26d7+-0x1*0x247b+0x6*-0x63)!==0x1e21+0x1cc6+-0x3ae7?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x1eb1+0x15cc+-0x279*-0x4&_0x1bcc47>>(-(0xf17+-0xbf*0x21+0x4a*0x21)*_0x45ad04&-0x79*-0xd+0x43f*-0x9+0x13c*0x1a)):_0x45ad04:0x215*-0x10+0x8*-0x43e+0x40*0x10d){_0x2dc51e=_0x3210d7['\x69\x6e\x64\x65\x78\x4f\x66'](_0x2dc51e);}for(let _0xdca36=-0x919+-0x5*0x751+-0xf3a*-0x3,_0x5c5005=_0x5a80f8['\x6c\x65\x6e\x67\x74\x68'];_0xdca36<_0x5c5005;_0xdca36++){_0xe17eee+='\x25'+('\x30\x30'+_0x5a80f8['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xdca36)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0xe7+0x1bff+0x6c2*-0x4))['\x73\x6c\x69\x63\x65'](-(-0x81f*-0x1+0x37*-0x1a+-0x287));}return decodeURIComponent(_0xe17eee);};const _0x23f79b=function(_0x3f8c74,_0x441468){let _0x4a2f21=[],_0x3788c1=-0x14a8+-0xbb5+0x205d,_0xb57e45,_0x20b00e='';_0x3f8c74=_0x5d6732(_0x3f8c74);let _0x143f5b;for(_0x143f5b=-0x2*0xf26+-0x35*0x13+0x17d*0x17;_0x143f5b<-0x7f9*-0x3+0x23b4+-0x3a9f;_0x143f5b++){_0x4a2f21[_0x143f5b]=_0x143f5b;}for(_0x143f5b=0xef+-0x1*0x130c+0x121d;_0x143f5b<0x1107+0x4b8+0x2f*-0x71;_0x143f5b++){_0x3788c1=(_0x3788c1+_0x4a2f21[_0x143f5b]+_0x441468['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x143f5b%_0x441468['\x6c\x65\x6e\x67\x74\x68']))%(0x19db+0x77e+0xd*-0x27d),_0xb57e45=_0x4a2f21[_0x143f5b],_0x4a2f21[_0x143f5b]=_0x4a2f21[_0x3788c1],_0x4a2f21[_0x3788c1]=_0xb57e45;}_0x143f5b=-0xad0*-0x1+0xb90+-0xb30*0x2,_0x3788c1=0x526+0x2*0xf10+-0x2346;for(let _0x3b9f76=-0x4*0x92f+-0x771+0x107*0x2b;_0x3b9f76<_0x3f8c74['\x6c\x65\x6e\x67\x74\x68'];_0x3b9f76++){_0x143f5b=(_0x143f5b+(-0x1c7*0x15+-0x21a6+0x46fa))%(-0x15b3+-0xa7+0x175a),_0x3788c1=(_0x3788c1+_0x4a2f21[_0x143f5b])%(-0x7*-0x506+-0x2671+-0x447*-0x1),_0xb57e45=_0x4a2f21[_0x143f5b],_0x4a2f21[_0x143f5b]=_0x4a2f21[_0x3788c1],_0x4a2f21[_0x3788c1]=_0xb57e45,_0x20b00e+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x3f8c74['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3b9f76)^_0x4a2f21[(_0x4a2f21[_0x143f5b]+_0x4a2f21[_0x3788c1])%(-0x19f5+-0xa35*-0x3+0x1d5*-0x2)]);}return _0x20b00e;};_0x1286['\x6c\x48\x4f\x61\x6e\x55']=_0x23f79b,_0x1286['\x44\x69\x54\x4d\x50\x44']={},_0x1286['\x42\x51\x4e\x55\x57\x56']=!![];}const _0x33e06b=_0x1c8b03[0x668+0x1*-0x35b+-0x30d],_0x355480=_0x4572c9+_0x33e06b,_0x13153c=_0x1286['\x44\x69\x54\x4d\x50\x44'][_0x355480];if(!_0x13153c){if(_0x1286['\x49\x48\x44\x4a\x77\x53']===undefined){const _0x59c093=function(_0x54b9cb){this['\x43\x47\x6a\x49\x66\x47']=_0x54b9cb,this['\x5a\x75\x4d\x61\x44\x70']=[-0x442*0x8+0xc7+0x1*0x214a,-0x201d+0xbe7*0x2+0x84f*0x1,0xd19+0x697*0x5+-0x2e0c],this['\x54\x4f\x55\x76\x70\x53']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x41\x44\x6e\x4a\x67\x57']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x47\x70\x4d\x47\x4c\x4e']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x59c093['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x51\x48\x64\x6a\x4a\x5a']=function(){const _0x323e92=new RegExp(this['\x41\x44\x6e\x4a\x67\x57']+this['\x47\x70\x4d\x47\x4c\x4e']),_0x4a1ea2=_0x323e92['\x74\x65\x73\x74'](this['\x54\x4f\x55\x76\x70\x53']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x5a\x75\x4d\x61\x44\x70'][-0x487+0x1*-0x15ca+0x1a52]:--this['\x5a\x75\x4d\x61\x44\x70'][0x1*-0x1b37+0x2019+-0x4e2];return this['\x4a\x59\x59\x6e\x64\x62'](_0x4a1ea2);},_0x59c093['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4a\x59\x59\x6e\x64\x62']=function(_0x11850a){if(!Boolean(~_0x11850a))return _0x11850a;return this['\x52\x49\x49\x51\x71\x47'](this['\x43\x47\x6a\x49\x66\x47']);},_0x59c093['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x52\x49\x49\x51\x71\x47']=function(_0x128661){for(let _0x1175e0=-0x1e44+-0x1a08+0x384c,_0x2bf6d9=this['\x5a\x75\x4d\x61\x44\x70']['\x6c\x65\x6e\x67\x74\x68'];_0x1175e0<_0x2bf6d9;_0x1175e0++){this['\x5a\x75\x4d\x61\x44\x70']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x2bf6d9=this['\x5a\x75\x4d\x61\x44\x70']['\x6c\x65\x6e\x67\x74\x68'];}return _0x128661(this['\x5a\x75\x4d\x61\x44\x70'][-0xd0+-0x2164*0x1+0x2234]);},(''+function(){return-0x2f5+0x2*0xb2e+0x1367*-0x1;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x3d*0x4b+-0x1*-0x65b+-0x1839)&&new _0x59c093(_0x1286)['\x51\x48\x64\x6a\x4a\x5a'](),_0x1286['\x49\x48\x44\x4a\x77\x53']=!![];}_0xd2d9fc=_0x1286['\x6c\x48\x4f\x61\x6e\x55'](_0xd2d9fc,_0x3b5eb4),_0x1286['\x44\x69\x54\x4d\x50\x44'][_0x355480]=_0xd2d9fc;}else _0xd2d9fc=_0x13153c;return _0xd2d9fc;}function _0x32dfd7(){const _0xd9c899=_0x1369a7,_0x40613a={'\x56\x50\x50\x47\x4d':function(_0x32f09d,_0x4dccb8,_0x50570b){return _0x32f09d(_0x4dccb8,_0x50570b);},'\x43\x50\x4f\x63\x4e':_0xd9c899(0x26e,'\x30\x75\x6f\x4b')+_0xd9c899(0x3ac,'\x5e\x4c\x24\x79')+'\x52\x49\x46\x59\x5f\x51\x55\x45'+'\x55\x45\x5f\x4d\x41\x58'};return _0x40613a[_0xd9c899(0x314,'\x21\x57\x5d\x56')](_0x5619a3,_0x40613a[_0xd9c899(0x30b,'\x29\x30\x64\x42')],0x9bf+-0x2626+0x9cd*0x3);}function _0xf9f3bc(){const _0x1b6051=_0x1369a7,_0x24d684={'\x75\x6b\x74\x44\x54':function(_0x16a13a,_0x5bd24c,_0x3c4131){return _0x16a13a(_0x5bd24c,_0x3c4131);},'\x46\x67\x79\x51\x65':_0x1b6051(0x2c8,'\x29\x73\x59\x38')+'\x45\x43\x41\x4c\x4c\x5f\x56\x45'+_0x1b6051(0x21f,'\x68\x66\x4c\x5b')+'\x4c\x5f\x4d\x53'};return _0x24d684['\x75\x6b\x74\x44\x54'](_0x5619a3,_0x24d684[_0x1b6051(0x1f7,'\x5a\x6d\x46\x6c')],0x1a70+-0x22bd+0x1bd5);}function _0x50bf24(){const _0x5832c0=_0x1369a7,_0x9a015a={'\x66\x67\x67\x56\x6e':function(_0x30e708,_0x2e46f9,_0x5ebd4d){return _0x30e708(_0x2e46f9,_0x5ebd4d);},'\x6d\x47\x75\x62\x59':_0x5832c0(0x2c8,'\x29\x73\x59\x38')+_0x5832c0(0x350,'\x37\x79\x6b\x45')+_0x5832c0(0x273,'\x6c\x4e\x53\x42')+_0x5832c0(0x330,'\x34\x39\x46\x30')+_0x5832c0(0x3ae,'\x5a\x70\x28\x6b')};return _0x9a015a[_0x5832c0(0x233,'\x61\x4e\x73\x40')](_0x5619a3,_0x9a015a['\x6d\x47\x75\x62\x59'],0x95c*0x4+0x60b*-0x1+-0x1*0xbdd);}function _0x39d7dd(){const _0x260a2a=_0x1369a7,_0x3d9596={'\x44\x49\x52\x76\x50':function(_0x261d21,_0x1c6852,_0xa44da3){return _0x261d21(_0x1c6852,_0xa44da3);},'\x41\x56\x75\x53\x4c':_0x260a2a(0x211,'\x37\x76\x6e\x71')+_0x260a2a(0x36e,'\x35\x2a\x32\x54')+_0x260a2a(0x30c,'\x50\x54\x45\x78')+_0x260a2a(0x2d5,'\x5a\x6d\x46\x6c')};return _0x3d9596[_0x260a2a(0x27d,'\x56\x4a\x53\x71')](_0x5619a3,_0x3d9596[_0x260a2a(0x21a,'\x62\x6e\x55\x4a')],-0x3*0x791+-0x159+0x180f);}function _0x3ea6e4(){const _0x38cc28=_0x1369a7,_0x5ece63={'\x52\x68\x58\x43\x72':function(_0x9e5b4e,_0x4f6ef6,_0x25f9c4){return _0x9e5b4e(_0x4f6ef6,_0x25f9c4);},'\x65\x4e\x6c\x4f\x77':_0x38cc28(0x358,'\x56\x29\x4f\x79')+_0x38cc28(0x2b0,'\x39\x6b\x71\x56')+_0x38cc28(0x305,'\x32\x42\x76\x58')+_0x38cc28(0x232,'\x62\x6e\x55\x4a')+_0x38cc28(0x36a,'\x50\x6d\x61\x69')};return _0x5ece63[_0x38cc28(0x22e,'\x5d\x5a\x40\x53')](_0x5619a3,_0x5ece63[_0x38cc28(0x200,'\x35\x38\x79\x73')],0x1428+-0xd16+-0x4d6*-0x5);}function _0x543c74(_0x1db3e4,_0x266d62,_0x4bcf44,_0x3c3b73){const _0x218f4b=_0x1369a7,_0x206917={'\x63\x64\x5a\x4c\x6b':function(_0x38e3dd,_0x4abd14){return _0x38e3dd||_0x4abd14;},'\x73\x4d\x6f\x50\x4d':function(_0x3f012c,_0x25be6a){return _0x3f012c-_0x25be6a;},'\x63\x66\x61\x73\x4e':_0x218f4b(0x25a,'\x6b\x70\x67\x51')+_0x218f4b(0x23c,'\x29\x77\x39\x4d'),'\x46\x74\x70\x74\x43':function(_0x38d74d,_0x564f6e){return _0x38d74d+_0x564f6e;},'\x52\x4f\x75\x55\x44':function(_0x52773d,_0x3b9635){return _0x52773d+_0x3b9635;},'\x62\x57\x6a\x4b\x72':_0x218f4b(0x201,'\x61\x4e\x73\x40'),'\x75\x63\x43\x48\x56':_0x218f4b(0x37d,'\x68\x38\x4b\x74'),'\x52\x64\x70\x54\x42':function(_0x2aa871,_0x8683fa){return _0x2aa871(_0x8683fa);},'\x66\x64\x69\x63\x78':function(_0x52b910,_0x183ca1){return _0x52b910===_0x183ca1;},'\x7a\x64\x4c\x42\x4d':function(_0x231c49,_0x3075a6){return _0x231c49===_0x3075a6;},'\x76\x53\x6c\x46\x50':_0x218f4b(0x24d,'\x50\x54\x45\x78')+_0x218f4b(0x341,'\x5d\x5a\x40\x53'),'\x6d\x74\x42\x63\x6a':_0x218f4b(0x206,'\x37\x41\x57\x31')+_0x218f4b(0x308,'\x37\x41\x57\x31')+'\x67','\x48\x6f\x53\x46\x4e':function(_0x51f4aa,_0x585661){return _0x51f4aa===_0x585661;},'\x4a\x56\x46\x63\x59':'\x72\x6f\x75\x6e\x64\x74\x72\x69'+'\x70\x5f\x6d\x69\x73\x6d\x61\x74'+'\x63\x68'},_0x5c59a7=Date[_0x218f4b(0x2cb,'\x46\x23\x62\x50')](),_0x108310={'\x6f\x75\x74\x63\x6f\x6d\x65':_0x266d62,'\x72\x65\x61\x73\x6f\x6e':_0x206917[_0x218f4b(0x2de,'\x71\x40\x76\x28')](_0x4bcf44,null),'\x61\x74\x74\x65\x6d\x70\x74\x73':_0x3c3b73&&Number[_0x218f4b(0x38b,'\x72\x79\x78\x4a')](_0x3c3b73[_0x218f4b(0x291,'\x29\x73\x59\x38')])?_0x3c3b73['\x61\x74\x74\x65\x6d\x70\x74\x73']:_0x1db3e4['\x61\x74\x74\x65\x6d\x70\x74\x73']||0x43*0x7a+-0xe5*0x1+-0x1f09,'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x3c3b73&&Number[_0x218f4b(0x24f,'\x29\x77\x39\x4d')](_0x3c3b73['\x6c\x61\x74\x65\x6e\x63\x79\x5f'+'\x6d\x73'])?_0x3c3b73[_0x218f4b(0x20f,'\x37\x76\x6e\x71')+'\x6d\x73']:-0x1c6f+0x237d*-0x1+0x1*0x3fec,'\x61\x67\x65\x5f\x61\x74\x5f\x76\x65\x72\x69\x66\x79\x5f\x6d\x73':_0x1db3e4['\x70\x75\x62\x6c\x69\x73\x68\x65'+_0x218f4b(0x33f,'\x5a\x6d\x46\x6c')]?_0x206917[_0x218f4b(0x2f4,'\x5a\x6d\x46\x6c')](_0x5c59a7,_0x1db3e4[_0x218f4b(0x264,'\x32\x42\x76\x58')+_0x218f4b(0x23d,'\x50\x54\x45\x78')]):-0x1*0x2581+0x5*-0x354+0x3625,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x3c3b73&&_0x3c3b73[_0x218f4b(0x1fa,'\x78\x4b\x69\x51')+_0x218f4b(0x2da,'\x5a\x70\x28\x6b')]?_0x3c3b73[_0x218f4b(0x2e1,'\x68\x38\x4b\x74')+'\x5f\x68\x61\x73\x68']:null},_0x300f3e={'\x74\x79\x70\x65':_0x206917['\x63\x66\x61\x73\x4e'],'\x6b\x69\x6e\x64':_0x218f4b(0x28e,'\x70\x6f\x48\x63')+_0x218f4b(0x3af,'\x56\x4a\x53\x71'),'\x69\x64':_0x206917[_0x218f4b(0x238,'\x5a\x6d\x46\x6c')](_0x206917['\x52\x4f\x75\x55\x44'](_0x206917[_0x218f4b(0x23b,'\x66\x71\x56\x64')]+_0x5c59a7,'\x5f'),Math[_0x218f4b(0x253,'\x63\x49\x53\x35')]()[_0x218f4b(0x3b8,'\x78\x2a\x59\x50')](0x1634+0x70*-0x40+0x13*0x50)[_0x218f4b(0x222,'\x56\x29\x4f\x79')](-0x24b*0x8+-0x7a+0x12d4,-0x5*-0x184+0x1*-0x1115+0x1*0x98b)),'\x74\x73':_0x5c59a7,'\x61\x73\x73\x65\x74':{'\x74\x79\x70\x65':_0x1db3e4['\x74\x79\x70\x65']||_0x206917[_0x218f4b(0x37e,'\x4a\x4a\x35\x51')],'\x69\x64':_0x1db3e4[_0x218f4b(0x20d,'\x37\x76\x6e\x71')]||null},'\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6f\x6e':_0x108310,'\x73\x69\x67\x6e\x61\x6c':{'\x73\x69\x67\x6e\x61\x6c\x73':Array[_0x218f4b(0x331,'\x35\x2a\x32\x54')](_0x1db3e4[_0x218f4b(0x24a,'\x6f\x73\x29\x6a')])?_0x1db3e4[_0x218f4b(0x3c5,'\x74\x35\x38\x24')][_0x218f4b(0x270,'\x36\x68\x6c\x67')](0x1*0xa6f+0xe91+-0x1900,-0xac9+0x18cd+-0x2cc*0x5):[]}};try{_0x206917[_0x218f4b(0x27c,'\x50\x6c\x2a\x71')](_0x4542c3,_0x300f3e);}catch(_0x28d126){_0x206917['\x66\x64\x69\x63\x78'](process.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&console[_0x218f4b(0x342,'\x68\x66\x4c\x5b')](_0x206917['\x46\x74\x70\x74\x43'](_0x218f4b(0x2bb,'\x62\x66\x79\x5a')+_0x218f4b(0x2b8,'\x47\x59\x5d\x28')+_0x218f4b(0x2c0,'\x4b\x49\x4f\x40')+_0x218f4b(0x2db,'\x34\x39\x46\x30')+_0x218f4b(0x311,'\x29\x77\x39\x4d')+'\x6c\x65\x64\x3a\x20',_0x28d126&&_0x28d126[_0x218f4b(0x21c,'\x74\x35\x38\x24')]||_0x28d126));}if(_0x206917[_0x218f4b(0x366,'\x5a\x70\x28\x6b')](_0x266d62,_0x206917[_0x218f4b(0x2fa,'\x32\x42\x76\x58')]))_0xb2c662['\x6f\x6b']++;else{if(_0x206917['\x7a\x64\x4c\x42\x4d'](_0x266d62,_0x206917[_0x218f4b(0x352,'\x32\x42\x76\x58')]))_0xb2c662[_0x218f4b(0x290,'\x66\x71\x56\x64')]++;else{if(_0x206917[_0x218f4b(0x304,'\x33\x61\x5d\x4c')](_0x266d62,_0x206917['\x4a\x56\x46\x63\x59']))_0xb2c662[_0x218f4b(0x3aa,'\x72\x79\x78\x4a')]++;else _0xb2c662[_0x218f4b(0x267,'\x5e\x4c\x24\x79')]++;}}}function _0x11296d(_0x49528d){const _0x58aeb1=_0x1369a7,_0x5dda16={'\x57\x67\x4c\x6c\x7a':_0x58aeb1(0x251,'\x56\x29\x4f\x79')+_0x58aeb1(0x3c0,'\x29\x30\x64\x42'),'\x43\x52\x74\x6a\x67':function(_0x4c7793,_0x2c1722){return _0x4c7793(_0x2c1722);},'\x74\x55\x53\x51\x77':_0x58aeb1(0x1f6,'\x6c\x4e\x53\x42'),'\x55\x4f\x6a\x66\x77':function(_0x2c1e1e){return _0x2c1e1e();},'\x52\x52\x44\x73\x4a':function(_0xa0244e,_0x4a5858){return _0xa0244e!==_0x4a5858;},'\x59\x70\x67\x6f\x4a':_0x58aeb1(0x26d,'\x4b\x49\x4f\x40'),'\x56\x45\x78\x44\x6f':function(_0x1e779f,_0x5248dd,_0x38e6d6,_0x10a31d){return _0x1e779f(_0x5248dd,_0x38e6d6,_0x10a31d);},'\x77\x75\x79\x54\x42':_0x58aeb1(0x359,'\x72\x79\x78\x4a')+'\x74\x69\x6f\x6e\x5f\x73\x6b\x69'+_0x58aeb1(0x3b5,'\x5e\x4c\x24\x79'),'\x6d\x4e\x49\x56\x62':_0x58aeb1(0x3bc,'\x56\x46\x44\x36')+_0x58aeb1(0x2a9,'\x61\x4e\x73\x40'),'\x4f\x47\x4f\x41\x51':function(_0x5a8577,_0x10b579){return _0x5a8577!==_0x10b579;},'\x51\x6f\x54\x51\x74':_0x58aeb1(0x2c1,'\x62\x6e\x55\x4a'),'\x5a\x6a\x6b\x6a\x6f':_0x58aeb1(0x322,'\x68\x66\x4c\x5b'),'\x71\x55\x5a\x4d\x50':function(_0x5da98f,_0x111d48,_0x115f29,_0x2e9e65){return _0x5da98f(_0x111d48,_0x115f29,_0x2e9e65);},'\x55\x70\x59\x68\x78':_0x58aeb1(0x2bd,'\x29\x30\x64\x42')+'\x61\x73\x73\x65\x74\x5f\x69\x64','\x67\x79\x4f\x53\x62':function(_0x325cc5,_0x14dd3d){return _0x325cc5<_0x14dd3d;},'\x61\x41\x75\x69\x4c':function(_0x22c40f,_0x5de08b){return _0x22c40f>=_0x5de08b;},'\x49\x50\x70\x43\x50':_0x58aeb1(0x320,'\x46\x23\x62\x50')+_0x58aeb1(0x3a6,'\x4e\x43\x38\x74'),'\x6c\x4a\x45\x45\x6d':function(_0x5b0a5f,_0x417939,_0x5ea64f,_0x3c1f27){return _0x5b0a5f(_0x417939,_0x5ea64f,_0x3c1f27);},'\x66\x7a\x43\x64\x44':'\x71\x75\x65\x75\x65\x5f\x66\x75'+'\x6c\x6c'},_0x51cb27={'\x61\x73\x73\x65\x74\x5f\x69\x64':_0x49528d&&_0x49528d[_0x58aeb1(0x3bf,'\x4a\x4a\x35\x51')]?String(_0x49528d['\x61\x73\x73\x65\x74\x5f\x69\x64']):null,'\x74\x79\x70\x65':_0x49528d&&_0x49528d[_0x58aeb1(0x215,'\x6c\x4e\x53\x42')]?_0x5dda16[_0x58aeb1(0x354,'\x71\x40\x76\x28')](String,_0x49528d[_0x58aeb1(0x360,'\x68\x66\x4c\x5b')]):_0x5dda16[_0x58aeb1(0x269,'\x5a\x70\x28\x6b')],'\x73\x69\x67\x6e\x61\x6c\x73':Array[_0x58aeb1(0x216,'\x21\x57\x5d\x56')](_0x49528d&&_0x49528d[_0x58aeb1(0x279,'\x37\x79\x6b\x45')])?_0x49528d[_0x58aeb1(0x1f9,'\x50\x6f\x28\x50')]:[],'\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x41\x74':_0x49528d&&Number[_0x58aeb1(0x2a6,'\x62\x66\x79\x5a')](_0x49528d[_0x58aeb1(0x25c,'\x50\x6c\x2a\x71')+_0x58aeb1(0x24b,'\x29\x77\x39\x4d')])?_0x49528d[_0x58aeb1(0x299,'\x62\x66\x79\x5a')+_0x58aeb1(0x313,'\x6f\x73\x29\x6a')]:Date[_0x58aeb1(0x32c,'\x78\x4b\x69\x51')](),'\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(!_0x5dda16[_0x58aeb1(0x2b2,'\x36\x68\x6c\x67')](_0x3be32f)){if(_0x5dda16[_0x58aeb1(0x2f8,'\x68\x6f\x47\x54')](_0x5dda16['\x59\x70\x67\x6f\x4a'],_0x5dda16[_0x58aeb1(0x303,'\x50\x54\x45\x78')]))return _0x223f8c[_0x58aeb1(0x319,'\x50\x6d\x61\x69')];else{_0x5dda16[_0x58aeb1(0x375,'\x68\x66\x4c\x5b')](_0x543c74,_0x51cb27,_0x5dda16[_0x58aeb1(0x385,'\x50\x6d\x61\x69')],_0x5dda16['\x6d\x4e\x49\x56\x62']);const _0x3937d3={};return _0x3937d3[_0x58aeb1(0x2ef,'\x6f\x73\x29\x6a')]=![],_0x3937d3[_0x58aeb1(0x2c7,'\x68\x6f\x47\x54')]=_0x58aeb1(0x33b,'\x6f\x73\x29\x6a')+_0x58aeb1(0x248,'\x35\x2a\x32\x54'),_0x3937d3;}}if(!_0x51cb27[_0x58aeb1(0x2fe,'\x5a\x6d\x46\x6c')]){if(_0x5dda16[_0x58aeb1(0x33a,'\x32\x42\x76\x58')](_0x5dda16[_0x58aeb1(0x34e,'\x5a\x70\x28\x6b')],_0x5dda16[_0x58aeb1(0x3cb,'\x4e\x43\x38\x74')])){_0x5dda16[_0x58aeb1(0x252,'\x37\x76\x6e\x71')](_0x543c74,_0x51cb27,_0x5dda16[_0x58aeb1(0x275,'\x32\x42\x76\x58')],_0x5dda16[_0x58aeb1(0x2dc,'\x71\x40\x76\x28')]);const _0x2e6b98={};return _0x2e6b98[_0x58aeb1(0x282,'\x4e\x43\x38\x74')]=![],_0x2e6b98['\x72\x65\x61\x73\x6f\x6e']=_0x5dda16[_0x58aeb1(0x36f,'\x56\x29\x4f\x79')],_0x2e6b98;}else{const _0x28d305={};return _0x28d305[_0x58aeb1(0x2fb,'\x5a\x6d\x46\x6c')]=_0x58aeb1(0x28b,'\x74\x35\x38\x24')+_0x58aeb1(0x2a1,'\x68\x6f\x47\x54')+'\x67',_0x28d305[_0x58aeb1(0x340,'\x29\x77\x39\x4d')]=_0x5dda16[_0x58aeb1(0x346,'\x5e\x4c\x24\x79')],_0x28d305[_0x58aeb1(0x29f,'\x74\x35\x38\x24')+'\x6d\x73']=_0x957e55,_0x28d305[_0x58aeb1(0x39b,'\x56\x46\x44\x36')+_0x58aeb1(0x278,'\x5e\x4c\x24\x79')]=_0x51db10['\x61\x73\x73\x65\x74\x5f\x69\x64']||null,_0x28d305;}}const _0x56b8b4=_0x5dda16[_0x58aeb1(0x3a5,'\x37\x76\x6e\x71')](_0x5045c8);if(_0x5dda16[_0x58aeb1(0x218,'\x36\x68\x6c\x67')](_0x56b8b4,0x9ae+-0x1eb8+-0x1*-0x150b)&&_0x5dda16[_0x58aeb1(0x223,'\x29\x30\x64\x42')](Math[_0x58aeb1(0x30e,'\x36\x68\x6c\x67')](),_0x56b8b4)){_0x543c74(_0x51cb27,_0x5dda16['\x77\x75\x79\x54\x42'],_0x5dda16[_0x58aeb1(0x393,'\x50\x6c\x2a\x71')]);const _0xffe0b2={};return _0xffe0b2[_0x58aeb1(0x2c3,'\x68\x38\x4b\x74')]=![],_0xffe0b2[_0x58aeb1(0x324,'\x6c\x4e\x53\x42')]=_0x5dda16[_0x58aeb1(0x1f1,'\x37\x41\x57\x31')],_0xffe0b2;}_0x51cb27['\x6e\x65\x78\x74\x45\x6c\x69\x67'+_0x58aeb1(0x344,'\x47\x59\x5d\x28')]=_0x51cb27[_0x58aeb1(0x243,'\x21\x57\x5d\x56')+_0x58aeb1(0x2ff,'\x4b\x49\x4f\x40')]+_0x5dda16[_0x58aeb1(0x3a5,'\x37\x76\x6e\x71')](_0x50bf24);const _0x3fe2fb=_0x5dda16[_0x58aeb1(0x29c,'\x29\x73\x59\x38')](_0x32dfd7);while(_0x3535e1['\x6c\x65\x6e\x67\x74\x68']>=_0x3fe2fb){const _0x5dda7e=_0x3535e1[_0x58aeb1(0x2e0,'\x4b\x49\x4f\x40')]();_0x5dda16[_0x58aeb1(0x355,'\x47\x38\x33\x51')](_0x543c74,_0x5dda7e,_0x5dda16[_0x58aeb1(0x230,'\x47\x38\x33\x51')],_0x5dda16[_0x58aeb1(0x20c,'\x56\x29\x4f\x79')]);}_0x3535e1[_0x58aeb1(0x265,'\x21\x57\x5d\x56')](_0x51cb27);const _0x458cf5={};return _0x458cf5[_0x58aeb1(0x39f,'\x29\x77\x39\x4d')]=!![],_0x458cf5;}async function _0x14ba11(_0x1da1a8,_0x5eb5c5){const _0x51cb3c=_0x1369a7,_0xa9f7f7={'\x66\x6a\x78\x4e\x67':function(_0x419a70,_0x5545b7,_0x26f6e0,_0x4011e8){return _0x419a70(_0x5545b7,_0x26f6e0,_0x4011e8);},'\x75\x53\x6a\x51\x61':'\x76\x65\x72\x69\x66\x69\x63\x61'+_0x51cb3c(0x25b,'\x5d\x5a\x40\x53')+_0x51cb3c(0x260,'\x62\x6e\x55\x4a'),'\x56\x64\x7a\x59\x44':_0x51cb3c(0x36d,'\x72\x79\x78\x4a')+_0x51cb3c(0x2fe,'\x5a\x6d\x46\x6c'),'\x58\x56\x53\x6b\x6f':function(_0x1c910b,_0x165106){return _0x1c910b||_0x165106;},'\x58\x5a\x4d\x59\x48':function(_0x4c7986,_0x5781fb){return _0x4c7986-_0x5781fb;},'\x73\x4f\x79\x4c\x6e':_0x51cb3c(0x380,'\x71\x40\x76\x28')+_0x51cb3c(0x2f2,'\x37\x79\x6b\x45'),'\x57\x44\x7a\x61\x4f':function(_0x28dbf6,_0x39ca85){return _0x28dbf6+_0x39ca85;},'\x68\x61\x7a\x48\x6c':_0x51cb3c(0x396,'\x35\x38\x79\x73'),'\x75\x65\x42\x76\x68':function(_0x34f8af,_0x35af4f){return _0x34f8af===_0x35af4f;},'\x78\x71\x6e\x5a\x44':function(_0x24c3b5,_0x3e7e12){return _0x24c3b5+_0x3e7e12;},'\x79\x44\x51\x43\x76':_0x51cb3c(0x3b9,'\x21\x57\x5d\x56')+_0x51cb3c(0x2f5,'\x56\x29\x4f\x79'),'\x45\x6d\x64\x6a\x79':_0x51cb3c(0x295,'\x71\x40\x76\x28')+_0x51cb3c(0x1fc,'\x78\x4b\x69\x51')+'\x67','\x6b\x5a\x72\x6e\x68':'\x61\x5a\x43\x4a\x6a','\x6e\x4f\x4c\x44\x66':function(_0x28fb08,_0x14c6ce,_0x55f7b2){return _0x28fb08(_0x14c6ce,_0x55f7b2);},'\x50\x42\x75\x6b\x64':function(_0x441aaa){return _0x441aaa();},'\x7a\x62\x4c\x45\x54':_0x51cb3c(0x36b,'\x32\x42\x76\x58'),'\x46\x74\x61\x71\x5a':function(_0x3815fd,_0x2ce6fb){return _0x3815fd-_0x2ce6fb;},'\x62\x6a\x76\x73\x78':function(_0x523595,_0x2b897b){return _0x523595(_0x2b897b);},'\x70\x48\x47\x49\x76':function(_0xd97766,_0x396da8){return _0xd97766-_0x396da8;},'\x69\x52\x63\x59\x57':_0x51cb3c(0x3a1,'\x4b\x49\x4f\x40'),'\x47\x69\x70\x64\x50':_0x51cb3c(0x231,'\x29\x77\x39\x4d')+_0x51cb3c(0x27f,'\x56\x46\x44\x36'),'\x6b\x4a\x44\x44\x4b':_0x51cb3c(0x2f9,'\x35\x38\x79\x73'),'\x50\x4a\x52\x47\x48':function(_0x419c82,_0x4bb331){return _0x419c82!==_0x4bb331;},'\x74\x7a\x72\x49\x4f':_0x51cb3c(0x2c9,'\x50\x6c\x2a\x71')+_0x51cb3c(0x227,'\x5a\x70\x28\x6b'),'\x7a\x41\x4d\x63\x69':function(_0x5b80ef,_0x363f14){return _0x5b80ef(_0x363f14);},'\x58\x7a\x75\x50\x6c':_0x51cb3c(0x38c,'\x39\x6b\x71\x56')+'\x6f\x6d\x70\x75\x74\x65\x5f\x66'+_0x51cb3c(0x224,'\x62\x6e\x55\x4a'),'\x44\x74\x50\x45\x59':_0x51cb3c(0x2ea,'\x47\x59\x5d\x28')+_0x51cb3c(0x388,'\x63\x49\x53\x35')+'\x63\x68'},_0x5bd897=Date[_0x51cb3c(0x2ed,'\x32\x42\x76\x58')]();if(!_0x1da1a8){const _0x284477={};return _0x284477[_0x51cb3c(0x21b,'\x56\x4a\x53\x71')]='\x76\x65\x72\x69\x66\x69\x63\x61'+'\x74\x69\x6f\x6e\x5f\x73\x6b\x69'+_0x51cb3c(0x1f3,'\x61\x4e\x73\x40'),_0x284477[_0x51cb3c(0x31c,'\x21\x57\x5d\x56')]=_0xa9f7f7[_0x51cb3c(0x35c,'\x47\x38\x33\x51')],_0x284477[_0x51cb3c(0x2fd,'\x56\x4a\x53\x71')+'\x6d\x73']=0x0,_0x284477[_0x51cb3c(0x2e8,'\x5a\x6d\x46\x6c')+_0x51cb3c(0x329,'\x74\x35\x38\x24')]=null,_0x284477;}let _0x2fb581;try{if(_0xa9f7f7[_0x51cb3c(0x349,'\x74\x35\x38\x24')](_0xa9f7f7['\x6b\x5a\x72\x6e\x68'],_0x51cb3c(0x24e,'\x47\x38\x33\x51'))){const _0x17b007=_0x53ee65[_0x378177];_0x17b007[_0x51cb3c(0x26b,'\x37\x76\x6e\x71')+_0x51cb3c(0x2e2,'\x34\x39\x46\x30')]<=_0x2b97ac&&!_0x1fc9d5[_0x51cb3c(0x2d3,'\x70\x6f\x48\x63')](_0x17b007['\x61\x73\x73\x65\x74\x5f\x69\x64'])&&_0x39efcc[_0x51cb3c(0x33d,'\x35\x2a\x32\x54')](_0x17b007);}else _0x2fb581=await _0xa9f7f7[_0x51cb3c(0x280,'\x62\x6e\x55\x4a')](_0xcb7dfe,_0x1da1a8,{'\x74\x69\x6d\x65\x6f\x75\x74\x4d\x73':_0xa9f7f7[_0x51cb3c(0x2a8,'\x61\x4e\x73\x40')](_0x3ea6e4),'\x62\x79\x70\x61\x73\x73\x43\x61\x63\x68\x65':!![]});}catch(_0x12e3fb){if(_0xa9f7f7[_0x51cb3c(0x2a2,'\x68\x6f\x47\x54')]!==_0xa9f7f7[_0x51cb3c(0x21d,'\x50\x6d\x61\x69')])_0x41f78b=_0xd27de3(_0x18f5b7);else return{'\x6f\x75\x74\x63\x6f\x6d\x65':_0xa9f7f7[_0x51cb3c(0x250,'\x6c\x4e\x53\x42')],'\x72\x65\x61\x73\x6f\x6e':_0x51cb3c(0x37a,'\x30\x75\x6f\x4b')+_0x51cb3c(0x3be,'\x74\x35\x38\x24'),'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0xa9f7f7[_0x51cb3c(0x309,'\x78\x2a\x59\x50')](Date[_0x51cb3c(0x390,'\x36\x68\x6c\x67')](),_0x5bd897),'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':null,'\x65\x72\x72\x6f\x72':_0x12e3fb&&_0x12e3fb[_0x51cb3c(0x2e5,'\x29\x73\x59\x38')]||_0xa9f7f7[_0x51cb3c(0x2ac,'\x74\x35\x38\x24')](String,_0x12e3fb)};}const _0x88bf65=_0xa9f7f7[_0x51cb3c(0x28c,'\x6c\x4e\x53\x42')](Date[_0x51cb3c(0x289,'\x62\x6e\x55\x4a')](),_0x5bd897);if(!_0x2fb581||!_0x2fb581['\x6f\x6b']){if(_0xa9f7f7[_0x51cb3c(0x228,'\x4e\x43\x38\x74')]===_0xa9f7f7[_0x51cb3c(0x394,'\x70\x6f\x48\x63')]){const _0x1fade1={};return _0x1fade1[_0x51cb3c(0x362,'\x74\x35\x38\x24')]=_0xa9f7f7[_0x51cb3c(0x298,'\x37\x41\x57\x31')],_0x1fade1[_0x51cb3c(0x2d6,'\x78\x2a\x59\x50')]=_0xa9f7f7[_0x51cb3c(0x2d9,'\x5d\x5a\x40\x53')],_0x1fade1[_0x51cb3c(0x384,'\x29\x30\x64\x42')+'\x6d\x73']=_0x88bf65,_0x1fade1[_0x51cb3c(0x332,'\x6c\x4e\x53\x42')+_0x51cb3c(0x207,'\x6c\x4e\x53\x42')]=null,_0x1fade1[_0x51cb3c(0x23f,'\x56\x29\x4f\x79')]=_0x2fb581&&_0x2fb581[_0x51cb3c(0x383,'\x46\x23\x62\x50')]||_0x51cb3c(0x39e,'\x29\x73\x59\x38')+_0x51cb3c(0x1f5,'\x37\x79\x6b\x45'),_0x1fade1;}else{OFaviT['\x66\x6a\x78\x4e\x67'](_0xbaaf31,_0x483e38,OFaviT[_0x51cb3c(0x242,'\x63\x49\x53\x35')],OFaviT[_0x51cb3c(0x3ab,'\x72\x79\x78\x4a')]);const _0x277316={};return _0x277316['\x65\x6e\x71\x75\x65\x75\x65\x64']=![],_0x277316[_0x51cb3c(0x343,'\x6b\x70\x67\x51')]='\x6d\x69\x73\x73\x69\x6e\x67\x5f'+_0x51cb3c(0x281,'\x21\x57\x5d\x56'),_0x277316;}}if(!_0x2fb581[_0x51cb3c(0x317,'\x37\x41\x57\x31')]){if(_0xa9f7f7[_0x51cb3c(0x209,'\x4a\x4a\x35\x51')]!==_0x51cb3c(0x25f,'\x56\x29\x4f\x79')){const _0x37733f={};return _0x37733f[_0x51cb3c(0x26c,'\x35\x38\x79\x73')]=_0xa9f7f7[_0x51cb3c(0x23a,'\x30\x75\x6f\x4b')],_0x37733f[_0x51cb3c(0x3a8,'\x5e\x4c\x24\x79')]=null,_0x37733f[_0x51cb3c(0x36c,'\x36\x68\x6c\x67')+'\x6d\x73']=_0x88bf65,_0x37733f[_0x51cb3c(0x3c9,'\x72\x79\x78\x4a')+_0x51cb3c(0x2da,'\x5a\x70\x28\x6b')]=null,_0x37733f;}else{const _0x2b1d09=_0x547623['\x6e\x6f\x77'](),_0x5321a8={'\x6f\x75\x74\x63\x6f\x6d\x65':_0x52ce61,'\x72\x65\x61\x73\x6f\x6e':OFaviT[_0x51cb3c(0x30a,'\x29\x73\x59\x38')](_0x17bfcf,null),'\x61\x74\x74\x65\x6d\x70\x74\x73':_0xf5bee2&&_0x1bb5e7[_0x51cb3c(0x2d2,'\x68\x66\x4c\x5b')](_0xa3ac89[_0x51cb3c(0x3bd,'\x68\x66\x4c\x5b')])?_0x4a4b3a[_0x51cb3c(0x38e,'\x68\x38\x4b\x74')]:_0x1f35e8[_0x51cb3c(0x2aa,'\x50\x54\x45\x78')]||0x17*0x1+0x3*0x9fd+-0x1e0e,'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x1ca8a8&&_0x37d8f8[_0x51cb3c(0x219,'\x4a\x4a\x35\x51')](_0xfaf7f7['\x6c\x61\x74\x65\x6e\x63\x79\x5f'+'\x6d\x73'])?_0x421b74[_0x51cb3c(0x2ba,'\x72\x79\x78\x4a')+'\x6d\x73']:-0x26c4+-0x5*-0x17f+0x1f49,'\x61\x67\x65\x5f\x61\x74\x5f\x76\x65\x72\x69\x66\x79\x5f\x6d\x73':_0x11a304[_0x51cb3c(0x2f6,'\x37\x79\x6b\x45')+_0x51cb3c(0x367,'\x33\x61\x5d\x4c')]?OFaviT[_0x51cb3c(0x2ca,'\x63\x49\x53\x35')](_0x2b1d09,_0x1c6817[_0x51cb3c(0x39a,'\x68\x38\x4b\x74')+_0x51cb3c(0x277,'\x66\x71\x56\x64')]):0xf7b+-0x407+-0xb74,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x5c37c2&&_0x14a0eb[_0x51cb3c(0x271,'\x50\x6d\x61\x69')+_0x51cb3c(0x24c,'\x6f\x73\x29\x6a')]?_0x46b3c4[_0x51cb3c(0x25d,'\x4a\x4a\x35\x51')+_0x51cb3c(0x294,'\x56\x29\x4f\x79')]:null},_0xb3a169={'\x74\x79\x70\x65':_0x51cb3c(0x2d0,'\x74\x35\x38\x24')+_0x51cb3c(0x1fb,'\x39\x6b\x71\x56'),'\x6b\x69\x6e\x64':OFaviT[_0x51cb3c(0x2f3,'\x47\x38\x33\x51')],'\x69\x64':OFaviT[_0x51cb3c(0x245,'\x35\x38\x79\x73')](OFaviT[_0x51cb3c(0x287,'\x5e\x4c\x24\x79')]('\x6d\x67\x65\x5f',_0x2b1d09),'\x5f')+_0x4ad8e5['\x72\x61\x6e\x64\x6f\x6d']()['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x24b*-0x6+0xa1c+0x3ca)[_0x51cb3c(0x23e,'\x32\x42\x76\x58')](-0x28*-0x32+-0x5c*0x7+-0x54a,0x85*0xa+-0x2377*0x1+0x1e4f),'\x74\x73':_0x2b1d09,'\x61\x73\x73\x65\x74':{'\x74\x79\x70\x65':_0x37305e[_0x51cb3c(0x20a,'\x6f\x73\x29\x6a')]||OFaviT[_0x51cb3c(0x1f0,'\x78\x4b\x69\x51')],'\x69\x64':_0x10c7d1[_0x51cb3c(0x249,'\x61\x4e\x73\x40')]||null},'\x76\x65\x72\x69\x66\x69\x63\x61\x74\x69\x6f\x6e':_0x5321a8,'\x73\x69\x67\x6e\x61\x6c':{'\x73\x69\x67\x6e\x61\x6c\x73':_0x4adf9a[_0x51cb3c(0x39d,'\x62\x6e\x55\x4a')](_0x11c3a4[_0x51cb3c(0x3c5,'\x74\x35\x38\x24')])?_0x31948a[_0x51cb3c(0x370,'\x68\x38\x4b\x74')][_0x51cb3c(0x23e,'\x32\x42\x76\x58')](-0x23f7*0x1+-0x778*0x1+-0x1*-0x2b6f,-0x392*0x1+-0x2*0x800+-0x1a*-0xc1):[]}};try{_0x45a681(_0xb3a169);}catch(_0x5809d8){OFaviT[_0x51cb3c(0x1fe,'\x72\x79\x78\x4a')](_0x186839.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')&&_0x1bdc9d[_0x51cb3c(0x342,'\x68\x66\x4c\x5b')](OFaviT[_0x51cb3c(0x35f,'\x37\x76\x6e\x71')](_0x51cb3c(0x3c7,'\x4a\x4a\x35\x51')+_0x51cb3c(0x2ee,'\x46\x23\x62\x50')+_0x51cb3c(0x361,'\x56\x46\x44\x36')+_0x51cb3c(0x266,'\x47\x38\x33\x51')+'\x76\x65\x6e\x74\x20\x66\x61\x69'+_0x51cb3c(0x3b4,'\x71\x40\x76\x28'),_0x5809d8&&_0x5809d8['\x6d\x65\x73\x73\x61\x67\x65']||_0x5809d8));}if(_0x707d30===OFaviT[_0x51cb3c(0x241,'\x37\x41\x57\x31')])_0x644d47['\x6f\x6b']++;else{if(OFaviT['\x75\x65\x42\x76\x68'](_0x42aa7d,OFaviT[_0x51cb3c(0x2e4,'\x61\x4e\x73\x40')]))_0x5208e3[_0x51cb3c(0x25e,'\x62\x6e\x55\x4a')]++;else{if(OFaviT['\x75\x65\x42\x76\x68'](_0x5c11d5,_0x51cb3c(0x391,'\x35\x38\x79\x73')+_0x51cb3c(0x3ca,'\x33\x61\x5d\x4c')+'\x63\x68'))_0x3dd969[_0x51cb3c(0x32d,'\x6f\x73\x29\x6a')]++;else _0x4285e5[_0x51cb3c(0x296,'\x5a\x6d\x46\x6c')]++;}}}}const _0x31d276=_0x2fb581[_0x51cb3c(0x239,'\x74\x35\x38\x24')];if(_0xa9f7f7[_0x51cb3c(0x376,'\x63\x49\x53\x35')](_0x31d276[_0x51cb3c(0x369,'\x56\x4a\x53\x71')],_0x1da1a8)){const _0x98a9d5={};return _0x98a9d5['\x6f\x75\x74\x63\x6f\x6d\x65']=_0xa9f7f7[_0x51cb3c(0x2b3,'\x29\x30\x64\x42')],_0x98a9d5['\x72\x65\x61\x73\x6f\x6e']=_0xa9f7f7[_0x51cb3c(0x26f,'\x38\x70\x5d\x4d')],_0x98a9d5[_0x51cb3c(0x31a,'\x37\x79\x6b\x45')+'\x6d\x73']=_0x88bf65,_0x98a9d5[_0x51cb3c(0x2e1,'\x68\x38\x4b\x74')+_0x51cb3c(0x3a0,'\x29\x73\x59\x38')]=_0x31d276['\x61\x73\x73\x65\x74\x5f\x69\x64']||null,_0x98a9d5;}let _0x5238bf;try{_0x5238bf=_0xa9f7f7[_0x51cb3c(0x327,'\x70\x6f\x48\x63')](_0x346c4d,_0x31d276);}catch(_0x3b5a43){return{'\x6f\x75\x74\x63\x6f\x6d\x65':_0x51cb3c(0x2d7,'\x39\x6b\x71\x56')+_0x51cb3c(0x336,'\x70\x6f\x48\x63')+_0x51cb3c(0x35d,'\x71\x40\x76\x28'),'\x72\x65\x61\x73\x6f\x6e':_0xa9f7f7[_0x51cb3c(0x363,'\x35\x38\x79\x73')],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x88bf65,'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':null,'\x65\x72\x72\x6f\x72':_0x3b5a43&&_0x3b5a43[_0x51cb3c(0x237,'\x35\x2a\x32\x54')]||_0xa9f7f7[_0x51cb3c(0x234,'\x33\x61\x5d\x4c')](String,_0x3b5a43)};}if(_0xa9f7f7[_0x51cb3c(0x2ad,'\x78\x2a\x59\x50')](_0x5238bf,_0x31d276['\x61\x73\x73\x65\x74\x5f\x69\x64'])){const _0x9a33d1={};return _0x9a33d1[_0x51cb3c(0x1f2,'\x33\x61\x5d\x4c')]=_0xa9f7f7['\x44\x74\x50\x45\x59'],_0x9a33d1[_0x51cb3c(0x357,'\x34\x39\x46\x30')]=_0x51cb3c(0x32a,'\x56\x4a\x53\x71')+'\x66\x74',_0x9a33d1[_0x51cb3c(0x3a2,'\x66\x71\x56\x64')+'\x6d\x73']=_0x88bf65,_0x9a33d1[_0x51cb3c(0x217,'\x47\x59\x5d\x28')+_0x51cb3c(0x30f,'\x78\x2a\x59\x50')]=_0x5238bf,_0x9a33d1;}const _0x2b9cb3={};return _0x2b9cb3[_0x51cb3c(0x2af,'\x38\x70\x5d\x4d')]=_0xa9f7f7[_0x51cb3c(0x3b2,'\x56\x29\x4f\x79')],_0x2b9cb3['\x72\x65\x61\x73\x6f\x6e']=null,_0x2b9cb3[_0x51cb3c(0x3c3,'\x78\x2a\x59\x50')+'\x6d\x73']=_0x88bf65,_0x2b9cb3['\x72\x65\x63\x61\x6c\x6c\x65\x64'+'\x5f\x68\x61\x73\x68']=_0x5238bf,_0x2b9cb3;}async function _0x1bcbae(){const _0x554452=_0x1369a7,_0xa0fb63={'\x59\x7a\x56\x71\x46':function(_0x540370,_0xbd21bb){return _0x540370===_0xbd21bb;},'\x5a\x54\x74\x51\x59':function(_0x14ef87){return _0x14ef87();},'\x49\x73\x42\x73\x44':function(_0x52f7d4,_0x3ae352){return _0x52f7d4<=_0x3ae352;},'\x64\x6c\x59\x71\x6c':function(_0x4d02b5,_0x58f164,_0x245cbc){return _0x4d02b5(_0x58f164,_0x245cbc);},'\x43\x4a\x6d\x53\x4c':'\x72\x6f\x75\x6e\x64\x74\x72\x69'+_0x554452(0x34b,'\x4a\x4a\x35\x51')+'\x67','\x6b\x4b\x4e\x44\x4b':function(_0xe8e6a8,_0x22268d){return _0xe8e6a8===_0x22268d;},'\x76\x42\x62\x4b\x50':_0x554452(0x3cc,'\x4e\x43\x38\x74')+'\x74\x69\x6f\x6e\x5f\x73\x6b\x69'+_0x554452(0x353,'\x30\x75\x6f\x4b'),'\x7a\x47\x45\x45\x69':function(_0x3b67b1,_0x3e016b){return _0x3b67b1<_0x3e016b;},'\x49\x6d\x6f\x63\x64':function(_0x419a50,_0x114efa){return _0x419a50&&_0x114efa;},'\x43\x4d\x5a\x47\x6b':function(_0x41177d,_0x24e184){return _0x41177d-_0x24e184;},'\x45\x66\x70\x4f\x74':function(_0x5e2de3,_0x368d91){return _0x5e2de3+_0x368d91;},'\x65\x46\x47\x47\x6e':function(_0x157a26,_0x18d24e){return _0x157a26!==_0x18d24e;},'\x53\x4f\x79\x6b\x75':_0x554452(0x3b0,'\x78\x4b\x69\x51')},_0x2ad00f={};_0x2ad00f[_0x554452(0x2c5,'\x35\x2a\x32\x54')+'\x64']=0x0;if(_0xa0fb63[_0x554452(0x373,'\x5e\x4c\x24\x79')](_0x3535e1[_0x554452(0x32e,'\x72\x79\x78\x4a')],0x1b63+-0x27a*0x4+-0xb3*0x19))return _0x2ad00f;const _0x2af0ee=Date[_0x554452(0x348,'\x37\x41\x57\x31')](),_0x5366a5=_0xa0fb63[_0x554452(0x2bf,'\x78\x4b\x69\x51')](_0x39d7dd),_0x9a5eda=[];for(let _0x103e81=-0x2190+0x1c3*-0x6+0x2c22;_0x103e81<_0x3535e1[_0x554452(0x2bc,'\x33\x61\x5d\x4c')];_0x103e81++){const _0x420c40=_0x3535e1[_0x103e81];_0xa0fb63[_0x554452(0x323,'\x47\x59\x5d\x28')](_0x420c40['\x6e\x65\x78\x74\x45\x6c\x69\x67'+_0x554452(0x244,'\x66\x71\x56\x64')],_0x2af0ee)&&!_0x1e9753[_0x554452(0x263,'\x47\x38\x33\x51')](_0x420c40[_0x554452(0x225,'\x33\x61\x5d\x4c')])&&_0x9a5eda[_0x554452(0x221,'\x78\x2a\x59\x50')](_0x420c40);}const _0x1b3070={};_0x1b3070['\x70\x72\x6f\x63\x65\x73\x73\x65'+'\x64']=0x0;if(_0x9a5eda[_0x554452(0x212,'\x68\x66\x4c\x5b')]===-0xf47+-0x90e*0x4+0x337f*0x1)return _0x1b3070;let _0x12898a=-0xec0+0xcb2+0x20e;for(const _0xfe977e of _0x9a5eda){_0x1e9753[_0x554452(0x28d,'\x71\x40\x76\x28')](_0xfe977e['\x61\x73\x73\x65\x74\x5f\x69\x64']);try{_0xfe977e[_0x554452(0x379,'\x68\x6f\x47\x54')]+=0xaf3+0x15be*-0x1+-0x4*-0x2b3;const _0x5693ad=await _0xa0fb63[_0x554452(0x356,'\x35\x38\x79\x73')](_0x14ba11,_0xfe977e[_0x554452(0x2b5,'\x4e\x43\x38\x74')],_0xfe977e['\x74\x79\x70\x65']),_0x24ca33=_0xa0fb63[_0x554452(0x397,'\x35\x2a\x32\x54')](_0x5693ad[_0x554452(0x29a,'\x63\x49\x53\x35')],_0xa0fb63[_0x554452(0x3a4,'\x35\x2a\x32\x54')])||_0xa0fb63[_0x554452(0x29e,'\x6c\x4e\x53\x42')](_0x5693ad[_0x554452(0x386,'\x37\x79\x6b\x45')],_0xa0fb63[_0x554452(0x302,'\x74\x35\x38\x24')])&&_0x5693ad['\x72\x65\x61\x73\x6f\x6e']===_0x554452(0x333,'\x50\x6f\x28\x50')+_0x554452(0x27f,'\x56\x46\x44\x36'),_0x250896=_0xa0fb63['\x7a\x47\x45\x45\x69'](_0xfe977e[_0x554452(0x38f,'\x33\x61\x5d\x4c')],_0x5366a5);if(_0xa0fb63[_0x554452(0x255,'\x62\x6e\x55\x4a')](_0x24ca33,_0x250896)){const _0x2dc71c=Math[_0x554452(0x351,'\x29\x73\x59\x38')](_0xa0fb63['\x43\x4d\x5a\x47\x6b'](_0xfe977e[_0x554452(0x2b4,'\x5d\x5a\x40\x53')],0x15d3+0x5ba+0xdc6*-0x2),_0x3435ac[_0x554452(0x33e,'\x46\x23\x62\x50')]-(-0x1a*0x4+0x1216+-0x11ad));_0xfe977e[_0x554452(0x2ab,'\x5a\x6d\x46\x6c')+_0x554452(0x31e,'\x4e\x43\x38\x74')]=_0xa0fb63[_0x554452(0x235,'\x66\x71\x56\x64')](Date[_0x554452(0x268,'\x72\x79\x78\x4a')](),_0x3435ac[_0x2dc71c]);}else{_0x543c74(_0xfe977e,_0x5693ad[_0x554452(0x2f1,'\x68\x38\x4b\x74')],_0x5693ad['\x72\x65\x61\x73\x6f\x6e'],{'\x61\x74\x74\x65\x6d\x70\x74\x73':_0xfe977e[_0x554452(0x3ad,'\x38\x70\x5d\x4d')],'\x6c\x61\x74\x65\x6e\x63\x79\x5f\x6d\x73':_0x5693ad['\x6c\x61\x74\x65\x6e\x63\x79\x5f'+'\x6d\x73'],'\x72\x65\x63\x61\x6c\x6c\x65\x64\x5f\x68\x61\x73\x68':_0x5693ad[_0x554452(0x372,'\x6b\x70\x67\x51')+'\x5f\x68\x61\x73\x68']});const _0x21766f=_0x3535e1[_0x554452(0x2d4,'\x78\x2a\x59\x50')](_0xfe977e);if(_0x21766f!==-(0x1*0x2f3+-0x708+0x416))_0x3535e1[_0x554452(0x208,'\x74\x35\x38\x24')](_0x21766f,-0x32*0xb7+0x10bf*-0x2+-0x453d*-0x1);}_0x12898a+=0x17b7+0x2*-0xe7+-0x2*0xaf4;}finally{if(_0xa0fb63[_0x554452(0x27b,'\x47\x59\x5d\x28')](_0xa0fb63[_0x554452(0x297,'\x29\x30\x64\x42')],_0x554452(0x3bb,'\x72\x79\x78\x4a')))return _0x13b460['\x61\x73\x73\x69\x67\x6e']({},_0x45391c);else _0x1e9753['\x64\x65\x6c\x65\x74\x65'](_0xfe977e[_0x554452(0x286,'\x29\x77\x39\x4d')]);}}const _0x381437={};return _0x381437['\x70\x72\x6f\x63\x65\x73\x73\x65'+'\x64']=_0x12898a,_0x381437;}function _0x415953(){const _0x224608=_0x1369a7,_0xfb67d7={'\x7a\x42\x74\x6d\x73':function(_0xfff80b,_0x396d3d){return _0xfff80b===_0x396d3d;},'\x54\x47\x73\x49\x74':function(_0x3f4453,_0xc74061){return _0x3f4453===_0xc74061;},'\x62\x4a\x57\x50\x76':function(_0x2a5625,_0x559154){return _0x2a5625===_0x559154;},'\x49\x66\x43\x71\x68':function(_0x526e1c){return _0x526e1c();},'\x6c\x77\x68\x58\x75':function(_0xd1293,_0xb2156b,_0x8fcc9e){return _0xd1293(_0xb2156b,_0x8fcc9e);},'\x67\x6d\x44\x53\x6e':'\x66\x75\x6e\x63\x74\x69\x6f\x6e'};if(_0x1387e5)return;_0x1387e5=!![];const _0x2ca2c2=_0xf9f3bc();_0x5c2ebc=_0xfb67d7[_0x224608(0x22d,'\x33\x61\x5d\x4c')](setInterval,function(){const _0xaee97f=_0x224608,_0x2b1694={'\x73\x76\x6e\x43\x54':function(_0x400e7e,_0x5af6bc){const _0x3b2037=_0x1286;return _0xfb67d7[_0x3b2037(0x22a,'\x78\x2a\x59\x50')](_0x400e7e,_0x5af6bc);},'\x4d\x6c\x72\x67\x65':function(_0x236cd1,_0xbeacbb){return _0x236cd1(_0xbeacbb);},'\x47\x69\x64\x65\x54':function(_0x30ece1,_0x30881b){const _0x599bdc=_0x1286;return _0xfb67d7[_0x599bdc(0x37c,'\x50\x6c\x2a\x71')](_0x30ece1,_0x30881b);},'\x64\x7a\x48\x66\x77':function(_0x1d4a3f,_0x18d526){const _0x3fd4e7=_0x1286;return _0xfb67d7[_0x3fd4e7(0x259,'\x72\x79\x78\x4a')](_0x1d4a3f,_0x18d526);},'\x79\x57\x63\x67\x4a':_0xaee97f(0x2e6,'\x78\x4b\x69\x51'),'\x42\x70\x76\x52\x57':_0xaee97f(0x2d8,'\x4e\x43\x38\x74')};_0xfb67d7[_0xaee97f(0x1ff,'\x30\x75\x6f\x4b')](_0x1bcbae)[_0xaee97f(0x321,'\x63\x49\x53\x35')](function(_0x37e883){const _0x37c613=_0xaee97f,_0x2df84d={'\x7a\x76\x53\x51\x54':function(_0x4e2abb,_0x4d2077){const _0x2b9d92=_0x1286;return _0x2b1694[_0x2b9d92(0x293,'\x21\x57\x5d\x56')](_0x4e2abb,_0x4d2077);},'\x52\x63\x68\x41\x49':function(_0x213091,_0x502783){return _0x2b1694['\x4d\x6c\x72\x67\x65'](_0x213091,_0x502783);}};if(_0x2b1694[_0x37c613(0x318,'\x4a\x4a\x35\x51')](process.env.EVOLVE_RECALL_VERIFY_DEBUG,'\x31')){if(_0x2b1694[_0x37c613(0x35e,'\x32\x42\x76\x58')](_0x2b1694[_0x37c613(0x3c6,'\x29\x77\x39\x4d')],_0x2b1694[_0x37c613(0x262,'\x46\x23\x62\x50')]))return GJSvJF[_0x37c613(0x29d,'\x68\x38\x4b\x74')](GJSvJF[_0x37c613(0x3b7,'\x50\x6f\x28\x50')](_0x1d492d,_0x185689.env.EVOLVE_RECALL_VERIFY||'\x30'),'\x31');else console[_0x37c613(0x381,'\x47\x59\x5d\x28')](_0x37c613(0x1ef,'\x29\x30\x64\x42')+_0x37c613(0x246,'\x21\x57\x5d\x56')+_0x37c613(0x315,'\x32\x42\x76\x58')+'\x63\x6b\x20\x66\x61\x69\x6c\x65'+'\x64\x3a\x20'+(_0x37e883&&_0x37e883[_0x37c613(0x368,'\x21\x57\x5d\x56')]||_0x37e883));}});},_0x2ca2c2),_0x5c2ebc&&_0xfb67d7[_0x224608(0x3a3,'\x33\x61\x5d\x4c')](typeof _0x5c2ebc[_0x224608(0x335,'\x30\x75\x6f\x4b')],_0xfb67d7[_0x224608(0x347,'\x38\x70\x5d\x4d')])&&_0x5c2ebc[_0x224608(0x34a,'\x5a\x70\x28\x6b')]();}function _0x25bb17(){const _0x48459b=_0x1369a7,_0x9a5b01={'\x78\x65\x63\x67\x56':function(_0x4ac4c9,_0x1d6d78,_0x3ff4c5){return _0x4ac4c9(_0x1d6d78,_0x3ff4c5);},'\x49\x76\x66\x66\x75':_0x48459b(0x398,'\x4e\x43\x38\x74')+_0x48459b(0x378,'\x50\x6c\x2a\x71')+_0x48459b(0x2a5,'\x33\x61\x5d\x4c')+_0x48459b(0x3c4,'\x6c\x4e\x53\x42'),'\x5a\x45\x49\x66\x58':function(_0x221e15,_0x91dd13){return _0x221e15!==_0x91dd13;},'\x45\x4d\x66\x74\x43':_0x48459b(0x34f,'\x56\x46\x44\x36'),'\x58\x78\x78\x6a\x59':_0x48459b(0x377,'\x62\x6e\x55\x4a'),'\x57\x5a\x79\x7a\x42':function(_0x3bdbb3,_0x1cb46b){return _0x3bdbb3(_0x1cb46b);}};if(_0x5c2ebc){if(_0x9a5b01[_0x48459b(0x31b,'\x29\x30\x64\x42')](_0x9a5b01[_0x48459b(0x21e,'\x34\x39\x46\x30')],_0x9a5b01[_0x48459b(0x283,'\x68\x38\x4b\x74')]))_0x9a5b01['\x57\x5a\x79\x7a\x42'](clearInterval,_0x5c2ebc),_0x5c2ebc=null;else return icEuJg[_0x48459b(0x300,'\x30\x75\x6f\x4b')](_0x15a955,icEuJg[_0x48459b(0x205,'\x34\x39\x46\x30')],0x67d*-0x1+0x1d3b*0x1+-0x15be);}_0x1387e5=![];}function _0x38fa(){const _0x40d5a0=['\x57\x35\x4e\x64\x55\x43\x6b\x76\x57\x50\x44\x4f\x57\x36\x6a\x43','\x57\x52\x79\x2b\x57\x37\x6e\x65\x66\x71','\x57\x35\x66\x5a\x57\x51\x78\x64\x4d\x4e\x68\x63\x55\x4c\x74\x63\x48\x61','\x57\x34\x52\x64\x47\x65\x4b\x4c\x57\x37\x47','\x45\x53\x6b\x57\x65\x43\x6f\x6e\x57\x52\x34','\x57\x50\x46\x64\x48\x61\x78\x64\x52\x71\x2f\x64\x4c\x61\x42\x64\x49\x61','\x57\x35\x42\x64\x4b\x65\x65\x46\x57\x34\x79','\x45\x4b\x33\x63\x56\x47\x70\x64\x4a\x53\x6f\x4e\x61\x72\x79','\x57\x50\x57\x61\x64\x6d\x6b\x6b\x64\x31\x48\x73\x69\x61','\x78\x6d\x6b\x55\x57\x50\x30\x51\x57\x36\x61','\x76\x78\x78\x63\x53\x67\x37\x64\x54\x72\x43\x43\x7a\x61','\x57\x50\x75\x4f\x63\x57','\x6b\x6d\x6f\x37\x6d\x65\x52\x63\x4c\x71','\x63\x6d\x6b\x78\x41\x4e\x34\x57\x57\x51\x31\x4e','\x6d\x66\x56\x64\x56\x63\x37\x63\x54\x38\x6f\x36\x71\x57','\x57\x37\x2f\x63\x4b\x38\x6b\x4b\x46\x53\x6f\x35','\x43\x38\x6b\x31\x57\x35\x76\x34\x57\x50\x38','\x41\x53\x6b\x37\x7a\x6d\x6b\x48\x57\x51\x4f','\x57\x50\x74\x64\x54\x30\x37\x64\x49\x63\x79','\x57\x35\x5a\x63\x4e\x48\x4e\x64\x54\x71\x2f\x63\x4c\x59\x4b','\x42\x30\x42\x64\x56\x58\x64\x63\x4c\x57','\x57\x34\x31\x70\x57\x51\x74\x64\x4e\x49\x75\x70\x76\x38\x6f\x57','\x41\x6d\x6f\x54\x57\x51\x31\x6c\x72\x77\x42\x64\x4e\x38\x6f\x65','\x57\x4f\x6c\x64\x52\x72\x4f\x33\x57\x35\x69','\x43\x43\x6b\x44\x57\x36\x62\x5a\x57\x4f\x38\x61\x6c\x53\x6f\x44','\x57\x34\x35\x67\x6a\x78\x4f','\x57\x36\x78\x63\x55\x75\x70\x63\x53\x47\x68\x64\x50\x38\x6f\x34\x57\x51\x75','\x69\x6d\x6f\x78\x6b\x31\x4a\x63\x53\x47','\x57\x52\x42\x64\x53\x61\x7a\x4e\x57\x51\x53','\x42\x32\x42\x64\x48\x61','\x57\x4f\x46\x64\x4f\x67\x64\x64\x51\x64\x4a\x63\x4c\x38\x6f\x43\x79\x57','\x57\x36\x64\x63\x55\x78\x52\x64\x53\x47\x65\x50\x6e\x62\x4f','\x77\x65\x5a\x63\x56\x58\x70\x64\x50\x57','\x57\x4f\x71\x6c\x41\x47','\x73\x47\x37\x64\x54\x59\x5a\x63\x50\x6d\x6f\x33\x77\x49\x34','\x57\x37\x56\x63\x50\x53\x6b\x71\x78\x6d\x6f\x4a\x6f\x53\x6b\x44\x67\x71','\x57\x50\x57\x61\x64\x6d\x6b\x75\x62\x30\x6a\x77','\x6f\x30\x79\x48\x6a\x38\x6b\x41\x57\x36\x62\x6b\x57\x4f\x57','\x43\x4d\x6c\x64\x4d\x49\x74\x63\x47\x43\x6f\x56\x7a\x61','\x57\x35\x39\x6b\x57\x52\x4e\x64\x55\x61\x75','\x6b\x58\x70\x63\x55\x71\x5a\x64\x47\x57','\x57\x50\x43\x61\x45\x5a\x62\x65\x74\x33\x33\x64\x4b\x47','\x66\x76\x78\x64\x4b\x38\x6f\x72\x63\x43\x6f\x50\x74\x57','\x68\x75\x50\x2f\x73\x4e\x47','\x78\x38\x6b\x77\x57\x4f\x38\x73\x77\x47','\x6d\x67\x6e\x30\x57\x50\x68\x64\x54\x47\x38\x31\x42\x47','\x57\x50\x33\x64\x4a\x6d\x6f\x68\x57\x36\x76\x4a\x41\x58\x53','\x67\x38\x6f\x59\x6a\x76\x5a\x63\x4b\x30\x33\x64\x50\x66\x6d','\x64\x33\x30\x2f\x6a\x6d\x6b\x61','\x57\x51\x64\x64\x4f\x5a\x65\x6d\x57\x35\x38','\x71\x30\x2f\x63\x54\x48\x37\x64\x4d\x47','\x57\x37\x37\x63\x54\x33\x56\x64\x55\x71\x53\x2b\x70\x59\x57','\x71\x65\x56\x64\x48\x63\x37\x63\x55\x61','\x6c\x66\x39\x31\x73\x77\x6e\x69\x7a\x76\x4f','\x6a\x4d\x6a\x75\x7a\x75\x71','\x57\x36\x64\x64\x4a\x49\x4b','\x57\x36\x64\x63\x4d\x43\x6b\x55\x73\x6d\x6f\x72','\x57\x51\x68\x63\x4f\x43\x6f\x6f\x57\x35\x54\x57\x69\x78\x6d\x44','\x6b\x77\x76\x71\x57\x50\x74\x64\x53\x72\x75\x50\x42\x47','\x57\x36\x71\x30\x66\x73\x4b','\x74\x6d\x6b\x4c\x57\x34\x78\x64\x47\x6d\x6f\x50','\x45\x6d\x6b\x6f\x57\x34\x70\x64\x49\x53\x6f\x56\x57\x34\x4c\x4f\x57\x37\x79','\x57\x50\x70\x64\x54\x4e\x4a\x64\x50\x63\x42\x63\x4a\x38\x6f\x6e\x44\x61','\x63\x66\x56\x64\x47\x53\x6f\x76\x70\x6d\x6f\x47\x71\x53\x6f\x64','\x57\x37\x64\x63\x56\x68\x4e\x64\x52\x58\x30','\x57\x36\x6e\x31\x66\x43\x6f\x32\x57\x4f\x34','\x57\x36\x4e\x64\x52\x53\x6b\x54\x41\x75\x43','\x57\x35\x68\x64\x4a\x30\x38\x70\x57\x35\x4a\x64\x4f\x6d\x6b\x50','\x57\x36\x7a\x43\x68\x57\x70\x64\x50\x6d\x6f\x4f\x44\x6d\x6b\x47','\x57\x36\x4a\x64\x4e\x43\x6f\x4d\x57\x34\x69\x39\x42\x38\x6b\x56','\x78\x6d\x6b\x74\x65\x53\x6f\x69\x57\x51\x57','\x63\x32\x48\x49\x73\x33\x71','\x57\x36\x52\x64\x4e\x59\x38\x63\x78\x4c\x68\x63\x4c\x65\x65','\x42\x6d\x6f\x57\x57\x51\x39\x42\x76\x65\x5a\x64\x4b\x38\x6f\x65','\x64\x38\x6f\x46\x43\x4d\x4f\x39','\x57\x50\x33\x63\x50\x43\x6f\x6b\x57\x35\x61','\x57\x37\x2f\x63\x50\x38\x6b\x6b\x78\x38\x6f\x55\x6f\x6d\x6f\x75\x63\x47','\x57\x36\x33\x64\x4c\x76\x4b\x6b\x57\x35\x65','\x57\x37\x2f\x64\x47\x38\x6b\x75\x46\x77\x38\x6d\x57\x50\x78\x63\x4d\x71','\x67\x30\x72\x5a\x57\x50\x37\x64\x56\x48\x61\x58\x78\x71','\x57\x50\x2f\x63\x4a\x43\x6f\x4d\x57\x36\x76\x42\x67\x61','\x69\x32\x58\x31\x75\x4d\x74\x64\x4e\x43\x6f\x76\x57\x52\x34','\x76\x38\x6b\x68\x6c\x62\x31\x51\x57\x52\x5a\x64\x53\x38\x6b\x6b\x75\x78\x2f\x64\x50\x68\x68\x63\x4a\x57','\x57\x34\x4b\x62\x65\x58\x7a\x70','\x57\x51\x30\x45\x57\x35\x66\x6d\x6e\x43\x6b\x6d\x64\x73\x43','\x7a\x4b\x74\x64\x4d\x4a\x64\x63\x56\x71','\x72\x65\x6c\x63\x52\x4c\x4a\x64\x54\x71','\x57\x52\x2f\x64\x55\x58\x6d\x4f\x57\x36\x34\x6c\x57\x37\x76\x69','\x57\x34\x4c\x46\x72\x38\x6b\x33\x68\x75\x31\x43\x6b\x43\x6f\x4d','\x72\x43\x6b\x74\x57\x35\x58\x6a\x65\x38\x6f\x69\x66\x43\x6b\x69','\x6c\x78\x39\x4c\x57\x4f\x37\x64\x54\x48\x69\x36\x76\x61','\x6c\x4d\x76\x35\x75\x33\x39\x76','\x68\x32\x71\x41\x64\x53\x6b\x48\x57\x35\x76\x48\x57\x51\x30','\x76\x53\x6b\x4a\x57\x34\x50\x63\x57\x52\x4f\x45\x67\x38\x6f\x52','\x57\x51\x52\x64\x4f\x38\x6f\x2b\x57\x35\x39\x65','\x57\x34\x74\x64\x4d\x76\x30','\x57\x37\x42\x63\x53\x6d\x6b\x6e\x78\x53\x6f\x4a\x64\x71','\x57\x36\x52\x63\x50\x43\x6b\x67\x78\x71','\x44\x63\x47\x57\x64\x4a\x53\x73\x6a\x58\x30','\x57\x35\x44\x45\x70\x67\x4f\x74\x61\x4a\x56\x64\x55\x53\x6b\x66\x66\x4b\x4f\x4a\x46\x61','\x57\x35\x2f\x63\x53\x32\x6c\x64\x53\x58\x43\x4b\x61\x71\x65','\x57\x50\x4f\x48\x57\x36\x50\x4c\x6c\x53\x6b\x53\x70\x58\x4f','\x64\x6d\x6f\x68\x78\x4b\x61\x58\x57\x36\x68\x63\x53\x53\x6b\x67','\x75\x61\x52\x64\x50\x57','\x57\x35\x50\x72\x69\x38\x6f\x75\x57\x52\x35\x6b\x57\x34\x65','\x69\x33\x70\x64\x51\x53\x6f\x31\x6b\x47','\x57\x34\x66\x41\x6a\x53\x6f\x63\x57\x51\x4c\x52','\x57\x35\x76\x36\x6c\x63\x42\x64\x4a\x53\x6f\x45\x71\x43\x6b\x65','\x77\x53\x6f\x37\x57\x50\x7a\x37\x73\x47','\x57\x34\x5a\x64\x47\x49\x53\x64\x79\x57','\x57\x51\x2f\x64\x49\x59\x35\x72\x70\x61','\x57\x34\x2f\x64\x4a\x76\x38\x49\x57\x36\x44\x61\x44\x72\x71','\x57\x52\x61\x46\x76\x5a\x7a\x79','\x57\x51\x52\x64\x50\x6d\x6f\x61\x57\x34\x47\x6c\x45\x53\x6b\x69','\x57\x4f\x79\x6c\x76\x62\x6a\x6c','\x57\x35\x4e\x64\x47\x4b\x56\x64\x54\x53\x6b\x30\x57\x36\x5a\x63\x50\x53\x6b\x45','\x57\x51\x57\x46\x57\x34\x58\x70\x64\x61','\x57\x51\x4a\x64\x53\x61\x65\x38\x57\x36\x43\x73\x57\x37\x76\x69','\x57\x35\x74\x64\x4c\x4e\x71\x31\x57\x34\x44\x65','\x76\x38\x6b\x68\x6c\x62\x30\x54\x57\x35\x64\x63\x4e\x6d\x6b\x35\x71\x30\x38','\x77\x43\x6b\x6b\x57\x35\x74\x64\x47\x43\x6f\x30','\x6e\x31\x43\x4d\x6d\x43\x6b\x77\x57\x37\x44\x42','\x57\x36\x6d\x61\x6e\x48\x72\x4d','\x57\x36\x4a\x63\x50\x76\x66\x4f\x57\x52\x50\x6a\x57\x51\x4b\x43\x57\x4f\x65\x39\x6f\x53\x6b\x36\x57\x4f\x50\x66','\x66\x66\x56\x64\x4d\x43\x6f\x61\x66\x43\x6f\x47\x74\x53\x6f\x61','\x57\x36\x43\x38\x63\x63\x4c\x6a\x77\x47\x52\x64\x50\x57','\x57\x36\x4a\x63\x55\x53\x6b\x77\x76\x38\x6f\x5a\x65\x43\x6b\x67\x66\x61','\x72\x53\x6b\x49\x7a\x57\x5a\x64\x4a\x30\x68\x64\x4c\x68\x76\x46\x43\x30\x69','\x57\x35\x50\x7a\x57\x52\x4e\x64\x4a\x33\x65\x32\x78\x38\x6f\x39','\x72\x43\x6b\x30\x57\x50\x6d','\x57\x34\x2f\x64\x48\x65\x70\x64\x4f\x53\x6b\x35\x57\x36\x42\x64\x51\x43\x6b\x42','\x44\x73\x52\x64\x51\x53\x6b\x38\x73\x4b\x66\x63\x57\x36\x61','\x74\x53\x6b\x31\x57\x50\x75\x6c\x57\x34\x46\x64\x4e\x53\x6b\x67\x57\x35\x79','\x57\x52\x78\x64\x4f\x62\x79\x2b\x57\x36\x71\x74\x57\x37\x75','\x68\x53\x6b\x6d\x7a\x68\x79\x4f','\x57\x34\x4c\x53\x61\x67\x6c\x64\x4e\x61','\x66\x78\x70\x64\x4c\x43\x6f\x58\x6e\x61','\x62\x63\x74\x63\x54\x58\x71','\x63\x38\x6b\x6c\x42\x33\x57\x34\x57\x52\x6a\x38\x57\x34\x4b','\x41\x43\x6b\x59\x57\x37\x6a\x66\x57\x52\x43','\x64\x4c\x6a\x43\x75\x31\x4f','\x57\x37\x4a\x64\x4f\x6d\x6b\x52\x57\x4f\x72\x67','\x78\x43\x6b\x69\x57\x4f\x47\x34\x57\x37\x69','\x63\x75\x56\x64\x4a\x53\x6f\x63\x66\x53\x6f\x48\x74\x47','\x42\x53\x6b\x35\x64\x6d\x6f\x49\x57\x52\x52\x63\x52\x59\x2f\x64\x4d\x57','\x71\x53\x6b\x74\x71\x53\x6b\x59\x57\x50\x72\x69\x74\x38\x6b\x58','\x62\x30\x33\x64\x49\x43\x6f\x65\x64\x43\x6f\x74\x71\x53\x6f\x61','\x57\x52\x53\x32\x57\x35\x65','\x57\x36\x58\x61\x57\x4f\x4e\x64\x53\x78\x65','\x45\x4d\x56\x63\x4f\x63\x6c\x64\x53\x57','\x57\x36\x74\x63\x4c\x67\x33\x64\x4c\x5a\x75','\x57\x51\x56\x64\x53\x4d\x56\x64\x52\x47\x65','\x57\x52\x56\x63\x48\x38\x6f\x42\x57\x34\x72\x48','\x45\x43\x6b\x73\x57\x51\x69\x4e\x57\x37\x33\x64\x52\x43\x6b\x4d\x57\x35\x69','\x57\x37\x76\x46\x57\x51\x6c\x64\x4d\x77\x65','\x6f\x76\x4c\x31\x6a\x6d\x6b\x77\x57\x37\x4c\x73\x57\x50\x4f','\x77\x53\x6b\x41\x57\x4f\x47\x51\x73\x6d\x6f\x32\x66\x53\x6b\x52','\x57\x37\x76\x6c\x6a\x53\x6f\x61\x57\x50\x57','\x61\x4d\x71\x67\x6b\x43\x6b\x79','\x64\x76\x76\x6a\x71\x4b\x6d','\x57\x51\x64\x64\x49\x30\x52\x64\x4d\x62\x74\x63\x56\x53\x6f\x54\x75\x57','\x72\x38\x6b\x65\x57\x35\x6a\x7a\x67\x43\x6f\x76','\x45\x38\x6b\x39\x66\x53\x6f\x6b\x57\x52\x74\x63\x53\x71','\x57\x36\x58\x78\x6a\x53\x6f\x63\x57\x51\x34','\x42\x74\x71\x50\x65\x49\x6d\x6c\x6e\x68\x37\x64\x47\x6d\x6f\x39\x76\x43\x6f\x68\x6f\x47','\x57\x37\x6c\x63\x52\x31\x37\x63\x4f\x31\x78\x64\x4e\x53\x6f\x57\x57\x51\x47','\x62\x49\x2f\x63\x56\x71\x5a\x64\x4e\x38\x6f\x64\x57\x4f\x50\x63','\x44\x61\x78\x64\x52\x57','\x57\x37\x50\x53\x57\x4f\x46\x64\x56\x62\x57','\x72\x6d\x6b\x50\x57\x4f\x38\x42\x57\x35\x64\x63\x49\x38\x6b\x78\x57\x36\x38','\x69\x53\x6b\x55\x7a\x31\x65\x69','\x73\x38\x6b\x32\x57\x50\x79\x4d\x74\x57','\x7a\x4e\x70\x63\x48\x33\x2f\x64\x4b\x57','\x57\x4f\x4e\x64\x48\x61\x4a\x64\x51\x58\x46\x64\x4b\x61','\x66\x38\x6b\x46\x45\x78\x75\x2f\x57\x51\x6a\x54\x57\x37\x6d','\x66\x65\x62\x70\x72\x31\x75','\x57\x35\x35\x7a\x57\x52\x42\x64\x49\x64\x34\x2b','\x57\x37\x2f\x63\x56\x33\x5a\x64\x52\x57\x57\x5a\x69\x71','\x7a\x6d\x6f\x48\x57\x52\x62\x42\x79\x77\x43','\x66\x4b\x58\x49\x57\x52\x6c\x64\x52\x47','\x57\x35\x4e\x64\x4c\x30\x46\x64\x54\x6d\x6b\x53\x57\x35\x37\x63\x4c\x53\x6b\x45','\x57\x50\x68\x64\x4d\x6d\x6f\x68\x57\x36\x76\x4b','\x70\x43\x6f\x39\x73\x65\x79\x33','\x57\x35\x70\x63\x50\x53\x6b\x48\x73\x53\x6f\x74','\x77\x4d\x68\x63\x4d\x73\x4e\x64\x56\x53\x6f\x61','\x62\x43\x6f\x30\x57\x4f\x57\x6c\x57\x34\x64\x64\x55\x6d\x6b\x67\x57\x36\x43','\x57\x37\x4e\x63\x55\x43\x6b\x67\x77\x6d\x6f\x4c','\x71\x49\x52\x64\x4d\x73\x37\x63\x4f\x71','\x57\x36\x39\x50\x65\x74\x2f\x64\x4b\x47','\x57\x34\x33\x63\x56\x4d\x37\x64\x52\x57\x30','\x72\x53\x6b\x74\x72\x43\x6b\x2f\x57\x51\x76\x70\x72\x6d\x6b\x68','\x7a\x59\x78\x64\x51\x43\x6b\x4e','\x57\x37\x30\x36\x65\x61','\x46\x73\x33\x64\x51\x6d\x6b\x4b\x74\x4b\x62\x65\x57\x36\x57','\x57\x37\x2f\x64\x48\x38\x6b\x6f\x46\x33\x75\x68','\x57\x37\x33\x64\x54\x38\x6b\x65\x45\x4b\x61','\x57\x36\x4e\x64\x56\x76\x4b\x43\x57\x35\x4c\x4e\x78\x62\x47','\x78\x6d\x6b\x73\x57\x37\x6a\x79\x62\x6d\x6f\x41\x68\x57','\x77\x4d\x68\x63\x4d\x5a\x56\x64\x56\x43\x6f\x63\x6b\x4a\x53','\x68\x43\x6b\x57\x67\x59\x66\x38\x68\x43\x6b\x4c\x6a\x57','\x57\x34\x70\x63\x49\x38\x6b\x62\x57\x52\x69\x31\x75\x5a\x46\x63\x53\x4b\x4c\x4e\x57\x35\x38','\x57\x36\x66\x6c\x57\x50\x4a\x64\x53\x30\x65','\x74\x61\x6c\x64\x55\x59\x70\x63\x4c\x38\x6f\x4f\x42\x4a\x65','\x57\x4f\x6c\x64\x47\x63\x43','\x6d\x6d\x6f\x33\x79\x77\x57\x67','\x57\x51\x33\x64\x51\x4d\x33\x64\x53\x49\x6d','\x7a\x6d\x6b\x43\x57\x51\x53\x2f\x57\x37\x6d','\x44\x49\x68\x64\x55\x53\x6b\x39\x77\x4b\x7a\x63\x57\x35\x53','\x57\x4f\x30\x66\x44\x63\x31\x72','\x72\x43\x6b\x75\x57\x34\x62\x63','\x57\x34\x42\x64\x4b\x30\x74\x64\x4f\x38\x6b\x30\x57\x35\x6d','\x61\x4e\x2f\x64\x4a\x47','\x57\x37\x42\x63\x52\x31\x68\x63\x50\x62\x52\x64\x4c\x47','\x57\x37\x56\x64\x54\x64\x71\x6d','\x65\x53\x6f\x76\x41\x4b\x43','\x57\x36\x4e\x64\x4b\x38\x6f\x55\x57\x34\x65\x49\x7a\x61','\x57\x37\x70\x63\x54\x38\x6b\x70\x78\x6d\x6f\x77\x65\x71','\x7a\x38\x6f\x4f\x57\x52\x7a\x39\x71\x47','\x69\x6d\x6f\x30\x68\x76\x78\x63\x48\x57','\x57\x35\x4e\x64\x4c\x33\x38\x2f\x57\x35\x4b','\x72\x6d\x6b\x51\x57\x50\x69','\x57\x36\x46\x63\x53\x30\x33\x64\x51\x47\x30','\x57\x4f\x78\x64\x4a\x74\x31\x68\x6d\x47','\x75\x75\x78\x63\x4a\x4e\x70\x64\x54\x61\x30\x42\x42\x71','\x65\x63\x56\x64\x4c\x49\x4a\x63\x56\x30\x4c\x6c\x74\x76\x64\x63\x52\x53\x6b\x6b\x70\x75\x65','\x57\x35\x4a\x63\x50\x74\x5a\x64\x4c\x48\x38','\x57\x51\x68\x64\x4a\x62\x54\x5a\x69\x61','\x57\x34\x4a\x63\x54\x73\x70\x64\x47\x59\x61','\x70\x53\x6b\x39\x74\x66\x57\x44\x57\x50\x35\x63\x57\x36\x4b','\x6e\x31\x53\x37','\x72\x53\x6b\x56\x57\x51\x79\x44\x57\x34\x47','\x57\x36\x72\x76\x57\x4f\x2f\x64\x53\x47','\x57\x51\x79\x39\x45\x4a\x72\x68','\x57\x35\x7a\x50\x70\x67\x56\x64\x4e\x57','\x57\x35\x6c\x64\x4f\x6d\x6b\x34\x57\x4f\x76\x52','\x57\x34\x2f\x64\x4b\x78\x4b\x4a\x57\x36\x4c\x45','\x6d\x73\x33\x63\x4c\x5a\x70\x64\x56\x43\x6f\x56\x57\x52\x54\x33','\x57\x36\x78\x64\x48\x38\x6b\x73\x43\x77\x43\x67\x57\x4f\x2f\x63\x50\x57','\x78\x43\x6b\x2b\x57\x50\x79\x78\x57\x34\x74\x64\x47\x53\x6b\x61\x57\x36\x43','\x57\x36\x54\x6f\x57\x52\x42\x64\x49\x5a\x4b','\x57\x36\x58\x68\x61\x33\x46\x64\x54\x47','\x57\x50\x75\x46\x41\x5a\x4f','\x74\x38\x6b\x48\x57\x51\x57\x79\x57\x35\x75','\x57\x4f\x4e\x63\x4b\x43\x6f\x41\x57\x37\x74\x63\x50\x71','\x65\x43\x6f\x6e\x41\x65\x57','\x57\x34\x2f\x63\x4c\x61\x78\x64\x53\x73\x64\x63\x4e\x49\x68\x64\x4b\x47','\x57\x37\x33\x63\x4f\x33\x56\x64\x56\x57\x4f\x57\x69\x57','\x57\x36\x37\x64\x54\x53\x6b\x75\x57\x51\x72\x52','\x57\x35\x52\x63\x51\x49\x74\x63\x52\x32\x64\x64\x4c\x53\x6b\x73\x6c\x47','\x57\x34\x4a\x64\x4e\x30\x4b\x66\x57\x35\x68\x64\x54\x6d\x6b\x64\x57\x34\x53','\x57\x4f\x52\x64\x48\x57\x6e\x47\x67\x71','\x57\x50\x46\x63\x51\x43\x6f\x38','\x57\x34\x66\x7a\x57\x51\x74\x64\x49\x64\x61\x33\x77\x57','\x74\x38\x6b\x62\x72\x43\x6b\x59\x57\x4f\x35\x30\x78\x38\x6b\x6b','\x57\x52\x64\x64\x54\x74\x4e\x64\x47\x74\x61','\x74\x43\x6b\x33\x57\x51\x4b\x71\x57\x34\x43','\x7a\x43\x6b\x39\x64\x6d\x6f\x6c\x57\x52\x78\x63\x56\x59\x6c\x64\x4c\x47','\x57\x37\x37\x64\x49\x38\x6b\x74\x41\x32\x47\x62\x57\x4f\x56\x63\x4d\x71','\x43\x6d\x6b\x49\x57\x37\x6a\x4d\x6f\x53\x6f\x4b\x6d\x6d\x6b\x4f','\x69\x71\x56\x63\x47\x72\x46\x64\x4b\x57','\x57\x51\x4e\x64\x56\x61\x75\x5a\x57\x36\x4f\x73\x57\x36\x6d','\x57\x50\x5a\x63\x4d\x53\x6f\x43\x57\x36\x44\x43\x62\x65\x38\x32','\x57\x36\x4e\x64\x4b\x38\x6f\x53\x57\x35\x6d\x48\x7a\x53\x6b\x55\x6c\x47','\x6c\x53\x6f\x50\x62\x30\x4a\x63\x55\x57','\x57\x34\x4a\x63\x4e\x6d\x6b\x4c\x79\x6d\x6f\x69\x6e\x53\x6b\x31\x6d\x61','\x6d\x38\x6f\x58\x79\x67\x30\x57','\x57\x51\x6c\x64\x53\x38\x6f\x48\x57\x34\x66\x65','\x79\x4e\x33\x64\x55\x64\x78\x63\x54\x47','\x7a\x6d\x6b\x73\x57\x36\x72\x47\x57\x50\x65\x45\x6c\x6d\x6f\x44','\x70\x78\x72\x53\x72\x78\x31\x6c\x45\x65\x43','\x57\x37\x58\x71\x57\x4f\x4a\x64\x49\x76\x6c\x63\x4b\x78\x4e\x63\x53\x57','\x44\x33\x42\x63\x4a\x74\x74\x64\x48\x53\x6f\x62\x70\x74\x71','\x44\x43\x6b\x77\x57\x35\x7a\x4c\x57\x51\x4b','\x57\x4f\x2f\x64\x55\x57\x4b\x5a\x57\x36\x71\x6a\x57\x37\x34','\x76\x68\x4e\x63\x4f\x66\x6c\x64\x4b\x71','\x57\x34\x37\x63\x48\x68\x46\x63\x55\x5a\x57','\x57\x50\x43\x6b\x42\x74\x39\x6d\x76\x31\x64\x64\x4a\x71','\x57\x36\x33\x63\x54\x6d\x6b\x72\x76\x57','\x57\x35\x56\x64\x47\x4b\x53\x64\x57\x34\x78\x64\x55\x43\x6b\x2f','\x57\x34\x2f\x64\x48\x66\x4a\x64\x51\x38\x6b\x59','\x69\x4d\x72\x59\x72\x67\x70\x64\x4b\x6d\x6f\x6c\x57\x52\x34','\x57\x50\x6c\x64\x4c\x62\x2f\x64\x4d\x63\x65','\x66\x6d\x6b\x6c\x45\x78\x6d\x2b\x57\x51\x58\x58','\x57\x37\x71\x45\x66\x58\x6e\x30','\x57\x4f\x6c\x64\x50\x53\x6f\x45\x57\x36\x39\x2f\x41\x58\x2f\x63\x49\x71','\x57\x52\x46\x64\x56\x62\x65\x55\x57\x36\x69\x71\x57\x37\x43','\x6b\x53\x6b\x49\x68\x61\x50\x79\x62\x53\x6b\x59\x6e\x57','\x57\x37\x52\x64\x4b\x43\x6b\x4d\x43\x77\x38\x67\x57\x50\x4a\x63\x4f\x57','\x57\x34\x54\x2b\x6c\x73\x46\x64\x54\x38\x6f\x66\x72\x38\x6b\x67','\x57\x35\x78\x64\x52\x43\x6b\x76\x57\x50\x44\x56','\x57\x52\x56\x64\x4f\x72\x79\x34\x57\x36\x79\x6f\x57\x36\x72\x46','\x57\x50\x6c\x63\x4e\x6d\x6f\x38\x57\x36\x44\x63\x61\x66\x69\x52','\x7a\x38\x6b\x5a\x64\x57','\x57\x34\x74\x64\x4f\x38\x6b\x75\x57\x50\x50\x4a\x57\x37\x54\x6c\x57\x52\x65','\x57\x35\x64\x64\x55\x74\x34\x65\x75\x4b\x33\x63\x4a\x67\x71','\x41\x6d\x6b\x62\x57\x35\x76\x56\x57\x4f\x30','\x75\x74\x4e\x64\x54\x58\x74\x63\x4e\x57','\x6b\x43\x6b\x72\x76\x77\x47\x5a','\x57\x36\x70\x64\x4f\x53\x6b\x6b\x57\x50\x50\x4f\x57\x37\x48\x78','\x42\x6d\x6b\x42\x57\x36\x76\x42\x6d\x61','\x73\x6d\x6f\x76\x57\x50\x6e\x59\x44\x4c\x42\x64\x50\x43\x6f\x59','\x61\x6d\x6f\x44\x76\x43\x6b\x34\x57\x50\x72\x46\x75\x38\x6b\x61','\x57\x51\x52\x64\x4f\x61\x61\x58\x57\x36\x69\x6e\x57\x37\x48\x6a','\x57\x34\x2f\x63\x4d\x62\x6c\x64\x54\x71\x68\x63\x4c\x59\x4e\x64\x4d\x71','\x57\x37\x7a\x76\x6e\x4c\x37\x64\x49\x61','\x41\x68\x52\x64\x53\x49\x42\x63\x47\x38\x6f\x52\x45\x71','\x70\x66\x43\x48\x69\x43\x6b\x46\x57\x34\x39\x71\x57\x50\x61','\x57\x36\x68\x63\x50\x65\x68\x63\x4f\x48\x64\x64\x4a\x43\x6f\x30\x57\x51\x75','\x62\x76\x4f\x30\x6d\x43\x6b\x46','\x57\x52\x75\x49\x57\x34\x72\x70\x63\x57','\x57\x50\x30\x69\x63\x38\x6b\x63\x61\x65\x39\x69\x66\x57','\x57\x50\x68\x63\x4f\x53\x6f\x46\x57\x35\x6a\x7a','\x44\x53\x6b\x52\x57\x35\x35\x35\x6f\x47','\x57\x51\x74\x63\x52\x38\x6f\x45\x57\x34\x4a\x63\x4c\x47','\x42\x6d\x6f\x33\x57\x52\x4b','\x68\x66\x52\x64\x4e\x53\x6f\x54\x63\x47','\x62\x43\x6f\x32\x6d\x65\x52\x63\x4b\x4b\x61','\x57\x4f\x61\x64\x6d\x6d\x6b\x57\x67\x57','\x57\x37\x37\x64\x49\x38\x6b\x74\x44\x77\x61\x42\x57\x4f\x2f\x63\x52\x47','\x57\x34\x78\x64\x48\x53\x6b\x41\x71\x75\x75','\x6d\x53\x6f\x71\x65\x68\x78\x63\x53\x78\x68\x64\x49\x30\x4b','\x57\x35\x2f\x64\x4a\x4b\x38\x6a\x57\x35\x52\x64\x56\x43\x6b\x34\x57\x35\x79','\x57\x51\x74\x64\x56\x61\x6a\x58','\x73\x38\x6b\x61\x78\x38\x6b\x58\x57\x4f\x6d','\x57\x37\x75\x74\x70\x72\x66\x67','\x57\x51\x30\x73\x57\x34\x7a\x69\x66\x6d\x6b\x66\x62\x73\x57','\x64\x74\x2f\x63\x49\x74\x5a\x64\x4e\x71','\x75\x38\x6b\x4f\x57\x36\x6a\x45\x57\x52\x57\x58\x65\x53\x6f\x44','\x57\x4f\x4b\x6b\x41\x4d\x71\x61','\x62\x38\x6f\x4a\x6e\x66\x30','\x57\x35\x70\x63\x53\x48\x64\x64\x50\x4a\x4b','\x6a\x38\x6b\x4d\x65\x74\x39\x61','\x57\x34\x44\x71\x66\x6d\x6f\x66\x57\x52\x72\x53\x57\x34\x4e\x64\x55\x61','\x57\x35\x35\x74\x57\x51\x6c\x64\x4c\x74\x75\x4b\x74\x6d\x6f\x39','\x57\x52\x69\x73\x57\x35\x7a\x41\x67\x43\x6b\x6f\x62\x71','\x57\x37\x78\x64\x50\x6d\x6b\x36\x74\x4c\x65','\x57\x35\x56\x63\x4d\x62\x64\x64\x4f\x62\x4a\x63\x49\x73\x4e\x64\x4f\x47','\x62\x6d\x6f\x61\x42\x65\x57\x59\x57\x37\x4a\x63\x53\x53\x6b\x71','\x57\x37\x70\x63\x54\x77\x46\x64\x56\x71\x43\x58\x69\x57','\x71\x67\x4e\x63\x4b\x68\x2f\x64\x53\x59\x65\x42\x7a\x57','\x70\x77\x62\x59','\x57\x34\x64\x64\x4c\x6d\x6b\x66\x57\x50\x5a\x64\x4b\x53\x6f\x6d\x57\x37\x52\x64\x4b\x53\x6b\x6a\x46\x6d\x6b\x42\x57\x37\x56\x63\x50\x61','\x76\x53\x6b\x6f\x57\x35\x31\x7a\x61\x53\x6f\x6a\x65\x38\x6b\x6f','\x57\x35\x39\x45\x6d\x38\x6f\x75\x57\x51\x48\x4d\x57\x35\x37\x64\x47\x61','\x46\x75\x68\x63\x50\x58\x46\x64\x4b\x6d\x6f\x32','\x57\x36\x68\x63\x56\x32\x4a\x64\x53\x47\x71\x58\x6e\x71','\x57\x37\x33\x63\x4e\x76\x70\x63\x53\x64\x38','\x45\x4b\x4a\x63\x48\x4e\x4e\x64\x50\x48\x69\x45\x76\x71','\x72\x53\x6b\x49\x7a\x61\x56\x64\x48\x72\x4e\x63\x50\x65\x6a\x72\x7a\x4b\x6a\x54\x64\x71','\x57\x36\x68\x64\x48\x38\x6b\x64\x45\x77\x30\x64\x57\x4f\x4e\x63\x4f\x47','\x57\x4f\x70\x63\x54\x38\x6f\x4c\x57\x36\x54\x43\x68\x75\x43\x53','\x76\x38\x6f\x50\x57\x52\x44\x75\x74\x57','\x45\x38\x6f\x4d\x57\x51\x35\x78\x72\x4e\x52\x64\x4d\x43\x6f\x62','\x57\x52\x33\x64\x47\x48\x37\x64\x4f\x5a\x6d','\x57\x4f\x70\x63\x49\x43\x6f\x61\x57\x34\x56\x63\x52\x6d\x6b\x7a\x57\x51\x2f\x64\x54\x57','\x66\x76\x44\x4a\x71\x4d\x5a\x64\x4e\x38\x6f\x45\x57\x52\x43','\x57\x37\x53\x30\x68\x71\x39\x36','\x79\x38\x6b\x76\x57\x50\x75\x61\x41\x57','\x57\x50\x5a\x63\x4e\x43\x6f\x38\x57\x36\x66\x61\x68\x75\x6d','\x42\x6d\x6b\x78\x57\x35\x78\x64\x4a\x57','\x46\x58\x33\x64\x52\x4a\x5a\x63\x48\x57','\x64\x38\x6b\x48\x79\x4e\x53','\x46\x77\x52\x63\x4b\x5a\x74\x64\x56\x53\x6f\x7a\x69\x71','\x69\x66\x4e\x64\x47\x38\x6f\x57\x68\x61','\x57\x50\x68\x64\x4a\x48\x71','\x62\x53\x6b\x53\x68\x48\x62\x4f\x68\x38\x6b\x4b','\x57\x36\x65\x57\x62\x63\x7a\x36\x72\x71\x74\x64\x51\x47','\x57\x34\x6a\x56\x6e\x47\x52\x64\x4e\x53\x6f\x73\x74\x6d\x6b\x72','\x57\x36\x6d\x6b\x63\x49\x35\x4c\x77\x47\x4a\x64\x4f\x61','\x57\x34\x70\x64\x48\x43\x6f\x4a\x57\x37\x38\x6d','\x57\x36\x42\x64\x48\x38\x6b\x49\x42\x4d\x4b','\x57\x35\x31\x64\x57\x51\x4e\x64\x50\x30\x38','\x57\x35\x70\x64\x47\x53\x6b\x6e\x57\x52\x54\x57','\x43\x43\x6b\x61\x57\x35\x78\x64\x54\x61','\x57\x50\x56\x63\x48\x62\x4a\x63\x53\x6d\x6f\x35\x57\x36\x37\x63\x47\x6d\x6b\x4a\x72\x64\x66\x61','\x57\x4f\x71\x4c\x57\x34\x62\x6b\x67\x43\x6b\x66\x64\x62\x34','\x57\x37\x33\x63\x50\x67\x74\x64\x55\x72\x44\x39\x6d\x48\x4f','\x57\x37\x74\x64\x47\x4e\x34\x32\x57\x37\x6d','\x77\x6d\x6b\x51\x57\x50\x61\x54\x78\x38\x6f\x58\x64\x43\x6b\x53','\x44\x32\x5a\x63\x4d\x73\x4e\x64\x55\x71','\x57\x36\x68\x63\x50\x4d\x70\x64\x54\x71\x79\x34','\x73\x4c\x64\x63\x50\x31\x37\x64\x4a\x61','\x7a\x64\x33\x64\x51\x38\x6b\x53','\x57\x36\x4e\x64\x56\x53\x6b\x65\x57\x4f\x44\x49\x57\x37\x54\x2f\x57\x52\x43','\x65\x47\x68\x63\x4d\x58\x56\x64\x52\x57','\x57\x50\x64\x63\x4b\x38\x6f\x68\x57\x34\x56\x63\x4c\x43\x6b\x4a\x57\x51\x56\x64\x56\x61','\x57\x37\x44\x36\x70\x73\x42\x64\x56\x47','\x57\x50\x33\x63\x47\x43\x6f\x61\x57\x34\x56\x63\x4a\x38\x6b\x46\x57\x52\x56\x64\x48\x57','\x57\x37\x4a\x63\x56\x4a\x64\x64\x4d\x63\x68\x63\x50\x62\x52\x64\x55\x61','\x57\x52\x74\x63\x54\x53\x6f\x37\x57\x36\x6c\x63\x54\x38\x6b\x35\x57\x50\x33\x64\x49\x47','\x63\x43\x6f\x72\x44\x4b\x34\x52\x57\x36\x61','\x57\x36\x6c\x64\x56\x6d\x6b\x4e\x57\x50\x6e\x58','\x65\x53\x6f\x48\x68\x4c\x46\x63\x4e\x4b\x53','\x78\x68\x33\x63\x49\x64\x38','\x57\x34\x76\x70\x57\x50\x42\x64\x49\x73\x6d\x58\x72\x57','\x57\x36\x4a\x63\x53\x6d\x6b\x61\x77\x6d\x6f\x37\x63\x43\x6b\x72\x67\x71','\x42\x53\x6b\x4c\x6e\x38\x6f\x39\x57\x52\x4b','\x73\x67\x4e\x63\x50\x78\x70\x64\x51\x72\x43\x67\x7a\x47','\x71\x66\x2f\x64\x48\x47\x46\x63\x56\x71','\x71\x43\x6b\x68\x71\x53\x6b\x30\x57\x50\x76\x67\x75\x57','\x57\x37\x2f\x63\x53\x33\x5a\x64\x52\x57\x71\x36\x69\x57','\x57\x50\x2f\x64\x47\x59\x52\x64\x49\x74\x43','\x57\x37\x4a\x64\x55\x78\x34\x4b\x57\x34\x75','\x6e\x38\x6f\x39\x78\x4e\x61\x61\x57\x35\x4a\x63\x49\x43\x6b\x56','\x57\x35\x56\x64\x49\x66\x69\x6b\x57\x34\x37\x64\x4b\x6d\x6f\x53\x57\x35\x69','\x57\x34\x6e\x6b\x6e\x6d\x6f\x7a','\x62\x58\x46\x63\x53\x72\x5a\x64\x4a\x47','\x6c\x30\x72\x5a\x73\x65\x65','\x79\x67\x64\x64\x4e\x5a\x68\x63\x4c\x71','\x57\x50\x6c\x63\x4d\x38\x6f\x37\x57\x36\x44\x42\x6c\x30\x38\x38','\x62\x30\x33\x64\x49\x43\x6f\x69\x68\x53\x6f\x49','\x57\x4f\x70\x64\x48\x4a\x53','\x7a\x6d\x6f\x72\x57\x52\x39\x4e\x44\x57','\x42\x38\x6b\x63\x57\x35\x68\x64\x4d\x43\x6f\x55\x57\x34\x30','\x57\x34\x4c\x39\x6d\x38\x6f\x43\x57\x52\x75','\x65\x6d\x6b\x33\x65\x62\x48\x57\x6c\x53\x6f\x33\x6e\x71','\x57\x51\x4e\x63\x48\x43\x6b\x37\x57\x4f\x79\x2f\x75\x53\x6b\x72\x65\x6d\x6b\x48\x71\x57','\x57\x50\x2f\x63\x4e\x38\x6f\x47\x57\x35\x50\x41','\x57\x35\x4e\x64\x47\x57\x6d\x4b\x71\x71','\x71\x38\x6f\x69\x6e\x75\x61\x49\x57\x51\x62\x35\x57\x34\x31\x76','\x57\x34\x31\x77\x61\x68\x52\x64\x53\x61','\x57\x36\x5a\x63\x56\x31\x6c\x63\x49\x61\x64\x64\x4c\x53\x6f\x4a\x57\x51\x71','\x71\x4b\x68\x64\x52\x61\x64\x63\x55\x6d\x6f\x68\x72\x43\x6b\x63','\x45\x53\x6b\x61\x57\x35\x46\x64\x56\x43\x6f\x4a','\x57\x4f\x4e\x63\x51\x43\x6f\x66\x57\x36\x66\x67','\x57\x52\x71\x70\x64\x38\x6b\x4f\x67\x47','\x65\x53\x6b\x6e\x73\x33\x4b\x2f\x57\x51\x48\x47\x57\x34\x4b','\x77\x6d\x6b\x65\x57\x34\x62\x7a\x66\x38\x6f\x43\x61\x57','\x69\x65\x52\x64\x49\x53\x6f\x76\x6f\x47','\x57\x37\x70\x63\x50\x78\x5a\x64\x55\x72\x65','\x57\x35\x66\x69\x57\x4f\x37\x64\x56\x66\x34','\x57\x50\x6d\x2b\x66\x43\x6b\x53\x68\x61','\x57\x36\x78\x63\x55\x4c\x4a\x63\x4b\x47\x70\x64\x4e\x43\x6f\x2f\x57\x52\x75','\x57\x50\x42\x64\x47\x33\x47','\x77\x6d\x6b\x33\x57\x4f\x30\x44\x57\x34\x43','\x65\x71\x4e\x63\x51\x48\x64\x64\x4d\x71','\x57\x4f\x74\x64\x4b\x72\x42\x64\x4f\x62\x4f','\x75\x38\x6b\x62\x57\x52\x71\x61\x74\x71','\x57\x4f\x46\x64\x51\x53\x6f\x7a\x57\x35\x44\x54','\x57\x35\x58\x6a\x57\x52\x78\x64\x4c\x5a\x47\x4a\x76\x53\x6f\x58','\x57\x50\x47\x6c\x65\x38\x6b\x63\x6c\x31\x47','\x57\x36\x68\x64\x49\x6d\x6b\x42\x57\x50\x76\x69','\x57\x34\x4c\x6f\x57\x52\x37\x64\x4e\x73\x47\x6e\x68\x53\x6f\x4a','\x6f\x75\x58\x39\x74\x4e\x44\x70\x7a\x68\x69','\x75\x43\x6b\x69\x57\x34\x62\x6c\x66\x6d\x6f\x78\x61\x38\x6b\x6a','\x46\x43\x6b\x75\x57\x34\x70\x64\x4a\x53\x6f\x35\x57\x37\x50\x4b\x57\x37\x79','\x79\x59\x33\x64\x56\x6d\x6b\x4e\x74\x4c\x48\x75','\x57\x36\x64\x63\x49\x30\x71','\x74\x59\x5a\x64\x55\x53\x6b\x36\x72\x57','\x57\x4f\x64\x64\x52\x78\x4e\x64\x52\x59\x2f\x63\x49\x38\x6f\x6c\x42\x47','\x57\x37\x39\x76\x6e\x76\x56\x64\x51\x57','\x57\x36\x33\x63\x55\x78\x42\x63\x56\x48\x56\x64\x4b\x43\x6f\x4c\x57\x51\x71','\x78\x76\x46\x63\x4b\x47\x56\x64\x53\x61','\x61\x57\x4e\x63\x54\x58\x68\x64\x4a\x6d\x6f\x31\x57\x4f\x76\x77','\x57\x4f\x64\x63\x54\x43\x6f\x55\x57\x36\x70\x63\x53\x71','\x57\x4f\x64\x64\x4d\x6d\x6f\x44\x57\x36\x6a\x4a\x41\x57','\x6f\x47\x52\x63\x4f\x62\x56\x64\x49\x71','\x73\x67\x74\x64\x4e\x64\x46\x63\x4c\x71','\x57\x4f\x75\x48\x68\x53\x6b\x75\x62\x47','\x57\x51\x68\x63\x4b\x38\x6f\x73\x6c\x64\x6a\x77\x57\x35\x4a\x63\x48\x38\x6f\x77\x63\x6d\x6f\x42\x57\x52\x52\x63\x4b\x61','\x72\x43\x6f\x52\x57\x4f\x75','\x57\x37\x68\x64\x51\x6d\x6b\x33\x73\x68\x43','\x57\x35\x42\x64\x4b\x38\x6f\x49\x57\x35\x30\x2f\x43\x38\x6b\x6d\x6f\x61','\x57\x37\x2f\x64\x47\x4a\x71\x6a\x42\x66\x6c\x63\x49\x31\x53','\x75\x43\x6b\x4b\x57\x34\x44\x61\x57\x52\x71\x59\x65\x53\x6f\x39','\x75\x33\x2f\x63\x47\x68\x56\x64\x51\x58\x69\x78\x7a\x57','\x42\x67\x64\x64\x47\x63\x46\x63\x4d\x6d\x6f\x4b\x7a\x57','\x61\x4a\x46\x63\x56\x62\x74\x64\x4f\x61','\x43\x78\x4e\x64\x4c\x4a\x61','\x57\x37\x5a\x64\x4d\x6d\x6b\x6e\x75\x65\x71','\x57\x36\x4a\x64\x48\x4c\x5a\x64\x4c\x53\x6b\x78','\x57\x35\x6a\x63\x63\x47','\x77\x38\x6b\x55\x57\x4f\x79\x73\x57\x34\x56\x64\x4d\x6d\x6b\x6c\x57\x36\x6d','\x57\x35\x58\x6a\x57\x51\x74\x64\x4b\x57','\x57\x34\x48\x41\x70\x4c\x5a\x64\x4b\x38\x6b\x4a\x57\x34\x4a\x63\x47\x61','\x62\x6d\x6f\x34\x6f\x65\x4e\x63\x4a\x75\x56\x64\x55\x71','\x57\x37\x33\x64\x4a\x43\x6b\x78','\x57\x4f\x74\x64\x54\x48\x58\x5a\x69\x57','\x66\x78\x6d\x58\x63\x53\x6b\x55','\x57\x50\x2f\x63\x48\x43\x6f\x6d\x57\x35\x52\x63\x50\x6d\x6b\x71\x57\x51\x56\x64\x56\x57'];_0x38fa=function(){return _0x40d5a0;};return _0x38fa();}function _0x431d2e(){const _0x471960=_0x1369a7;return Object[_0x471960(0x226,'\x5a\x6d\x46\x6c')]({},_0xb2c662);}function _0x15936a(){const _0x5cf2f0=_0x1369a7,_0x504e41={'\x66\x75\x42\x49\x6d':function(_0x10828c){return _0x10828c();}};_0x504e41[_0x5cf2f0(0x27e,'\x50\x54\x45\x78')](_0x25bb17),_0x3535e1=[],_0x1e9753[_0x5cf2f0(0x326,'\x47\x59\x5d\x28')]();const _0x55750d={};_0x55750d['\x6f\x6b']=0x0,_0x55750d[_0x5cf2f0(0x31d,'\x74\x35\x38\x24')]=0x0,_0x55750d[_0x5cf2f0(0x274,'\x66\x71\x56\x64')]=0x0,_0x55750d[_0x5cf2f0(0x2b1,'\x6b\x70\x67\x51')]=0x0,_0xb2c662=_0x55750d;}function _0x22ee67(){const _0x953c24=_0x1369a7;return _0x3535e1[_0x953c24(0x2cc,'\x47\x59\x5d\x28')];}const _0x59860={};_0x59860[_0x1369a7(0x2f0,'\x32\x42\x76\x58')+_0x1369a7(0x28a,'\x50\x54\x45\x78')+'\x41\x73\x73\x65\x74']=_0x11296d,_0x59860[_0x1369a7(0x365,'\x38\x70\x5d\x4d')+'\x63\x65']=_0x14ba11,_0x59860[_0x1369a7(0x2df,'\x46\x23\x62\x50')+_0x1369a7(0x2a3,'\x5d\x5a\x40\x53')]=_0x415953,_0x59860['\x73\x74\x6f\x70\x57\x6f\x72\x6b'+'\x65\x72']=_0x25bb17,_0x59860[_0x1369a7(0x2fc,'\x36\x68\x6c\x67')+'\x65\x70\x6f\x72\x74']=_0x431d2e,_0x59860[_0x1369a7(0x37b,'\x6c\x4e\x53\x42')+_0x1369a7(0x214,'\x5e\x4c\x24\x79')]=_0x1bcbae,_0x59860[_0x1369a7(0x20b,'\x35\x38\x79\x73')+_0x1369a7(0x312,'\x56\x29\x4f\x79')]=_0x15936a,_0x59860[_0x1369a7(0x38a,'\x50\x6f\x28\x50')+_0x1369a7(0x247,'\x68\x6f\x47\x54')+_0x1369a7(0x371,'\x33\x61\x5d\x4c')+'\x67']=_0x22ee67,module[_0x1369a7(0x382,'\x38\x70\x5d\x4d')]=_0x59860;
|
|
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
|
+
};
|