github-issue-tower-defence-management 1.129.0 → 1.130.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.
- package/CHANGELOG.md +7 -0
- package/README.md +6 -5
- package/bin/adapter/entry-points/console/consoleDataDelivery.js +1 -0
- package/bin/adapter/entry-points/console/consoleDataDelivery.js.map +1 -1
- package/bin/adapter/entry-points/console/consoleDoneStore.js +1 -0
- package/bin/adapter/entry-points/console/consoleDoneStore.js.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-Dr5qin37.js → index-Bz0KvgIG.js} +22 -22
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/adapter/entry-points/handlers/consoleListsWriter.js +1 -0
- package/bin/adapter/entry-points/handlers/consoleListsWriter.js.map +1 -1
- package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +1 -0
- package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +6 -0
- package/src/adapter/entry-points/console/consoleDataDelivery.ts +1 -0
- package/src/adapter/entry-points/console/consoleDoneStore.test.ts +4 -0
- package/src/adapter/entry-points/console/consoleDoneStore.ts +1 -0
- package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +10 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +4 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +2 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.stories.tsx +2 -2
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.test.tsx +5 -5
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.tsx +3 -3
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.stories.tsx +8 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.test.tsx +15 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.tsx +2 -2
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleNavigation.test.ts +1 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.test.ts +2 -1
- package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.test.ts +6 -2
- package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.ts +7 -6
- package/src/adapter/entry-points/console/ui/src/features/console/logic/operations.test.ts +7 -5
- package/src/adapter/entry-points/console/ui/src/features/console/logic/operations.ts +3 -2
- package/src/adapter/entry-points/console/ui/src/features/console/logic/tabAdvance.test.ts +11 -1
- package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +3 -1
- package/src/adapter/entry-points/console/ui/src/features/console/testing/fixtures.ts +1 -0
- package/src/adapter/entry-points/console/ui-dist/assets/{index-Dr5qin37.js → index-Bz0KvgIG.js} +22 -22
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/src/adapter/entry-points/console/webServer.test.ts +1 -0
- package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +21 -1
- package/src/adapter/entry-points/handlers/consoleListsWriter.ts +1 -0
- package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +26 -0
- package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +8 -1
- package/types/adapter/entry-points/console/consoleDataDelivery.d.ts.map +1 -1
- package/types/adapter/entry-points/console/consoleDoneStore.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/consoleListsWriter.d.ts.map +1 -1
- package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +2 -1
- package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>TDPM Console</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-Bz0KvgIG.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-N9M1qhkw.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
@@ -82,6 +82,7 @@ describe('webServer pure helpers', () => {
|
|
|
82
82
|
true,
|
|
83
83
|
);
|
|
84
84
|
expect(isConsoleAppRoute('/projects/utage3/todo-by-human')).toBe(true);
|
|
85
|
+
expect(isConsoleAppRoute('/projects/utage3/todo-by-agent')).toBe(true);
|
|
85
86
|
});
|
|
86
87
|
|
|
87
88
|
it('does not match data, api, or unknown tab routes', () => {
|
|
@@ -87,7 +87,7 @@ describe('writeConsoleLists', () => {
|
|
|
87
87
|
const tabFile = (tab: string): string =>
|
|
88
88
|
path.join(outDir, 'demo', tab, 'list.json');
|
|
89
89
|
|
|
90
|
-
it('writes
|
|
90
|
+
it('writes every console tab list.json file', () => {
|
|
91
91
|
writeConsoleLists({
|
|
92
92
|
consoleDataOutputDir: outDir,
|
|
93
93
|
pjcode: 'demo',
|
|
@@ -104,6 +104,7 @@ describe('writeConsoleLists', () => {
|
|
|
104
104
|
'unread',
|
|
105
105
|
'failed-preparation',
|
|
106
106
|
'todo-by-human',
|
|
107
|
+
'todo-by-agent',
|
|
107
108
|
]) {
|
|
108
109
|
expect(fs.existsSync(tabFile(tab))).toBe(true);
|
|
109
110
|
}
|
|
@@ -172,6 +173,25 @@ describe('writeConsoleLists', () => {
|
|
|
172
173
|
expect(isUnknownArray(items) ? items.length : 0).toBe(1);
|
|
173
174
|
});
|
|
174
175
|
|
|
176
|
+
it('writes todo-by-agent items selected by the Todo by agent status', () => {
|
|
177
|
+
writeConsoleLists({
|
|
178
|
+
consoleDataOutputDir: outDir,
|
|
179
|
+
pjcode: 'demo',
|
|
180
|
+
assigneeLogin: ASSIGNEE,
|
|
181
|
+
project,
|
|
182
|
+
issues: [makeIssue({ status: 'Todo by agent' })],
|
|
183
|
+
generatedAt: '2026-06-14T07:22:33Z',
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const raw: unknown = JSON.parse(
|
|
187
|
+
fs.readFileSync(tabFile('todo-by-agent'), 'utf8'),
|
|
188
|
+
);
|
|
189
|
+
expect(isRecord(raw)).toBe(true);
|
|
190
|
+
const items: unknown = isRecord(raw) ? raw.items : undefined;
|
|
191
|
+
expect(isUnknownArray(items)).toBe(true);
|
|
192
|
+
expect(isUnknownArray(items) ? items.length : 0).toBe(1);
|
|
193
|
+
});
|
|
194
|
+
|
|
175
195
|
it('writes items with no body field', () => {
|
|
176
196
|
writeConsoleLists({
|
|
177
197
|
consoleDataOutputDir: outDir,
|
|
@@ -201,6 +201,25 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
201
201
|
expect(result['todo-by-human'].items).toHaveLength(0);
|
|
202
202
|
});
|
|
203
203
|
|
|
204
|
+
it('selects todo-by-agent items for the exact status only', () => {
|
|
205
|
+
const result = run([
|
|
206
|
+
makeIssue({ status: 'Todo by agent' }),
|
|
207
|
+
makeIssue({ status: 'todo by agent' }),
|
|
208
|
+
makeIssue({ status: 'Todo by human' }),
|
|
209
|
+
makeIssue({ status: 'Unread' }),
|
|
210
|
+
]);
|
|
211
|
+
expect(result['todo-by-agent'].items.map((item) => item.number)).toEqual([
|
|
212
|
+
1,
|
|
213
|
+
]);
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('rejects a non-actionable todo-by-agent issue', () => {
|
|
217
|
+
const result = run([
|
|
218
|
+
makeIssue({ status: 'Todo by agent', nextActionHour: 9 }),
|
|
219
|
+
]);
|
|
220
|
+
expect(result['todo-by-agent'].items).toHaveLength(0);
|
|
221
|
+
});
|
|
222
|
+
|
|
204
223
|
it('selects no-story items case-insensitively for triage', () => {
|
|
205
224
|
const result = run([
|
|
206
225
|
makeIssue({ story: 'regular / NO STORY; SET STORY FIELD' }),
|
|
@@ -445,6 +464,13 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
445
464
|
expect(names).toContain('Awaiting Workspace');
|
|
446
465
|
});
|
|
447
466
|
|
|
467
|
+
it('excludes todo by agent and done from todo-by-agent status options', () => {
|
|
468
|
+
const names = run([])['todo-by-agent'].statusOptions.map((o) => o.name);
|
|
469
|
+
expect(names).not.toContain('Todo by agent');
|
|
470
|
+
expect(names).not.toContain('Done');
|
|
471
|
+
expect(names).toContain('Awaiting Workspace');
|
|
472
|
+
});
|
|
473
|
+
|
|
448
474
|
it('emits all story options for triage and no statusOptions key', () => {
|
|
449
475
|
const triage = run([]).triage;
|
|
450
476
|
expect(triage.storyOptions.map((o) => o.name)).toEqual([
|
|
@@ -3,6 +3,7 @@ import { FieldOption, Project } from '../../entities/Project';
|
|
|
3
3
|
import {
|
|
4
4
|
IN_TMUX_BY_AGENT_STATUS_NAME,
|
|
5
5
|
LEGACY_TODO_STATUS_NAME,
|
|
6
|
+
TODO_BY_AGENT_STATUS_NAME,
|
|
6
7
|
TODO_STATUS_NAME,
|
|
7
8
|
} from '../../entities/WorkflowStatus';
|
|
8
9
|
|
|
@@ -56,7 +57,8 @@ export type ConsoleTabName =
|
|
|
56
57
|
| 'triage'
|
|
57
58
|
| 'unread'
|
|
58
59
|
| 'failed-preparation'
|
|
59
|
-
| 'todo-by-human'
|
|
60
|
+
| 'todo-by-human'
|
|
61
|
+
| 'todo-by-agent';
|
|
60
62
|
|
|
61
63
|
export type ConsoleLists = {
|
|
62
64
|
'workflow-blocker': ConsoleStatusTab;
|
|
@@ -65,6 +67,7 @@ export type ConsoleLists = {
|
|
|
65
67
|
unread: ConsoleStatusTab;
|
|
66
68
|
'failed-preparation': ConsoleStatusTab;
|
|
67
69
|
'todo-by-human': ConsoleStatusTab;
|
|
70
|
+
'todo-by-agent': ConsoleStatusTab;
|
|
68
71
|
};
|
|
69
72
|
|
|
70
73
|
export type GenerateConsoleListsInput = {
|
|
@@ -155,6 +158,10 @@ export class GenerateConsoleListsUseCase {
|
|
|
155
158
|
issue.status === LEGACY_TODO_STATUS_NAME,
|
|
156
159
|
[TODO_STATUS_NAME.toLowerCase(), 'done'],
|
|
157
160
|
),
|
|
161
|
+
'todo-by-agent': buildStatusTab(
|
|
162
|
+
(issue) => issue.status === TODO_BY_AGENT_STATUS_NAME,
|
|
163
|
+
[TODO_BY_AGENT_STATUS_NAME.toLowerCase(), 'done'],
|
|
164
|
+
),
|
|
158
165
|
triage: {
|
|
159
166
|
pjcode,
|
|
160
167
|
generatedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consoleDataDelivery.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDataDelivery.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"consoleDataDelivery.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDataDelivery.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAQ1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAO9D,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,gBAAgB,GAAG,IAoCrB,CAAC;AA0CF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,sBAAsB,MAAM,EAC5B,OAAO,gBAAgB,KACtB,mBA6CF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consoleDoneStore.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDoneStore.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAqBF,eAAO,MAAM,kBAAkB,GAC7B,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MACmE,CAAC;AAYvE,eAAO,MAAM,sBAAsB,GACjC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MAAM,EASR,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,eAAe,MAAM,KACpB,IAaF,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"consoleDoneStore.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDoneStore.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAqBF,eAAO,MAAM,kBAAkB,GAC7B,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MACmE,CAAC;AAYvE,eAAO,MAAM,sBAAsB,GACjC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,MAAM,EASR,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,eAAe,MAAM,KACpB,IAaF,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,EAS1C,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,eAAe,MAAM,KACpB,IAIF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,IAGF,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,sBAAsB,MAAM,EAC5B,QAAQ,MAAM,KACb,IAIF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consoleListsWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/consoleListsWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAQhE,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"consoleListsWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/consoleListsWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAQhE,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAYF,eAAO,MAAM,wBAAwB,GAAI,MAAM,IAAI,KAAG,MACR,CAAC;AAU/C,eAAO,MAAM,iBAAiB,GAAI,QAAQ,wBAAwB,KAAG,IAyBpE,CAAC"}
|
|
@@ -41,7 +41,7 @@ export type ConsoleTriageTab = {
|
|
|
41
41
|
storyColors: Record<string, ConsoleColor>;
|
|
42
42
|
items: ConsoleListItem[];
|
|
43
43
|
};
|
|
44
|
-
export type ConsoleTabName = 'workflow-blocker' | 'prs' | 'triage' | 'unread' | 'failed-preparation' | 'todo-by-human';
|
|
44
|
+
export type ConsoleTabName = 'workflow-blocker' | 'prs' | 'triage' | 'unread' | 'failed-preparation' | 'todo-by-human' | 'todo-by-agent';
|
|
45
45
|
export type ConsoleLists = {
|
|
46
46
|
'workflow-blocker': ConsoleStatusTab;
|
|
47
47
|
prs: ConsoleStatusTab;
|
|
@@ -49,6 +49,7 @@ export type ConsoleLists = {
|
|
|
49
49
|
unread: ConsoleStatusTab;
|
|
50
50
|
'failed-preparation': ConsoleStatusTab;
|
|
51
51
|
'todo-by-human': ConsoleStatusTab;
|
|
52
|
+
'todo-by-agent': ConsoleStatusTab;
|
|
52
53
|
};
|
|
53
54
|
export type GenerateConsoleListsInput = {
|
|
54
55
|
project: Project;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateConsoleListsUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"GenerateConsoleListsUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IACrD,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1C,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,oBAAoB,GACpB,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,GAAG,EAAE,gBAAgB,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,oBAAoB,EAAE,gBAAgB,CAAC;IACvC,eAAe,EAAE,gBAAgB,CAAC;IAClC,eAAe,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AAIF,qBAAa,2BAA2B;IACtC,GAAG,GAAI,OAAO,yBAAyB,KAAG,YAAY,CAoGpD;IAEF,OAAO,CAAC,YAAY,CAKY;IAEhC,OAAO,CAAC,uBAAuB,CAS7B;IAEF,OAAO,CAAC,WAAW,CAiBhB;IAEH,OAAO,CAAC,iBAAiB,CAYjB;IAER,OAAO,CAAC,sBAAsB,CAQ5B;IAEF,OAAO,CAAC,sBAAsB,CAQ5B;IAEF,OAAO,CAAC,gBAAgB,CAetB;CACH"}
|