openclaw-quiubo 2.3.2 → 2.3.4
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/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/dist/src/api.js +0 -257
- package/dist/src/api.js.map +0 -1
- package/dist/src/channel.js +0 -1006
- package/dist/src/channel.js.map +0 -1
- package/dist/src/crypto.js +0 -153
- package/dist/src/crypto.js.map +0 -1
- package/dist/src/key-manager.js +0 -118
- package/dist/src/key-manager.js.map +0 -1
- package/dist/src/polling-gateway.js +0 -98
- package/dist/src/polling-gateway.js.map +0 -1
- package/dist/src/realtime-gateway.js +0 -504
- package/dist/src/realtime-gateway.js.map +0 -1
- package/dist/src/runtime.js +0 -22
- package/dist/src/runtime.js.map +0 -1
- package/dist/src/types.js +0 -5
- package/dist/src/types.js.map +0 -1
- package/dist/src/webhook-handler.js +0 -84
- package/dist/src/webhook-handler.js.map +0 -1
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-quiubo",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.4",
|
|
4
4
|
"description": "OpenClaw Quiubo channel plugin — chat with AI assistants through Quiubo",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"openclaw.plugin.json"
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
|
-
"build": "node esbuild.config.mjs && tsc -p tsconfig.json --emitDeclarationOnly",
|
|
19
|
+
"build": "rm -rf dist && node esbuild.config.mjs && tsc -p tsconfig.json --emitDeclarationOnly",
|
|
20
20
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
21
21
|
"prepublishOnly": "npm run build"
|
|
22
22
|
},
|
package/dist/src/api.js
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Quiubo REST API Client
|
|
3
|
-
*
|
|
4
|
-
* SDK client for interacting with the Quiubo backend API.
|
|
5
|
-
* Used by the OpenClaw extension to send/receive messages and manage groups.
|
|
6
|
-
*/
|
|
7
|
-
import { randomUUID } from 'crypto';
|
|
8
|
-
export class QuiuboApiClient {
|
|
9
|
-
baseUrl;
|
|
10
|
-
apiKey;
|
|
11
|
-
constructor(baseUrl, apiKey) {
|
|
12
|
-
// Remove trailing slash
|
|
13
|
-
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
14
|
-
this.apiKey = apiKey;
|
|
15
|
-
}
|
|
16
|
-
async request(method, path, body) {
|
|
17
|
-
const url = `${this.baseUrl}/v1/sdk${path}`;
|
|
18
|
-
const headers = {
|
|
19
|
-
'X-SDK-API-Key': this.apiKey,
|
|
20
|
-
'Content-Type': 'application/json',
|
|
21
|
-
};
|
|
22
|
-
const response = await fetch(url, {
|
|
23
|
-
method,
|
|
24
|
-
headers,
|
|
25
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
26
|
-
});
|
|
27
|
-
if (!response.ok) {
|
|
28
|
-
const errorBody = await response.text();
|
|
29
|
-
throw new Error(`Quiubo API error: ${response.status} ${response.statusText} - ${errorBody}`);
|
|
30
|
-
}
|
|
31
|
-
if (response.status === 204) {
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
return response.json();
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Authenticate and verify API key
|
|
38
|
-
*/
|
|
39
|
-
async authenticate() {
|
|
40
|
-
return this.request('POST', '/auth');
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Send a plaintext message to an SDK group
|
|
44
|
-
*/
|
|
45
|
-
async sendMessage(groupId, opts) {
|
|
46
|
-
return this.request('POST', `/groups/${groupId}/messages`, {
|
|
47
|
-
senderIdentityId: opts.senderIdentityId,
|
|
48
|
-
...(opts.ciphertext ? { ciphertext: opts.ciphertext } : { plaintext: opts.plaintext ?? '' }),
|
|
49
|
-
clientMessageId: opts.clientMessageId ?? randomUUID(),
|
|
50
|
-
...(opts.metadata ? { metadata: opts.metadata } : {}),
|
|
51
|
-
...(opts.attachments?.length ? { attachments: opts.attachments } : {}),
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* List messages from an SDK group with cursor-based pagination
|
|
56
|
-
*/
|
|
57
|
-
async listMessages(groupId, afterMessageId, limit = 50) {
|
|
58
|
-
const params = new URLSearchParams({ limit: String(limit) });
|
|
59
|
-
if (afterMessageId) {
|
|
60
|
-
params.set('after_message_id', afterMessageId);
|
|
61
|
-
}
|
|
62
|
-
return this.request('GET', `/groups/${groupId}/messages?${params.toString()}`);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Create a new SDK-managed group
|
|
66
|
-
*/
|
|
67
|
-
async createGroup(opts) {
|
|
68
|
-
return this.request('POST', '/groups', opts);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Add members to an SDK group
|
|
72
|
-
*/
|
|
73
|
-
async addMembers(groupId, identityIds) {
|
|
74
|
-
await this.request('POST', `/groups/${groupId}/members`, {
|
|
75
|
-
identityIds,
|
|
76
|
-
action: 'add',
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Remove members from an SDK group
|
|
81
|
-
*/
|
|
82
|
-
async removeMembers(groupId, identityIds) {
|
|
83
|
-
await this.request('POST', `/groups/${groupId}/members`, {
|
|
84
|
-
identityIds,
|
|
85
|
-
action: 'remove',
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* List all SDK-managed groups, optionally filtered by member identity
|
|
90
|
-
*/
|
|
91
|
-
async listGroups(memberIdentityId) {
|
|
92
|
-
if (memberIdentityId) {
|
|
93
|
-
const params = new URLSearchParams({ member_identity_id: memberIdentityId });
|
|
94
|
-
return this.request('GET', `/groups?${params.toString()}`);
|
|
95
|
-
}
|
|
96
|
-
return this.request('GET', '/groups');
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get a specific SDK-managed group
|
|
100
|
-
*/
|
|
101
|
-
async getGroup(groupId) {
|
|
102
|
-
return this.request('GET', `/groups/${groupId}`);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Configure webhook for the SDK app
|
|
106
|
-
*/
|
|
107
|
-
async configureWebhook(opts) {
|
|
108
|
-
return this.request('PATCH', '/webhook', opts);
|
|
109
|
-
}
|
|
110
|
-
// ========================================================================
|
|
111
|
-
// Identity Management
|
|
112
|
-
// ========================================================================
|
|
113
|
-
/**
|
|
114
|
-
* Create a service identity owned by this SDK app
|
|
115
|
-
*/
|
|
116
|
-
async createIdentity(opts) {
|
|
117
|
-
return this.request('POST', '/identities', opts);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* List service identities owned by this SDK app
|
|
121
|
-
*/
|
|
122
|
-
async listIdentities() {
|
|
123
|
-
return this.request('GET', '/identities');
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Delete (soft-delete) a service identity
|
|
127
|
-
*/
|
|
128
|
-
async deleteIdentity(identityId) {
|
|
129
|
-
return this.request('DELETE', `/identities/${identityId}`);
|
|
130
|
-
}
|
|
131
|
-
// ========================================================================
|
|
132
|
-
// Join Token Management
|
|
133
|
-
// ========================================================================
|
|
134
|
-
/**
|
|
135
|
-
* Create a join token for self-service user onboarding
|
|
136
|
-
*/
|
|
137
|
-
async createJoinToken(opts) {
|
|
138
|
-
return this.request('POST', '/join-tokens', opts);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* List join tokens for this SDK app
|
|
142
|
-
*/
|
|
143
|
-
async listJoinTokens() {
|
|
144
|
-
return this.request('GET', '/join-tokens');
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Revoke a join token
|
|
148
|
-
*/
|
|
149
|
-
async deleteJoinToken(tokenId) {
|
|
150
|
-
return this.request('DELETE', `/join-tokens/${tokenId}`);
|
|
151
|
-
}
|
|
152
|
-
// ========================================================================
|
|
153
|
-
// Group Members
|
|
154
|
-
// ========================================================================
|
|
155
|
-
/**
|
|
156
|
-
* List members of an SDK-managed group
|
|
157
|
-
*/
|
|
158
|
-
async listGroupMembers(groupId) {
|
|
159
|
-
return this.request('GET', `/groups/${groupId}/members`);
|
|
160
|
-
}
|
|
161
|
-
// ========================================================================
|
|
162
|
-
// Group Settings
|
|
163
|
-
// ========================================================================
|
|
164
|
-
/**
|
|
165
|
-
* Update settings for an SDK-managed group
|
|
166
|
-
*/
|
|
167
|
-
async updateGroupSettings(groupId, settings) {
|
|
168
|
-
return this.request('PATCH', `/groups/${groupId}/settings`, settings);
|
|
169
|
-
}
|
|
170
|
-
// ========================================================================
|
|
171
|
-
// Typing Indicators
|
|
172
|
-
// ========================================================================
|
|
173
|
-
/**
|
|
174
|
-
* Send a typing indicator for an identity in an SDK group.
|
|
175
|
-
*/
|
|
176
|
-
async sendTypingIndicator(groupId, identityId) {
|
|
177
|
-
await this.request('POST', `/groups/${groupId}/typing`, { identityId });
|
|
178
|
-
}
|
|
179
|
-
// ========================================================================
|
|
180
|
-
// OpenClaw Response
|
|
181
|
-
// ========================================================================
|
|
182
|
-
/**
|
|
183
|
-
* Send an openclaw:response back to the requesting user via Pusher.
|
|
184
|
-
*/
|
|
185
|
-
async sendOpenclawResponse(groupId, opts) {
|
|
186
|
-
return this.request('POST', `/groups/${groupId}/openclaw-response`, opts);
|
|
187
|
-
}
|
|
188
|
-
// ========================================================================
|
|
189
|
-
// Agents
|
|
190
|
-
// ========================================================================
|
|
191
|
-
/**
|
|
192
|
-
* List agents registered for this SDK app
|
|
193
|
-
*/
|
|
194
|
-
async listAgents() {
|
|
195
|
-
return this.request('GET', '/agents');
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Create (register) an agent for this SDK app
|
|
199
|
-
*/
|
|
200
|
-
async createAgent(body) {
|
|
201
|
-
return this.request('POST', '/agents', body);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Update agent fields (name, status, scopes, metadata, capabilities)
|
|
205
|
-
*/
|
|
206
|
-
async updateAgent(agentId, body) {
|
|
207
|
-
await this.request('PATCH', `/agents/${agentId}`, body);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Send a heartbeat for an agent (updates connection_status to 'online')
|
|
211
|
-
*/
|
|
212
|
-
async sendHeartbeat(agentId) {
|
|
213
|
-
await this.request('POST', `/agents/${agentId}/heartbeat`);
|
|
214
|
-
}
|
|
215
|
-
// ========================================================================
|
|
216
|
-
// Agent E2EE Key Enrollment
|
|
217
|
-
// ========================================================================
|
|
218
|
-
/**
|
|
219
|
-
* Request a key enrollment challenge for an agent
|
|
220
|
-
*/
|
|
221
|
-
async requestKeyChallenge(agentId, body) {
|
|
222
|
-
return this.request('POST', `/agents/${agentId}/keys/challenge`, body);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Verify key enrollment signature
|
|
226
|
-
*/
|
|
227
|
-
async verifyKeyChallenge(agentId, body) {
|
|
228
|
-
return this.request('POST', `/agents/${agentId}/keys/verify`, body);
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Get active epoch key for an agent (SDK auth)
|
|
232
|
-
*/
|
|
233
|
-
async getEpochKey(agentId, groupId) {
|
|
234
|
-
return this.request('GET', `/agents/${agentId}/groups/${groupId}/encryption/key`);
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Get epoch keys for message history (SDK auth)
|
|
238
|
-
*/
|
|
239
|
-
async getEpochKeys(agentId, groupId, epochs) {
|
|
240
|
-
const query = epochs?.length ? `?epochs=${epochs.join(',')}` : '';
|
|
241
|
-
return this.request('GET', `/agents/${agentId}/groups/${groupId}/encryption/epochs${query}`);
|
|
242
|
-
}
|
|
243
|
-
// ========================================================================
|
|
244
|
-
// Pusher Auth
|
|
245
|
-
// ========================================================================
|
|
246
|
-
/**
|
|
247
|
-
* Authenticate a Pusher channel subscription for an SDK-owned identity.
|
|
248
|
-
*/
|
|
249
|
-
async pusherAuth(socketId, channelName, identityId) {
|
|
250
|
-
return this.request('POST', '/pusher/auth', {
|
|
251
|
-
socket_id: socketId,
|
|
252
|
-
channel_name: channelName,
|
|
253
|
-
identity_id: identityId,
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
//# sourceMappingURL=api.js.map
|
package/dist/src/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMpC,MAAM,OAAO,eAAe;IAClB,OAAO,CAAS;IAChB,MAAM,CAAS;IAEvB,YAAY,OAAe,EAAE,MAAc;QACzC,wBAAwB;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,UAAU,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAA2B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM;YAC5B,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,SAAc,CAAC;QACxB,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAqB,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,OAAe,EACf,IAcC;QAED,OAAO,IAAI,CAAC,OAAO,CAAgB,MAAM,EAAE,WAAW,OAAO,WAAW,EAAE;YACxE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC5F,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,UAAU,EAAE;YACrD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,cAAuB,EACvB,KAAK,GAAG,EAAE;QAEV,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,OAAO,aAAa,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAKjB;QACC,OAAO,IAAI,CAAC,OAAO,CAAc,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,WAAqB;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,UAAU,EAAE;YACvD,WAAW;YACX,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,WAAqB;QACxD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,UAAU,EAAE;YACvD,WAAW;YACX,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,gBAAyB;QACxC,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAc,KAAK,EAAE,WAAW,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAItB;QAOC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,2EAA2E;IAC3E,sBAAsB;IACtB,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAIpB;QACC,OAAO,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,2EAA2E;IAC3E,wBAAwB;IACxB,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,IASrB;QACC,OAAO,IAAI,CAAC,OAAO,CAAkB,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,2EAA2E;IAC3E,gBAAgB;IAChB,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAe;QASpC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,OAAO,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,2EAA2E;IAC3E,iBAAiB;IACjB,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAe,EACf,QAAsE;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,OAAO,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,2EAA2E;IAC3E,oBAAoB;IACpB,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAAe,EAAE,UAAkB;QAC3D,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,2EAA2E;IAC3E,oBAAoB;IACpB,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACxB,OAAe,EACf,IAKC;QAED,OAAO,IAAI,CAAC,OAAO,CAAuB,MAAM,EAAE,WAAW,OAAO,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAClG,CAAC;IAED,2EAA2E;IAC3E,SAAS;IACT,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAA6D;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAIlC;QACC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,2EAA2E;IAC3E,4BAA4B;IAC5B,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAAe,EAAE,IAI1C;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,IAGzC;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,OAAe;QAMhD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,OAAO,WAAW,OAAO,iBAAiB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,OAAe,EAAE,MAAiB;QASpE,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,OAAO,WAAW,OAAO,qBAAqB,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,2EAA2E;IAC3E,cAAc;IACd,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,WAAmB,EACnB,UAAkB;QAElB,OAAO,IAAI,CAAC,OAAO,CAAmB,MAAM,EAAE,cAAc,EAAE;YAC5D,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,UAAU;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
|