@burdenoff/microfe-buildmyiq 2026.730.2 → 2026.731.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.
Files changed (34) hide show
  1. package/dist/buildmyiq/BuildmyiqRoot.d.ts.map +1 -1
  2. package/dist/buildmyiq/BuildmyiqRoot.js +68 -52
  3. package/dist/buildmyiq/BuildmyiqRoot.js.map +1 -1
  4. package/dist/buildmyiq/BuildmyiqRoutes.d.ts.map +1 -1
  5. package/dist/buildmyiq/BuildmyiqRoutes.js +36 -24
  6. package/dist/buildmyiq/BuildmyiqRoutes.js.map +1 -1
  7. package/dist/buildmyiq/hooks/useBuiPermissions.d.ts +1 -1
  8. package/dist/buildmyiq/hooks/useBuiPermissions.d.ts.map +1 -1
  9. package/dist/buildmyiq/hooks/useBuildmyiqApi.d.ts +38 -1
  10. package/dist/buildmyiq/hooks/useBuildmyiqApi.d.ts.map +1 -1
  11. package/dist/buildmyiq/hooks/useBuildmyiqApi.js +131 -86
  12. package/dist/buildmyiq/hooks/useBuildmyiqApi.js.map +1 -1
  13. package/dist/buildmyiq/pages/authoring/AuthoringPage.d.ts.map +1 -1
  14. package/dist/buildmyiq/pages/authoring/AuthoringPage.js +351 -124
  15. package/dist/buildmyiq/pages/authoring/AuthoringPage.js.map +1 -1
  16. package/dist/buildmyiq/pages/copilot/AdminCopilotPage.d.ts +4 -0
  17. package/dist/buildmyiq/pages/copilot/AdminCopilotPage.d.ts.map +1 -0
  18. package/dist/buildmyiq/pages/copilot/AdminCopilotPage.js +164 -0
  19. package/dist/buildmyiq/pages/copilot/AdminCopilotPage.js.map +1 -0
  20. package/dist/buildmyiq/pages/integrations/LtiPlatformsPage.d.ts +4 -0
  21. package/dist/buildmyiq/pages/integrations/LtiPlatformsPage.d.ts.map +1 -0
  22. package/dist/buildmyiq/pages/integrations/LtiPlatformsPage.js +269 -0
  23. package/dist/buildmyiq/pages/integrations/LtiPlatformsPage.js.map +1 -0
  24. package/dist/buildmyiq/pages/submissions/BulkGradingPage.d.ts +4 -0
  25. package/dist/buildmyiq/pages/submissions/BulkGradingPage.d.ts.map +1 -0
  26. package/dist/buildmyiq/pages/submissions/BulkGradingPage.js +229 -0
  27. package/dist/buildmyiq/pages/submissions/BulkGradingPage.js.map +1 -0
  28. package/dist/buildmyiq/pages/submissions/SubmissionsPage.d.ts.map +1 -1
  29. package/dist/buildmyiq/pages/submissions/SubmissionsPage.js +294 -177
  30. package/dist/buildmyiq/pages/submissions/SubmissionsPage.js.map +1 -1
  31. package/dist/buildmyiq/types/index.d.ts +95 -0
  32. package/dist/buildmyiq/types/index.d.ts.map +1 -1
  33. package/dist/buildmyiq/types/index.js.map +1 -1
  34. package/package.json +4 -4
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+
3
+ export declare const BulkGradingPage: FC;
4
+ //# sourceMappingURL=BulkGradingPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkGradingPage.d.ts","sourceRoot":"","sources":["../../../../src/buildmyiq/pages/submissions/BulkGradingPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAkKhC,eAAO,MAAM,eAAe,EAAE,EA6D7B,CAAC"}
@@ -0,0 +1,229 @@
1
+ import { useBuildmyiq as e } from "../../context/BuildmyiqContext.js";
2
+ import "../../context/index.js";
3
+ import { PageLayout as t } from "../../components/PageLayout.js";
4
+ import { formatDateTime as n } from "../../utils/formatters.js";
5
+ import { EmptyState as r } from "../../components/EmptyState.js";
6
+ import { ErrorView as i, LoadingView as a } from "../../components/StateViews.js";
7
+ import { Pagination as o } from "../../components/Pagination.js";
8
+ import { Avatar as s } from "../../components/Avatar.js";
9
+ import { useBuiGradeSubmission as c, useBuiReviewGradeSuggestion as l, useBuiSubmissions as u, useBuiSuggestGrade as d } from "../../hooks/useBuildmyiqApi.js";
10
+ import { useCursorPager as f } from "../../hooks/useCursorPager.js";
11
+ import "../../hooks/index.js";
12
+ import { BuiPermissionButton as p } from "../../components/BuiPermissionButton.js";
13
+ import "../../components/index.js";
14
+ import { useMemo as m, useState as h } from "react";
15
+ import { ArrowLeft as g, CheckCircle2 as _, ClipboardList as v, Sparkles as y } from "lucide-react";
16
+ import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
17
+ import { Button as C, GlassCard as w, Input as T, Label as E, Switch as D, Textarea as O } from "@burdenoff/fe-libs/ui";
18
+ //#region src/buildmyiq/pages/submissions/BulkGradingPage.tsx
19
+ var k = 12, A = (e) => e.length > 10 ? `${e.slice(0, 8)}…` : e, j = ({ submission: e, isMe: t }) => {
20
+ let r = c(), i = d(), a = l(), [o, u] = h(""), [f, m] = h(!1), [g, v] = h(""), [b, k] = h(null), [j, M] = h(!1), [N, P] = h(null);
21
+ return j ? /* @__PURE__ */ S(w, {
22
+ treatment: "plain",
23
+ className: "flex items-center gap-3 p-4",
24
+ children: [/* @__PURE__ */ x(_, { className: "h-5 w-5 shrink-0 text-status-success-text" }), /* @__PURE__ */ S("p", {
25
+ className: "text-sm text-text-secondary",
26
+ children: [
27
+ "Graded ",
28
+ t ? "your own attempt" : `learner ${A(e.learnerId)}`,
29
+ " — score",
30
+ " ",
31
+ /* @__PURE__ */ x("span", {
32
+ className: "font-semibold text-text-primary tabular-nums",
33
+ children: o
34
+ }),
35
+ "."
36
+ ]
37
+ })]
38
+ }) : /* @__PURE__ */ S(w, {
39
+ treatment: "plain",
40
+ className: "flex flex-col gap-3 p-4",
41
+ children: [
42
+ /* @__PURE__ */ S("div", {
43
+ className: "flex items-center gap-3",
44
+ children: [
45
+ /* @__PURE__ */ x(s, {
46
+ size: "sm",
47
+ seed: e.learnerId
48
+ }),
49
+ /* @__PURE__ */ S("div", {
50
+ className: "min-w-0 flex-1",
51
+ children: [/* @__PURE__ */ x("p", {
52
+ className: "truncate text-sm font-medium text-text-primary",
53
+ children: t ? "You" : `Learner ${A(e.learnerId)}`
54
+ }), /* @__PURE__ */ S("p", {
55
+ className: "truncate text-xs text-text-tertiary",
56
+ title: e.assessmentId,
57
+ children: [
58
+ "Assessment ",
59
+ A(e.assessmentId),
60
+ " · Attempt #",
61
+ e.attempt,
62
+ " ·",
63
+ " ",
64
+ n(e.submittedAt)
65
+ ]
66
+ })]
67
+ }),
68
+ /* @__PURE__ */ S(C, {
69
+ type: "button",
70
+ variant: "outline",
71
+ size: "sm",
72
+ onClick: async () => {
73
+ k(null);
74
+ try {
75
+ let t = await i.mutateAsync(e.id);
76
+ u(String(Math.round(t.proposedScore))), v(t.perQuestionFeedback.map((e, t) => `Q${t + 1}: ${e.feedback}`).join("\n")), P(t.id);
77
+ } catch (e) {
78
+ k(e instanceof Error ? e.message : "AI grading assistant is unavailable.");
79
+ }
80
+ },
81
+ disabled: i.isPending,
82
+ className: "shrink-0",
83
+ children: [/* @__PURE__ */ x(y, { className: "mr-1.5 h-3.5 w-3.5" }), i.isPending ? "Asking AI…" : "Suggest"]
84
+ })
85
+ ]
86
+ }),
87
+ /* @__PURE__ */ S("div", {
88
+ className: "grid gap-3 sm:grid-cols-[7rem_auto_1fr] sm:items-start",
89
+ children: [
90
+ /* @__PURE__ */ S("div", {
91
+ className: "grid gap-1",
92
+ children: [/* @__PURE__ */ x(E, {
93
+ htmlFor: `score-${e.id}`,
94
+ className: "text-xs",
95
+ children: "Score"
96
+ }), /* @__PURE__ */ x(T, {
97
+ id: `score-${e.id}`,
98
+ type: "number",
99
+ min: "0",
100
+ value: o,
101
+ onChange: (e) => u(e.target.value),
102
+ placeholder: "0",
103
+ className: "h-9"
104
+ })]
105
+ }),
106
+ /* @__PURE__ */ S("div", {
107
+ className: "grid gap-1",
108
+ children: [/* @__PURE__ */ x(E, {
109
+ className: "text-xs",
110
+ children: "Result"
111
+ }), /* @__PURE__ */ S("div", {
112
+ className: "flex h-9 items-center gap-2",
113
+ children: [/* @__PURE__ */ x(D, {
114
+ checked: f,
115
+ onCheckedChange: m
116
+ }), /* @__PURE__ */ x("span", {
117
+ className: "text-xs text-text-secondary",
118
+ children: f ? "Passed" : "Not passed"
119
+ })]
120
+ })]
121
+ }),
122
+ /* @__PURE__ */ S("div", {
123
+ className: "grid gap-1",
124
+ children: [/* @__PURE__ */ x(E, {
125
+ htmlFor: `feedback-${e.id}`,
126
+ className: "text-xs",
127
+ children: "Feedback (optional)"
128
+ }), /* @__PURE__ */ x(O, {
129
+ id: `feedback-${e.id}`,
130
+ rows: 2,
131
+ value: g,
132
+ onChange: (e) => v(e.target.value),
133
+ className: "text-sm"
134
+ })]
135
+ })
136
+ ]
137
+ }),
138
+ b && /* @__PURE__ */ x("p", {
139
+ className: "text-xs text-status-error-text",
140
+ children: b
141
+ }),
142
+ /* @__PURE__ */ x("div", {
143
+ className: "flex justify-end",
144
+ children: /* @__PURE__ */ x(p, {
145
+ resource: "buildmyiq-submission",
146
+ action: "update",
147
+ deniedBehavior: "hide",
148
+ children: /* @__PURE__ */ x(C, {
149
+ size: "sm",
150
+ onClick: async () => {
151
+ let t = o.trim(), n = Number(t);
152
+ if (t === "" || Number.isNaN(n) || n < 0) {
153
+ k("Enter a valid non-negative score.");
154
+ return;
155
+ }
156
+ k(null);
157
+ try {
158
+ await r.mutateAsync({
159
+ id: e.id,
160
+ input: {
161
+ score: n,
162
+ passed: f,
163
+ feedback: g.trim() || void 0
164
+ }
165
+ }), N && a.mutate({
166
+ id: N,
167
+ outcome: "ACCEPTED"
168
+ }), M(!0);
169
+ } catch (e) {
170
+ k(e instanceof Error ? e.message : "Failed to save grade.");
171
+ }
172
+ },
173
+ disabled: r.isPending,
174
+ children: r.isPending ? "Saving…" : "Save grade"
175
+ })
176
+ })
177
+ })
178
+ ]
179
+ });
180
+ }, M = () => {
181
+ let { currentUser: n, navigateTo: s } = e(), c = f(), { data: l, isLoading: d, isError: p, refetch: h } = u({
182
+ status: "SUBMITTED",
183
+ cursor: c.cursor,
184
+ limit: k
185
+ }), _ = m(() => l?.items ?? [], [l]);
186
+ return /* @__PURE__ */ x(t, {
187
+ title: "Bulk grade",
188
+ description: "Work through every awaiting-grade submission in one pass — suggest, adjust, save.",
189
+ actions: /* @__PURE__ */ S(C, {
190
+ variant: "ghost",
191
+ onClick: () => s("submissions"),
192
+ children: [/* @__PURE__ */ x(g, { className: "mr-1.5 h-4 w-4" }), " Back to grading queue"]
193
+ }),
194
+ children: /* @__PURE__ */ x("div", {
195
+ className: "flex flex-col gap-4",
196
+ children: d ? /* @__PURE__ */ x(a, { label: "Loading submissions awaiting grade…" }) : p ? /* @__PURE__ */ x(i, {
197
+ title: "Couldn't load submissions",
198
+ message: "The grading queue failed to load.",
199
+ onRetry: () => h()
200
+ }) : _.length === 0 ? /* @__PURE__ */ x(r, {
201
+ illustration: "empty-data",
202
+ icon: /* @__PURE__ */ x(v, { className: "h-10 w-10" }),
203
+ title: "Nothing to grade",
204
+ description: "Every submission is already graded, or none have been submitted yet.",
205
+ action: /* @__PURE__ */ x(C, {
206
+ variant: "outline",
207
+ onClick: () => s("submissions"),
208
+ children: "Back to grading queue"
209
+ })
210
+ }) : /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ x("div", {
211
+ className: "flex flex-col gap-3",
212
+ children: _.map((e) => /* @__PURE__ */ x(j, {
213
+ submission: e,
214
+ isMe: e.learnerId === n?.id
215
+ }, e.id))
216
+ }), /* @__PURE__ */ x(o, {
217
+ page: c.page,
218
+ pageSize: k,
219
+ itemCount: _.length,
220
+ hasMore: l?.pageInfo?.hasMore ?? !1,
221
+ onPageChange: (e) => c.onPageChange(e, l?.pageInfo?.cursor)
222
+ })] })
223
+ })
224
+ });
225
+ };
226
+ //#endregion
227
+ export { M as BulkGradingPage };
228
+
229
+ //# sourceMappingURL=BulkGradingPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkGradingPage.js","names":[],"sources":["../../../../src/buildmyiq/pages/submissions/BulkGradingPage.tsx"],"sourcesContent":["/**\n * BulkGradingPage — SpeedGrader-like bulk grading queue (BOFF-4429).\n * @module buildmyiq/pages/submissions\n *\n * Shows every SUBMITTED submission in the workspace as a compact inline card\n * (learner, assessment, submitted-at) with per-row quick actions: get an AI\n * grading suggestion (`buiSuggestGrade`), tweak score/passed/feedback inline,\n * and save (`buiGradeSubmission`) — all without navigating away or opening\n * the full slide-over per submission, so an educator can work through a\n * whole queue in one pass. The AI suggestion is always a proposal the\n * educator edits/accepts before saving — it never auto-commits a grade.\n */\n\nimport type { FC } from 'react';\nimport { useMemo, useState } from 'react';\nimport { ArrowLeft, CheckCircle2, ClipboardList, Sparkles } from 'lucide-react';\nimport { Button, GlassCard, Input, Label, Switch, Textarea } from '@burdenoff/fe-libs/ui';\nimport {\n PageLayout,\n EmptyState,\n LoadingView,\n ErrorView,\n Pagination,\n Avatar,\n} from '../../components';\nimport { useBuildmyiq } from '../../context';\nimport {\n useBuiSubmissions,\n useBuiGradeSubmission,\n useBuiSuggestGrade,\n useBuiReviewGradeSuggestion,\n useCursorPager,\n} from '../../hooks';\nimport type { BuiSubmission } from '../../types';\nimport { formatDateTime } from '../../utils/formatters';\nimport { BuiPermissionButton } from '../../components/BuiPermissionButton';\n\nconst PAGE_SIZE = 12;\n\n/** Truncate an opaque id for compact display, keeping the full value in `title`. */\nconst shortId = (id: string): string => (id.length > 10 ? `${id.slice(0, 8)}…` : id);\n\nconst BulkGradeRow: FC<{ submission: BuiSubmission; isMe: boolean }> = ({ submission, isMe }) => {\n const gradeSubmission = useBuiGradeSubmission();\n const suggestGrade = useBuiSuggestGrade();\n const reviewSuggestion = useBuiReviewGradeSuggestion();\n\n const [scoreInput, setScoreInput] = useState('');\n const [passed, setPassed] = useState(false);\n const [feedback, setFeedback] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [saved, setSaved] = useState(false);\n const [suggestionId, setSuggestionId] = useState<string | null>(null);\n\n const handleSuggest = async () => {\n setError(null);\n try {\n const suggestion = await suggestGrade.mutateAsync(submission.id);\n setScoreInput(String(Math.round(suggestion.proposedScore)));\n setFeedback(\n suggestion.perQuestionFeedback.map((f, i) => `Q${i + 1}: ${f.feedback}`).join('\\n')\n );\n setSuggestionId(suggestion.id);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'AI grading assistant is unavailable.');\n }\n };\n\n const handleSave = async () => {\n const trimmed = scoreInput.trim();\n const scoreNum = Number(trimmed);\n if (trimmed === '' || Number.isNaN(scoreNum) || scoreNum < 0) {\n setError('Enter a valid non-negative score.');\n return;\n }\n setError(null);\n try {\n await gradeSubmission.mutateAsync({\n id: submission.id,\n input: { score: scoreNum, passed, feedback: feedback.trim() || undefined },\n });\n if (suggestionId) reviewSuggestion.mutate({ id: suggestionId, outcome: 'ACCEPTED' });\n setSaved(true);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'Failed to save grade.');\n }\n };\n\n if (saved) {\n return (\n <GlassCard treatment=\"plain\" className=\"flex items-center gap-3 p-4\">\n <CheckCircle2 className=\"h-5 w-5 shrink-0 text-status-success-text\" />\n <p className=\"text-sm text-text-secondary\">\n Graded {isMe ? 'your own attempt' : `learner ${shortId(submission.learnerId)}`} — score{' '}\n <span className=\"font-semibold text-text-primary tabular-nums\">{scoreInput}</span>.\n </p>\n </GlassCard>\n );\n }\n\n return (\n <GlassCard treatment=\"plain\" className=\"flex flex-col gap-3 p-4\">\n <div className=\"flex items-center gap-3\">\n <Avatar size=\"sm\" seed={submission.learnerId} />\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium text-text-primary\">\n {isMe ? 'You' : `Learner ${shortId(submission.learnerId)}`}\n </p>\n <p className=\"truncate text-xs text-text-tertiary\" title={submission.assessmentId}>\n Assessment {shortId(submission.assessmentId)} · Attempt #{submission.attempt} ·{' '}\n {formatDateTime(submission.submittedAt)}\n </p>\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={handleSuggest}\n disabled={suggestGrade.isPending}\n className=\"shrink-0\"\n >\n <Sparkles className=\"mr-1.5 h-3.5 w-3.5\" />\n {suggestGrade.isPending ? 'Asking AI…' : 'Suggest'}\n </Button>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-[7rem_auto_1fr] sm:items-start\">\n <div className=\"grid gap-1\">\n <Label htmlFor={`score-${submission.id}`} className=\"text-xs\">\n Score\n </Label>\n <Input\n id={`score-${submission.id}`}\n type=\"number\"\n min=\"0\"\n value={scoreInput}\n onChange={(e) => setScoreInput(e.target.value)}\n placeholder=\"0\"\n className=\"h-9\"\n />\n </div>\n <div className=\"grid gap-1\">\n <Label className=\"text-xs\">Result</Label>\n <div className=\"flex h-9 items-center gap-2\">\n <Switch checked={passed} onCheckedChange={setPassed} />\n <span className=\"text-xs text-text-secondary\">{passed ? 'Passed' : 'Not passed'}</span>\n </div>\n </div>\n <div className=\"grid gap-1\">\n <Label htmlFor={`feedback-${submission.id}`} className=\"text-xs\">\n Feedback (optional)\n </Label>\n <Textarea\n id={`feedback-${submission.id}`}\n rows={2}\n value={feedback}\n onChange={(e) => setFeedback(e.target.value)}\n className=\"text-sm\"\n />\n </div>\n </div>\n\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n\n <div className=\"flex justify-end\">\n <BuiPermissionButton resource=\"buildmyiq-submission\" action=\"update\" deniedBehavior=\"hide\">\n <Button size=\"sm\" onClick={handleSave} disabled={gradeSubmission.isPending}>\n {gradeSubmission.isPending ? 'Saving…' : 'Save grade'}\n </Button>\n </BuiPermissionButton>\n </div>\n </GlassCard>\n );\n};\n\nexport const BulkGradingPage: FC = () => {\n const { currentUser, navigateTo } = useBuildmyiq();\n const pager = useCursorPager();\n const { data, isLoading, isError, refetch } = useBuiSubmissions({\n status: 'SUBMITTED',\n cursor: pager.cursor,\n limit: PAGE_SIZE,\n });\n\n const rows = useMemo<BuiSubmission[]>(() => data?.items ?? [], [data]);\n\n return (\n <PageLayout\n title=\"Bulk grade\"\n description=\"Work through every awaiting-grade submission in one pass — suggest, adjust, save.\"\n actions={\n <Button variant=\"ghost\" onClick={() => navigateTo('submissions')}>\n <ArrowLeft className=\"mr-1.5 h-4 w-4\" /> Back to grading queue\n </Button>\n }\n >\n <div className=\"flex flex-col gap-4\">\n {isLoading ? (\n <LoadingView label=\"Loading submissions awaiting grade…\" />\n ) : isError ? (\n <ErrorView\n title=\"Couldn't load submissions\"\n message=\"The grading queue failed to load.\"\n onRetry={() => refetch()}\n />\n ) : rows.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<ClipboardList className=\"h-10 w-10\" />}\n title=\"Nothing to grade\"\n description=\"Every submission is already graded, or none have been submitted yet.\"\n action={\n <Button variant=\"outline\" onClick={() => navigateTo('submissions')}>\n Back to grading queue\n </Button>\n }\n />\n ) : (\n <>\n <div className=\"flex flex-col gap-3\">\n {rows.map((s) => (\n <BulkGradeRow key={s.id} submission={s} isMe={s.learnerId === currentUser?.id} />\n ))}\n </div>\n <Pagination\n page={pager.page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo?.hasMore ?? false}\n onPageChange={(target) => pager.onPageChange(target, data?.pageInfo?.cursor)}\n />\n </>\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubmissionsPage.d.ts","sourceRoot":"","sources":["../../../../src/buildmyiq/pages/submissions/SubmissionsPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AA6W3C,eAAO,MAAM,eAAe,EAAE,EA0Q7B,CAAC"}
1
+ {"version":3,"file":"SubmissionsPage.d.ts","sourceRoot":"","sources":["../../../../src/buildmyiq/pages/submissions/SubmissionsPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAof3C,eAAO,MAAM,eAAe,EAAE,EA+Q7B,CAAC"}