jesse 3.3.2__tar.gz → 3.3.3__tar.gz

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 (1271) hide show
  1. {jesse-3.3.2/jesse.egg-info → jesse-3.3.3}/PKG-INFO +3 -2
  2. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/monte_carlo_mode/MonteCarloRunner.py +4 -3
  3. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/optimize_mode/Optimize.py +4 -3
  4. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/monte_carlo/monte_carlo_candles.py +2 -1
  5. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/monte_carlo/monte_carlo_trades.py +2 -1
  6. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/optimize/__init__.py +2 -1
  7. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/analysis_jobs.py +127 -69
  8. jesse-3.3.3/jesse/services/nofollow_fs.py +667 -0
  9. jesse-3.3.3/jesse/services/process_tree.py +435 -0
  10. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/project_files.py +72 -125
  11. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/ray_runtime.py +24 -1
  12. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/research_jobs.py +153 -55
  13. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/strategy_handler/__init__.py +37 -10
  14. jesse-3.3.3/jesse/version.py +1 -0
  15. {jesse-3.3.2 → jesse-3.3.3/jesse.egg-info}/PKG-INFO +3 -2
  16. {jesse-3.3.2 → jesse-3.3.3}/jesse.egg-info/SOURCES.txt +2 -0
  17. {jesse-3.3.2 → jesse-3.3.3}/jesse.egg-info/requires.txt +6 -1
  18. {jesse-3.3.2 → jesse-3.3.3}/requirements.txt +3 -1
  19. jesse-3.3.3/tests/conftest.py +61 -0
  20. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_analysis.py +24 -21
  21. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_candle_management.py +1 -11
  22. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_live_history.py +2 -10
  23. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_project_files.py +24 -10
  24. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_proxy.py +14 -7
  25. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_research_scripts.py +4 -7
  26. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_strategy_reports.py +8 -2
  27. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_tool_offloading.py +2 -5
  28. {jesse-3.3.2 → jesse-3.3.3}/tests/test_ray_runtime.py +51 -0
  29. {jesse-3.3.2 → jesse-3.3.3}/tests/test_research_monte_carlo.py +70 -0
  30. {jesse-3.3.2 → jesse-3.3.3}/tests/test_research_optimization_isolation.py +54 -0
  31. {jesse-3.3.2 → jesse-3.3.3}/tests/test_research_session_lifecycle.py +44 -0
  32. jesse-3.3.2/jesse/version.py +0 -1
  33. jesse-3.3.2/tests/conftest.py +0 -17
  34. {jesse-3.3.2 → jesse-3.3.3}/LICENSE +0 -0
  35. {jesse-3.3.2 → jesse-3.3.3}/MANIFEST.in +0 -0
  36. {jesse-3.3.2 → jesse-3.3.3}/README.md +0 -0
  37. {jesse-3.3.2 → jesse-3.3.3}/jesse/__init__.py +0 -0
  38. {jesse-3.3.2 → jesse-3.3.3}/jesse/app.py +0 -0
  39. {jesse-3.3.2 → jesse-3.3.3}/jesse/candle_pipelines/__init__.py +0 -0
  40. {jesse-3.3.2 → jesse-3.3.3}/jesse/candle_pipelines/base_candles.py +0 -0
  41. {jesse-3.3.2 → jesse-3.3.3}/jesse/candle_pipelines/gaussian_noise.py +0 -0
  42. {jesse-3.3.2 → jesse-3.3.3}/jesse/candle_pipelines/gaussian_resampler.py +0 -0
  43. {jesse-3.3.2 → jesse-3.3.3}/jesse/candle_pipelines/moving_block_bootstrap.py +0 -0
  44. {jesse-3.3.2 → jesse-3.3.3}/jesse/cli.py +0 -0
  45. {jesse-3.3.2 → jesse-3.3.3}/jesse/config.py +0 -0
  46. {jesse-3.3.2 → jesse-3.3.3}/jesse/constants.py +0 -0
  47. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/__init__.py +0 -0
  48. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/ai_model_controller.py +0 -0
  49. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/analysis_controller.py +0 -0
  50. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/auth_controller.py +0 -0
  51. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/backtest_controller.py +0 -0
  52. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/candles_controller.py +0 -0
  53. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/closed_trade_controller.py +0 -0
  54. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/config_controller.py +0 -0
  55. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/data_provider_credentials_controller.py +0 -0
  56. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/e2e_controller.py +0 -0
  57. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/exchange_controller.py +0 -0
  58. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/file_controller.py +0 -0
  59. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/live_controller.py +0 -0
  60. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/lsp_controller.py +0 -0
  61. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/mcp_controller.py +0 -0
  62. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/monte_carlo_controller.py +0 -0
  63. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/notification_controller.py +0 -0
  64. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/optimization_controller.py +0 -0
  65. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/order_controller.py +0 -0
  66. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/period_templates_controller.py +0 -0
  67. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/project_files_controller.py +0 -0
  68. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/research_scripts_controller.py +0 -0
  69. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/route_templates_controller.py +0 -0
  70. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/session_results_controller.py +0 -0
  71. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/significance_test_controller.py +0 -0
  72. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/strategy_controller.py +0 -0
  73. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/system_controller.py +0 -0
  74. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/tabs_controller.py +0 -0
  75. {jesse-3.3.2 → jesse-3.3.3}/jesse/controllers/websocket_controller.py +0 -0
  76. {jesse-3.3.2 → jesse-3.3.3}/jesse/enums/__init__.py +0 -0
  77. {jesse-3.3.2 → jesse-3.3.3}/jesse/exceptions/__init__.py +0 -0
  78. {jesse-3.3.2 → jesse-3.3.3}/jesse/exchanges/__init__.py +0 -0
  79. {jesse-3.3.2 → jesse-3.3.3}/jesse/exchanges/exchange.py +0 -0
  80. {jesse-3.3.2 → jesse-3.3.3}/jesse/exchanges/sandbox/Sandbox.py +0 -0
  81. {jesse-3.3.2 → jesse-3.3.3}/jesse/exchanges/sandbox/__init__.py +0 -0
  82. {jesse-3.3.2 → jesse-3.3.3}/jesse/factories/__init__.py +0 -0
  83. {jesse-3.3.2 → jesse-3.3.3}/jesse/factories/candle_factory.py +0 -0
  84. {jesse-3.3.2 → jesse-3.3.3}/jesse/factories/order_factory.py +0 -0
  85. {jesse-3.3.2 → jesse-3.3.3}/jesse/helpers.py +0 -0
  86. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/__init__.py +0 -0
  87. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/acosc.py +0 -0
  88. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ad.py +0 -0
  89. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/adosc.py +0 -0
  90. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/adx.py +0 -0
  91. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/adxr.py +0 -0
  92. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/alligator.py +0 -0
  93. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/alma.py +0 -0
  94. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ao.py +0 -0
  95. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/apo.py +0 -0
  96. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/aroon.py +0 -0
  97. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/aroonosc.py +0 -0
  98. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/atr.py +0 -0
  99. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/avgprice.py +0 -0
  100. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/bandpass.py +0 -0
  101. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/beta.py +0 -0
  102. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/bollinger_bands.py +0 -0
  103. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/bollinger_bands_width.py +0 -0
  104. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/bop.py +0 -0
  105. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cc.py +0 -0
  106. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cci.py +0 -0
  107. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cfo.py +0 -0
  108. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cg.py +0 -0
  109. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/chande.py +0 -0
  110. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/chop.py +0 -0
  111. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cksp.py +0 -0
  112. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cmo.py +0 -0
  113. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/correl.py +0 -0
  114. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/correlation_cycle.py +0 -0
  115. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cvi.py +0 -0
  116. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/cwma.py +0 -0
  117. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/damiani_volatmeter.py +0 -0
  118. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/dec_osc.py +0 -0
  119. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/decycler.py +0 -0
  120. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/dema.py +0 -0
  121. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/devstop.py +0 -0
  122. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/di.py +0 -0
  123. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/dm.py +0 -0
  124. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/donchian.py +0 -0
  125. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/dpo.py +0 -0
  126. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/dti.py +0 -0
  127. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/dx.py +0 -0
  128. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/edcf.py +0 -0
  129. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/efi.py +0 -0
  130. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ema.py +0 -0
  131. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/emd.py +0 -0
  132. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/emv.py +0 -0
  133. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/epma.py +0 -0
  134. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/er.py +0 -0
  135. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/eri.py +0 -0
  136. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/fisher.py +0 -0
  137. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/fosc.py +0 -0
  138. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/frama.py +0 -0
  139. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/fwma.py +0 -0
  140. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/gatorosc.py +0 -0
  141. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/gauss.py +0 -0
  142. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/heikin_ashi_candles.py +0 -0
  143. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/high_pass.py +0 -0
  144. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/high_pass_2_pole.py +0 -0
  145. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/hma.py +0 -0
  146. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/hull_suit.py +0 -0
  147. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/hurst_exponent.py +0 -0
  148. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/hwma.py +0 -0
  149. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ichimoku_cloud.py +0 -0
  150. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ichimoku_cloud_seq.py +0 -0
  151. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ift_rsi.py +0 -0
  152. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/itrend.py +0 -0
  153. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/jma.py +0 -0
  154. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/jsa.py +0 -0
  155. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/kama.py +0 -0
  156. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/kaufmanstop.py +0 -0
  157. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/kdj.py +0 -0
  158. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/keltner.py +0 -0
  159. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/kst.py +0 -0
  160. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/kurtosis.py +0 -0
  161. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/kvo.py +0 -0
  162. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/linearreg.py +0 -0
  163. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/linearreg_angle.py +0 -0
  164. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/linearreg_intercept.py +0 -0
  165. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/linearreg_slope.py +0 -0
  166. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/lrsi.py +0 -0
  167. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ma.py +0 -0
  168. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/maaq.py +0 -0
  169. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mab.py +0 -0
  170. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/macd.py +0 -0
  171. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mama.py +0 -0
  172. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/marketfi.py +0 -0
  173. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mass.py +0 -0
  174. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mcginley_dynamic.py +0 -0
  175. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mean_ad.py +0 -0
  176. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/median_ad.py +0 -0
  177. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/medprice.py +0 -0
  178. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mfi.py +0 -0
  179. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/midpoint.py +0 -0
  180. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/midprice.py +0 -0
  181. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/minmax.py +0 -0
  182. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mom.py +0 -0
  183. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/mwdx.py +0 -0
  184. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/natr.py +0 -0
  185. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/nma.py +0 -0
  186. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/nvi.py +0 -0
  187. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/obv.py +0 -0
  188. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/pfe.py +0 -0
  189. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/pivot.py +0 -0
  190. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/pma.py +0 -0
  191. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ppo.py +0 -0
  192. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/pvi.py +0 -0
  193. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/pwma.py +0 -0
  194. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/qstick.py +0 -0
  195. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/reflex.py +0 -0
  196. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rma.py +0 -0
  197. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/roc.py +0 -0
  198. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rocp.py +0 -0
  199. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rocr.py +0 -0
  200. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rocr100.py +0 -0
  201. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/roofing.py +0 -0
  202. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rsi.py +0 -0
  203. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rsmk.py +0 -0
  204. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rsx.py +0 -0
  205. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/rvi.py +0 -0
  206. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/safezonestop.py +0 -0
  207. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/sar.py +0 -0
  208. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/sinwma.py +0 -0
  209. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/skew.py +0 -0
  210. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/sma.py +0 -0
  211. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/smma.py +0 -0
  212. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/squeeze_momentum.py +0 -0
  213. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/sqwma.py +0 -0
  214. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/srsi.py +0 -0
  215. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/srwma.py +0 -0
  216. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/stc.py +0 -0
  217. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/stddev.py +0 -0
  218. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/stiffness.py +0 -0
  219. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/stochastic.py +0 -0
  220. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/stochf.py +0 -0
  221. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/supersmoother.py +0 -0
  222. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/supersmoother_3_pole.py +0 -0
  223. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/supertrend.py +0 -0
  224. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/support_resistance_with_break.py +0 -0
  225. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/swma.py +0 -0
  226. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/t3.py +0 -0
  227. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/tema.py +0 -0
  228. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/trange.py +0 -0
  229. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/trendflex.py +0 -0
  230. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/trima.py +0 -0
  231. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/trix.py +0 -0
  232. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/tsf.py +0 -0
  233. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/tsi.py +0 -0
  234. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ttm_squeeze.py +0 -0
  235. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ttm_trend.py +0 -0
  236. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/typprice.py +0 -0
  237. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ui.py +0 -0
  238. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/ultosc.py +0 -0
  239. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/var.py +0 -0
  240. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vi.py +0 -0
  241. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vidya.py +0 -0
  242. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vlma.py +0 -0
  243. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/volume.py +0 -0
  244. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vosc.py +0 -0
  245. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/voss.py +0 -0
  246. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vpci.py +0 -0
  247. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vpt.py +0 -0
  248. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vpwma.py +0 -0
  249. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vwap.py +0 -0
  250. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vwma.py +0 -0
  251. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/vwmacd.py +0 -0
  252. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/wad.py +0 -0
  253. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/waddah_attr_explosion.py +0 -0
  254. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/wclprice.py +0 -0
  255. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/wilders.py +0 -0
  256. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/willr.py +0 -0
  257. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/wma.py +0 -0
  258. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/wt.py +0 -0
  259. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/zlema.py +0 -0
  260. {jesse-3.3.2 → jesse-3.3.3}/jesse/indicators/zscore.py +0 -0
  261. {jesse-3.3.2 → jesse-3.3.3}/jesse/info.py +0 -0
  262. {jesse-3.3.2 → jesse-3.3.3}/jesse/libs/__init__.py +0 -0
  263. {jesse-3.3.2 → jesse-3.3.3}/jesse/libs/custom_json/__init__.py +0 -0
  264. {jesse-3.3.2 → jesse-3.3.3}/jesse/libs/dynamic_numpy_array/__init__.py +0 -0
  265. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/USAGE_LIMITS.md +0 -0
  266. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/__init__.py +0 -0
  267. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/agent_rules.md +0 -0
  268. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/agent_rules.py +0 -0
  269. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/auth.py +0 -0
  270. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/manager.py +0 -0
  271. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/mcp_config.py +0 -0
  272. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/__init__.py +0 -0
  273. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/backtest_management.md +0 -0
  274. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/backtest_metrics.md +0 -0
  275. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/candle.md +0 -0
  276. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/charts.md +0 -0
  277. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/configuration.md +0 -0
  278. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/credentials.md +0 -0
  279. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/indicator.md +0 -0
  280. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/live_trading.md +0 -0
  281. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/monte_carlo.md +0 -0
  282. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/optimization.md +0 -0
  283. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/position_risk.md +0 -0
  284. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/research_scripts.md +0 -0
  285. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/session_analysis.md +0 -0
  286. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/significance_test.md +0 -0
  287. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/strategy.md +0 -0
  288. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/strategy_catalog.md +0 -0
  289. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/strategy_examples.md +0 -0
  290. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/resources/utilities.md +0 -0
  291. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/server.py +0 -0
  292. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/test.py +0 -0
  293. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/__init__.py +0 -0
  294. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/analysis.py +0 -0
  295. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/backtest.py +0 -0
  296. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/candles.py +0 -0
  297. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/config.py +0 -0
  298. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/credentials.py +0 -0
  299. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/general.py +0 -0
  300. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/indicator.py +0 -0
  301. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/live.py +0 -0
  302. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/monte_carlo.py +0 -0
  303. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/offload.py +0 -0
  304. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/optimization.py +0 -0
  305. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/project_files.py +0 -0
  306. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/research_scripts.py +0 -0
  307. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/__init__.py +0 -0
  308. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/auth.py +0 -0
  309. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/backtest.py +0 -0
  310. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/candles.py +0 -0
  311. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/config.py +0 -0
  312. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/credentials.py +0 -0
  313. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/general.py +0 -0
  314. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/indicator.py +0 -0
  315. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/live.py +0 -0
  316. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/locks.py +0 -0
  317. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/monte_carlo.py +0 -0
  318. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/optimization.py +0 -0
  319. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/project_files.py +0 -0
  320. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/session_analysis.py +0 -0
  321. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/session_config.py +0 -0
  322. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/significance_test.py +0 -0
  323. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/strategy.py +0 -0
  324. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/services/strategy_catalog.py +0 -0
  325. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/session_results.py +0 -0
  326. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/significance_test.py +0 -0
  327. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/strategy.py +0 -0
  328. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/strategy_catalog.py +0 -0
  329. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/tools/strict_arguments.py +0 -0
  330. {jesse-3.3.2 → jesse-3.3.3}/jesse/mcp/usage_limits.py +0 -0
  331. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/AiModel.py +0 -0
  332. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/BacktestSession.py +0 -0
  333. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Candle.py +0 -0
  334. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/ClosedTrade.py +0 -0
  335. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/DataProviderCredentials.py +0 -0
  336. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Exchange.py +0 -0
  337. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/ExchangeApiKeys.py +0 -0
  338. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/FuturesExchange.py +0 -0
  339. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/LiveChart.py +0 -0
  340. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/LiveEquitySnapshot.py +0 -0
  341. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/LiveSession.py +0 -0
  342. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Log.py +0 -0
  343. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/MonteCarloSession.py +0 -0
  344. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/NotificationApiKeys.py +0 -0
  345. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/OpenTab.py +0 -0
  346. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/OptimizationSession.py +0 -0
  347. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Option.py +0 -0
  348. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Order.py +0 -0
  349. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Orderbook.py +0 -0
  350. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/PeriodTemplate.py +0 -0
  351. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Position.py +0 -0
  352. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Route.py +0 -0
  353. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/RouteTemplate.py +0 -0
  354. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/SignificanceTestSession.py +0 -0
  355. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/SpotExchange.py +0 -0
  356. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Ticker.py +0 -0
  357. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/Trade.py +0 -0
  358. {jesse-3.3.2 → jesse-3.3.3}/jesse/models/__init__.py +0 -0
  359. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/__init__.py +0 -0
  360. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/backtest_mode.py +0 -0
  361. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/data_provider.py +0 -0
  362. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/exchange_api_keys.py +0 -0
  363. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/__init__.py +0 -0
  364. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetual.py +0 -0
  365. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualMain.py +0 -0
  366. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualTestnet.py +0 -0
  367. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/__init__.py +0 -0
  368. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/apex_omni_utils.py +0 -0
  369. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/__init__.py +0 -0
  370. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-arm.dylib +0 -0
  371. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-x86.dylib +0 -0
  372. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.dylib +0 -0
  373. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.so +0 -0
  374. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-arm.py +0 -0
  375. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-pc.py +0 -0
  376. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-x86.py +0 -0
  377. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.dll +0 -0
  378. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.py +0 -0
  379. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/BinanceMain.py +0 -0
  380. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFutures.py +0 -0
  381. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFuturesTestnet.py +0 -0
  382. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/BinanceSpot.py +0 -0
  383. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/BinanceUSSpot.py +0 -0
  384. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/__init__.py +0 -0
  385. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Binance/binance_utils.py +0 -0
  386. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bitfinex/BitfinexSpot.py +0 -0
  387. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bitfinex/__init__.py +0 -0
  388. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bitfinex/bitfinex_utils.py +0 -0
  389. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitMain.py +0 -0
  390. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpot.py +0 -0
  391. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpotTestnet.py +0 -0
  392. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetual.py +0 -0
  393. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetualTestnet.py +0 -0
  394. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetual.py +0 -0
  395. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetualTestnet.py +0 -0
  396. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/__init__.py +0 -0
  397. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Bybit/bybit_utils.py +0 -0
  398. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Coinbase/CoinbaseSpot.py +0 -0
  399. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Coinbase/__init__.py +0 -0
  400. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Coinbase/coinbase_utils.py +0 -0
  401. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Gate/GateSpot.py +0 -0
  402. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Gate/GateSpotMain.py +0 -0
  403. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTMain.py +0 -0
  404. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTPerpetual.py +0 -0
  405. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Gate/__init__.py +0 -0
  406. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Gate/gate_utils.py +0 -0
  407. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetual.py +0 -0
  408. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualMain.py +0 -0
  409. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualTestnet.py +0 -0
  410. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Hyperliquid/__init__.py +0 -0
  411. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Hyperliquid/hyperliquid_utils.py +0 -0
  412. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetual.py +0 -0
  413. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetualMain.py +0 -0
  414. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetualTestnet.py +0 -0
  415. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenSpot.py +0 -0
  416. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenSpotMain.py +0 -0
  417. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/__init__.py +0 -0
  418. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Kraken/kraken_utils.py +0 -0
  419. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinFuturesMain.py +0 -0
  420. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinSpot.py +0 -0
  421. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinSpotMain.py +0 -0
  422. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinUSDTPerpetual.py +0 -0
  423. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/KuCoin/__init__.py +0 -0
  424. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/KuCoin/kucoin_utils.py +0 -0
  425. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/LighterMain.py +0 -0
  426. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetual.py +0 -0
  427. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetualTestnet.py +0 -0
  428. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/__init__.py +0 -0
  429. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/lighter_utils.py +0 -0
  430. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/__init__.py +0 -0
  431. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-darwin-arm64.dylib +0 -0
  432. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-amd64.so +0 -0
  433. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-arm64.so +0 -0
  434. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-windows-amd64.dll +0 -0
  435. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/__init__.py +0 -0
  436. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/import_candles_mode/drivers/interface.py +0 -0
  437. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/monte_carlo_mode/__init__.py +0 -0
  438. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/notification_api_keys.py +0 -0
  439. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/optimize_mode/__init__.py +0 -0
  440. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/optimize_mode/fitness.py +0 -0
  441. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/significance_test_mode/SignificanceTestRunner.py +0 -0
  442. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/significance_test_mode/__init__.py +0 -0
  443. {jesse-3.3.2 → jesse-3.3.3}/jesse/modes/utils.py +0 -0
  444. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/__init__.py +0 -0
  445. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/candle_repository.py +0 -0
  446. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/closed_trade_repository.py +0 -0
  447. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/data_provider_credentials_repository.py +0 -0
  448. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/live_chart_repository.py +0 -0
  449. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/live_equity_repository.py +0 -0
  450. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/live_session_repository.py +0 -0
  451. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/open_tab_repository.py +0 -0
  452. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/order_repository.py +0 -0
  453. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/period_template_repository.py +0 -0
  454. {jesse-3.3.2 → jesse-3.3.3}/jesse/repositories/route_template_repository.py +0 -0
  455. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/__init__.py +0 -0
  456. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/backtest.py +0 -0
  457. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/candles.py +0 -0
  458. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/import_candles.py +0 -0
  459. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/ml.py +0 -0
  460. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/monte_carlo/__init__.py +0 -0
  461. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/monte_carlo/common.py +0 -0
  462. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/rule_significance_testing/__init__.py +0 -0
  463. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/rule_significance_testing/bootstrap.py +0 -0
  464. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/rule_significance_testing/common.py +0 -0
  465. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/rule_significance_testing/plots.py +0 -0
  466. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/rule_significance_testing/rule_significance.py +0 -0
  467. {jesse-3.3.2 → jesse-3.3.3}/jesse/research/rule_significance_testing/simulator.py +0 -0
  468. {jesse-3.3.2 → jesse-3.3.3}/jesse/routes/__init__.py +0 -0
  469. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/__init__.py +0 -0
  470. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/api.py +0 -0
  471. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/auth.py +0 -0
  472. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/broker.py +0 -0
  473. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/cache.py +0 -0
  474. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/candle_service.py +0 -0
  475. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/charts.py +0 -0
  476. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/closed_trade_service.py +0 -0
  477. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/color.py +0 -0
  478. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/coordination_client.py +0 -0
  479. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/coordination_runtime.py +0 -0
  480. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/custom_candle_import.py +0 -0
  481. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/dashboard_url.py +0 -0
  482. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/db.py +0 -0
  483. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/e2e_database.py +0 -0
  484. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/env.py +0 -0
  485. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/exchange_service.py +0 -0
  486. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/failure.py +0 -0
  487. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/file.py +0 -0
  488. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/general_info.py +0 -0
  489. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/__init__.py +0 -0
  490. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/contracts.py +0 -0
  491. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/credential_validation.py +0 -0
  492. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/errors.py +0 -0
  493. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/massive_stocks.py +0 -0
  494. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/providers/__init__.py +0 -0
  495. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/historical_data/registry.py +0 -0
  496. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/installer.py +0 -0
  497. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/jesse_trade.py +0 -0
  498. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/live_chart_service.py +0 -0
  499. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/live_history.py +0 -0
  500. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/logger.py +0 -0
  501. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/lsp.py +0 -0
  502. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/lsp_download.py +0 -0
  503. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/metrics.py +0 -0
  504. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/migrator.py +0 -0
  505. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/multiprocessing.py +0 -0
  506. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/notifier.py +0 -0
  507. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/order_service.py +0 -0
  508. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/position_service.py +0 -0
  509. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/progress.py +0 -0
  510. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/progressbar.py +0 -0
  511. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/redis.py +0 -0
  512. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/report.py +0 -0
  513. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/session_results.py +0 -0
  514. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/simulation_assumptions.py +0 -0
  515. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/strategy_handler/ExampleStrategy/__init__.py +0 -0
  516. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/strategy_service.py +0 -0
  517. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/symbol_catalog.py +0 -0
  518. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/table.py +0 -0
  519. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/timescale.py +0 -0
  520. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/trading_hours.py +0 -0
  521. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/transformers.py +0 -0
  522. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/validators.py +0 -0
  523. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/web.py +0 -0
  524. {jesse-3.3.2 → jesse-3.3.3}/jesse/services/ws_manager.py +0 -0
  525. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/200.html +0 -0
  526. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/404.html +0 -0
  527. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/-QFIf-8y.js +0 -0
  528. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/08VXUWAP.js +0 -0
  529. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/0ONmXmPL.js +0 -0
  530. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/1OJtSa29.js +0 -0
  531. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/2IIEA8gg.js +0 -0
  532. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/2LnYzLCR.js +0 -0
  533. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/32DixAac.js +0 -0
  534. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/32_DOadk.js +0 -0
  535. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/35Gd1l6b.js +0 -0
  536. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/3KuTZQMl.js +0 -0
  537. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/3kHYRJ9h.js +0 -0
  538. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/43DmfD33.js +0 -0
  539. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/4G7pJPwS.js +0 -0
  540. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/5eyTD99u.js +0 -0
  541. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/6RTg0lbw.js +0 -0
  542. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/6d_DINYp.js +0 -0
  543. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/95zPyYrn.js +0 -0
  544. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/9S921ylM.js +0 -0
  545. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/9SuGUQxQ.js +0 -0
  546. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Agoi6m7K.js +0 -0
  547. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Aw9tIJeK.js +0 -0
  548. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B1E1h4Tw.js +0 -0
  549. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B26H0THF.js +0 -0
  550. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B2OO5cIa.js +0 -0
  551. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B2kYdT-M.js +0 -0
  552. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B3Tmza7s.js +0 -0
  553. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B40NqdSB.js +0 -0
  554. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B4CnDxnp.js +0 -0
  555. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B4t1Dpxy.js +0 -0
  556. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B5-_aFwp.js +0 -0
  557. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B55fAccV.js +0 -0
  558. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B5W6OYN7.js +0 -0
  559. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B5e22D9r.js +0 -0
  560. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B5ulf6Jh.js +0 -0
  561. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B68TUdTA.js +0 -0
  562. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B6UiomQj.js +0 -0
  563. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B6cMlEJd.js +0 -0
  564. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B6kMFxG1.js +0 -0
  565. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B8J7ngcE.js +0 -0
  566. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B8_t_EnB.js +0 -0
  567. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B9C647eN.js +0 -0
  568. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B9JPFI3C.js +0 -0
  569. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BA0WJkYB.js +0 -0
  570. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BB8QmrLY.js +0 -0
  571. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BBDov63s.js +0 -0
  572. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BBRdoL6s.js +0 -0
  573. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BC-YRYM7.js +0 -0
  574. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BD87b4dR.js +0 -0
  575. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BDNMzG2s.js +0 -0
  576. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BDy3RgVq.js +0 -0
  577. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BEEn4gHE.js +0 -0
  578. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BEtHBSE6.js +0 -0
  579. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BGFFIZX_.js +0 -0
  580. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BGRKdXyl.js +0 -0
  581. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BG_RkxjH.js +0 -0
  582. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BHVL4DrI.js +0 -0
  583. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BHWKrbxM.js +0 -0
  584. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BI3Y1cOA.js +0 -0
  585. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BIEGKqOo.js +0 -0
  586. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BIfCV4Ms.js +0 -0
  587. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BK0UMAm8.js +0 -0
  588. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BKD0O2_Q.js +0 -0
  589. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BKPLz4po.js +0 -0
  590. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BKcRqSit.js +0 -0
  591. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BKc_k7G-.js +0 -0
  592. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BKxtCVv1.js +0 -0
  593. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BLhvb9Y-.js +0 -0
  594. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BMrGqELX.js +0 -0
  595. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BN08jTvb.js +0 -0
  596. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BOINE9jH.js +0 -0
  597. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BOotOW0E.js +0 -0
  598. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BQYoEE-E.js +0 -0
  599. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BRSARzao.js +0 -0
  600. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BRgglKlM.js +0 -0
  601. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BSFCf8l4.js +0 -0
  602. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BSSBbjzH.js +0 -0
  603. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BSWPekZh.js +0 -0
  604. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BSkKS2hE.js +0 -0
  605. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BSt81nX4.js +0 -0
  606. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BTkZN-kY.js +0 -0
  607. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BUvLBkUT.js +0 -0
  608. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BWB_6_ms.js +0 -0
  609. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BWPQTe0t.js +0 -0
  610. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BXViO-2h.js +0 -0
  611. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BY-ye-pC.js +0 -0
  612. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BYdfvclj.js +0 -0
  613. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BYgofb2h.js +0 -0
  614. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BZ4HG2rr.js +0 -0
  615. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BZCL-v6S.js +0 -0
  616. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B_aZeMMh.js +0 -0
  617. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/B_tTalzw.js +0 -0
  618. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Ba7i2nA0.js +0 -0
  619. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BaTYBKiJ.js +0 -0
  620. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BacktestTabs.BijLvS3O.css +0 -0
  621. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BbAZZZ7p.js +0 -0
  622. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BbMWPibr.js +0 -0
  623. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bc_sGQ0U.js +0 -0
  624. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BdwtN8NV.js +0 -0
  625. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BeGwcela.js +0 -0
  626. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Beywemwu.js +0 -0
  627. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bf9kHOm6.js +0 -0
  628. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BfbyNUB7.js +0 -0
  629. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bh7THQLS.js +0 -0
  630. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BhjAJghj.js +0 -0
  631. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BiX_3ZGn.js +0 -0
  632. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bk0mhOc9.js +0 -0
  633. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bkml37m-.js +0 -0
  634. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BkrtENUF.js +0 -0
  635. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bm3Qr25_.js +0 -0
  636. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BmHiIK7b.js +0 -0
  637. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bn7V5xpM.js +0 -0
  638. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BnjxR4X6.js +0 -0
  639. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bnr-372i.js +0 -0
  640. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bo9Dl7tn.js +0 -0
  641. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BoEzQrVW.js +0 -0
  642. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BoK4YRpC.js +0 -0
  643. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BolyLLo5.js +0 -0
  644. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bp8RYZPa.js +0 -0
  645. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bpxkdeyh.js +0 -0
  646. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BrD0VTWt.js +0 -0
  647. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bri6UV-V.js +0 -0
  648. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Brm5PLIv.js +0 -0
  649. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BtUnaqJ2.js +0 -0
  650. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Btx78D0D.js +0 -0
  651. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Buu8uHmp.js +0 -0
  652. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BvzEE6Lm.js +0 -0
  653. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BwWrilGY.js +0 -0
  654. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BwjZg7Kw.js +0 -0
  655. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bx1FflLF.js +0 -0
  656. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bxkupp3x.js +0 -0
  657. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/By-L4I7w.js +0 -0
  658. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/By1ptfmn.js +0 -0
  659. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ByqV7_Wn.js +0 -0
  660. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Bz4Y3fRF.js +0 -0
  661. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BzGFDp20.js +0 -0
  662. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BzMNZVT7.js +0 -0
  663. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/BzRncHX3.js +0 -0
  664. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C-LZuMrd.js +0 -0
  665. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C-y9NEjX.js +0 -0
  666. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C1BzkLxr.js +0 -0
  667. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C1IaaOeX.js +0 -0
  668. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C25aelnV.js +0 -0
  669. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C2u17_gr.js +0 -0
  670. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C44XaChS.js +0 -0
  671. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C531GsRP.js +0 -0
  672. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C5_-GSwl.js +0 -0
  673. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C7h46wYY.js +0 -0
  674. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C8468PWD.js +0 -0
  675. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C8Ef5oNN.js +0 -0
  676. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C8r90Shi.js +0 -0
  677. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CAi0_s86.js +0 -0
  678. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CC2rA5mh.js +0 -0
  679. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CC3Dc58n.js +0 -0
  680. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CCQjLJmZ.js +0 -0
  681. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CCUjCBK5.js +0 -0
  682. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CDeNXAV0.js +0 -0
  683. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CErjEBUy.js +0 -0
  684. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CFAvbRBv.js +0 -0
  685. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CGx505Mf.js +0 -0
  686. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CHQ94UKr.js +0 -0
  687. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CIPQ_RoX.js +0 -0
  688. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CIpIsXEF.js +0 -0
  689. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CJ3rzSJv.js +0 -0
  690. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CKgYSDhl.js +0 -0
  691. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CNhAU_yo.js +0 -0
  692. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/COeFqPAd.js +0 -0
  693. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/COju__tp.js +0 -0
  694. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CQihkeLA.js +0 -0
  695. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CRal5XOA.js +0 -0
  696. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CRfGWb83.js +0 -0
  697. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CRyZUaTi.js +0 -0
  698. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CRzLMJPS.js +0 -0
  699. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CSDNxAMC.js +0 -0
  700. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CTweb8Dz.js +0 -0
  701. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CUKGrt9p.js +0 -0
  702. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CVaqCwHa.js +0 -0
  703. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CW42rLZD.js +0 -0
  704. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CWDvEqlu.js +0 -0
  705. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CXHoNUfW.js +0 -0
  706. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CXtmUGW6.js +0 -0
  707. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CXuuVbXE.js +0 -0
  708. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CYsHHI_Y.js +0 -0
  709. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CZLZPU9y.js +0 -0
  710. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CZiHAFz-.js +0 -0
  711. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CZoCCMwk.js +0 -0
  712. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CZsCp6_J.js +0 -0
  713. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/C_8bwKvT.js +0 -0
  714. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CaLoWpdj.js +0 -0
  715. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CaP30uTv.js +0 -0
  716. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cb4Vim4T.js +0 -0
  717. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cba4tSYP.js +0 -0
  718. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CcwsVR0C.js +0 -0
  719. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CdkpiU2Y.js +0 -0
  720. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Ce441ncu.js +0 -0
  721. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Ceyelwdz.js +0 -0
  722. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cf9Ao90m.js +0 -0
  723. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CfSJPG6W.js +0 -0
  724. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cfl0F_Ix.js +0 -0
  725. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CfvQ0GVj.js +0 -0
  726. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ChJth8dy.js +0 -0
  727. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cimd5fb3.js +0 -0
  728. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CircleProgressbar.yGgm_qEa.css +0 -0
  729. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CjM6HreG.js +0 -0
  730. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CjSZG47B.js +0 -0
  731. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CkJ3IzwM.js +0 -0
  732. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CkRax0sH.js +0 -0
  733. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cl4KV_tk.js +0 -0
  734. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ClA4MMiD.js +0 -0
  735. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ClQpkZ_L.js +0 -0
  736. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ClamHrr6.js +0 -0
  737. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cm7r79vr.js +0 -0
  738. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cn3B6b9t.js +0 -0
  739. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cnfgdmp5.js +0 -0
  740. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CoKYUvtC.js +0 -0
  741. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CoMST1W2.js +0 -0
  742. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ComPDbET.js +0 -0
  743. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CopQ2nXW.js +0 -0
  744. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CowLSvep.js +0 -0
  745. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CozAH55r.js +0 -0
  746. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CpL23Fmb.js +0 -0
  747. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CpzslTdj.js +0 -0
  748. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cr7JoK-F.js +0 -0
  749. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CrVSgIkM.js +0 -0
  750. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CroGarxd.js +0 -0
  751. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cs2F2srj.js +0 -0
  752. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CsQS60Ue.js +0 -0
  753. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CsvMBhTu.js +0 -0
  754. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cu5M3efA.js +0 -0
  755. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CvrMaf9k.js +0 -0
  756. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CximN0RY.js +0 -0
  757. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CyaoTIaz.js +0 -0
  758. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/CytPyiJO.js +0 -0
  759. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Cz7rf_X8.js +0 -0
  760. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Czxs1Lr1.js +0 -0
  761. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D-9WcGfc.js +0 -0
  762. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D-kcNTYM.js +0 -0
  763. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D-oSqn_W.js +0 -0
  764. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D-ptJ9y-.js +0 -0
  765. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D05T4iGw.js +0 -0
  766. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D0mw5jGK.js +0 -0
  767. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D1Ny8MsW.js +0 -0
  768. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D2VuFIIh.js +0 -0
  769. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D2ymy_yS.js +0 -0
  770. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D3hlyOfw.js +0 -0
  771. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D4-rlkSU.js +0 -0
  772. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D5GhRiPb.js +0 -0
  773. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D5ROd09N.js +0 -0
  774. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D76weKjv.js +0 -0
  775. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D94iqX0Y.js +0 -0
  776. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D9y3cZ0N.js +0 -0
  777. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DBG_jd69.js +0 -0
  778. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DBrRvF6k.js +0 -0
  779. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DCMvuGdi.js +0 -0
  780. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DCQb3MpD.js +0 -0
  781. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DD3ehtKZ.js +0 -0
  782. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DDpmG2fV.js +0 -0
  783. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DDwmkQR0.js +0 -0
  784. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DE9FIzhz.js +0 -0
  785. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DEzv-VFF.js +0 -0
  786. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DFfOA-Hn.js +0 -0
  787. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DFfgcuRt.js +0 -0
  788. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DFwEHpFD.js +0 -0
  789. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DGnxmmBi.js +0 -0
  790. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DHBI_yxQ.js +0 -0
  791. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DHPkxzYJ.js +0 -0
  792. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DHpiXF5c.js +0 -0
  793. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DIMkf-bt.js +0 -0
  794. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DISqw1ZD.js +0 -0
  795. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DJW761E_.js +0 -0
  796. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DK0GhfdP.js +0 -0
  797. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DKCQ3kY7.js +0 -0
  798. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DLJdWeDZ.js +0 -0
  799. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DLMcThcU.js +0 -0
  800. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DLSXrvMj.js +0 -0
  801. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DMUM7wLl.js +0 -0
  802. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DMZUnbo6.js +0 -0
  803. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DMnEoi8l.js +0 -0
  804. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DNvWHFeH.js +0 -0
  805. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DOTl9kKz.js +0 -0
  806. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DOwBwxAc.js +0 -0
  807. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DPDvM2ct.js +0 -0
  808. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DPUBG1Sa.js +0 -0
  809. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DQ-b8cau.js +0 -0
  810. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DQPPsGdR.js +0 -0
  811. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DQU07tlD.js +0 -0
  812. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DQeMqN38.js +0 -0
  813. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DQwYfKfQ.js +0 -0
  814. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DRFjx7u4.js +0 -0
  815. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DRQTUBBy.js +0 -0
  816. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DSRkZAVd.js +0 -0
  817. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DSh2HLQt.js +0 -0
  818. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DSxVysNG.js +0 -0
  819. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DT7zqm-g.js +0 -0
  820. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DTj74zXo.js +0 -0
  821. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DUxEecLs.js +0 -0
  822. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DV17i1UV.js +0 -0
  823. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DV3o63ZY.js +0 -0
  824. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DVG0V4jx.js +0 -0
  825. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DVQuIRkW.js +0 -0
  826. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DWiCCCWX.js +0 -0
  827. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DX9HmIul.js +0 -0
  828. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DXG-b-1a.js +0 -0
  829. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DXgieCCJ.js +0 -0
  830. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DYRyhno9.js +0 -0
  831. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DYlRzrDj.js +0 -0
  832. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DZFCIeNp.js +0 -0
  833. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DZWexK4Q.js +0 -0
  834. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D_Lu-MrJ.js +0 -0
  835. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D_Qp7VhD.js +0 -0
  836. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D_Sm39l5.js +0 -0
  837. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/D_XYh1V1.js +0 -0
  838. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DajP-uHd.js +0 -0
  839. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DauUninz.js +0 -0
  840. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DaxD0QDq.js +0 -0
  841. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DaxQctDl.js +0 -0
  842. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Db4fpp4X.js +0 -0
  843. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DbInun42.js +0 -0
  844. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dbw3yKNo.js +0 -0
  845. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dc0bEyG5.js +0 -0
  846. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DdL9SqIa.js +0 -0
  847. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DdZzhEjZ.js +0 -0
  848. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dduc7CfM.js +0 -0
  849. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/De2hgUGE.js +0 -0
  850. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DezsRK8O.js +0 -0
  851. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Df2xbC6M.js +0 -0
  852. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DfC9-Oas.js +0 -0
  853. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DgPtEepw.js +0 -0
  854. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DgfQ8roX.js +0 -0
  855. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DhmEMT88.js +0 -0
  856. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DiqhDmo8.js +0 -0
  857. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Diy88_8O.js +0 -0
  858. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DjAgHZrJ.js +0 -0
  859. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DkiUMXvE.js +0 -0
  860. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DkmNSMHY.js +0 -0
  861. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DkqhCAOL.js +0 -0
  862. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dl3pNQBR.js +0 -0
  863. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DlxfLgwf.js +0 -0
  864. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DmFYnCc9.js +0 -0
  865. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DmHpPYUd.js +0 -0
  866. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DmNVVboZ.js +0 -0
  867. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dmf8Y0ON.js +0 -0
  868. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dmhjelgj.js +0 -0
  869. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DmnVzVBc.js +0 -0
  870. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DnKPLd6d.js +0 -0
  871. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DnToyrRv.js +0 -0
  872. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Do35n8oq.js +0 -0
  873. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DpFanUEy.js +0 -0
  874. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DpTtcPZs.js +0 -0
  875. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dpc0kmwU.js +0 -0
  876. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dq8dNoUO.js +0 -0
  877. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DqJzYO7Y.js +0 -0
  878. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DqXIJaHE.js +0 -0
  879. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DrH0SRf2.js +0 -0
  880. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Ds29f9ZA.js +0 -0
  881. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Ds9iBrvx.js +0 -0
  882. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dt39crSB.js +0 -0
  883. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dt9aNFbE.js +0 -0
  884. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DtX02f_x.js +0 -0
  885. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DtiqU4Ud.js +0 -0
  886. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DtqQGdEG.js +0 -0
  887. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dw3KmPTn.js +0 -0
  888. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/DxSv1ANE.js +0 -0
  889. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dxj8dFzq.js +0 -0
  890. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dxp_UTNE.js +0 -0
  891. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dyqgk9ID.js +0 -0
  892. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Dz8kfdTw.js +0 -0
  893. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/E1ZWqqYd.js +0 -0
  894. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/EJNjM-U5.js +0 -0
  895. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/EUqPIrTm.js +0 -0
  896. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/EkTgQK41.js +0 -0
  897. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Ffc-wpi1.js +0 -0
  898. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/FvmIjYaQ.js +0 -0
  899. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/G2qN-x4c.js +0 -0
  900. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/HSRijeU2.js +0 -0
  901. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/HVfn8BjE.js +0 -0
  902. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/HbO86Wj8.js +0 -0
  903. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Hsn-rFuA.js +0 -0
  904. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Hza2DNlp.js +0 -0
  905. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ICt9zdTY.js +0 -0
  906. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/IKeJ43Xq.js +0 -0
  907. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/IXshMDJQ.js +0 -0
  908. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Inter-VariableFont_slnt_wght.Cl4AQHp9.ttf +0 -0
  909. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/J0iKGLDy.js +0 -0
  910. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/JVoApnG_.js +0 -0
  911. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/JjuYFqoF.js +0 -0
  912. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/JpkrmRYq.js +0 -0
  913. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/JxrqHDML.js +0 -0
  914. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/KgIFLbLy.js +0 -0
  915. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/L2jIIa9o.js +0 -0
  916. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/LO_BkMJ8.js +0 -0
  917. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/LiveTabs.rsQh4sN8.css +0 -0
  918. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/MajH5w9w.js +0 -0
  919. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/NEE52Syq.js +0 -0
  920. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/OwFc4i_0.js +0 -0
  921. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ProgressStatusText.BQK0FaGL.css +0 -0
  922. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/QZfQtQzF.js +0 -0
  923. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/QoymgQo0.js +0 -0
  924. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/SOo6toE5.js +0 -0
  925. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/SRo1HocX.js +0 -0
  926. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/StrategiesSidebar.B-brLowb.css +0 -0
  927. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/TDhf81zB.js +0 -0
  928. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/TGksF7tq.js +0 -0
  929. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/TradeHistoryChart.Bs0aEPiQ.css +0 -0
  930. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/VbXTXTou.js +0 -0
  931. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/WF6tEroY.js +0 -0
  932. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/WFnVOHr3.js +0 -0
  933. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/WGRu4rDx.js +0 -0
  934. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/WZ5HE0X3.js +0 -0
  935. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Y2pL5qgw.js +0 -0
  936. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/YdFKNLmY.js +0 -0
  937. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/Z5eAx3Zn.js +0 -0
  938. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_3zCpt1T.js +0 -0
  939. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_7BVYBMY.js +0 -0
  940. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_b8AQjYy.js +0 -0
  941. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_id_.B7_JgFfA.css +0 -0
  942. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_id_.Cb3WvDCW.css +0 -0
  943. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_id_.j0n5fqTK.css +0 -0
  944. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/_z_6LxFK.js +0 -0
  945. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/aYLzAr85.js +0 -0
  946. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/axvP9fKg.js +0 -0
  947. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/b50CsBaQ.js +0 -0
  948. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/bBgN0Y0r.js +0 -0
  949. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/bTuwJoIa.js +0 -0
  950. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/bWuRL8Ho.js +0 -0
  951. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/codicon.Brq4_Ui5.ttf +0 -0
  952. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/css.worker-B_vtbeex.js +0 -0
  953. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/dhy_KTgc.js +0 -0
  954. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/eENhBx9Z.js +0 -0
  955. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/editor.BVn6Eoal.css +0 -0
  956. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/entry.DU6LnkKz.css +0 -0
  957. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/error-404.DjFB7pgG.css +0 -0
  958. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/error-500.BG9pmads.css +0 -0
  959. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/fmXr3nnJ.js +0 -0
  960. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/foABv0nJ.js +0 -0
  961. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/fwtXNY1n.js +0 -0
  962. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/gEsa7Idh.js +0 -0
  963. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/gp-XZpBa.js +0 -0
  964. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/hBpBmjHp.js +0 -0
  965. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/hdxB67uV.js +0 -0
  966. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/hePW80VL.js +0 -0
  967. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/html.worker-C0o__ma4.js +0 -0
  968. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/i0X4ZdIN.js +0 -0
  969. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ibI1KQep.js +0 -0
  970. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/j5_BjaI1.js +0 -0
  971. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/json.worker-YsJGeJy7.js +0 -0
  972. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/jz3gp08z.js +0 -0
  973. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/lP7_xLqx.js +0 -0
  974. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/live.BHsUui2i.css +0 -0
  975. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/logo-dark.tKoQPl1k.svg +0 -0
  976. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/logo-light.CS4l4ePq.png +0 -0
  977. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/mnTiCSRt.js +0 -0
  978. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/monte-carlo.SA-Jni4T.css +0 -0
  979. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/nFMaYfgc.js +0 -0
  980. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/nr791fC2.js +0 -0
  981. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/nrRF7I-f.js +0 -0
  982. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/nuxt-monaco-editor/node_modules/monaco-editor/esm/metadata.d.ts +0 -0
  983. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/nuxt-monaco-editor/node_modules/monaco-editor/esm/metadata.js +0 -0
  984. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/oN7GSZWc.js +0 -0
  985. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/onAF5SnQ.js +0 -0
  986. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/oz_6vUea.js +0 -0
  987. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/paCCX65n.js +0 -0
  988. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/pages.2jeyaLEx.css +0 -0
  989. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/qpEHnBAB.js +0 -0
  990. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/sB-x3p7T.js +0 -0
  991. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/sBoK_t0W.js +0 -0
  992. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/sTdyETAW.js +0 -0
  993. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/significance-test.C3_9t58f.css +0 -0
  994. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/sltzmVWM.js +0 -0
  995. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/strategies.CZAezJwX.css +0 -0
  996. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/toggleHighContrast.BIHgMxab.css +0 -0
  997. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/ts.worker-BN13fC-t.js +0 -0
  998. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/u9_Y1g7K.js +0 -0
  999. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/uFMmaQO6.js +0 -0
  1000. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/uHUmCDd7.js +0 -0
  1001. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/uR-B8b7I.js +0 -0
  1002. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/u_o9HDF2.js +0 -0
  1003. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/uhdI0v04.js +0 -0
  1004. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/v-e-WZYS.js +0 -0
  1005. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/v5am0c2l.js +0 -0
  1006. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/vC0cNbDJ.js +0 -0
  1007. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/vc9XnyOF.js +0 -0
  1008. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/wbypxrpR.js +0 -0
  1009. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/xAOFb7cl.js +0 -0
  1010. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/xQegFPeJ.js +0 -0
  1011. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/xgNQ-z8D.js +0 -0
  1012. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/xk2_4sNk.js +0 -0
  1013. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/y2WM_oP3.js +0 -0
  1014. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/y_x7m0Ik.js +0 -0
  1015. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/yjvMp0c6.js +0 -0
  1016. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/_nuxt/yqdSDlAg.js +0 -0
  1017. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/favicon.ico +0 -0
  1018. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/favicons/android-chrome-192x192.png +0 -0
  1019. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/favicons/android-chrome-512x512.png +0 -0
  1020. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/favicons/apple-touch-icon.png +0 -0
  1021. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/favicons/favicon-16x16.png +0 -0
  1022. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/favicons/favicon-32x32.png +0 -0
  1023. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/index.html +0 -0
  1024. {jesse-3.3.2 → jesse-3.3.3}/jesse/static/robots.txt +0 -0
  1025. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/__init__.py +0 -0
  1026. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_app.py +0 -0
  1027. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_candles.py +0 -0
  1028. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_closed_trades.py +0 -0
  1029. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_exchanges.py +0 -0
  1030. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_logs.py +0 -0
  1031. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_orderbook.py +0 -0
  1032. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_orders.py +0 -0
  1033. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_positions.py +0 -0
  1034. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_tickers.py +0 -0
  1035. {jesse-3.3.2 → jesse-3.3.3}/jesse/store/state_trades.py +0 -0
  1036. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/CanAddClosedTradeToStore/__init__.py +0 -0
  1037. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/RealStrategyRegression1/__init__.py +0 -0
  1038. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/RealStrategyRegression2/__init__.py +0 -0
  1039. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/RealStrategyRegression3/__init__.py +0 -0
  1040. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Strategy.py +0 -0
  1041. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test01/__init__.py +0 -0
  1042. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test02/__init__.py +0 -0
  1043. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test04/__init__.py +0 -0
  1044. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test05/__init__.py +0 -0
  1045. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test06/__init__.py +0 -0
  1046. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test07/__init__.py +0 -0
  1047. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test08/__init__.py +0 -0
  1048. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test09/__init__.py +0 -0
  1049. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test10/__init__.py +0 -0
  1050. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test11/__init__.py +0 -0
  1051. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test12/__init__.py +0 -0
  1052. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test13/__init__.py +0 -0
  1053. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test14/__init__.py +0 -0
  1054. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test15/__init__.py +0 -0
  1055. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test16/__init__.py +0 -0
  1056. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test17/__init__.py +0 -0
  1057. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test18/__init__.py +0 -0
  1058. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test19/__init__.py +0 -0
  1059. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test20/__init__.py +0 -0
  1060. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test21/__init__.py +0 -0
  1061. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test22/__init__.py +0 -0
  1062. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test23/__init__.py +0 -0
  1063. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test24/__init__.py +0 -0
  1064. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test25/__init__.py +0 -0
  1065. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test26/__init__.py +0 -0
  1066. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test27/__init__.py +0 -0
  1067. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test28/__init__.py +0 -0
  1068. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test29/__init__.py +0 -0
  1069. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test30/__init__.py +0 -0
  1070. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test31/__init__.py +0 -0
  1071. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test32/__init__.py +0 -0
  1072. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test33/__init__.py +0 -0
  1073. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test34/__init__.py +0 -0
  1074. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test35/__init__.py +0 -0
  1075. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test36/__init__.py +0 -0
  1076. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test37/__init__.py +0 -0
  1077. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test38/__init__.py +0 -0
  1078. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test39/__init__.py +0 -0
  1079. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test40/__init__.py +0 -0
  1080. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test41/__init__.py +0 -0
  1081. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test44/__init__.py +0 -0
  1082. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test45/__init__.py +0 -0
  1083. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test46/__init__.py +0 -0
  1084. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test47/__init__.py +0 -0
  1085. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/Test48/__init__.py +0 -0
  1086. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestAddHorizontalLineToCandleChart/__init__.py +0 -0
  1087. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestAddHorizontalLineToExtraChart/__init__.py +0 -0
  1088. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestAddLineToCandleChart/__init__.py +0 -0
  1089. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestAddLineToExtraChart/__init__.py +0 -0
  1090. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestAfterMethod/__init__.py +0 -0
  1091. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestAverageEntryPriceProperty/__init__.py +0 -0
  1092. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestBalanceAndFeeReductionWorksCorrectlyInSpotModeInBothBuyAndSellOrders/__init__.py +0 -0
  1093. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestBalancesAreHandledCorrectlyForCancellingOrdersInSpot/__init__.py +0 -0
  1094. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestBaseAndQuoteAssetProperties/__init__.py +0 -0
  1095. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestBeforeMethod/__init__.py +0 -0
  1096. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestBeforeTerminate/__init__.py +0 -0
  1097. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong1/__init__.py +0 -0
  1098. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong2/__init__.py +0 -0
  1099. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort1/__init__.py +0 -0
  1100. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort2/__init__.py +0 -0
  1101. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanOpenANewPositionImmediatelyAfterClosingViaUpdatePosition/__init__.py +0 -0
  1102. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanRunWithoutShorting/__init__.py +0 -0
  1103. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
  1104. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
  1105. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanSubmitTakeProfitAndStopLossAtSameTimeInSpot/__init__.py +0 -0
  1106. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
  1107. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
  1108. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCannotSetStopLossOrderInGoLong/__init__.py +0 -0
  1109. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCannotSetTakeProfitOrderInGoLong/__init__.py +0 -0
  1110. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCannotSpendMoreThanAvailableBalance/__init__.py +0 -0
  1111. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCannotSubmitStopLossOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
  1112. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCannotSubmitTakeProfitOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
  1113. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCapitalPropertyRaisesNotImplementedError/__init__.py +0 -0
  1114. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestClosedTradeAfterExitingTrade/__init__.py +0 -0
  1115. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCommonWarmupStart/__init__.py +0 -0
  1116. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCurrentRouteIndex1/__init__.py +0 -0
  1117. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestCurrentRouteIndex2/__init__.py +0 -0
  1118. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestDailyBalanceStoresPortfolioValue/__init__.py +0 -0
  1119. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestDailyBalancesProperty/__init__.py +0 -0
  1120. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestDataRoutes1/__init__.py +0 -0
  1121. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestDataRoutes2/__init__.py +0 -0
  1122. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestDefaultHyperparameters/__init__.py +0 -0
  1123. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestDnaMethod/__init__.py +0 -0
  1124. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestEmptyStrategy/__init__.py +0 -0
  1125. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestEntryOrdersAndExitOrdersProperties/__init__.py +0 -0
  1126. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestExchangeTypeProperty1/__init__.py +0 -0
  1127. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestExchangeTypeProperty2/__init__.py +0 -0
  1128. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestFuturesExchangeAvailableMargin/__init__.py +0 -0
  1129. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestGeneratedDataRouteExecutionBTC/__init__.py +0 -0
  1130. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestGeneratedDataRouteExecutionETH/__init__.py +0 -0
  1131. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestHasLongAndShortEntryOrdersPropertiesInFilters/__init__.py +0 -0
  1132. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestHasLongEntryOrdersProperty/__init__.py +0 -0
  1133. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestHasShortEntryOrdersProperty/__init__.py +0 -0
  1134. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestIncreasedAndReducedCount/__init__.py +0 -0
  1135. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestIncreasingShortPosition/__init__.py +0 -0
  1136. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestInsufficientMargin1/__init__.py +0 -0
  1137. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestInsufficientMargin2/__init__.py +0 -0
  1138. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestInsufficientMargin3/__init__.py +0 -0
  1139. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLeverageProperty1/__init__.py +0 -0
  1140. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLeverageProperty2/__init__.py +0 -0
  1141. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLiquidationInCrossModeForShortTrade/__init__.py +0 -0
  1142. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLiquidationInIsolatedModeForLongTrade/__init__.py +0 -0
  1143. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLiquidationInIsolatedModeForShortTrade/__init__.py +0 -0
  1144. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLogMethodInStrategyClass/__init__.py +0 -0
  1145. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLongLifecycleAcrossTradingModes/__init__.py +0 -0
  1146. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestLongSparseGap/__init__.py +0 -0
  1147. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMarkPrice/__init__.py +0 -0
  1148. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMarketOrderForLowPriceDifference/__init__.py +0 -0
  1149. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMetrics1/__init__.py +0 -0
  1150. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMultiInstrumentReplayA/__init__.py +0 -0
  1151. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMultiInstrumentReplayB/__init__.py +0 -0
  1152. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryLongPositions/__init__.py +0 -0
  1153. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryShortPositions/__init__.py +0 -0
  1154. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOnCancelMethod/__init__.py +0 -0
  1155. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOnClosePosition/__init__.py +0 -0
  1156. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOnRouteOpenPosition/__init__.py +0 -0
  1157. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOnRouteOpenPosition2/__init__.py +0 -0
  1158. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOptimizationIsolation/__init__.py +0 -0
  1159. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOrderIsStopLossProperty/__init__.py +0 -0
  1160. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOrderIsTakeProfitProperty/__init__.py +0 -0
  1161. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOrderPriceCannotBeGreaterThanZero/__init__.py +0 -0
  1162. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOrderValueProperty/__init__.py +0 -0
  1163. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOrdersAreSortedBeforeExecution/__init__.py +0 -0
  1164. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestOversizedReduceOnlyExitAccounting/__init__.py +0 -0
  1165. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPortfolioValue/__init__.py +0 -0
  1166. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPortfolioValueIncludesPositionValueAndOpenOrdersValue/__init__.py +0 -0
  1167. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositionExchangeTypeProperty1/__init__.py +0 -0
  1168. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositionExchangeTypeProperty2/__init__.py +0 -0
  1169. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositionOpenIncreaseReduceCloseEventsInSpot/__init__.py +0 -0
  1170. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositionTotalCostProperty/__init__.py +0 -0
  1171. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositionWithLeverage1/__init__.py +0 -0
  1172. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositionWithLeverage2/__init__.py +0 -0
  1173. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestPositions/__init__.py +0 -0
  1174. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestProperBalanceHanldingInSpotAfterOrderCancellation/__init__.py +0 -0
  1175. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestProtectiveOrdersAcrossTradingModes/__init__.py +0 -0
  1176. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestReduceOnlyMarketOrders/__init__.py +0 -0
  1177. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestRuleSignificanceAlignment/__init__.py +0 -0
  1178. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestRuleSignificanceFailure/__init__.py +0 -0
  1179. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestShortInSpot/__init__.py +0 -0
  1180. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestSparseTimestampRoutes/__init__.py +0 -0
  1181. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceLongPosition/__init__.py +0 -0
  1182. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceShortPosition/__init__.py +0 -0
  1183. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestStopOrderShouldConsiderExecutedTakeProfitOrdersInSpot/__init__.py +0 -0
  1184. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestStrategyChartsReport/__init__.py +0 -0
  1185. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestStrategyVariablesAreResetBeforeOpeningNewPosition/__init__.py +0 -0
  1186. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientLongPosition/__init__.py +0 -0
  1187. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientShortPosition/__init__.py +0 -0
  1188. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestTerminate/__init__.py +0 -0
  1189. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestTradingHours/__init__.py +0 -0
  1190. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestUsageOfShouldCancelRaisesNotImplementedError/__init__.py +0 -0
  1191. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestVanillaStrategy/__init__.py +0 -0
  1192. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestWalletBalance/__init__.py +0 -0
  1193. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/TestWithoutCancelMethod/__init__.py +0 -0
  1194. {jesse-3.3.2 → jesse-3.3.3}/jesse/strategies/__init__.py +0 -0
  1195. {jesse-3.3.2 → jesse-3.3.3}/jesse/testing_utils.py +0 -0
  1196. {jesse-3.3.2 → jesse-3.3.3}/jesse/utils.py +0 -0
  1197. {jesse-3.3.2 → jesse-3.3.3}/jesse.egg-info/dependency_links.txt +0 -0
  1198. {jesse-3.3.2 → jesse-3.3.3}/jesse.egg-info/entry_points.txt +0 -0
  1199. {jesse-3.3.2 → jesse-3.3.3}/jesse.egg-info/top_level.txt +0 -0
  1200. {jesse-3.3.2 → jesse-3.3.3}/setup.cfg +0 -0
  1201. {jesse-3.3.2 → jesse-3.3.3}/setup.py +0 -0
  1202. {jesse-3.3.2 → jesse-3.3.3}/tests/__init__.py +0 -0
  1203. {jesse-3.3.2 → jesse-3.3.3}/tests/data/__init__.py +0 -0
  1204. {jesse-3.3.2 → jesse-3.3.3}/tests/data/test_candles_0.py +0 -0
  1205. {jesse-3.3.2 → jesse-3.3.3}/tests/data/test_candles_1.py +0 -0
  1206. {jesse-3.3.2 → jesse-3.3.3}/tests/data/test_candles_indicators.py +0 -0
  1207. {jesse-3.3.2 → jesse-3.3.3}/tests/mcp_tool_adapters.py +0 -0
  1208. {jesse-3.3.2 → jesse-3.3.3}/tests/test_backtest.py +0 -0
  1209. {jesse-3.3.2 → jesse-3.3.3}/tests/test_backtest_session_chart_data.py +0 -0
  1210. {jesse-3.3.2 → jesse-3.3.3}/tests/test_backtest_session_chart_images.py +0 -0
  1211. {jesse-3.3.2 → jesse-3.3.3}/tests/test_broker.py +0 -0
  1212. {jesse-3.3.2 → jesse-3.3.3}/tests/test_candle_copy.py +0 -0
  1213. {jesse-3.3.2 → jesse-3.3.3}/tests/test_candle_service.py +0 -0
  1214. {jesse-3.3.2 → jesse-3.3.3}/tests/test_candle_timeframe_filter.py +0 -0
  1215. {jesse-3.3.2 → jesse-3.3.3}/tests/test_chart_data_serialization.py +0 -0
  1216. {jesse-3.3.2 → jesse-3.3.3}/tests/test_completed_trade.py +0 -0
  1217. {jesse-3.3.2 → jesse-3.3.3}/tests/test_config_safety.py +0 -0
  1218. {jesse-3.3.2 → jesse-3.3.3}/tests/test_conflicting_orders.py +0 -0
  1219. {jesse-3.3.2 → jesse-3.3.3}/tests/test_coordination.py +0 -0
  1220. {jesse-3.3.2 → jesse-3.3.3}/tests/test_coordination_helpers.py +0 -0
  1221. {jesse-3.3.2 → jesse-3.3.3}/tests/test_dashboard_url.py +0 -0
  1222. {jesse-3.3.2 → jesse-3.3.3}/tests/test_dynamic_numpy_array.py +0 -0
  1223. {jesse-3.3.2 → jesse-3.3.3}/tests/test_e2e_database.py +0 -0
  1224. {jesse-3.3.2 → jesse-3.3.3}/tests/test_exchange.py +0 -0
  1225. {jesse-3.3.2 → jesse-3.3.3}/tests/test_helpers.py +0 -0
  1226. {jesse-3.3.2 → jesse-3.3.3}/tests/test_historical_data_contracts.py +0 -0
  1227. {jesse-3.3.2 → jesse-3.3.3}/tests/test_import_and_backtest_request_boundaries.py +0 -0
  1228. {jesse-3.3.2 → jesse-3.3.3}/tests/test_import_candle_drivers.py +0 -0
  1229. {jesse-3.3.2 → jesse-3.3.3}/tests/test_import_candles.py +0 -0
  1230. {jesse-3.3.2 → jesse-3.3.3}/tests/test_import_candles_workflow.py +0 -0
  1231. {jesse-3.3.2 → jesse-3.3.3}/tests/test_indicators.py +0 -0
  1232. {jesse-3.3.2 → jesse-3.3.3}/tests/test_isolated_backtest.py +0 -0
  1233. {jesse-3.3.2 → jesse-3.3.3}/tests/test_jesse_trade_routes.py +0 -0
  1234. {jesse-3.3.2 → jesse-3.3.3}/tests/test_live_session_chart_data.py +0 -0
  1235. {jesse-3.3.2 → jesse-3.3.3}/tests/test_live_strategy_charts.py +0 -0
  1236. {jesse-3.3.2 → jesse-3.3.3}/tests/test_lsp.py +0 -0
  1237. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_auth.py +0 -0
  1238. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_config.py +0 -0
  1239. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_credentials.py +0 -0
  1240. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_live_sessions.py +0 -0
  1241. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_resources.py +0 -0
  1242. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_session_analysis_integration.py +0 -0
  1243. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_session_results.py +0 -0
  1244. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_strategy_catalog.py +0 -0
  1245. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_usage_limits.py +0 -0
  1246. {jesse-3.3.2 → jesse-3.3.3}/tests/test_mcp_worker_port.py +0 -0
  1247. {jesse-3.3.2 → jesse-3.3.3}/tests/test_metrics.py +0 -0
  1248. {jesse-3.3.2 → jesse-3.3.3}/tests/test_optimization_and_monte_carlo_session_failures.py +0 -0
  1249. {jesse-3.3.2 → jesse-3.3.3}/tests/test_order.py +0 -0
  1250. {jesse-3.3.2 → jesse-3.3.3}/tests/test_parent_strategy.py +0 -0
  1251. {jesse-3.3.2 → jesse-3.3.3}/tests/test_position.py +0 -0
  1252. {jesse-3.3.2 → jesse-3.3.3}/tests/test_price_gap_backtest.py +0 -0
  1253. {jesse-3.3.2 → jesse-3.3.3}/tests/test_progressbar.py +0 -0
  1254. {jesse-3.3.2 → jesse-3.3.3}/tests/test_real_strategy_regression.py +0 -0
  1255. {jesse-3.3.2 → jesse-3.3.3}/tests/test_research.py +0 -0
  1256. {jesse-3.3.2 → jesse-3.3.3}/tests/test_router.py +0 -0
  1257. {jesse-3.3.2 → jesse-3.3.3}/tests/test_rule_significance_testing.py +0 -0
  1258. {jesse-3.3.2 → jesse-3.3.3}/tests/test_session_scoped_configuration.py +0 -0
  1259. {jesse-3.3.2 → jesse-3.3.3}/tests/test_significance_test_session.py +0 -0
  1260. {jesse-3.3.2 → jesse-3.3.3}/tests/test_simulator_parity.py +0 -0
  1261. {jesse-3.3.2 → jesse-3.3.3}/tests/test_spot_mode.py +0 -0
  1262. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_candle.py +0 -0
  1263. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_exchanges.py +0 -0
  1264. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_logs.py +0 -0
  1265. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_orderbook.py +0 -0
  1266. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_orders.py +0 -0
  1267. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_ticker.py +0 -0
  1268. {jesse-3.3.2 → jesse-3.3.3}/tests/test_state_trades.py +0 -0
  1269. {jesse-3.3.2 → jesse-3.3.3}/tests/test_trading_hours.py +0 -0
  1270. {jesse-3.3.2 → jesse-3.3.3}/tests/test_trading_mode_contracts.py +0 -0
  1271. {jesse-3.3.2 → jesse-3.3.3}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jesse
