@frankzhang2026/opencode-android-orchestrator 0.10.0 → 1.0.1
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 +28 -0
- package/README.md +48 -51
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/android-sdk.d.ts +10 -0
- package/dist/config/android-sdk.d.ts.map +1 -0
- package/dist/config/android-sdk.js +50 -0
- package/dist/config/android-sdk.js.map +1 -0
- package/dist/config/queue-policy.d.ts +12 -0
- package/dist/config/queue-policy.d.ts.map +1 -0
- package/dist/config/queue-policy.js +18 -0
- package/dist/config/queue-policy.js.map +1 -0
- package/dist/config/verification-policy.d.ts +8 -3
- package/dist/config/verification-policy.d.ts.map +1 -1
- package/dist/config/verification-policy.js +48 -14
- package/dist/config/verification-policy.js.map +1 -1
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +3 -49
- package/dist/doctor/index.js.map +1 -1
- package/dist/doctor/installation.d.ts.map +1 -1
- package/dist/doctor/installation.js +3 -0
- package/dist/doctor/installation.js.map +1 -1
- package/dist/installer/adaptive-templates.d.ts +3 -1
- package/dist/installer/adaptive-templates.d.ts.map +1 -1
- package/dist/installer/adaptive-templates.js +2 -0
- package/dist/installer/adaptive-templates.js.map +1 -1
- package/dist/installer/install-manifest.d.ts +1 -0
- package/dist/installer/install-manifest.d.ts.map +1 -1
- package/dist/installer/install-manifest.js +6 -1
- package/dist/installer/install-manifest.js.map +1 -1
- package/dist/installer/opencode-config.d.ts +3 -3
- package/dist/installer/opencode-config.d.ts.map +1 -1
- package/dist/installer/opencode-config.js +1 -1
- package/dist/installer/opencode-config.js.map +1 -1
- package/dist/installer/uninstall.d.ts.map +1 -1
- package/dist/installer/uninstall.js +5 -0
- package/dist/installer/uninstall.js.map +1 -1
- package/dist/installer/upgrade.d.ts.map +1 -1
- package/dist/installer/upgrade.js +13 -1
- package/dist/installer/upgrade.js.map +1 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +11 -5
- package/dist/plugin/index.js.map +1 -1
- package/dist/queue/approvals.d.ts +49 -0
- package/dist/queue/approvals.d.ts.map +1 -0
- package/dist/queue/approvals.js +68 -0
- package/dist/queue/approvals.js.map +1 -0
- package/dist/queue/cli.d.ts +3 -0
- package/dist/queue/cli.d.ts.map +1 -0
- package/dist/queue/cli.js +115 -0
- package/dist/queue/cli.js.map +1 -0
- package/dist/queue/executor.d.ts +24 -0
- package/dist/queue/executor.d.ts.map +1 -0
- package/dist/queue/executor.js +445 -0
- package/dist/queue/executor.js.map +1 -0
- package/dist/queue/lifecycle.d.ts +3 -0
- package/dist/queue/lifecycle.d.ts.map +1 -0
- package/dist/queue/lifecycle.js +24 -0
- package/dist/queue/lifecycle.js.map +1 -0
- package/dist/queue/queue.d.ts +171 -0
- package/dist/queue/queue.d.ts.map +1 -0
- package/dist/queue/queue.js +506 -0
- package/dist/queue/queue.js.map +1 -0
- package/dist/queue/service.d.ts +15 -0
- package/dist/queue/service.d.ts.map +1 -0
- package/dist/queue/service.js +152 -0
- package/dist/queue/service.js.map +1 -0
- package/dist/queue/storage.d.ts +32 -0
- package/dist/queue/storage.d.ts.map +1 -0
- package/dist/queue/storage.js +180 -0
- package/dist/queue/storage.js.map +1 -0
- package/dist/queue/tools.d.ts +12 -0
- package/dist/queue/tools.d.ts.map +1 -0
- package/dist/queue/tools.js +155 -0
- package/dist/queue/tools.js.map +1 -0
- package/docs/MIGRATION.md +32 -11
- package/docs/QUEUE.md +151 -0
- package/docs/SECURITY.md +38 -31
- package/docs/TROUBLESHOOTING.md +34 -11
- package/package.json +1 -1
- package/templates/.opencode/agents/scheduled-planner.md +64 -131
- package/templates/.opencode/commands/abort-task.md +6 -15
- package/templates/.opencode/commands/acceptance.md +6 -15
- package/templates/.opencode/commands/change.md +3 -1
- package/templates/.opencode/commands/resume-review.md +6 -14
- package/templates/.opencode/commands/resume-task.md +6 -23
- package/templates/.opencode/skills/scheduled-quality-orchestrator/SKILL.md +72 -248
- package/templates/AGENTS.md.fragment +8 -0
- package/templates/automation/config.json +8 -2
- package/templates/automation/config.schema.json +218 -46
- package/templates/scripts/automation/abort-task.sh +2 -1
- package/templates/scripts/automation/accept-and-integrate.sh +5 -0
- package/templates/scripts/automation/acceptance-report.sh +4 -2
- package/templates/scripts/automation/approve-and-run.sh +4 -0
- package/templates/scripts/automation/begin-review.sh +1 -0
- package/templates/scripts/automation/block-task.sh +1 -0
- package/templates/scripts/automation/claim-task.sh +1 -0
- package/templates/scripts/automation/lib.sh +94 -1
- package/templates/scripts/automation/orchestrate-task.sh +11 -0
- package/templates/scripts/automation/preflight.sh +14 -4
- package/templates/scripts/automation/prepare-contract-review.sh +4 -0
- package/templates/scripts/automation/quality-gate.sh +1 -0
- package/templates/scripts/automation/record-red.sh +1 -0
- package/templates/scripts/automation/resume-review-fix.sh +1 -0
- package/templates/scripts/automation/resume-review.sh +1 -0
- package/templates/scripts/automation/resume-task.sh +1 -0
- package/templates/scripts/automation/scope-gate.sh +10 -2
- package/templates/scripts/automation/submit-review.sh +8 -2
- package/templates/scripts/automation/verify-task.sh +13 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { ApprovalProof } from "./approvals.js";
|
|
2
|
+
import { QueueStorage, type ProcessIdentity } from "./storage.js";
|
|
3
|
+
import { type QueuePolicy } from "../config/queue-policy.js";
|
|
4
|
+
export type WorkspaceStrategy = "inPlaceExclusive" | "isolatedWorktree";
|
|
5
|
+
export type CommitPolicy = "humanApproval" | "autoCommit";
|
|
6
|
+
export type JobKind = "execute" | "integrate" | "revalidate" | "resume" | "resume-review" | "abort" | "recover";
|
|
7
|
+
export interface QueueConfiguration {
|
|
8
|
+
schemaVersion: number;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
mode: string;
|
|
11
|
+
workspaceStrategy: WorkspaceStrategy;
|
|
12
|
+
commitPolicy?: CommitPolicy;
|
|
13
|
+
pushAfterAcceptance: false;
|
|
14
|
+
unitTestsEnabled: boolean;
|
|
15
|
+
autoCleanupWorktrees: boolean;
|
|
16
|
+
worktreeBase: string;
|
|
17
|
+
queue?: QueuePolicy["queue"];
|
|
18
|
+
approvalPhrases: Record<string, string>;
|
|
19
|
+
protectedPaths: string[];
|
|
20
|
+
gradleVerification: {
|
|
21
|
+
fullUnitTestTasks: string[];
|
|
22
|
+
focusedTestTasks: string[];
|
|
23
|
+
assembleTasks: string[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface Draft {
|
|
27
|
+
proposalApproval?: ApprovalProof;
|
|
28
|
+
key: string;
|
|
29
|
+
taskId: string;
|
|
30
|
+
version: number;
|
|
31
|
+
contract: Record<string, unknown>;
|
|
32
|
+
contractText: string;
|
|
33
|
+
plan: string;
|
|
34
|
+
contractSha256: string;
|
|
35
|
+
planSha256: string;
|
|
36
|
+
planningHead: string;
|
|
37
|
+
targetBranch: string;
|
|
38
|
+
sourceRoot: string;
|
|
39
|
+
workspaceStrategy: WorkspaceStrategy;
|
|
40
|
+
commitPolicy: CommitPolicy;
|
|
41
|
+
notBefore: string | null;
|
|
42
|
+
dependsOn: string[];
|
|
43
|
+
priority: number;
|
|
44
|
+
createdAt: string;
|
|
45
|
+
digest: string;
|
|
46
|
+
}
|
|
47
|
+
export interface QueueItem extends Draft {
|
|
48
|
+
approvedWorkspaceStrategy: WorkspaceStrategy;
|
|
49
|
+
queuePriority: number;
|
|
50
|
+
sequence: number;
|
|
51
|
+
approvedAt: string;
|
|
52
|
+
authorization: {
|
|
53
|
+
source: "contractApproval";
|
|
54
|
+
digest: string;
|
|
55
|
+
commitPolicy: CommitPolicy;
|
|
56
|
+
pushAfterAcceptance: false;
|
|
57
|
+
revoked: boolean;
|
|
58
|
+
proof?: ApprovalProof;
|
|
59
|
+
};
|
|
60
|
+
state: string;
|
|
61
|
+
waitingReason: string | null;
|
|
62
|
+
runId: string | null;
|
|
63
|
+
taskRoot: string | null;
|
|
64
|
+
request: {
|
|
65
|
+
kind: JobKind;
|
|
66
|
+
approval: string | null;
|
|
67
|
+
candidate: string | null;
|
|
68
|
+
proof?: ApprovalProof;
|
|
69
|
+
} | null;
|
|
70
|
+
sealedDiff: string | null;
|
|
71
|
+
sealedRunId: string | null;
|
|
72
|
+
candidateId: string | null;
|
|
73
|
+
completedCommit: string | null;
|
|
74
|
+
}
|
|
75
|
+
export interface QueueRun {
|
|
76
|
+
id: string;
|
|
77
|
+
key: string;
|
|
78
|
+
kind: JobKind;
|
|
79
|
+
createdAt: string;
|
|
80
|
+
launcher: ProcessIdentity;
|
|
81
|
+
worker: ProcessIdentity | null;
|
|
82
|
+
outcome: {
|
|
83
|
+
state: string;
|
|
84
|
+
error: string | null;
|
|
85
|
+
} | null;
|
|
86
|
+
}
|
|
87
|
+
export interface QueueNotification {
|
|
88
|
+
id: string;
|
|
89
|
+
key: string;
|
|
90
|
+
state: string;
|
|
91
|
+
at: string;
|
|
92
|
+
message: string;
|
|
93
|
+
sealedDiff: string | null;
|
|
94
|
+
commit: string | null;
|
|
95
|
+
pushed: false;
|
|
96
|
+
acknowledged: boolean;
|
|
97
|
+
}
|
|
98
|
+
export interface QueueDocument {
|
|
99
|
+
schemaVersion: 1;
|
|
100
|
+
sequence: number;
|
|
101
|
+
paused: boolean;
|
|
102
|
+
fault: string | null;
|
|
103
|
+
strategy: WorkspaceStrategy | null;
|
|
104
|
+
drafts: Draft[];
|
|
105
|
+
items: QueueItem[];
|
|
106
|
+
active: QueueRun | null;
|
|
107
|
+
runs: QueueRun[];
|
|
108
|
+
notifications: QueueNotification[];
|
|
109
|
+
}
|
|
110
|
+
export interface DraftInput {
|
|
111
|
+
contract: Record<string, unknown>;
|
|
112
|
+
plan: string;
|
|
113
|
+
planningHead: string;
|
|
114
|
+
targetBranch: string;
|
|
115
|
+
workspaceStrategy?: WorkspaceStrategy;
|
|
116
|
+
commitPolicy?: CommitPolicy;
|
|
117
|
+
notBefore?: string;
|
|
118
|
+
dependsOn?: string[];
|
|
119
|
+
priority?: number;
|
|
120
|
+
}
|
|
121
|
+
export interface PlanningSnapshot {
|
|
122
|
+
sourceRoot: string;
|
|
123
|
+
targetBranch: string;
|
|
124
|
+
planningHead: string;
|
|
125
|
+
}
|
|
126
|
+
export interface SnapshotFilePage {
|
|
127
|
+
planningHead: string;
|
|
128
|
+
prefix: string;
|
|
129
|
+
query: string;
|
|
130
|
+
files: string[];
|
|
131
|
+
nextCursor: string | null;
|
|
132
|
+
}
|
|
133
|
+
export interface SnapshotReadChunk {
|
|
134
|
+
planningHead: string;
|
|
135
|
+
path: string;
|
|
136
|
+
content: string;
|
|
137
|
+
nextCursor: string | null;
|
|
138
|
+
}
|
|
139
|
+
export declare const TASK_ID: RegExp;
|
|
140
|
+
export declare function now(): string;
|
|
141
|
+
export declare function matchesPath(pattern: string, path: string): boolean;
|
|
142
|
+
export declare function validateContract(contract: Record<string, unknown>, config: QueueConfiguration): void;
|
|
143
|
+
export declare function draftFromItem(item: QueueItem): Draft;
|
|
144
|
+
export declare function assertAuthorized(item: QueueItem): void;
|
|
145
|
+
export declare class TaskQueue {
|
|
146
|
+
readonly storage: QueueStorage<QueueDocument>;
|
|
147
|
+
constructor(directory: string);
|
|
148
|
+
config(): QueueConfiguration;
|
|
149
|
+
snapshot(targetBranch?: string): PlanningSnapshot;
|
|
150
|
+
private sensitive;
|
|
151
|
+
readSnapshot(head: string, path: string): string;
|
|
152
|
+
listSnapshot(head: string, prefix?: string, query?: string, cursor?: string, limit?: number): SnapshotFilePage;
|
|
153
|
+
readSnapshotChunk(head: string, path: string, cursor?: string): SnapshotReadChunk;
|
|
154
|
+
private validateSnapshotHead;
|
|
155
|
+
private validateSnapshotPath;
|
|
156
|
+
draft(input: DraftInput, proposalApproval?: ApprovalProof): Draft;
|
|
157
|
+
approvalText(draft: Draft): string;
|
|
158
|
+
enqueue(key: string, digest: string, approval: string, proof?: ApprovalProof): QueueItem;
|
|
159
|
+
item(key: string): QueueItem;
|
|
160
|
+
private findItem;
|
|
161
|
+
reorder(key: string, priority: number): void;
|
|
162
|
+
setPolicy(workspaceStrategy: WorkspaceStrategy, commitPolicy: CommitPolicy): void;
|
|
163
|
+
recoverExecution(): void;
|
|
164
|
+
details(key: string): Record<string, unknown>;
|
|
165
|
+
notify(document: QueueDocument, item: QueueItem, message: string): void;
|
|
166
|
+
control(action: "pause" | "resume" | "clear-fault" | "cancel" | "revoke" | "acknowledge", key?: string): QueueDocument;
|
|
167
|
+
request(key: string, kind: Exclude<JobKind, "execute">, approval?: string, candidate?: string, proof?: ApprovalProof): void;
|
|
168
|
+
reserve(): QueueRun | null;
|
|
169
|
+
reconcile(): void;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,EAEG,YAAY,EAAE,KAAK,eAAe,EAC3C,MAAM,cAAc,CAAC;AACtB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;AAC1D,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAChH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mBAAmB,EAAE,KAAK,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,EAAE;QAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC1G;AACD,MAAM,WAAW,KAAK;IACpB,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,yBAAyB,EAAE,iBAAiB,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,MAAM,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAC;QAAC,mBAAmB,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC;IAC/J,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5G,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AACD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD;AACD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACpE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;CACxF;AACD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAC5F,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AACD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAeD,eAAO,MAAM,OAAO,QAAsB,CAAC;AAC3C,wBAAgB,GAAG,IAAI,MAAM,CAAqC;AAWlE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CA6BpG;AAOD,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAMpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAOtD;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;gBAClC,SAAS,EAAE,MAAM;IAG7B,MAAM,IAAI,kBAAkB;IAU5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAQjD,OAAO,CAAC,SAAS;IAGjB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAShD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,EAAE,KAAK,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAA8B,GAAG,gBAAgB;IAoC3H,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAgCjF,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oBAAoB;IAI5B,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,aAAa,GAAG,KAAK;IAgCjE,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAKlC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS;IAsBxF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAK5B,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ5C,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI;IAejF,gBAAgB,IAAI,IAAI;IAoBxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAS7C,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIvE,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa;IAyBtH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IAoB3H,OAAO,IAAI,QAAQ,GAAG,IAAI;IAuD1B,SAAS,IAAI,IAAI;CAkClB"}
|