codex-overleaf-link 1.1.1 → 1.1.2
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
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<h1>Codex Overleaf Link</h1>
|
|
4
4
|
<p><strong>Empower Overleaf with Codex.</strong></p>
|
|
5
5
|
<p>
|
|
6
|
-
<img src="https://img.shields.io/badge/version-1.1.
|
|
6
|
+
<img src="https://img.shields.io/badge/version-1.1.2-blue" alt="version">
|
|
7
7
|
<img src="https://img.shields.io/badge/platform-macOS%20%2F%20Windows%20%2F%20Linux-lightgrey" alt="platform">
|
|
8
8
|
<img src="https://img.shields.io/badge/chrome-MV3-green" alt="chrome manifest v3">
|
|
9
9
|
<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
|
|
@@ -37,23 +37,23 @@ macOS / Linux latest source install:
|
|
|
37
37
|
curl -fsSL "https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/main/install.sh?$(date +%s)" | bash
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
Recommended version-pinned native-host install or update for v1.1.
|
|
40
|
+
Recommended version-pinned native-host install or update for v1.1.2:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
npm exec --yes codex-overleaf-link@1.1.
|
|
43
|
+
npm exec --yes codex-overleaf-link@1.1.2 -- install-native
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
GitHub Release script fallback for macOS / Linux:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
CODEX_OVERLEAF_REF=v1.1.
|
|
49
|
+
CODEX_OVERLEAF_REF=v1.1.2 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.sh)"
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
GitHub Release script fallback for Windows from PowerShell:
|
|
53
53
|
|
|
54
54
|
```powershell
|
|
55
|
-
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.
|
|
56
|
-
$env:CODEX_OVERLEAF_REF='v1.1.
|
|
55
|
+
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.ps1 -OutFile install.ps1
|
|
56
|
+
$env:CODEX_OVERLEAF_REF='v1.1.2'
|
|
57
57
|
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
58
58
|
```
|
|
59
59
|
|
|
@@ -73,19 +73,19 @@ npm installs, updates, uninstalls, and diagnoses the native host only. npm does
|
|
|
73
73
|
Install or update the native host for the official release extension id:
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
|
-
npm exec --yes codex-overleaf-link@1.1.
|
|
76
|
+
npm exec --yes codex-overleaf-link@1.1.2 -- install-native
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Diagnose the registered native host:
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
npm exec --yes codex-overleaf-link@1.1.
|
|
82
|
+
npm exec --yes codex-overleaf-link@1.1.2 -- doctor
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
Uninstall the native host:
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
npm exec --yes codex-overleaf-link@1.1.
|
|
88
|
+
npm exec --yes codex-overleaf-link@1.1.2 -- uninstall-native
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
Use `--extension-id <chrome-extension-id>` only for a custom/dev unpacked extension id that differs from the official bundled id.
|
|
@@ -123,10 +123,10 @@ If Chrome assigns a different extension id, rerun `npm run install:native -- --e
|
|
|
123
123
|
<details>
|
|
124
124
|
<summary><strong>Update</strong></summary>
|
|
125
125
|
|
|
126
|
-
For a deterministic v1.1.
|
|
126
|
+
For a deterministic v1.1.2 update, run the pinned npm command. This is also the native mismatch recovery command shown by the popup and panel when they report **Native host update required**.
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
|
-
npm exec --yes codex-overleaf-link@1.1.
|
|
129
|
+
npm exec --yes codex-overleaf-link@1.1.2 -- install-native
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
If npm is unavailable, use the GitHub Release script fallback for your platform.
|
|
@@ -134,14 +134,14 @@ If npm is unavailable, use the GitHub Release script fallback for your platform.
|
|
|
134
134
|
macOS / Linux:
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
|
-
CODEX_OVERLEAF_REF=v1.1.
|
|
137
|
+
CODEX_OVERLEAF_REF=v1.1.2 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.sh)"
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
Windows PowerShell:
|
|
141
141
|
|
|
142
142
|
```powershell
|
|
143
|
-
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.
|
|
144
|
-
$env:CODEX_OVERLEAF_REF='v1.1.
|
|
143
|
+
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.ps1 -OutFile install.ps1
|
|
144
|
+
$env:CODEX_OVERLEAF_REF='v1.1.2'
|
|
145
145
|
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
146
146
|
```
|
|
147
147
|
|
|
@@ -151,13 +151,13 @@ Then reload the extension in `chrome://extensions` and refresh the Overleaf page
|
|
|
151
151
|
|
|
152
152
|
## GitHub Release Artifacts
|
|
153
153
|
|
|
154
|
-
The v1.1.
|
|
154
|
+
The v1.1.2 GitHub Release contains:
|
|
155
155
|
|
|
156
|
-
- `codex-overleaf-link-extension-v1.1.
|
|
157
|
-
- `codex-overleaf-native-host-v1.1.
|
|
158
|
-
- `codex-overleaf-link-1.1.
|
|
159
|
-
- `install.sh`: release-pinned macOS / Linux installer that defaults to `v1.1.
|
|
160
|
-
- `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v1.1.
|
|
156
|
+
- `codex-overleaf-link-extension-v1.1.2.zip`: loadable Chrome extension package for manual unpacked installation.
|
|
157
|
+
- `codex-overleaf-native-host-v1.1.2.tar.gz`: native host runtime files used by the installer and release verification.
|
|
158
|
+
- `codex-overleaf-link-1.1.2.tgz`: npm native host CLI package for pinned install, doctor, and uninstall flows.
|
|
159
|
+
- `install.sh`: release-pinned macOS / Linux installer that defaults to `v1.1.2` when run directly from the release artifact.
|
|
160
|
+
- `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v1.1.2` when run directly from the release artifact.
|
|
161
161
|
- `uninstall-native-host.mjs`: native host uninstaller that removes the Chrome Native Messaging manifest, bridge executable, and runtime copy.
|
|
162
162
|
- `SHA256SUMS` and `release-manifest.json`: checksum and artifact metadata for release verification.
|
|
163
163
|
|
|
@@ -208,7 +208,7 @@ The uninstaller removes the Native Messaging registration, bridge executable, an
|
|
|
208
208
|
Linux Chromium install or update:
|
|
209
209
|
|
|
210
210
|
```bash
|
|
211
|
-
CODEX_OVERLEAF_REF=v1.1.
|
|
211
|
+
CODEX_OVERLEAF_REF=v1.1.2 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.sh)" -- --browser chromium
|
|
212
212
|
```
|
|
213
213
|
|
|
214
214
|
Linux Chromium uninstall:
|
|
@@ -303,7 +303,7 @@ For custom builds, pass the actual id with `CODEX_OVERLEAF_EXTENSION_ID=<chrome-
|
|
|
303
303
|
|
|
304
304
|
## Local Data And Cleanup
|
|
305
305
|
|
|
306
|
-
Codex Overleaf Link does not use a hosted backend or default telemetry. Data is local to the Chrome profile and local native host. The
|
|
306
|
+
Codex Overleaf Link does not use a hosted backend or default telemetry. Data is local to the Chrome profile and local native host. The privacy posture is documented in this README and the GitHub Release notes; no internal docs are shipped in release artifacts.
|
|
307
307
|
|
|
308
308
|
| Area | Location | Contents |
|
|
309
309
|
|------|----------|----------|
|
|
@@ -350,7 +350,7 @@ Composer attachments are turn-scoped Codex context. Limits are 8 attachments per
|
|
|
350
350
|
Run the pinned npm native-host installer, reload the extension in `chrome://extensions`, then refresh the Overleaf tab. This also fixes extension/native version mismatch and native protocol mismatch.
|
|
351
351
|
|
|
352
352
|
```bash
|
|
353
|
-
npm exec --yes codex-overleaf-link@1.1.
|
|
353
|
+
npm exec --yes codex-overleaf-link@1.1.2 -- install-native
|
|
354
354
|
```
|
|
355
355
|
|
|
356
356
|
If npm is unavailable, use the GitHub Release script fallback for your platform.
|
|
@@ -358,14 +358,14 @@ If npm is unavailable, use the GitHub Release script fallback for your platform.
|
|
|
358
358
|
macOS/Linux:
|
|
359
359
|
|
|
360
360
|
```bash
|
|
361
|
-
CODEX_OVERLEAF_REF=v1.1.
|
|
361
|
+
CODEX_OVERLEAF_REF=v1.1.2 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.sh)"
|
|
362
362
|
```
|
|
363
363
|
|
|
364
364
|
Windows PowerShell:
|
|
365
365
|
|
|
366
366
|
```powershell
|
|
367
|
-
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.
|
|
368
|
-
$env:CODEX_OVERLEAF_REF='v1.1.
|
|
367
|
+
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.1.2/install.ps1 -OutFile install.ps1
|
|
368
|
+
$env:CODEX_OVERLEAF_REF='v1.1.2'
|
|
369
369
|
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
370
370
|
```
|
|
371
371
|
|
|
@@ -424,8 +424,8 @@ Use this matrix for release-candidate signoff and compatibility reports. Record
|
|
|
424
424
|
| Browser/channel/version | Google Chrome channel and version. | Google Chrome channel and version. | Google Chrome channel and version. | Chromium channel/package and version. |
|
|
425
425
|
| Install mode | Manual unpacked extension from GitHub Release zip or checkout. | Manual unpacked extension from GitHub Release zip or checkout. | Manual unpacked extension from GitHub Release zip or checkout. | Manual unpacked extension from GitHub Release zip or checkout; native host installed with `--browser chromium`. |
|
|
426
426
|
| Extension id | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. |
|
|
427
|
-
| Installer/update command | `npm exec --yes codex-overleaf-link@1.1.
|
|
428
|
-
| Uninstall command | `npm exec --yes codex-overleaf-link@1.1.
|
|
427
|
+
| Installer/update command | `npm exec --yes codex-overleaf-link@1.1.2 -- install-native` | `npm exec --yes codex-overleaf-link@1.1.2 -- install-native` | `npm exec --yes codex-overleaf-link@1.1.2 -- install-native` | `npm exec --yes codex-overleaf-link@1.1.2 -- install-native --browser chromium` |
|
|
428
|
+
| Uninstall command | `npm exec --yes codex-overleaf-link@1.1.2 -- uninstall-native` | `npm exec --yes codex-overleaf-link@1.1.2 -- uninstall-native` | `npm exec --yes codex-overleaf-link@1.1.2 -- uninstall-native` | `npm exec --yes codex-overleaf-link@1.1.2 -- uninstall-native --browser chromium` |
|
|
429
429
|
| Manifest/registry path | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.codex.overleaf.json` | `HKCU\Software\Google\Chrome\NativeMessagingHosts\com.codex.overleaf` -> `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime\com.codex.overleaf.json` | `~/.config/google-chrome/NativeMessagingHosts/com.codex.overleaf.json` | `~/.config/chromium/NativeMessagingHosts/com.codex.overleaf.json` |
|
|
430
430
|
| Bridge/runtime/source path | Bridge `~/.codex-overleaf/codex-overleaf-bridge`; runtime `~/.codex-overleaf/native-host-runtime`; source `~/.codex-overleaf/source`. | Bridge `%LOCALAPPDATA%\CodexOverleaf\codex-overleaf-bridge.cmd`; runtime `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime`; source `%LOCALAPPDATA%\CodexOverleaf\source`. | Bridge `~/.codex-overleaf/codex-overleaf-bridge`; runtime `~/.codex-overleaf/native-host-runtime`; source `~/.codex-overleaf/source`. | Bridge `~/.codex-overleaf/codex-overleaf-bridge`; runtime `~/.codex-overleaf/native-host-runtime`; source `~/.codex-overleaf/source`. |
|
|
431
431
|
| Node/Git/Codex/TeX | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. |
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
const MIN_NATIVE_VERSION = '1.0.0';
|
|
13
13
|
const MIN_COMPATIBLE_NATIVE_VERSION = '1.0.0';
|
|
14
14
|
const MIN_COMPATIBLE_EXTENSION_VERSION = '1.0.0';
|
|
15
|
-
const BUILD_TARGET_VERSION = '1.1.
|
|
15
|
+
const BUILD_TARGET_VERSION = '1.1.2';
|
|
16
16
|
const DEFAULT_CHROME_EXTENSION_ID = 'illdpneeeopfffmiepaejglgmhpmdhdc';
|
|
17
17
|
const REQUIRED_CAPABILITIES = Object.freeze([
|
|
18
18
|
'bridgePing',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-overleaf-link",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Cross-platform Chrome bridge that connects Codex to the active Overleaf project.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
"scripts/install-native-host.mjs",
|
|
34
34
|
"scripts/uninstall-native-host.mjs",
|
|
35
35
|
"scripts/verify-npm-package.mjs",
|
|
36
|
-
"scripts/npm-package-files-v1.1.1.txt",
|
|
37
36
|
"README.md",
|
|
38
37
|
"package.json"
|
|
39
38
|
]
|
|
@@ -6,6 +6,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
6
6
|
|
|
7
7
|
const FORBIDDEN_NPM_PACKAGE_PATH_PATTERNS = [
|
|
8
8
|
/(^|\/)(docs|specs|superpowers|private|test|tests|fixtures|dist|\.github|node_modules)(\/|$)/,
|
|
9
|
+
/(^|\/)scripts\/npm-package-files-v[^/]+\.txt$/,
|
|
9
10
|
/(\.env(?:\.[^/]*)?|\.pem|\.key|\.p12)$/
|
|
10
11
|
];
|
|
11
12
|
|
|
@@ -57,12 +58,10 @@ export function compareExactManifest(actualPaths, expectedPaths) {
|
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function readExpectedManifest(manifestPath = getDefaultManifestPath()) {
|
|
61
|
+
export function readExpectedManifest(manifestPath) {
|
|
62
|
+
if (!manifestPath) {
|
|
63
|
+
return buildExpectedManifestFromPackageFiles();
|
|
64
|
+
}
|
|
66
65
|
return normalizePackagePathList(
|
|
67
66
|
fs.readFileSync(manifestPath, 'utf8')
|
|
68
67
|
.split(/\r?\n/)
|
|
@@ -71,6 +70,51 @@ export function readExpectedManifest(manifestPath = getDefaultManifestPath()) {
|
|
|
71
70
|
);
|
|
72
71
|
}
|
|
73
72
|
|
|
73
|
+
function buildExpectedManifestFromPackageFiles() {
|
|
74
|
+
const packageJson = readPackageMetadata();
|
|
75
|
+
const expected = new Set(['package/package.json']);
|
|
76
|
+
|
|
77
|
+
for (const implicitPath of ['README.md', 'LICENSE']) {
|
|
78
|
+
if (fs.existsSync(path.join(repoRoot, implicitPath))) {
|
|
79
|
+
expected.add(`package/${implicitPath}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
for (const rawEntry of packageJson.files || []) {
|
|
84
|
+
const entry = String(rawEntry).replace(/\\/g, '/').replace(/^\/+/, '').replace(/\/+$/, '');
|
|
85
|
+
if (!entry || entry.includes('\0') || entry.split('/').includes('..')) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
collectPackageFileEntry(entry, expected);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return normalizePackagePathList([...expected]);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function collectPackageFileEntry(entry, expected) {
|
|
95
|
+
const fullPath = path.join(repoRoot, entry);
|
|
96
|
+
if (!fs.existsSync(fullPath)) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const stat = fs.statSync(fullPath);
|
|
101
|
+
if (stat.isFile()) {
|
|
102
|
+
expected.add(`package/${entry}`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (!stat.isDirectory()) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
for (const child of fs.readdirSync(fullPath, { withFileTypes: true })) {
|
|
111
|
+
if (child.name === 'node_modules' || child.name.startsWith('.')) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
collectPackageFileEntry(`${entry}/${child.name}`, expected);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
74
118
|
export function verifyPackagePaths(actualPaths, expectedPaths = readExpectedManifest()) {
|
|
75
119
|
const actual = normalizePackagePathList(actualPaths);
|
|
76
120
|
const expected = normalizePackagePathList(expectedPaths);
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
package/LICENSE
|
|
2
|
-
package/extension/src/shared/agentTranscript.js
|
|
3
|
-
package/extension/src/shared/auditRecords.js
|
|
4
|
-
package/native-host/src/codexArgs.js
|
|
5
|
-
package/native-host/src/codexHome.js
|
|
6
|
-
package/native-host/src/codexModels.js
|
|
7
|
-
package/native-host/src/codexPrompt.js
|
|
8
|
-
package/native-host/src/codexPromptAssembly.js
|
|
9
|
-
package/native-host/src/codexSessionRunner.js
|
|
10
|
-
package/native-host/src/commandApproval.js
|
|
11
|
-
package/extension/src/shared/compatibility.js
|
|
12
|
-
package/extension/src/shared/compileAdapter.js
|
|
13
|
-
package/native-host/src/debugLog.js
|
|
14
|
-
package/native-host/src/diffEngine.js
|
|
15
|
-
package/extension/src/shared/governanceRules.js
|
|
16
|
-
package/extension/src/shared/i18n.js
|
|
17
|
-
package/native-host/src/index.js
|
|
18
|
-
package/native-host/src/launcher.js
|
|
19
|
-
package/native-host/src/localSkills.js
|
|
20
|
-
package/native-host/src/manifest.js
|
|
21
|
-
package/native-host/src/mirrorSensitiveScan.js
|
|
22
|
-
package/native-host/src/mirrorWorkspace.js
|
|
23
|
-
package/extension/src/shared/models.js
|
|
24
|
-
package/native-host/src/nativeDoctor.js
|
|
25
|
-
package/native-host/src/nativeEnvironment.js
|
|
26
|
-
package/native-host/src/nativeHostPlatform.js
|
|
27
|
-
package/native-host/src/nativeMessaging.js
|
|
28
|
-
package/native-host/src/nativeQuotas.js
|
|
29
|
-
package/native-host/src/nativeResponseBudget.js
|
|
30
|
-
package/extension/src/shared/otText.js
|
|
31
|
-
package/extension/src/shared/projectFiles.js
|
|
32
|
-
package/extension/src/shared/reviewing.js
|
|
33
|
-
package/native-host/src/runtimeInstaller.js
|
|
34
|
-
package/extension/src/shared/sensitiveScan.js
|
|
35
|
-
package/extension/src/shared/sessionState.js
|
|
36
|
-
package/extension/src/shared/staleGuard.js
|
|
37
|
-
package/extension/src/shared/storageDb.js
|
|
38
|
-
package/extension/src/shared/storageKeys.js
|
|
39
|
-
package/extension/src/shared/storageMigration.js
|
|
40
|
-
package/extension/src/shared/summary.js
|
|
41
|
-
package/native-host/src/taskRunner.js
|
|
42
|
-
package/native-host/src/taskRunnerRuntime.js
|
|
43
|
-
package/native-host/src/textPatch.js
|
|
44
|
-
package/extension/src/shared/undoOperations.js
|
|
45
|
-
package/package.json
|
|
46
|
-
package/README.md
|
|
47
|
-
package/scripts/codex-json-agent.mjs
|
|
48
|
-
package/bin/codex-overleaf-link.mjs
|
|
49
|
-
package/scripts/install-native-host.mjs
|
|
50
|
-
package/scripts/uninstall-native-host.mjs
|
|
51
|
-
package/scripts/verify-npm-package.mjs
|
|
52
|
-
package/scripts/npm-package-files-v1.1.1.txt
|