3
- Version: 3.3.2
3
+ Version: 3.3.3
4
4
  Summary: A trading framework for cryptocurrencies
5
5
  Home-page: https://jesse.trade
6
6
  Author: Saleh Mir
@@ -42,7 +42,8 @@ Requires-Dist: PyJWT~=2.11.0
42
42
  Requires-Dist: cryptography~=42.0.5
43
43
  Requires-Dist: ecdsa>=0.16.0
44
44
  Requires-Dist: optuna~=4.2.0
45
- Requires-Dist: ray
45
+ Requires-Dist: ray; sys_platform != "win32"
46
+ Requires-Dist: ray>=2.48.0; sys_platform == "win32"
46
47
  Requires-Dist: eth-account~=0.13.5
47
48
  Requires-Dist: msgpack~=1.1.0
48
49
  Requires-Dist: starkbank-ecdsa~=1.1.0
@@ -5,7 +5,7 @@ import ray
5
5
  import numpy as np
6
6
  import jesse.helpers as jh
7
7
  from jesse.services.progress import publish_status
8
- from jesse.services.ray_runtime import initialize_ray
8
+ from jesse.services.ray_runtime import UnsupportedRayVersionError, initialize_ray
9
9
  import jesse.services.logger as logger
10
10
  from jesse import exceptions
