@burdenoff/fe-libs 2026.1004.5 → 2026.1004.7
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/dist/chrome/ContextSwitcher.d.ts.map +1 -1
- package/dist/chrome/ContextSwitcher.js +73 -50
- package/dist/chrome/GlobalSearch.d.ts.map +1 -1
- package/dist/chrome/GlobalSearch.js +76 -72
- package/dist/chrome/LanguageSwitcher.d.ts.map +1 -1
- package/dist/chrome/LanguageSwitcher.js +61 -40
- package/dist/chrome/NotificationCenter.d.ts.map +1 -1
- package/dist/chrome/NotificationCenter.js +71 -68
- package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
- package/dist/chrome/ProfileSwitcher.js +87 -81
- package/dist/chrome/SideNavigation.d.ts.map +1 -1
- package/dist/chrome/SideNavigation.js +120 -76
- package/dist/shared/assistant/appControls/copy.d.ts +12 -0
- package/dist/shared/assistant/appControls/copy.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/copy.js +98 -0
- package/dist/shared/assistant/appControls/grammar.d.ts +102 -0
- package/dist/shared/assistant/appControls/grammar.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/grammar.js +236 -0
- package/dist/shared/assistant/appControls/languages.d.ts +6 -0
- package/dist/shared/assistant/appControls/languages.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/languages.js +52 -0
- package/dist/shared/assistant/appControls/names.d.ts +22 -0
- package/dist/shared/assistant/appControls/names.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/names.js +29 -0
- package/dist/shared/assistant/appControls/pageAdapters.d.ts +59 -0
- package/dist/shared/assistant/appControls/pageAdapters.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/pageAdapters.js +87 -0
- package/dist/shared/assistant/appControls/plan.d.ts +148 -0
- package/dist/shared/assistant/appControls/plan.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/plan.js +511 -0
- package/dist/shared/assistant/appControls/registry.d.ts +9 -0
- package/dist/shared/assistant/appControls/registry.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/registry.js +38 -0
- package/dist/shared/assistant/appControls/snapshot.d.ts +42 -0
- package/dist/shared/assistant/appControls/snapshot.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/snapshot.js +40 -0
- package/dist/shared/assistant/appControls/text.d.ts +7 -0
- package/dist/shared/assistant/appControls/text.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/text.js +6 -0
- package/dist/shared/assistant/appControls/types.d.ts +183 -0
- package/dist/shared/assistant/appControls/types.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/types.js +25 -0
- package/dist/shared/assistant/appControls/useAssistantControl.d.ts +24 -0
- package/dist/shared/assistant/appControls/useAssistantControl.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/useAssistantControl.js +13 -0
- package/dist/shared/assistant/conversation.d.ts +12 -1
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +130 -114
- package/dist/shared/assistant/i18nManifest.d.ts +64 -0
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +64 -0
- package/dist/shared/assistant/index.d.ts +13 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.d.ts +7 -0
- package/dist/shared/assistant/localUiCommandCopy.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommandCopy.js +1 -1
- package/dist/shared/assistant/localUiCommands.d.ts +16 -0
- package/dist/shared/assistant/localUiCommands.d.ts.map +1 -1
- package/dist/shared/assistant/localUiCommands.js +97 -84
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +57 -49
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1176 -1123
- package/dist/shared/assistant/ui/AssistantControlConfirmDialog.d.ts +38 -0
- package/dist/shared/assistant/ui/AssistantControlConfirmDialog.d.ts.map +1 -0
- package/dist/shared/assistant/ui/AssistantControlConfirmDialog.js +65 -0
- package/dist/shared/assistant/ui/controlConfirmDialog.d.ts +30 -0
- package/dist/shared/assistant/ui/controlConfirmDialog.d.ts.map +1 -0
- package/dist/shared/assistant/ui/controlConfirmDialog.js +46 -0
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +174 -171
- package/dist/shared/assistant/uiActions/recordNames.d.ts +33 -0
- package/dist/shared/assistant/uiActions/recordNames.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/recordNames.js +51 -1
- package/dist/shared/components/KeyboardHelpDialogWrapper.d.ts.map +1 -1
- package/dist/shared/components/KeyboardHelpDialogWrapper.js +11 -9
- package/dist/shared/providers/shell/GlobalUiProvider.d.ts +2 -0
- package/dist/shared/providers/shell/GlobalUiProvider.d.ts.map +1 -1
- package/dist/shared/providers/shell/GlobalUiProvider.js +4 -1
- package/dist/shared-assistant.js +219 -206
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ConfirmDialogCopy } from '../appControls/copy';
|
|
3
|
+
import { AssistantTr } from '../i18n';
|
|
4
|
+
/**
|
|
5
|
+
* The STRONGER confirmation for the two controls that change who or where the
|
|
6
|
+
* person is: "switch to the Acme workspace" and "log me out"
|
|
7
|
+
* (BOFF-8060, app-wide controls).
|
|
8
|
+
*
|
|
9
|
+
* ★★ The command only OPENS this. Its confirm button is the one thing that runs
|
|
10
|
+
* the control, under the rules the panel's other confirmations already keep
|
|
11
|
+
* (`AssistantDeleteConversationDialog`, `AssistantWriteConfirmDialog`):
|
|
12
|
+
* - focus starts on Cancel, never on the confirm button;
|
|
13
|
+
* - Enter decides nothing: on either button it is swallowed, so a key held or
|
|
14
|
+
* repeated from the composer can neither confirm nor cancel;
|
|
15
|
+
* - confirm is armed only `CONTROL_CONFIRM_ARM_MS` after the dialog opens, and
|
|
16
|
+
* counts a trusted press only (`event.isTrusted`): a click a script
|
|
17
|
+
* dispatched is ignored, however late;
|
|
18
|
+
* - Esc, the overlay and the close button only CLOSE it.
|
|
19
|
+
* A typed or spoken "yes" cannot reach it: while it is open a live voice
|
|
20
|
+
* session holds its listening, so nothing said is heard, let alone acted on.
|
|
21
|
+
*
|
|
22
|
+
* ★ Portalled (`ModalShell`), so it stays operable above the `inert` wrapper a
|
|
23
|
+
* live voice session puts over the chat. Presentational: it says what will
|
|
24
|
+
* happen and reports the press; what runs is the caller's.
|
|
25
|
+
*/
|
|
26
|
+
/** How long after opening before the confirm button counts a press. */
|
|
27
|
+
export declare const CONTROL_CONFIRM_ARM_MS = 600;
|
|
28
|
+
export interface AssistantControlConfirmDialogProps {
|
|
29
|
+
open: boolean;
|
|
30
|
+
copy: ConfirmDialogCopy;
|
|
31
|
+
tr: AssistantTr;
|
|
32
|
+
/** Confirm was pressed: armed, trusted, not by Enter. Once per opening. */
|
|
33
|
+
onConfirm: () => void;
|
|
34
|
+
/** Cancel, Esc, the overlay or the close button: nothing runs. */
|
|
35
|
+
onDismiss: () => void;
|
|
36
|
+
}
|
|
37
|
+
export declare const AssistantControlConfirmDialog: FC<AssistantControlConfirmDialogProps>;
|
|
38
|
+
//# sourceMappingURL=AssistantControlConfirmDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantControlConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantControlConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAAE,EAGR,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,WAAW,kCAAkC;IACjD,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,WAAW,CAAC;IAChB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,kEAAkE;IAClE,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,6BAA6B,EAAE,EAAE,CAAC,kCAAkC,CA2GhF,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Button as e } from "../../../ui/button.js";
|
|
2
|
+
import { ModalShell as t } from "../../../ui/modal-shell.js";
|
|
3
|
+
import { useEffect as n, useRef as r, useState as i } from "react";
|
|
4
|
+
import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
|
+
//#region src/shared/assistant/ui/AssistantControlConfirmDialog.tsx
|
|
6
|
+
var c = 600, l = ({ open: c, copy: l, tr: u, onConfirm: d, onDismiss: f }) => {
|
|
7
|
+
let p = r(null), m = r(null), [h, g] = i(!1), _ = r(!1);
|
|
8
|
+
n(() => {
|
|
9
|
+
if (!c) {
|
|
10
|
+
m.current = null, g(!1);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
m.current = Date.now(), _.current = !1, g(!1);
|
|
14
|
+
let e = setTimeout(() => g(!0), 600);
|
|
15
|
+
return () => clearTimeout(e);
|
|
16
|
+
}, [c]);
|
|
17
|
+
let v = r(!1), y = (e) => {
|
|
18
|
+
e.key === "Enter" && (e.preventDefault(), v.current = !0);
|
|
19
|
+
}, b = (e) => {
|
|
20
|
+
e.key === "Enter" && (v.current = !1);
|
|
21
|
+
}, x = () => {
|
|
22
|
+
v.current = !1;
|
|
23
|
+
};
|
|
24
|
+
return /* @__PURE__ */ o(t, {
|
|
25
|
+
open: c,
|
|
26
|
+
onClose: f,
|
|
27
|
+
role: "alertdialog",
|
|
28
|
+
onOpenAutoFocus: (e) => {
|
|
29
|
+
let t = p.current;
|
|
30
|
+
t && (e.preventDefault(), t.focus());
|
|
31
|
+
},
|
|
32
|
+
testId: "assistant-control-confirm-dialog",
|
|
33
|
+
size: "sm",
|
|
34
|
+
title: l.title,
|
|
35
|
+
description: l.body,
|
|
36
|
+
footer: /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o(e, {
|
|
37
|
+
ref: p,
|
|
38
|
+
variant: "outline",
|
|
39
|
+
onClick: () => {
|
|
40
|
+
v.current || f();
|
|
41
|
+
},
|
|
42
|
+
onKeyDown: y,
|
|
43
|
+
onKeyUp: b,
|
|
44
|
+
onBlur: x,
|
|
45
|
+
"data-testid": "assistant-control-confirm-cancel",
|
|
46
|
+
children: u("appControl.dialog.cancel", "Cancel")
|
|
47
|
+
}), /* @__PURE__ */ o(e, {
|
|
48
|
+
variant: "default",
|
|
49
|
+
onClick: (e) => {
|
|
50
|
+
if (!e.isTrusted || v.current) return;
|
|
51
|
+
let t = m.current;
|
|
52
|
+
!h || t === null || Date.now() - t < 600 || _.current || (_.current = !0, d());
|
|
53
|
+
},
|
|
54
|
+
onKeyDown: y,
|
|
55
|
+
onKeyUp: b,
|
|
56
|
+
onBlur: x,
|
|
57
|
+
disabled: !h,
|
|
58
|
+
"data-testid": "assistant-control-confirm-confirm",
|
|
59
|
+
children: l.confirm
|
|
60
|
+
})] }),
|
|
61
|
+
children: null
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
//#endregion
|
|
65
|
+
export { l as AssistantControlConfirmDialog, c as CONTROL_CONFIRM_ARM_MS };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
import { ConfirmPrompt } from '../appControls/plan';
|
|
3
|
+
/**
|
|
4
|
+
* The panel's one STRONGER confirmation (BOFF-8060): workspace switch and
|
|
5
|
+
* logout. `request` only OPENS it; `onConfirm` runs from a trusted press on the
|
|
6
|
+
* dialog's button and from nowhere else.
|
|
7
|
+
*/
|
|
8
|
+
export interface ControlConfirmRequest {
|
|
9
|
+
prompt: ConfirmPrompt;
|
|
10
|
+
/** Runs once, on the trusted press. Never called on Cancel, Esc or dismissal. */
|
|
11
|
+
onConfirm: () => void;
|
|
12
|
+
}
|
|
13
|
+
export interface ControlConfirmDialogController {
|
|
14
|
+
request: (request: ControlConfirmRequest) => void;
|
|
15
|
+
/**
|
|
16
|
+
* The confirmation is open. A live voice session holds its listening
|
|
17
|
+
* meanwhile, so nothing said is heard or sent.
|
|
18
|
+
*/
|
|
19
|
+
asking: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The panel's confirmation, or null outside a panel that provides one
|
|
23
|
+
* (`AIAssistantPanel` does). With none, a control that needs it is not offered:
|
|
24
|
+
* the sentence goes to the model, as it did before the control existed.
|
|
25
|
+
*/
|
|
26
|
+
export declare function useControlConfirmDialog(): ControlConfirmDialogController | null;
|
|
27
|
+
export declare const AssistantControlConfirmProvider: FC<{
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=controlConfirmDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/controlConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,iFAAiF;IACjF,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,8BAA8B,GAAG,IAAI,CAE/E;AASD,eAAO,MAAM,+BAA+B,EAAE,EAAE,CAAC;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAuCvE,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useAssistantTr as e } from "../i18n.js";
|
|
2
|
+
import { AssistantControlConfirmDialog as t } from "./AssistantControlConfirmDialog.js";
|
|
3
|
+
import { confirmDialogCopy as n } from "../appControls/copy.js";
|
|
4
|
+
import { createContext as r, useCallback as i, useContext as a, useMemo as o, useState as s } from "react";
|
|
5
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
//#region src/shared/assistant/ui/controlConfirmDialog.tsx
|
|
7
|
+
var u = r(null);
|
|
8
|
+
function d() {
|
|
9
|
+
return a(u);
|
|
10
|
+
}
|
|
11
|
+
var f = ({ children: r }) => {
|
|
12
|
+
let a = e(), [d, f] = s({
|
|
13
|
+
request: null,
|
|
14
|
+
open: !1,
|
|
15
|
+
opening: 0
|
|
16
|
+
}), p = i((e) => {
|
|
17
|
+
f((t) => ({
|
|
18
|
+
request: e,
|
|
19
|
+
open: !0,
|
|
20
|
+
opening: t.opening + 1
|
|
21
|
+
}));
|
|
22
|
+
}, []), m = i(() => {
|
|
23
|
+
f((e) => e.open ? {
|
|
24
|
+
...e,
|
|
25
|
+
open: !1
|
|
26
|
+
} : e);
|
|
27
|
+
}, []), h = i(() => {
|
|
28
|
+
let { request: e, open: t } = d;
|
|
29
|
+
!t || !e || (m(), e.onConfirm());
|
|
30
|
+
}, [d, m]), g = o(() => ({
|
|
31
|
+
request: p,
|
|
32
|
+
asking: d.open
|
|
33
|
+
}), [p, d.open]);
|
|
34
|
+
return /* @__PURE__ */ l(u.Provider, {
|
|
35
|
+
value: g,
|
|
36
|
+
children: [r, d.request ? /* @__PURE__ */ c(t, {
|
|
37
|
+
open: d.open,
|
|
38
|
+
copy: n(a, d.request.prompt),
|
|
39
|
+
tr: a,
|
|
40
|
+
onConfirm: h,
|
|
41
|
+
onDismiss: m
|
|
42
|
+
}, d.opening) : null]
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { f as AssistantControlConfirmProvider, d as useControlConfirmDialog };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantVoiceSession.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/AssistantVoiceSession.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AssistantVoiceSession.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/AssistantVoiceSession.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAyB7D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,gFAAgF;AAChF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,iEAAiE;IACjE,KAAK,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,gEAAgE;IAChE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,6EAA6E;IAC7E,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,SAAS,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,GAAG,IAAI,CAAC;CACV;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CA60B3C,CAAC"}
|