@mcp-use/inspector 20.0.0-beta.14 → 20.0.0-beta.15

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 (139) hide show
  1. package/dist/cdn/inspector.js +76858 -9272
  2. package/dist/cli.js +1 -1
  3. package/dist/server/cdn-shell.js +2 -2
  4. package/dist/server/{chunk-3XD7J5NX.js → chunk-WNQGHIZ3.js} +1 -1
  5. package/dist/server/{chunk-DLHO3Q42.js → chunk-XKCUJ6ZJ.js} +1 -1
  6. package/dist/server/{chunk-N3VXWLT6.js → chunk-ZPGABKXL.js} +1 -1
  7. package/dist/server/cli.js +2 -2
  8. package/dist/server/index.js +3 -3
  9. package/dist/server/middleware.js +3 -3
  10. package/dist/server/version.js +1 -1
  11. package/dist/web/assets/index-Bqfsh_Rp.js +643 -0
  12. package/dist/web/index.html +2 -10
  13. package/package.json +1 -1
  14. package/dist/cdn/AnimatePresence-D1bZ5_-l.js +0 -394
  15. package/dist/cdn/ChatTab-D_2TXR3X.js +0 -6811
  16. package/dist/cdn/CheckboxIndicator-BjF73mGX.js +0 -252
  17. package/dist/cdn/ConnectionSettingsForm-BqH0PcZF.js +0 -929
  18. package/dist/cdn/ConnectionSettingsTab-Duhb1uQP.js +0 -151
  19. package/dist/cdn/ElicitationTab-PEmEDvC5.js +0 -655
  20. package/dist/cdn/FormContext-NtUiZclE.js +0 -135
  21. package/dist/cdn/InspectorContext-BBKCdfmK.js +0 -123
  22. package/dist/cdn/JSONDisplay-BJqMz7Ny.js +0 -324
  23. package/dist/cdn/ListTabHeader-DzmTtN1e.js +0 -89
  24. package/dist/cdn/MCPAppsDebugControls-w5NRWhlZ.js +0 -2174
  25. package/dist/cdn/ManufactOAuthCallback-ChbbjFIT.js +0 -31
  26. package/dist/cdn/MarkdownRenderer-BIsUE0bf.js +0 -3610
  27. package/dist/cdn/McpAppsViewPanel-B3_76u7O.js +0 -56
  28. package/dist/cdn/NotificationsTab-B7uebqMV.js +0 -290
  29. package/dist/cdn/OAuthCallback-CtLoXa3h.js +0 -58
  30. package/dist/cdn/PromptsTab-DpE0XLzk.js +0 -902
  31. package/dist/cdn/ResourcesTab-DQS24z5p.js +0 -566
  32. package/dist/cdn/SamplingTab-ZDeu0CjJ.js +0 -659
  33. package/dist/cdn/ServerMetadataTab-BM3VhSLf.js +0 -244
  34. package/dist/cdn/StatusIcon-Q3n3YRtE.js +0 -65
  35. package/dist/cdn/ToolsTab-LtviZSWA.js +0 -2045
  36. package/dist/cdn/ViewPreview-BwC_tbF_.js +0 -238
  37. package/dist/cdn/WidgetDebugContext-B6yoOVVV.js +0 -314
  38. package/dist/cdn/WidgetWrapper-BlbQAh_X.js +0 -12
  39. package/dist/cdn/basePath-B8HuhIMu.js +0 -25
  40. package/dist/cdn/bell-GrTZcnD2.js +0 -10
  41. package/dist/cdn/browser-DG2Z8392.js +0 -42
  42. package/dist/cdn/brush-CelVvMGp.js +0 -17
  43. package/dist/cdn/button-CB4uOoUV.js +0 -2509
  44. package/dist/cdn/card-BA-DQk-G.js +0 -41
  45. package/dist/cdn/cfWorker-Bxcs9rNe.js +0 -10799
  46. package/dist/cdn/checkbox-kwVa4gRX.js +0 -20
  47. package/dist/cdn/chunk-QUQL4437-XnDcYQEx.js +0 -1508
  48. package/dist/cdn/clock-YMF8Gtw5.js +0 -12
  49. package/dist/cdn/code-C8sN2OGR.js +0 -10
  50. package/dist/cdn/createLucideIcon-BONxC1L5.js +0 -213
  51. package/dist/cdn/dialog-CJGnC5Ag.js +0 -1028
  52. package/dist/cdn/dist-CHKts0NS.js +0 -2307
  53. package/dist/cdn/dist-CTJnCYmk.js +0 -616
  54. package/dist/cdn/external-link-Bo4lQxr1.js +0 -17
  55. package/dist/cdn/eye-pSGG7nvf.js +0 -29
  56. package/dist/cdn/folder-open-aM8CPtBO.js +0 -7
  57. package/dist/cdn/hash-DDs2vE1k.js +0 -33
  58. package/dist/cdn/history-BfUFpL1d.js +0 -17
  59. package/dist/cdn/index-browser-DO-sd0TA.js +0 -1853
  60. package/dist/cdn/info-BMkB68mB.js +0 -19
  61. package/dist/cdn/input-BCpgLXU1.js +0 -9654
  62. package/dist/cdn/inspector-settings-layout-0VDsjeqb.js +0 -4
  63. package/dist/cdn/label-A0UGV8FE.js +0 -60
  64. package/dist/cdn/loader-circle-BKRHJEB7.js +0 -7
  65. package/dist/cdn/manufact-auth-BQMHhbLV.js +0 -423
  66. package/dist/cdn/maximize-2-DdrB_spi.js +0 -21
  67. package/dist/cdn/maximize-hSOCz133.js +0 -21
  68. package/dist/cdn/message-square-D3tKB3uJ.js +0 -7
  69. package/dist/cdn/not-found-BajFyZpp.js +0 -32
  70. package/dist/cdn/play-B1leulYf.js +0 -7
  71. package/dist/cdn/providerMeta-CjGU4rID.js +0 -436
  72. package/dist/cdn/react-BDA-xrgK.js +0 -5421
  73. package/dist/cdn/react-BIs9pQ3H.js +0 -926
  74. package/dist/cdn/refresh-cw-CyvXrS91.js +0 -21
  75. package/dist/cdn/save-CmdEPUAm.js +0 -34
  76. package/dist/cdn/schemaHelpers-DTV38jGq.js +0 -16
  77. package/dist/cdn/select-CCFHjOGk.js +0 -2595
  78. package/dist/cdn/servers-Dd0Vcp81.js +0 -30
  79. package/dist/cdn/shared-CJVHJhag.js +0 -1700
  80. package/dist/cdn/sheet-oyq1mIyg.js +0 -2078
  81. package/dist/cdn/sparkles-CxeZpVtX.js +0 -23
  82. package/dist/cdn/spinner-Be1GlSGX.js +0 -15
  83. package/dist/cdn/square-check-big-C_4wbfwF.js +0 -10
  84. package/dist/cdn/switch-DHXEA_N5.js +0 -665
  85. package/dist/cdn/tabs-subtle-Dubd6Kj8.js +0 -788
  86. package/dist/cdn/telemetry-e4uEESP7.js +0 -208
  87. package/dist/cdn/textarea-CwmI8_uI.js +0 -14
  88. package/dist/cdn/trash-2-BhumJAFE.js +0 -25
  89. package/dist/cdn/useAriaLabelledBy-Cra6w3YY.js +0 -30
  90. package/dist/cdn/useCompositeItem-Dhnm-7el.js +0 -26
  91. package/dist/cdn/useConfig-Dw_6Ztzr.js +0 -235
  92. package/dist/cdn/useSavedRequests-mSIsDd4c.js +0 -51
  93. package/dist/cdn/useViewHostProps-BPApUBaM.js +0 -364
  94. package/dist/cdn/wrench-DvK20LUT.js +0 -7
  95. package/dist/cdn/x-EilKPiCX.js +0 -10
  96. package/dist/cdn/zap-0Wr9QO7N.js +0 -10
  97. package/dist/web/assets/AnimatePresence-FfDQQNFJ.js +0 -9
  98. package/dist/web/assets/ChatTab-BhoU_ges.js +0 -18
  99. package/dist/web/assets/ConnectionSettingsTab-vJcr7uI3.js +0 -1
  100. package/dist/web/assets/ElicitationTab-4my-wtXf.js +0 -1
  101. package/dist/web/assets/FormContext-sV-yByKz.js +0 -1
  102. package/dist/web/assets/ListTabHeader-CrGae306.js +0 -1
  103. package/dist/web/assets/MCPAppsDebugControls-Cd4s9mr1.js +0 -34
  104. package/dist/web/assets/ManufactOAuthCallback-CCRWJhuT.js +0 -1
  105. package/dist/web/assets/MarkdownRenderer-BUDZYHqm.js +0 -47
  106. package/dist/web/assets/McpAppsViewPanel-Cil7Fdy4.js +0 -1
  107. package/dist/web/assets/NotificationsTab-Bl3O5PRb.js +0 -1
  108. package/dist/web/assets/OAuthCallback-CceVgo-9.js +0 -1
  109. package/dist/web/assets/PromptsTab-8lSxb8x-.js +0 -15
  110. package/dist/web/assets/ResourcesTab-DtGfgsPv.js +0 -2
  111. package/dist/web/assets/SamplingTab-XC-DTfOo.js +0 -1
  112. package/dist/web/assets/ServerMetadataTab-C5d_dI3_.js +0 -1
  113. package/dist/web/assets/ToolsTab-DuHPXItY.js +0 -8
  114. package/dist/web/assets/ViewPreview-DXswO9q8.js +0 -1
  115. package/dist/web/assets/WidgetWrapper-cv_BM1bY.js +0 -1
  116. package/dist/web/assets/brush-DX0UZ_pI.js +0 -1
  117. package/dist/web/assets/button-C8Xa2k4x.js +0 -1
  118. package/dist/web/assets/checkbox-DAfdiGl1.js +0 -1
  119. package/dist/web/assets/code-B14rVdNt.js +0 -1
  120. package/dist/web/assets/createLucideIcon-BEHeJH0M.js +0 -1
  121. package/dist/web/assets/dist-C2Y1wkk6.js +0 -21
  122. package/dist/web/assets/index-tu5-QdSJ.js +0 -499
  123. package/dist/web/assets/input-C0OQCUZy.js +0 -1
  124. package/dist/web/assets/inspector-settings-layout-yjKRJDai.js +0 -1
  125. package/dist/web/assets/label-CI7JWQOo.js +0 -1
  126. package/dist/web/assets/maximize-2-Br1WQzT2.js +0 -1
  127. package/dist/web/assets/maximize-CJNgRe6S.js +0 -1
  128. package/dist/web/assets/react-CU_d2d5K.js +0 -1
  129. package/dist/web/assets/refresh-cw-B5iaAZKn.js +0 -1
  130. package/dist/web/assets/save-TM6fvNrt.js +0 -1
  131. package/dist/web/assets/schemaHelpers-DLNTQr_6.js +0 -1
  132. package/dist/web/assets/select-D6jzbLJn.js +0 -1
  133. package/dist/web/assets/shared-c1Yr-wvV.js +0 -1
  134. package/dist/web/assets/sparkles-BGYTDThM.js +0 -1
  135. package/dist/web/assets/tabs-subtle-CHvFXVIA.js +0 -1
  136. package/dist/web/assets/textarea-CRTXuRmE.js +0 -1
  137. package/dist/web/assets/useConfig-9UVqLmR_.js +0 -1
  138. package/dist/web/assets/useViewHostProps-BBoPQYEl.js +0 -1
  139. package/dist/web/assets/zap-BDWHCVHU.js +0 -1
