@evomap/evolver 1.88.4 → 1.89.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -553
- 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 +6 -17
- 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/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/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 -1
- package/src/gep/workspaceKeychain.js +174 -1
- package/src/proxy/extensions/traceControl.js +99 -1
- package/src/proxy/inject.js +52 -1
- package/src/proxy/trace/extractor.js +534 -1
- package/src/proxy/trace/usage.js +105 -1
- package/CONTRIBUTING.md +0 -19
- 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
package/src/gep/hubVerify.js
CHANGED
|
@@ -1 +1,306 @@
|
|
|
1
|
-
const _0x475028=_0x5d34;(function(_0x1d8158,_0x14bc4a){const _0x37b5d1=_0x5d34,_0x4f31ce=_0x1d8158();while(!![]){try{const _0x3080c5=parseInt(_0x37b5d1(0x2c3,'\x75\x37\x57\x62'))/(0xd5f+-0xc92+0x3*-0x44)+parseInt(_0x37b5d1(0x2cb,'\x33\x4d\x71\x38'))/(0x1952+-0x1a5c+-0x1*-0x10c)+-parseInt(_0x37b5d1(0x13a,'\x6d\x5b\x47\x38'))/(-0x1812+-0x1441+0x2c56)+-parseInt(_0x37b5d1(0x180,'\x6f\x5b\x28\x67'))/(-0x37*0x4+-0x22b2+0x1*0x2392)*(parseInt(_0x37b5d1(0x1da,'\x42\x51\x6b\x68'))/(-0x1812+-0x1682+0x2e99))+-parseInt(_0x37b5d1(0x218,'\x75\x63\x6f\x33'))/(0x11*0x22a+0x1bda+-0x1*0x409e)+-parseInt(_0x37b5d1(0x2f1,'\x74\x68\x70\x53'))/(-0xd*0x1d2+0x2*-0x27a+0x1*0x1ca5)*(-parseInt(_0x37b5d1(0x261,'\x26\x43\x4b\x6b'))/(-0x1b*-0x141+-0x4cd+-0x1d06))+parseInt(_0x37b5d1(0x2e2,'\x43\x76\x4b\x32'))/(-0x1*-0x2f1+-0x36b*0x5+0xe2f);if(_0x3080c5===_0x14bc4a)break;else _0x4f31ce['push'](_0x4f31ce['shift']());}catch(_0x3c5eb3){_0x4f31ce['push'](_0x4f31ce['shift']());}}}(_0x3755,0x5c45f+-0x91690+0xaec9f));const _0x4839de=(function(){const _0x50f62a=_0x5d34,_0x456a42={'\x45\x68\x47\x6a\x71':function(_0x293917){return _0x293917();},'\x62\x55\x65\x48\x77':function(_0x473a78,_0x265ef9){return _0x473a78===_0x265ef9;},'\x67\x75\x52\x64\x52':_0x50f62a(0x1e7,'\x52\x48\x77\x54'),'\x76\x70\x4f\x41\x6d':function(_0x3840c6,_0x2bd80e){return _0x3840c6===_0x2bd80e;},'\x6f\x76\x71\x46\x44':_0x50f62a(0x209,'\x4a\x55\x72\x72'),'\x46\x51\x67\x6c\x41':_0x50f62a(0x27a,'\x26\x43\x4b\x6b')};let _0x4b9b0c=!![];return function(_0x54777d,_0x44ef4d){const _0x5b6c4e=_0x50f62a;if(_0x456a42['\x76\x70\x4f\x41\x6d'](_0x456a42[_0x5b6c4e(0x24c,'\x44\x5e\x58\x35')],_0x456a42[_0x5b6c4e(0x250,'\x35\x37\x78\x40')]))_0x456a42[_0x5b6c4e(0x13f,'\x57\x36\x52\x65')](_0x384721);else{const _0x1dd447=_0x4b9b0c?function(){const _0x1c97bc=_0x5b6c4e;if(_0x456a42[_0x1c97bc(0x1d5,'\x4e\x73\x42\x40')](_0x456a42[_0x1c97bc(0x2a0,'\x52\x6c\x36\x2a')],_0x456a42[_0x1c97bc(0x1ef,'\x54\x36\x59\x37')])){if(_0x44ef4d){const _0x18d881=_0x44ef4d[_0x1c97bc(0x198,'\x42\x26\x35\x28')](_0x54777d,arguments);return _0x44ef4d=null,_0x18d881;}}else return null;}:function(){};return _0x4b9b0c=![],_0x1dd447;}};}()),_0x50fede=_0x4839de(this,function(){const _0x2cdc4c=_0x5d34,_0x4d7500={};_0x4d7500[_0x2cdc4c(0x1fc,'\x47\x64\x65\x56')]='\x28\x28\x28\x2e\x2b\x29\x2b\x29'+_0x2cdc4c(0x1bb,'\x42\x51\x6b\x68');const _0x305ff5=_0x4d7500;return _0x50fede[_0x2cdc4c(0x2a7,'\x41\x50\x34\x69')]()['\x73\x65\x61\x72\x63\x68'](_0x305ff5[_0x2cdc4c(0x15a,'\x57\x2a\x4c\x48')])[_0x2cdc4c(0x14e,'\x43\x76\x4b\x32')]()[_0x2cdc4c(0x2d0,'\x52\x48\x77\x54')+'\x74\x6f\x72'](_0x50fede)[_0x2cdc4c(0x25e,'\x74\x68\x70\x53')](_0x305ff5['\x43\x67\x51\x59\x69']);});_0x50fede();const _0x232e8a=require(_0x475028(0x120,'\x34\x76\x6b\x2a')),_0x50769a=require('\x66\x73'),_0x55f3eb=require(_0x475028(0x1be,'\x33\x4d\x71\x38')),{hubFetch:_0x58ea0d}=require(_0x475028(0x28f,'\x43\x76\x4b\x32')+'\x63\x68'),{withFileLock:_0x5b8bc5}=require(_0x475028(0x1e3,'\x75\x63\x6f\x33')+_0x475028(0x157,'\x51\x5e\x6f\x4d'));function _0x5ca626(_0x1555f1,_0x2c26a4){const _0x5f3ce0=_0x475028;return _0x232e8a[_0x5f3ce0(0x152,'\x53\x42\x35\x57')+'\x61\x63'](_0x5f3ce0(0x1c5,'\x34\x76\x6b\x2a'),_0x1555f1)[_0x5f3ce0(0x1b9,'\x51\x5e\x6f\x4d')](_0x2c26a4)[_0x5f3ce0(0x138,'\x4b\x23\x38\x42')](_0x5f3ce0(0x1b7,'\x63\x2a\x67\x76'));}function _0x5d426a(_0x428505){const _0x3b8092=_0x475028,_0x1e1e21={};_0x1e1e21[_0x3b8092(0x16f,'\x6c\x37\x69\x56')]=_0x3b8092(0x2b1,'\x51\x5e\x6f\x4d'),_0x1e1e21['\x56\x68\x64\x61\x69']=function(_0x5a4678,_0x586f9f){return _0x5a4678||_0x586f9f;},_0x1e1e21[_0x3b8092(0x1f8,'\x41\x56\x6d\x49')]=_0x3b8092(0x24d,'\x47\x64\x65\x56');const _0x54e747=_0x1e1e21;return _0x232e8a[_0x3b8092(0x2ba,'\x43\x76\x4b\x32')+'\x73\x68'](_0x54e747[_0x3b8092(0x131,'\x57\x36\x52\x65')])[_0x3b8092(0x28b,'\x50\x24\x56\x6a')](String(_0x54e747['\x56\x68\x64\x61\x69'](_0x428505,'')))[_0x3b8092(0x1d3,'\x6e\x78\x52\x48')](_0x54e747[_0x3b8092(0x272,'\x4a\x55\x72\x72')])[_0x3b8092(0x2e0,'\x4e\x73\x42\x40')](-0x3*0x9fe+0x93f+-0x3*-0x6e9,0x5*-0x382+0x152b+-0x391);}function _0x346f1b({geneId:_0x19ada1,signals:_0x1574f5,mutation:_0x41a66d}){const _0xcdfff6=_0x475028,_0x16c9f3={'\x48\x62\x4a\x74\x48':function(_0x5765bd,_0x1a888d){return _0x5765bd(_0x1a888d);},'\x44\x59\x65\x5a\x6a':_0xcdfff6(0x281,'\x74\x68\x70\x53')+_0xcdfff6(0x294,'\x4b\x64\x7a\x6f'),'\x56\x49\x75\x77\x4e':function(_0x3b1369,_0x5bcbea){return _0x3b1369===_0x5bcbea;},'\x6f\x62\x72\x4b\x75':_0xcdfff6(0x208,'\x33\x4d\x71\x38'),'\x74\x6e\x5a\x6e\x46':_0xcdfff6(0x2b0,'\x35\x37\x78\x40'),'\x6c\x63\x49\x70\x4f':_0xcdfff6(0x248,'\x43\x76\x4b\x32'),'\x62\x57\x68\x6c\x63':_0xcdfff6(0x2a1,'\x73\x44\x5a\x76'),'\x74\x53\x4d\x72\x59':function(_0x1d22ba,_0x5f5987){return _0x1d22ba(_0x5f5987);},'\x58\x50\x63\x74\x52':function(_0xf4f64e,_0x45d6b3){return _0xf4f64e||_0x45d6b3;},'\x79\x56\x4f\x6e\x5a':function(_0x28d67a,_0x4d3cb7){return _0x28d67a(_0x4d3cb7);},'\x4d\x68\x64\x42\x68':function(_0x1f3655,_0x36ec44,_0x1af481){return _0x1f3655(_0x36ec44,_0x1af481);}};let _0x249277=null;try{if(_0x16c9f3[_0xcdfff6(0x1f7,'\x57\x2a\x4c\x48')](_0xcdfff6(0x183,'\x44\x4c\x6c\x33'),_0x16c9f3[_0xcdfff6(0x2d4,'\x6e\x78\x52\x48')]))_0x249277=require(_0x16c9f3[_0xcdfff6(0x23f,'\x52\x6c\x36\x2a')])[_0xcdfff6(0x234,'\x73\x44\x5a\x76')+_0xcdfff6(0x2d9,'\x6c\x37\x69\x56')]();else{const _0x23b3ca={};return _0x23b3ca['\x6f\x6b']=![],_0x23b3ca[_0xcdfff6(0x177,'\x41\x50\x34\x69')]=_0x2c5720[_0xcdfff6(0x2a4,'\x6f\x5b\x28\x67')],_0x23b3ca[_0xcdfff6(0x296,'\x52\x48\x77\x54')]=!![],_0x23b3ca;}}catch(_0x3283ba){}if(!_0x249277)return null;let _0x4f72bd=null;try{_0x16c9f3[_0xcdfff6(0x1f1,'\x76\x56\x52\x23')](_0xcdfff6(0x226,'\x43\x76\x4b\x32'),_0x16c9f3[_0xcdfff6(0x149,'\x43\x76\x4b\x32')])?_0x572d58=_0x16c9f3[_0xcdfff6(0x214,'\x4b\x23\x38\x42')](_0x41dd2d,_0x16c9f3[_0xcdfff6(0x1d9,'\x49\x74\x75\x2a')])[_0xcdfff6(0x1fa,'\x50\x24\x56\x6a')+'\x64']():_0x4f72bd=require(_0x16c9f3[_0xcdfff6(0x11b,'\x47\x64\x65\x56')])[_0xcdfff6(0x244,'\x74\x68\x70\x53')+'\x64']();}catch(_0x78a17c){}if(!_0x4f72bd)return null;const _0x291f61=_0x232e8a[_0xcdfff6(0x1d0,'\x74\x68\x70\x53')+'\x73\x68'](_0x16c9f3[_0xcdfff6(0x26e,'\x52\x6c\x36\x2a')])[_0xcdfff6(0x175,'\x41\x56\x6d\x49')](_0x249277)[_0xcdfff6(0x210,'\x46\x5b\x46\x57')](_0x16c9f3[_0xcdfff6(0x2c5,'\x54\x36\x59\x37')]),_0x13206=Date[_0xcdfff6(0x260,'\x57\x36\x52\x65')](),_0x4790c9=_0x16c9f3[_0xcdfff6(0x1ba,'\x48\x54\x56\x62')](_0x5d426a,JSON['\x73\x74\x72\x69\x6e\x67\x69\x66'+'\x79'](Array[_0xcdfff6(0x168,'\x4b\x23\x38\x42')](_0x1574f5)?_0x1574f5[_0xcdfff6(0x213,'\x4a\x55\x72\x72')](0x3*0x18e+-0x2509+-0x205f*-0x1,-0x19cb+0x1fff+-0x62c*0x1):[])),_0x461af4=_0x16c9f3[_0xcdfff6(0x146,'\x75\x63\x6f\x33')](_0x5d426a,JSON[_0xcdfff6(0x219,'\x42\x26\x35\x28')+'\x79'](_0x16c9f3[_0xcdfff6(0x2ee,'\x33\x31\x7a\x4a')](_0x41a66d,{}))),_0x176834=[_0x4f72bd,_0x16c9f3[_0xcdfff6(0x2e9,'\x44\x4c\x6c\x33')](_0x19ada1,''),_0x4790c9,_0x461af4,_0x16c9f3[_0xcdfff6(0x1de,'\x74\x68\x70\x53')](String,_0x13206)][_0xcdfff6(0x18d,'\x2a\x64\x61\x29')]('\x7c'),_0x567d9c=_0x16c9f3[_0xcdfff6(0x293,'\x53\x42\x35\x57')](_0x5ca626,_0x291f61,_0x176834);return{'\x6e\x6f\x64\x65\x49\x64':_0x4f72bd,'\x6e\x6f\x64\x65\x53\x65\x63\x72\x65\x74':_0x249277,'\x62\x6f\x64\x79':{'\x73\x65\x6e\x64\x65\x72\x5f\x69\x64':_0x4f72bd,'\x67\x65\x6e\x65\x5f\x69\x64':_0x16c9f3[_0xcdfff6(0x155,'\x34\x76\x6b\x2a')](_0x19ada1,''),'\x73\x69\x67\x6e\x61\x6c\x73\x5f\x68\x61\x73\x68':_0x4790c9,'\x6d\x75\x74\x61\x74\x69\x6f\x6e\x5f\x68\x61\x73\x68':_0x461af4,'\x74\x73':_0x13206,'\x63\x6c\x69\x65\x6e\x74\x5f\x73\x69\x67\x6e\x61\x74\x75\x72\x65':_0x567d9c}};}function _0x4d80ce({geneId:_0x1eca22,signals:_0x3398ec,mutation:_0x982b66}){const _0x2b1e88=_0x475028,_0x2910bf={'\x66\x50\x77\x58\x7a':function(_0x1210de,_0xbce180){return _0x1210de(_0xbce180);},'\x69\x53\x54\x59\x44':_0x2b1e88(0x253,'\x4e\x73\x42\x40'),'\x66\x4b\x76\x78\x49':_0x2b1e88(0x22c,'\x57\x36\x52\x65'),'\x74\x71\x6e\x68\x4f':function(_0x59de0a,_0x59e30a){return _0x59de0a>=_0x59e30a;},'\x4e\x49\x77\x76\x72':function(_0x45db65,_0x3df019){return _0x45db65+_0x3df019;},'\x61\x4f\x63\x51\x51':function(_0x4482df,_0x134b7c){return _0x4482df+_0x134b7c;},'\x77\x56\x4e\x6d\x66':_0x2b1e88(0x22e,'\x6e\x78\x52\x48'),'\x50\x57\x73\x43\x51':_0x2b1e88(0x1ff,'\x6c\x37\x69\x56'),'\x50\x59\x62\x54\x57':function(_0x494717){return _0x494717();},'\x4e\x6a\x4b\x41\x64':_0x2b1e88(0x245,'\x5a\x52\x57\x40')+_0x2b1e88(0x2c0,'\x41\x56\x6d\x49')+_0x2b1e88(0x2cf,'\x4d\x6a\x59\x28')+'\x64','\x6c\x4d\x68\x51\x72':_0x2b1e88(0x1e8,'\x42\x51\x6b\x68'),'\x56\x73\x64\x6c\x43':_0x2b1e88(0x1a2,'\x73\x44\x5a\x76')+'\x72\x6c','\x6b\x6e\x4d\x79\x52':function(_0x4a651b,_0x585cec){return _0x4a651b+_0x585cec;},'\x53\x6b\x62\x4b\x6c':function(_0x2bcec1,_0x5aaf72){return _0x2bcec1(_0x5aaf72);},'\x55\x74\x72\x6c\x42':_0x2b1e88(0x10d,'\x46\x5b\x46\x57')+'\x67'},_0x582be7=(process.env.A2A_HUB_URL||'')['\x72\x65\x70\x6c\x61\x63\x65'](/\/+$/,''),_0x5a0449={};_0x5a0449['\x6f\x6b']=![],_0x5a0449[_0x2b1e88(0x178,'\x57\x2a\x4c\x48')]=_0x2910bf[_0x2b1e88(0x2ea,'\x5a\x24\x73\x4b')],_0x5a0449['\x6f\x66\x66\x6c\x69\x6e\x65']=!![];if(!_0x582be7)return Promise['\x72\x65\x73\x6f\x6c\x76\x65'](_0x5a0449);const _0x8b158f={};_0x8b158f[_0x2b1e88(0x1f6,'\x76\x56\x52\x23')]=_0x1eca22,_0x8b158f[_0x2b1e88(0x1df,'\x43\x76\x4b\x32')]=_0x3398ec,_0x8b158f[_0x2b1e88(0x1a6,'\x47\x6f\x53\x63')]=_0x982b66;const _0xb3d256=_0x2910bf['\x66\x50\x77\x58\x7a'](_0x346f1b,_0x8b158f),_0x1c30af={};_0x1c30af['\x6f\x6b']=![],_0x1c30af[_0x2b1e88(0x263,'\x42\x26\x35\x28')]=_0x2b1e88(0x239,'\x51\x5e\x6f\x4d')+'\x6e\x74\x69\x61\x6c\x73',_0x1c30af[_0x2b1e88(0x16d,'\x48\x54\x56\x62')]=!![];if(!_0xb3d256)return Promise[_0x2b1e88(0x197,'\x57\x2a\x4c\x48')](_0x1c30af);const _0x136ab5=_0x2910bf['\x6b\x6e\x4d\x79\x52'](_0x582be7,_0x2b1e88(0x137,'\x6f\x5b\x28\x67')+'\x69\x66\x79\x2d\x73\x6f\x6c\x69'+'\x64\x69\x66\x79'),_0x34143c=_0x2910bf[_0x2b1e88(0x229,'\x6e\x78\x52\x48')](require,_0x2910bf[_0x2b1e88(0x2dd,'\x74\x68\x70\x53')])[_0x2b1e88(0x1f5,'\x41\x56\x6d\x49')+'\x4e\x53\x50\x4f\x52\x54\x5f\x54'+_0x2b1e88(0x1f0,'\x46\x5b\x46\x57')+'\x53']||0x1*-0x551+-0x754+-0x33b5*-0x1,_0x251965={};_0x251965[_0x2b1e88(0x292,'\x33\x31\x7a\x4a')+'\x54\x79\x70\x65']=_0x2b1e88(0x2cc,'\x4c\x74\x5b\x45')+_0x2b1e88(0x247,'\x42\x51\x6b\x68'),_0x251965[_0x2b1e88(0x117,'\x50\x42\x4c\x48')+_0x2b1e88(0x19e,'\x48\x54\x56\x62')]=_0x2b1e88(0x160,'\x5a\x52\x57\x40')+_0xb3d256['\x6e\x6f\x64\x65\x53\x65\x63\x72'+'\x65\x74'];const _0x101fc2=_0x251965;return _0x58ea0d(_0x136ab5,{'\x6d\x65\x74\x68\x6f\x64':_0x2b1e88(0x222,'\x73\x44\x5a\x76'),'\x68\x65\x61\x64\x65\x72\x73':_0x101fc2,'\x62\x6f\x64\x79':JSON[_0x2b1e88(0x17f,'\x6e\x78\x52\x48')+'\x79'](_0xb3d256[_0x2b1e88(0x1e6,'\x5a\x52\x57\x40')]),'\x73\x69\x67\x6e\x61\x6c':AbortSignal[_0x2b1e88(0x182,'\x73\x44\x5a\x76')](_0x34143c)})['\x74\x68\x65\x6e'](function(_0x269083){const _0x20b640=_0x2b1e88,_0x1854ab={'\x74\x44\x61\x46\x6e':function(_0x5a5615,_0x19e8c5){const _0x9af42a=_0x5d34;return _0x2910bf[_0x9af42a(0x176,'\x75\x37\x57\x62')](_0x5a5615,_0x19e8c5);},'\x61\x68\x79\x45\x56':function(_0x4b2f1d,_0x255cd5){const _0x5d9dd5=_0x5d34;return _0x2910bf[_0x5d9dd5(0x1ea,'\x50\x42\x4c\x48')](_0x4b2f1d,_0x255cd5);},'\x43\x41\x55\x43\x72':function(_0x1d6769,_0xdac387){const _0x3b91e2=_0x5d34;return _0x2910bf[_0x3b91e2(0x1cf,'\x57\x36\x52\x65')](_0x1d6769,_0xdac387);},'\x56\x6f\x65\x67\x4e':_0x2910bf[_0x20b640(0x23e,'\x26\x43\x4b\x6b')],'\x6b\x4a\x48\x49\x67':function(_0x11a133,_0x158038){return _0x11a133(_0x158038);}};if(_0x269083[_0x20b640(0x133,'\x5a\x52\x57\x40')]<0x5*-0x54a+0xfd*0x1d+-0x43){if(_0x2910bf[_0x20b640(0x2fd,'\x4b\x23\x38\x42')]!==_0x20b640(0x2d7,'\x44\x5e\x58\x35'))return _0x10661c[_0x20b640(0x251,'\x4b\x64\x7a\x6f')](_0x2910bf[_0x20b640(0x29d,'\x50\x24\x56\x6a')](_0x3ff32d,_0x2910bf[_0x20b640(0x170,'\x6e\x35\x4f\x50')])[_0x20b640(0x115,'\x4d\x6a\x59\x28')+'\x6f\x6f\x74'](),_0x20b640(0x2db,'\x23\x21\x4d\x79'),_0x2910bf[_0x20b640(0x1bc,'\x4b\x23\x38\x42')]);else _0x2910bf[_0x20b640(0x27d,'\x6e\x35\x4f\x50')](_0xe354b5);}if(!_0x269083['\x6f\x6b'])return _0x269083[_0x20b640(0x14a,'\x50\x24\x56\x6a')]()[_0x20b640(0x1b5,'\x47\x6f\x53\x63')](function(_0x526407){const _0x2b2d40=_0x20b640,_0x249306=_0x1854ab[_0x2b2d40(0x14d,'\x44\x4c\x6c\x33')](_0x269083[_0x2b2d40(0x227,'\x57\x2a\x4c\x48')],0x1b23*-0x1+-0xbdf+-0x28f6*-0x1);return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x1854ab[_0x2b2d40(0x15c,'\x6f\x5b\x28\x67')](_0x1854ab[_0x2b2d40(0x25a,'\x46\x65\x74\x62')](_0x1854ab[_0x2b2d40(0x127,'\x4b\x64\x7a\x6f')](_0x1854ab[_0x2b2d40(0x26f,'\x54\x36\x59\x37')],_0x269083[_0x2b2d40(0x289,'\x43\x76\x4b\x32')]),'\x3a\x20'),_0x526407[_0x2b2d40(0x187,'\x41\x50\x34\x69')](-0x13*0x143+-0x192a+0x3123,-0x1ebd+0x1583+-0x6*-0x1ab)),'\x6f\x66\x66\x6c\x69\x6e\x65':_0x249306};});return _0x269083[_0x20b640(0x274,'\x49\x74\x75\x2a')]()[_0x20b640(0x11f,'\x37\x65\x4b\x51')](function(_0x38cc78){const _0x309319=_0x20b640;return _0x38cc78&&_0x38cc78['\x6f\x6b']&&_0x38cc78[_0x309319(0x1e1,'\x4c\x74\x5b\x45')+_0x309319(0x148,'\x41\x56\x6d\x49')]&&_0x1854ab[_0x309319(0x2d5,'\x6e\x35\x4f\x50')](_0x5326e5,_0x38cc78[_0x309319(0x19d,'\x4b\x64\x7a\x6f')+_0x309319(0x1e0,'\x48\x54\x56\x62')]),_0x38cc78;});})[_0x2b1e88(0x1a1,'\x52\x48\x77\x54')](function(_0x4a4442){const _0x3e61af=_0x2b1e88;if(_0x3e61af(0x20f,'\x4a\x55\x72\x72')!==_0x2910bf['\x6c\x4d\x68\x51\x72']){const _0x4b728a={};return _0x4b728a['\x6f\x6b']=![],_0x4b728a['\x65\x72\x72\x6f\x72']=_0x2910bf[_0x3e61af(0x129,'\x50\x24\x56\x6a')],_0x4b728a[_0x3e61af(0x21b,'\x5a\x24\x73\x4b')]=!![],_0x4b728a;}else{const _0x464185={};return _0x464185['\x6f\x6b']=![],_0x464185[_0x3e61af(0x136,'\x6e\x78\x52\x48')]=_0x4a4442[_0x3e61af(0x20c,'\x54\x36\x59\x37')],_0x464185[_0x3e61af(0x1c8,'\x6e\x78\x52\x48')]=!![],_0x464185;}});}var _0x16ae62=null,_0x44a80a=null;function _0x370993(){const _0x49b95d=_0x475028,_0x9197d7={'\x6c\x54\x70\x67\x4b':function(_0x49fe56,_0x2e3453){return _0x49fe56===_0x2e3453;},'\x53\x52\x55\x78\x50':'\x74\x65\x73\x74','\x6c\x71\x62\x73\x51':_0x49b95d(0x24e,'\x2a\x64\x61\x29'),'\x65\x77\x5a\x4c\x74':function(_0x39f6d0,_0x36371c){return _0x39f6d0===_0x36371c;},'\x4f\x6a\x4a\x65\x55':'\x6f\x66\x66','\x59\x75\x4f\x46\x67':function(_0x136a1d){return _0x136a1d();},'\x6f\x47\x47\x47\x69':function(_0x37a504,_0x206c80,_0x4a4a7c){return _0x37a504(_0x206c80,_0x4a4a7c);},'\x55\x71\x6f\x55\x55':_0x49b95d(0x18b,'\x2a\x64\x61\x29'),'\x41\x70\x44\x56\x71':function(_0x45b41d){return _0x45b41d();},'\x52\x71\x69\x75\x53':function(_0x168075,_0x2aeeb1,_0x4aec49){return _0x168075(_0x2aeeb1,_0x4aec49);},'\x45\x63\x61\x43\x51':function(_0x4a61ce){return _0x4a61ce();},'\x4a\x67\x43\x7a\x55':'\x57\x62\x6c\x59\x6f','\x6a\x62\x6e\x47\x77':function(_0x2074f7,_0x5191b5){return _0x2074f7(_0x5191b5);},'\x47\x45\x68\x6e\x62':'\x2e\x2f\x70\x61\x74\x68\x73','\x62\x45\x4c\x47\x43':function(_0x4d386a,_0x454616){return _0x4d386a!==_0x454616;},'\x4a\x6c\x72\x4c\x41':_0x49b95d(0x151,'\x44\x5e\x58\x35'),'\x74\x6b\x72\x78\x61':_0x49b95d(0x1f4,'\x46\x5b\x46\x57'),'\x6d\x62\x77\x4f\x78':_0x49b95d(0x269,'\x74\x68\x70\x53'),'\x50\x4c\x4c\x54\x58':_0x49b95d(0x224,'\x52\x48\x77\x54'),'\x49\x63\x66\x6f\x66':_0x49b95d(0x172,'\x52\x6c\x36\x2a'),'\x59\x6e\x4f\x57\x72':_0x49b95d(0x298,'\x54\x36\x59\x37')};try{if(_0x49b95d(0x2b2,'\x75\x63\x6f\x33')===_0x9197d7['\x4a\x67\x43\x7a\x55']){if(_0x9197d7[_0x49b95d(0x267,'\x6e\x35\x4f\x50')](_0x21bd1e.env.NODE_ENV,_0x9197d7[_0x49b95d(0x17d,'\x49\x74\x75\x2a')])){var _0x831d09=(_0x450272.env.EVOLVER_SOLIDIFY_VERIFY||'')['\x74\x6f\x4c\x6f\x77\x65\x72\x43'+_0x49b95d(0x18c,'\x23\x21\x4d\x79')]();if(_0x9197d7[_0x49b95d(0x114,'\x57\x36\x52\x65')](_0x831d09,_0x9197d7[_0x49b95d(0x158,'\x41\x50\x34\x69')])||_0x9197d7[_0x49b95d(0x1ce,'\x35\x37\x78\x40')](_0x831d09,'\x30')||_0x9197d7[_0x49b95d(0x228,'\x76\x56\x52\x23')](_0x831d09,_0x9197d7[_0x49b95d(0x2aa,'\x4c\x74\x5b\x45')]))return![];}var _0x4ee8a4=_0x59f800.env.A2A_HUB_URL||'';return!!_0x4ee8a4;}else return _0x9197d7[_0x49b95d(0x2b3,'\x57\x2a\x4c\x48')](require,_0x9197d7[_0x49b95d(0x130,'\x35\x37\x78\x40')])[_0x49b95d(0x193,'\x41\x56\x6d\x49')+_0x49b95d(0x10e,'\x76\x56\x52\x23')]();}catch(_0x4c926f){if(_0x9197d7[_0x49b95d(0x1d7,'\x53\x42\x35\x57')](_0x9197d7[_0x49b95d(0x1c2,'\x5a\x24\x73\x4b')],_0x9197d7[_0x49b95d(0x1e9,'\x74\x68\x70\x53')]))try{return _0x55f3eb['\x6a\x6f\x69\x6e'](_0x9197d7[_0x49b95d(0x278,'\x42\x51\x6b\x68')](require,_0x9197d7[_0x49b95d(0x2fc,'\x41\x56\x6d\x49')])[_0x49b95d(0x2ab,'\x5a\x52\x57\x40')+_0x49b95d(0x29f,'\x4d\x6a\x59\x28')](),_0x9197d7['\x6d\x62\x77\x4f\x78'],_0x9197d7['\x50\x4c\x4c\x54\x58']);}catch(_0x5106fe){if(_0x9197d7['\x65\x77\x5a\x4c\x74'](_0x9197d7[_0x49b95d(0x28e,'\x23\x21\x4d\x79')],_0x9197d7[_0x49b95d(0x2e3,'\x44\x5e\x58\x35')]))try{if(!_0x44e127[_0x49b95d(0x1e4,'\x6c\x37\x69\x56')+'\x6e\x63'](_0x9197d7[_0x49b95d(0x203,'\x4d\x6a\x59\x28')](_0x366265)))return 0x23bf*0x1+-0x11bd+0x1cd*-0xa;return _0x9197d7[_0x49b95d(0x25c,'\x41\x56\x6d\x49')](_0x400f6d,_0x4aca74[_0x49b95d(0x2d1,'\x75\x37\x57\x62')+_0x49b95d(0x279,'\x5a\x52\x57\x40')](_0x9197d7['\x59\x75\x4f\x46\x67'](_0x8dfff5),_0x9197d7[_0x49b95d(0x185,'\x73\x44\x5a\x76')]),-0x661+-0x1b61*-0x1+-0x14f6)||-0x60b+-0x193a+-0x1*-0x1f45;}catch(_0x419e8a){return-0x985+0x4*0x6cd+-0x11af;}else return _0x55f3eb['\x6a\x6f\x69\x6e'](process[_0x49b95d(0x19f,'\x46\x65\x74\x62')](),_0x49b95d(0x21d,'\x5a\x24\x73\x4b'),_0x49b95d(0x24f,'\x46\x65\x74\x62'));}else try{const _0x3ce988=_0x3425d6();if(!_0x3ce988)return;const _0x1fdb06=_0x1170bc[_0x49b95d(0x15f,'\x52\x48\x77\x54')](_0x9197d7[_0x49b95d(0x200,'\x26\x43\x4b\x6b')](_0x2b5025)),_0x60d914={};_0x60d914[_0x49b95d(0x255,'\x74\x68\x70\x53')+'\x65']=!![];if(!_0x5d5d7d[_0x49b95d(0x1a7,'\x49\x74\x75\x2a')+'\x6e\x63'](_0x1fdb06))_0xf58ce9['\x6d\x6b\x64\x69\x72\x53\x79\x6e'+'\x63'](_0x1fdb06,_0x60d914);const _0x2f71dc=_0x4a6b87[_0x49b95d(0x139,'\x75\x63\x6f\x33')+'\x79'](_0x1ca3af),_0x2dfe50=_0x9197d7[_0x49b95d(0x275,'\x49\x74\x75\x2a')](_0x2e7ced,_0x3ce988,_0x2f71dc),_0x346cdc={};_0x346cdc[_0x49b95d(0x1ad,'\x4b\x23\x38\x42')]=_0x5c8767,_0x346cdc[_0x49b95d(0x15b,'\x63\x2a\x67\x76')]=_0x2dfe50,_0x550809[_0x49b95d(0x2e7,'\x6d\x5b\x47\x38')+_0x49b95d(0x1dc,'\x6c\x37\x69\x56')](_0x9197d7['\x45\x63\x61\x43\x51'](_0x47447e),_0x2c07f0[_0x49b95d(0x16a,'\x4e\x73\x42\x40')+'\x79'](_0x346cdc),_0x49b95d(0x21c,'\x6c\x37\x69\x56'));}catch(_0x23cccc){}}}function _0x363d63(){const _0x10c62f=_0x475028,_0x5ac762={};_0x5ac762['\x42\x58\x77\x58\x62']=function(_0x1fb5ad,_0x3e60e4){return _0x1fb5ad>=_0x3e60e4;},_0x5ac762[_0x10c62f(0x23c,'\x4b\x64\x7a\x6f')]=function(_0x23b341,_0x341da1){return _0x23b341+_0x341da1;},_0x5ac762[_0x10c62f(0x1c7,'\x4d\x6a\x59\x28')]=function(_0x24eb03,_0x17e58a){return _0x24eb03===_0x17e58a;},_0x5ac762[_0x10c62f(0x22a,'\x46\x5b\x46\x57')]=_0x10c62f(0x2ad,'\x4c\x74\x5b\x45'),_0x5ac762[_0x10c62f(0x2f7,'\x4e\x73\x42\x40')]=_0x10c62f(0x1ee,'\x33\x31\x7a\x4a');const _0x34892b=_0x5ac762;if(!_0x16ae62){if(_0x34892b[_0x10c62f(0x2a3,'\x57\x2a\x4c\x48')](_0x34892b[_0x10c62f(0x23a,'\x37\x65\x4b\x51')],_0x34892b[_0x10c62f(0x1a3,'\x47\x6f\x53\x63')]))return _0x300dd6[_0x10c62f(0x2f3,'\x57\x36\x52\x65')]()[_0x10c62f(0x16c,'\x51\x5e\x6f\x4d')](function(_0x350ce3){const _0x599dcf=_0x10c62f,_0x7a85c4=BIcXnt['\x42\x58\x77\x58\x62'](_0x3f0682[_0x599dcf(0x2de,'\x57\x36\x52\x65')],0x725+0x1f96+0x7*-0x541);return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':BIcXnt[_0x599dcf(0x1c4,'\x63\x2a\x67\x76')](BIcXnt[_0x599dcf(0x2c9,'\x6f\x5b\x28\x67')](_0x599dcf(0x173,'\x41\x50\x34\x69'),_0x5553cd[_0x599dcf(0x2eb,'\x49\x74\x75\x2a')]),'\x3a\x20')+_0x350ce3['\x73\x6c\x69\x63\x65'](0x1ba1+0x148b*0x1+-0x1*0x302c,-0xe8*0x2+-0x2*-0x6eb+-0xb3e),'\x6f\x66\x66\x6c\x69\x6e\x65':_0x7a85c4};});else _0x16ae62=_0x55f3eb[_0x10c62f(0x1eb,'\x4e\x73\x42\x40')](_0x370993(),_0x10c62f(0x18f,'\x57\x2a\x4c\x48'));}return _0x16ae62;}function _0x41e92b(){const _0xc5f255=_0x475028,_0x5a423c={'\x4e\x42\x55\x6d\x6d':function(_0x37aaac){return _0x37aaac();},'\x64\x62\x50\x55\x75':_0xc5f255(0x162,'\x6c\x37\x69\x56'),'\x4b\x59\x52\x43\x48':function(_0x58cf81,_0x2e3b51){return _0x58cf81===_0x2e3b51;},'\x71\x75\x55\x52\x4c':_0xc5f255(0x1c1,'\x75\x37\x57\x62')};if(!_0x44a80a){if(_0x5a423c[_0xc5f255(0x2a2,'\x44\x4c\x6c\x33')](_0xc5f255(0x1a0,'\x4e\x73\x42\x40'),_0x5a423c[_0xc5f255(0x1d8,'\x6c\x37\x69\x56')]))_0x44a80a=_0x55f3eb[_0xc5f255(0x112,'\x23\x21\x4d\x79')](_0x370993(),_0x5a423c[_0xc5f255(0x156,'\x34\x76\x6b\x2a')]);else return!_0x2dff36&&(_0x5960db=_0x39a1e7['\x6a\x6f\x69\x6e'](_0x5a423c[_0xc5f255(0x29b,'\x44\x5e\x58\x35')](_0x3c5ca3),_0x5a423c['\x64\x62\x50\x55\x75'])),_0x457658;}return _0x44a80a;}function _0x3d366c(){const _0x1ca8ff=_0x475028,_0x500b2d={'\x56\x6d\x62\x70\x4d':function(_0x2f1239){return _0x2f1239();},'\x66\x6b\x78\x6a\x65':_0x1ca8ff(0x1ac,'\x53\x42\x35\x57'),'\x45\x57\x4e\x71\x4e':function(_0xa65c10,_0x38981d){return _0xa65c10!==_0x38981d;},'\x41\x74\x41\x5a\x56':'\x73\x74\x72\x69\x6e\x67','\x54\x65\x7a\x42\x4a':function(_0x15e277,_0x13d4a3,_0x1fa8ae){return _0x15e277(_0x13d4a3,_0x1fa8ae);},'\x68\x6a\x76\x51\x6d':_0x1ca8ff(0x12d,'\x44\x4c\x6c\x33'),'\x65\x69\x55\x7a\x77':_0x1ca8ff(0x22d,'\x53\x42\x35\x57')+_0x1ca8ff(0x294,'\x4b\x64\x7a\x6f'),'\x50\x4b\x44\x67\x6f':_0x1ca8ff(0x1d1,'\x23\x21\x4d\x79')};if(process.env.A2A_NODE_SECRET)return process.env.A2A_NODE_SECRET;try{return require(_0x500b2d[_0x1ca8ff(0x135,'\x4b\x23\x38\x42')])['\x67\x65\x74\x48\x75\x62\x4e\x6f'+_0x1ca8ff(0x12e,'\x6e\x78\x52\x48')]()||null;}catch(_0x2cbc59){if(_0x500b2d[_0x1ca8ff(0x17e,'\x26\x43\x4b\x6b')](_0x1ca8ff(0x265,'\x37\x65\x4b\x51'),_0x500b2d['\x50\x4b\x44\x67\x6f']))try{if(!_0x141c2a[_0x1ca8ff(0x1c3,'\x73\x44\x5a\x76')+'\x6e\x63'](_0x500b2d[_0x1ca8ff(0x231,'\x23\x21\x4d\x79')](_0x555498)))return null;const _0x106c81=_0x1aa8ae[_0x1ca8ff(0x252,'\x4b\x64\x7a\x6f')](_0x4e3d08[_0x1ca8ff(0x254,'\x6d\x5b\x47\x38')+_0x1ca8ff(0x216,'\x4a\x55\x72\x72')](_0x1a0420(),_0x500b2d[_0x1ca8ff(0x192,'\x42\x26\x35\x28')]));if(!_0x106c81||!_0x106c81[_0x1ca8ff(0x1ad,'\x4b\x23\x38\x42')]||_0x500b2d[_0x1ca8ff(0x2f6,'\x37\x65\x4b\x51')](typeof _0x106c81[_0x1ca8ff(0x221,'\x47\x64\x65\x56')],_0x500b2d[_0x1ca8ff(0x206,'\x2a\x64\x61\x29')]))return null;const _0x104f6d=_0x5355d9();if(!_0x104f6d)return null;const _0x2ff859=_0x500b2d[_0x1ca8ff(0x2bd,'\x51\x5e\x6f\x4d')](_0x512559,_0x104f6d,_0x360121[_0x1ca8ff(0x29a,'\x6d\x5b\x47\x38')+'\x79'](_0x106c81[_0x1ca8ff(0x17a,'\x2a\x64\x61\x29')])),_0x25ec9d=_0x4f22ad[_0x1ca8ff(0x257,'\x57\x2a\x4c\x48')](_0x2ff859,_0x500b2d[_0x1ca8ff(0x286,'\x41\x56\x6d\x49')]),_0x461ef4=_0x259bf2[_0x1ca8ff(0x270,'\x43\x76\x4b\x32')](_0x106c81[_0x1ca8ff(0x236,'\x34\x76\x6b\x2a')],_0x500b2d[_0x1ca8ff(0x13c,'\x5a\x24\x73\x4b')]);if(_0x500b2d['\x45\x57\x4e\x71\x4e'](_0x25ec9d[_0x1ca8ff(0x26c,'\x52\x6c\x36\x2a')],_0x461ef4[_0x1ca8ff(0x2d3,'\x63\x2a\x67\x76')])||!_0x350e78[_0x1ca8ff(0x2da,'\x33\x31\x7a\x4a')+'\x66\x65\x45\x71\x75\x61\x6c'](_0x25ec9d,_0x461ef4))return null;return _0x106c81[_0x1ca8ff(0x2e6,'\x41\x56\x6d\x49')];}catch(_0x343b29){return null;}else return null;}}function _0x3755(){const _0x535749=['\x61\x64\x7a\x63\x57\x36\x4e\x64\x4f\x43\x6b\x6e\x7a\x4e\x6d','\x6a\x72\x48\x30\x57\x52\x33\x64\x54\x38\x6f\x37\x57\x37\x74\x63\x4b\x57','\x78\x62\x5a\x63\x54\x38\x6b\x79\x46\x43\x6b\x36','\x57\x51\x79\x6b\x72\x64\x57','\x57\x34\x4a\x63\x54\x48\x6c\x63\x51\x71','\x79\x53\x6f\x41\x57\x37\x33\x64\x55\x43\x6b\x52','\x78\x72\x4c\x37\x57\x36\x78\x64\x4b\x47','\x67\x64\x30\x75\x57\x4f\x33\x64\x49\x57','\x76\x6d\x6b\x33\x57\x52\x52\x64\x4e\x6d\x6b\x52','\x57\x50\x78\x63\x4b\x68\x35\x4b\x71\x57','\x6a\x62\x48\x32\x57\x52\x52\x64\x50\x53\x6f\x47','\x41\x53\x6b\x32\x57\x50\x78\x64\x52\x6d\x6b\x70','\x57\x36\x38\x61\x57\x52\x61','\x74\x71\x33\x63\x4f\x72\x2f\x64\x4d\x74\x46\x63\x47\x76\x61','\x67\x6d\x6f\x58\x43\x6d\x6f\x31\x41\x57','\x6b\x75\x57\x79\x57\x52\x68\x64\x49\x47','\x57\x50\x56\x63\x4f\x49\x76\x65','\x63\x61\x46\x63\x55\x4a\x46\x63\x4b\x47','\x6c\x38\x6f\x62\x63\x77\x34\x32','\x57\x37\x2f\x64\x49\x43\x6b\x59\x73\x43\x6b\x4e','\x78\x43\x6f\x31\x41\x6d\x6b\x4b\x42\x57','\x45\x72\x48\x48\x57\x51\x46\x64\x51\x43\x6f\x2b\x57\x37\x4a\x63\x4c\x57','\x57\x36\x34\x6a\x57\x51\x68\x63\x4a\x38\x6f\x68\x6e\x43\x6f\x68','\x79\x31\x4a\x63\x47\x38\x6b\x37\x57\x35\x57','\x6f\x53\x6f\x61\x74\x38\x6f\x43\x73\x6d\x6f\x4e','\x71\x4a\x5a\x63\x4f\x6d\x6f\x53\x69\x57','\x6f\x53\x6f\x67\x41\x6d\x6f\x6c\x43\x57','\x45\x43\x6b\x72\x57\x50\x75\x61\x57\x51\x79','\x57\x37\x61\x4c\x67\x5a\x34','\x78\x57\x31\x46\x44\x38\x6f\x2f\x57\x35\x30\x55\x75\x47','\x41\x63\x2f\x63\x47\x6d\x6f\x41\x68\x57','\x71\x61\x76\x57\x41\x63\x33\x63\x4c\x47','\x43\x65\x52\x64\x47\x38\x6b\x2f','\x73\x65\x4a\x64\x48\x43\x6b\x4b\x62\x57','\x42\x64\x56\x64\x4d\x64\x39\x30\x57\x35\x6a\x75','\x70\x53\x6f\x52\x6f\x4d\x47\x50','\x72\x72\x42\x63\x55\x6d\x6f\x54\x70\x57','\x57\x4f\x75\x5a\x57\x52\x34\x68','\x6b\x78\x70\x63\x55\x49\x56\x64\x54\x71','\x71\x48\x68\x63\x50\x43\x6f\x7a\x6b\x43\x6f\x52\x62\x47','\x77\x58\x33\x63\x55\x38\x6f\x64\x6a\x53\x6f\x52\x6d\x6d\x6b\x41','\x57\x34\x70\x64\x48\x6d\x6b\x47\x45\x53\x6b\x37','\x62\x73\x66\x30\x57\x36\x74\x64\x53\x57','\x68\x64\x6c\x63\x50\x58\x4a\x63\x4d\x38\x6f\x4f\x57\x34\x58\x71','\x73\x38\x6f\x2f\x6a\x43\x6b\x52\x72\x71','\x45\x76\x6a\x32\x57\x37\x52\x64\x50\x6d\x6f\x79\x57\x36\x2f\x63\x49\x47','\x67\x61\x79\x46\x7a\x6d\x6f\x6b','\x57\x52\x56\x64\x4c\x63\x4a\x63\x54\x78\x6c\x63\x50\x6d\x6f\x69\x57\x36\x75','\x6c\x53\x6f\x71\x73\x53\x6f\x51\x46\x47','\x61\x4d\x4f\x37\x57\x50\x64\x64\x52\x57','\x75\x38\x6b\x41\x57\x4f\x56\x64\x49\x53\x6b\x56','\x76\x38\x6f\x56\x65\x38\x6b\x56\x75\x47','\x6f\x57\x5a\x64\x49\x75\x38\x5a\x57\x51\x68\x63\x48\x43\x6b\x6d\x57\x34\x50\x6c\x57\x51\x70\x63\x51\x53\x6f\x63','\x57\x36\x75\x4a\x66\x73\x46\x64\x4f\x64\x79','\x57\x52\x38\x53\x57\x51\x4b\x57\x57\x52\x43','\x68\x59\x71\x50\x57\x51\x4a\x64\x53\x6d\x6b\x74','\x57\x4f\x64\x63\x55\x5a\x7a\x6f\x77\x4b\x6a\x38\x57\x34\x6d','\x57\x50\x62\x48\x6f\x5a\x2f\x63\x48\x5a\x71\x36\x57\x4f\x75','\x57\x37\x64\x63\x47\x57\x2f\x64\x56\x77\x30','\x57\x52\x48\x34\x68\x63\x42\x64\x54\x57\x70\x63\x48\x48\x4b','\x46\x61\x35\x76\x45\x6d\x6b\x32\x57\x34\x38\x2b\x42\x57','\x71\x53\x6f\x32\x63\x6d\x6b\x56\x71\x30\x69\x59\x57\x36\x47','\x57\x52\x4b\x2b\x57\x35\x39\x62\x57\x36\x4a\x64\x52\x43\x6b\x51\x72\x47','\x41\x53\x6f\x4d\x62\x43\x6b\x45\x78\x57','\x44\x77\x52\x64\x55\x38\x6f\x37\x57\x34\x53','\x57\x4f\x44\x44\x57\x34\x53\x68\x41\x76\x4b\x6d\x57\x34\x4b','\x61\x43\x6b\x75\x6a\x43\x6f\x43\x57\x51\x75\x58\x57\x4f\x47','\x6c\x53\x6f\x39\x44\x43\x6f\x73\x45\x47','\x41\x53\x6b\x69\x57\x52\x4f\x74\x57\x4f\x6d','\x57\x51\x6c\x63\x51\x53\x6f\x5a\x66\x38\x6f\x44\x79\x53\x6f\x68\x45\x38\x6f\x30\x57\x35\x72\x67\x6b\x38\x6b\x42\x42\x57','\x61\x73\x44\x72\x57\x36\x74\x64\x49\x43\x6b\x64\x79\x33\x61','\x46\x49\x6e\x4a\x46\x53\x6f\x37','\x43\x4c\x78\x64\x54\x38\x6b\x36\x57\x37\x70\x63\x52\x53\x6f\x4a','\x64\x61\x71\x36\x57\x50\x68\x64\x56\x47','\x69\x62\x66\x71\x57\x51\x6c\x64\x53\x57','\x57\x36\x7a\x42\x79\x57','\x6d\x43\x6f\x71\x43\x38\x6f\x46\x42\x47','\x74\x43\x6f\x77\x44\x57','\x75\x43\x6f\x74\x77\x38\x6f\x54\x57\x50\x38','\x57\x51\x47\x58\x43\x5a\x46\x63\x4e\x71','\x57\x50\x37\x63\x51\x4a\x44\x75\x76\x75\x6a\x57','\x79\x4c\x53\x43\x57\x52\x68\x64\x4c\x6d\x6f\x73\x57\x51\x65\x71','\x44\x43\x6f\x70\x78\x6d\x6f\x2f\x68\x38\x6f\x53\x63\x61\x4f','\x57\x51\x4a\x64\x4e\x47\x2f\x63\x4a\x77\x68\x63\x56\x53\x6f\x73\x57\x34\x30','\x57\x52\x4a\x63\x51\x78\x76\x32\x75\x71','\x57\x37\x4b\x58\x65\x4a\x2f\x64\x56\x63\x56\x63\x48\x47','\x69\x53\x6f\x74\x6d\x4d\x4b\x36','\x57\x52\x65\x56\x57\x51\x71\x32\x57\x51\x68\x63\x49\x6d\x6b\x69\x6c\x61','\x46\x68\x2f\x64\x4c\x43\x6b\x4f\x57\x36\x43','\x69\x53\x6f\x50\x63\x4c\x71\x7a','\x6a\x6d\x6f\x68\x73\x38\x6f\x6b\x44\x57','\x57\x51\x78\x64\x4c\x53\x6b\x42\x6e\x53\x6b\x71\x6d\x66\x4a\x63\x4d\x47','\x62\x64\x30\x57\x73\x53\x6f\x6f','\x57\x52\x78\x64\x4b\x43\x6b\x75\x44\x38\x6f\x71\x41\x57','\x71\x72\x72\x78\x7a\x5a\x6d','\x57\x51\x4f\x41\x72\x72\x42\x63\x4e\x61','\x44\x31\x6c\x64\x49\x6d\x6b\x34\x6a\x4a\x6e\x6b\x57\x34\x4f','\x66\x76\x78\x63\x52\x5a\x74\x64\x4c\x59\x56\x63\x4b\x47','\x6c\x57\x37\x63\x4e\x43\x6f\x4d\x7a\x76\x4b\x64\x57\x35\x30\x46\x57\x52\x7a\x50\x66\x43\x6b\x4d','\x66\x62\x48\x43\x57\x51\x42\x64\x54\x47','\x63\x38\x6b\x61\x6d\x43\x6f\x46\x57\x52\x34','\x43\x32\x2f\x64\x4f\x53\x6b\x30\x6a\x71','\x57\x37\x75\x4c\x65\x74\x6c\x64\x4f\x73\x64\x63\x51\x57\x57','\x57\x4f\x6e\x4b\x6a\x4a\x4e\x63\x49\x61','\x57\x36\x33\x63\x49\x77\x37\x64\x4a\x63\x74\x64\x50\x38\x6f\x4b\x57\x34\x74\x63\x49\x53\x6b\x66\x6d\x58\x71','\x57\x50\x6c\x64\x4e\x6d\x6b\x70\x62\x38\x6b\x56','\x57\x37\x47\x72\x70\x62\x5a\x64\x4e\x61','\x57\x51\x47\x37\x57\x35\x4c\x35\x57\x37\x75','\x78\x38\x6b\x66\x57\x4f\x2f\x64\x55\x53\x6b\x32\x46\x6d\x6f\x79\x6c\x71','\x43\x66\x68\x64\x48\x53\x6b\x51','\x73\x6d\x6f\x67\x57\x37\x4a\x64\x47\x38\x6b\x57\x62\x53\x6b\x62\x57\x34\x6d','\x61\x62\x78\x64\x4d\x43\x6f\x75\x57\x51\x58\x33\x57\x36\x46\x63\x56\x32\x52\x63\x50\x43\x6f\x34\x45\x61','\x64\x4a\x62\x55\x57\x51\x70\x64\x52\x71','\x74\x43\x6b\x50\x57\x50\x47\x6c\x57\x4f\x53','\x62\x5a\x65\x2b\x57\x52\x52\x64\x50\x43\x6b\x72\x71\x47','\x65\x31\x4e\x63\x55\x74\x46\x64\x4a\x61','\x6d\x53\x6f\x51\x43\x43\x6f\x35\x7a\x47','\x57\x52\x2f\x63\x52\x49\x48\x6a\x71\x61','\x57\x4f\x68\x63\x4b\x33\x35\x56\x71\x47','\x57\x35\x38\x46\x57\x51\x62\x43\x6d\x57\x4c\x43\x57\x35\x6d\x67\x57\x37\x75\x5a\x57\x35\x4f\x53','\x64\x6d\x6f\x6a\x63\x67\x61\x67\x57\x35\x78\x63\x54\x4a\x69','\x6c\x64\x68\x63\x55\x72\x46\x63\x4c\x38\x6f\x4a\x57\x34\x31\x51','\x6c\x74\x6c\x63\x4a\x62\x74\x63\x4b\x53\x6f\x4b\x57\x34\x58\x43','\x57\x35\x7a\x72\x42\x32\x64\x63\x56\x43\x6b\x56\x57\x35\x4e\x63\x54\x47','\x64\x43\x6b\x44\x6c\x43\x6f\x64\x57\x52\x47\x54\x57\x50\x47\x77','\x71\x30\x4a\x63\x4a\x38\x6b\x69\x57\x35\x30\x53\x57\x36\x42\x63\x4e\x47','\x63\x66\x74\x63\x48\x5a\x37\x64\x4d\x61\x68\x63\x48\x4c\x38','\x57\x35\x4b\x31\x41\x59\x7a\x58\x57\x4f\x4b','\x69\x49\x42\x63\x52\x38\x6f\x67\x57\x36\x75','\x57\x37\x4a\x64\x4c\x38\x6b\x6b\x7a\x38\x6b\x6c','\x57\x50\x43\x55\x57\x52\x57\x66\x57\x4f\x34','\x79\x61\x76\x66\x45\x43\x6f\x61','\x57\x50\x46\x63\x48\x71\x62\x73\x7a\x57','\x42\x64\x46\x64\x55\x74\x72\x32\x57\x34\x31\x75\x61\x61','\x57\x4f\x34\x34\x57\x35\x58\x43\x57\x36\x70\x64\x50\x6d\x6b\x6e\x63\x47','\x57\x50\x46\x63\x48\x72\x2f\x64\x56\x77\x43\x47\x6c\x6d\x6f\x67','\x57\x51\x44\x44\x57\x35\x30\x38\x71\x47','\x61\x47\x4c\x4c\x57\x51\x74\x64\x48\x57','\x57\x37\x69\x42\x57\x51\x42\x63\x4c\x38\x6f\x42\x6b\x61','\x46\x66\x78\x64\x49\x47','\x57\x4f\x62\x48\x70\x74\x2f\x63\x49\x71','\x57\x52\x6d\x59\x57\x52\x4b\x78\x57\x52\x64\x63\x49\x38\x6b\x30\x62\x57','\x57\x51\x44\x47\x72\x77\x52\x63\x50\x68\x6c\x64\x4b\x4c\x74\x63\x4e\x38\x6b\x57\x57\x37\x33\x63\x49\x43\x6b\x64\x57\x50\x71','\x41\x71\x39\x35\x72\x6d\x6f\x4b','\x42\x77\x52\x64\x4f\x6d\x6b\x66\x70\x47','\x75\x68\x46\x64\x48\x38\x6b\x69\x57\x34\x69','\x78\x38\x6b\x72\x57\x4f\x4e\x64\x55\x47','\x62\x73\x66\x6b\x57\x37\x4e\x64\x47\x53\x6b\x49\x79\x33\x4f','\x57\x50\x33\x63\x4b\x4e\x50\x4f\x45\x57','\x71\x53\x6f\x41\x41\x53\x6f\x41\x57\x4f\x75','\x71\x4b\x70\x64\x4c\x53\x6b\x4e\x57\x34\x75','\x41\x75\x33\x64\x4a\x43\x6b\x4c\x69\x72\x6d','\x76\x38\x6b\x78\x57\x51\x5a\x64\x55\x53\x6b\x64','\x57\x4f\x54\x43\x57\x36\x4f\x68\x44\x57','\x57\x51\x69\x62\x57\x35\x6a\x62\x57\x35\x38','\x75\x62\x72\x4d','\x57\x50\x75\x33\x57\x35\x43','\x42\x30\x75\x4b\x57\x37\x5a\x63\x53\x6d\x6b\x2b\x57\x36\x4a\x63\x47\x43\x6b\x46\x57\x35\x33\x63\x47\x43\x6f\x4b','\x6d\x4a\x75\x58\x57\x4f\x75','\x57\x37\x75\x6b\x57\x52\x2f\x63\x4c\x57','\x57\x36\x58\x6d\x7a\x32\x52\x63\x51\x53\x6b\x56\x57\x34\x37\x63\x4b\x47','\x46\x53\x6f\x74\x74\x38\x6f\x75\x61\x47','\x62\x47\x64\x63\x4b\x71\x52\x63\x53\x61','\x57\x51\x50\x68\x70\x4a\x33\x63\x47\x61','\x6d\x47\x39\x4c\x57\x51\x46\x64\x54\x57','\x67\x38\x6b\x67\x6a\x43\x6b\x69','\x57\x4f\x64\x63\x4f\x59\x31\x65\x75\x71','\x71\x6d\x6b\x79\x57\x50\x79\x6c\x57\x4f\x68\x64\x4e\x47\x30','\x46\x6d\x6b\x31\x57\x50\x78\x64\x54\x43\x6b\x47','\x57\x37\x39\x6a\x57\x52\x65\x35\x57\x37\x71','\x75\x38\x6f\x33\x6b\x38\x6b\x33\x46\x47','\x45\x68\x50\x51\x57\x4f\x44\x35\x57\x4f\x52\x64\x4d\x43\x6f\x61','\x41\x43\x6b\x79\x6b\x72\x53','\x43\x32\x64\x64\x51\x43\x6f\x48\x57\x34\x69\x4c\x41\x77\x47','\x77\x6d\x6b\x6d\x57\x50\x4b\x74\x57\x4f\x33\x64\x54\x47\x66\x64','\x57\x50\x71\x48\x57\x52\x76\x6f\x57\x37\x34','\x57\x35\x70\x63\x4a\x57\x64\x64\x56\x61','\x42\x63\x46\x64\x4d\x64\x62\x48\x57\x35\x7a\x45\x67\x47','\x57\x36\x30\x37\x57\x52\x46\x63\x48\x6d\x6f\x4c','\x57\x36\x35\x72\x79\x31\x68\x63\x56\x43\x6b\x36\x57\x35\x6c\x63\x47\x71','\x57\x52\x47\x48\x57\x52\x38\x54\x57\x52\x79','\x57\x36\x68\x63\x52\x47\x46\x63\x4f\x53\x6b\x73\x6a\x61\x7a\x54','\x7a\x76\x56\x63\x4c\x58\x44\x53\x57\x37\x42\x64\x4c\x6d\x6b\x47','\x57\x4f\x46\x63\x4e\x4e\x39\x37\x7a\x57','\x41\x48\x52\x63\x54\x38\x6f\x69\x6a\x6d\x6f\x50\x62\x57','\x57\x52\x46\x63\x51\x68\x66\x65\x79\x57','\x57\x51\x74\x64\x55\x6d\x6b\x58\x61\x6d\x6b\x65','\x76\x47\x4c\x52\x43\x4a\x46\x63\x47\x49\x57\x73','\x57\x4f\x65\x32\x57\x52\x7a\x4a\x57\x37\x71','\x6e\x5a\x2f\x63\x55\x48\x75','\x79\x6d\x6b\x30\x6a\x53\x6f\x6b\x57\x50\x4a\x63\x50\x47','\x57\x51\x75\x68\x57\x50\x39\x4d\x57\x36\x57','\x57\x50\x39\x49\x6e\x5a\x46\x63\x53\x57\x30\x2f\x57\x50\x34','\x6a\x61\x4c\x4c\x57\x51\x68\x64\x51\x38\x6f\x56\x57\x37\x74\x63\x47\x57','\x76\x74\x70\x63\x48\x43\x6f\x47\x70\x57','\x57\x50\x6c\x63\x56\x63\x65','\x57\x4f\x58\x64\x57\x34\x34\x50\x42\x47','\x71\x4b\x74\x64\x4a\x43\x6f\x78\x57\x35\x75','\x63\x68\x68\x63\x55\x47\x4a\x64\x4d\x57','\x6a\x64\x34\x67\x57\x4f\x4a\x64\x4f\x61','\x57\x34\x56\x63\x48\x71\x4a\x64\x54\x4b\x30\x2f\x6a\x43\x6f\x72','\x57\x50\x37\x63\x52\x4a\x58\x4f\x75\x4b\x6e\x35\x57\x34\x57','\x57\x37\x4f\x59\x67\x4a\x74\x64\x4f\x73\x30','\x43\x53\x6f\x56\x43\x71','\x6b\x73\x68\x63\x4a\x53\x6f\x4f\x57\x37\x6e\x4d\x57\x34\x30\x37','\x57\x36\x6d\x4a\x65\x4d\x53','\x67\x47\x34\x31\x75\x53\x6f\x4b','\x57\x34\x53\x43\x57\x4f\x74\x63\x4b\x43\x6f\x50','\x69\x63\x2f\x63\x55\x43\x6f\x4b\x57\x36\x6a\x68\x57\x35\x65\x48','\x57\x51\x75\x2b\x57\x52\x65\x71\x57\x52\x68\x63\x49\x57','\x71\x58\x76\x65\x45\x53\x6f\x34\x57\x35\x57\x2b\x7a\x61','\x57\x34\x50\x33\x57\x50\x43\x61\x57\x35\x69','\x6b\x64\x42\x63\x52\x38\x6f\x49\x57\x36\x69','\x57\x35\x5a\x63\x52\x4e\x7a\x67\x67\x31\x6e\x57\x57\x35\x43','\x57\x34\x54\x33\x57\x51\x75\x46\x57\x35\x42\x64\x52\x47','\x71\x61\x76\x57\x41\x63\x33\x63\x4c\x48\x79\x6e','\x71\x32\x4f\x77\x57\x52\x4a\x63\x4b\x53\x6f\x72\x6d\x30\x44\x38\x44\x6d\x6f\x59\x57\x35\x4f\x65','\x57\x37\x4b\x58\x65\x4a\x2f\x64\x56\x63\x56\x63\x48\x4a\x69','\x46\x66\x52\x64\x48\x6d\x6b\x41\x57\x36\x53','\x6f\x73\x68\x63\x52\x53\x6f\x35','\x75\x4d\x58\x2b\x57\x37\x33\x63\x53\x43\x6f\x61\x75\x4b\x76\x34\x70\x53\x6b\x4d\x57\x34\x4b','\x57\x34\x71\x68\x57\x4f\x64\x63\x49\x43\x6f\x46','\x64\x63\x79\x49\x57\x51\x71','\x76\x47\x62\x43\x41\x43\x6f\x43','\x45\x43\x6b\x31\x57\x52\x30\x74\x57\x51\x43','\x77\x38\x6b\x6e\x6e\x47\x74\x64\x4b\x61','\x57\x51\x68\x63\x4d\x33\x58\x73\x43\x71','\x6f\x71\x4a\x63\x4c\x53\x6f\x36\x57\x37\x69','\x72\x59\x6a\x70\x43\x58\x4f','\x41\x59\x42\x64\x4a\x5a\x75','\x74\x38\x6b\x46\x57\x50\x42\x64\x56\x53\x6b\x53','\x57\x36\x69\x35\x6c\x4a\x33\x64\x4b\x57','\x68\x4a\x65\x31\x57\x52\x30','\x57\x4f\x34\x44\x57\x37\x50\x63\x57\x36\x38','\x42\x30\x2f\x63\x47\x58\x72\x33','\x42\x53\x6f\x6f\x41\x6d\x6f\x4f\x57\x52\x4b','\x57\x36\x69\x34\x6a\x59\x46\x64\x50\x59\x5a\x63\x4a\x71\x4f','\x72\x58\x52\x63\x52\x53\x6f\x76\x65\x71','\x57\x52\x4b\x32\x57\x35\x31\x78\x57\x35\x4f','\x76\x47\x7a\x6d\x75\x53\x6f\x61','\x72\x6d\x6f\x38\x62\x6d\x6b\x39\x71\x31\x71\x50\x57\x37\x57','\x57\x51\x4e\x64\x48\x74\x52\x64\x47\x71','\x77\x58\x58\x4a\x79\x47','\x77\x38\x6b\x77\x70\x6d\x6f\x6f\x57\x52\x34','\x7a\x38\x6b\x4b\x64\x38\x6f\x56\x57\x50\x4b','\x57\x52\x6c\x64\x4c\x53\x6b\x68\x69\x61','\x57\x52\x64\x64\x47\x64\x37\x63\x49\x4b\x69','\x57\x50\x75\x33\x57\x35\x44\x7a\x57\x36\x74\x64\x52\x43\x6b\x37','\x57\x4f\x6d\x46\x45\x47\x4a\x63\x47\x47','\x57\x35\x30\x39\x7a\x63\x69','\x57\x50\x6c\x63\x50\x5a\x31\x49\x79\x47','\x57\x36\x71\x44\x57\x52\x78\x63\x4a\x6d\x6f\x43','\x71\x6d\x6f\x47\x44\x53\x6b\x79\x78\x71','\x63\x53\x6b\x42\x6d\x43\x6f\x45\x57\x51\x30\x59\x57\x4f\x47','\x57\x50\x71\x56\x57\x52\x65\x77\x57\x51\x68\x63\x49\x53\x6f\x68','\x57\x34\x44\x5a\x57\x51\x6d\x7a','\x6a\x4a\x37\x64\x4e\x61','\x45\x6d\x6f\x6c\x74\x43\x6f\x52\x57\x52\x79','\x6c\x6d\x6f\x49\x43\x53\x6f\x58\x73\x57','\x6a\x48\x66\x67\x57\x35\x33\x64\x4c\x47','\x65\x31\x33\x63\x52\x74\x33\x64\x48\x47\x52\x63\x4b\x75\x6d','\x71\x6d\x6f\x62\x79\x53\x6b\x46\x73\x47','\x57\x34\x7a\x54\x57\x4f\x6d\x69\x57\x35\x46\x64\x55\x59\x79','\x45\x76\x78\x64\x4e\x38\x6b\x4b\x57\x37\x74\x63\x54\x47','\x57\x4f\x62\x35\x6a\x4a\x78\x63\x47\x47\x57\x33\x57\x50\x65','\x76\x47\x72\x5a\x79\x53\x6f\x4a\x57\x35\x4f\x37','\x57\x52\x6c\x64\x4b\x43\x6b\x71\x6b\x57','\x72\x6d\x6f\x6d\x57\x37\x68\x64\x4a\x6d\x6b\x59\x6e\x38\x6b\x61','\x73\x38\x6b\x46\x57\x4f\x71\x67','\x71\x49\x68\x64\x51\x73\x6e\x73','\x57\x37\x52\x64\x4a\x53\x6b\x77\x44\x38\x6b\x4f','\x46\x4c\x4a\x64\x4d\x6d\x6b\x57','\x65\x43\x6f\x47\x44\x38\x6f\x30\x75\x47','\x57\x50\x74\x64\x50\x71\x4a\x63\x51\x74\x6d','\x43\x76\x64\x64\x49\x43\x6b\x50\x69\x47','\x74\x53\x6b\x61\x57\x50\x4e\x64\x55\x53\x6b\x32\x43\x61','\x72\x76\x5a\x63\x47\x6d\x6b\x65\x57\x35\x71','\x57\x52\x4e\x64\x47\x59\x37\x63\x4c\x4d\x65','\x57\x51\x75\x6b\x77\x74\x37\x63\x4d\x71','\x6b\x64\x38\x37\x62\x61','\x57\x4f\x4b\x57\x57\x50\x6e\x4a','\x67\x53\x6b\x73\x57\x51\x64\x63\x4d\x6d\x6f\x53\x41\x38\x6b\x69\x57\x37\x76\x59\x57\x51\x33\x63\x52\x4a\x43','\x44\x53\x6f\x6c\x74\x57','\x73\x77\x56\x64\x55\x43\x6b\x50\x62\x61','\x6f\x77\x5a\x63\x48\x73\x64\x64\x4f\x71','\x70\x4a\x64\x63\x52\x38\x6f\x4b\x57\x37\x35\x5a\x57\x34\x65\x50','\x57\x34\x52\x64\x56\x73\x58\x2b\x43\x78\x39\x2b\x57\x36\x34','\x57\x36\x42\x64\x52\x53\x6b\x4e\x73\x53\x6b\x56\x6f\x53\x6b\x64\x6c\x61','\x75\x43\x6f\x41\x79\x53\x6b\x74\x75\x74\x6d\x54','\x76\x6d\x6f\x65\x79\x43\x6f\x4d\x57\x52\x57','\x57\x37\x79\x6b\x57\x52\x37\x63\x52\x6d\x6f\x2b','\x43\x6d\x6f\x63\x79\x6d\x6b\x4a\x41\x57','\x62\x74\x69\x52\x57\x51\x78\x64\x52\x43\x6b\x79\x71\x47','\x57\x51\x2f\x64\x4e\x74\x78\x63\x4d\x4e\x79','\x67\x66\x71\x70\x57\x51\x4a\x64\x4a\x71','\x57\x37\x71\x42\x57\x51\x68\x64\x4d\x57','\x57\x35\x46\x63\x4a\x61\x64\x64\x56\x67\x34\x61\x6c\x6d\x6f\x67','\x57\x50\x47\x4c\x57\x4f\x65\x36','\x57\x35\x4a\x63\x4b\x57\x57','\x57\x4f\x43\x2b\x57\x4f\x35\x53','\x57\x35\x6d\x5a\x6a\x71\x6c\x64\x4d\x61','\x57\x36\x34\x78\x78\x57','\x57\x52\x78\x64\x4a\x43\x6b\x68\x6c\x6d\x6b\x6c\x6f\x4c\x74\x63\x53\x57','\x76\x4c\x42\x64\x4c\x43\x6f\x36\x57\x36\x61','\x6b\x4c\x75\x73\x57\x52\x74\x64\x4e\x71','\x78\x6d\x6b\x76\x57\x4f\x4e\x64\x4c\x53\x6b\x4e\x45\x6d\x6f\x79\x6d\x71','\x46\x43\x6f\x33\x71\x43\x6f\x34\x64\x47','\x74\x47\x64\x64\x51\x58\x48\x4c','\x57\x36\x31\x2b\x75\x33\x42\x63\x49\x57','\x57\x52\x69\x44\x77\x64\x37\x63\x48\x38\x6f\x77\x57\x36\x30','\x6c\x75\x34\x41\x57\x52\x6c\x64\x47\x71','\x6e\x32\x70\x63\x51\x4a\x4e\x64\x54\x57','\x57\x4f\x68\x63\x4c\x68\x44\x52\x45\x38\x6f\x74\x57\x35\x6c\x64\x51\x71','\x71\x47\x72\x76\x7a\x53\x6f\x4b\x57\x34\x47\x2b\x44\x61','\x43\x43\x6b\x4a\x70\x53\x6f\x45\x57\x51\x52\x63\x4f\x6d\x6b\x36\x7a\x61','\x42\x4d\x70\x64\x56\x53\x6f\x34\x57\x34\x34\x34\x45\x67\x71','\x73\x53\x6f\x45\x57\x37\x37\x64\x4a\x38\x6b\x31','\x78\x57\x7a\x4d','\x57\x52\x44\x78\x64\x72\x70\x63\x50\x47','\x64\x43\x6b\x74\x6e\x38\x6f\x74\x57\x51\x71','\x73\x38\x6f\x43\x75\x6d\x6b\x45\x73\x59\x71\x67\x57\x35\x47','\x75\x33\x46\x63\x4d\x58\x50\x50','\x57\x50\x52\x63\x49\x67\x62\x67\x42\x71','\x79\x4c\x74\x63\x47\x6d\x6b\x70','\x7a\x30\x4a\x63\x48\x72\x50\x58\x57\x37\x68\x64\x4e\x53\x6b\x72','\x46\x30\x68\x64\x48\x43\x6b\x49\x69\x62\x6e\x47\x57\x35\x30','\x42\x75\x64\x64\x4f\x6d\x6b\x68\x57\x34\x30','\x6a\x76\x47\x45\x57\x4f\x68\x64\x4e\x6d\x6f\x62\x57\x52\x61\x68','\x57\x34\x52\x64\x49\x53\x6b\x42\x77\x6d\x6b\x56','\x57\x37\x52\x64\x55\x38\x6b\x32\x43\x43\x6b\x69\x6d\x6d\x6b\x63\x6a\x57','\x75\x53\x6f\x36\x62\x38\x6f\x4b','\x57\x34\x54\x2f\x57\x52\x79\x42','\x65\x57\x71\x7a\x57\x52\x4e\x64\x53\x57','\x57\x35\x78\x63\x56\x4a\x2f\x63\x50\x38\x6b\x66','\x57\x52\x46\x64\x51\x5a\x74\x63\x52\x77\x71','\x76\x71\x35\x64\x7a\x57','\x42\x74\x68\x63\x4d\x6d\x6f\x2f\x61\x57','\x67\x62\x6d\x44\x57\x50\x56\x64\x4b\x71','\x62\x4a\x58\x69\x57\x36\x4a\x64\x49\x71','\x46\x4c\x78\x63\x4c\x62\x75','\x76\x74\x66\x4c\x41\x38\x6f\x39','\x57\x35\x30\x31\x46\x71','\x7a\x38\x6b\x55\x6b\x72\x33\x64\x54\x67\x46\x64\x48\x6d\x6b\x35','\x57\x52\x70\x64\x49\x43\x6b\x72\x6a\x6d\x6b\x72\x6f\x61','\x79\x38\x6f\x69\x57\x35\x33\x64\x4c\x6d\x6b\x74','\x62\x66\x33\x64\x56\x43\x6b\x6f','\x57\x34\x4c\x76\x57\x52\x71\x63\x57\x36\x57','\x74\x38\x6f\x62\x62\x53\x6b\x2f\x76\x47','\x57\x50\x35\x70\x57\x36\x57\x61','\x45\x6d\x6b\x35\x6f\x61','\x43\x43\x6b\x4a\x70\x6d\x6f\x70\x57\x50\x37\x63\x55\x53\x6b\x2f\x44\x57','\x44\x78\x46\x63\x54\x38\x6b\x4a\x57\x35\x65','\x78\x4c\x5a\x64\x47\x6d\x6b\x68\x57\x34\x43','\x71\x6d\x6f\x6c\x7a\x53\x6b\x66\x73\x4a\x75\x6b\x57\x35\x71','\x57\x37\x4b\x58\x41\x73\x39\x58','\x43\x6d\x6b\x55\x70\x53\x6b\x69\x57\x35\x4e\x64\x56\x57','\x57\x51\x75\x4d\x57\x52\x4b\x68\x57\x51\x65','\x57\x36\x66\x39\x74\x32\x78\x63\x52\x47','\x69\x49\x6c\x63\x55\x38\x6f\x48\x57\x37\x4c\x36\x57\x34\x30','\x67\x5a\x57\x7a\x76\x43\x6f\x6c','\x75\x53\x6f\x2b\x62\x43\x6b\x39\x71\x31\x71','\x57\x52\x75\x69\x57\x34\x4c\x74\x57\x34\x43','\x73\x38\x6f\x52\x64\x38\x6b\x37\x71\x31\x4b','\x73\x5a\x56\x63\x51\x53\x6f\x5a\x6c\x33\x6c\x63\x4c\x47\x43','\x6d\x72\x38\x54\x77\x38\x6f\x6e','\x57\x36\x61\x47\x57\x51\x74\x63\x53\x53\x6f\x2f','\x6e\x61\x39\x59\x57\x51\x4e\x64\x53\x43\x6f\x54\x57\x35\x78\x63\x48\x61','\x57\x37\x6c\x63\x53\x61\x5a\x64\x4e\x4d\x43','\x61\x38\x6f\x33\x6b\x32\x34\x38','\x6b\x73\x33\x63\x55\x53\x6f\x4f\x57\x36\x6e\x47','\x57\x35\x6d\x49\x41\x49\x57','\x57\x50\x66\x79\x6d\x72\x74\x63\x4d\x57','\x71\x58\x48\x57\x7a\x63\x43','\x72\x43\x6f\x6c\x6c\x43\x6b\x42\x44\x61','\x45\x73\x46\x64\x56\x57\x6e\x7a','\x78\x4d\x64\x64\x49\x43\x6b\x6c\x70\x47','\x68\x4b\x5a\x64\x50\x6d\x6b\x46\x46\x38\x6b\x38\x6f\x38\x6b\x76\x41\x43\x6f\x38\x42\x38\x6f\x69','\x76\x53\x6b\x55\x57\x51\x71\x78\x57\x50\x38','\x42\x71\x68\x64\x4b\x5a\x39\x32','\x57\x35\x30\x58\x43\x64\x6a\x58\x57\x4f\x74\x64\x47\x71','\x6c\x49\x54\x79\x57\x51\x42\x64\x4e\x57','\x57\x36\x75\x2b\x65\x5a\x33\x64\x54\x63\x4e\x63\x4b\x61','\x78\x38\x6f\x66\x57\x37\x5a\x64\x48\x43\x6b\x31','\x61\x53\x6f\x46\x68\x4d\x61\x67\x57\x35\x4a\x63\x53\x48\x4b','\x45\x75\x56\x64\x49\x43\x6b\x57\x69\x61\x76\x37\x57\x34\x75','\x68\x76\x35\x4a\x43\x4a\x64\x63\x4c\x61\x53\x34','\x42\x73\x52\x64\x47\x59\x6a\x48\x57\x34\x58\x49\x64\x71','\x57\x51\x46\x63\x50\x57\x54\x71\x77\x47','\x57\x52\x71\x4c\x57\x52\x71\x44','\x63\x38\x6b\x69\x6a\x43\x6f\x69\x57\x4f\x69','\x46\x72\x52\x63\x53\x53\x6f\x36\x63\x47','\x69\x58\x7a\x4c\x57\x52\x64\x64\x50\x61','\x57\x36\x37\x63\x4b\x47\x74\x63\x56\x6d\x6b\x70','\x57\x50\x4c\x49\x70\x74\x69','\x57\x51\x4a\x64\x54\x38\x6b\x4d\x6a\x38\x6b\x32','\x76\x71\x48\x75\x7a\x64\x68\x63\x4d\x62\x4b\x73','\x57\x4f\x69\x49\x57\x37\x54\x53\x57\x35\x57','\x73\x6d\x6b\x6c\x57\x51\x69\x64\x57\x52\x4f','\x68\x58\x4b\x61\x57\x51\x54\x64\x57\x52\x64\x64\x4f\x6d\x6f\x4b','\x72\x53\x6b\x76\x6e\x72\x37\x64\x4e\x57','\x57\x52\x57\x4c\x57\x52\x4b\x6b','\x57\x35\x68\x63\x4a\x71\x4a\x64\x53\x71','\x69\x57\x57\x38\x57\x51\x31\x5a','\x43\x38\x6b\x4b\x57\x51\x4e\x64\x49\x38\x6b\x44\x71\x43\x6f\x4c\x61\x47','\x44\x38\x6b\x35\x6c\x47\x5a\x64\x4d\x65\x75','\x57\x50\x79\x58\x78\x49\x42\x63\x50\x71','\x44\x38\x6b\x63\x57\x52\x68\x64\x4e\x53\x6b\x42','\x42\x74\x56\x63\x51\x71','\x64\x74\x65\x35\x57\x4f\x46\x64\x51\x38\x6b\x73\x71\x4d\x47','\x73\x53\x6f\x55\x75\x38\x6f\x38\x57\x4f\x34','\x57\x52\x64\x63\x4c\x4b\x76\x68\x79\x61','\x61\x5a\x39\x59\x57\x50\x4a\x64\x54\x61','\x69\x43\x6b\x77\x75\x6d\x6f\x70\x6b\x6d\x6f\x4c\x67\x49\x38','\x77\x64\x42\x64\x4d\x74\x54\x64','\x70\x75\x56\x63\x4a\x57\x46\x64\x4e\x47','\x73\x6d\x6f\x4f\x62\x38\x6b\x57\x78\x4c\x38\x65','\x57\x50\x58\x6c\x57\x37\x4b\x6d\x71\x31\x4b\x65\x57\x34\x75','\x57\x35\x62\x62\x77\x65\x78\x63\x56\x57','\x57\x35\x65\x4e\x64\x4a\x6c\x64\x4a\x61','\x57\x36\x33\x63\x48\x5a\x42\x63\x54\x32\x78\x63\x48\x6d\x6f\x6a\x57\x36\x79','\x57\x51\x57\x4c\x57\x51\x7a\x79\x57\x36\x6d','\x57\x36\x44\x36\x72\x67\x68\x63\x49\x57','\x57\x51\x62\x47\x57\x37\x61\x47\x42\x47','\x44\x48\x42\x63\x51\x6d\x6f\x44\x69\x71','\x57\x35\x47\x49\x57\x52\x37\x63\x49\x6d\x6f\x67','\x57\x37\x42\x64\x52\x38\x6b\x57\x71\x43\x6b\x45','\x71\x53\x6b\x42\x57\x4f\x6d\x75\x57\x4f\x4e\x64\x4c\x57\x30','\x71\x31\x78\x64\x52\x38\x6f\x63\x57\x35\x79','\x57\x4f\x2f\x64\x49\x64\x6c\x63\x4d\x47','\x44\x4a\x70\x63\x51\x6d\x6f\x70\x62\x61','\x6d\x4a\x30\x49\x57\x4f\x66\x4c\x57\x50\x61','\x66\x4a\x50\x65\x57\x36\x4a\x64\x4c\x6d\x6b\x71','\x57\x34\x56\x63\x4a\x71\x64\x64\x50\x47','\x76\x5a\x68\x63\x50\x43\x6f\x38\x69\x57','\x57\x36\x44\x38\x57\x4f\x47\x6f\x57\x36\x30','\x69\x43\x6f\x64\x69\x67\x71\x65','\x44\x59\x74\x63\x4f\x53\x6f\x38','\x71\x38\x6b\x4c\x6c\x47\x4f','\x62\x4b\x79\x5a\x6e\x4e\x6c\x64\x49\x65\x38\x73\x57\x52\x58\x64\x57\x50\x38\x58\x42\x57','\x70\x30\x4f\x79\x57\x52\x46\x64\x4c\x53\x6f\x64\x57\x51\x30\x65','\x57\x4f\x31\x7a\x57\x37\x57','\x45\x31\x42\x64\x4c\x6d\x6b\x4e\x57\x36\x2f\x63\x4f\x43\x6f\x51','\x46\x73\x42\x64\x4a\x67\x4b','\x6f\x4c\x78\x64\x48\x6d\x6b\x4b\x57\x36\x52\x63\x55\x43\x6f\x51\x6a\x71','\x57\x36\x44\x42\x73\x67\x5a\x63\x56\x53\x6b\x53\x57\x35\x68\x63\x55\x47','\x57\x37\x31\x42\x46\x67\x42\x63\x54\x53\x6b\x76\x57\x35\x4a\x63\x51\x57','\x42\x64\x70\x64\x4e\x4a\x61','\x57\x50\x56\x63\x4e\x68\x76\x39','\x44\x43\x6f\x38\x78\x6d\x6b\x49','\x6e\x43\x6f\x72\x72\x6d\x6f\x46','\x61\x38\x6b\x78\x6c\x53\x6f\x46\x57\x52\x34\x4d','\x57\x36\x75\x37\x68\x74\x64\x64\x53\x61','\x57\x37\x71\x5a\x66\x49\x68\x64\x53\x57','\x57\x52\x6d\x6d\x73\x49\x78\x63\x4e\x53\x6f\x74','\x44\x43\x6b\x52\x67\x49\x78\x64\x50\x71','\x68\x49\x2f\x63\x56\x38\x6f\x67\x57\x37\x57','\x6a\x64\x4f\x33\x57\x50\x76\x38','\x62\x4e\x79\x61\x57\x52\x5a\x64\x4c\x71','\x57\x36\x57\x6b\x57\x51\x52\x63\x4a\x6d\x6f\x43\x69\x47','\x63\x43\x6b\x48\x61\x6d\x6f\x55\x76\x4d\x65\x74\x57\x37\x34','\x62\x72\x64\x63\x49\x43\x6f\x44\x57\x52\x61','\x65\x6d\x6f\x73\x7a\x43\x6f\x73\x43\x71','\x77\x66\x74\x63\x4d\x53\x6b\x30\x57\x37\x38','\x57\x36\x2f\x63\x4a\x71\x56\x64\x4f\x4b\x79','\x76\x6d\x6b\x77\x57\x50\x56\x64\x54\x38\x6b\x52\x45\x38\x6f\x73','\x57\x35\x74\x63\x54\x62\x4a\x63\x52\x38\x6b\x74\x63\x71\x50\x56','\x71\x53\x6f\x77\x45\x38\x6b\x2b\x73\x59\x71\x78\x57\x34\x69','\x72\x31\x78\x64\x55\x43\x6b\x46\x57\x35\x61','\x41\x38\x6b\x52\x70\x53\x6f\x7a','\x57\x4f\x65\x30\x57\x4f\x4c\x4c\x57\x34\x68\x63\x55\x71','\x73\x38\x6b\x78\x57\x4f\x69\x6a\x57\x4f\x4e\x64\x4e\x71\x30','\x57\x51\x4a\x64\x4c\x53\x6b\x51\x6a\x53\x6b\x78\x6f\x66\x4e\x63\x53\x61','\x6d\x74\x4e\x63\x52\x71\x52\x63\x4c\x61','\x6b\x58\x35\x41\x57\x36\x42\x64\x4a\x57','\x74\x77\x74\x64\x54\x6d\x6f\x36\x57\x35\x6d','\x57\x35\x78\x63\x51\x61\x4f','\x63\x32\x33\x63\x48\x74\x5a\x64\x49\x71','\x65\x53\x6f\x38\x72\x6d\x6f\x48\x76\x47','\x6d\x48\x79\x4b\x57\x51\x2f\x64\x4f\x61','\x45\x33\x4e\x63\x47\x43\x6b\x47\x57\x34\x6d','\x57\x35\x61\x49\x44\x59\x35\x33','\x76\x72\x48\x4e\x43\x47','\x6d\x62\x48\x4a\x57\x4f\x42\x64\x51\x53\x6f\x53\x57\x37\x4a\x63\x52\x61','\x57\x52\x4b\x53\x57\x52\x79\x69\x57\x51\x33\x63\x4c\x53\x6b\x63\x69\x71','\x77\x43\x6f\x61\x76\x6d\x6f\x33\x6a\x57','\x72\x48\x56\x63\x55\x6d\x6b\x66\x69\x53\x6f\x2f\x64\x6d\x6b\x76','\x57\x36\x75\x2f\x66\x77\x68\x63\x4f\x68\x6d','\x64\x75\x37\x63\x50\x63\x78\x64\x4a\x4a\x56\x63\x4b\x77\x71','\x57\x4f\x72\x50\x6d\x68\x71\x57\x57\x35\x74\x63\x4e\x6d\x6b\x4b\x57\x51\x2f\x63\x50\x68\x61\x7a\x63\x57','\x41\x38\x6b\x38\x57\x50\x47\x6f\x57\x50\x34','\x78\x58\x44\x68\x76\x43\x6f\x73','\x57\x50\x56\x63\x4c\x67\x57','\x57\x4f\x53\x57\x57\x4f\x54\x58\x57\x35\x61','\x75\x72\x72\x56\x57\x34\x2f\x64\x54\x47\x4f','\x67\x58\x4f\x36\x75\x6d\x6f\x68','\x41\x32\x52\x64\x53\x43\x6f\x36','\x43\x77\x74\x64\x51\x53\x6f\x4e\x57\x34\x69','\x57\x35\x30\x49\x6a\x64\x33\x63\x4d\x61\x6d\x54'];_0x3755=function(){return _0x535749;};return _0x3755();}function _0x5326e5(_0x4e7575){const _0x2334cb=_0x475028,_0x455fa4={'\x78\x46\x67\x52\x51':_0x2334cb(0x2a5,'\x42\x26\x35\x28'),'\x59\x57\x59\x76\x43':_0x2334cb(0x169,'\x5a\x24\x73\x4b'),'\x48\x56\x78\x64\x59':function(_0x22844,_0x128935){return _0x22844!==_0x128935;},'\x6e\x46\x48\x4f\x49':'\x6b\x69\x65\x78\x76','\x45\x4d\x42\x58\x4c':function(_0x3dd04c){return _0x3dd04c();},'\x6f\x62\x72\x66\x63':function(_0x513988,_0x3c2205,_0x16c656){return _0x513988(_0x3c2205,_0x16c656);},'\x4a\x54\x6f\x4c\x58':_0x2334cb(0x12f,'\x43\x76\x4b\x32')};try{if(_0x455fa4[_0x2334cb(0x121,'\x2a\x64\x61\x29')](_0x455fa4[_0x2334cb(0x2be,'\x43\x76\x4b\x32')],_0x2334cb(0x174,'\x49\x74\x75\x2a')))return _0x33b3f7[_0x2334cb(0x1eb,'\x4e\x73\x42\x40')](_0x32ce02[_0x2334cb(0x21a,'\x33\x4d\x71\x38')](),ckUzsO[_0x2334cb(0x268,'\x73\x44\x5a\x76')],ckUzsO[_0x2334cb(0x1aa,'\x6e\x35\x4f\x50')]);else{const _0x2364f1=_0x3d366c();if(!_0x2364f1)return;const _0x1b1529=_0x55f3eb['\x64\x69\x72\x6e\x61\x6d\x65'](_0x455fa4[_0x2334cb(0x282,'\x35\x37\x78\x40')](_0x363d63)),_0x44f8dc={};_0x44f8dc[_0x2334cb(0x1c0,'\x34\x76\x6b\x2a')+'\x65']=!![];if(!_0x50769a[_0x2334cb(0x1a7,'\x49\x74\x75\x2a')+'\x6e\x63'](_0x1b1529))_0x50769a[_0x2334cb(0x2b4,'\x49\x74\x75\x2a')+'\x63'](_0x1b1529,_0x44f8dc);const _0x4c632b=JSON[_0x2334cb(0x123,'\x74\x68\x70\x53')+'\x79'](_0x4e7575),_0x1b9e8c=_0x455fa4[_0x2334cb(0x2c7,'\x26\x43\x4b\x6b')](_0x5ca626,_0x2364f1,_0x4c632b),_0x5a7346={};_0x5a7346[_0x2334cb(0x2c1,'\x5a\x24\x73\x4b')]=_0x4e7575,_0x5a7346[_0x2334cb(0x154,'\x75\x63\x6f\x33')]=_0x1b9e8c,_0x50769a[_0x2334cb(0x1b8,'\x76\x56\x52\x23')+_0x2334cb(0x15e,'\x73\x44\x5a\x76')](_0x363d63(),JSON[_0x2334cb(0x28c,'\x6f\x5b\x28\x67')+'\x79'](_0x5a7346),_0x455fa4[_0x2334cb(0x241,'\x75\x37\x57\x62')]);}}catch(_0x2c5466){}}function _0x378341(){const _0x154397=_0x475028,_0x36277c={'\x4f\x59\x78\x66\x4a':_0x154397(0x2c2,'\x48\x54\x56\x62')+_0x154397(0x1a9,'\x42\x26\x35\x28')+_0x154397(0x223,'\x52\x6c\x36\x2a'),'\x44\x47\x75\x43\x44':function(_0xc3d423){return _0xc3d423();},'\x4a\x48\x6a\x62\x6d':_0x154397(0x2f9,'\x52\x48\x77\x54'),'\x62\x6d\x56\x41\x6b':function(_0x37c3f3,_0x1957a6){return _0x37c3f3!==_0x1957a6;},'\x63\x47\x62\x4a\x57':_0x154397(0x273,'\x75\x63\x6f\x33'),'\x43\x4b\x6e\x4a\x7a':function(_0x257ce1){return _0x257ce1();},'\x42\x45\x4e\x55\x4b':function(_0x15160f,_0x32998b,_0x36397a){return _0x15160f(_0x32998b,_0x36397a);},'\x62\x41\x44\x45\x61':_0x154397(0x2df,'\x5a\x24\x73\x4b'),'\x6b\x5a\x68\x54\x77':function(_0x1d1d2b,_0x558bbf){return _0x1d1d2b!==_0x558bbf;},'\x74\x4a\x71\x59\x74':function(_0x239b9c,_0x440d87){return _0x239b9c===_0x440d87;},'\x54\x68\x4f\x77\x6e':_0x154397(0x230,'\x75\x37\x57\x62')};try{if(!_0x50769a[_0x154397(0x11d,'\x75\x63\x6f\x33')+'\x6e\x63'](_0x363d63()))return null;const _0x56f8c8=JSON['\x70\x61\x72\x73\x65'](_0x50769a[_0x154397(0x19c,'\x34\x76\x6b\x2a')+_0x154397(0x217,'\x76\x56\x52\x23')](_0x36277c[_0x154397(0x2e5,'\x5a\x24\x73\x4b')](_0x363d63),_0x36277c[_0x154397(0x22b,'\x42\x26\x35\x28')]));if(!_0x56f8c8||!_0x56f8c8[_0x154397(0x1ad,'\x4b\x23\x38\x42')]||_0x36277c[_0x154397(0x126,'\x33\x4d\x71\x38')](typeof _0x56f8c8[_0x154397(0x161,'\x4b\x23\x38\x42')],_0x36277c[_0x154397(0x14f,'\x4a\x55\x72\x72')]))return null;const _0x4d9cf8=_0x36277c['\x43\x4b\x6e\x4a\x7a'](_0x3d366c);if(!_0x4d9cf8)return null;const _0x1cca8b=_0x36277c[_0x154397(0x1b2,'\x42\x51\x6b\x68')](_0x5ca626,_0x4d9cf8,JSON[_0x154397(0x190,'\x51\x5e\x6f\x4d')+'\x79'](_0x56f8c8[_0x154397(0x2f2,'\x46\x5b\x46\x57')])),_0x3800b5=Buffer[_0x154397(0x140,'\x50\x24\x56\x6a')](_0x1cca8b,_0x36277c[_0x154397(0x11c,'\x51\x5e\x6f\x4d')]),_0x3c3e37=Buffer['\x66\x72\x6f\x6d'](_0x56f8c8[_0x154397(0x258,'\x50\x42\x4c\x48')],_0x36277c[_0x154397(0x163,'\x44\x4c\x6c\x33')]);if(_0x36277c[_0x154397(0x1b0,'\x41\x50\x34\x69')](_0x3800b5[_0x154397(0x1cc,'\x53\x42\x35\x57')],_0x3c3e37[_0x154397(0x12c,'\x43\x76\x4b\x32')])||!_0x232e8a[_0x154397(0x2da,'\x33\x31\x7a\x4a')+_0x154397(0x16b,'\x44\x5e\x58\x35')](_0x3800b5,_0x3c3e37)){if(_0x36277c[_0x154397(0x128,'\x26\x43\x4b\x6b')](_0x154397(0x1a4,'\x47\x64\x65\x56'),_0x36277c[_0x154397(0x1e5,'\x6f\x5b\x28\x67')]))return null;else{const _0x91a230={};return _0x91a230['\x6f\x6b']=![],_0x91a230[_0x154397(0x14c,'\x47\x6f\x53\x63')]=_0x36277c[_0x154397(0x1cb,'\x33\x31\x7a\x4a')],_0x91a230[_0x154397(0x159,'\x33\x31\x7a\x4a')]=!![],_0x91a230;}}return _0x56f8c8[_0x154397(0x16e,'\x54\x36\x59\x37')];}catch(_0xc8cd38){return null;}}function _0xe354b5(){const _0x45b189=_0x475028,_0x573321={'\x54\x6a\x65\x76\x75':function(_0x52d11b,_0x1f157d){return _0x52d11b!==_0x1f157d;},'\x52\x75\x6d\x57\x47':_0x45b189(0x2ae,'\x52\x6c\x36\x2a'),'\x49\x73\x45\x54\x47':function(_0x4387fa){return _0x4387fa();},'\x56\x4b\x4d\x74\x4f':function(_0x449c03,_0x38084e){return _0x449c03(_0x38084e);},'\x77\x72\x57\x69\x54':_0x45b189(0x189,'\x57\x36\x52\x65')};try{if(_0x573321[_0x45b189(0x188,'\x42\x26\x35\x28')](_0x573321[_0x45b189(0x26b,'\x75\x37\x57\x62')],_0x45b189(0x2ca,'\x47\x64\x65\x56'))){const _0x21d577={};return _0x21d577['\x6f\x6b']=![],_0x21d577[_0x45b189(0x20b,'\x6e\x35\x4f\x50')]='\x6f\x66\x66\x6c\x69\x6e\x65\x5f'+_0x45b189(0x233,'\x50\x42\x4c\x48')+_0x45b189(0x1d6,'\x75\x63\x6f\x33'),_0x21d577[_0x45b189(0x201,'\x53\x42\x35\x57')]=!![],_0x21d577;}else{const _0xdac39f=_0x55f3eb[_0x45b189(0x238,'\x54\x36\x59\x37')](_0x41e92b()),_0x3b7d75={};_0x3b7d75[_0x45b189(0x19a,'\x47\x64\x65\x56')+'\x65']=!![];if(!_0x50769a[_0x45b189(0x2e1,'\x5a\x52\x57\x40')+'\x6e\x63'](_0xdac39f))_0x50769a[_0x45b189(0x2a6,'\x58\x50\x7a\x69')+'\x63'](_0xdac39f,_0x3b7d75);_0x50769a[_0x45b189(0x110,'\x54\x36\x59\x37')+_0x45b189(0x194,'\x58\x50\x7a\x69')](_0x573321[_0x45b189(0x2dc,'\x33\x4d\x71\x38')](_0x41e92b),_0x573321[_0x45b189(0x142,'\x54\x36\x59\x37')](String,Date[_0x45b189(0x17c,'\x58\x50\x7a\x69')]()),_0x573321[_0x45b189(0x27e,'\x6d\x5b\x47\x38')]);}}catch(_0x58db5c){}}function _0x4a06a2(){const _0x39cb07=_0x475028,_0x447415={'\x4c\x7a\x58\x68\x6b':function(_0xf6c20){return _0xf6c20();},'\x43\x65\x4b\x6e\x73':_0x39cb07(0x1f9,'\x37\x65\x4b\x51'),'\x78\x75\x6b\x51\x42':function(_0x234e16,_0x451628,_0x5c50a7){return _0x234e16(_0x451628,_0x5c50a7);},'\x6c\x71\x44\x77\x72':function(_0x48890b){return _0x48890b();}};try{if(_0x39cb07(0x262,'\x52\x6c\x36\x2a')===_0x39cb07(0x285,'\x42\x26\x35\x28')){if(!_0x50769a[_0x39cb07(0x1c3,'\x73\x44\x5a\x76')+'\x6e\x63'](_0x41e92b()))return-0x3*-0x12+-0x18a9+-0x239*-0xb;return _0x447415[_0x39cb07(0x284,'\x52\x6c\x36\x2a')](parseInt,_0x50769a[_0x39cb07(0x202,'\x33\x4d\x71\x38')+_0x39cb07(0x1a5,'\x75\x37\x57\x62')](_0x447415[_0x39cb07(0x280,'\x53\x42\x35\x57')](_0x41e92b),_0x39cb07(0x153,'\x41\x50\x34\x69')),0x20f*-0x10+-0x60a+-0x2704*-0x1)||0x4*-0x94a+-0x43*-0x8+0x2310;}else _0x3eed1e=_0x3275e7[_0x39cb07(0x1f2,'\x5a\x52\x57\x40')](MJwkup[_0x39cb07(0x215,'\x4c\x74\x5b\x45')](_0x1cd5ac),MJwkup[_0x39cb07(0x2b7,'\x74\x68\x70\x53')]);}catch(_0x47490f){return-0xf43*0x1+-0xb70*0x2+-0xd*-0x2ef;}}var _0x1036a7=-0x17*0xd0+-0x3d7+0x1691,_0x5dca30=(0x5f1+-0x169*0x8+0x55e)*(-0x135*0x13+-0x747+-0x35e*-0x9)*(-0x32e+0x175d+0x1*-0x13f3)*(-0xee*-0xa+0x4f6+0x2*-0x703)*(-0x6a*0x2e+0x1be7+-0x4f3),_0x3e9875=(-0x7*0x519+-0x6d7*-0x5+0x194)*(0x41*0x35+-0x1831+-0x9c*-0x12)*(-0x168b+-0x16b+0x1832)*(-0x57a*-0x1+0x5eb+0x3*-0x27f);function _0x299955(){const _0x122716=_0x475028,_0x23ee72={'\x79\x50\x54\x70\x77':function(_0x40a28d){return _0x40a28d();},'\x74\x79\x4a\x6b\x49':_0x122716(0x179,'\x35\x37\x78\x40'),'\x75\x65\x4c\x6d\x78':function(_0x5e949f,_0x53e9c5){return _0x5e949f!==_0x53e9c5;},'\x64\x4a\x44\x75\x53':function(_0x12ca0a){return _0x12ca0a();},'\x77\x65\x79\x4f\x50':function(_0x1b9664,_0x2d51ab,_0xd540ef){return _0x1b9664(_0x2d51ab,_0xd540ef);},'\x6e\x4e\x53\x62\x53':_0x122716(0x1bf,'\x76\x56\x52\x23'),'\x6f\x66\x62\x77\x78':function(_0x5a2515,_0x20554a){return _0x5a2515!==_0x20554a;},'\x6c\x76\x51\x64\x70':_0x122716(0x256,'\x42\x51\x6b\x68'),'\x59\x4d\x79\x6b\x68':function(_0xa0190e,_0x53a25f){return _0xa0190e(_0x53a25f);},'\x46\x77\x44\x69\x4d':function(_0x4bfc32,_0x3689e0){return _0x4bfc32(_0x3689e0);},'\x54\x42\x65\x50\x71':function(_0x77a06a,_0x33d24a){return _0x77a06a!==_0x33d24a;},'\x45\x64\x51\x51\x4d':_0x122716(0x290,'\x44\x5e\x58\x35')+_0x122716(0x1b1,'\x44\x5e\x58\x35'),'\x52\x6a\x68\x4c\x78':_0x122716(0x166,'\x26\x43\x4b\x6b')+'\x70\x65\x72\x6d\x69\x74\x5f\x62'+_0x122716(0x23d,'\x50\x42\x4c\x48'),'\x4b\x58\x61\x68\x58':'\x6f\x66\x66\x6c\x69\x6e\x65\x5f'+_0x122716(0x122,'\x4e\x73\x42\x40')+_0x122716(0x2ef,'\x46\x65\x74\x62'),'\x42\x50\x77\x56\x71':_0x122716(0x21e,'\x4d\x6a\x59\x28')+'\x6e\x65\x5f\x74\x6f\x6b\x65\x6e','\x66\x61\x6a\x7a\x4a':function(_0x4b112c,_0x4d7202){return _0x4b112c>_0x4d7202;},'\x49\x70\x6a\x59\x70':function(_0x4c9e97,_0x22b32e){return _0x4c9e97<_0x22b32e;},'\x74\x4c\x4b\x77\x62':function(_0x281f75,_0x2babd0){return _0x281f75-_0x2babd0;},'\x57\x53\x4d\x6e\x47':_0x122716(0x28d,'\x4e\x73\x42\x40')+_0x122716(0x1ab,'\x6e\x35\x4f\x50')+_0x122716(0x147,'\x6c\x37\x69\x56'),'\x66\x77\x77\x42\x6f':_0x122716(0x13b,'\x43\x76\x4b\x32')+_0x122716(0x21f,'\x4d\x6a\x59\x28')+_0x122716(0x2bb,'\x4e\x73\x42\x40'),'\x51\x46\x68\x77\x4d':function(_0x56a100,_0x185db3){return _0x56a100>_0x185db3;},'\x77\x53\x4c\x54\x6a':_0x122716(0x24b,'\x54\x36\x59\x37'),'\x64\x4f\x50\x42\x5a':_0x122716(0x1b6,'\x44\x5e\x58\x35'),'\x53\x65\x4b\x54\x56':_0x122716(0x118,'\x47\x6f\x53\x63')+_0x122716(0x113,'\x6c\x37\x69\x56')+_0x122716(0x27f,'\x37\x65\x4b\x51')+'\x64','\x57\x6c\x4a\x79\x62':function(_0x334fcb,_0x5a83c0){return _0x334fcb+_0x5a83c0;},'\x6e\x6b\x6f\x49\x72':'\x48\x56\x59\x43\x49','\x42\x78\x71\x62\x59':function(_0x367fb0,_0x32ef4a){return _0x367fb0===_0x32ef4a;},'\x6e\x63\x6e\x76\x72':_0x122716(0x143,'\x76\x56\x52\x23'),'\x69\x56\x4e\x65\x71':function(_0x5e8afb,_0x22b28c){return _0x5e8afb===_0x22b28c;},'\x72\x69\x59\x44\x4f':_0x122716(0x1b3,'\x50\x24\x56\x6a')};try{if(_0x23ee72[_0x122716(0x116,'\x5a\x52\x57\x40')]!==_0x122716(0x297,'\x52\x6c\x36\x2a')){var _0x1cc36e=_0x55f3eb[_0x122716(0x276,'\x6c\x37\x69\x56')](_0x363d63());const _0x1cc60b={};_0x1cc60b[_0x122716(0x19b,'\x44\x5e\x58\x35')+'\x65']=!![];if(!_0x50769a[_0x122716(0x291,'\x53\x42\x35\x57')+'\x6e\x63'](_0x1cc36e))_0x50769a[_0x122716(0x132,'\x6e\x78\x52\x48')+'\x63'](_0x1cc36e,_0x1cc60b);}else{if(!_0x3b8018[_0x122716(0x1a7,'\x49\x74\x75\x2a')+'\x6e\x63'](_0x2155d2()))return null;const _0x1a33d5=_0x45fdcc[_0x122716(0x287,'\x53\x42\x35\x57')](_0x3c1909[_0x122716(0x12a,'\x23\x21\x4d\x79')+_0x122716(0x20e,'\x41\x50\x34\x69')](cLBCop[_0x122716(0x1db,'\x54\x36\x59\x37')](_0x67255c),cLBCop[_0x122716(0x10c,'\x53\x42\x35\x57')]));if(!_0x1a33d5||!_0x1a33d5[_0x122716(0x220,'\x6c\x37\x69\x56')]||cLBCop[_0x122716(0x1af,'\x50\x42\x4c\x48')](typeof _0x1a33d5[_0x122716(0x264,'\x6f\x5b\x28\x67')],'\x73\x74\x72\x69\x6e\x67'))return null;const _0x244afa=cLBCop[_0x122716(0x2d8,'\x6f\x5b\x28\x67')](_0x11efd2);if(!_0x244afa)return null;const _0x5ed2cf=cLBCop[_0x122716(0x184,'\x57\x36\x52\x65')](_0x294a4f,_0x244afa,_0x1e1fb9[_0x122716(0x134,'\x44\x5e\x58\x35')+'\x79'](_0x1a33d5[_0x122716(0x17a,'\x2a\x64\x61\x29')])),_0x438e7e=_0x507465[_0x122716(0x257,'\x57\x2a\x4c\x48')](_0x5ed2cf,cLBCop[_0x122716(0x1ec,'\x51\x5e\x6f\x4d')]),_0x2551c3=_0x13d40f[_0x122716(0x1d4,'\x63\x2a\x67\x76')](_0x1a33d5[_0x122716(0x1f3,'\x23\x21\x4d\x79')],cLBCop[_0x122716(0x207,'\x4d\x6a\x59\x28')]);if(cLBCop['\x6f\x66\x62\x77\x78'](_0x438e7e['\x6c\x65\x6e\x67\x74\x68'],_0x2551c3[_0x122716(0x237,'\x2a\x64\x61\x29')])||!_0xf39825[_0x122716(0x27c,'\x42\x51\x6b\x68')+_0x122716(0x29c,'\x5a\x24\x73\x4b')](_0x438e7e,_0x2551c3))return null;return _0x1a33d5[_0x122716(0x171,'\x49\x74\x75\x2a')];}}catch(_0x3fa151){}try{return _0x23ee72[_0x122716(0x266,'\x4c\x74\x5b\x45')](_0x23ee72[_0x122716(0x2e8,'\x47\x64\x65\x56')],_0x122716(0x204,'\x43\x76\x4b\x32'))?_0x5e4b7b[_0x122716(0x1e2,'\x49\x74\x75\x2a')+'\x73\x68'](cLBCop['\x6c\x76\x51\x64\x70'])[_0x122716(0x1ca,'\x53\x42\x35\x57')](cLBCop[_0x122716(0x2c4,'\x74\x68\x70\x53')](_0x14a084,_0x2e7f50||''))[_0x122716(0x211,'\x6d\x5b\x47\x38')](cLBCop[_0x122716(0x1d2,'\x4c\x74\x5b\x45')])[_0x122716(0x2fa,'\x6f\x5b\x28\x67')](0xdd9+-0x1*-0x18f2+0x26cb*-0x1,0x962+-0x5ff*-0x6+-0x1*0x2d4c):_0x23ee72['\x77\x65\x79\x4f\x50'](_0x5b8bc5,_0x23ee72[_0x122716(0x196,'\x4d\x6a\x59\x28')](_0x363d63),function(){const _0x4629ca=_0x122716,_0x29d194={'\x46\x52\x41\x49\x70':function(_0x1734cf,_0x4dc1fb){const _0x46d67b=_0x5d34;return _0x23ee72[_0x46d67b(0x1c9,'\x35\x37\x78\x40')](_0x1734cf,_0x4dc1fb);},'\x43\x67\x6c\x62\x57':function(_0x1605fa,_0x583709){const _0x18dd89=_0x5d34;return _0x23ee72[_0x18dd89(0x165,'\x6d\x5b\x47\x38')](_0x1605fa,_0x583709);},'\x50\x64\x5a\x52\x59':_0x23ee72[_0x4629ca(0x18e,'\x43\x76\x4b\x32')],'\x58\x42\x69\x66\x64':_0x23ee72[_0x4629ca(0x144,'\x47\x64\x65\x56')],'\x77\x6c\x47\x6a\x76':_0x23ee72[_0x4629ca(0x199,'\x26\x43\x4b\x6b')]};var _0x3b9e55=_0x23ee72[_0x4629ca(0x1ae,'\x50\x24\x56\x6a')](_0x378341);const _0x45c231={};_0x45c231['\x6f\x6b']=![],_0x45c231[_0x4629ca(0x177,'\x41\x50\x34\x69')]=_0x23ee72[_0x4629ca(0x20d,'\x4b\x64\x7a\x6f')],_0x45c231[_0x4629ca(0x2a9,'\x43\x76\x4b\x32')]=!![];if(!_0x3b9e55)return _0x45c231;var _0x399698=_0x3b9e55[_0x4629ca(0x12b,'\x6f\x5b\x28\x67')+_0x4629ca(0x2ce,'\x37\x65\x4b\x51')+_0x4629ca(0x243,'\x75\x63\x6f\x33')]||_0x1036a7,_0x26d8fc=_0x3b9e55[_0x4629ca(0x2f4,'\x4d\x6a\x59\x28')+'\x74']||0x2071+0x2170+-0x5*0xd2d,_0x29ac39=_0x3b9e55['\x75\x73\x65\x64\x43\x6f\x75\x6e'+'\x74']||0x6b*0x7+-0x1574+0x11*0x117,_0x50ec2b=Date['\x6e\x6f\x77'](),_0x1d4cdb=_0x23ee72[_0x4629ca(0x1ae,'\x50\x24\x56\x6a')](_0x4a06a2);if(_0x23ee72[_0x4629ca(0x25d,'\x47\x64\x65\x56')](_0x1d4cdb,0x23b*0x5+-0x119a*-0x2+0x1*-0x2e5b)&&_0x23ee72[_0x4629ca(0x259,'\x48\x54\x56\x62')](_0x50ec2b,_0x23ee72[_0x4629ca(0x145,'\x6e\x78\x52\x48')](_0x1d4cdb,_0x3e9875))){const _0x18256b={};return _0x18256b['\x6f\x6b']=![],_0x18256b[_0x4629ca(0x15d,'\x57\x36\x52\x65')]=_0x23ee72[_0x4629ca(0x191,'\x4b\x64\x7a\x6f')],_0x18256b['\x6f\x66\x66\x6c\x69\x6e\x65']=!![],_0x18256b;}if(_0x23ee72[_0x4629ca(0x141,'\x44\x5e\x58\x35')](_0x26d8fc,-0x1062*-0x1+0x386+-0xc4*0x1a)&&_0x50ec2b>_0x26d8fc){const _0x575f35={};return _0x575f35['\x6f\x6b']=![],_0x575f35[_0x4629ca(0x242,'\x63\x2a\x67\x76')]=_0x23ee72[_0x4629ca(0x2f5,'\x58\x50\x7a\x69')],_0x575f35[_0x4629ca(0x26a,'\x57\x36\x52\x65')]=!![],_0x575f35;}if(_0x23ee72[_0x4629ca(0x25f,'\x41\x56\x6d\x49')](_0x1d4cdb,0x247c+-0x3a*-0x11+-0x2856)&&_0x23ee72['\x51\x46\x68\x77\x4d'](_0x23ee72[_0x4629ca(0x14b,'\x33\x31\x7a\x4a')](_0x50ec2b,_0x1d4cdb),_0x5dca30)){if(_0x23ee72[_0x4629ca(0x1fd,'\x74\x68\x70\x53')](_0x23ee72[_0x4629ca(0x2e4,'\x49\x74\x75\x2a')],_0x23ee72[_0x4629ca(0x2c8,'\x52\x6c\x36\x2a')])){const _0x586e0f={};return _0x586e0f['\x6f\x6b']=![],_0x586e0f[_0x4629ca(0x2ed,'\x33\x4d\x71\x38')]=_0x23ee72[_0x4629ca(0x235,'\x5a\x24\x73\x4b')],_0x586e0f[_0x4629ca(0x201,'\x53\x42\x35\x57')]=!![],_0x586e0f;}else{var _0x3c0f0b=_0xd32a8d&&_0x5f3b35[_0x4629ca(0x2c6,'\x50\x24\x56\x6a')]||_0x29d194[_0x4629ca(0x195,'\x6c\x37\x69\x56')](_0x52efe6,_0x27e307);if(_0x29d194[_0x4629ca(0x150,'\x33\x31\x7a\x4a')](_0x3c0f0b['\x69\x6e\x64\x65\x78\x4f\x66'](_0x29d194[_0x4629ca(0x1fb,'\x44\x4c\x6c\x33')]),-(-0x2*-0xa29+0x35c*0x1+-0x17ad*0x1))){const _0x26b0ea={};return _0x26b0ea['\x6f\x6b']=![],_0x26b0ea['\x65\x72\x72\x6f\x72']=_0x29d194[_0x4629ca(0x240,'\x50\x24\x56\x6a')],_0x26b0ea[_0x4629ca(0x232,'\x41\x56\x6d\x49')]=!![],_0x26b0ea;}return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x29d194[_0x4629ca(0x29e,'\x74\x68\x70\x53')],'\x6f\x66\x66\x6c\x69\x6e\x65':!![],'\x64\x65\x74\x61\x69\x6c':_0x3c0f0b[_0x4629ca(0x225,'\x43\x76\x4b\x32')](-0x7f*0x4c+0x3ce*0x8+0x744*0x1,-0x117e+0x1906+-0x12*0x60)};}}if(_0x29ac39>=_0x399698){const _0x14f23c={};return _0x14f23c['\x6f\x6b']=![],_0x14f23c[_0x4629ca(0x2b8,'\x52\x48\x77\x54')]=_0x4629ca(0x2cd,'\x37\x65\x4b\x51')+_0x4629ca(0x249,'\x26\x43\x4b\x6b')+_0x4629ca(0x1dd,'\x63\x2a\x67\x76'),_0x14f23c[_0x4629ca(0x232,'\x41\x56\x6d\x49')]=!![],_0x14f23c;}_0x3b9e55['\x75\x73\x65\x64\x43\x6f\x75\x6e'+'\x74']=_0x23ee72['\x57\x6c\x4a\x79\x62'](_0x29ac39,0x4c1+-0x15ba+0x29*0x6a),_0x23ee72[_0x4629ca(0x20a,'\x57\x36\x52\x65')](_0x5326e5,_0x3b9e55);const _0x4557ac={};return _0x4557ac['\x6f\x6b']=!![],_0x4557ac[_0x4629ca(0x186,'\x50\x24\x56\x6a')]=!![],_0x4557ac['\x72\x65\x6d\x61\x69\x6e\x69\x6e'+'\x67']=_0x399698-_0x3b9e55[_0x4629ca(0x181,'\x6e\x35\x4f\x50')+'\x74'],_0x4557ac;});}catch(_0x333abc){if(_0x23ee72[_0x122716(0x2b9,'\x49\x74\x75\x2a')](_0x23ee72[_0x122716(0x25b,'\x50\x24\x56\x6a')],'\x4f\x56\x58\x6d\x6f'))return _0x197183&&_0xabdaab['\x6f\x6b']&&_0x4dd824['\x6f\x66\x66\x6c\x69\x6e\x65\x5f'+_0x122716(0x119,'\x47\x64\x65\x56')]&&cLBCop[_0x122716(0x23b,'\x6d\x5b\x47\x38')](_0x5657bd,_0x3e3087[_0x122716(0x1cd,'\x4a\x55\x72\x72')+_0x122716(0x1b4,'\x6d\x5b\x47\x38')]),_0x163147;else{var _0x214598=_0x333abc&&_0x333abc[_0x122716(0x27b,'\x42\x51\x6b\x68')]||_0x23ee72[_0x122716(0x22f,'\x52\x6c\x36\x2a')](String,_0x333abc);if(_0x23ee72['\x6f\x66\x62\x77\x78'](_0x214598[_0x122716(0x2b5,'\x26\x43\x4b\x6b')](_0x23ee72['\x45\x64\x51\x51\x4d']),-(0x1228+0x265f+-0x3886))){const _0x1b95ed={};return _0x1b95ed['\x6f\x6b']=![],_0x1b95ed[_0x122716(0x2f8,'\x74\x68\x70\x53')]=_0x23ee72[_0x122716(0x2bf,'\x33\x31\x7a\x4a')],_0x1b95ed[_0x122716(0x2fb,'\x54\x36\x59\x37')]=!![],_0x1b95ed;}return{'\x6f\x6b':![],'\x65\x72\x72\x6f\x72':_0x23ee72[_0x122716(0x2a8,'\x47\x64\x65\x56')],'\x6f\x66\x66\x6c\x69\x6e\x65':!![],'\x64\x65\x74\x61\x69\x6c':_0x214598[_0x122716(0x1c6,'\x5a\x52\x57\x40')](-0x97*0x31+0x3f2+0x18f5,0x1*-0x2216+0xe7a+0x2*0xa32)};}}}function _0x2a7880(){const _0x47f6f5=_0x475028,_0x522814={};_0x522814[_0x47f6f5(0x2d6,'\x5a\x52\x57\x40')]=function(_0x4fc6ef,_0x3aefe1){return _0x4fc6ef===_0x3aefe1;},_0x522814[_0x47f6f5(0x2ec,'\x41\x56\x6d\x49')]=_0x47f6f5(0x13d,'\x6e\x78\x52\x48'),_0x522814[_0x47f6f5(0x2ac,'\x5a\x24\x73\x4b')]=_0x47f6f5(0x26d,'\x4a\x55\x72\x72'),_0x522814[_0x47f6f5(0x111,'\x2a\x64\x61\x29')]=function(_0x310bf3,_0x62dc0f){return _0x310bf3===_0x62dc0f;},_0x522814[_0x47f6f5(0x124,'\x42\x51\x6b\x68')]=function(_0x43fe4d,_0x26cbfc){return _0x43fe4d===_0x26cbfc;},_0x522814['\x53\x52\x42\x64\x46']=_0x47f6f5(0x2f0,'\x33\x31\x7a\x4a');const _0x4893f7=_0x522814;if(_0x4893f7[_0x47f6f5(0x246,'\x58\x50\x7a\x69')](process.env.NODE_ENV,_0x4893f7[_0x47f6f5(0x11e,'\x2a\x64\x61\x29')])){var _0x2b0cfb=(process.env.EVOLVER_SOLIDIFY_VERIFY||'')[_0x47f6f5(0x2d2,'\x26\x43\x4b\x6b')+_0x47f6f5(0x125,'\x6f\x5b\x28\x67')]();if(_0x4893f7['\x41\x64\x6c\x61\x4a'](_0x2b0cfb,_0x4893f7[_0x47f6f5(0x1bd,'\x53\x42\x35\x57')])||_0x4893f7[_0x47f6f5(0x1a8,'\x5a\x24\x73\x4b')](_0x2b0cfb,'\x30')||_0x4893f7[_0x47f6f5(0x164,'\x52\x6c\x36\x2a')](_0x2b0cfb,_0x4893f7[_0x47f6f5(0x277,'\x4c\x74\x5b\x45')]))return![];}var _0x4e1b62=process.env.A2A_HUB_URL||'';return!!_0x4e1b62;}const _0x450bec={};function _0x5d34(_0x3b8018,_0x2155d2){_0x3b8018=_0x3b8018-(-0xd*0x85+-0x1f5+0x9c2*0x1);const _0x45fdcc=_0x3755();let _0x3c1909=_0x45fdcc[_0x3b8018];if(_0x5d34['\x5a\x57\x73\x65\x71\x59']===undefined){var _0x67255c=function(_0x13d40f){const _0xf39825='\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 _0x18daf4='',_0x2d0e6d='',_0x3443fd=_0x18daf4+_0x67255c,_0x11c46a=(''+function(){return-0x214*0x1+0xe0e+-0x2a*0x49;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x266b+0x26a+0x2402);for(let _0x4361dd=-0x2649*0x1+0x1*0x14d3+0x1176*0x1,_0x4ba165,_0x28e192,_0x47108e=-0x162c+-0x5*0x32+0x1726;_0x28e192=_0x13d40f['\x63\x68\x61\x72\x41\x74'](_0x47108e++);~_0x28e192&&(_0x4ba165=_0x4361dd%(0x1d*0x10d+0x31e+0x2193*-0x1)?_0x4ba165*(-0x2d*0x7b+0x3*0xa63+0x94a*-0x1)+_0x28e192:_0x28e192,_0x4361dd++%(-0x1b*-0xab+-0x927+-0x8de))?_0x18daf4+=_0x11c46a||_0x3443fd['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x47108e+(0x6*0x8f+-0x68d+0x33d))-(0x77f+0xad1+0x1246*-0x1)!==-0xe52*-0x2+-0x14e4+0x2*-0x3e0?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x1c47+-0x142*0x17+0x12a*0x32&_0x4ba165>>(-(0x145d+-0x4*0x3d4+-0x50b)*_0x4361dd&0x22d*0x2+-0x24ca+0x2076)):_0x4361dd:0xd90+-0x403+-0x98d*0x1){_0x28e192=_0xf39825['\x69\x6e\x64\x65\x78\x4f\x66'](_0x28e192);}for(let _0xf4ad6c=-0x71f*0x1+0x1*0x34a+0x6d*0x9,_0x10b16b=_0x18daf4['\x6c\x65\x6e\x67\x74\x68'];_0xf4ad6c<_0x10b16b;_0xf4ad6c++){_0x2d0e6d+='\x25'+('\x30\x30'+_0x18daf4['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xf4ad6c)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x1178+-0x2b+0x11b3))['\x73\x6c\x69\x63\x65'](-(-0x21d4*-0x1+0x15ef*-0x1+-0xbe3));}return decodeURIComponent(_0x2d0e6d);};const _0x507465=function(_0x1bb76c,_0x441f62){let _0x945bab=[],_0x4969d8=-0x1*0xd06+-0x99a+-0x5a8*-0x4,_0x40fac0,_0x23099f='';_0x1bb76c=_0x67255c(_0x1bb76c);let _0x5a26c7;for(_0x5a26c7=-0x163+0x2*-0x33d+0x3*0x29f;_0x5a26c7<-0x376*-0x3+0x1*0x160a+-0x1f6c;_0x5a26c7++){_0x945bab[_0x5a26c7]=_0x5a26c7;}for(_0x5a26c7=0x9fa+0x60a*-0x4+0xe2e;_0x5a26c7<0x1271+0x2699+-0x380a*0x1;_0x5a26c7++){_0x4969d8=(_0x4969d8+_0x945bab[_0x5a26c7]+_0x441f62['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5a26c7%_0x441f62['\x6c\x65\x6e\x67\x74\x68']))%(-0x43e*-0x2+0x310+-0xa8c),_0x40fac0=_0x945bab[_0x5a26c7],_0x945bab[_0x5a26c7]=_0x945bab[_0x4969d8],_0x945bab[_0x4969d8]=_0x40fac0;}_0x5a26c7=0x1568+0x1b7*-0xd+-0xe3*-0x1,_0x4969d8=0x1c80+-0x547+-0x5*0x4a5;for(let _0x37e829=0x6*-0x5be+-0xa05+0x2c79;_0x37e829<_0x1bb76c['\x6c\x65\x6e\x67\x74\x68'];_0x37e829++){_0x5a26c7=(_0x5a26c7+(0x256d+-0x1a80+-0xaec))%(0x1e99+0x1*0x1352+0x1*-0x30eb),_0x4969d8=(_0x4969d8+_0x945bab[_0x5a26c7])%(-0x86*0x35+-0x12b9+0x2f77),_0x40fac0=_0x945bab[_0x5a26c7],_0x945bab[_0x5a26c7]=_0x945bab[_0x4969d8],_0x945bab[_0x4969d8]=_0x40fac0,_0x23099f+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x1bb76c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x37e829)^_0x945bab[(_0x945bab[_0x5a26c7]+_0x945bab[_0x4969d8])%(0x733*0x1+0x2577+-0x3*0xe8e)]);}return _0x23099f;};_0x5d34['\x7a\x53\x44\x6c\x7a\x75']=_0x507465,_0x5d34['\x4c\x65\x72\x56\x49\x68']={},_0x5d34['\x5a\x57\x73\x65\x71\x59']=!![];}const _0x11efd2=_0x45fdcc[0x7*-0xfd+-0x1768+0x1e53],_0x294a4f=_0x3b8018+_0x11efd2,_0x1e1fb9=_0x5d34['\x4c\x65\x72\x56\x49\x68'][_0x294a4f];if(!_0x1e1fb9){if(_0x5d34['\x5a\x65\x4a\x4e\x4b\x7a']===undefined){const _0x5924be=function(_0x337f8c){this['\x52\x4f\x75\x41\x66\x73']=_0x337f8c,this['\x68\x43\x55\x6b\x50\x54']=[0x1*-0x166f+0xa36+-0x2*-0x61d,0x1384*0x2+-0x874*-0x1+-0x6*0x7ea,-0xbdd*-0x2+-0x9ef*-0x2+-0xf8*0x2d],this['\x76\x4c\x50\x51\x71\x58']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x6b\x58\x62\x53\x4c\x6d']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x59\x69\x6e\x67\x58\x65']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x5924be['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x43\x7a\x78\x52\x72\x49']=function(){const _0x5f1fc5=new RegExp(this['\x6b\x58\x62\x53\x4c\x6d']+this['\x59\x69\x6e\x67\x58\x65']),_0x24fc4a=_0x5f1fc5['\x74\x65\x73\x74'](this['\x76\x4c\x50\x51\x71\x58']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x68\x43\x55\x6b\x50\x54'][-0x2684+0x1605+0x1080]:--this['\x68\x43\x55\x6b\x50\x54'][0x1cce+-0xa57+-0x1277];return this['\x5a\x4a\x57\x46\x47\x4c'](_0x24fc4a);},_0x5924be['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x5a\x4a\x57\x46\x47\x4c']=function(_0x1e76f9){if(!Boolean(~_0x1e76f9))return _0x1e76f9;return this['\x4a\x57\x51\x69\x4c\x53'](this['\x52\x4f\x75\x41\x66\x73']);},_0x5924be['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4a\x57\x51\x69\x4c\x53']=function(_0x4c0e05){for(let _0x46b01c=-0x1698+-0x5*-0x62b+0x83f*-0x1,_0x40395c=this['\x68\x43\x55\x6b\x50\x54']['\x6c\x65\x6e\x67\x74\x68'];_0x46b01c<_0x40395c;_0x46b01c++){this['\x68\x43\x55\x6b\x50\x54']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x40395c=this['\x68\x43\x55\x6b\x50\x54']['\x6c\x65\x6e\x67\x74\x68'];}return _0x4c0e05(this['\x68\x43\x55\x6b\x50\x54'][0x52d+0x44*0x61+-0x1ef1]);},(''+function(){return 0xfb*-0x8+0x3b*0x4f+-0x17b*0x7;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1*-0x248e+-0x12f*-0x15+0xbb4)&&new _0x5924be(_0x5d34)['\x43\x7a\x78\x52\x72\x49'](),_0x5d34['\x5a\x65\x4a\x4e\x4b\x7a']=!![];}_0x3c1909=_0x5d34['\x7a\x53\x44\x6c\x7a\x75'](_0x3c1909,_0x2155d2),_0x5d34['\x4c\x65\x72\x56\x49\x68'][_0x294a4f]=_0x3c1909;}else _0x3c1909=_0x1e1fb9;return _0x3c1909;}_0x450bec[_0x475028(0x10f,'\x4b\x64\x7a\x6f')+_0x475028(0x271,'\x44\x5e\x58\x35')+_0x475028(0x167,'\x73\x44\x5a\x76')]=_0x4d80ce,_0x450bec[_0x475028(0x295,'\x33\x4d\x71\x38')+_0x475028(0x1ed,'\x75\x63\x6f\x33')+_0x475028(0x11a,'\x42\x51\x6b\x68')]=_0x2a7880,_0x450bec[_0x475028(0x2af,'\x51\x5e\x6f\x4d')+'\x66\x66\x6c\x69\x6e\x65\x50\x65'+_0x475028(0x212,'\x23\x21\x4d\x79')]=_0x299955,_0x450bec[_0x475028(0x283,'\x41\x50\x34\x69')+_0x475028(0x18a,'\x23\x21\x4d\x79')+_0x475028(0x28a,'\x5a\x52\x57\x40')]=_0x4a06a2,module['\x65\x78\x70\x6f\x72\x74\x73']=_0x450bec;
|
|
1
|
+
const crypto = require('crypto');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const { hubFetch } = require('./hubFetch');
|
|
5
|
+
const { withFileLock } = require('./assetStore');
|
|
6
|
+
|
|
7
|
+
function hmacSha256(key, data) {
|
|
8
|
+
return crypto.createHmac('sha256', key).update(data).digest('hex');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function hashCompact(input) {
|
|
12
|
+
return crypto.createHash('sha256').update(String(input || '')).digest('hex').slice(0, 16);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function buildRequestPayload({ geneId, signals, mutation }) {
|
|
16
|
+
let nodeSecret = null;
|
|
17
|
+
try {
|
|
18
|
+
nodeSecret = require('./a2aProtocol').getHubNodeSecret();
|
|
19
|
+
} catch (e) {}
|
|
20
|
+
if (!nodeSecret) return null;
|
|
21
|
+
|
|
22
|
+
let nodeId = null;
|
|
23
|
+
try {
|
|
24
|
+
nodeId = require('./a2aProtocol').getNodeId();
|
|
25
|
+
} catch (e) {}
|
|
26
|
+
if (!nodeId) return null;
|
|
27
|
+
|
|
28
|
+
const secretHash = crypto.createHash('sha256').update(nodeSecret).digest('hex');
|
|
29
|
+
|
|
30
|
+
const ts = Date.now();
|
|
31
|
+
const signalsHash = hashCompact(JSON.stringify(Array.isArray(signals) ? signals.slice(0, 8) : []));
|
|
32
|
+
const mutationHash = hashCompact(JSON.stringify(mutation || {}));
|
|
33
|
+
|
|
34
|
+
const challengeData = [nodeId, geneId || '', signalsHash, mutationHash, String(ts)].join('|');
|
|
35
|
+
const clientSignature = hmacSha256(secretHash, challengeData);
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
nodeId,
|
|
39
|
+
nodeSecret,
|
|
40
|
+
body: {
|
|
41
|
+
sender_id: nodeId,
|
|
42
|
+
gene_id: geneId || '',
|
|
43
|
+
signals_hash: signalsHash,
|
|
44
|
+
mutation_hash: mutationHash,
|
|
45
|
+
ts: ts,
|
|
46
|
+
client_signature: clientSignature,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
function requestSolidifyPermit({ geneId, signals, mutation }) {
|
|
53
|
+
const hubUrl = (process.env.A2A_HUB_URL || '').replace(/\/+$/, '');
|
|
54
|
+
if (!hubUrl) return Promise.resolve({ ok: false, error: 'no_hub_url', offline: true });
|
|
55
|
+
|
|
56
|
+
const req = buildRequestPayload({ geneId, signals, mutation });
|
|
57
|
+
if (!req) return Promise.resolve({ ok: false, error: 'no_credentials', offline: true });
|
|
58
|
+
|
|
59
|
+
const endpoint = hubUrl + '/a2a/verify-solidify';
|
|
60
|
+
const timeoutMs = require('../config').HTTP_TRANSPORT_TIMEOUT_MS || 10000;
|
|
61
|
+
|
|
62
|
+
const headers = {
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
'Authorization': 'Bearer ' + req.nodeSecret,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return hubFetch(endpoint, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: headers,
|
|
70
|
+
body: JSON.stringify(req.body),
|
|
71
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
72
|
+
})
|
|
73
|
+
.then(function (res) {
|
|
74
|
+
// Any non-5xx response proves the hub's application layer answered, so
|
|
75
|
+
// the daemon is not actually offline — refresh lastOnlineVerify even on
|
|
76
|
+
// 4xx and on 2xx envelopes that report ok=false. Previously this only
|
|
77
|
+
// fired in the {ok:true} success branch, so a long streak of envelope
|
|
78
|
+
// errors (quota_exceeded, rate_limited, validation) or 4xx responses
|
|
79
|
+
// (bad auth, forbidden) would let the offline-duration counter run
|
|
80
|
+
// past MAX_OFFLINE_DURATION_MS (7d) and falsely block consumeOfflinePermit
|
|
81
|
+
// with offline_duration_exceeded. 5xx is left out — it can be a CDN /
|
|
82
|
+
// load balancer up while the hub itself is down, so the conservative
|
|
83
|
+
// "treat as offline" semantic is preserved there.
|
|
84
|
+
if (res.status < 500) {
|
|
85
|
+
recordLastOnlineVerify();
|
|
86
|
+
}
|
|
87
|
+
if (!res.ok) {
|
|
88
|
+
return res.text().then(function (t) {
|
|
89
|
+
// 5xx = hub/infra down → treat as offline so consumeOfflinePermit fires.
|
|
90
|
+
// 4xx = explicit rejection (bad auth, quota exceeded) → not offline.
|
|
91
|
+
const offline = res.status >= 500;
|
|
92
|
+
return { ok: false, error: 'HTTP ' + res.status + ': ' + t.slice(0, 200), offline };
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return res.json().then(function (result) {
|
|
96
|
+
if (result && result.ok && result.offline_token) {
|
|
97
|
+
cacheOfflineToken(result.offline_token);
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
});
|
|
101
|
+
})
|
|
102
|
+
.catch(function (err) {
|
|
103
|
+
return { ok: false, error: err.message, offline: true };
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// --- Offline token management ---
|
|
108
|
+
|
|
109
|
+
var _OFFLINE_TOKEN_FILE = null;
|
|
110
|
+
var _LAST_VERIFY_FILE = null;
|
|
111
|
+
|
|
112
|
+
function getMemDir() {
|
|
113
|
+
try {
|
|
114
|
+
return require('./paths').getMemoryDir();
|
|
115
|
+
} catch (e) {
|
|
116
|
+
try {
|
|
117
|
+
return path.join(require('./paths').getRepoRoot(), '.evolver', 'memory');
|
|
118
|
+
} catch (e2) {
|
|
119
|
+
return path.join(process.cwd(), '.evolver', 'memory');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function offlineTokenPath() {
|
|
125
|
+
if (!_OFFLINE_TOKEN_FILE) {
|
|
126
|
+
_OFFLINE_TOKEN_FILE = path.join(getMemDir(), '.ot');
|
|
127
|
+
}
|
|
128
|
+
return _OFFLINE_TOKEN_FILE;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function lastVerifyPath() {
|
|
132
|
+
if (!_LAST_VERIFY_FILE) {
|
|
133
|
+
_LAST_VERIFY_FILE = path.join(getMemDir(), '.lv');
|
|
134
|
+
}
|
|
135
|
+
return _LAST_VERIFY_FILE;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Offline token integrity (C2): the .ot file is an anti-tamper quota counter,
|
|
139
|
+
// not a credential — encryption is the wrong primitive. Sign the token with
|
|
140
|
+
// HMAC-SHA256 keyed off nodeSecret instead. A cloned install carries a stale
|
|
141
|
+
// secret-signed token; HMAC verification fails on the first offline read and
|
|
142
|
+
// the token is rejected. Online verification rotates the secret, so legit
|
|
143
|
+
// re-issuance is automatic.
|
|
144
|
+
function getNodeSecret() {
|
|
145
|
+
// Env var first — matches a2aProtocol.getHubNodeSecret() priority and lets
|
|
146
|
+
// the HMAC path work in environments where a2aProtocol can't be required.
|
|
147
|
+
if (process.env.A2A_NODE_SECRET) return process.env.A2A_NODE_SECRET;
|
|
148
|
+
try { return require('./a2aProtocol').getHubNodeSecret() || null; } catch (e) { return null; }
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function cacheOfflineToken(token) {
|
|
152
|
+
try {
|
|
153
|
+
const nodeSecret = getNodeSecret();
|
|
154
|
+
if (!nodeSecret) return;
|
|
155
|
+
const dir = path.dirname(offlineTokenPath());
|
|
156
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
157
|
+
// HMAC stability: token field names must NOT be integer-like strings.
|
|
158
|
+
// V8's JSON.stringify sorts integer-keyed properties numerically while
|
|
159
|
+
// preserving insertion order for non-integer keys; an all-digit field
|
|
160
|
+
// would re-order between cache and load and break verification.
|
|
161
|
+
const data = JSON.stringify(token);
|
|
162
|
+
const hmac = hmacSha256(nodeSecret, data);
|
|
163
|
+
fs.writeFileSync(offlineTokenPath(), JSON.stringify({ data: token, hmac }), 'utf8');
|
|
164
|
+
} catch (e) {}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function loadOfflineToken() {
|
|
168
|
+
try {
|
|
169
|
+
if (!fs.existsSync(offlineTokenPath())) return null;
|
|
170
|
+
const stored = JSON.parse(fs.readFileSync(offlineTokenPath(), 'utf8'));
|
|
171
|
+
if (!stored || !stored.data || typeof stored.hmac !== 'string') return null;
|
|
172
|
+
const nodeSecret = getNodeSecret();
|
|
173
|
+
if (!nodeSecret) return null;
|
|
174
|
+
const expected = hmacSha256(nodeSecret, JSON.stringify(stored.data));
|
|
175
|
+
// Hex-encode the HMAC bytes for comparison: 32-byte buffers, not 64-byte
|
|
176
|
+
// ASCII representations. Length pre-check guards timingSafeEqual which
|
|
177
|
+
// throws on mismatched lengths.
|
|
178
|
+
const expBuf = Buffer.from(expected, 'hex');
|
|
179
|
+
const gotBuf = Buffer.from(stored.hmac, 'hex');
|
|
180
|
+
if (expBuf.length !== gotBuf.length || !crypto.timingSafeEqual(expBuf, gotBuf)) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
return stored.data;
|
|
184
|
+
} catch (e) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function recordLastOnlineVerify() {
|
|
190
|
+
try {
|
|
191
|
+
const dir = path.dirname(lastVerifyPath());
|
|
192
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
193
|
+
fs.writeFileSync(lastVerifyPath(), String(Date.now()), 'utf8');
|
|
194
|
+
} catch (e) {}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function getLastOnlineVerifyTs() {
|
|
198
|
+
try {
|
|
199
|
+
if (!fs.existsSync(lastVerifyPath())) return 0;
|
|
200
|
+
return parseInt(fs.readFileSync(lastVerifyPath(), 'utf8'), 10) || 0;
|
|
201
|
+
} catch (e) {
|
|
202
|
+
return 0;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
var MAX_OFFLINE_SOLIDIFIES = 10;
|
|
207
|
+
var MAX_OFFLINE_DURATION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
208
|
+
var MAX_CLOCK_DRIFT_MS = 24 * 60 * 60 * 1000;
|
|
209
|
+
|
|
210
|
+
// The offline-permit pipeline is `loadOfflineToken → check cap →
|
|
211
|
+
// cacheOfflineToken` (read → check → write). Within a single Node process
|
|
212
|
+
// the chain is synchronous so no intra-process race, but two cooperating
|
|
213
|
+
// processes (daemon + CLI `evolver solidify`) hitting the path at the same
|
|
214
|
+
// moment could both read the same `usedCount`, both pass the cap check,
|
|
215
|
+
// and both increment-and-write — the local counter then trailed reality
|
|
216
|
+
// and the offline quota could be exceeded by N for N concurrent callers.
|
|
217
|
+
// Hub-side enforcement catches this on the next online verify, but the
|
|
218
|
+
// audit posture is wrong locally.
|
|
219
|
+
//
|
|
220
|
+
// Reuse `withFileLock` from assetStore.js — same `src/gep/` directory,
|
|
221
|
+
// already battle-tested for multi-process read-modify-write of memory-dir
|
|
222
|
+
// files, and uses PID-liveness (`process.kill(pid, 0)`) for stale
|
|
223
|
+
// detection plus an Atomics-or-busy-wait fallback for the retry sleep.
|
|
224
|
+
// withFileLock throws on acquire timeout; we map that to a specific
|
|
225
|
+
// `offline_permit_busy` result so callers (daemon heartbeat / CLI
|
|
226
|
+
// solidify) can distinguish "contended" from "permit denied" and retry
|
|
227
|
+
// next cycle.
|
|
228
|
+
function consumeOfflinePermit() {
|
|
229
|
+
// Ensure the memory directory exists before withFileLock tries to
|
|
230
|
+
// create `<memDir>/.ot.lock`. Pre-refactor, the function always
|
|
231
|
+
// returned a structured envelope (loadOfflineToken / cacheOfflineToken
|
|
232
|
+
// both swallow errors internally); after the refactor a fresh install
|
|
233
|
+
// without the memory dir would throw ENOENT from _acquireLock and
|
|
234
|
+
// bubble past the Lock-timeout catch below, breaking the never-throw
|
|
235
|
+
// contract (Bugbot PR #157 R2 Low).
|
|
236
|
+
try {
|
|
237
|
+
var dir = path.dirname(offlineTokenPath());
|
|
238
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
239
|
+
} catch (_) { /* fall through — caught by the wrapper below */ }
|
|
240
|
+
|
|
241
|
+
try {
|
|
242
|
+
return withFileLock(offlineTokenPath(), function () {
|
|
243
|
+
var token = loadOfflineToken();
|
|
244
|
+
if (!token) return { ok: false, error: 'no_offline_token', offline: true };
|
|
245
|
+
|
|
246
|
+
var maxSolidifies = token.maxOfflineSolidifies || MAX_OFFLINE_SOLIDIFIES;
|
|
247
|
+
var expiresAt = token.expiresAt || 0;
|
|
248
|
+
var usedCount = token.usedCount || 0;
|
|
249
|
+
var now = Date.now();
|
|
250
|
+
|
|
251
|
+
var lastOnline = getLastOnlineVerifyTs();
|
|
252
|
+
if (lastOnline > 0 && now < lastOnline - MAX_CLOCK_DRIFT_MS) {
|
|
253
|
+
return { ok: false, error: 'clock_drift_detected', offline: true };
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (expiresAt > 0 && now > expiresAt) {
|
|
257
|
+
return { ok: false, error: 'offline_token_expired', offline: true };
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (lastOnline > 0 && (now - lastOnline) > MAX_OFFLINE_DURATION_MS) {
|
|
261
|
+
return { ok: false, error: 'offline_duration_exceeded', offline: true };
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (usedCount >= maxSolidifies) {
|
|
265
|
+
return { ok: false, error: 'offline_quota_exhausted', offline: true };
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
token.usedCount = usedCount + 1;
|
|
269
|
+
cacheOfflineToken(token);
|
|
270
|
+
return { ok: true, offline: true, remaining: maxSolidifies - token.usedCount };
|
|
271
|
+
});
|
|
272
|
+
} catch (e) {
|
|
273
|
+
// Preserve the "always returns a structured envelope" contract that
|
|
274
|
+
// the pre-refactor consumeOfflinePermit had (loadOfflineToken and
|
|
275
|
+
// cacheOfflineToken both swallowed FS errors internally).
|
|
276
|
+
//
|
|
277
|
+
// - "Lock timeout" → another process holds the lock past the
|
|
278
|
+
// acquire deadline. Surface as busy so the caller's heartbeat
|
|
279
|
+
// loop can retry on the next cycle.
|
|
280
|
+
// - Any other error (ENOENT/EACCES on the lock file, FS misconfig)
|
|
281
|
+
// → report as offline_lock_failed with the original message
|
|
282
|
+
// truncated. The daemon's solidify.js call site treats !ok as
|
|
283
|
+
// a recoverable hint, not a crash trigger.
|
|
284
|
+
var msg = (e && e.message) || String(e);
|
|
285
|
+
if (msg.indexOf('Lock timeout') !== -1) {
|
|
286
|
+
return { ok: false, error: 'offline_permit_busy', offline: true };
|
|
287
|
+
}
|
|
288
|
+
return { ok: false, error: 'offline_lock_failed', offline: true, detail: msg.slice(0, 200) };
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function isSolidifyVerifyEnabled() {
|
|
293
|
+
if (process.env.NODE_ENV === 'test') {
|
|
294
|
+
var v = (process.env.EVOLVER_SOLIDIFY_VERIFY || '').toLowerCase();
|
|
295
|
+
if (v === 'false' || v === '0' || v === 'off') return false;
|
|
296
|
+
}
|
|
297
|
+
var hubUrl = process.env.A2A_HUB_URL || '';
|
|
298
|
+
return !!hubUrl;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
module.exports = {
|
|
302
|
+
requestSolidifyPermit,
|
|
303
|
+
isSolidifyVerifyEnabled,
|
|
304
|
+
consumeOfflinePermit,
|
|
305
|
+
getLastOnlineVerifyTs,
|
|
306
|
+
};
|