11
11
  from jesse.services.redis import sync_publish, is_process_active
@@ -82,8 +82,9 @@ class MonteCarloRunner:
82
82
  initialize_ray(self.cpu_cores)
83
83
  logger.log_monte_carlo(f"Successfully started Monte Carlo session with {self.cpu_cores} CPU cores", session_id=self.session_id)
84
84
  self.ray_started_here = True
85
- except MemoryError:
86
- # Startup memory limits also cover Ray services and the worker heap.
85
+ except (MemoryError, UnsupportedRayVersionError):
86
+ # Startup memory limits also cover Ray services and the worker heap, and
87
+ # fewer CPUs cannot make an unsupported Ray start.
87
88
  raise
88
89
  except Exception as e:
89
90
  logger.log_monte_carlo(f"Error initializing Ray: {e}. Falling back to 1 CPU.", session_id=self.session_id)
@@ -7,7 +7,7 @@ import ray
7
7
  import numpy as np
8
8
  import jesse.helpers as jh
9
9
  from jesse.services.progress import publish_status
10
- from jesse.services.ray_runtime import initialize_ray
10
+ from jesse.services.ray_runtime import UnsupportedRayVersionError, initialize_ray
11
11
  import jesse.services.logger as logger
12
12
  from jesse import exceptions