@@ -1,252 +0,0 @@
1
- import { s as e, t } from "./react-BIs9pQ3H.js";
2
- import { En as n, Mn as r, Nn as i, Yn as a, an as o, in as s, kn as ee, or as c } from "./input-BCpgLXU1.js";
3
- import { n as l } from "./createLucideIcon-BONxC1L5.js";
4
- import { a as te, c as u, d as ne, g as d, h as re, k as f, m as p, s as m, u as h, y as g } from "./button-CB4uOoUV.js";
5
- import { n as ie } from "./label-A0UGV8FE.js";
6
- import { c as _, i as ae, l as oe, o as se, r as ce, t as le } from "./FormContext-NtUiZclE.js";
7
- import { t as ue } from "./useAriaLabelledBy-Cra6w3YY.js";
8
- //#region ../../node_modules/.pnpm/@base-ui+utils@0.3.1_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/utils/getDefaultFormSubmitter.mjs
9
- var v = /* @__PURE__ */ e(t(), 1);
10
- function de(e) {
11
- if (!e) return null;
12
- for (let t of e.elements) {
13
- let e = t.tagName;
14
- if (e === "BUTTON" || e === "INPUT") {
15
- let e = t;
16
- if (e.type === "submit") return e;
17
- }
18
- }
19
- return null;
20
- }
21
- //#endregion
22
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/checkbox/root/CheckboxRootDataAttributes.mjs
23
- var y = /*#__PURE__*/ function(e) {
24
- return e.checked = "data-checked", e.unchecked = "data-unchecked", e.indeterminate = "data-indeterminate", e.disabled = "data-disabled", e.readonly = "data-readonly", e.required = "data-required", e.valid = "data-valid", e.invalid = "data-invalid", e.touched = "data-touched", e.dirty = "data-dirty", e.filled = "data-filled", e.focused = "data-focused", e;
25
- }({});
26
- //#endregion
27
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/checkbox/utils/useStateAttributesMapping.mjs
28
- function fe(e) {
29
- return v.useMemo(() => ({
30
- checked(t) {
31
- return e.indeterminate ? {} : t ? { [y.checked]: "" } : { [y.unchecked]: "" };
32
- },
33
- ..._
34
- }), [e.indeterminate]);
35
- }
36
- //#endregion
37
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/field/item/FieldItemContext.mjs
38
- var b = /*#__PURE__*/ v.createContext({ disabled: !1 });
39
- process.env.NODE_ENV !== "production" && (b.displayName = "FieldItemContext");
40
- function pe() {
41
- return v.useContext(b);
42
- }
43
- //#endregion
44
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/checkbox-group/CheckboxGroupContext.mjs
45
- var x = /*#__PURE__*/ v.createContext(void 0);
46
- process.env.NODE_ENV !== "production" && (x.displayName = "CheckboxGroupContext");
47
- function me(e = !0) {
48
- let t = v.useContext(x);
49
- if (t === void 0 && !e) throw Error(process.env.NODE_ENV === "production" ? p(3) : "Base UI: CheckboxGroupContext is missing. CheckboxGroup parts must be placed within <CheckboxGroup>.");
50
- return t;
51
- }
52
- //#endregion
53
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/checkbox/root/CheckboxRootContext.mjs
54
- var S = /*#__PURE__*/ v.createContext(void 0);
55
- process.env.NODE_ENV !== "production" && (S.displayName = "CheckboxRootContext");
56
- function C() {
57
- let e = v.useContext(S);
58
- if (e === void 0) throw Error(process.env.NODE_ENV === "production" ? p(14) : "Base UI: CheckboxRootContext is missing. Checkbox parts must be placed within <Checkbox.Root>.");
59
- return e;
60
- }
61
- //#endregion
62
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/checkbox/root/CheckboxRoot.mjs
63
- var w = l(), T = "data-parent", E = /*#__PURE__*/ v.forwardRef(function(e, t) {
64
- let { checked: n, className: ee, defaultChecked: c = !1, "aria-labelledby": l, disabled: p = !1, form: _, id: y, indeterminate: b = !1, inputRef: x, name: C, onCheckedChange: E, parent: D = !1, readOnly: O = !1, render: he, required: k = !1, uncheckedValue: A, value: j, nativeButton: M = !1, style: ge, ..._e } = e, { clearErrors: ve } = le(), { disabled: ye, name: be, setDirty: xe, setFilled: N, setFocused: P, setTouched: Se, state: Ce, validationMode: we, validityData: Te, validation: Ee } = se(), De = pe(), { labelId: Oe, controlId: ke, registerControlId: F, getDescriptionProps: Ae } = ce(), I = me(), L = I?.parent, R = L && I.allValues, z = ye || De.disabled || I?.disabled || p, B = be ?? C, V = j ?? B, je = i(), Me = i(), H = ke;
65
- R ? H = D ? Me : `${L.id}-${V}` : y && (H = y);
66
- let U = {};
67
- R && (D ? U = I.parent.getParentProps() : V && (U = I.parent.getChildProps(V)));
68
- let { checked: Ne = n, indeterminate: Pe = b, onCheckedChange: Fe, ...Ie } = U, W = I?.value, Le = I?.setValue, Re = I?.defaultValue, G = v.useRef(null), K = g(() => Symbol("checkbox-control")), q = v.useRef(!1), { getButtonProps: ze, buttonRef: Be } = ne({
69
- disabled: z,
70
- native: M
71
- }), J = I?.validation ?? Ee, [Y, Ve] = ie({
72
- controlled: V && W && !D ? W.includes(V) : Ne,
73
- default: V && Re && !D ? Re.includes(V) : c,
74
- name: "Checkbox",
75
- state: "checked"
76
- }), X = R ? !!Ne : Y, Z = R && Pe || b;
77
- d(() => {
78
- F !== u && (q.current = !0, F(K.current, H));
79
- }, [
80
- H,
81
- F,
82
- K
83
- ]), v.useEffect(() => {
84
- let e = K.current;
85
- return () => {
86
- !q.current || F === u || (q.current = !1, F(e, void 0));
87
- };
88
- }, [F, K]), ae(G, je, Y, void 0, !I && !z, C);
89
- let Q = v.useRef(null), He = h(x, Q, J.inputRef, J.registerInput), Ue = ue(l, Oe, Q, !M, H ?? void 0);
90
- d(() => {
91
- Q.current && (Q.current.indeterminate = Z, Y && N(!0));
92
- }, [
93
- Y,
94
- Z,
95
- N
96
- ]), oe(Y, () => {
97
- I || (ve(B), N(Y), xe(Y !== Te.initialValue), J.change(Y));
98
- });
99
- let We = re({
100
- checked: Y,
101
- disabled: z,
102
- form: _,
103
- name: D ? void 0 : B,
104
- id: M ? void 0 : H ?? void 0,
105
- required: k,
106
- ref: He,
107
- style: B ? o : s,
108
- tabIndex: -1,
109
- type: "checkbox",
110
- "aria-hidden": !0,
111
- onChange(e) {
112
- if (e.nativeEvent.defaultPrevented) return;
113
- if (O) {
114
- e.preventDefault();
115
- return;
116
- }
117
- let t = e.currentTarget.checked, n = r(a, e.nativeEvent);
118
- E?.(t, n), !n.isCanceled && (Fe?.(t, n), !n.isCanceled && (Ve(t), V && W && Le && !D && !R && Le(t ? [...W, V] : W.filter((e) => e !== V), n)));
119
- },
120
- onFocus() {
121
- G.current?.focus();
122
- }
123
- }, j === void 0 ? m : { value: (I ? Y && j : j) || "" }, Ae, (e) => J.getValidationProps(z, e));
124
- v.useEffect(() => {
125
- if (!L || !V) return;
126
- let e = L.disabledStatesRef.current;
127
- return e.set(V, z), () => {
128
- e.delete(V);
129
- };
130
- }, [
131
- L,
132
- z,
133
- V
134
- ]);
135
- let $ = v.useMemo(() => ({
136
- ...Ce,
137
- checked: X,
138
- disabled: z,
139
- readOnly: O,
140
- required: k,
141
- indeterminate: Z
142
- }), [
143
- Ce,
144
- X,
145
- z,
146
- O,
147
- k,
148
- Z
149
- ]), Ge = fe($), Ke = te("span", e, {
150
- state: $,
151
- ref: [
152
- Be,
153
- G,
154
- t,
155
- I?.registerControlRef
156
- ],
157
- props: [
158
- {
159
- id: M ? H ?? void 0 : je,
160
- role: "checkbox",
161
- "aria-checked": Z ? "mixed" : X,
162
- "aria-readonly": O || void 0,
163
- "aria-required": k || void 0,
164
- "aria-labelledby": Ue,
165
- [T]: D ? "" : void 0,
166
- onFocus() {
167
- z || P(!0);
168
- },
169
- onBlur() {
170
- let e = Q.current;
171
- e && (Se(!0), P(!1), we === "onBlur" && J.commit(I ? W : e.checked));
172
- },
173
- onKeyDown(e) {
174
- if (e.key !== "Enter" || (e.preventBaseUIHandler(), e.defaultPrevented)) return;
175
- let t = Q.current?.form ?? null, n = e.currentTarget, r = e.nativeEvent, i = e.preventDefault, a = r.preventDefault, o = !1;
176
- e.preventDefault = () => {
177
- o = !0, i.call(e);
178
- }, r.preventDefault = () => {
179
- o = !0, a.call(r);
180
- }, a.call(r), f(n).queueMicrotask(() => {
181
- e.preventDefault = i, r.preventDefault = a, o || de(t)?.click();
182
- });
183
- },
184
- onClick(e) {
185
- if (O || z) return;
186
- e.preventDefault();
187
- let t = Q.current;
188
- t && t.dispatchEvent(new (f(t)).PointerEvent("click", {
189
- bubbles: !0,
190
- shiftKey: e.shiftKey,
191
- ctrlKey: e.ctrlKey,
192
- altKey: e.altKey,
193
- metaKey: e.metaKey
194
- }));
195
- }
196
- },
197
- _e,
198
- Ie,
199
- ze,
200
- Ae,
201
- (e) => J.getValidationProps(z, e)
202
- ],
203
- stateAttributesMapping: Ge
204
- });
205
- return /*#__PURE__*/ (0, w.jsxs)(S.Provider, {
206
- value: $,
207
- children: [
208
- Ke,
209
- !Y && !I && B && !D && A !== void 0 && /*#__PURE__*/ (0, w.jsx)("input", {
210
- type: "hidden",
211
- form: _,
212
- name: B,
213
- value: A,
214
- disabled: z
215
- }),
216
- /*#__PURE__*/ (0, w.jsx)("input", {
217
- ...We,
218
- suppressHydrationWarning: !0
219
- })
220
- ]
221
- });
222
- });
223
- process.env.NODE_ENV !== "production" && (E.displayName = "CheckboxRoot");
224
- //#endregion
225
- //#region ../../node_modules/.pnpm/@base-ui+react@1.6.0_@types+react@19.2.17_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@base-ui/react/checkbox/indicator/CheckboxIndicator.mjs
226
- var D = /*#__PURE__*/ v.forwardRef(function(e, t) {
227
- let { render: r, className: i, style: a, keepMounted: o = !1, ...s } = e, l = C(), u = l.checked || l.indeterminate, { mounted: ne, transitionStatus: d, setMounted: re } = ee(u), f = v.useRef(null), p = {
228
- ...l,
229
- transitionStatus: d
230
- };
231
- n({
232
- open: u,
233
- ref: f,
234
- onComplete() {
235
- u || re(!1);
236
- }
237
- });
238
- let m = {
239
- ...fe(l),
240
- ...c,
241
- ..._
242
- }, h = o || ne, g = te("span", e, {
243
- ref: [t, f],
244
- state: p,
245
- stateAttributesMapping: m,
246
- props: s
247
- });
248
- return h ? g : null;
249
- });
250
- process.env.NODE_ENV !== "production" && (D.displayName = "CheckboxIndicator");
251
- //#endregion
252
- export { pe as a, x as i, E as n, T as r, D as t };