cfquant 0.2.65__tar.gz → 0.2.66__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.
- {cfquant-0.2.65 → cfquant-0.2.66}/PKG-INFO +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/__init__.py +17 -5
- cfquant-0.2.66/cfquant/tests/test_qmt_package_import.py +86 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/version.py +2 -2
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant.egg-info/PKG-INFO +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant.egg-info/SOURCES.txt +1 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/pyproject.toml +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts/CFQUANT_LITE.py +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_LITE_SH.py +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_LITE_SZ.py +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/app.js +1 -1
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/index.html +2 -2
- {cfquant-0.2.65 → cfquant-0.2.66}/LICENSE +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/LTtx/__init__.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/LTtx/tx/Config.txt +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/LTtx/tx/LTtx_server.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/LTtx/tx/__init__.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/LTtx/tx/tx.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/MANIFEST.in +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/README.md +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/_editable_install.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/account_routing.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/algo.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/algo_broker.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/batch_orders.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/build_info.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/callback_dispatcher.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/cftrader.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/channels.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/cli.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/client.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/conditional_orders.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/config.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/diagnostic_context.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/diagnostics.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/flow_control.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/hub.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/level2.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/log_management.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/logging_i18n.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/management.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/monitor_notifications.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/monitor_performance.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/normal_bridge.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/order_identity.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/order_meta.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/pipe_bridge.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/pipe_client.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/pipe_hub.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/pipe_transport.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/planning_broker.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/position_sizing.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/protocol.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_binding_defaults.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_binding_settings.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_bridge.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_component_agent.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_component_login.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_credentials.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_dependencies.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_inner.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_inner_catalog.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_inner_runtime.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_native_files.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_native_worker.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_pipe_runtime.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_python_runtime.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_strategy_agent.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_strategy_deploy.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_strategy_package.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_strategy_recovery.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_strategy_runtime.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/qmt_update.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/quote_history.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/quote_leases.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/quote_service.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/remote_adapter.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/remote_management.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/remote_supervisor.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/rpc_timing.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/runtime_report.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/shared_quotes.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/smart_orders.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/stock_connect.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/subscription_bridge.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/subscription_client.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/subscription_manager.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/subscription_store.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/10_/345/221/275/344/273/244/350/241/214/346/216/245/345/217/243/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/11_/346/231/256/351/200/232/346/241/245/346/216/245/346/264/276/345/217/221/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/12_/350/256/242/345/215/225/345/244/207/346/263/250/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/13_/347/256/241/351/201/223/344/270/255/345/277/203/350/277/236/346/216/245/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/14_/350/277/220/350/241/214/346/227/266/346/212/245/345/221/212/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/15_/347/275/221/351/241/265/347/212/266/346/200/201/347/274/223/345/255/230/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/16_/345/220/257/345/212/250/345/256/211/350/243/205/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/17_/345/244/247QMT/346/216/245/345/217/243/351/200/202/351/205/215/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/18_/351/253/230/347/272/247/346/250/241/345/274/217/345/256/236/346/234/272/350/201/224/350/260/203.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/19_/345/256/236/346/234/272/350/201/224/350/260/203/345/210/244/345/256/232/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/1_/350/241/214/346/203/205/346/216/245/346/224/266/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/20_/350/201/224/350/260/203/351/227/256/351/242/230/344/277/256/345/244/215/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/21_/345/215/225/350/202/241/350/241/214/346/203/205/350/256/242/351/230/205/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/22_/350/277/236/346/216/245/350/257/212/346/226/255/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/23_/347/244/272/344/276/213/351/205/215/347/275/256/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/24_/350/264/246/346/210/267/347/274/223/345/255/230/346/214/211/351/234/200/345/210/267/346/226/260/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/25_/350/264/246/346/210/267/347/274/223/345/255/230/351/241/265/351/235/242/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/26_/345/205/250/346/216/250/350/256/242/351/230/205/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/27_/345/205/250/346/216/250/350/256/242/351/230/205/351/241/265/351/235/242/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/28_Level2/346/216/245/345/217/243/351/200/202/351/205/215/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/29_Level2/350/241/214/346/203/205/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/2_/346/225/260/346/215/256/350/216/267/345/217/226/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/30_cftrader/346/211/271/351/207/217/344/270/213/345/215/225/346/200/247/350/203/275/345/237/272/345/207/206.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/31_cftrader/346/250/241/346/213/237/350/264/246/345/217/267/346/211/271/351/207/217/344/270/213/345/215/225/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/32_/345/274/202/346/255/245/344/270/213/345/215/225/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/33_/345/220/214/346/255/245/344/270/213/345/215/225/345/233/236/350/260/203/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/34_/345/205/250/346/216/250/345/206/205/351/203/250/345/273/266/350/277/237/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/3_/346/225/260/346/215/256/344/270/213/350/275/275/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/4_/344/272/244/346/230/223/345/247/224/346/211/230/346/237/245/350/257/242/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/5_/347/234/237/345/256/236/344/270/213/345/215/225/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/6_/345/233/236/350/260/203/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/7_/345/220/214/346/255/245/345/274/202/346/255/245/344/270/213/345/215/225/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/8_/346/210/220/344/272/244/350/256/242/345/215/225/345/222/214/345/247/224/346/211/230/350/256/242/345/215/225/346/237/245/350/257/242/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/9_/345/217/257/346/222/244/350/256/242/345/215/225/346/265/213/350/257/225.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/_helpers.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/readme.md +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_account_query_timing.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_account_subscription_probe.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_activity_log_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_advanced_parity.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_algo.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_algo_broker.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_api_tester_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_api_tester_web.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_auto_login_app.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_binding_delete_confirmation.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_binding_live_refresh_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_binding_runtime_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_callback_recovery.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_callback_requests.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_cftrader.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_cftrader_tutorial.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_cftrader_web.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_credit_compat.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_dataframe_encoding.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_diagnostic_context.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_json_serialization.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_latency_flow_control.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_lite_account_routing.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_lite_deployment_paths.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_lite_parity.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_lite_qmt_dispatch.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_local_trading_calendar.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_log_management.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_management.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_management_batch.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_market_data_fallback.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_market_timing.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_monitor_notifications.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_monitor_performance.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_navigation_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_order_identity.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_order_time_callback.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_pipe_shutdown.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_project_updater.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_python_api_reference.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_auto_login_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_auto_login_integration.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_binding_defaults.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_binding_settings.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_component_login.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_dependencies.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_fileless.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_inner.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_inner_reference.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_inner_web.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_native_files.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_native_reuse.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_native_worker.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_python_runtime.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_strategy_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_strategy_capabilities.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_strategy_deploy.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_strategy_recovery.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_strategy_web.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_qmt_update.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_quote_latency.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_quote_latency_encoding.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_quote_service.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_remote_management.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_remote_management_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_remote_version_check.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_setup_qmt_prompt.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_shared_quotes.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_shared_quotes_generated.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_smart_orders.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_smart_orders_api.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_smart_orders_docs.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_startup_recovery.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_stock_connect.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_stock_connect_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_strategy_recovery_api.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_subscription_congestion.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_subscription_persistence.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_table_conversion.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_trade_strategy_callback.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_trader_subscription_recovery.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_trading_dates.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_trading_monitor.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_trading_monitor_browser.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_tutorial_reader.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_tx_auto_import.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tests/test_tx_shutdown.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/trading_calendar.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/trading_monitor.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tx.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/tx_trade_bridge.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/xtconstant.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/xtdata.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/xttrader.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant/xttype.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant.egg-info/dependency_links.txt +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant.egg-info/entry_points.txt +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant.egg-info/requires.txt +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant.egg-info/top_level.txt +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant_pipe_hub.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/cfquant_web_server.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts/CFQUANT.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts/CFQUANT_CTYPE_ALL_LOWLAT.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts/CFQUANT_TRADE_LOWLAT.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts/__init__.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_CTYPE_ALL_LOWLAT_SH.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_CTYPE_ALL_LOWLAT_SZ.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_TRADE_LOWLAT_SH.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/CFQUANT_TRADE_LOWLAT_SZ.py" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/qmt_scripts//345/220/214/350/264/246/345/217/267/347/213/254/347/253/213/345/270/202/345/234/272/readme.md" +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/requirements.txt +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/setup.cfg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/__init__.py +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/activity-log.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/api-tester.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/amber-pulse.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/copper-grid.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/market-blue.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/rose-circuit.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/signal-green.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/slate-wave.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/teal-orbit.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/avatars/violet-node.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/cfquant-architecture.html +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/cftrader-api-data.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/docs.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/favicon.svg +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-10.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-11.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-12.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-13.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-14.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-15.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-16.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-17.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-18.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-19.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-20.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-21.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-4.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-5.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-6.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-7.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-8.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/image/qmt_deploy/image-9.png +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/navigation.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/python-api-data.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/python-api.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/qmt-inner-api-data.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/remote-management.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/smart-order-api-data.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/styles.css +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/trading-monitor.js +0 -0
- {cfquant-0.2.65 → cfquant-0.2.66}/web_dashboard/vendor/mermaid.min.js +0 -0
|
@@ -9,10 +9,11 @@ cfquant: 面向 QMT 的 xtquant 兼容层。
|
|
|
9
9
|
from cfquant.xttype import StockAccount
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
+
import sys as _sys
|
|
13
|
+
|
|
12
14
|
from . import xtconstant, xtdata, xttrader, xttype
|
|
13
15
|
from . import cftrader
|
|
14
16
|
from .qmt_inner import QmtInnerApi
|
|
15
|
-
from .qmt_python_runtime import QmtPythonRuntime, QmtPythonRuntimeError, QmtPythonPackage, QmtPythonProgress
|
|
16
17
|
from .client import CfquantError, CfquantTimeout, configure, get_client
|
|
17
18
|
from .version import __version__
|
|
18
19
|
from .build_info import build_identity, get_git_commit
|
|
@@ -28,10 +29,6 @@ __all__ = [
|
|
|
28
29
|
"xttrader",
|
|
29
30
|
"cftrader",
|
|
30
31
|
"QmtInnerApi",
|
|
31
|
-
"QmtPythonRuntime",
|
|
32
|
-
"QmtPythonRuntimeError",
|
|
33
|
-
"QmtPythonPackage",
|
|
34
|
-
"QmtPythonProgress",
|
|
35
32
|
"xttype",
|
|
36
33
|
"configure",
|
|
37
34
|
"get_client",
|
|
@@ -44,3 +41,18 @@ __all__ = [
|
|
|
44
41
|
"get_git_commit",
|
|
45
42
|
"build_identity",
|
|
46
43
|
]
|
|
44
|
+
|
|
45
|
+
# QMT's embedded Python 3.6 imports this package before loading any bridge
|
|
46
|
+
# submodule. The external runtime manager needs Python 3.7 syntax/dataclasses
|
|
47
|
+
# and must not be imported (or exported by import *) inside that interpreter.
|
|
48
|
+
if _sys.version_info >= (3, 7):
|
|
49
|
+
from .qmt_python_runtime import (
|
|
50
|
+
QmtPythonRuntime, QmtPythonRuntimeError, QmtPythonPackage, QmtPythonProgress,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
__all__.extend([
|
|
54
|
+
"QmtPythonRuntime",
|
|
55
|
+
"QmtPythonRuntimeError",
|
|
56
|
+
"QmtPythonPackage",
|
|
57
|
+
"QmtPythonProgress",
|
|
58
|
+
])
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""Cold imports in the host interpreter and an optional real QMT Python 3.6.
|
|
2
|
+
|
|
3
|
+
Set CFQUANT_TEST_PYTHON36 to QMT's bin.x64/pythonw.exe (or python.exe).
|
|
4
|
+
The subprocess only imports modules; it never starts a bridge or a strategy.
|
|
5
|
+
"""
|
|
6
|
+
import json
|
|
7
|
+
import os
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
import subprocess
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
import pytest
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
ROOT = Path(__file__).resolve().parents[2]
|
|
16
|
+
PROBE = r'''
|
|
17
|
+
import sys
|
|
18
|
+
sys.dont_write_bytecode = True
|
|
19
|
+
sys.path.insert(0, sys.argv[2])
|
|
20
|
+
if sys.argv[3]:
|
|
21
|
+
sys.path[1:1] = [sys.argv[3] + "/lib", sys.argv[3] + "/DLLs"]
|
|
22
|
+
|
|
23
|
+
import importlib
|
|
24
|
+
import json
|
|
25
|
+
import traceback
|
|
26
|
+
|
|
27
|
+
result = {"version": list(sys.version_info[:3])}
|
|
28
|
+
try:
|
|
29
|
+
# Reproduce the first import in _install_logging_compat, then load the
|
|
30
|
+
# dependencies used by the ctypes and LTtx strategy entries.
|
|
31
|
+
for name in ("logging_i18n", "pipe_bridge", "qmt_pipe_runtime", "qmt_bridge"):
|
|
32
|
+
importlib.import_module("cfquant." + name)
|
|
33
|
+
import cfquant
|
|
34
|
+
namespace = {}
|
|
35
|
+
exec("from cfquant import *", namespace)
|
|
36
|
+
for name in ("xtdata", "xtconstant", "xttrader", "QmtInnerApi"):
|
|
37
|
+
assert name in namespace, name
|
|
38
|
+
if sys.version_info[:2] == (3, 6):
|
|
39
|
+
assert "cfquant.qmt_python_runtime" not in sys.modules
|
|
40
|
+
assert "QmtPythonRuntime" not in namespace
|
|
41
|
+
else:
|
|
42
|
+
from cfquant import qmt_python_runtime
|
|
43
|
+
for name in ("QmtPythonRuntime", "QmtPythonRuntimeError",
|
|
44
|
+
"QmtPythonPackage", "QmtPythonProgress"):
|
|
45
|
+
assert namespace[name] is getattr(qmt_python_runtime, name), name
|
|
46
|
+
progress = cfquant.QmtPythonProgress("py36", "download")
|
|
47
|
+
assert progress.as_dict()["phase"] == "download"
|
|
48
|
+
result["ok"] = True
|
|
49
|
+
except BaseException:
|
|
50
|
+
result["error"] = traceback.format_exc()
|
|
51
|
+
with open(sys.argv[1], "w", encoding="utf-8") as stream:
|
|
52
|
+
json.dump(result, stream)
|
|
53
|
+
'''
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@pytest.mark.parametrize("runtime", ["host", "qmt36"])
|
|
57
|
+
def test_strategy_package_cold_import(tmp_path, runtime):
|
|
58
|
+
executable = sys.executable
|
|
59
|
+
qmt_bin = ""
|
|
60
|
+
env = os.environ.copy()
|
|
61
|
+
env.pop("PYTHONHOME", None)
|
|
62
|
+
if runtime == "qmt36":
|
|
63
|
+
executable = env.get("CFQUANT_TEST_PYTHON36")
|
|
64
|
+
if not executable:
|
|
65
|
+
pytest.skip("Set CFQUANT_TEST_PYTHON36 to run with QMT Python 3.6")
|
|
66
|
+
executable = str(Path(executable).resolve())
|
|
67
|
+
assert Path(executable).is_file(), executable
|
|
68
|
+
qmt_bin = str(Path(executable).parent)
|
|
69
|
+
env["PYTHONHOME"] = qmt_bin
|
|
70
|
+
env["PYTHONPATH"] = str(ROOT)
|
|
71
|
+
env["PYTHONDONTWRITEBYTECODE"] = "1"
|
|
72
|
+
env["CFQUANT_QMT_NO_FILE_IO"] = "1"
|
|
73
|
+
probe = tmp_path / "probe.py"
|
|
74
|
+
result_path = tmp_path / "result.json"
|
|
75
|
+
probe.write_text(PROBE, encoding="utf-8")
|
|
76
|
+
process = subprocess.run(
|
|
77
|
+
[executable, "-S", str(probe), str(result_path), str(ROOT), qmt_bin],
|
|
78
|
+
cwd=str(tmp_path), env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
|
79
|
+
timeout=30,
|
|
80
|
+
)
|
|
81
|
+
assert process.returncode == 0, process.stderr
|
|
82
|
+
assert result_path.is_file(), process.stderr
|
|
83
|
+
result = json.loads(result_path.read_text(encoding="utf-8"))
|
|
84
|
+
if runtime == "qmt36":
|
|
85
|
+
assert result["version"][:2] == [3, 6], result
|
|
86
|
+
assert result.get("ok"), result.get("error", result)
|
|
@@ -183,6 +183,7 @@ cfquant/tests/test_qmt_inner_web.py
|
|
|
183
183
|
cfquant/tests/test_qmt_native_files.py
|
|
184
184
|
cfquant/tests/test_qmt_native_reuse.py
|
|
185
185
|
cfquant/tests/test_qmt_native_worker.py
|
|
186
|
+
cfquant/tests/test_qmt_package_import.py
|
|
186
187
|
cfquant/tests/test_qmt_python_runtime.py
|
|
187
188
|
cfquant/tests/test_qmt_strategy_browser.py
|
|
188
189
|
cfquant/tests/test_qmt_strategy_capabilities.py
|
|
@@ -723,7 +723,7 @@ def _resolve_batch_order_ids(bridge, account, pending, before_ids):
|
|
|
723
723
|
time.sleep(min(0.05, remaining))
|
|
724
724
|
# END GENERATED CFTRADER BATCH
|
|
725
725
|
|
|
726
|
-
CORE_VERSION = "0.2.
|
|
726
|
+
CORE_VERSION = "0.2.66"
|
|
727
727
|
|
|
728
728
|
# BEGIN GENERATED DIAGNOSTIC CONTEXT
|
|
729
729
|
"""Version context for cfquant diagnostics without changing application logging."""
|
|
@@ -737,7 +737,7 @@ def _resolve_batch_order_ids(bridge, account, pending, before_ids):
|
|
|
737
737
|
time.sleep(min(0.05, remaining))
|
|
738
738
|
# END GENERATED CFTRADER BATCH
|
|
739
739
|
|
|
740
|
-
CORE_VERSION = "0.2.
|
|
740
|
+
CORE_VERSION = "0.2.66"
|
|
741
741
|
|
|
742
742
|
# BEGIN GENERATED DIAGNOSTIC CONTEXT
|
|
743
743
|
"""Version context for cfquant diagnostics without changing application logging."""
|
|
@@ -737,7 +737,7 @@ def _resolve_batch_order_ids(bridge, account, pending, before_ids):
|
|
|
737
737
|
time.sleep(min(0.05, remaining))
|
|
738
738
|
# END GENERATED CFTRADER BATCH
|
|
739
739
|
|
|
740
|
-
CORE_VERSION = "0.2.
|
|
740
|
+
CORE_VERSION = "0.2.66"
|
|
741
741
|
|
|
742
742
|
# BEGIN GENERATED DIAGNOSTIC CONTEXT
|
|
743
743
|
"""Version context for cfquant diagnostics without changing application logging."""
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>cfquant 控制台</title>
|
|
7
7
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
8
|
-
<link rel="stylesheet" href="/styles.css?v=
|
|
8
|
+
<link rel="stylesheet" href="/styles.css?v=web_20261108_02">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="webAuthOverlay" class="auth-overlay hidden" aria-live="polite">
|
|
@@ -3514,7 +3514,7 @@ else:
|
|
|
3514
3514
|
<script src="/trading-monitor.js?v=20261107_runtime_history_05"></script>
|
|
3515
3515
|
<script src="/navigation.js?v=web_20261108_nav_03"></script>
|
|
3516
3516
|
<script src="/activity-log.js?v=web_20261108_logs_01"></script>
|
|
3517
|
-
<script src="/app.js?v=
|
|
3517
|
+
<script src="/app.js?v=web_20261108_02"></script>
|
|
3518
3518
|
<script src="/remote-management.js?v=20261103"></script>
|
|
3519
3519
|
</body>
|
|
3520
3520
|
</html>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|