@j0hanz/fetch-url-mcp 1.2.0 → 1.3.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.
Files changed (184) hide show
  1. package/dist/cache.d.ts +9 -3
  2. package/dist/cache.d.ts.map +1 -0
  3. package/dist/cache.js +44 -110
  4. package/dist/cache.js.map +1 -0
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +9 -4
  8. package/dist/cli.js.map +1 -0
  9. package/dist/config.d.ts +2 -3
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +18 -25
  12. package/dist/config.js.map +1 -0
  13. package/dist/crypto.d.ts +1 -0
  14. package/dist/crypto.d.ts.map +1 -0
  15. package/dist/crypto.js +1 -0
  16. package/dist/crypto.js.map +1 -0
  17. package/dist/dom-noise-removal.d.ts +2 -1
  18. package/dist/dom-noise-removal.d.ts.map +1 -0
  19. package/dist/dom-noise-removal.js +8 -4
  20. package/dist/dom-noise-removal.js.map +1 -0
  21. package/dist/download.d.ts +4 -0
  22. package/dist/download.d.ts.map +1 -0
  23. package/dist/download.js +106 -0
  24. package/dist/download.js.map +1 -0
  25. package/dist/errors.d.ts +1 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +1 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/examples/mcp-fetch-url-client.js +19 -3
  30. package/dist/examples/mcp-fetch-url-client.js.map +1 -1
  31. package/dist/fetch-content.d.ts +1 -0
  32. package/dist/fetch-content.d.ts.map +1 -0
  33. package/dist/fetch-content.js +14 -14
  34. package/dist/fetch-content.js.map +1 -0
  35. package/dist/fetch-stream.d.ts +1 -0
  36. package/dist/fetch-stream.d.ts.map +1 -0
  37. package/dist/fetch-stream.js +6 -3
  38. package/dist/fetch-stream.js.map +1 -0
  39. package/dist/fetch.d.ts +1 -0
  40. package/dist/fetch.d.ts.map +1 -0
  41. package/dist/fetch.js +120 -51
  42. package/dist/fetch.js.map +1 -0
  43. package/dist/host-normalization.d.ts +1 -0
  44. package/dist/host-normalization.d.ts.map +1 -0
  45. package/dist/host-normalization.js +19 -6
  46. package/dist/host-normalization.js.map +1 -0
  47. package/dist/http/auth.d.ts +35 -0
  48. package/dist/http/auth.d.ts.map +1 -0
  49. package/dist/http/auth.js +283 -0
  50. package/dist/http/auth.js.map +1 -0
  51. package/dist/http/health.d.ts +7 -0
  52. package/dist/http/health.d.ts.map +1 -0
  53. package/dist/http/health.js +166 -0
  54. package/dist/http/health.js.map +1 -0
  55. package/dist/http/helpers.d.ts +58 -0
  56. package/dist/http/helpers.d.ts.map +1 -0
  57. package/dist/http/helpers.js +372 -0
  58. package/dist/http/helpers.js.map +1 -0
  59. package/dist/{http-native.d.ts → http/native.d.ts} +1 -0
  60. package/dist/http/native.d.ts.map +1 -0
  61. package/dist/http/native.js +529 -0
  62. package/dist/http/native.js.map +1 -0
  63. package/dist/http/rate-limit.d.ts +13 -0
  64. package/dist/http/rate-limit.d.ts.map +1 -0
  65. package/dist/http/rate-limit.js +81 -0
  66. package/dist/http/rate-limit.js.map +1 -0
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +2 -1
  70. package/dist/index.js.map +1 -0
  71. package/dist/instructions.d.ts +2 -0
  72. package/dist/instructions.d.ts.map +1 -0
  73. package/dist/instructions.js +108 -0
  74. package/dist/instructions.js.map +1 -0
  75. package/dist/ip-blocklist.d.ts +1 -0
  76. package/dist/ip-blocklist.d.ts.map +1 -0
  77. package/dist/ip-blocklist.js +2 -0
  78. package/dist/ip-blocklist.js.map +1 -0
  79. package/dist/json.d.ts +2 -1
  80. package/dist/json.d.ts.map +1 -0
  81. package/dist/json.js +19 -6
  82. package/dist/json.js.map +1 -0
  83. package/dist/language-detection.d.ts +1 -0
  84. package/dist/language-detection.d.ts.map +1 -0
  85. package/dist/language-detection.js +1 -0
  86. package/dist/language-detection.js.map +1 -0
  87. package/dist/markdown-cleanup.d.ts +2 -1
  88. package/dist/markdown-cleanup.d.ts.map +1 -0
  89. package/dist/markdown-cleanup.js +51 -52
  90. package/dist/markdown-cleanup.js.map +1 -0
  91. package/dist/mcp-validator.d.ts +1 -0
  92. package/dist/mcp-validator.d.ts.map +1 -0
  93. package/dist/mcp-validator.js +16 -8
  94. package/dist/mcp-validator.js.map +1 -0
  95. package/dist/mcp.d.ts +2 -2
  96. package/dist/mcp.d.ts.map +1 -0
  97. package/dist/mcp.js +17 -333
  98. package/dist/mcp.js.map +1 -0
  99. package/dist/observability.d.ts +2 -0
  100. package/dist/observability.d.ts.map +1 -0
  101. package/dist/observability.js +30 -5
  102. package/dist/observability.js.map +1 -0
  103. package/dist/prompts.d.ts +1 -0
  104. package/dist/prompts.d.ts.map +1 -0
  105. package/dist/prompts.js +15 -3
  106. package/dist/prompts.js.map +1 -0
  107. package/dist/resources.d.ts +1 -0
  108. package/dist/resources.d.ts.map +1 -0
  109. package/dist/resources.js +30 -23
  110. package/dist/resources.js.map +1 -0
  111. package/dist/server-tuning.d.ts +1 -0
  112. package/dist/server-tuning.d.ts.map +1 -0
  113. package/dist/server-tuning.js +11 -15
  114. package/dist/server-tuning.js.map +1 -0
  115. package/dist/server.d.ts +1 -0
  116. package/dist/server.d.ts.map +1 -0
  117. package/dist/server.js +23 -23
  118. package/dist/server.js.map +1 -0
  119. package/dist/session.d.ts +1 -0
  120. package/dist/session.d.ts.map +1 -0
  121. package/dist/session.js +55 -28
  122. package/dist/session.js.map +1 -0
  123. package/dist/tasks/execution.d.ts +42 -0
  124. package/dist/tasks/execution.d.ts.map +1 -0
  125. package/dist/tasks/execution.js +232 -0
  126. package/dist/tasks/execution.js.map +1 -0
  127. package/dist/{tasks.d.ts → tasks/manager.d.ts} +6 -0
  128. package/dist/tasks/manager.d.ts.map +1 -0
  129. package/dist/{tasks.js → tasks/manager.js} +86 -37
  130. package/dist/tasks/manager.js.map +1 -0
  131. package/dist/tasks/owner.d.ts +33 -0
  132. package/dist/tasks/owner.d.ts.map +1 -0
  133. package/dist/tasks/owner.js +99 -0
  134. package/dist/tasks/owner.js.map +1 -0
  135. package/dist/timer-utils.d.ts +1 -0
  136. package/dist/timer-utils.d.ts.map +1 -0
  137. package/dist/timer-utils.js +12 -5
  138. package/dist/timer-utils.js.map +1 -0
  139. package/dist/tool-errors.d.ts +12 -0
  140. package/dist/tool-errors.d.ts.map +1 -0
  141. package/dist/tool-errors.js +52 -0
  142. package/dist/tool-errors.js.map +1 -0
  143. package/dist/tool-pipeline.d.ts +72 -0
  144. package/dist/tool-pipeline.d.ts.map +1 -0
  145. package/dist/tool-pipeline.js +407 -0
  146. package/dist/tool-pipeline.js.map +1 -0
  147. package/dist/tool-progress.d.ts +32 -0
  148. package/dist/tool-progress.d.ts.map +1 -0
  149. package/dist/tool-progress.js +123 -0
  150. package/dist/tool-progress.js.map +1 -0
  151. package/dist/tools.d.ts +35 -111
  152. package/dist/tools.d.ts.map +1 -0
  153. package/dist/tools.js +93 -566
  154. package/dist/tools.js.map +1 -0
  155. package/dist/{transform.d.ts → transform/transform.d.ts} +2 -1
  156. package/dist/transform/transform.d.ts.map +1 -0
  157. package/dist/{transform.js → transform/transform.js} +73 -769
  158. package/dist/transform/transform.js.map +1 -0
  159. package/dist/{transform-types.d.ts → transform/types.d.ts} +1 -0
  160. package/dist/transform/types.d.ts.map +1 -0
  161. package/dist/{transform-types.js → transform/types.js} +1 -0
  162. package/dist/transform/types.js.map +1 -0
  163. package/dist/transform/worker-pool.d.ts +93 -0
  164. package/dist/transform/worker-pool.d.ts.map +1 -0
  165. package/dist/transform/worker-pool.js +759 -0
  166. package/dist/transform/worker-pool.js.map +1 -0
  167. package/dist/transform/workers/transform-child.d.ts +2 -0
  168. package/dist/transform/workers/transform-child.d.ts.map +1 -0
  169. package/dist/{workers → transform/workers}/transform-child.js +3 -1
  170. package/dist/transform/workers/transform-child.js.map +1 -0
  171. package/dist/transform/workers/transform-worker.d.ts +2 -0
  172. package/dist/transform/workers/transform-worker.d.ts.map +1 -0
  173. package/dist/{workers → transform/workers}/transform-worker.js +2 -1
  174. package/dist/transform/workers/transform-worker.js.map +1 -0
  175. package/dist/type-guards.d.ts +1 -0
  176. package/dist/type-guards.d.ts.map +1 -0
  177. package/dist/type-guards.js +1 -0
  178. package/dist/type-guards.js.map +1 -0
  179. package/package.json +6 -7
  180. package/dist/AGENTS.md +0 -152
  181. package/dist/http-native.js +0 -1320
  182. package/dist/instructions.md +0 -113
  183. package/dist/workers/transform-child.d.ts +0 -1
  184. package/dist/workers/transform-worker.d.ts +0 -1