13
13
  from jesse.services.redis import sync_publish
@@ -163,8 +163,9 @@ class Optimizer:
163
163
  initialize_ray(self.cpu_cores)
164
164
  logger.log_optimize_mode(f"Successfully started optimization session with {self.cpu_cores} CPU cores", self.session_id )
165
165
  self.ray_started_here = True
166
- except MemoryError:
167
- # Startup memory limits also cover Ray services and the worker heap.
166
+ except (MemoryError, UnsupportedRayVersionError):
167
+ # Startup memory limits also cover Ray services and the worker heap, and
168
+ # fewer CPUs cannot make an unsupported Ray start.
168
169
  raise
169
170
  except Exception as e:
170
171
  logger.log_optimize_mode(f"Error initializing Ray: {e}. Falling back to 1 CPU.", self.session_id )
@@ -6,6 +6,7 @@ import os
6
6
  from datetime import datetime
7
7
  import jesse.helpers as jh
8
8
  from jesse.research import backtest
9
+ from jesse.services.ray_runtime import initialize_ray
9
10
  import matplotlib
10
11
  matplotlib.use('Agg') # Use non-interactive backend
11
12
  from matplotlib import pyplot as plt
@@ -132,7 +133,7 @@ def monte_carlo_candles(
132
133
  ray_started_here = False
133
134
  if not ray.is_initialized():
134
135
  try:
135
- ray.init(num_cpus=cpu_cores, ignore_reinit_error=True)
136
+ initialize_ray(cpu_cores)
136
137
  print(f"Successfully started Monte Carlo simulation with {cpu_cores} CPU cores")
137
138
  ray_started_here = True
138
139
  except Exception as e:
@@ -7,6 +7,7 @@ import os
7
7
  from datetime import datetime
8
8
  import jesse.helpers as jh
9
9
  from jesse.research import backtest
10
+ from jesse.services.ray_runtime import initialize_ray
10
11
  from jesse.services.simulation_assumptions import resolve_annualization
11
12
  import matplotlib
12
13
  matplotlib.use('Agg') # Use non-interactive backend
@@ -156,7 +157,7 @@ def monte_carlo_trades(
156
157
  ray_started_here = False
157
158
  if not ray.is_initialized():
158
159
  try:
159
- ray.init(num_cpus=cpu_cores, ignore_reinit_error=True)
160
+ initialize_ray(cpu_cores)
160
161
  print(f"Successfully started Monte Carlo simulation with {cpu_cores} CPU cores")
161
162
  ray_started_here = True
162
163
  except Exception as e:
@@ -14,6 +14,7 @@ from jesse import exceptions
14
14
  from jesse.config import config as jesse_config, set_config
15
15
  from jesse.research.backtest import _reset_research_runtime_state
16
16
  from jesse.research.monte_carlo.common import DEFAULT_CPU_USAGE_RATIO, MIN_CPU_CORES
17
+ from jesse.services.ray_runtime import initialize_ray
17
18
 
18
19
  from jesse.routes import router
19
20
 
@@ -227,7 +228,7 @@ def _execute_optimize(
227
228
  # ------------------------------------------------------------ init Ray
228
229
  ray_started_here = False
229
230
  if not ray.is_initialized():
230
- ray.init(num_cpus=cpu_cores, ignore_reinit_error=True)
231
+ initialize_ray(cpu_cores)
231
232
  ray_started_here = True
232
233
 
233
234
  best_trials: list = []
@@ -22,13 +22,19 @@ the assistant: one stored session each (jesse.services.session_results), or the
22
22
  trades or orders of a date window across sessions (jesse.services.live_history), streamed to
23
23
  disk one batch at a time.
24
24
 
25
+ Workspace privacy: on POSIX, workspaces and snapshots are created 0o700 / 0o600. On Windows those
26
+ modes are not applied; workspaces inherit their parent folder's ACL. Jesse does not set a private
27
+ DACL, so snapshot privacy depends on the project's storage-folder permissions.
28
+
25
29
  The code is NOT sandboxed: it runs as the Jesse user with Jesse's environment, filesystem,
26
30
  database, and network access. The workspace layout and the artifact path checks below only
27
31
  decide which files Jesse serves back; they do not limit what the code can do. After a Jesse
28
32
  crash, a job's process may outlive its record; cleanup treats that record as finished, so
29
- the workspace can be deleted while the orphaned process still runs.
33
+ the workspace can be deleted while the orphaned process still runs. (On Windows the job's
34
+ processes are ended by the kernel when Jesse exits, so they do not outlive a crash.)
30
35
  """
31
36
  import base64
37
+ import errno
32
38
  import io
33
39
  import json
34
40
  import os
@@ -41,7 +47,7 @@ from datetime import datetime, timezone
41
47
  from typing import Dict, List, Optional, Sequence, Set, Tuple
42
48
  from uuid import uuid4
43
49
 
44
- from jesse.services import live_history, research_jobs, session_results
50
+ from jesse.services import live_history, nofollow_fs, research_jobs, session_results
45
51
  from jesse.services import project_files
46
52
  from jesse.services.project_files import ProjectFileError
47
53
 
@@ -87,11 +93,11 @@ MAX_IMAGE_DIMENSION = 8000
87
93
  # Text artifacts (CSV, JSON, Markdown) are returned up to this many characters.
88
94
  MAX_TEXT_ARTIFACT_CHARS = 128 * 1024
89
95
  LIST_LIMIT = 20
96
+ # Windows delete retries while a reader's open file blocks the folder move: about two seconds in total.
97
+ DELETE_RETRY_ATTEMPTS = 40
98
+ DELETE_RETRY_SECONDS = 0.05
90
99
 
91
100
  _NAME = re.compile(r'[A-Za-z0-9_-]{1,64}')
92
- _DIR_FLAGS = os.O_RDONLY | getattr(os, 'O_DIRECTORY', 0) | getattr(os, 'O_NOFOLLOW', 0)
93
- _FILE_READ_FLAGS = os.O_RDONLY | getattr(os, 'O_NOFOLLOW', 0) | getattr(os, 'O_NONBLOCK', 0)
94
- _FILE_CREATE_FLAGS = os.O_WRONLY | os.O_CREAT | os.O_EXCL | getattr(os, 'O_NOFOLLOW', 0)
95
101
 
96
102
  IMAGE_FORMATS = ('image/png', 'image/jpeg', 'image/gif', 'image/webp')
97
103
 
@@ -132,19 +138,19 @@ _workspace_lock = threading.Lock()
132
138
  def _open_root(create: bool = False) -> int:
133
139
  """
134
140
  Open storage/mcp/analysis. The root itself is part of Jesse's own storage folder and is
135
- opened normally; every path below it is opened with O_NOFOLLOW.
141
+ opened normally; every path below it is opened without following links.
136
142
  """
137
143
  if create:
138
144
  os.makedirs(ANALYSIS_ROOT, exist_ok=True)
139
145
  try:
140
- return os.open(ANALYSIS_ROOT, os.O_RDONLY | getattr(os, 'O_DIRECTORY', 0))
146
+ return nofollow_fs.open_path(ANALYSIS_ROOT)
141
147
  except FileNotFoundError:
142
148
  raise _error('not_found', 'No analysis job exists yet.', 404)
143
149
 
144
150
 
145
151
  def _open_dir(dir_fd: int, name: str, missing_message: str) -> int:
146
152
  try:
147
- return os.open(name, _DIR_FLAGS, dir_fd=dir_fd)
153
+ return nofollow_fs.open_dir(dir_fd, name)
148
154
  except FileNotFoundError:
149
155
  raise _error('not_found', missing_message, 404)
150
156
  except OSError:
@@ -156,9 +162,13 @@ def _open_dir(dir_fd: int, name: str, missing_message: str) -> int:
156
162
 
157
163
  def _lstat(dir_fd: int, name: str) -> Optional[os.stat_result]:
158
164
  try:
159
- return os.stat(name, dir_fd=dir_fd, follow_symlinks=False)
165
+ return nofollow_fs.lstat(dir_fd, name)
160
166
  except FileNotFoundError:
161
167
  return None
168
+ except OSError as exc:
169
+ if exc.errno == errno.EINVAL: # A name Windows refuses to open; see project_files._lstat.
170
+ return None
171
+ raise
162
172
 
163
173
 
164
174
  def _gone_message(job_id: str) -> str:
@@ -177,7 +187,7 @@ def _open_workspace(job_id: str) -> int:
177
187
 
178
188
  def _write_new_file(dir_fd: int, name: str, chunks, cap: int, label: str) -> int:
179
189
  """Create `name` exclusively and write chunks, refusing with too_large past `cap` bytes."""
180
- fd = os.open(name, _FILE_CREATE_FLAGS, 0o600, dir_fd=dir_fd)
190
+ fd = nofollow_fs.create_file(dir_fd, name, 0o600)
181
191
  written = 0
182
192
  try:
183
193
  with os.fdopen(fd, 'wb') as f:
@@ -189,7 +199,7 @@ def _write_new_file(dir_fd: int, name: str, chunks, cap: int, label: str) -> int
189
199
  f.write(data)
190
200
  except BaseException:
191
201
  try:
192
- os.unlink(name, dir_fd=dir_fd)
202
+ nofollow_fs.unlink(dir_fd, name)
193
203
  except OSError:
194
204
  pass
195
205
  raise
@@ -199,24 +209,22 @@ def _write_new_file(dir_fd: int, name: str, chunks, cap: int, label: str) -> int
199
209
  def _remove_tree(dir_fd: int, name: str) -> None:
200
210
  """Delete a folder and everything in it; symlinks are unlinked, never followed."""
201
211
  try:
202
- sub = os.open(name, _DIR_FLAGS, dir_fd=dir_fd)
212
+ sub = nofollow_fs.open_dir(dir_fd, name)
203
213
  except FileNotFoundError:
204
214
  return
205
215
  try:
206
- with os.scandir(sub) as entries:
207
- children = list(entries)
208
- for child in children:
216
+ for child in list(nofollow_fs.scandir(sub)):
209
217
  if child.is_dir(follow_symlinks=False):
210
218
  _remove_tree(sub, child.name)
211
219
  else:
212
220
  try:
213
- os.unlink(child.name, dir_fd=sub)
221
+ nofollow_fs.unlink(sub, child.name)
214
222
  except FileNotFoundError:
215
223
  pass
216
224
  finally:
217
225
  os.close(sub)
218
226
  try:
219
- os.rmdir(name, dir_fd=dir_fd)
227
+ nofollow_fs.rmdir(dir_fd, name)
220
228
  except FileNotFoundError:
221
229
  pass
222
230
 
@@ -224,21 +232,20 @@ def _remove_tree(dir_fd: int, name: str) -> None:
224
232
  def _tree_size(dir_fd: int, name: str) -> int:
225
233
  """Bytes used by regular files below a folder, without following symlinks."""
226
234
  try:
227
- sub = os.open(name, _DIR_FLAGS, dir_fd=dir_fd)
235
+ sub = nofollow_fs.open_dir(dir_fd, name)
228
236
  except OSError:
229
237
  return 0
230
238
  total = 0
231
239
  try:
232
- with os.scandir(sub) as entries:
233
- for entry in entries:
234
- try:
235
- st = entry.stat(follow_symlinks=False)
236
- except OSError:
237
- continue
238
- if stat.S_ISDIR(st.st_mode):
239
- total += _tree_size(sub, entry.name)
240
- elif stat.S_ISREG(st.st_mode):
241
- total += st.st_size
240
+ for entry in nofollow_fs.scandir(sub):
241
+ try:
242
+ st = entry.stat(follow_symlinks=False)
243
+ except OSError:
244
+ continue
245
+ if stat.S_ISDIR(st.st_mode):
246
+ total += _tree_size(sub, entry.name)
247
+ elif stat.S_ISREG(st.st_mode):
248
+ total += st.st_size
242
249
  finally:
243
250
  os.close(sub)
244
251
  return total
@@ -265,7 +272,7 @@ def _discard(root_fd: int, job_id: str) -> None:
265
272
  """
266
273
  trash = f'.trash-{job_id}-{uuid4().hex}'
267
274
  try:
268
- os.rename(job_id, trash, src_dir_fd=root_fd, dst_dir_fd=root_fd)
275
+ nofollow_fs.rename(root_fd, job_id, root_fd, trash, replace=False)
269
276
  except FileNotFoundError:
270
277
  return
271
278
  _remove_trash(root_fd, trash)
@@ -319,7 +326,7 @@ def cleanup_workspaces(now: Optional[float] = None) -> List[str]:
319
326
  root = _open_root()
320
327
  try:
321
328
  candidates: List[Tuple[float, str]] = []
322
- for entry in os.scandir(root):
329
+ for entry in nofollow_fs.scandir(root):
323
330
  name = entry.name
324
331
  if name.startswith('.trash-'):
325
332
  _remove_trash(root, name) # Left over from an interrupted or failed deletion.
@@ -470,10 +477,10 @@ def start_analysis(code: str, inputs: Optional[list] = None, timeout_minutes: in
470
477
  raise _error('too_large', f'code is limited to {MAX_CODE_BYTES // 1024} KiB.', 413)
471
478
  research_jobs.validate_timeout(timeout_minutes, MAX_TIMEOUT_MINUTES)
472
479
  validated = _validate_inputs(inputs)
473
- # Workspace confinement needs no-follow directory descriptors; refuse unsupported
480
+ # Workspace confinement needs no-follow directory access; refuse unsupported
474
481
  # hosts before reserving a job or creating files rather than weakening those guarantees.
475
482
  if not project_files._platform_supported():
476
- raise _error('unsupported_platform', 'Analysis jobs require Linux or macOS (including Docker).', 501)
483
+ raise _error('unsupported_platform', 'Analysis jobs require Linux, macOS, or Windows.', 501)
477
484
  job_id = _reserve_slot()
478
485
  # From here on the reservation is released in `finally`, whatever fails.
479
486
  try:
@@ -485,7 +492,7 @@ def start_analysis(code: str, inputs: Optional[list] = None, timeout_minutes: in
485
492
  try:
486
493
  root = _open_root(create=True)
487
494
  try:
488
- os.mkdir(job_id, 0o700, dir_fd=root)
495
+ nofollow_fs.make_dir(root, job_id, 0o700)
489
496
  finally:
490
497
  os.close(root)
491
498
  except OSError as exc:
@@ -525,8 +532,8 @@ def _prepare_and_launch(job_id: str, validated: List[dict], code_bytes: bytes, t
525
532
  try:
526
533
  workspace = _open_workspace(job_id)
527
534
  try:
528
- os.mkdir(INPUTS_DIR, 0o700, dir_fd=workspace)
529
- os.mkdir(OUTPUT_DIR, 0o700, dir_fd=workspace)
535
+ nofollow_fs.make_dir(workspace, INPUTS_DIR, 0o700)
536
+ nofollow_fs.make_dir(workspace, OUTPUT_DIR, 0o700)
530
537
  manifest = _write_inputs(workspace, validated)
531
538
  _write_new_file(workspace, CODE_FILE, [code_bytes], MAX_CODE_BYTES, 'code')
532
539
  except OSError as exc:
@@ -549,6 +556,18 @@ def _prepare_and_launch(job_id: str, validated: List[dict], code_bytes: bytes, t
549
556
  {'MPLBACKEND': 'Agg'},
550
557
  )
551
558
  except BaseException:
559
+ _discard_after_failed_start(job_id)
560
+ raise
561
+
562
+
563
+ def _discard_after_failed_start(job_id: str) -> None:
564
+ """
565
+ Remove the workspace of a job that failed to start, without replacing the error that caused it.
566
+
567
+ Best-effort: if the removal itself fails (on Windows the folder cannot move while a file in it
568
+ is open), the workspace stays on disk and cleanup_workspaces removes it later.
569
+ """
570
+ try:
552
571
  with _workspace_lock:
553
572
  root = _open_root()
554
573
  try:
@@ -556,7 +575,8 @@ def _prepare_and_launch(job_id: str, validated: List[dict], code_bytes: bytes, t
556
575
  _discard(root, job_id)
557
576
  finally:
558
577
  os.close(root)
559
- raise
578
+ except (OSError, ProjectFileError):
579
+ pass
560
580
 
561
581
 
562
582
  def _public(record: dict) -> dict:
@@ -634,17 +654,43 @@ def delete_job(job_id: str) -> dict:
634
654
  try:
635
655
  if _lstat(root, job_id) is None:
636
656
  raise _error('not_found', _gone_message(job_id), 404)
637
- _discard(root, job_id)
657
+ _discard_for_delete(root, job_id)
638
658
  except OSError as exc:
659
+ if os.name == 'nt' and exc.errno in (errno.EACCES, errno.EBUSY):
660
+ raise _error('job_busy', f'Analysis job {job_id} is still open by another request. Try again shortly.', 409)
639
661
  raise _error('io_error', f'Could not delete analysis job {job_id}: {exc.strerror or exc}.', 500)
640
662
  finally:
641
663
  os.close(root)
642
664
  return {'job_id': job_id, 'deleted': True}
643
665
 
644
666
 
667
+ def _discard_for_delete(root_fd: int, job_id: str) -> None:
668
+ """
669
+ Discard a workspace for an explicit delete. On Windows NTFS will not move a folder while a
670
+ file inside it is open by someone else, and a reader holds its file only for the moment it
671
+ reads it (read_artifact closes before checking). Retrying briefly lets that reader finish;
672
+ cleanup_workspaces remains best-effort and simply retries later.
673
+
674
+ Tradeoff: the retries run while _workspace_lock is held, so on Windows other workspace
675
+ operations wait at most DELETE_RETRY_ATTEMPTS * DELETE_RETRY_SECONDS (about two seconds) before
676
+ this delete reports job_busy (409) instead of blocking longer.
677
+ """
678
+ if os.name != 'nt':
679
+ _discard(root_fd, job_id)
680
+ return
681
+ for attempt in range(DELETE_RETRY_ATTEMPTS):
682
+ try:
683
+ _discard(root_fd, job_id)
684
+ return
685
+ except OSError as exc:
686
+ if exc.errno not in (errno.EACCES, errno.EBUSY) or attempt == DELETE_RETRY_ATTEMPTS - 1:
687
+ raise
688
+ time.sleep(DELETE_RETRY_SECONDS)
689
+
690
+
645
691
  def _sniff(fd: int) -> Tuple[str, Optional[str]]:
646
692
  """Classify a file as ('image', mime), ('text', None) or ('binary', None) from its first bytes."""
647
- head = os.pread(fd, 8192, 0)
693
+ head = nofollow_fs.read_at(fd, 8192, 0)
648
694
  mime = _image_mime(head)
649
695
  if mime:
650
696
  return 'image', mime
@@ -739,6 +785,11 @@ def _parse_artifact_path(path: object) -> List[str]:
739
785
  parts = parts[1:]
740
786
  if not parts:
741
787
  raise _error('invalid_path', 'path must name a file inside the output folder.', 400)
788
+ if os.name == 'nt':
789
+ for part in parts:
790
+ problem = nofollow_fs.component_problem(part)
791
+ if problem is not None:
792
+ raise _error('invalid_path', f'{part!r} {problem}; artifact names must be names Windows accepts.', 400)
742
793
  return parts
743
794
 
744
795
 
@@ -759,8 +810,7 @@ def list_artifacts(job_id: str) -> dict:
759
810
 
760
811
  def walk(dir_fd: int, prefix: Sequence[str]) -> None:
761
812
  nonlocal truncated
762
- with os.scandir(dir_fd) as iterator:
763
- children = sorted(iterator, key=lambda entry: entry.name)
813
+ children = sorted(nofollow_fs.scandir(dir_fd), key=lambda entry: entry.name)
764
814
  for child in children:
765
815
  if len(artifacts) >= MAX_ARTIFACTS_LISTED:
766
816
  truncated = True
@@ -772,7 +822,7 @@ def list_artifacts(job_id: str) -> dict:
772
822
  continue
773
823
  if stat.S_ISDIR(st.st_mode):
774
824
  try:
775
- sub = os.open(child.name, _DIR_FLAGS, dir_fd=dir_fd)
825
+ sub = nofollow_fs.open_dir(dir_fd, child.name)
776
826
  except OSError:
777
827
  continue
778
828
  try:
@@ -785,7 +835,7 @@ def list_artifacts(job_id: str) -> dict:
785
835
  item.update(kind='symlink', size_bytes=None)
786
836
  elif stat.S_ISREG(st.st_mode):
787
837
  try:
788
- fd = os.open(child.name, _FILE_READ_FLAGS, dir_fd=dir_fd)
838
+ fd = nofollow_fs.open_read(dir_fd, child.name)
789
839
  except OSError:
790
840
  continue
791
841
  try:
@@ -826,7 +876,7 @@ def read_artifact(job_id: str, path: str) -> dict:
826
876
  os.close(dir_fd)
827
877
  dir_fd = child
828
878
  try:
829
- fd = os.open(parts[-1], _FILE_READ_FLAGS, dir_fd=dir_fd)
879
+ fd = nofollow_fs.open_read(dir_fd, parts[-1])
830
880
  except FileNotFoundError:
831
881
  raise _error('not_found', f'{display} does not exist in the output folder of analysis job {job_id}.', 404)
832
882
  except OSError:
@@ -836,40 +886,48 @@ def read_artifact(job_id: str, path: str) -> dict:
836
886
  raise _error('wrong_type', f'{display} cannot be opened as a file.', 409)
837
887
  finally:
838
888
  os.close(dir_fd)
889
+ # The bytes are read and the handle closed before any checks run. Nothing holds the file open
890
+ # while Pillow or the caller works, so deleting the job never has to wait for a reader on Windows.
839
891
  try:
840
892
  st = os.fstat(fd)
841
893
  if not stat.S_ISREG(st.st_mode):
842
894
  raise _error('wrong_type', f'{display} is not a regular file.', 409)
843
895
  kind, mime = _sniff(fd)
844
- base = {'job_id': job_id, 'path': display, 'size_bytes': st.st_size,
845
- 'modified_at': datetime.fromtimestamp(st.st_mtime, timezone.utc).isoformat(timespec='seconds')}
896
+ data = b''
846
897
  if kind == 'image' and mime:
847
898
  if st.st_size > MAX_IMAGE_BYTES:
848
899
  raise _error('artifact_too_large', f'{display} is {st.st_size} bytes; images are returned up to '
849
900
  f'{MAX_IMAGE_BYTES // (1024 * 1024)} MiB. Save it smaller (lower dpi or figure size).', 413)
850
- data = os.pread(fd, MAX_IMAGE_BYTES + 1, 0)
851
- if len(data) != st.st_size:
852
- raise _error('artifact_changed', f'{display} changed while it was being read; fetch it again.', 409)
853
- size = _image_size(data, mime)
854
- if size is None:
855
- raise _error('invalid_image', f'{display} starts like a {mime} file but is not a valid image.', 422)
856
- width, height = size
857
- # Dimensions are checked before Pillow opens the image: Pillow refuses very large
858
- # pixel counts as decompression bombs, which would misreport a legitimately
859
- # oversized chart as invalid instead of telling the caller to shrink it.
860
- if not (1 <= width <= MAX_IMAGE_DIMENSION and 1 <= height <= MAX_IMAGE_DIMENSION):
861
- raise _error('artifact_too_large', f'{display} is {width}x{height} pixels; images are returned up to '
862
- f'{MAX_IMAGE_DIMENSION} pixels per side. Save it smaller (lower dpi or figure size).', 413)
863
- if not _verify_image(data):
864
- raise _error('invalid_image', f'{display} starts like a {mime} file but is not a valid image.', 422)
865
- return {**base, 'kind': 'image', 'mime_type': mime, 'width': width, 'height': height,
866
- 'data_base64': base64.b64encode(data).decode('ascii')}
867
- if kind == 'text':
868
- raw = os.pread(fd, MAX_TEXT_ARTIFACT_CHARS * 4 + 4, 0)
869
- text = raw.decode('utf-8', errors='replace')
870
- truncated = len(text) > MAX_TEXT_ARTIFACT_CHARS or len(raw) < st.st_size
871
- return {**base, 'kind': 'text', 'content': text[:MAX_TEXT_ARTIFACT_CHARS], 'truncated': truncated}
872
- return {**base, 'kind': 'binary', 'message': (
873
- f'{display} is a binary file; only PNG, JPEG, GIF and WebP images and text files are returned.')}
901
+ data = nofollow_fs.read_at(fd, MAX_IMAGE_BYTES + 1, 0)
902
+ elif kind == 'text':
903
+ data = nofollow_fs.read_at(fd, MAX_TEXT_ARTIFACT_CHARS * 4 + 4, 0)
874
904
  finally:
875
905
  os.close(fd)
906
+ base = {'job_id': job_id, 'path': display, 'size_bytes': st.st_size,
907
+ 'modified_at': datetime.fromtimestamp(st.st_mtime, timezone.utc).isoformat(timespec='seconds')}
908
+ if kind == 'image' and mime:
909
+ if len(data) != st.st_size:
910
+ raise _error('artifact_changed', f'{display} changed while it was being read; fetch it again.', 409)
911
+ size = _image_size(data, mime)
912
+ if size is None:
913
+ raise _error('invalid_image', f'{display} starts like a {mime} file but is not a valid image.', 422)
914
+ width, height = size
915
+ # Dimensions are checked before Pillow opens the image: Pillow refuses very large
916
+ # pixel counts as decompression bombs, which would misreport a legitimately
917
+ # oversized chart as invalid instead of telling the caller to shrink it.
918
+ if not (1 <= width <= MAX_IMAGE_DIMENSION and 1 <= height <= MAX_IMAGE_DIMENSION):
919
+ raise _error('artifact_too_large', f'{display} is {width}x{height} pixels; images are returned up to '
920
+ f'{MAX_IMAGE_DIMENSION} pixels per side. Save it smaller (lower dpi or figure size).', 413)
921
+ if not _verify_image(data):
922
+ raise _error('invalid_image', f'{display} starts like a {mime} file but is not a valid image.', 422)
923
+ return {**base, 'kind': 'image', 'mime_type': mime, 'width': width, 'height': height,
924
+ 'data_base64': base64.b64encode(data).decode('ascii')}
925
+ if kind == 'text':
926
+ text = data.decode('utf-8', errors='replace')
927
+ if os.name == 'nt':
928
+ # Text written by Python on Windows has CRLF line endings; return the same text as on POSIX.
929
+ text = text.replace('\r\n', '\n')
930
+ truncated = len(text) > MAX_TEXT_ARTIFACT_CHARS or len(data) < st.st_size
931
+ return {**base, 'kind': 'text', 'content': text[:MAX_TEXT_ARTIFACT_CHARS], 'truncated': truncated}
932
+ return {**base, 'kind': 'binary', 'message': (
933
+ f'{display} is a binary file; only PNG, JPEG, GIF and WebP images and text files are returned.')}