hedgequantx 2.6.163 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -88
- package/bin/cli.js +0 -11
- package/dist/lib/api.jsc +0 -0
- package/dist/lib/api2.jsc +0 -0
- package/dist/lib/core.jsc +0 -0
- package/dist/lib/core2.jsc +0 -0
- package/dist/lib/data.js +1 -1
- package/dist/lib/data.jsc +0 -0
- package/dist/lib/data2.jsc +0 -0
- package/dist/lib/decoder.jsc +0 -0
- package/dist/lib/m/mod1.jsc +0 -0
- package/dist/lib/m/mod2.jsc +0 -0
- package/dist/lib/n/r1.jsc +0 -0
- package/dist/lib/n/r2.jsc +0 -0
- package/dist/lib/n/r3.jsc +0 -0
- package/dist/lib/n/r4.jsc +0 -0
- package/dist/lib/n/r5.jsc +0 -0
- package/dist/lib/n/r6.jsc +0 -0
- package/dist/lib/n/r7.jsc +0 -0
- package/dist/lib/o/util1.jsc +0 -0
- package/dist/lib/o/util2.jsc +0 -0
- package/package.json +6 -3
- package/src/app.js +40 -162
- package/src/config/constants.js +31 -33
- package/src/config/propfirms.js +13 -217
- package/src/config/settings.js +0 -43
- package/src/lib/api.js +198 -0
- package/src/lib/api2.js +353 -0
- package/src/lib/core.js +539 -0
- package/src/lib/core2.js +341 -0
- package/src/lib/data.js +555 -0
- package/src/lib/data2.js +492 -0
- package/src/lib/decoder.js +599 -0
- package/src/lib/m/s1.js +804 -0
- package/src/lib/m/s2.js +34 -0
- package/src/lib/n/r1.js +454 -0
- package/src/lib/n/r2.js +514 -0
- package/src/lib/n/r3.js +631 -0
- package/src/lib/n/r4.js +401 -0
- package/src/lib/n/r5.js +335 -0
- package/src/lib/n/r6.js +425 -0
- package/src/lib/n/r7.js +530 -0
- package/src/lib/o/l1.js +44 -0
- package/src/lib/o/l2.js +427 -0
- package/src/lib/python-bridge.js +206 -0
- package/src/menus/connect.js +14 -176
- package/src/menus/dashboard.js +65 -110
- package/src/pages/accounts.js +18 -18
- package/src/pages/algo/copy-trading.js +210 -240
- package/src/pages/algo/index.js +41 -104
- package/src/pages/algo/one-account.js +386 -33
- package/src/pages/algo/ui.js +312 -151
- package/src/pages/orders.js +3 -3
- package/src/pages/positions.js +3 -3
- package/src/pages/stats/chart.js +74 -0
- package/src/pages/stats/display.js +228 -0
- package/src/pages/stats/index.js +236 -0
- package/src/pages/stats/metrics.js +213 -0
- package/src/pages/user.js +6 -6
- package/src/services/hqx-server/constants.js +55 -0
- package/src/services/hqx-server/index.js +401 -0
- package/src/services/hqx-server/latency.js +81 -0
- package/src/services/index.js +12 -3
- package/src/services/rithmic/accounts.js +7 -32
- package/src/services/rithmic/connection.js +1 -204
- package/src/services/rithmic/contracts.js +116 -99
- package/src/services/rithmic/handlers.js +21 -196
- package/src/services/rithmic/index.js +63 -120
- package/src/services/rithmic/market.js +31 -0
- package/src/services/rithmic/orders.js +5 -111
- package/src/services/rithmic/protobuf.js +384 -138
- package/src/services/session.js +22 -173
- package/src/ui/box.js +10 -18
- package/src/ui/index.js +1 -3
- package/src/ui/menu.js +1 -1
- package/src/utils/prompts.js +2 -2
- package/dist/lib/m/s1.js +0 -1
- package/src/menus/ai-agent-connect.js +0 -181
- package/src/menus/ai-agent-models.js +0 -219
- package/src/menus/ai-agent-oauth.js +0 -292
- package/src/menus/ai-agent-ui.js +0 -141
- package/src/menus/ai-agent.js +0 -484
- package/src/pages/algo/algo-config.js +0 -195
- package/src/pages/algo/algo-multi.js +0 -801
- package/src/pages/algo/algo-utils.js +0 -58
- package/src/pages/algo/copy-engine.js +0 -449
- package/src/pages/algo/custom-strategy.js +0 -459
- package/src/pages/algo/logger.js +0 -245
- package/src/pages/algo/smart-logs-data.js +0 -218
- package/src/pages/algo/smart-logs.js +0 -387
- package/src/pages/algo/ui-constants.js +0 -144
- package/src/pages/algo/ui-summary.js +0 -184
- package/src/pages/stats-calculations.js +0 -191
- package/src/pages/stats-ui.js +0 -381
- package/src/pages/stats.js +0 -339
- package/src/services/ai/client-analysis.js +0 -194
- package/src/services/ai/client-models.js +0 -333
- package/src/services/ai/client.js +0 -343
- package/src/services/ai/index.js +0 -384
- package/src/services/ai/oauth-anthropic.js +0 -265
- package/src/services/ai/oauth-gemini.js +0 -223
- package/src/services/ai/oauth-iflow.js +0 -269
- package/src/services/ai/oauth-openai.js +0 -233
- package/src/services/ai/oauth-qwen.js +0 -279
- package/src/services/ai/providers/direct-providers.js +0 -323
- package/src/services/ai/providers/index.js +0 -62
- package/src/services/ai/providers/other-providers.js +0 -104
- package/src/services/ai/proxy-install.js +0 -249
- package/src/services/ai/proxy-manager.js +0 -494
- package/src/services/ai/proxy-remote.js +0 -161
- package/src/services/ai/strategy-supervisor.js +0 -1312
- package/src/services/ai/supervisor-data.js +0 -195
- package/src/services/ai/supervisor-optimize.js +0 -215
- package/src/services/ai/supervisor-sync.js +0 -178
- package/src/services/ai/supervisor-utils.js +0 -158
- package/src/services/ai/supervisor.js +0 -484
- package/src/services/ai/validation.js +0 -250
- package/src/services/hqx-server-events.js +0 -110
- package/src/services/hqx-server-handlers.js +0 -217
- package/src/services/hqx-server-latency.js +0 -136
- package/src/services/hqx-server.js +0 -403
- package/src/services/position-constants.js +0 -28
- package/src/services/position-exit-logic.js +0 -174
- package/src/services/position-manager.js +0 -438
- package/src/services/position-momentum.js +0 -206
- package/src/services/projectx/accounts.js +0 -142
- package/src/services/projectx/index.js +0 -443
- package/src/services/projectx/market.js +0 -172
- package/src/services/projectx/stats.js +0 -110
- package/src/services/projectx/trading.js +0 -180
- package/src/services/rithmic/latency-tracker.js +0 -182
- package/src/services/rithmic/market-data-decoders.js +0 -229
- package/src/services/rithmic/market-data.js +0 -272
- package/src/services/rithmic/orders-fast.js +0 -246
- package/src/services/rithmic/proto-decoders.js +0 -403
- package/src/services/rithmic/specs.js +0 -146
- package/src/services/rithmic/trade-history.js +0 -254
- package/src/services/session-history.js +0 -475
- package/src/services/strategy/hft-signal-calc.js +0 -147
- package/src/services/strategy/hft-tick.js +0 -407
- package/src/services/strategy/recovery-math.js +0 -402
- package/src/services/tradovate/constants.js +0 -109
- package/src/services/tradovate/index.js +0 -392
- package/src/services/tradovate/market.js +0 -47
- package/src/services/tradovate/orders.js +0 -145
- package/src/services/tradovate/websocket.js +0 -97
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Other AI Providers Configuration
|
|
3
|
-
* @module services/ai/providers/other-providers
|
|
4
|
-
*
|
|
5
|
-
* Unified, local, and custom provider configurations
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const UNIFIED_PROVIDERS = {
|
|
9
|
-
openrouter: {
|
|
10
|
-
id: 'openrouter',
|
|
11
|
-
name: 'OPENROUTER (RECOMMENDED)',
|
|
12
|
-
description: '1 API key for 100+ models',
|
|
13
|
-
category: 'unified',
|
|
14
|
-
models: [],
|
|
15
|
-
defaultModel: null,
|
|
16
|
-
options: [
|
|
17
|
-
{
|
|
18
|
-
id: 'api_key',
|
|
19
|
-
label: 'API KEY',
|
|
20
|
-
description: [
|
|
21
|
-
'Get key at openrouter.ai/keys',
|
|
22
|
-
'Access to Claude, GPT-4, Gemini, Llama & more',
|
|
23
|
-
'Pay-per-use, no subscriptions'
|
|
24
|
-
],
|
|
25
|
-
fields: ['apiKey'],
|
|
26
|
-
url: 'https://openrouter.ai/keys'
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
endpoint: 'https://openrouter.ai/api/v1'
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const LOCAL_PROVIDERS = {
|
|
34
|
-
ollama: {
|
|
35
|
-
id: 'ollama',
|
|
36
|
-
name: 'OLLAMA (LOCAL - FREE)',
|
|
37
|
-
description: '100% free, runs locally',
|
|
38
|
-
category: 'local',
|
|
39
|
-
models: [],
|
|
40
|
-
defaultModel: null,
|
|
41
|
-
options: [
|
|
42
|
-
{
|
|
43
|
-
id: 'local',
|
|
44
|
-
label: 'LOCAL INSTALLATION (FREE)',
|
|
45
|
-
description: [
|
|
46
|
-
'Download at ollama.ai',
|
|
47
|
-
'100% free, no API key needed',
|
|
48
|
-
'Run: ollama pull llama3.1'
|
|
49
|
-
],
|
|
50
|
-
fields: ['endpoint'],
|
|
51
|
-
url: 'https://ollama.ai',
|
|
52
|
-
defaultEndpoint: 'http://localhost:11434'
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
lmstudio: {
|
|
58
|
-
id: 'lmstudio',
|
|
59
|
-
name: 'LM STUDIO (LOCAL - FREE)',
|
|
60
|
-
description: 'Local with GUI',
|
|
61
|
-
category: 'local',
|
|
62
|
-
models: [],
|
|
63
|
-
defaultModel: null,
|
|
64
|
-
options: [
|
|
65
|
-
{
|
|
66
|
-
id: 'local',
|
|
67
|
-
label: 'LOCAL SERVER (FREE)',
|
|
68
|
-
description: [
|
|
69
|
-
'Download at lmstudio.ai',
|
|
70
|
-
'GUI for local models',
|
|
71
|
-
'OpenAI-compatible API'
|
|
72
|
-
],
|
|
73
|
-
fields: ['endpoint'],
|
|
74
|
-
url: 'https://lmstudio.ai',
|
|
75
|
-
defaultEndpoint: 'http://localhost:1234/v1'
|
|
76
|
-
}
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const CUSTOM_PROVIDERS = {
|
|
82
|
-
custom: {
|
|
83
|
-
id: 'custom',
|
|
84
|
-
name: 'CUSTOM ENDPOINT',
|
|
85
|
-
description: 'Any OpenAI-compatible API',
|
|
86
|
-
category: 'custom',
|
|
87
|
-
models: [],
|
|
88
|
-
defaultModel: null,
|
|
89
|
-
options: [
|
|
90
|
-
{
|
|
91
|
-
id: 'custom',
|
|
92
|
-
label: 'CUSTOM OPENAI-COMPATIBLE API',
|
|
93
|
-
description: [
|
|
94
|
-
'Self-hosted models',
|
|
95
|
-
'vLLM, TGI, etc.',
|
|
96
|
-
'Any OpenAI-compatible endpoint'
|
|
97
|
-
],
|
|
98
|
-
fields: ['endpoint', 'apiKey', 'model']
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
module.exports = { UNIFIED_PROVIDERS, LOCAL_PROVIDERS, CUSTOM_PROVIDERS };
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview CLIProxyAPI Installation
|
|
3
|
-
*
|
|
4
|
-
* Downloads, extracts, and configures CLIProxyAPI binary
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const https = require('https');
|
|
8
|
-
const fs = require('fs');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const os = require('os');
|
|
11
|
-
const { exec } = require('child_process');
|
|
12
|
-
|
|
13
|
-
// Configuration
|
|
14
|
-
const PROXY_VERSION = 'v6.6.84';
|
|
15
|
-
const PROXY_PORT = 8317;
|
|
16
|
-
const PROXY_DIR = path.join(os.homedir(), '.hqx', 'proxy');
|
|
17
|
-
const PROXY_BIN = path.join(PROXY_DIR, process.platform === 'win32' ? 'cli-proxy-api.exe' : 'cli-proxy-api');
|
|
18
|
-
const PROXY_CONFIG = path.join(PROXY_DIR, 'config.yaml');
|
|
19
|
-
const PROXY_AUTH_DIR = path.join(PROXY_DIR, 'auths');
|
|
20
|
-
const API_KEY = 'hqx-local-key';
|
|
21
|
-
const MANAGEMENT_KEY = 'hqx-mgmt-key';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Get download URL for current platform
|
|
25
|
-
*/
|
|
26
|
-
const getDownloadUrl = () => {
|
|
27
|
-
const platform = process.platform;
|
|
28
|
-
const arch = process.arch;
|
|
29
|
-
|
|
30
|
-
let osName, archName, ext;
|
|
31
|
-
|
|
32
|
-
if (platform === 'darwin') {
|
|
33
|
-
osName = 'darwin';
|
|
34
|
-
archName = arch === 'arm64' ? 'arm64' : 'amd64';
|
|
35
|
-
ext = 'tar.gz';
|
|
36
|
-
} else if (platform === 'win32') {
|
|
37
|
-
osName = 'windows';
|
|
38
|
-
archName = arch === 'arm64' ? 'arm64' : 'amd64';
|
|
39
|
-
ext = 'zip';
|
|
40
|
-
} else {
|
|
41
|
-
osName = 'linux';
|
|
42
|
-
archName = arch === 'arm64' ? 'arm64' : 'amd64';
|
|
43
|
-
ext = 'tar.gz';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const version = PROXY_VERSION.replace('v', '');
|
|
47
|
-
return `https://github.com/router-for-me/CLIProxyAPI/releases/download/${PROXY_VERSION}/CLIProxyAPI_${version}_${osName}_${archName}.${ext}`;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Check if CLIProxyAPI binary exists
|
|
52
|
-
*/
|
|
53
|
-
const isInstalled = () => {
|
|
54
|
-
return fs.existsSync(PROXY_BIN);
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Download file from URL
|
|
59
|
-
*/
|
|
60
|
-
const downloadFile = (url, dest) => {
|
|
61
|
-
return new Promise((resolve, reject) => {
|
|
62
|
-
const file = fs.createWriteStream(dest);
|
|
63
|
-
|
|
64
|
-
const request = (url) => {
|
|
65
|
-
https.get(url, (res) => {
|
|
66
|
-
if (res.statusCode === 302 || res.statusCode === 301) {
|
|
67
|
-
request(res.headers.location);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (res.statusCode !== 200) {
|
|
72
|
-
reject(new Error(`HTTP ${res.statusCode}`));
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
res.pipe(file);
|
|
77
|
-
file.on('finish', () => {
|
|
78
|
-
file.close();
|
|
79
|
-
resolve();
|
|
80
|
-
});
|
|
81
|
-
}).on('error', (err) => {
|
|
82
|
-
fs.unlink(dest, () => {});
|
|
83
|
-
reject(err);
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
request(url);
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Extract tar.gz archive
|
|
93
|
-
*/
|
|
94
|
-
const extractTarGz = (archive, dest) => {
|
|
95
|
-
return new Promise((resolve, reject) => {
|
|
96
|
-
exec(`tar -xzf "${archive}" -C "${dest}"`, (err) => {
|
|
97
|
-
if (err) reject(err);
|
|
98
|
-
else resolve();
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Extract zip archive (Windows)
|
|
105
|
-
*/
|
|
106
|
-
const extractZip = (archive, dest) => {
|
|
107
|
-
return new Promise((resolve, reject) => {
|
|
108
|
-
exec(`powershell -command "Expand-Archive -Path '${archive}' -DestinationPath '${dest}' -Force"`, (err) => {
|
|
109
|
-
if (err) reject(err);
|
|
110
|
-
else resolve();
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Generate config file content
|
|
117
|
-
*/
|
|
118
|
-
const getConfigContent = () => {
|
|
119
|
-
return `port: ${PROXY_PORT}
|
|
120
|
-
auth-dir: "${PROXY_AUTH_DIR}"
|
|
121
|
-
api-keys:
|
|
122
|
-
- "${API_KEY}"
|
|
123
|
-
remote-management:
|
|
124
|
-
secret-key: "${MANAGEMENT_KEY}"
|
|
125
|
-
allow-remote-management: false
|
|
126
|
-
request-retry: 3
|
|
127
|
-
quota-exceeded:
|
|
128
|
-
switch-project: true
|
|
129
|
-
switch-preview-model: true
|
|
130
|
-
`;
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Download and install CLIProxyAPI
|
|
135
|
-
* @param {Function} onProgress - Progress callback (message)
|
|
136
|
-
*/
|
|
137
|
-
const install = async (onProgress = () => {}) => {
|
|
138
|
-
// Create directories
|
|
139
|
-
if (!fs.existsSync(PROXY_DIR)) {
|
|
140
|
-
fs.mkdirSync(PROXY_DIR, { recursive: true });
|
|
141
|
-
}
|
|
142
|
-
if (!fs.existsSync(PROXY_AUTH_DIR)) {
|
|
143
|
-
fs.mkdirSync(PROXY_AUTH_DIR, { recursive: true });
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
onProgress('Downloading CLIProxyAPI...');
|
|
147
|
-
|
|
148
|
-
const downloadUrl = getDownloadUrl();
|
|
149
|
-
const ext = process.platform === 'win32' ? 'zip' : 'tar.gz';
|
|
150
|
-
const archivePath = path.join(PROXY_DIR, `cliproxyapi.${ext}`);
|
|
151
|
-
|
|
152
|
-
// Download
|
|
153
|
-
await downloadFile(downloadUrl, archivePath);
|
|
154
|
-
|
|
155
|
-
onProgress('Extracting...');
|
|
156
|
-
|
|
157
|
-
// Extract
|
|
158
|
-
if (ext === 'zip') {
|
|
159
|
-
await extractZip(archivePath, PROXY_DIR);
|
|
160
|
-
} else {
|
|
161
|
-
await extractTarGz(archivePath, PROXY_DIR);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Find the binary (it might be in a subdirectory)
|
|
165
|
-
const possibleBins = [
|
|
166
|
-
path.join(PROXY_DIR, 'cli-proxy-api'),
|
|
167
|
-
path.join(PROXY_DIR, 'cli-proxy-api.exe'),
|
|
168
|
-
path.join(PROXY_DIR, 'CLIProxyAPI', 'cli-proxy-api'),
|
|
169
|
-
path.join(PROXY_DIR, 'CLIProxyAPI', 'cli-proxy-api.exe')
|
|
170
|
-
];
|
|
171
|
-
|
|
172
|
-
for (const bin of possibleBins) {
|
|
173
|
-
if (fs.existsSync(bin) && bin !== PROXY_BIN) {
|
|
174
|
-
fs.renameSync(bin, PROXY_BIN);
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
// Make executable (Unix)
|
|
180
|
-
if (process.platform !== 'win32') {
|
|
181
|
-
fs.chmodSync(PROXY_BIN, 0o755);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Create config file
|
|
185
|
-
fs.writeFileSync(PROXY_CONFIG, getConfigContent());
|
|
186
|
-
|
|
187
|
-
// Cleanup archive
|
|
188
|
-
fs.unlinkSync(archivePath);
|
|
189
|
-
|
|
190
|
-
onProgress('Installation complete');
|
|
191
|
-
|
|
192
|
-
return true;
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Check if config has correct management key (plain text, not hashed)
|
|
197
|
-
* @returns {boolean}
|
|
198
|
-
*/
|
|
199
|
-
const isConfigValid = () => {
|
|
200
|
-
if (!fs.existsSync(PROXY_CONFIG)) return false;
|
|
201
|
-
|
|
202
|
-
try {
|
|
203
|
-
const config = fs.readFileSync(PROXY_CONFIG, 'utf8');
|
|
204
|
-
|
|
205
|
-
if (!config.includes('remote-management:') || !config.includes('secret-key:')) {
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// Check if key is hashed (bcrypt hashes start with $2a$, $2b$, or $2y$)
|
|
210
|
-
if (config.includes('$2a$') || config.includes('$2b$') || config.includes('$2y$')) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
if (!config.includes(MANAGEMENT_KEY)) {
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
return true;
|
|
219
|
-
} catch (e) {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Rewrite config file with correct settings
|
|
226
|
-
*/
|
|
227
|
-
const rewriteConfig = () => {
|
|
228
|
-
if (!fs.existsSync(PROXY_DIR)) {
|
|
229
|
-
fs.mkdirSync(PROXY_DIR, { recursive: true });
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
fs.writeFileSync(PROXY_CONFIG, getConfigContent());
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
module.exports = {
|
|
236
|
-
PROXY_VERSION,
|
|
237
|
-
PROXY_PORT,
|
|
238
|
-
PROXY_DIR,
|
|
239
|
-
PROXY_BIN,
|
|
240
|
-
PROXY_CONFIG,
|
|
241
|
-
PROXY_AUTH_DIR,
|
|
242
|
-
API_KEY,
|
|
243
|
-
MANAGEMENT_KEY,
|
|
244
|
-
getDownloadUrl,
|
|
245
|
-
isInstalled,
|
|
246
|
-
install,
|
|
247
|
-
isConfigValid,
|
|
248
|
-
rewriteConfig,
|
|
249
|
-
};
|