@@ -0,0 +1,372 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import { Writable } from 'node:stream';
3
+ import { pipeline } from 'node:stream/promises';
4
+ import { config } from '../config.js';
5
+ import { createDefaultBlockList, normalizeIpForBlockList, } from '../ip-blocklist.js';
6
+ import { logWarn } from '../observability.js';
7
+ import { composeCloseHandlers } from '../session.js';
8
+ // ---------------------------------------------------------------------------
9
+ // Response helpers
10
+ // ---------------------------------------------------------------------------
11
+ export function setNoStoreHeaders(res) {
12
+ res.setHeader('X-Content-Type-Options', 'nosniff');
13
+ res.setHeader('Cache-Control', 'no-store');
14
+ }
15
+ export function sendJson(res, status, body) {
16
+ res.statusCode = status;
17
+ res.setHeader('Content-Type', 'application/json; charset=utf-8');
18
+ setNoStoreHeaders(res);
19
+ res.end(JSON.stringify(body));
20
+ }
21
+ export function sendText(res, status, body) {
22
+ res.statusCode = status;
23
+ res.setHeader('Content-Type', 'text/plain; charset=utf-8');
24
+ setNoStoreHeaders(res);
25
+ res.end(body);
26
+ }
27
+ export function sendEmpty(res, status) {
28
+ res.statusCode = status;
29
+ res.setHeader('Content-Length', '0');
30
+ res.end();
31
+ }
32
+ export function sendError(res, code, message, status = 400, id = null) {
33
+ sendJson(res, status, {
34
+ jsonrpc: '2.0',
35
+ error: { code, message },
36
+ id,
37
+ });
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // Request helpers
41
+ // ---------------------------------------------------------------------------
42
+ export function getHeaderValue(req, name) {
43
+ const val = req.headers[name];
44
+ if (!val)
45
+ return null;
46
+ if (Array.isArray(val))
47
+ return val[0] ?? null;
48
+ return val;
49
+ }
50
+ export function getMcpSessionId(req) {
51
+ return (getHeaderValue(req, 'mcp-session-id') ??
52
+ getHeaderValue(req, 'x-mcp-session-id'));
53
+ }
54
+ const SINGLE_VALUE_HEADER_NAMES = [
55
+ 'authorization',
56
+ 'x-api-key',
57
+ 'host',
58
+ 'origin',
59
+ 'content-length',
60
+ 'mcp-session-id',
61
+ 'x-mcp-session-id',
62
+ ];
63
+ function hasDuplicateHeader(req, name) {
64
+ const values = req.headersDistinct[name];
65
+ return Array.isArray(values) && values.length > 1;
66
+ }
67
+ export function findDuplicateSingleValueHeader(req) {
68
+ for (const name of SINGLE_VALUE_HEADER_NAMES) {
69
+ if (hasDuplicateHeader(req, name))
70
+ return name;
71
+ }
72
+ return null;
73
+ }
74
+ export function drainRequest(req) {
75
+ if (req.readableEnded)
76
+ return;
77
+ try {
78
+ req.resume();
79
+ }
80
+ catch {
81
+ // Best-effort only.
82
+ }
83
+ }
84
+ // ---------------------------------------------------------------------------
85
+ // Request abort signal
86
+ // ---------------------------------------------------------------------------
87
+ export function createRequestAbortSignal(req) {
88
+ const controller = new AbortController();
89
+ let cleanedUp = false;
90
+ const abortRequest = () => {
91
+ if (cleanedUp)
92
+ return;
93
+ if (!controller.signal.aborted)
94
+ controller.abort();
95
+ };
96
+ if (req.destroyed) {
97
+ abortRequest();
98
+ return {
99
+ signal: controller.signal,
100
+ cleanup: () => {
101
+ cleanedUp = true;
102
+ },
103
+ };
104
+ }
105
+ const onAborted = abortRequest;
106
+ const onClose = () => {
107
+ // A normal close after a complete body should not be treated as cancellation.
108
+ if (req.complete)
109
+ return;
110
+ abortRequest();
111
+ };
112
+ const onError = () => {
113
+ abortRequest();
114
+ };
115
+ req.once('aborted', onAborted);
116
+ req.once('close', onClose);
117
+ req.once('error', onError);
118
+ return {
119
+ signal: controller.signal,
120
+ cleanup: () => {
121
+ cleanedUp = true;
122
+ req.removeListener('aborted', onAborted);
123
+ req.removeListener('close', onClose);
124
+ req.removeListener('error', onError);
125
+ },
126
+ };
127
+ }
128
+ // ---------------------------------------------------------------------------
129
+ // IP & connection helpers
130
+ // ---------------------------------------------------------------------------
131
+ export function normalizeRemoteAddress(address) {
132
+ if (!address)
133
+ return null;
134
+ const trimmed = address.trim();
135
+ if (!trimmed)
136
+ return null;
137
+ const normalized = normalizeIpForBlockList(trimmed);
138
+ if (normalized)
139
+ return normalized.ip;
140
+ return trimmed;
141
+ }
142
+ export function registerInboundBlockList(server) {
143
+ if (!config.server.http.blockPrivateConnections)
144
+ return;
145
+ const blockList = createDefaultBlockList();
146
+ server.on('connection', (socket) => {
147
+ const remoteAddress = normalizeRemoteAddress(socket.remoteAddress);
148
+ if (!remoteAddress)
149
+ return;
150
+ const normalized = normalizeIpForBlockList(remoteAddress);
151
+ if (!normalized)
152
+ return;
153
+ if (blockList.check(normalized.ip, normalized.family)) {
154
+ logWarn('Blocked inbound connection', {
155
+ remoteAddress: normalized.ip,
156
+ family: normalized.family,
157
+ });
158
+ socket.destroy();
159
+ }
160
+ });
161
+ }
162
+ // ---------------------------------------------------------------------------
163
+ // Request context builder
164
+ // ---------------------------------------------------------------------------
165
+ export function buildRequestContext(req, res, signal) {
166
+ let url;
167
+ try {
168
+ url = new URL(req.url ?? '', 'http://localhost');
169
+ }
170
+ catch {
171
+ sendJson(res, 400, { error: 'Invalid request URL' });
172
+ return null;
173
+ }
174
+ return {
175
+ req,
176
+ res,
177
+ url,
178
+ method: req.method,
179
+ ip: normalizeRemoteAddress(req.socket.remoteAddress),
180
+ body: undefined,
181
+ ...(signal ? { signal } : {}),
182
+ };
183
+ }
184
+ // ---------------------------------------------------------------------------
185
+ // Transport / MCP helpers
186
+ // ---------------------------------------------------------------------------
187
+ export async function closeTransportBestEffort(transport, context) {
188
+ try {
189
+ await transport.close();
190
+ }
191
+ catch (error) {
192
+ logWarn('Transport close failed', { context, error });
193
+ }
194
+ }
195
+ export async function closeMcpServerBestEffort(server, context) {
196
+ try {
197
+ await server.close();
198
+ }
199
+ catch (error) {
200
+ logWarn('MCP server close failed', { context, error });
201
+ }
202
+ }
203
+ export function createTransportAdapter(transportImpl) {
204
+ const noopOnClose = () => { };
205
+ const noopOnError = () => { };
206
+ const noopOnMessage = () => { };
207
+ const baseOnClose = transportImpl.onclose;
208
+ let oncloseHandler = noopOnClose;
209
+ let onerrorHandler = noopOnError;
210
+ let onmessageHandler = noopOnMessage;
211
+ return {
212
+ start: () => transportImpl.start(),
213
+ send: (message, options) => transportImpl.send(message, options),
214
+ close: () => transportImpl.close(),
215
+ get onclose() {
216
+ return oncloseHandler;
217
+ },
218
+ set onclose(handler) {
219
+ oncloseHandler = handler;
220
+ transportImpl.onclose = composeCloseHandlers(baseOnClose, handler);
221
+ },
222
+ get onerror() {
223
+ return onerrorHandler;
224
+ },
225
+ set onerror(handler) {
226
+ onerrorHandler = handler;
227
+ transportImpl.onerror = handler;
228
+ },
229
+ get onmessage() {
230
+ return onmessageHandler;
231
+ },
232
+ set onmessage(handler) {
233
+ onmessageHandler = handler;
234
+ transportImpl.onmessage = handler;
235
+ },
236
+ };
237
+ }
238
+ export class JsonBodyError extends Error {
239
+ kind;
240
+ constructor(kind, message) {
241
+ super(message);
242
+ this.name = 'JsonBodyError';
243
+ this.kind = kind;
244
+ }
245
+ }
246
+ export const DEFAULT_BODY_LIMIT_BYTES = 1024 * 1024;
247
+ function isRequestReadAborted(req) {
248
+ return req.destroyed && !req.complete;
249
+ }
250
+ class JsonBodyReader {
251
+ async read(req, limit = DEFAULT_BODY_LIMIT_BYTES, signal) {
252
+ const contentType = getHeaderValue(req, 'content-type');
253
+ if (!contentType?.includes('application/json'))
254
+ return undefined;
255
+ const contentLengthHeader = getHeaderValue(req, 'content-length');
256
+ if (contentLengthHeader) {
257
+ const contentLength = Number.parseInt(contentLengthHeader, 10);
258
+ if (Number.isFinite(contentLength) && contentLength > limit) {
259
+ try {
260
+ req.destroy();
261
+ }
262
+ catch {
263
+ // Best-effort only.
264
+ }
265
+ throw new JsonBodyError('payload-too-large', 'Payload too large');
266
+ }
267
+ }
268
+ if (signal?.aborted || isRequestReadAborted(req)) {
269
+ throw new JsonBodyError('read-failed', 'Request aborted');
270
+ }
271
+ const body = await this.readBody(req, limit, signal);
272
+ if (!body)
273
+ return undefined;
274
+ try {
275
+ return JSON.parse(body);
276
+ }
277
+ catch (err) {
278
+ throw new JsonBodyError('invalid-json', err instanceof Error ? err.message : String(err));
279
+ }
280
+ }
281
+ async readBody(req, limit, signal) {
282
+ const abortListener = this.attachAbortListener(req, signal);
283
+ try {
284
+ const { chunks, size } = await this.collectChunks(req, limit, signal);
285
+ if (chunks.length === 0)
286
+ return undefined;
287
+ return Buffer.concat(chunks, size).toString('utf8');
288
+ }
289
+ finally {
290
+ this.detachAbortListener(signal, abortListener);
291
+ }
292
+ }
293
+ attachAbortListener(req, signal) {
294
+ if (!signal)
295
+ return null;
296
+ const listener = () => {
297
+ try {
298
+ req.destroy();
299
+ }
300
+ catch {
301
+ // Best-effort only.
302
+ }
303
+ };
304
+ if (signal.aborted) {
305
+ listener();
306
+ }
307
+ else {
308
+ signal.addEventListener('abort', listener, { once: true });
309
+ }
310
+ return listener;
311
+ }
312
+ detachAbortListener(signal, listener) {
313
+ if (!signal || !listener)
314
+ return;
315
+ try {
316
+ signal.removeEventListener('abort', listener);
317
+ }
318
+ catch {
319
+ // Best-effort cleanup.
320
+ }
321
+ }
322
+ async collectChunks(req, limit, signal) {
323
+ let size = 0;
324
+ const chunks = [];
325
+ const sink = new Writable({
326
+ write: (chunk, _encoding, callback) => {
327
+ try {
328
+ if (signal?.aborted || isRequestReadAborted(req)) {
329
+ callback(new JsonBodyError('read-failed', 'Request aborted'));
330
+ return;
331
+ }
332
+ const buf = this.normalizeChunk(chunk);
333
+ size += buf.length;
334
+ if (size > limit) {
335
+ req.destroy();
336
+ callback(new JsonBodyError('payload-too-large', 'Payload too large'));
337
+ return;
338
+ }
339
+ chunks.push(buf);
340
+ callback();
341
+ }
342
+ catch (err) {
343
+ callback(err instanceof Error ? err : new Error(String(err)));
344
+ }
345
+ },
346
+ });
347
+ try {
348
+ if (signal?.aborted || isRequestReadAborted(req)) {
349
+ throw new JsonBodyError('read-failed', 'Request aborted');
350
+ }
351
+ await pipeline(req, sink, signal ? { signal } : undefined);
352
+ return { chunks, size };
353
+ }
354
+ catch (err) {
355
+ if (err instanceof JsonBodyError)
356
+ throw err;
357
+ if (signal?.aborted || isRequestReadAborted(req)) {
358
+ throw new JsonBodyError('read-failed', 'Request aborted');
359
+ }
360
+ throw new JsonBodyError('read-failed', err instanceof Error ? err.message : String(err));
361
+ }
362
+ }
363
+ normalizeChunk(chunk) {
364
+ if (Buffer.isBuffer(chunk))
365
+ return chunk;
366
+ if (typeof chunk === 'string')
367
+ return Buffer.from(chunk, 'utf8');
368
+ return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
369
+ }
370
+ }
371
+ export const jsonBodyReader = new JsonBodyReader();
372
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/http/helpers.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export declare function startHttpServer(): Promise<{
3
3
  port: number;
4
4
  host: string;
5
5
  }>;
6
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/http/native.ts"],"names":[],"mappings":"AA+qBA,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAkDD"}