@evomap/evolver 1.89.2 → 1.89.4

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.
Files changed (110) hide show
  1. package/.cursor/BUGBOT.md +182 -0
  2. package/.env.example +68 -0
  3. package/.git-commit-guard-token +1 -0
  4. package/.github/CODEOWNERS +63 -0
  5. package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
  6. package/.github/pull_request_template.md +45 -0
  7. package/.github/workflows/test.yml +75 -0
  8. package/CHANGELOG.md +1237 -0
  9. package/README.ja-JP.md +1 -3
  10. package/README.ko-KR.md +1 -3
  11. package/README.md +86 -530
  12. package/README.public.md +569 -0
  13. package/README.zh-CN.md +1 -3
  14. package/SECURITY.md +108 -0
  15. package/assets/gep/events.jsonl +3 -0
  16. package/assets/gep/genes.json +496 -0
  17. package/examples/atp-consumer-quickstart.md +100 -0
  18. package/examples/hello-world.md +38 -0
  19. package/index.js +44 -48
  20. package/package.json +6 -17
  21. package/proxy-package.json +39 -0
  22. package/public.manifest.json +143 -0
  23. package/src/adapters/hookAdapter.js +2 -0
  24. package/src/adapters/scripts/_lockPaths.js +74 -0
  25. package/src/adapters/scripts/evolver-session-start.js +19 -27
  26. package/src/config.js +23 -0
  27. package/src/evolve/guards.js +721 -1
  28. package/src/evolve/pipeline/collect.js +1283 -1
  29. package/src/evolve/pipeline/dispatch.js +421 -1
  30. package/src/evolve/pipeline/enrich.js +440 -1
  31. package/src/evolve/pipeline/hub.js +319 -1
  32. package/src/evolve/pipeline/select.js +274 -1
  33. package/src/evolve/pipeline/signals.js +206 -1
  34. package/src/evolve/utils.js +264 -1
  35. package/src/evolve.js +350 -1
  36. package/src/experiment/agentRunner.js +229 -0
  37. package/src/experiment/cli.js +159 -0
  38. package/src/experiment/comparison.js +233 -0
  39. package/src/experiment/metrics.js +75 -0
  40. package/src/forceUpdate.js +311 -30
  41. package/src/gep/a2aProtocol.js +4455 -1
  42. package/src/gep/antiAbuseTelemetry.js +233 -0
  43. package/src/gep/autoDistillConv.js +205 -1
  44. package/src/gep/autoDistillLlm.js +315 -1
  45. package/src/gep/candidateEval.js +92 -1
  46. package/src/gep/candidates.js +198 -1
  47. package/src/gep/contentHash.js +30 -1
  48. package/src/gep/conversationSniffer.js +266 -1
  49. package/src/gep/crypto.js +89 -1
  50. package/src/gep/curriculum.js +163 -1
  51. package/src/gep/deviceId.js +218 -1
  52. package/src/gep/envFingerprint.js +118 -1
  53. package/src/gep/epigenetics.js +31 -1
  54. package/src/gep/execBridge.js +711 -1
  55. package/src/gep/explore.js +289 -1
  56. package/src/gep/hash.js +15 -1
  57. package/src/gep/hubFetch.js +359 -1
  58. package/src/gep/hubReview.js +207 -1
  59. package/src/gep/hubSearch.js +526 -1
  60. package/src/gep/hubVerify.js +306 -1
  61. package/src/gep/learningSignals.js +89 -1
  62. package/src/gep/memoryGraph.js +1374 -1
  63. package/src/gep/memoryGraphAdapter.js +203 -1
  64. package/src/gep/mutation.js +203 -1
  65. package/src/gep/narrativeMemory.js +108 -1
  66. package/src/gep/openPRRegistry.js +205 -1
  67. package/src/gep/personality.js +423 -1
  68. package/src/gep/policyCheck.js +599 -1
  69. package/src/gep/prompt.js +836 -1
  70. package/src/gep/recallInject.js +409 -1
  71. package/src/gep/recallVerifier.js +318 -1
  72. package/src/gep/reflection.js +177 -1
  73. package/src/gep/sanitize.js +9 -0
  74. package/src/gep/selector.js +602 -1
  75. package/src/gep/skillDistiller.js +1294 -1
  76. package/src/gep/solidify.js +1699 -1
  77. package/src/gep/strategy.js +136 -1
  78. package/src/gep/tokenSavings.js +88 -1
  79. package/src/gep/validator/sandboxExecutor.js +29 -1
  80. package/src/gep/workspaceKeychain.js +174 -1
  81. package/src/proxy/extensions/traceControl.js +99 -1
  82. package/src/proxy/index.js +14 -5
  83. package/src/proxy/inject.js +52 -1
  84. package/src/proxy/lifecycle/manager.js +30 -0
  85. package/src/proxy/mailbox/store.js +2 -1
  86. package/src/proxy/router/messages_route.js +13 -2
  87. package/src/proxy/trace/extractor.js +646 -1
  88. package/src/proxy/trace/usage.js +105 -1
  89. package/CONTRIBUTING.md +0 -19
  90. package/assets/cover.png +0 -0
  91. package/assets/gep/genes.seed.json +0 -245
  92. package/scripts/a2a_export.js +0 -63
  93. package/scripts/a2a_ingest.js +0 -79
  94. package/scripts/a2a_promote.js +0 -118
  95. package/scripts/analyze_by_skill.js +0 -121
  96. package/scripts/build_binaries.js +0 -479
  97. package/scripts/check-changelog.js +0 -166
  98. package/scripts/extract_log.js +0 -85
  99. package/scripts/generate_history.js +0 -75
  100. package/scripts/gep_append_event.js +0 -96
  101. package/scripts/gep_personality_report.js +0 -234
  102. package/scripts/human_report.js +0 -147
  103. package/scripts/recall-verify-report.js +0 -234
  104. package/scripts/recover_loop.js +0 -61
  105. package/scripts/seed-merchants.js +0 -91
  106. package/scripts/suggest_version.js +0 -89
  107. package/scripts/validate-modules.js +0 -38
  108. package/scripts/validate-suite.js +0 -78
  109. package/skills/index.json +0 -14
  110. /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
@@ -1 +1,136 @@
1
- var _0x5b50af=_0x27fa;(function(_0x8a822a,_0xf4dadd){var _0x56d7f1=_0x27fa,_0x281aa5=_0x8a822a();while(!![]){try{var _0x61de71=-parseInt(_0x56d7f1(0x13f,'\x72\x6f\x6b\x55'))/(0x1*-0x184a+-0x1f*0x84+-0x15*-0x1eb)*(parseInt(_0x56d7f1(0x120,'\x74\x77\x54\x28'))/(-0x14dc+0x11c9+-0x315*-0x1))+parseInt(_0x56d7f1(0x176,'\x72\x6f\x6b\x55'))/(-0xff1*0x2+0xbda+-0x140b*-0x1)*(parseInt(_0x56d7f1(0x1a6,'\x45\x41\x4b\x48'))/(-0x1662*0x1+-0x1*0x1afe+-0x3a*-0xda))+parseInt(_0x56d7f1(0x19c,'\x63\x55\x72\x52'))/(0x3d*-0x2b+-0xb46+0x158a)*(-parseInt(_0x56d7f1(0x1c4,'\x39\x56\x65\x36'))/(-0xb*-0x149+0x237a+-0x3197))+-parseInt(_0x56d7f1(0x1bd,'\x39\x56\x65\x36'))/(-0x1*0x24e0+0x2*-0x7aa+-0x343b*-0x1)+-parseInt(_0x56d7f1(0x128,'\x28\x6a\x4c\x42'))/(-0x355*0x3+-0x13*-0x19f+0xa63*-0x2)+parseInt(_0x56d7f1(0x1d8,'\x21\x45\x69\x6d'))/(-0x2f*-0x31+0x10fc+-0x19f2)+parseInt(_0x56d7f1(0x112,'\x74\x77\x54\x28'))/(0x1835*-0x1+-0x1178+0xb5*0x3b);if(_0x61de71===_0xf4dadd)break;else _0x281aa5['push'](_0x281aa5['shift']());}catch(_0x457fa5){_0x281aa5['push'](_0x281aa5['shift']());}}}(_0x349d,0x8b*-0x1740+-0xca19+0x35afb*0x7));var _0x387f49=(function(){var _0x1d9742=_0x27fa,_0x1321d0={};_0x1321d0[_0x1d9742(0x119,'\x7a\x74\x6d\x43')]=_0x1d9742(0x14b,'\x44\x5e\x62\x75')+_0x1d9742(0x168,'\x50\x61\x78\x75'),_0x1321d0[_0x1d9742(0x18e,'\x58\x57\x29\x4f')]=_0x1d9742(0x1ce,'\x46\x41\x73\x5d')+_0x1d9742(0x132,'\x63\x55\x72\x52'),_0x1321d0['\x49\x52\x6a\x6b\x4d']=_0x1d9742(0x165,'\x38\x4d\x54\x28'),_0x1321d0[_0x1d9742(0xc4,'\x31\x4f\x5d\x66')]=function(_0xc023b7,_0xfc26f5){return _0xc023b7!==_0xfc26f5;},_0x1321d0[_0x1d9742(0x149,'\x39\x21\x6f\x69')]=_0x1d9742(0xe6,'\x47\x26\x68\x23')+'\x74\x61\x74\x65',_0x1321d0[_0x1d9742(0x146,'\x5a\x36\x69\x78')]=_0x1d9742(0x182,'\x31\x4f\x5d\x66'),_0x1321d0[_0x1d9742(0x127,'\x75\x41\x6f\x7a')]='\x52\x59\x75\x65\x53';var _0x355766=_0x1321d0,_0x22f00b=!![];return function(_0x115c5b,_0x4cd5f5){var _0x1ed41b=_0x1d9742,_0x2dd765={'\x46\x68\x4f\x42\x6c':_0x355766[_0x1ed41b(0x133,'\x71\x4f\x70\x59')],'\x51\x41\x6a\x6b\x62':_0x355766[_0x1ed41b(0x154,'\x44\x5e\x62\x75')],'\x56\x63\x5a\x6c\x58':function(_0x2e0b81,_0x15b36a){return _0x2e0b81===_0x15b36a;},'\x62\x70\x71\x4d\x5a':_0x355766[_0x1ed41b(0x1c9,'\x28\x6a\x4c\x42')],'\x50\x61\x71\x6c\x6c':function(_0x57dfbf,_0x5bfa61){var _0x1d9ca8=_0x1ed41b;return _0x355766[_0x1d9ca8(0xe4,'\x61\x32\x74\x74')](_0x57dfbf,_0x5bfa61);},'\x75\x42\x6a\x75\x4e':_0x1ed41b(0x17d,'\x55\x23\x70\x59'),'\x4e\x43\x49\x68\x50':_0x355766[_0x1ed41b(0x1cb,'\x5b\x50\x51\x2a')]};if(_0x355766[_0x1ed41b(0x1b0,'\x47\x26\x68\x23')](_0x355766[_0x1ed41b(0x1ba,'\x69\x47\x71\x74')],_0x355766[_0x1ed41b(0xe7,'\x44\x6c\x45\x55')])){var _0x2a6c02=_0x22f00b?function(){var _0x56cb28=_0x1ed41b,_0x5aace6={};_0x5aace6[_0x56cb28(0x184,'\x5a\x36\x69\x78')]=_0x2dd765[_0x56cb28(0x177,'\x28\x6a\x4c\x42')],_0x5aace6['\x74\x55\x64\x71\x76']=_0x2dd765[_0x56cb28(0x124,'\x65\x44\x77\x34')];var _0x2ee59e=_0x5aace6;if(_0x2dd765[_0x56cb28(0xdc,'\x44\x6c\x45\x55')](_0x2dd765[_0x56cb28(0x173,'\x38\x4d\x54\x28')],'\x59\x77\x6f\x44\x50'))return _0x214f86[_0x56cb28(0x17b,'\x34\x74\x65\x51')]()[_0x56cb28(0x123,'\x28\x6a\x4c\x42')](_0x2ee59e[_0x56cb28(0x159,'\x28\x42\x67\x53')])[_0x56cb28(0x14f,'\x46\x41\x73\x5d')]()[_0x56cb28(0x1b5,'\x39\x56\x65\x36')+'\x74\x6f\x72'](_0x27c5d0)[_0x56cb28(0x1bb,'\x58\x57\x29\x4f')](_0x2ee59e[_0x56cb28(0x126,'\x30\x5b\x4c\x6a')]);else{if(_0x4cd5f5){if(_0x2dd765[_0x56cb28(0xc5,'\x21\x45\x69\x6d')](_0x56cb28(0x1a8,'\x44\x5e\x62\x75'),_0x2dd765[_0x56cb28(0x10f,'\x63\x55\x72\x52')]))_0x318995=_0x2ee59e['\x74\x55\x64\x71\x76'];else{var _0x452f33=_0x4cd5f5[_0x56cb28(0x15d,'\x76\x61\x35\x79')](_0x115c5b,arguments);return _0x4cd5f5=null,_0x452f33;}}}}:function(){};return _0x22f00b=![],_0x2a6c02;}else _0x473d0d=_0x2dd765['\x4e\x43\x49\x68\x50'];};}()),_0x45aaa7=_0x387f49(this,function(){var _0x333d5a=_0x27fa,_0x1342b4={};_0x1342b4[_0x333d5a(0x1cd,'\x50\x28\x39\x58')]=_0x333d5a(0x1ab,'\x7a\x74\x6d\x43')+_0x333d5a(0x113,'\x21\x45\x69\x6d');var _0x1120c9=_0x1342b4;return _0x45aaa7['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x333d5a(0x1af,'\x76\x61\x35\x79')](_0x1120c9[_0x333d5a(0x174,'\x59\x6c\x62\x24')])[_0x333d5a(0x1c2,'\x39\x21\x6f\x69')]()[_0x333d5a(0xd1,'\x71\x4f\x70\x59')+_0x333d5a(0xff,'\x26\x41\x45\x25')](_0x45aaa7)[_0x333d5a(0x175,'\x30\x5b\x4c\x6a')](_0x333d5a(0x183,'\x45\x74\x24\x37')+_0x333d5a(0x15a,'\x21\x34\x49\x30'));});_0x45aaa7();function _0x27fa(_0x14fc90,_0x14c3c3){_0x14fc90=_0x14fc90-(0xd81*0x1+0x15dd+-0x3*0xb8a);var _0x5d5b8f=_0x349d();var _0xdd6871=_0x5d5b8f[_0x14fc90];if(_0x27fa['\x72\x57\x4e\x42\x78\x5a']===undefined){var _0x1c76a3=function(_0x47cc1c){var _0x121551='\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';var _0x4b4e36='',_0x41c32c='',_0x1082a4=_0x4b4e36+_0x1c76a3,_0x51c509=(''+function(){return-0x1*0x243a+-0x1*0x52+-0x1*-0x248c;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xbc8+-0x14*0x53+0x1245);for(var _0x3d0839=0x1bd3+0x1d18+-0x12f9*0x3,_0x1c3fed,_0x16c90b,_0x153beb=0x99b+0x24*0x3+-0xa07;_0x16c90b=_0x47cc1c['\x63\x68\x61\x72\x41\x74'](_0x153beb++);~_0x16c90b&&(_0x1c3fed=_0x3d0839%(0x223*-0x11+-0x1f*-0x65+0x4*0x607)?_0x1c3fed*(-0x1*-0x2085+0x4*0x6cd+-0x3b79)+_0x16c90b:_0x16c90b,_0x3d0839++%(-0x1c33+-0x296*-0x1+-0x19a1*-0x1))?_0x4b4e36+=_0x51c509||_0x1082a4['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x153beb+(-0x2*-0x25b+-0xd0+-0x26*0x1a))-(-0x3*0x289+-0xa4b+0x11f0)!==0xd4b*-0x2+-0xbc5+0x265b?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x170f+0x1a22+-0x214&_0x1c3fed>>(-(-0x1*-0xc02+0x1*-0x1a73+0xe73)*_0x3d0839&-0x1*-0x1cb5+0x1*0xe95+0x1a*-0x1aa)):_0x3d0839:0x215+-0x3*0x264+-0x1*-0x517){_0x16c90b=_0x121551['\x69\x6e\x64\x65\x78\x4f\x66'](_0x16c90b);}for(var _0x479cca=-0x2*-0x80e+-0xed*-0xd+-0x1c25,_0x33fe3c=_0x4b4e36['\x6c\x65\x6e\x67\x74\x68'];_0x479cca<_0x33fe3c;_0x479cca++){_0x41c32c+='\x25'+('\x30\x30'+_0x4b4e36['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x479cca)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x1*0x67e+-0x1*0xa33+0x1*0x10c1))['\x73\x6c\x69\x63\x65'](-(0x134c+-0xb4f+-0x7fb));}return decodeURIComponent(_0x41c32c);};var _0x25d237=function(_0x3e81fe,_0xd3a604){var _0x4b49a5=[],_0xf5e873=-0x818+0x1c*0x71+-0x444,_0x4748d8,_0xa94f94='';_0x3e81fe=_0x1c76a3(_0x3e81fe);var _0xffb1d9;for(_0xffb1d9=0xe55+-0xef3+0x9e;_0xffb1d9<0x1*0xd78+0x268*-0xe+0xa9c*0x2;_0xffb1d9++){_0x4b49a5[_0xffb1d9]=_0xffb1d9;}for(_0xffb1d9=0x3e*-0x14+-0x7*0x262+-0x44e*-0x5;_0xffb1d9<-0x1681+0xb2d+-0x1*-0xc54;_0xffb1d9++){_0xf5e873=(_0xf5e873+_0x4b49a5[_0xffb1d9]+_0xd3a604['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xffb1d9%_0xd3a604['\x6c\x65\x6e\x67\x74\x68']))%(0x19e6+0x24f8+-0x1*0x3dde),_0x4748d8=_0x4b49a5[_0xffb1d9],_0x4b49a5[_0xffb1d9]=_0x4b49a5[_0xf5e873],_0x4b49a5[_0xf5e873]=_0x4748d8;}_0xffb1d9=-0x76e*0x1+0x399*0x6+0x8*-0x1c5,_0xf5e873=-0xeb8+0x1*0x16f9+-0x841;for(var _0xa28fb5=-0x1b1f+0x1*-0x2395+0x1*0x3eb4;_0xa28fb5<_0x3e81fe['\x6c\x65\x6e\x67\x74\x68'];_0xa28fb5++){_0xffb1d9=(_0xffb1d9+(0x1*-0x1fb+0x1d3*-0xf+0xb*0x2ab))%(0x19a1+-0xea1+-0xa00),_0xf5e873=(_0xf5e873+_0x4b49a5[_0xffb1d9])%(0xa0b*-0x3+0x1398+-0x1*-0xb89),_0x4748d8=_0x4b49a5[_0xffb1d9],_0x4b49a5[_0xffb1d9]=_0x4b49a5[_0xf5e873],_0x4b49a5[_0xf5e873]=_0x4748d8,_0xa94f94+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x3e81fe['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0xa28fb5)^_0x4b49a5[(_0x4b49a5[_0xffb1d9]+_0x4b49a5[_0xf5e873])%(0x1d99+0x22a+0x177*-0x15)]);}return _0xa94f94;};_0x27fa['\x64\x77\x54\x6a\x56\x4d']=_0x25d237,_0x27fa['\x63\x74\x74\x45\x47\x43']={},_0x27fa['\x72\x57\x4e\x42\x78\x5a']=!![];}var _0x2662e1=_0x5d5b8f[0x34*-0x83+0x7d3+0x12c9],_0x31cde5=_0x14fc90+_0x2662e1,_0x11eade=_0x27fa['\x63\x74\x74\x45\x47\x43'][_0x31cde5];if(!_0x11eade){if(_0x27fa['\x53\x4b\x78\x74\x79\x79']===undefined){var _0x59c5d0=function(_0x831220){this['\x48\x45\x64\x6e\x4b\x71']=_0x831220,this['\x63\x41\x52\x45\x55\x78']=[0x3aa+0x16*0xf1+-0x185f,0x1ee0+-0x222a+0x34a,0x1*0x1539+0x25a0+-0x17*0x28f],this['\x43\x73\x6c\x7a\x72\x44']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x77\x4a\x48\x4a\x4b\x59']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x49\x47\x70\x63\x46\x48']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x59c5d0['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6e\x51\x65\x73\x50\x6e']=function(){var _0x2c0bdf=new RegExp(this['\x77\x4a\x48\x4a\x4b\x59']+this['\x49\x47\x70\x63\x46\x48']),_0x434c20=_0x2c0bdf['\x74\x65\x73\x74'](this['\x43\x73\x6c\x7a\x72\x44']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x63\x41\x52\x45\x55\x78'][0x7*-0x24+-0xb9e+0xc9b]:--this['\x63\x41\x52\x45\x55\x78'][0x1*0x889+-0x1c6c+-0x1*-0x13e3];return this['\x72\x44\x7a\x51\x67\x78'](_0x434c20);},_0x59c5d0['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x72\x44\x7a\x51\x67\x78']=function(_0x245bf3){if(!Boolean(~_0x245bf3))return _0x245bf3;return this['\x4e\x6e\x50\x71\x6b\x5a'](this['\x48\x45\x64\x6e\x4b\x71']);},_0x59c5d0['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4e\x6e\x50\x71\x6b\x5a']=function(_0x1f04ed){for(var _0x12d921=0x18d6+0x178+-0x1a4e,_0x4370c7=this['\x63\x41\x52\x45\x55\x78']['\x6c\x65\x6e\x67\x74\x68'];_0x12d921<_0x4370c7;_0x12d921++){this['\x63\x41\x52\x45\x55\x78']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4370c7=this['\x63\x41\x52\x45\x55\x78']['\x6c\x65\x6e\x67\x74\x68'];}return _0x1f04ed(this['\x63\x41\x52\x45\x55\x78'][-0x1f4*-0x4+-0x24af*-0x1+-0x2c7f*0x1]);},(''+function(){return-0x945+-0x247c+0x2dc1*0x1;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1b31+-0xefd*0x1+-0xc33)&&new _0x59c5d0(_0x27fa)['\x6e\x51\x65\x73\x50\x6e'](),_0x27fa['\x53\x4b\x78\x74\x79\x79']=!![];}_0xdd6871=_0x27fa['\x64\x77\x54\x6a\x56\x4d'](_0xdd6871,_0x14c3c3),_0x27fa['\x63\x74\x74\x45\x47\x43'][_0x31cde5]=_0xdd6871;}else _0xdd6871=_0x11eade;return _0xdd6871;}var _0x26b557=require('\x66\x73'),_0x15c29f=require(_0x5b50af(0x17e,'\x71\x47\x39\x6c')),_0xeabb98={};_0xeabb98[_0x5b50af(0x1d9,'\x31\x4f\x5d\x66')]=0.2,_0xeabb98[_0x5b50af(0xf1,'\x34\x6a\x77\x2a')]=0.2,_0xeabb98['\x69\x6e\x6e\x6f\x76\x61\x74\x65']=0.5,_0xeabb98[_0x5b50af(0x15c,'\x29\x66\x59\x30')]=0.1,_0xeabb98[_0x5b50af(0x118,'\x30\x49\x64\x63')+'\x6f\x70\x54\x68\x72\x65\x73\x68'+_0x5b50af(0xf9,'\x24\x25\x55\x53')]=0.5,_0xeabb98[_0x5b50af(0x1a5,'\x26\x41\x45\x25')]=_0x5b50af(0x19e,'\x6d\x7a\x6f\x62'),_0xeabb98[_0x5b50af(0x17a,'\x65\x44\x77\x34')+_0x5b50af(0x110,'\x5a\x36\x69\x78')]=_0x5b50af(0x191,'\x21\x45\x69\x6d')+_0x5b50af(0x1a7,'\x76\x61\x35\x79')+'\x2e\x20\x53\x74\x65\x61\x64\x79'+_0x5b50af(0x101,'\x30\x49\x64\x63')+'\x77\x69\x74\x68\x20\x73\x74\x61'+_0x5b50af(0xd5,'\x28\x42\x67\x53');var _0x6104f2={};_0x6104f2[_0x5b50af(0x178,'\x78\x4b\x71\x44')]=0.05,_0x6104f2[_0x5b50af(0xdf,'\x46\x41\x73\x5d')]=0.1,_0x6104f2[_0x5b50af(0xe9,'\x45\x74\x24\x37')]=0.8,_0x6104f2[_0x5b50af(0xd8,'\x58\x57\x29\x4f')]=0.05,_0x6104f2[_0x5b50af(0x1ad,'\x74\x77\x54\x28')+_0x5b50af(0x148,'\x21\x34\x49\x30')+_0x5b50af(0xcb,'\x50\x28\x39\x58')]=0.3,_0x6104f2[_0x5b50af(0x1b2,'\x52\x39\x4f\x4b')]='\x49\x6e\x6e\x6f\x76\x61\x74\x69'+_0x5b50af(0x144,'\x45\x41\x4b\x48'),_0x6104f2[_0x5b50af(0x12c,'\x69\x47\x71\x74')+_0x5b50af(0x19f,'\x30\x49\x64\x63')]=_0x5b50af(0x13a,'\x77\x51\x74\x69')+'\x73\x20\x73\x74\x61\x62\x6c\x65'+'\x2e\x20\x4d\x61\x78\x69\x6d\x69'+_0x5b50af(0x190,'\x21\x34\x49\x30')+_0x5b50af(0x172,'\x50\x61\x78\x75')+_0x5b50af(0x12a,'\x65\x44\x77\x34')+_0x5b50af(0x195,'\x50\x61\x78\x75')+'\x2e';var _0x16d300={};_0x16d300[_0x5b50af(0x115,'\x39\x21\x6f\x69')]=0.4,_0x16d300['\x6f\x70\x74\x69\x6d\x69\x7a\x65']=0.35,_0x16d300[_0x5b50af(0xc6,'\x26\x41\x45\x25')]=0.2,_0x16d300[_0x5b50af(0x109,'\x6d\x7a\x6f\x62')]=0.05,_0x16d300[_0x5b50af(0xf8,'\x24\x25\x55\x53')+_0x5b50af(0x161,'\x5a\x36\x69\x78')+_0x5b50af(0x199,'\x7a\x74\x6d\x43')]=0.7,_0x16d300[_0x5b50af(0x1ac,'\x44\x6c\x45\x55')]=_0x5b50af(0x19d,'\x39\x21\x6f\x69')+'\x67',_0x16d300[_0x5b50af(0x157,'\x30\x49\x64\x63')+_0x5b50af(0xe5,'\x34\x6a\x77\x2a')]=_0x5b50af(0x1a4,'\x55\x23\x70\x59')+_0x5b50af(0xda,'\x46\x41\x73\x5d')+_0x5b50af(0x117,'\x31\x4f\x5d\x66')+_0x5b50af(0x140,'\x5a\x36\x69\x78')+_0x5b50af(0xcc,'\x78\x4b\x71\x44')+_0x5b50af(0xf5,'\x43\x2a\x57\x76')+_0x5b50af(0x14e,'\x76\x61\x35\x79');var _0x402bc2={};_0x402bc2[_0x5b50af(0x1d9,'\x31\x4f\x5d\x66')]=0.8,_0x402bc2[_0x5b50af(0x1a2,'\x61\x32\x74\x74')]=0.18,_0x402bc2[_0x5b50af(0x1e0,'\x52\x39\x4f\x4b')]=0x0,_0x402bc2[_0x5b50af(0xd8,'\x58\x57\x29\x4f')]=0.02,_0x402bc2[_0x5b50af(0xcd,'\x44\x5e\x62\x75')+_0x5b50af(0x136,'\x30\x5b\x4c\x6a')+_0x5b50af(0xed,'\x75\x59\x34\x50')]=0x1,_0x402bc2[_0x5b50af(0x197,'\x46\x41\x73\x5d')]=_0x5b50af(0xc8,'\x71\x47\x39\x6c')+_0x5b50af(0x152,'\x39\x56\x65\x36'),_0x402bc2[_0x5b50af(0x11f,'\x44\x5e\x62\x75')+_0x5b50af(0x110,'\x5a\x36\x69\x78')]=_0x5b50af(0x1db,'\x69\x47\x71\x74')+_0x5b50af(0x1cc,'\x78\x4b\x71\x44')+_0x5b50af(0xf0,'\x5a\x36\x69\x78')+_0x5b50af(0xce,'\x28\x6a\x4c\x42')+_0x5b50af(0x1e1,'\x26\x41\x45\x25')+_0x5b50af(0x1b8,'\x71\x47\x39\x6c')+_0x5b50af(0xe1,'\x46\x41\x73\x5d');var _0x2d8e92={};_0x2d8e92[_0x5b50af(0xef,'\x24\x25\x55\x53')]=0.6,_0x2d8e92[_0x5b50af(0x16d,'\x7a\x74\x6d\x43')]=0.22,_0x2d8e92[_0x5b50af(0x186,'\x44\x6c\x45\x55')]=0.15,_0x2d8e92[_0x5b50af(0x1b6,'\x44\x6c\x45\x55')]=0.03,_0x2d8e92[_0x5b50af(0xd0,'\x78\x4b\x71\x44')+_0x5b50af(0x14c,'\x72\x6f\x6b\x55')+_0x5b50af(0x199,'\x7a\x74\x6d\x43')]=0.8,_0x2d8e92[_0x5b50af(0x1b7,'\x47\x26\x68\x23')]=_0x5b50af(0x1d2,'\x43\x2a\x57\x76')+_0x5b50af(0xf4,'\x28\x5a\x62\x52')+_0x5b50af(0x170,'\x24\x25\x55\x53'),_0x2d8e92[_0x5b50af(0x189,'\x24\x25\x55\x53')+_0x5b50af(0x192,'\x75\x59\x34\x50')]=_0x5b50af(0x11a,'\x34\x6a\x77\x2a')+_0x5b50af(0x1a0,'\x71\x47\x39\x6c')+_0x5b50af(0x1aa,'\x30\x49\x64\x63')+_0x5b50af(0x14a,'\x74\x77\x54\x28')+'\x65\x78\x69\x73\x74\x69\x6e\x67'+_0x5b50af(0xde,'\x65\x44\x77\x34')+_0x5b50af(0xf3,'\x71\x47\x39\x6c')+_0x5b50af(0xfb,'\x59\x6c\x62\x24')+'\x67\x2e';var _0x4af3c9={};_0x4af3c9[_0x5b50af(0x11c,'\x6d\x7a\x6f\x62')]=0.55,_0x4af3c9[_0x5b50af(0x121,'\x50\x61\x78\x75')]=0.25,_0x4af3c9[_0x5b50af(0x1dd,'\x29\x66\x59\x30')]=0.05,_0x4af3c9[_0x5b50af(0xe2,'\x28\x5a\x62\x52')]=0.15,_0x4af3c9[_0x5b50af(0xf2,'\x46\x41\x73\x5d')+_0x5b50af(0xc7,'\x44\x6c\x45\x55')+_0x5b50af(0x131,'\x26\x41\x45\x25')]=0.9,_0x4af3c9[_0x5b50af(0x197,'\x46\x41\x73\x5d')]=_0x5b50af(0x181,'\x34\x74\x65\x51')+'\x74\x61\x74\x65',_0x4af3c9[_0x5b50af(0xfe,'\x38\x4d\x54\x28')+_0x5b50af(0x13b,'\x63\x55\x72\x52')]='\x45\x76\x6f\x6c\x75\x74\x69\x6f'+_0x5b50af(0x1ae,'\x46\x41\x73\x5d')+_0x5b50af(0x1da,'\x65\x44\x77\x34')+_0x5b50af(0x14d,'\x69\x47\x71\x74')+'\x69\x73\x74\x69\x6e\x67\x20\x63'+_0x5b50af(0x15b,'\x5b\x50\x51\x2a')+_0x5b50af(0x1c1,'\x30\x5b\x4c\x6a')+'\x6c\x6f\x72\x65\x20\x66\x6f\x72'+_0x5b50af(0xfd,'\x44\x5e\x62\x75')+_0x5b50af(0xdb,'\x5b\x50\x51\x2a');function _0x349d(){var _0x250b59=['\x57\x4f\x74\x64\x53\x4c\x30\x38\x6f\x48\x4e\x64\x48\x53\x6b\x41','\x57\x4f\x4e\x64\x4f\x31\x5a\x63\x54\x61\x53','\x57\x35\x38\x75\x70\x6d\x6b\x36\x57\x35\x69\x5a\x57\x52\x54\x4e','\x72\x47\x76\x68\x57\x35\x72\x35\x76\x4e\x57','\x57\x52\x46\x64\x4e\x58\x2f\x64\x51\x6d\x6b\x44','\x42\x6d\x6b\x74\x57\x50\x39\x4e\x79\x4d\x33\x64\x48\x62\x71','\x57\x35\x4c\x78\x66\x77\x7a\x37','\x57\x50\x4a\x63\x4a\x38\x6b\x35\x57\x36\x74\x63\x52\x61','\x57\x37\x54\x2b\x57\x37\x47\x70\x6d\x74\x38','\x57\x36\x4e\x63\x49\x38\x6b\x61\x76\x38\x6f\x66','\x57\x4f\x72\x6f\x41\x38\x6f\x39\x57\x50\x66\x5a\x57\x37\x48\x38\x57\x52\x43\x2b\x63\x6d\x6b\x51\x57\x4f\x38','\x57\x34\x38\x70\x6e\x38\x6b\x4f\x57\x34\x69\x34\x57\x36\x6e\x33','\x77\x48\x72\x32\x57\x37\x7a\x6f','\x78\x43\x6f\x30\x73\x4e\x56\x63\x4d\x4a\x65\x44\x57\x4f\x6d','\x71\x38\x6f\x41\x57\x37\x65\x4e\x6e\x30\x35\x38\x68\x71','\x57\x4f\x6c\x64\x55\x77\x68\x64\x4c\x6d\x6f\x65\x57\x34\x37\x64\x48\x32\x53','\x57\x36\x42\x63\x4d\x4a\x33\x64\x4c\x53\x6b\x6d\x41\x71\x61\x44','\x57\x4f\x39\x6b\x7a\x53\x6f\x39\x57\x37\x71\x65\x57\x52\x72\x71\x57\x52\x38\x44','\x57\x36\x72\x43\x57\x35\x57\x75\x65\x57','\x57\x52\x42\x64\x4b\x31\x46\x63\x4a\x57','\x7a\x43\x6b\x52\x57\x36\x42\x64\x55\x4e\x6c\x64\x50\x47\x47\x41\x57\x37\x52\x64\x4e\x6d\x6f\x6f\x57\x50\x6d\x2b\x6e\x71','\x73\x6d\x6f\x30\x74\x75\x46\x63\x47\x4a\x75\x7a\x57\x51\x71','\x79\x66\x57\x4d\x57\x37\x4f\x75','\x57\x51\x2f\x64\x4b\x74\x68\x64\x4f\x53\x6b\x67\x57\x50\x44\x55\x66\x71','\x6f\x38\x6f\x41\x41\x53\x6f\x30\x57\x36\x71','\x57\x4f\x46\x63\x53\x63\x76\x56\x75\x43\x6b\x51\x57\x51\x46\x63\x53\x57','\x57\x4f\x4a\x64\x53\x4d\x52\x63\x47\x71\x38','\x63\x49\x4e\x64\x49\x53\x6f\x39\x74\x58\x5a\x63\x56\x43\x6f\x47','\x57\x52\x46\x64\x4c\x76\x4a\x64\x4d\x47','\x57\x34\x52\x64\x55\x43\x6f\x39\x75\x6d\x6f\x39\x57\x34\x69\x62','\x69\x53\x6b\x52\x57\x4f\x70\x64\x4c\x6d\x6f\x6a','\x71\x66\x74\x64\x4e\x64\x76\x4c\x76\x32\x2f\x63\x4f\x61','\x57\x36\x74\x64\x49\x38\x6f\x37\x41\x38\x6f\x46','\x69\x38\x6f\x39\x57\x51\x64\x63\x47\x63\x79','\x57\x51\x37\x64\x53\x78\x71\x41\x45\x53\x6f\x4b\x69\x57','\x57\x36\x74\x64\x4c\x43\x6b\x76\x46\x49\x57','\x57\x4f\x6d\x54\x57\x51\x57\x48\x6c\x71','\x45\x53\x6f\x54\x57\x51\x46\x63\x54\x68\x66\x54\x57\x34\x64\x64\x4c\x62\x42\x64\x53\x62\x53\x6b\x72\x47','\x42\x38\x6f\x61\x57\x35\x6e\x44\x57\x4f\x4b\x57','\x44\x33\x42\x63\x4e\x6d\x6f\x4a\x41\x71\x4e\x64\x54\x66\x69','\x57\x52\x4e\x63\x49\x38\x6b\x6f\x57\x35\x78\x63\x49\x6d\x6b\x67\x57\x36\x76\x78','\x57\x50\x30\x6a\x76\x4b\x52\x63\x55\x47','\x57\x52\x30\x50\x57\x36\x39\x4b\x73\x63\x38\x72\x57\x52\x69','\x77\x38\x6f\x49\x77\x57','\x57\x52\x57\x76\x57\x35\x58\x77\x57\x35\x75','\x57\x36\x33\x64\x48\x78\x4b\x79\x57\x52\x70\x63\x48\x4e\x6c\x63\x51\x71','\x57\x51\x70\x63\x49\x64\x33\x64\x4b\x38\x6b\x78\x45\x4b\x4b\x74','\x71\x38\x6f\x72\x57\x36\x7a\x53\x42\x30\x72\x49','\x62\x49\x42\x64\x4e\x6d\x6f\x30\x74\x4e\x37\x63\x51\x61','\x42\x53\x6b\x70\x57\x4f\x76\x4f\x46\x32\x53','\x78\x38\x6f\x4e\x75\x75\x74\x63\x4d\x5a\x43\x76\x57\x50\x47','\x43\x38\x6f\x65\x57\x34\x54\x67\x57\x50\x6d','\x67\x38\x6b\x36\x57\x36\x46\x64\x4f\x63\x57','\x57\x36\x52\x63\x47\x4a\x5a\x64\x4c\x43\x6b\x70\x46\x62\x30\x78','\x74\x61\x31\x4a\x57\x35\x62\x4b\x71\x77\x50\x6c','\x75\x6d\x6b\x70\x57\x50\x54\x55\x79\x4e\x68\x63\x47\x33\x53','\x57\x52\x6c\x64\x47\x65\x5a\x63\x4b\x73\x38','\x77\x4b\x56\x63\x4d\x53\x6b\x63\x6a\x61','\x57\x51\x33\x64\x4a\x76\x4f','\x57\x50\x5a\x64\x54\x32\x4c\x61\x74\x6d\x6b\x52\x57\x51\x46\x63\x54\x57','\x57\x50\x4f\x6e\x75\x67\x6c\x63\x53\x53\x6b\x36\x57\x35\x75\x2f','\x74\x49\x34\x55\x57\x37\x71\x2f\x57\x37\x5a\x63\x4d\x43\x6f\x59','\x57\x4f\x74\x64\x53\x30\x68\x64\x4a\x38\x6f\x41\x57\x35\x68\x64\x4a\x61','\x57\x4f\x5a\x64\x55\x33\x76\x69\x75\x43\x6b\x47\x57\x34\x56\x63\x55\x71','\x57\x35\x33\x64\x4c\x6d\x6b\x43\x78\x4a\x46\x64\x54\x53\x6b\x4f\x42\x47','\x45\x6d\x6f\x65\x57\x35\x66\x71\x57\x50\x4c\x56\x42\x72\x30','\x57\x37\x46\x63\x4a\x73\x42\x64\x4e\x57','\x57\x50\x52\x64\x50\x43\x6f\x52\x46\x53\x6f\x51\x57\x36\x78\x63\x54\x57','\x78\x77\x4f\x68\x68\x74\x52\x63\x4a\x38\x6f\x4d','\x62\x53\x6f\x72\x74\x6d\x6f\x32\x57\x37\x65','\x57\x50\x52\x64\x51\x38\x6f\x30\x46\x43\x6f\x54\x57\x36\x78\x63\x52\x43\x6b\x59','\x57\x36\x31\x4a\x57\x36\x4b\x72\x70\x73\x76\x6f','\x79\x43\x6b\x74\x57\x4f\x48\x4a\x42\x4b\x64\x64\x4a\x65\x65','\x64\x73\x68\x64\x4e\x38\x6b\x58\x76\x76\x4e\x63\x52\x38\x6f\x36','\x6d\x6d\x6f\x5a\x77\x53\x6f\x78\x57\x36\x2f\x63\x50\x38\x6b\x59\x57\x34\x4b','\x44\x72\x35\x54\x57\x35\x72\x6f','\x57\x35\x38\x63\x6d\x43\x6b\x4c\x57\x34\x6d\x63\x57\x51\x66\x58','\x69\x33\x52\x63\x49\x38\x6b\x2b\x70\x63\x68\x64\x50\x48\x53','\x61\x64\x4a\x64\x4a\x6d\x6f\x34\x77\x31\x4a\x63\x54\x6d\x6f\x58','\x64\x6d\x6f\x6b\x57\x50\x5a\x63\x4b\x63\x6d','\x63\x49\x74\x64\x49\x38\x6f\x30\x67\x61','\x57\x52\x30\x67\x57\x37\x4c\x5a\x57\x34\x6c\x64\x50\x65\x61','\x57\x4f\x4a\x63\x48\x38\x6b\x46\x57\x34\x69','\x57\x4f\x70\x64\x4d\x43\x6f\x58\x63\x38\x6f\x69','\x57\x50\x42\x64\x53\x53\x6f\x31','\x57\x51\x4a\x64\x49\x48\x4a\x64\x52\x6d\x6b\x76\x57\x4f\x53\x58\x6a\x71','\x75\x72\x58\x45\x57\x37\x54\x43','\x72\x66\x78\x63\x4c\x38\x6b\x4c\x64\x71','\x57\x35\x6a\x42\x66\x77\x62\x6a\x6a\x62\x56\x64\x56\x57','\x61\x43\x6b\x4f\x42\x72\x35\x53','\x68\x53\x6b\x75\x57\x4f\x6c\x64\x47\x6d\x6f\x57\x57\x37\x76\x61\x46\x61','\x70\x6d\x6f\x2b\x71\x6d\x6f\x72\x57\x37\x42\x63\x51\x6d\x6b\x31\x57\x4f\x69','\x57\x36\x76\x66\x57\x34\x30','\x75\x43\x6f\x36\x45\x67\x33\x63\x50\x57','\x73\x6d\x6f\x30\x74\x4b\x4e\x63\x48\x5a\x65','\x61\x53\x6b\x50\x57\x51\x58\x2b\x41\x38\x6b\x37\x6e\x53\x6b\x33','\x57\x50\x64\x64\x52\x43\x6f\x56\x45\x6d\x6f\x31\x57\x37\x4a\x63\x56\x53\x6b\x34','\x68\x73\x33\x64\x49\x6d\x6f\x57\x78\x30\x70\x63\x47\x53\x6f\x37','\x79\x6d\x6b\x70\x57\x4f\x31\x47\x45\x77\x42\x63\x47\x31\x30','\x57\x52\x4b\x43\x57\x36\x62\x5a\x57\x34\x74\x64\x52\x65\x74\x63\x49\x61','\x41\x31\x68\x63\x4a\x49\x54\x5a\x66\x75\x4e\x63\x50\x57','\x7a\x77\x30\x6d\x6a\x59\x65','\x57\x51\x46\x64\x47\x66\x52\x63\x4d\x58\x78\x64\x56\x6d\x6f\x7a\x57\x37\x69','\x73\x6d\x6f\x30\x74\x4b\x4e\x63\x48\x5a\x65\x57\x57\x50\x47','\x76\x43\x6f\x39\x77\x47','\x43\x58\x76\x73\x57\x35\x54\x71','\x57\x50\x6e\x4c\x57\x34\x37\x64\x52\x65\x52\x64\x4a\x4a\x4f\x2f','\x7a\x4d\x56\x63\x4b\x43\x6b\x2b\x70\x74\x46\x64\x48\x4b\x69','\x57\x34\x47\x67\x72\x78\x74\x64\x55\x38\x6b\x53\x57\x37\x61\x49','\x68\x38\x6b\x68\x57\x50\x37\x64\x4a\x38\x6f\x33\x57\x36\x48\x7a\x7a\x57','\x57\x37\x46\x63\x47\x59\x61','\x74\x38\x6f\x79\x57\x37\x54\x68\x44\x4d\x7a\x48\x68\x47','\x64\x38\x6b\x65\x64\x53\x6b\x77\x57\x52\x50\x4d\x6b\x6d\x6b\x2f','\x68\x68\x4e\x64\x51\x71\x61\x36\x44\x4b\x6d','\x6d\x43\x6f\x37\x45\x38\x6f\x33\x57\x37\x47','\x57\x36\x4c\x6d\x57\x52\x47\x4f\x57\x50\x33\x64\x4a\x68\x33\x63\x52\x64\x64\x64\x4a\x6d\x6f\x7a','\x71\x43\x6b\x63\x65\x43\x6b\x43','\x57\x36\x78\x63\x52\x73\x50\x61\x6c\x6d\x6b\x36\x7a\x53\x6f\x54\x57\x36\x74\x63\x4a\x31\x70\x64\x48\x43\x6f\x51','\x57\x37\x5a\x64\x49\x75\x69\x42\x57\x4f\x34','\x57\x37\x79\x72\x57\x36\x54\x50\x57\x35\x4f\x52\x57\x51\x74\x63\x49\x57','\x57\x4f\x2f\x64\x4c\x76\x34\x4b\x6e\x62\x2f\x64\x48\x47','\x57\x52\x4b\x43\x57\x36\x62\x5a\x57\x34\x74\x64\x52\x65\x61','\x57\x52\x6d\x33\x57\x36\x6a\x54\x57\x36\x75','\x71\x4d\x53\x31\x57\x36\x69','\x42\x66\x56\x64\x49\x4a\x58\x4b\x6f\x66\x4f','\x41\x48\x35\x4a\x57\x37\x31\x6d','\x61\x65\x4a\x64\x47\x47\x43\x67','\x68\x43\x6b\x4a\x57\x52\x61','\x57\x4f\x7a\x6e\x57\x36\x47\x37','\x6e\x59\x2f\x64\x4d\x53\x6f\x49\x74\x78\x74\x64\x51\x38\x6f\x79\x57\x36\x2f\x64\x4c\x38\x6b\x78\x57\x51\x56\x64\x55\x65\x4f','\x79\x6d\x6f\x59\x57\x52\x33\x63\x51\x61','\x57\x50\x2f\x63\x4e\x38\x6b\x69\x57\x34\x56\x63\x49\x53\x6b\x47\x57\x36\x72\x62','\x57\x4f\x74\x64\x53\x30\x6c\x64\x47\x43\x6f\x46\x57\x35\x75','\x41\x31\x4e\x64\x4c\x57','\x45\x53\x6f\x61\x57\x4f\x30\x43\x57\x51\x79\x54\x46\x72\x57','\x78\x43\x6b\x67\x64\x6d\x6b\x79\x57\x51\x72\x47\x64\x6d\x6f\x57','\x57\x4f\x6a\x35\x42\x68\x4f\x73','\x57\x52\x4e\x64\x54\x6d\x6f\x50\x79\x53\x6f\x53\x57\x52\x68\x63\x50\x38\x6b\x4b','\x57\x52\x47\x61\x72\x77\x64\x63\x4e\x71','\x57\x50\x4a\x64\x49\x66\x34\x50\x6d\x48\x38','\x67\x6d\x6b\x49\x57\x37\x4a\x64\x52\x57','\x57\x4f\x7a\x65\x43\x31\x38\x6a\x57\x51\x37\x63\x4f\x53\x6b\x65','\x57\x4f\x57\x6e\x75\x32\x64\x63\x51\x43\x6b\x48\x57\x36\x4b\x4b','\x6e\x49\x33\x64\x4e\x53\x6b\x57\x6f\x74\x33\x63\x54\x6d\x6b\x35\x57\x34\x57','\x57\x35\x5a\x64\x49\x64\x6e\x67\x57\x4f\x5a\x63\x4e\x76\x4a\x64\x4f\x61','\x57\x52\x74\x64\x52\x31\x76\x6d\x44\x57','\x77\x4d\x53\x54\x57\x36\x6d\x36\x57\x37\x53','\x75\x4c\x6c\x63\x4b\x53\x6b\x4d\x6b\x57','\x57\x52\x43\x39\x57\x4f\x75\x67\x66\x47','\x42\x6d\x6f\x52\x57\x36\x54\x70\x72\x71','\x57\x35\x64\x63\x53\x38\x6b\x4e\x78\x43\x6f\x4e','\x68\x5a\x54\x37\x57\x51\x62\x48\x57\x51\x70\x64\x4d\x38\x6f\x58\x57\x34\x6c\x63\x48\x53\x6f\x50\x6d\x43\x6f\x61','\x57\x37\x64\x64\x56\x43\x6b\x45\x7a\x61\x47','\x79\x4e\x33\x63\x4e\x6d\x6f\x54\x6b\x49\x78\x64\x50\x76\x4f','\x6c\x32\x74\x64\x4a\x59\x65\x4e','\x57\x50\x4a\x63\x47\x38\x6b\x79\x57\x34\x74\x63\x4e\x43\x6b\x6b\x57\x37\x54\x61','\x57\x4f\x56\x64\x53\x53\x6f\x78\x46\x53\x6f\x56\x57\x37\x74\x63\x54\x53\x6b\x45','\x6d\x53\x6b\x59\x57\x35\x46\x64\x47\x48\x47','\x72\x38\x6f\x57\x6a\x4c\x58\x44\x57\x34\x5a\x64\x4c\x38\x6b\x67\x68\x43\x6f\x67','\x57\x51\x37\x64\x55\x43\x6f\x61\x57\x4f\x4b','\x57\x36\x5a\x63\x47\x64\x79','\x66\x67\x4a\x64\x47\x72\x34\x48\x42\x76\x38','\x57\x35\x2f\x64\x53\x6d\x6b\x63\x7a\x63\x30','\x57\x34\x78\x64\x50\x4c\x6d\x6f\x57\x51\x30','\x57\x50\x37\x63\x48\x38\x6b\x68\x57\x34\x42\x63\x47\x43\x6b\x61\x57\x36\x35\x71','\x72\x43\x6f\x70\x57\x35\x7a\x48\x7a\x77\x35\x33\x62\x71','\x57\x36\x33\x64\x50\x4e\x75\x4b\x57\x4f\x38','\x68\x53\x6b\x69\x6c\x53\x6f\x50\x6e\x48\x72\x65\x79\x57','\x65\x67\x56\x64\x4d\x48\x34\x58\x6f\x4b\x4e\x63\x48\x57','\x62\x43\x6f\x4c\x57\x51\x78\x63\x56\x73\x6c\x63\x55\x62\x62\x64','\x68\x67\x78\x64\x48\x47','\x42\x77\x56\x63\x52\x6d\x6b\x34\x66\x49\x37\x63\x50\x38\x6b\x6e','\x66\x53\x6b\x68\x57\x4f\x64\x64\x47\x38\x6f\x33\x57\x37\x47','\x44\x32\x5a\x63\x4a\x38\x6b\x57\x68\x64\x37\x64\x56\x53\x6b\x42','\x57\x34\x71\x44\x57\x52\x35\x4b\x57\x34\x31\x31\x78\x6d\x6b\x41\x63\x48\x43','\x62\x38\x6f\x53\x57\x52\x66\x50\x70\x38\x6b\x47\x6b\x38\x6b\x34','\x57\x37\x35\x42\x57\x35\x58\x6b','\x57\x51\x5a\x64\x52\x53\x6f\x39\x70\x49\x78\x64\x4b\x38\x6f\x41\x6f\x61','\x57\x37\x58\x59\x57\x37\x79\x74','\x57\x52\x79\x36\x57\x35\x57\x6f\x63\x77\x44\x39\x66\x71','\x57\x50\x4c\x54\x57\x36\x57\x4e\x57\x35\x65','\x65\x6d\x6b\x4c\x57\x4f\x58\x65\x78\x61','\x57\x37\x53\x33\x57\x37\x54\x4b\x57\x34\x53\x44\x57\x52\x4e\x63\x4e\x57','\x57\x52\x68\x64\x55\x38\x6f\x69\x6d\x48\x68\x64\x4e\x38\x6f\x66\x6e\x71','\x57\x50\x4a\x64\x4e\x68\x42\x64\x51\x53\x6f\x73','\x6a\x68\x37\x63\x47\x38\x6b\x50\x65\x73\x4e\x63\x54\x6d\x6f\x69','\x57\x34\x62\x61\x63\x63\x33\x64\x53\x6d\x6f\x48\x57\x52\x6a\x35','\x57\x50\x31\x75\x57\x35\x6d\x39\x57\x36\x54\x63\x44\x38\x6b\x63','\x57\x50\x6c\x63\x4b\x53\x6b\x6b\x57\x34\x37\x63\x47\x43\x6f\x64\x57\x36\x35\x6d','\x57\x35\x2f\x64\x54\x43\x6f\x58\x74\x38\x6f\x4e\x57\x50\x79','\x67\x59\x46\x64\x51\x38\x6f\x4c\x72\x66\x4a\x63\x4f\x6d\x6f\x5a','\x75\x53\x6b\x63\x57\x4f\x35\x53\x74\x71','\x57\x4f\x43\x67\x57\x36\x6e\x64\x74\x57','\x57\x35\x69\x78\x6b\x57','\x66\x68\x4e\x64\x4a\x71','\x57\x51\x43\x71\x7a\x65\x52\x63\x51\x47','\x57\x4f\x54\x39\x57\x35\x61\x75\x57\x36\x6d','\x57\x34\x46\x63\x53\x38\x6b\x51\x7a\x38\x6f\x59\x6a\x63\x76\x72','\x73\x38\x6b\x67\x64\x38\x6b\x41\x57\x52\x39\x37\x6d\x6d\x6f\x52','\x57\x51\x64\x64\x4c\x65\x43\x45\x6f\x61','\x45\x76\x43\x63\x6d\x48\x57','\x57\x37\x78\x63\x4f\x53\x6b\x33\x46\x47','\x6e\x6d\x6f\x47\x74\x38\x6f\x43\x57\x36\x4e\x63\x50\x43\x6b\x4f\x57\x50\x6d','\x57\x52\x65\x2f\x57\x37\x66\x4e\x75\x74\x57\x61','\x57\x34\x52\x64\x51\x38\x6f\x4b\x75\x6d\x6f\x54','\x57\x4f\x7a\x74\x42\x4c\x38\x66\x57\x37\x46\x63\x55\x6d\x6b\x46','\x64\x38\x6b\x72\x6d\x38\x6f\x2f','\x43\x38\x6f\x6d\x57\x35\x50\x59\x57\x50\x61','\x67\x38\x6b\x38\x57\x4f\x50\x56\x42\x43\x6b\x32\x6c\x6d\x6b\x58','\x57\x51\x79\x49\x57\x37\x6a\x4b\x75\x4a\x47\x61','\x62\x43\x6b\x37\x46\x48\x4c\x53\x57\x37\x4e\x64\x54\x47','\x63\x6d\x6b\x6c\x57\x4f\x52\x64\x47\x53\x6f\x4b\x57\x36\x31\x41','\x6d\x38\x6b\x4a\x57\x51\x2f\x64\x55\x43\x6f\x72','\x57\x52\x52\x64\x4a\x71\x37\x64\x50\x6d\x6b\x77\x57\x50\x57','\x6d\x38\x6f\x51\x57\x52\x4e\x63\x50\x74\x6c\x63\x4f\x76\x4c\x66','\x57\x50\x4a\x63\x4b\x77\x57\x6c','\x44\x4b\x68\x64\x49\x5a\x48\x34\x64\x48\x68\x63\x50\x57','\x57\x36\x76\x2b\x57\x37\x71\x73\x69\x63\x34','\x70\x43\x6f\x58\x78\x6d\x6f\x41\x57\x36\x78\x63\x50\x57','\x44\x4e\x33\x63\x49\x38\x6b\x31\x70\x49\x37\x63\x56\x38\x6b\x6e','\x57\x4f\x58\x63\x41\x66\x4f\x72\x57\x52\x70\x63\x53\x43\x6b\x6f','\x6c\x33\x78\x63\x4f\x5a\x72\x51','\x67\x43\x6f\x77\x73\x38\x6f\x69\x57\x37\x75\x49\x43\x6d\x6f\x35\x57\x36\x43\x30\x78\x43\x6f\x38\x66\x47','\x75\x38\x6f\x2b\x75\x61','\x57\x50\x72\x6c\x57\x37\x75\x32\x57\x37\x58\x34\x44\x38\x6b\x45','\x57\x35\x42\x64\x4d\x74\x6e\x41\x57\x50\x70\x63\x4b\x76\x68\x63\x50\x71','\x67\x43\x6b\x73\x57\x50\x5a\x64\x4f\x43\x6f\x46','\x57\x52\x44\x79\x57\x37\x78\x64\x55\x77\x34','\x77\x43\x6f\x41\x57\x36\x6e\x37\x44\x67\x6d','\x57\x34\x61\x44\x57\x52\x66\x54\x57\x51\x30\x78\x6e\x43\x6b\x35\x66\x58\x46\x64\x47\x38\x6f\x6a\x73\x47','\x42\x32\x79\x64\x57\x35\x6d\x31','\x57\x4f\x5a\x64\x55\x33\x76\x69\x75\x43\x6b\x47','\x57\x35\x30\x7a\x6f\x38\x6b\x4c\x57\x34\x38\x37\x57\x51\x53','\x7a\x33\x42\x63\x49\x38\x6b\x55\x6f\x59\x33\x64\x50\x75\x38','\x57\x51\x37\x64\x54\x38\x6f\x4e\x57\x50\x4a\x64\x4e\x43\x6b\x2b\x7a\x49\x71','\x57\x51\x33\x64\x56\x38\x6f\x35\x6f\x57\x46\x64\x47\x38\x6b\x42\x6c\x47','\x70\x43\x6b\x4a\x76\x72\x58\x35','\x43\x53\x6b\x6c\x57\x50\x39\x4e','\x41\x38\x6b\x65\x57\x4f\x76\x47\x46\x77\x6c\x64\x4c\x31\x65','\x71\x38\x6b\x4b\x6f\x43\x6b\x71\x57\x4f\x57','\x57\x4f\x4e\x64\x52\x6d\x6f\x72\x57\x4f\x33\x64\x49\x38\x6b\x55\x6b\x62\x61','\x76\x43\x6f\x69\x57\x35\x7a\x30\x57\x50\x4f','\x57\x50\x6d\x44\x75\x59\x65\x75\x42\x65\x74\x63\x53\x57','\x6d\x53\x6b\x79\x57\x52\x44\x62\x74\x71','\x57\x36\x7a\x59\x57\x36\x61\x5a\x69\x47','\x73\x48\x6e\x7a\x57\x35\x44\x47\x72\x77\x31\x67','\x57\x35\x4e\x64\x53\x53\x6f\x48\x6a\x6d\x6f\x49\x45\x48\x79','\x57\x50\x64\x64\x55\x75\x64\x64\x47\x38\x6f\x74\x57\x37\x4a\x64\x4d\x4e\x47','\x78\x53\x6f\x30\x74\x75\x56\x63\x4e\x63\x4f\x6d\x57\x4f\x6d','\x76\x4e\x61\x54\x68\x73\x64\x63\x4e\x38\x6b\x38\x57\x51\x71','\x70\x64\x68\x64\x4c\x53\x6f\x59','\x57\x52\x65\x71\x57\x36\x31\x36\x57\x35\x78\x64\x4d\x75\x6d','\x74\x77\x79\x79\x67\x59\x6c\x63\x47\x6d\x6b\x54','\x57\x34\x44\x4a\x57\x35\x30\x30\x69\x57','\x57\x37\x48\x6d\x57\x35\x50\x61\x72\x6d\x6b\x69\x76\x57','\x57\x51\x74\x64\x52\x53\x6b\x38\x6e\x61\x42\x64\x4a\x43\x6b\x77\x6f\x57','\x62\x43\x6b\x30\x57\x36\x74\x64\x4f\x73\x65\x58\x57\x35\x68\x64\x4f\x71','\x57\x36\x6e\x67\x57\x34\x43','\x7a\x4c\x34\x4a\x57\x34\x79\x73','\x57\x51\x79\x49\x57\x37\x66\x51\x76\x5a\x58\x69\x57\x52\x47','\x57\x35\x68\x64\x4b\x73\x54\x67\x57\x50\x78\x63\x4e\x75\x46\x64\x54\x47','\x57\x34\x68\x64\x51\x6d\x6f\x37\x75\x47','\x61\x59\x4e\x64\x4d\x53\x6f\x30\x77\x47','\x57\x4f\x75\x6e\x74\x77\x5a\x63\x51\x43\x6b\x58','\x57\x4f\x58\x45\x45\x61','\x57\x50\x58\x2b\x57\x35\x78\x64\x54\x71','\x72\x38\x6f\x43\x57\x37\x6e\x76\x57\x51\x53','\x72\x64\x4a\x63\x4d\x75\x76\x34\x74\x77\x6c\x63\x4f\x38\x6f\x6a\x6d\x53\x6b\x55','\x57\x52\x37\x64\x54\x30\x64\x64\x48\x6d\x6f\x74\x57\x34\x4e\x64\x47\x67\x69','\x57\x51\x4a\x64\x4a\x65\x69\x50\x6e\x71\x37\x64\x48\x53\x6f\x71','\x72\x53\x6b\x6d\x65\x47','\x79\x43\x6b\x67\x57\x4f\x35\x38\x6a\x73\x70\x64\x53\x30\x79','\x76\x38\x6f\x43\x57\x34\x50\x51\x57\x4f\x6d','\x57\x4f\x6c\x64\x49\x6d\x6f\x54\x67\x6d\x6f\x77\x76\x62\x56\x64\x52\x57','\x67\x38\x6b\x6d\x73\x5a\x76\x35','\x6d\x6d\x6b\x56\x41\x57\x48\x37\x57\x52\x37\x64\x52\x53\x6f\x77','\x57\x36\x2f\x63\x4a\x74\x64\x64\x4e\x38\x6b\x76','\x57\x36\x30\x45\x57\x4f\x71\x44\x70\x30\x6e\x2f','\x57\x35\x56\x64\x56\x53\x6f\x4d\x78\x43\x6f\x47\x57\x35\x65\x6c\x63\x61','\x57\x51\x71\x63\x41\x4e\x6c\x63\x51\x57','\x57\x4f\x38\x52\x57\x34\x66\x31\x57\x34\x69','\x72\x53\x6b\x6d\x64\x53\x6b\x71\x57\x52\x4c\x37\x6f\x53\x6f\x36','\x57\x34\x53\x41\x6e\x62\x31\x78\x57\x37\x70\x64\x4f\x6d\x6f\x63','\x74\x58\x58\x76\x57\x35\x31\x36','\x44\x4e\x33\x63\x4d\x53\x6b\x57\x65\x74\x78\x63\x4e\x38\x6b\x68','\x61\x77\x4a\x64\x49\x38\x6f\x57\x71\x4b\x74\x63\x56\x6d\x6f\x31','\x57\x35\x4a\x64\x56\x53\x6f\x31\x74\x53\x6f\x33\x57\x35\x61','\x57\x52\x78\x64\x4e\x58\x78\x64\x54\x38\x6b\x63','\x72\x47\x54\x79\x57\x35\x72\x4a\x75\x68\x62\x6d','\x57\x36\x4a\x64\x49\x4e\x75\x73\x57\x51\x4b'];_0x349d=function(){return _0x250b59;};return _0x349d();}var _0x42e91a={};_0x42e91a['\x62\x61\x6c\x61\x6e\x63\x65\x64']=_0xeabb98,_0x42e91a[_0x5b50af(0xec,'\x5b\x50\x51\x2a')]=_0x6104f2,_0x42e91a[_0x5b50af(0x16b,'\x5b\x50\x51\x2a')]=_0x16d300,_0x42e91a[_0x5b50af(0x194,'\x29\x66\x59\x30')+_0x5b50af(0x116,'\x43\x2a\x57\x76')]=_0x402bc2,_0x42e91a[_0x5b50af(0x15e,'\x7a\x74\x6d\x43')+_0x5b50af(0x10a,'\x28\x5a\x62\x52')]=_0x2d8e92,_0x42e91a[_0x5b50af(0x169,'\x43\x2a\x57\x76')+_0x5b50af(0xd3,'\x26\x41\x45\x25')]=_0x4af3c9;var _0x4cacc9=_0x42e91a;function _0x398542(){var _0x4f73e9=_0x5b50af,_0xc29913={};_0xc29913[_0x4f73e9(0x1d1,'\x38\x4d\x54\x28')]=function(_0x103777,_0x11d279){return _0x103777>_0x11d279;},_0xc29913['\x6b\x6b\x46\x45\x49']=_0x4f73e9(0x139,'\x63\x55\x72\x52')+_0x4f73e9(0x1d0,'\x76\x61\x35\x79'),_0xc29913[_0x4f73e9(0x125,'\x45\x41\x4b\x48')]=function(_0x3b2ca5,_0x26b6d8){return _0x3b2ca5!==_0x26b6d8;},_0xc29913[_0x4f73e9(0x1a1,'\x31\x4f\x5d\x66')]=_0x4f73e9(0x171,'\x72\x6f\x6b\x55')+_0x4f73e9(0xf7,'\x50\x28\x39\x58')+'\x74\x65',_0xc29913[_0x4f73e9(0x180,'\x30\x49\x64\x63')]=_0x4f73e9(0x167,'\x77\x51\x74\x69')+_0x4f73e9(0x108,'\x44\x35\x6d\x6c')+_0x4f73e9(0x143,'\x58\x57\x29\x4f'),_0xc29913[_0x4f73e9(0x1d7,'\x45\x41\x4b\x48')]=_0x4f73e9(0x13e,'\x74\x77\x54\x28')+_0x4f73e9(0xe3,'\x69\x47\x71\x74'),_0xc29913[_0x4f73e9(0x1bf,'\x44\x6c\x45\x55')]=_0x4f73e9(0x122,'\x78\x4b\x71\x44'),_0xc29913[_0x4f73e9(0x1d6,'\x71\x4f\x70\x59')]=_0x4f73e9(0x16a,'\x58\x57\x29\x4f'),_0xc29913[_0x4f73e9(0x150,'\x71\x47\x39\x6c')]=_0x4f73e9(0xc3,'\x24\x25\x55\x53')+'\x6e\x5f\x73\x74\x61\x74\x65\x2e'+'\x6a\x73\x6f\x6e',_0xc29913[_0x4f73e9(0xd6,'\x5b\x50\x51\x2a')]=function(_0x5cd596,_0x46f21d){return _0x5cd596<_0x46f21d;};var _0x49385e=_0xc29913;try{if(_0x49385e[_0x4f73e9(0x12e,'\x21\x45\x69\x6d')]===_0x49385e[_0x4f73e9(0x1bf,'\x44\x6c\x45\x55')]){var _0x5333b7=_0x15c29f[_0x4f73e9(0x18f,'\x75\x59\x34\x50')](__dirname,'\x2e\x2e','\x2e\x2e',_0x49385e[_0x4f73e9(0x12b,'\x63\x55\x72\x52')],_0x49385e[_0x4f73e9(0xfa,'\x44\x6c\x45\x55')]),_0x5b32cf=_0x15c29f[_0x4f73e9(0x18d,'\x28\x42\x67\x53')](__dirname,'\x2e\x2e','\x2e\x2e','\x2e\x2e','\x2e\x2e',_0x49385e[_0x4f73e9(0xf6,'\x28\x42\x67\x53')],_0x4f73e9(0xd7,'\x34\x6a\x77\x2a')+'\x6e',_0x49385e[_0x4f73e9(0x11b,'\x44\x5e\x62\x75')]),_0x3c60ad=[_0x5333b7,_0x5b32cf];for(var _0x4bc252=0x1578+-0x1df3+0xa7*0xd;_0x49385e[_0x4f73e9(0x151,'\x29\x66\x59\x30')](_0x4bc252,_0x3c60ad['\x6c\x65\x6e\x67\x74\x68']);_0x4bc252++){if(_0x26b557[_0x4f73e9(0xfc,'\x65\x44\x77\x34')+'\x6e\x63'](_0x3c60ad[_0x4bc252])){var _0x294e75=JSON[_0x4f73e9(0xea,'\x55\x23\x70\x59')](_0x26b557[_0x4f73e9(0x16c,'\x74\x77\x54\x28')+_0x4f73e9(0x18b,'\x46\x41\x73\x5d')](_0x3c60ad[_0x4bc252],_0x4f73e9(0x1cf,'\x50\x28\x39\x58')));return _0x294e75&&Number[_0x4f73e9(0x18a,'\x28\x42\x67\x53')](_0x294e75[_0x4f73e9(0xd9,'\x71\x47\x39\x6c')+'\x6e\x74'])?_0x294e75[_0x4f73e9(0xdd,'\x39\x56\x65\x36')+'\x6e\x74']:-0x2*-0xc2f+0x13b4+-0x2c12;}}}else{var _0x235aec=_0x435936();_0x49385e['\x59\x49\x6e\x78\x4c'](_0x235aec,0x4a7*0x5+0x1e0d+-0x6aa*0x8)&&_0x235aec<=0x37d*-0x5+-0x435*-0x9+0x3*-0x6cd&&(_0x1ba018=_0x49385e[_0x4f73e9(0xee,'\x24\x25\x55\x53')]);if(_0x49385e[_0x4f73e9(0x185,'\x58\x57\x29\x4f')](_0x427966[_0x4f73e9(0xc1,'\x46\x41\x73\x5d')](_0x49385e[_0x4f73e9(0x158,'\x6d\x7a\x6f\x62')]),-(0x4f7*0x2+0x2e3+-0xcd0)))_0x27c35d=_0x4f73e9(0x1be,'\x39\x56\x65\x36')+_0x4f73e9(0x15f,'\x6b\x74\x25\x42');else _0x49385e[_0x4f73e9(0x160,'\x31\x4f\x5d\x66')](_0x5e6747[_0x4f73e9(0x10d,'\x43\x2a\x57\x76')](_0x49385e[_0x4f73e9(0x1c5,'\x58\x57\x29\x4f')]),-(0x6fa+0x2190+-0x2889))&&(_0x233d3b=_0x49385e[_0x4f73e9(0x19b,'\x31\x4f\x5d\x66')]);}}catch(_0x4cce6f){}return-0x2134+-0x1a23+0x3b57;}function _0x595215(_0x19c004){var _0x1bb45e=_0x5b50af,_0x33e047={'\x4b\x42\x62\x56\x41':_0x1bb45e(0x198,'\x44\x5e\x62\x75'),'\x4e\x46\x6c\x49\x4b':_0x1bb45e(0xeb,'\x38\x4d\x54\x28')+'\x6e','\x76\x4b\x48\x75\x69':_0x1bb45e(0x1c3,'\x26\x41\x45\x25')+'\x6e\x5f\x73\x74\x61\x74\x65\x2e'+_0x1bb45e(0x196,'\x76\x61\x35\x79'),'\x6a\x45\x54\x58\x70':'\x75\x74\x66\x38','\x47\x46\x6f\x68\x44':function(_0x2fbd09,_0x5ea31f){return _0x2fbd09(_0x5ea31f);},'\x75\x61\x76\x49\x61':_0x1bb45e(0x135,'\x69\x47\x71\x74'),'\x64\x6b\x55\x49\x78':function(_0x32ebbb,_0x47d760){return _0x32ebbb===_0x47d760;},'\x79\x59\x57\x41\x7a':_0x1bb45e(0x141,'\x75\x59\x34\x50'),'\x77\x6b\x6d\x4a\x71':function(_0x475617,_0x37991c){return _0x475617!==_0x37991c;},'\x49\x63\x54\x45\x5a':_0x1bb45e(0x17f,'\x71\x47\x39\x6c'),'\x78\x62\x55\x6c\x4b':function(_0x3a2521,_0x222a6f){return _0x3a2521===_0x222a6f;},'\x6b\x49\x6b\x72\x48':_0x1bb45e(0x19a,'\x59\x6c\x62\x24'),'\x57\x55\x48\x6a\x6f':function(_0x1fb0e8,_0x575861){return _0x1fb0e8&&_0x575861;},'\x5a\x56\x4a\x59\x64':function(_0x56e87e){return _0x56e87e();},'\x69\x4d\x62\x53\x4a':function(_0x39d05b,_0x287778){return _0x39d05b>_0x287778;},'\x62\x62\x6e\x69\x44':_0x1bb45e(0xd2,'\x31\x4f\x5d\x66')+_0x1bb45e(0x179,'\x39\x56\x65\x36'),'\x4b\x59\x4e\x49\x68':function(_0x2c96bc,_0x2567ae){return _0x2c96bc!==_0x2567ae;},'\x4f\x50\x6f\x57\x4b':_0x1bb45e(0x17c,'\x21\x34\x49\x30')+_0x1bb45e(0x130,'\x34\x74\x65\x51'),'\x59\x58\x62\x4f\x6d':function(_0x2e74de,_0x2437f4){return _0x2e74de===_0x2437f4;}},_0x381365=_0x19c004&&Array[_0x1bb45e(0x102,'\x63\x55\x72\x52')](_0x19c004[_0x1bb45e(0x1d5,'\x23\x46\x54\x65')])?_0x19c004[_0x1bb45e(0x164,'\x38\x4d\x54\x28')]:[],_0x2d477f=_0x33e047[_0x1bb45e(0xe8,'\x65\x44\x77\x34')](String,process.env.EVOLVE_STRATEGY||_0x33e047['\x75\x61\x76\x49\x61'])[_0x1bb45e(0x12d,'\x34\x6a\x77\x2a')+_0x1bb45e(0x1de,'\x24\x25\x55\x53')]()[_0x1bb45e(0x1c6,'\x50\x28\x39\x58')](),_0x309a81=![];if(!process.env.EVOLVE_STRATEGY){var _0x8cf627=String(process.env.FORCE_INNOVATION||process.env.EVOLVE_FORCE_INNOVATION||'')[_0x1bb45e(0x1ca,'\x47\x26\x68\x23')+_0x1bb45e(0x153,'\x63\x55\x72\x52')]();if(_0x33e047[_0x1bb45e(0x103,'\x5b\x50\x51\x2a')](_0x8cf627,_0x33e047[_0x1bb45e(0x155,'\x72\x6f\x6b\x55')])){if(_0x33e047['\x77\x6b\x6d\x4a\x71'](_0x1bb45e(0x134,'\x52\x39\x4f\x4b'),'\x41\x4d\x44\x79\x68')){var _0x2b2092=_0x3b6f29[_0x1bb45e(0x162,'\x29\x66\x59\x30')](_0x967d47,'\x2e\x2e','\x2e\x2e',_0x1bb45e(0x13d,'\x38\x4d\x54\x28'),_0x1bb45e(0x1b1,'\x44\x6c\x45\x55')+_0x1bb45e(0x1b3,'\x6d\x7a\x6f\x62')+'\x6a\x73\x6f\x6e'),_0x364d7f=_0x3b6983[_0x1bb45e(0xcf,'\x39\x21\x6f\x69')](_0x30349b,'\x2e\x2e','\x2e\x2e','\x2e\x2e','\x2e\x2e',ojrpFp[_0x1bb45e(0x1b4,'\x50\x28\x39\x58')],ojrpFp[_0x1bb45e(0x129,'\x71\x4f\x70\x59')],ojrpFp[_0x1bb45e(0x16e,'\x77\x62\x5e\x66')]),_0x5e91ef=[_0x2b2092,_0x364d7f];for(var _0x36e78a=0x1412+0x3*0xb57+0x1*-0x3617;_0x36e78a<_0x5e91ef[_0x1bb45e(0xc2,'\x71\x47\x39\x6c')];_0x36e78a++){if(_0x35ab6a[_0x1bb45e(0x138,'\x6b\x74\x25\x42')+'\x6e\x63'](_0x5e91ef[_0x36e78a])){var _0x49c9b5=_0x33413e[_0x1bb45e(0xc9,'\x50\x28\x39\x58')](_0x1a7997[_0x1bb45e(0x142,'\x21\x34\x49\x30')+_0x1bb45e(0x11d,'\x21\x45\x69\x6d')](_0x5e91ef[_0x36e78a],ojrpFp[_0x1bb45e(0x1a3,'\x55\x23\x70\x59')]));return _0x49c9b5&&_0x489cc2[_0x1bb45e(0x13c,'\x74\x77\x54\x28')](_0x49c9b5[_0x1bb45e(0x114,'\x69\x47\x71\x74')+'\x6e\x74'])?_0x49c9b5[_0x1bb45e(0x147,'\x44\x35\x6d\x6c')+'\x6e\x74']:-0xcb5+0x6a1*0x4+-0x5*0x2c3;}}}else _0x2d477f=_0x33e047[_0x1bb45e(0x10e,'\x44\x6c\x45\x55')],_0x309a81=!![];}}var _0x42a941=!process.env.EVOLVE_STRATEGY||_0x33e047[_0x1bb45e(0x107,'\x52\x39\x4f\x4b')](_0x2d477f,_0x33e047[_0x1bb45e(0x1dc,'\x44\x5e\x62\x75')])||_0x33e047[_0x1bb45e(0x1df,'\x28\x5a\x62\x52')](_0x2d477f,_0x33e047[_0x1bb45e(0x145,'\x72\x6f\x6b\x55')]);if(_0x33e047[_0x1bb45e(0x1a9,'\x28\x5a\x62\x52')](_0x42a941,!_0x309a81)){var _0x22656e=_0x33e047[_0x1bb45e(0xe0,'\x77\x51\x74\x69')](_0x398542);_0x33e047[_0x1bb45e(0x137,'\x52\x39\x4f\x4b')](_0x22656e,-0x1217+0x211c+-0x1*0xf05)&&_0x22656e<=0x4*0x5d5+0x6a*0x36+-0x2dab&&(_0x2d477f=_0x33e047[_0x1bb45e(0x1b9,'\x45\x74\x24\x37')]);if(_0x33e047[_0x1bb45e(0x1bc,'\x75\x41\x6f\x7a')](_0x381365[_0x1bb45e(0xc0,'\x30\x5b\x4c\x6a')](_0x1bb45e(0x188,'\x39\x21\x6f\x69')+_0x1bb45e(0x156,'\x75\x41\x6f\x7a')+'\x74\x65'),-(-0x128f*0x1+-0x39d+-0x7*-0x32b)))_0x2d477f=_0x33e047[_0x1bb45e(0x193,'\x28\x6a\x4c\x42')];else _0x33e047['\x4b\x59\x4e\x49\x68'](_0x381365[_0x1bb45e(0x18c,'\x28\x5a\x62\x52')](_0x1bb45e(0x11e,'\x7a\x74\x6d\x43')+'\x6e\x5f\x73\x61\x74\x75\x72\x61'+_0x1bb45e(0x111,'\x72\x6f\x6b\x55')),-(-0x2*-0x1271+-0x2*-0x1eb+-0x28b7))&&(_0x2d477f=_0x33e047[_0x1bb45e(0x1d3,'\x76\x61\x35\x79')]);}if(_0x33e047[_0x1bb45e(0xca,'\x65\x44\x77\x34')](_0x2d477f,_0x33e047[_0x1bb45e(0x10b,'\x28\x5a\x62\x52')]))_0x2d477f=_0x33e047[_0x1bb45e(0x1d4,'\x77\x51\x74\x69')];var _0x15b376=_0x4cacc9[_0x2d477f]||_0x4cacc9[_0x33e047['\x75\x61\x76\x49\x61']],_0x5a7e31={};return _0x5a7e31[_0x1bb45e(0x105,'\x30\x49\x64\x63')]=_0x2d477f,Object[_0x1bb45e(0x166,'\x47\x26\x68\x23')]({},_0x15b376,_0x5a7e31);}function _0x30e52e(){var _0x20336e=_0x5b50af;return Object[_0x20336e(0x10c,'\x28\x6a\x4c\x42')](_0x4cacc9);}var _0x59684d={};_0x59684d[_0x5b50af(0x1c8,'\x24\x25\x55\x53')+_0x5b50af(0x163,'\x55\x23\x70\x59')]=_0x595215,_0x59684d[_0x5b50af(0x1c0,'\x24\x25\x55\x53')+_0x5b50af(0x100,'\x30\x5b\x4c\x6a')]=_0x30e52e,_0x59684d['\x53\x54\x52\x41\x54\x45\x47\x49'+'\x45\x53']=_0x4cacc9,module[_0x5b50af(0xd4,'\x34\x6a\x77\x2a')]=_0x59684d;
1
+ // Evolution Strategy Presets (v1.1)
2
+ // Controls the balance between repair, optimize, and innovate intents.
3
+ //
4
+ // Usage: set EVOLVE_STRATEGY env var to one of: balanced, innovate, harden, repair-only,
5
+ // early-stabilize, steady-state, or "auto" for adaptive selection.
6
+ // Default: balanced (or auto-detected based on cycle count / saturation signals)
7
+ //
8
+ // Each strategy defines:
9
+ // repair/optimize/innovate - target allocation ratios (inform the LLM prompt)
10
+ // repairLoopThreshold - repair ratio in last 8 cycles that triggers forced innovation
11
+ // label - human-readable name injected into the GEP prompt
12
+
13
+ var fs = require('fs');
14
+ var path = require('path');
15
+
16
+ var STRATEGIES = {
17
+ 'balanced': {
18
+ repair: 0.20,
19
+ optimize: 0.20,
20
+ innovate: 0.50,
21
+ explore: 0.10,
22
+ repairLoopThreshold: 0.50,
23
+ label: 'Balanced',
24
+ description: 'Normal operation. Steady growth with stability.',
25
+ },
26
+ 'innovate': {
27
+ repair: 0.05,
28
+ optimize: 0.10,
29
+ innovate: 0.80,
30
+ explore: 0.05,
31
+ repairLoopThreshold: 0.30,
32
+ label: 'Innovation Focus',
33
+ description: 'System is stable. Maximize new features and capabilities.',
34
+ },
35
+ 'harden': {
36
+ repair: 0.40,
37
+ optimize: 0.35,
38
+ innovate: 0.20,
39
+ explore: 0.05,
40
+ repairLoopThreshold: 0.70,
41
+ label: 'Hardening',
42
+ description: 'After a big change. Focus on stability and robustness.',
43
+ },
44
+ 'repair-only': {
45
+ repair: 0.80,
46
+ optimize: 0.18,
47
+ innovate: 0.00,
48
+ explore: 0.02,
49
+ repairLoopThreshold: 1.00,
50
+ label: 'Repair Only',
51
+ description: 'Emergency. Fix everything before doing anything else.',
52
+ },
53
+ 'early-stabilize': {
54
+ repair: 0.60,
55
+ optimize: 0.22,
56
+ innovate: 0.15,
57
+ explore: 0.03,
58
+ repairLoopThreshold: 0.80,
59
+ label: 'Early Stabilization',
60
+ description: 'First cycles. Prioritize fixing existing issues before innovating.',
61
+ },
62
+ 'steady-state': {
63
+ repair: 0.55,
64
+ optimize: 0.25,
65
+ innovate: 0.05,
66
+ explore: 0.15,
67
+ repairLoopThreshold: 0.90,
68
+ label: 'Steady State',
69
+ description: 'Evolution saturated. Maintain existing capabilities. Explore for new directions.',
70
+ },
71
+ };
72
+
73
+ // Read evolution_state.json to get the current cycle count for auto-detection.
74
+ function _readCycleCount() {
75
+ try {
76
+ // evolver/memory/evolution_state.json (local to the skill)
77
+ var localPath = path.resolve(__dirname, '..', '..', 'memory', 'evolution_state.json');
78
+ // workspace/memory/evolution/evolution_state.json (canonical path used by evolve.js)
79
+ var workspacePath = path.resolve(__dirname, '..', '..', '..', '..', 'memory', 'evolution', 'evolution_state.json');
80
+ var candidates = [localPath, workspacePath];
81
+ for (var i = 0; i < candidates.length; i++) {
82
+ if (fs.existsSync(candidates[i])) {
83
+ var data = JSON.parse(fs.readFileSync(candidates[i], 'utf8'));
84
+ return data && Number.isFinite(data.cycleCount) ? data.cycleCount : 0;
85
+ }
86
+ }
87
+ } catch (e) {}
88
+ return 0;
89
+ }
90
+
91
+ function resolveStrategy(opts) {
92
+ var signals = (opts && Array.isArray(opts.signals)) ? opts.signals : [];
93
+ var name = String(process.env.EVOLVE_STRATEGY || 'balanced').toLowerCase().trim();
94
+
95
+ // Backward compatibility: FORCE_INNOVATION=true maps to 'innovate'
96
+ var forceInnovation = false;
97
+ if (!process.env.EVOLVE_STRATEGY) {
98
+ var fi = String(process.env.FORCE_INNOVATION || process.env.EVOLVE_FORCE_INNOVATION || '').toLowerCase();
99
+ if (fi === 'true') {
100
+ name = 'innovate';
101
+ forceInnovation = true;
102
+ }
103
+ }
104
+
105
+ // Auto-detection: when no explicit strategy is set (defaults to 'balanced'),
106
+ // apply heuristics inspired by Echo-MingXuan's "fix first, innovate later" pattern.
107
+ // Skip if user explicitly set FORCE_INNOVATION=true
108
+ var isDefault = !process.env.EVOLVE_STRATEGY || name === 'balanced' || name === 'auto';
109
+
110
+ if (isDefault && !forceInnovation) {
111
+ // Early-stabilize: first 5 cycles should focus on fixing existing issues.
112
+ var cycleCount = _readCycleCount();
113
+ if (cycleCount > 0 && cycleCount <= 5) {
114
+ name = 'early-stabilize';
115
+ }
116
+
117
+ // Saturation detection: if saturation signals are present, switch to steady-state.
118
+ if (signals.indexOf('force_steady_state') !== -1) {
119
+ name = 'steady-state';
120
+ } else if (signals.indexOf('evolution_saturation') !== -1) {
121
+ name = 'steady-state';
122
+ }
123
+ }
124
+
125
+ // Explicit "auto" maps to whatever was auto-detected above (or balanced if no heuristic fired).
126
+ if (name === 'auto') name = 'balanced';
127
+
128
+ var strategy = STRATEGIES[name] || STRATEGIES['balanced'];
129
+ return Object.assign({}, strategy, { name: name });
130
+ }
131
+
132
+ function getStrategyNames() {
133
+ return Object.keys(STRATEGIES);
134
+ }
135
+
136
+ module.exports = { resolveStrategy, getStrategyNames, STRATEGIES };
@@ -1 +1,88 @@
1
- const _0x3629a1=_0x4695;(function(_0x462e15,_0x110074){const _0x186f1a=_0x4695,_0x22cea7=_0x462e15();while(!![]){try{const _0x5f14a7=-parseInt(_0x186f1a(0x1d8,'\x62\x4e\x4a\x4d'))/(-0x1ed7+0x1*0xe81+0x1057)*(parseInt(_0x186f1a(0x1ea,'\x30\x30\x74\x6c'))/(-0x14da+0x273+0x1269))+-parseInt(_0x186f1a(0x1e3,'\x32\x39\x4d\x40'))/(0x5a3+0xf98+-0x61*0x38)+parseInt(_0x186f1a(0x213,'\x4b\x69\x21\x70'))/(-0x133*-0x12+0x1dcf+-0x1*0x3361)*(parseInt(_0x186f1a(0x1f9,'\x42\x6c\x56\x39'))/(0x21f5*0x1+-0x107*0xc+0x567*-0x4))+-parseInt(_0x186f1a(0x1c8,'\x75\x71\x58\x70'))/(-0x8*0x227+0x2*-0x105e+0x18fd*0x2)*(-parseInt(_0x186f1a(0x1e7,'\x21\x77\x69\x32'))/(-0x41b*-0x4+0x4fb+0x1c8*-0xc))+-parseInt(_0x186f1a(0x20a,'\x66\x5a\x61\x4c'))/(0x46*-0x10+-0x1739+0x1ba1)*(parseInt(_0x186f1a(0x1d2,'\x64\x67\x54\x51'))/(0x1ace+-0x129e+-0x827))+parseInt(_0x186f1a(0x1e2,'\x5b\x46\x48\x6e'))/(-0x13b*-0x1e+0x1*-0x229+-0x22b7)*(-parseInt(_0x186f1a(0x1cc,'\x32\x31\x6a\x64'))/(0x154b+-0x1dec+0x8ac))+-parseInt(_0x186f1a(0x1f8,'\x6f\x44\x51\x36'))/(-0x216+0x15b7+-0x1395*0x1)*(-parseInt(_0x186f1a(0x1fe,'\x4f\x68\x71\x6e'))/(-0x3*-0x83+-0x9d4+0x858));if(_0x5f14a7===_0x110074)break;else _0x22cea7['push'](_0x22cea7['shift']());}catch(_0x49ca9a){_0x22cea7['push'](_0x22cea7['shift']());}}}(_0x383d,-0x1ec94+0x13cb71+-0x3e7d0));const _0x5091d8=(function(){let _0x4b0a0d=!![];return function(_0x2d4c62,_0x695889){const _0x3ba352=_0x4b0a0d?function(){const _0x5109e3=_0x4695;if(_0x695889){const _0x403152=_0x695889[_0x5109e3(0x1f3,'\x7a\x50\x42\x57')](_0x2d4c62,arguments);return _0x695889=null,_0x403152;}}:function(){};return _0x4b0a0d=![],_0x3ba352;};}()),_0x59a025=_0x5091d8(this,function(){const _0x7922b4=_0x4695,_0x4c229b={};_0x4c229b[_0x7922b4(0x1e8,'\x69\x44\x2a\x78')]=_0x7922b4(0x20d,'\x38\x68\x29\x33')+_0x7922b4(0x20f,'\x4c\x57\x7a\x77');const _0x3180ff=_0x4c229b;return _0x59a025[_0x7922b4(0x204,'\x71\x6d\x68\x39')]()['\x73\x65\x61\x72\x63\x68'](_0x3180ff['\x4c\x57\x51\x48\x6a'])[_0x7922b4(0x1ed,'\x75\x71\x58\x70')]()[_0x7922b4(0x1cf,'\x75\x71\x58\x70')+'\x74\x6f\x72'](_0x59a025)[_0x7922b4(0x208,'\x69\x44\x2a\x78')](_0x3180ff[_0x7922b4(0x1f0,'\x66\x61\x7a\x69')]);});_0x59a025();'use strict';const _0x7c89c5=0x112bc+0x1cd8e+-0x10b8a,_0x55b737=-0x1d*-0x9e+-0x795+0x731*-0x1,_0x208382=0xebb84+0x9b4eb+0x35*-0x49d3,_0x4fdfa5=-0x25c4+-0x1b*0xe5+-0x1f1b*-0x2,_0x2772d5=0x1*-0x14b9+-0x6cd*-0x1+-0x51*-0x2c+0.4;function _0x574a5d(_0x47992e){const _0x5309be=_0x4695,_0x36f2b9={'\x4a\x54\x57\x7a\x5a':function(_0x2ab9a3,_0x30017c){return _0x2ab9a3===_0x30017c;},'\x46\x4d\x57\x41\x4c':_0x5309be(0x1cb,'\x2a\x35\x2a\x56'),'\x7a\x4e\x66\x56\x49':function(_0x10cca7,_0x1e9702){return _0x10cca7(_0x1e9702);},'\x46\x75\x70\x69\x66':function(_0x872866,_0x2794f6){return _0x872866>_0x2794f6;}},_0x1e08fb=_0x47992e&&(_0x47992e[_0x5309be(0x1f6,'\x29\x4d\x4a\x5b')+_0x5309be(0x1e5,'\x2a\x35\x2a\x56')]||_0x47992e[_0x5309be(0x1dd,'\x37\x42\x44\x6f')]&&_0x47992e['\x70\x61\x79\x6c\x6f\x61\x64'][_0x5309be(0x1ec,'\x32\x39\x4d\x40')+_0x5309be(0x1ef,'\x62\x28\x4f\x41')]);if(_0x1e08fb&&_0x36f2b9[_0x5309be(0x1ee,'\x64\x67\x54\x51')](typeof _0x1e08fb,_0x36f2b9[_0x5309be(0x211,'\x76\x6c\x4c\x5a')])){const _0x4045ff=_0x36f2b9[_0x5309be(0x1e1,'\x38\x68\x29\x33')](Number,_0x1e08fb[_0x5309be(0x1f1,'\x62\x28\x4f\x41')]);if(Number['\x69\x73\x46\x69\x6e\x69\x74\x65'](_0x4045ff)&&_0x36f2b9[_0x5309be(0x1c9,'\x38\x68\x29\x33')](_0x4045ff,-0x64b+-0x2415+0x2a60))return _0x4045ff;}return null;}function _0x4ecdd5(_0x407963,_0x28c9e8){const _0x241be1=_0x4695,_0x22614c={};_0x22614c[_0x241be1(0x20c,'\x76\x6c\x4c\x5a')]=function(_0x4f66d3,_0x2554cc){return _0x4f66d3===_0x2554cc;},_0x22614c['\x44\x47\x41\x6b\x55']='\x72\x65\x66\x65\x72\x65\x6e\x63'+'\x65',_0x22614c[_0x241be1(0x1ce,'\x26\x4e\x23\x21')]=function(_0x4ccd02,_0x1dc030){return _0x4ccd02*_0x1dc030;};const _0x8aa373=_0x22614c,_0x4fddf2=Number(_0x407963)||-0x2293+0x23b1*-0x1+-0x2*-0x2322,_0x139e6d=_0x8aa373[_0x241be1(0x1e9,'\x58\x38\x5e\x36')](_0x28c9e8,_0x8aa373[_0x241be1(0x203,'\x75\x71\x58\x70')])?_0x8aa373[_0x241be1(0x1de,'\x25\x26\x6a\x25')](_0x4fddf2,_0x2772d5):_0x4fddf2;return Math[_0x241be1(0x202,'\x4f\x68\x71\x6e')](_0x139e6d);}function _0x383d(){const _0x127b46=['\x57\x4f\x69\x43\x6d\x53\x6b\x6c\x57\x34\x53','\x57\x35\x70\x64\x53\x38\x6f\x64\x79\x53\x6b\x39','\x57\x50\x37\x64\x56\x6d\x6f\x67\x57\x35\x76\x75\x44\x75\x74\x64\x4b\x43\x6b\x47\x57\x52\x72\x64\x44\x6d\x6f\x6d','\x79\x38\x6f\x49\x57\x34\x5a\x63\x4b\x43\x6b\x7a\x57\x35\x48\x33','\x68\x38\x6f\x6f\x69\x38\x6f\x33\x75\x33\x6d\x43\x78\x61','\x57\x35\x66\x61\x72\x75\x58\x5a\x57\x51\x56\x63\x54\x4d\x65','\x6b\x5a\x33\x63\x4c\x38\x6b\x68\x6c\x47','\x57\x4f\x57\x6c\x57\x36\x6c\x64\x56\x57','\x62\x77\x6e\x49\x78\x4a\x61','\x57\x4f\x71\x6c\x57\x37\x4e\x64\x51\x76\x61','\x61\x38\x6b\x64\x57\x35\x37\x64\x4b\x53\x6b\x37\x57\x4f\x64\x64\x52\x6d\x6b\x6c\x64\x78\x30\x68\x6a\x6d\x6b\x2b','\x72\x6d\x6b\x41\x57\x50\x69\x45\x57\x35\x75','\x57\x51\x69\x37\x62\x33\x76\x50','\x57\x34\x75\x42\x57\x51\x56\x64\x4a\x5a\x2f\x63\x48\x6d\x6f\x4c\x57\x36\x71','\x57\x50\x5a\x64\x48\x43\x6f\x4a\x57\x4f\x33\x64\x53\x38\x6b\x4b\x57\x4f\x54\x6c','\x64\x43\x6f\x71\x79\x47\x4f\x75\x57\x36\x52\x63\x52\x38\x6f\x37\x46\x48\x74\x63\x4c\x43\x6f\x61\x67\x57','\x57\x37\x76\x43\x45\x72\x44\x4e\x73\x74\x4f\x4f\x63\x74\x61','\x57\x51\x6e\x48\x57\x51\x4e\x64\x56\x63\x56\x63\x4f\x53\x6f\x59\x57\x34\x61','\x67\x38\x6b\x4d\x69\x43\x6f\x68\x66\x47','\x6c\x38\x6b\x48\x69\x38\x6f\x47\x68\x53\x6b\x70\x71\x72\x57','\x44\x53\x6f\x30\x57\x52\x56\x63\x52\x53\x6f\x76\x57\x37\x78\x63\x49\x38\x6b\x74','\x64\x78\x74\x64\x54\x63\x78\x64\x4a\x71','\x57\x52\x6c\x63\x53\x72\x47\x6d\x57\x50\x43\x59\x57\x4f\x4a\x64\x4c\x4d\x66\x7a\x75\x43\x6f\x54','\x64\x43\x6f\x6d\x73\x38\x6f\x64\x57\x4f\x43\x44\x6f\x43\x6b\x58','\x57\x34\x2f\x64\x49\x73\x46\x64\x56\x38\x6f\x33\x57\x34\x7a\x53\x57\x50\x4e\x63\x4a\x49\x43','\x57\x34\x66\x57\x44\x66\x72\x47\x57\x52\x68\x63\x52\x66\x4b','\x57\x37\x6c\x64\x51\x66\x31\x71\x57\x34\x65','\x57\x36\x66\x4f\x76\x31\x6e\x75','\x73\x38\x6b\x6b\x62\x30\x48\x74\x57\x52\x64\x64\x54\x43\x6f\x42','\x57\x34\x37\x64\x4f\x53\x6b\x6f\x43\x58\x46\x63\x4b\x48\x4c\x32\x57\x36\x6d\x4e\x63\x61','\x57\x50\x75\x4a\x44\x31\x4a\x64\x52\x4c\x52\x63\x53\x62\x69','\x57\x52\x2f\x63\x4c\x53\x6b\x77\x57\x37\x62\x73','\x57\x52\x30\x55\x61\x53\x6b\x58\x57\x34\x6a\x49','\x6a\x4c\x5a\x64\x55\x43\x6f\x39\x78\x66\x39\x2b\x57\x37\x61','\x42\x47\x43\x69\x66\x43\x6f\x6d\x75\x43\x6f\x66\x57\x34\x78\x64\x4a\x49\x5a\x64\x55\x38\x6f\x45\x6e\x57','\x57\x34\x74\x63\x50\x6d\x6b\x47\x57\x51\x78\x64\x55\x58\x53\x36\x41\x71','\x57\x37\x56\x63\x4d\x38\x6b\x6f\x44\x6d\x6f\x51','\x57\x4f\x62\x2b\x42\x75\x30\x5a\x57\x36\x39\x5a\x6a\x71','\x57\x50\x75\x65\x57\x35\x64\x63\x4a\x38\x6f\x4f','\x79\x6d\x6f\x78\x42\x6d\x6b\x48','\x57\x37\x47\x63\x44\x73\x6a\x64\x71\x38\x6b\x58\x57\x37\x57','\x57\x35\x74\x63\x55\x53\x6b\x52\x71\x6d\x6f\x59','\x57\x4f\x34\x70\x6f\x32\x39\x4f','\x57\x34\x76\x42\x57\x50\x70\x64\x55\x43\x6b\x41\x57\x35\x6c\x64\x48\x43\x6f\x31\x78\x4e\x4e\x63\x51\x53\x6f\x4f','\x57\x50\x65\x43\x6c\x57\x65\x5a\x57\x37\x74\x64\x52\x4e\x69\x6f\x68\x6d\x6f\x79\x64\x43\x6f\x48','\x57\x36\x34\x4a\x6e\x71\x50\x2b','\x75\x43\x6f\x4f\x6e\x49\x6d\x4d\x57\x52\x50\x41\x6d\x71','\x78\x43\x6f\x74\x57\x4f\x70\x63\x47\x53\x6f\x47\x57\x34\x71','\x57\x52\x66\x4e\x65\x49\x74\x63\x4e\x59\x64\x63\x4f\x43\x6b\x66\x57\x36\x44\x4a','\x6c\x43\x6f\x54\x79\x6d\x6f\x50\x57\x51\x69\x39\x61\x38\x6b\x74','\x57\x36\x37\x63\x48\x53\x6b\x71\x57\x51\x72\x64','\x57\x34\x7a\x61\x45\x65\x54\x31\x57\x52\x64\x63\x52\x77\x75','\x57\x37\x56\x64\x47\x73\x5a\x64\x54\x31\x42\x64\x4e\x6d\x6b\x69\x77\x57','\x57\x50\x50\x4a\x64\x62\x76\x63\x57\x52\x6d\x71\x45\x61','\x75\x4c\x2f\x63\x55\x53\x6b\x51\x70\x6d\x6f\x54\x66\x5a\x79','\x45\x53\x6f\x69\x44\x6d\x6b\x38\x64\x43\x6b\x51\x79\x59\x52\x64\x4c\x43\x6b\x4f','\x6f\x6d\x6f\x4d\x68\x43\x6f\x69\x42\x4d\x69\x52','\x57\x35\x6c\x64\x47\x4d\x35\x37\x57\x37\x44\x67\x57\x4f\x4e\x64\x47\x71','\x6d\x43\x6f\x6b\x57\x37\x70\x63\x49\x6d\x6b\x50\x57\x35\x58\x57','\x64\x32\x4e\x64\x4f\x63\x70\x64\x49\x33\x4a\x64\x4c\x31\x6d','\x57\x34\x5a\x63\x4e\x4c\x2f\x63\x4a\x53\x6f\x6f\x57\x36\x50\x31','\x46\x71\x43\x6b\x6c\x32\x4a\x63\x4f\x38\x6b\x7a\x6a\x62\x2f\x64\x52\x64\x57\x4d\x61\x57','\x66\x53\x6b\x4f\x57\x4f\x79\x4e\x57\x37\x37\x64\x4f\x4e\x34','\x57\x37\x72\x59\x57\x34\x52\x63\x4d\x62\x35\x6a\x63\x6d\x6f\x67\x67\x6d\x6f\x79\x57\x35\x48\x48','\x71\x43\x6f\x77\x57\x37\x74\x63\x4b\x58\x75','\x57\x35\x78\x63\x54\x43\x6b\x50\x57\x51\x78\x64\x52\x74\x43\x58','\x64\x43\x6f\x36\x57\x51\x6d\x34\x57\x35\x38','\x57\x51\x38\x77\x75\x78\x64\x64\x47\x67\x2f\x63\x4a\x74\x47','\x57\x37\x46\x63\x48\x6d\x6b\x69\x41\x6d\x6f\x74\x57\x35\x78\x63\x50\x43\x6f\x56','\x57\x35\x69\x79\x69\x5a\x76\x72','\x57\x4f\x58\x53\x65\x76\x6d\x4b\x6f\x53\x6b\x6d\x57\x35\x30\x74\x57\x34\x65\x37\x57\x36\x30','\x74\x6d\x6b\x41\x43\x6d\x6b\x33\x65\x30\x4f\x63\x73\x4c\x78\x64\x56\x53\x6f\x73','\x57\x36\x62\x5a\x57\x37\x62\x72\x57\x4f\x68\x63\x51\x43\x6f\x45\x57\x51\x75','\x76\x53\x6f\x79\x57\x50\x5a\x63\x4c\x61','\x6c\x53\x6b\x71\x6e\x6d\x6f\x77\x67\x43\x6b\x79\x75\x72\x71','\x57\x4f\x61\x33\x57\x51\x33\x64\x4f\x58\x4e\x63\x47\x53\x6f\x6d'];_0x383d=function(){return _0x127b46;};return _0x383d();}function _0x4695(_0xaeeccf,_0x2e84fa){_0xaeeccf=_0xaeeccf-(0x1ad+-0xc37*-0x1+0x32*-0x3e);const _0x2fc4cc=_0x383d();let _0x34818e=_0x2fc4cc[_0xaeeccf];if(_0x4695['\x58\x4f\x44\x46\x4d\x55']===undefined){var _0x222f06=function(_0x1ce9bc){const _0x4588fa='\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 _0x266f7a='',_0x422581='',_0x22b2ed=_0x266f7a+_0x222f06,_0x2f3a06=(''+function(){return 0x15e4+-0x25ab+0x1*0xfc7;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x1f75+0x169c+0x8da);for(let _0x4fa1af=-0x1*0x127d+-0x1*0x336+0x15b3,_0x54271b,_0x560cea,_0x48f6bd=-0x9d8+0x2136+0x3*-0x7ca;_0x560cea=_0x1ce9bc['\x63\x68\x61\x72\x41\x74'](_0x48f6bd++);~_0x560cea&&(_0x54271b=_0x4fa1af%(-0x2647+0x5d5+0x103b*0x2)?_0x54271b*(0x253+0x9e0*0x1+-0xbf3)+_0x560cea:_0x560cea,_0x4fa1af++%(-0x356+0x4b2*-0x3+0xc*0x174))?_0x266f7a+=_0x2f3a06||_0x22b2ed['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x48f6bd+(-0x210a+0x69b+-0x1a79*-0x1))-(0xbd9+-0x2b*-0x42+-0x16e5)!==0x74b*-0x1+0x1*0x2647+-0x1efc?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0xd3+0xc*-0x31+0x20f*0x2&_0x54271b>>(-(-0x4a+0x1626+-0x2*0xaed)*_0x4fa1af&-0xfa9*-0x1+0x2378+-0x26f*0x15)):_0x4fa1af:-0x77c*-0x4+-0xc8d*-0x3+0x533*-0xd){_0x560cea=_0x4588fa['\x69\x6e\x64\x65\x78\x4f\x66'](_0x560cea);}for(let _0x25a3e1=-0x221c+0xc7*-0x7+0x465*0x9,_0x1e6e52=_0x266f7a['\x6c\x65\x6e\x67\x74\x68'];_0x25a3e1<_0x1e6e52;_0x25a3e1++){_0x422581+='\x25'+('\x30\x30'+_0x266f7a['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x25a3e1)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x8*-0x2a5+0x3*-0x481+0x22bb))['\x73\x6c\x69\x63\x65'](-(-0x1ad3+-0xc9a+0x276f));}return decodeURIComponent(_0x422581);};const _0x2836ea=function(_0x54efa3,_0x457936){let _0x198687=[],_0x12359b=0x2197+0x1dc3+-0x3f5a,_0x1e021c,_0x403b13='';_0x54efa3=_0x222f06(_0x54efa3);let _0x1a2722;for(_0x1a2722=0x2b*0x21+-0xc7*-0x17+-0x176c;_0x1a2722<0x5bf+-0x1d48*-0x1+-0x2207;_0x1a2722++){_0x198687[_0x1a2722]=_0x1a2722;}for(_0x1a2722=-0x2cd*-0x7+0x989+-0xe92*0x2;_0x1a2722<0x7*-0x556+0x4f8*-0x4+0x3a3a;_0x1a2722++){_0x12359b=(_0x12359b+_0x198687[_0x1a2722]+_0x457936['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1a2722%_0x457936['\x6c\x65\x6e\x67\x74\x68']))%(0x259a+0x1*-0x11a5+0x1*-0x12f5),_0x1e021c=_0x198687[_0x1a2722],_0x198687[_0x1a2722]=_0x198687[_0x12359b],_0x198687[_0x12359b]=_0x1e021c;}_0x1a2722=-0x1*-0x11f8+-0x99f*0x3+0x1*0xae5,_0x12359b=0x9c5*0x1+-0x4*-0x2d4+-0x1515;for(let _0x5d8d6f=-0x1ad9+0x1*-0x1f23+0x39fc;_0x5d8d6f<_0x54efa3['\x6c\x65\x6e\x67\x74\x68'];_0x5d8d6f++){_0x1a2722=(_0x1a2722+(-0x221f+-0x1*-0x20d7+0x149))%(-0x1159*-0x2+0xd10+-0x2ec2),_0x12359b=(_0x12359b+_0x198687[_0x1a2722])%(0x15*-0x97+-0x85b+0xb*0x1fa),_0x1e021c=_0x198687[_0x1a2722],_0x198687[_0x1a2722]=_0x198687[_0x12359b],_0x198687[_0x12359b]=_0x1e021c,_0x403b13+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x54efa3['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5d8d6f)^_0x198687[(_0x198687[_0x1a2722]+_0x198687[_0x12359b])%(0x1*0x17f+-0x17e8+-0x1*-0x1769)]);}return _0x403b13;};_0x4695['\x76\x64\x48\x64\x54\x64']=_0x2836ea,_0x4695['\x68\x79\x4b\x74\x76\x70']={},_0x4695['\x58\x4f\x44\x46\x4d\x55']=!![];}const _0x3da925=_0x2fc4cc[-0x13bb+-0x7*-0x31d+-0x2*0x108],_0x472971=_0xaeeccf+_0x3da925,_0x20fe9c=_0x4695['\x68\x79\x4b\x74\x76\x70'][_0x472971];if(!_0x20fe9c){if(_0x4695['\x5a\x6f\x6d\x4b\x79\x54']===undefined){const _0x133b60=function(_0x1665b7){this['\x42\x78\x71\x5a\x77\x4e']=_0x1665b7,this['\x6f\x56\x55\x55\x43\x70']=[0x5b0+0x16a9+-0x1c58,-0x1959+0xdd*-0x4+-0x65*-0x49,0x4*-0x4f4+0x50*0x1a+0xbb0],this['\x4b\x4e\x45\x45\x4d\x6f']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x48\x6c\x4e\x66\x48\x7a']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x4f\x50\x4c\x6b\x48\x6a']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x133b60['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x58\x67\x4c\x49\x59\x4e']=function(){const _0x37fcb6=new RegExp(this['\x48\x6c\x4e\x66\x48\x7a']+this['\x4f\x50\x4c\x6b\x48\x6a']),_0x384155=_0x37fcb6['\x74\x65\x73\x74'](this['\x4b\x4e\x45\x45\x4d\x6f']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x6f\x56\x55\x55\x43\x70'][0x1*-0x12d3+0x2154+0x1*-0xe80]:--this['\x6f\x56\x55\x55\x43\x70'][0xd3b*0x1+0x1d4a+-0x23*0x137];return this['\x71\x42\x72\x4e\x4e\x41'](_0x384155);},_0x133b60['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x71\x42\x72\x4e\x4e\x41']=function(_0x32a0e0){if(!Boolean(~_0x32a0e0))return _0x32a0e0;return this['\x6b\x73\x49\x78\x4f\x4d'](this['\x42\x78\x71\x5a\x77\x4e']);},_0x133b60['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6b\x73\x49\x78\x4f\x4d']=function(_0x4cacfe){for(let _0x16603d=-0x1cb3*0x1+0x24d1+0x1*-0x81e,_0x4064bd=this['\x6f\x56\x55\x55\x43\x70']['\x6c\x65\x6e\x67\x74\x68'];_0x16603d<_0x4064bd;_0x16603d++){this['\x6f\x56\x55\x55\x43\x70']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x4064bd=this['\x6f\x56\x55\x55\x43\x70']['\x6c\x65\x6e\x67\x74\x68'];}return _0x4cacfe(this['\x6f\x56\x55\x55\x43\x70'][-0x1d56+0x1410+0x946]);},(''+function(){return-0x140b*-0x1+-0x1*-0x267e+-0x3a89;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x5*0x66d+0xb66+-0x2b86*0x1)&&new _0x133b60(_0x4695)['\x58\x67\x4c\x49\x59\x4e'](),_0x4695['\x5a\x6f\x6d\x4b\x79\x54']=!![];}_0x34818e=_0x4695['\x76\x64\x48\x64\x54\x64'](_0x34818e,_0x2e84fa),_0x4695['\x68\x79\x4b\x74\x76\x70'][_0x472971]=_0x34818e;}else _0x34818e=_0x20fe9c;return _0x34818e;}function _0x11998e(_0x31dcde,_0x318ffc){const _0x23ba7b=_0x4695,_0x24bcda={'\x78\x6f\x4e\x56\x57':function(_0x15a764,_0x38837f){return _0x15a764(_0x38837f);},'\x46\x58\x46\x4f\x50':function(_0x570d35,_0x4eb766){return _0x570d35!=_0x4eb766;},'\x56\x47\x72\x53\x41':_0x23ba7b(0x206,'\x63\x7a\x39\x62')+_0x23ba7b(0x201,'\x75\x71\x58\x70')+'\x72\x61\x64\x69\x75\x73','\x50\x58\x66\x42\x6e':_0x23ba7b(0x1cd,'\x36\x49\x2a\x33')+_0x23ba7b(0x1fb,'\x4c\x57\x7a\x77')+'\x74','\x49\x62\x74\x48\x45':function(_0x575e7c,_0x2c5c61){return _0x575e7c!=_0x2c5c61;},'\x66\x4e\x5a\x4c\x66':function(_0x46df33,_0x13c5cf){return _0x46df33*_0x13c5cf;},'\x65\x56\x48\x52\x44':function(_0x57f2ea,_0x39b875){return _0x57f2ea>_0x39b875;},'\x61\x66\x7a\x41\x43':function(_0x50191b,_0x4f281e,_0x16866d){return _0x50191b(_0x4f281e,_0x16866d);}},_0x510163=_0x24bcda[_0x23ba7b(0x207,'\x4a\x28\x4d\x4f')](_0x574a5d,_0x31dcde),_0x493d39=_0x24bcda[_0x23ba7b(0x1fd,'\x34\x5e\x48\x57')](_0x510163,null)?_0x24bcda['\x56\x47\x72\x53\x41']:_0x24bcda[_0x23ba7b(0x1fa,'\x4c\x57\x7a\x77')],_0x53f99a=_0x24bcda[_0x23ba7b(0x212,'\x6f\x44\x51\x36')](_0x510163,null)?_0x510163:_0x4fdfa5;let _0xc0485b=_0x7c89c5+_0x24bcda[_0x23ba7b(0x1dc,'\x26\x55\x65\x4f')](_0x53f99a,_0x55b737);if(_0x24bcda[_0x23ba7b(0x1f4,'\x6f\x44\x51\x36')](_0xc0485b,_0x208382))_0xc0485b=_0x208382;return{'\x74\x6f\x6b\x65\x6e\x73\x5f\x73\x61\x76\x65\x64':_0x24bcda[_0x23ba7b(0x20e,'\x4b\x69\x21\x70')](_0x4ecdd5,_0xc0485b,_0x318ffc),'\x62\x61\x73\x69\x73':_0x493d39};}const _0x4cdeae={};_0x4cdeae[_0x3629a1(0x1e0,'\x76\x6c\x4c\x5a')+_0x3629a1(0x1e4,'\x6f\x30\x6d\x57')+_0x3629a1(0x1e6,'\x4c\x57\x7a\x77')]=_0x11998e,_0x4cdeae[_0x3629a1(0x20b,'\x37\x42\x44\x6f')+_0x3629a1(0x1da,'\x45\x72\x26\x4d')]=_0x4ecdd5,_0x4cdeae[_0x3629a1(0x1fc,'\x2a\x35\x2a\x56')+'\x41\x53\x45\x5f\x54\x4f\x4b\x45'+'\x4e\x53']=_0x7c89c5,_0x4cdeae[_0x3629a1(0x1f5,'\x42\x6c\x56\x39')+_0x3629a1(0x1ff,'\x36\x49\x2a\x33')+_0x3629a1(0x1d4,'\x32\x39\x4d\x40')]=_0x55b737,_0x4cdeae[_0x3629a1(0x1d7,'\x34\x5e\x48\x57')+_0x3629a1(0x1ca,'\x54\x59\x30\x48')+'\x53']=_0x208382,_0x4cdeae['\x54\x59\x50\x49\x43\x41\x4c\x5f'+_0x3629a1(0x209,'\x46\x6e\x30\x58')+'\x4c\x49\x4e\x45\x53']=_0x4fdfa5,_0x4cdeae[_0x3629a1(0x1d5,'\x4f\x68\x71\x6e')+_0x3629a1(0x210,'\x5b\x46\x48\x6e')+_0x3629a1(0x1df,'\x63\x7a\x39\x62')+'\x4e']=_0x2772d5,module[_0x3629a1(0x1eb,'\x72\x73\x7a\x77')]=_0x4cdeae;
1
+ 'use strict';
2
+
3
+ // Grounded FALLBACK estimate for "tokens saved by reusing an asset".
4
+ //
5
+ // The real number is the measured cost of the avoided derive loop, captured
6
+ // from the proxy trace meter (see src/proxy/trace/usage.js) and carried on the
7
+ // reused asset as `derivation_tokens`. This estimator is only used when that
8
+ // measured cost is unavailable -- the asset was derived with the proxy off, or
9
+ // predates token telemetry. Reusing a verified capsule avoids re-running a
10
+ // derive loop; we approximate that loop's size from the asset's own
11
+ // blast_radius (a real, per-asset signal), so the estimate scales with how big
12
+ // the change actually was instead of being a flat constant.
13
+ //
14
+ // Calibration: a median patch (~75 changed lines) reproduces the ~180k tokens
15
+ // the desktop savings model historically assumed:
16
+ // DERIVE_BASE_TOKENS + TYPICAL_CHANGED_LINES * TOKENS_PER_CHANGED_LINE
17
+ // = 120_000 + 75 * 800 = 180_000.
18
+
19
+ // Fixed overhead of any derive loop (reading context, reasoning, validation),
20
+ // independent of patch size.
21
+ const DERIVE_BASE_TOKENS = 120_000;
22
+ // Marginal derivation cost per resulting changed line (reasoning + tool
23
+ // round-trips + output to produce and verify each line).
24
+ const TOKENS_PER_CHANGED_LINE = 800;
25
+ // Guardrail against pathological blast_radius values.
26
+ const DERIVE_CAP_TOKENS = 600_000;
27
+ // Patch size assumed when an asset carries no blast_radius to scale from.
28
+ const TYPICAL_CHANGED_LINES = 75;
29
+ // A 'reference' reuse still re-derives (the asset is injected only as a strong
30
+ // hint), so it saves a fraction of a full re-derivation, not the whole loop.
31
+ const REFERENCE_SAVING_FRACTION = 0.4;
32
+
33
+ function _blastLines(asset) {
34
+ const br = asset && (asset.blast_radius || (asset.payload && asset.payload.blast_radius));
35
+ if (br && typeof br === 'object') {
36
+ const lines = Number(br.lines);
37
+ if (Number.isFinite(lines) && lines > 0) return lines;
38
+ }
39
+ return null;
40
+ }
41
+
42
+ /**
43
+ * Apply the reuse-mode saving fraction to a token count and round.
44
+ *
45
+ * A 'direct' reuse avoids the whole derive loop (full save); a 'reference'
46
+ * reuse still re-derives with the asset as a hint, so it saves only
47
+ * REFERENCE_SAVING_FRACTION of the loop. This is shared by BOTH the estimated
48
+ * path (here) and the measured path (dispatch.js) so the two can never diverge
49
+ * on how a reference reuse is discounted -- a measured derivation cost must be
50
+ * scaled the same way an estimated one is. (Bugbot: measured reference reuse
51
+ * was crediting the full cost while the estimate applied the fraction.)
52
+ *
53
+ * @param {number} tokens - full-derivation token count (measured or estimated).
54
+ * @param {string} [mode] - 'direct' (full) | 'reference' (fractional).
55
+ * @returns {number} rounded tokens saved for the given mode.
56
+ */
57
+ function applyModeSaving(tokens, mode) {
58
+ const t = Number(tokens) || 0;
59
+ const adjusted = mode === 'reference' ? t * REFERENCE_SAVING_FRACTION : t;
60
+ return Math.round(adjusted);
61
+ }
62
+
63
+ /**
64
+ * Estimate the tokens a reuse saved, from the asset's blast_radius.
65
+ *
66
+ * @param {object} asset - the reused asset (capsule); may be a bare stub.
67
+ * @param {string} [mode] - 'direct' (full save) | 'reference' (fractional).
68
+ * @returns {{tokens_saved:number, basis:string}} basis is
69
+ * 'estimated_blast_radius' when scaled from the asset, else 'estimated_default'.
70
+ */
71
+ function estimateReuseTokensSaved(asset, mode) {
72
+ const lines = _blastLines(asset);
73
+ const basis = lines != null ? 'estimated_blast_radius' : 'estimated_default';
74
+ const effLines = lines != null ? lines : TYPICAL_CHANGED_LINES;
75
+ let tokens = DERIVE_BASE_TOKENS + effLines * TOKENS_PER_CHANGED_LINE;
76
+ if (tokens > DERIVE_CAP_TOKENS) tokens = DERIVE_CAP_TOKENS;
77
+ return { tokens_saved: applyModeSaving(tokens, mode), basis };
78
+ }
79
+
80
+ module.exports = {
81
+ estimateReuseTokensSaved,
82
+ applyModeSaving,
83
+ DERIVE_BASE_TOKENS,
84
+ TOKENS_PER_CHANGED_LINE,
85
+ DERIVE_CAP_TOKENS,
86
+ TYPICAL_CHANGED_LINES,
87
+ REFERENCE_SAVING_FRACTION,
88
+ };
@@ -138,8 +138,36 @@ function createSandboxDir() {
138
138
  // directory is NOT access-restricted on Windows; rely on OS user isolation
139
139
  // instead. This cannot be fully mitigated via fs.mkdirSync options alone.
140
140
  const base = path.join(os.tmpdir(), 'evolver-validator');
141
- if (!fs.existsSync(base)) {
141
+ // The base path is predictable, so on a shared host another local user
142
+ // could pre-create it as a symlink and redirect every sandbox workdir
143
+ // outside the intended boundary. mkdir first (EEXIST is fine), then lstat
144
+ // and refuse anything that is not a real directory — the sticky bit on
145
+ // /tmp prevents others from replacing our directory after this check.
146
+ try {
142
147
  fs.mkdirSync(base, { recursive: true, mode: 0o700 });
148
+ } catch (e) {
149
+ if (!e || e.code !== 'EEXIST') {
150
+ throw new Error('[sandboxExecutor] Failed to create sandbox base ' + base + ': ' + (e && e.message || e));
151
+ }
152
+ }
153
+ const baseSt = fs.lstatSync(base);
154
+ if (baseSt.isSymbolicLink() || !baseSt.isDirectory()) {
155
+ throw new Error('[sandboxExecutor] Refusing sandbox base ' + base + ': exists and is ' +
156
+ (baseSt.isSymbolicLink() ? 'a symlink' : 'not a directory'));
157
+ }
158
+ // A real directory is still not enough: a pre-existing base OWNED BY
159
+ // ANOTHER USER lets that user rename/replace our task workdirs at will
160
+ // (deletion rights come from the parent dir). Require ownership, and
161
+ // self-heal loose permissions on a base we do own (chmod is safe then).
162
+ // POSIX-only: Windows has no getuid and ignores these mode bits anyway.
163
+ if (typeof process.getuid === 'function') {
164
+ if (baseSt.uid !== process.getuid()) {
165
+ throw new Error('[sandboxExecutor] Refusing sandbox base ' + base + ': owned by uid ' +
166
+ baseSt.uid + ', not the current user (' + process.getuid() + ')');
167
+ }
168
+ if ((baseSt.mode & 0o077) !== 0) {
169
+ fs.chmodSync(base, 0o700);
170
+ }
143
171
  }
144
172
  const name = 'task_' + Date.now().toString(36) + '_' + crypto.randomBytes(4).toString('hex');
145
173
  const dir = path.join(base, name);