@orbs-network/spot-ui 0.0.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.
Files changed (36) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/package.json.d.ts +46 -0
  3. package/dist/spot-ui.js +2890 -0
  4. package/dist/spot-ui.umd.cjs +64 -0
  5. package/dist/src/index.d.ts +14 -0
  6. package/dist/src/index.d.ts.map +1 -0
  7. package/dist/src/lib/abi/erc20.json.d.ts +291 -0
  8. package/dist/src/lib/abi/executor.json.d.ts +757 -0
  9. package/dist/src/lib/abi/index.d.ts +501 -0
  10. package/dist/src/lib/abi/index.d.ts.map +1 -0
  11. package/dist/src/lib/abi/iweth.json.d.ts +41 -0
  12. package/dist/src/lib/abi/reactor.json.d.ts +647 -0
  13. package/dist/src/lib/abi/repermit.json.d.ts +316 -0
  14. package/dist/src/lib/analytics.d.ts +106 -0
  15. package/dist/src/lib/analytics.d.ts.map +1 -0
  16. package/dist/src/lib/build-repermit-order-data.d.ts +51 -0
  17. package/dist/src/lib/build-repermit-order-data.d.ts.map +1 -0
  18. package/dist/src/lib/consts.d.ts +88 -0
  19. package/dist/src/lib/consts.d.ts.map +1 -0
  20. package/dist/src/lib/lib.d.ts +59 -0
  21. package/dist/src/lib/lib.d.ts.map +1 -0
  22. package/dist/src/lib/networks.d.ts +445 -0
  23. package/dist/src/lib/networks.d.ts.map +1 -0
  24. package/dist/src/lib/orders/index.d.ts +10 -0
  25. package/dist/src/lib/orders/index.d.ts.map +1 -0
  26. package/dist/src/lib/orders/v1-orders.d.ts +48 -0
  27. package/dist/src/lib/orders/v1-orders.d.ts.map +1 -0
  28. package/dist/src/lib/orders/v2-orders.d.ts +8 -0
  29. package/dist/src/lib/orders/v2-orders.d.ts.map +1 -0
  30. package/dist/src/lib/submit-order.d.ts +3 -0
  31. package/dist/src/lib/submit-order.d.ts.map +1 -0
  32. package/dist/src/lib/types.d.ts +267 -0
  33. package/dist/src/lib/types.d.ts.map +1 -0
  34. package/dist/src/lib/utils.d.ts +456 -0
  35. package/dist/src/lib/utils.d.ts.map +1 -0
  36. package/package.json +42 -0
@@ -0,0 +1,445 @@
1
+ export declare const zeroAddress = "0x0000000000000000000000000000000000000000";
2
+ export declare const networks: {
3
+ eth: {
4
+ id: number;
5
+ name: string;
6
+ shortname: string;
7
+ native: {
8
+ address: string;
9
+ symbol: string;
10
+ decimals: number;
11
+ logoUrl: string;
12
+ };
13
+ wToken: {
14
+ symbol: string;
15
+ address: string;
16
+ decimals: number;
17
+ logoUrl: string;
18
+ };
19
+ publicRpcUrl: string;
20
+ logoUrl: string;
21
+ explorer: string;
22
+ eip1559: boolean;
23
+ };
24
+ bsc: {
25
+ id: number;
26
+ name: string;
27
+ shortname: string;
28
+ native: {
29
+ address: string;
30
+ symbol: string;
31
+ decimals: number;
32
+ logoUrl: string;
33
+ };
34
+ wToken: {
35
+ symbol: string;
36
+ address: string;
37
+ decimals: number;
38
+ logoUrl: string;
39
+ };
40
+ publicRpcUrl: string;
41
+ logoUrl: string;
42
+ explorer: string;
43
+ eip1559: boolean;
44
+ };
45
+ poly: {
46
+ id: number;
47
+ name: string;
48
+ shortname: string;
49
+ native: {
50
+ address: string;
51
+ symbol: string;
52
+ decimals: number;
53
+ logoUrl: string;
54
+ };
55
+ wToken: {
56
+ symbol: string;
57
+ address: string;
58
+ decimals: number;
59
+ logoUrl: string;
60
+ };
61
+ publicRpcUrl: string;
62
+ logoUrl: string;
63
+ explorer: string;
64
+ eip1559: boolean;
65
+ };
66
+ arb: {
67
+ id: number;
68
+ name: string;
69
+ shortname: string;
70
+ native: {
71
+ address: string;
72
+ symbol: string;
73
+ decimals: number;
74
+ logoUrl: string;
75
+ };
76
+ wToken: {
77
+ symbol: string;
78
+ address: string;
79
+ decimals: number;
80
+ logoUrl: string;
81
+ };
82
+ publicRpcUrl: string;
83
+ logoUrl: string;
84
+ explorer: string;
85
+ eip1559: boolean;
86
+ };
87
+ sei: {
88
+ id: number;
89
+ name: string;
90
+ shortname: string;
91
+ native: {
92
+ address: string;
93
+ symbol: string;
94
+ decimals: number;
95
+ logoUrl: string;
96
+ };
97
+ wToken: {
98
+ symbol: string;
99
+ address: string;
100
+ decimals: number;
101
+ logoUrl: string;
102
+ };
103
+ publicRpcUrl: string;
104
+ logoUrl: string;
105
+ explorer: string;
106
+ eip1559: boolean;
107
+ };
108
+ avax: {
109
+ id: number;
110
+ name: string;
111
+ shortname: string;
112
+ native: {
113
+ address: string;
114
+ symbol: string;
115
+ decimals: number;
116
+ logoUrl: string;
117
+ };
118
+ wToken: {
119
+ symbol: string;
120
+ address: string;
121
+ decimals: number;
122
+ logoUrl: string;
123
+ };
124
+ publicRpcUrl: string;
125
+ logoUrl: string;
126
+ explorer: string;
127
+ eip1559: boolean;
128
+ };
129
+ ftm: {
130
+ id: number;
131
+ name: string;
132
+ shortname: string;
133
+ native: {
134
+ address: string;
135
+ symbol: string;
136
+ decimals: number;
137
+ logoUrl: string;
138
+ };
139
+ wToken: {
140
+ symbol: string;
141
+ address: string;
142
+ decimals: number;
143
+ logoUrl: string;
144
+ };
145
+ publicRpcUrl: string;
146
+ logoUrl: string;
147
+ explorer: string;
148
+ eip1559: boolean;
149
+ };
150
+ base: {
151
+ id: number;
152
+ name: string;
153
+ shortname: string;
154
+ native: {
155
+ address: string;
156
+ symbol: string;
157
+ decimals: number;
158
+ logoUrl: string;
159
+ };
160
+ wToken: {
161
+ symbol: string;
162
+ address: string;
163
+ decimals: number;
164
+ logoUrl: string;
165
+ };
166
+ publicRpcUrl: string;
167
+ logoUrl: string;
168
+ explorer: string;
169
+ eip1559: boolean;
170
+ };
171
+ linea: {
172
+ id: number;
173
+ name: string;
174
+ shortname: string;
175
+ native: {
176
+ address: string;
177
+ symbol: string;
178
+ decimals: number;
179
+ logoUrl: string;
180
+ };
181
+ wToken: {
182
+ symbol: string;
183
+ address: string;
184
+ decimals: number;
185
+ logoUrl: string;
186
+ };
187
+ publicRpcUrl: string;
188
+ logoUrl: string;
189
+ explorer: string;
190
+ eip1559: boolean;
191
+ };
192
+ zksync: {
193
+ id: number;
194
+ name: string;
195
+ shortname: string;
196
+ native: {
197
+ address: string;
198
+ symbol: string;
199
+ decimals: number;
200
+ logoUrl: string;
201
+ };
202
+ wToken: {
203
+ symbol: string;
204
+ address: string;
205
+ decimals: number;
206
+ logoUrl: string;
207
+ };
208
+ publicRpcUrl: string;
209
+ logoUrl: string;
210
+ explorer: string;
211
+ eip1559: boolean;
212
+ };
213
+ zkevm: {
214
+ id: number;
215
+ name: string;
216
+ shortname: string;
217
+ native: {
218
+ address: string;
219
+ symbol: string;
220
+ decimals: number;
221
+ logoUrl: string;
222
+ };
223
+ wToken: {
224
+ symbol: string;
225
+ address: string;
226
+ decimals: number;
227
+ logoUrl: string;
228
+ };
229
+ publicRpcUrl: string;
230
+ logoUrl: string;
231
+ explorer: string;
232
+ eip1559: boolean;
233
+ };
234
+ manta: {
235
+ id: number;
236
+ name: string;
237
+ shortname: string;
238
+ native: {
239
+ address: string;
240
+ symbol: string;
241
+ decimals: number;
242
+ logoUrl: string;
243
+ };
244
+ wToken: {
245
+ symbol: string;
246
+ address: string;
247
+ decimals: number;
248
+ logoUrl: string;
249
+ };
250
+ publicRpcUrl: string;
251
+ logoUrl: string;
252
+ explorer: string;
253
+ eip1559: boolean;
254
+ };
255
+ blast: {
256
+ id: number;
257
+ name: string;
258
+ shortname: string;
259
+ native: {
260
+ address: string;
261
+ symbol: string;
262
+ decimals: number;
263
+ logoUrl: string;
264
+ };
265
+ wToken: {
266
+ symbol: string;
267
+ address: string;
268
+ decimals: number;
269
+ logoUrl: string;
270
+ };
271
+ publicRpcUrl: string;
272
+ logoUrl: string;
273
+ explorer: string;
274
+ eip1559: boolean;
275
+ };
276
+ sonic: {
277
+ id: number;
278
+ name: string;
279
+ shortname: string;
280
+ native: {
281
+ address: string;
282
+ symbol: string;
283
+ decimals: number;
284
+ logoUrl: string;
285
+ };
286
+ wToken: {
287
+ symbol: string;
288
+ address: string;
289
+ decimals: number;
290
+ logoUrl: string;
291
+ };
292
+ publicRpcUrl: string;
293
+ logoUrl: string;
294
+ explorer: string;
295
+ eip1559: boolean;
296
+ };
297
+ scroll: {
298
+ id: number;
299
+ name: string;
300
+ shortname: string;
301
+ native: {
302
+ address: string;
303
+ symbol: string;
304
+ decimals: number;
305
+ logoUrl: string;
306
+ };
307
+ wToken: {
308
+ symbol: string;
309
+ address: string;
310
+ decimals: number;
311
+ logoUrl: string;
312
+ };
313
+ publicRpcUrl: string;
314
+ logoUrl: string;
315
+ explorer: string;
316
+ eip1559: boolean;
317
+ };
318
+ zircuit: {
319
+ id: number;
320
+ name: string;
321
+ shortname: string;
322
+ native: {
323
+ address: string;
324
+ symbol: string;
325
+ decimals: number;
326
+ logoUrl: string;
327
+ };
328
+ wToken: {
329
+ symbol: string;
330
+ address: string;
331
+ decimals: number;
332
+ logoUrl: string;
333
+ };
334
+ publicRpcUrl: string;
335
+ logoUrl: string;
336
+ explorer: string;
337
+ eip1559: boolean;
338
+ };
339
+ flare: {
340
+ id: number;
341
+ name: string;
342
+ shortname: string;
343
+ native: {
344
+ address: string;
345
+ symbol: string;
346
+ decimals: number;
347
+ logoUrl: string;
348
+ };
349
+ wToken: {
350
+ symbol: string;
351
+ address: string;
352
+ decimals: number;
353
+ logoUrl: string;
354
+ };
355
+ publicRpcUrl: string;
356
+ logoUrl: string;
357
+ explorer: string;
358
+ eip1559: boolean;
359
+ };
360
+ cronosZkEvm: {
361
+ id: number;
362
+ name: string;
363
+ shortname: string;
364
+ native: {
365
+ address: string;
366
+ symbol: string;
367
+ decimals: number;
368
+ logoUrl: string;
369
+ };
370
+ wToken: {
371
+ symbol: string;
372
+ address: string;
373
+ decimals: number;
374
+ logoUrl: string;
375
+ };
376
+ publicRpcUrl: string;
377
+ logoUrl: string;
378
+ explorer: string;
379
+ eip1559: boolean;
380
+ };
381
+ katana: {
382
+ id: number;
383
+ name: string;
384
+ shortname: string;
385
+ native: {
386
+ address: string;
387
+ symbol: string;
388
+ decimals: number;
389
+ logoUrl: string;
390
+ };
391
+ wToken: {
392
+ symbol: string;
393
+ address: string;
394
+ decimals: number;
395
+ logoUrl: string;
396
+ };
397
+ publicRpcUrl: string;
398
+ logoUrl: string;
399
+ explorer: string;
400
+ eip1559: boolean;
401
+ };
402
+ bera: {
403
+ id: number;
404
+ name: string;
405
+ shortname: string;
406
+ native: {
407
+ address: string;
408
+ symbol: string;
409
+ decimals: number;
410
+ logoUrl: string;
411
+ };
412
+ wToken: {
413
+ symbol: string;
414
+ address: string;
415
+ decimals: number;
416
+ logoUrl: string;
417
+ };
418
+ publicRpcUrl: string;
419
+ logoUrl: string;
420
+ explorer: string;
421
+ eip1559: boolean;
422
+ };
423
+ monad: {
424
+ id: number;
425
+ name: string;
426
+ shortname: string;
427
+ native: {
428
+ address: string;
429
+ symbol: string;
430
+ decimals: number;
431
+ logoUrl: string;
432
+ };
433
+ wToken: {
434
+ symbol: string;
435
+ address: string;
436
+ decimals: number;
437
+ logoUrl: string;
438
+ };
439
+ publicRpcUrl: string;
440
+ logoUrl: string;
441
+ explorer: string;
442
+ eip1559: boolean;
443
+ };
444
+ };
445
+ //# sourceMappingURL=networks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../../src/lib/networks.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,+CAA+C,CAAC;AAExE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2bpB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Config, Order } from '../types';
2
+ export declare const getAccountOrders: ({ signal, page, chainId, limit, config, account, }: {
3
+ signal?: AbortSignal;
4
+ page?: number;
5
+ limit?: number;
6
+ chainId: number;
7
+ config?: Config;
8
+ account: string;
9
+ }) => Promise<Order[]>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/orders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,eAAO,MAAM,gBAAgB,GAAU,oDAOpC;IACD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,KAAK,EAAE,CASlB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { Config, OrderV1, Order } from '../types';
2
+ type RawStatus = "CANCELED" | "COMPLETED" | null;
3
+ export declare function getCreatedOrders({ chainId, signal, page, limit: _limit, filters, }: {
4
+ chainId: number;
5
+ signal?: AbortSignal;
6
+ exchanges?: string[];
7
+ page?: number;
8
+ limit?: number;
9
+ filters?: GetOrdersFilters;
10
+ }): Promise<OrderV1[]>;
11
+ type GraphStatus = {
12
+ twapId: string;
13
+ twapAddress: string;
14
+ status: RawStatus;
15
+ };
16
+ export declare const getStatuses: ({ chainId, orders, signal }: {
17
+ chainId: number;
18
+ orders: OrderV1[];
19
+ signal?: AbortSignal;
20
+ }) => Promise<GraphStatus[]>;
21
+ export declare function uniq<T>(array: T[]): T[];
22
+ export declare class NoGraphEndpointError extends Error {
23
+ constructor();
24
+ }
25
+ export type GetOrdersFilters = {
26
+ transactionHashes?: string[];
27
+ orderIds?: number[];
28
+ accounts?: string[];
29
+ configs?: Config[];
30
+ inTokenSymbols?: string[];
31
+ outTokenSymbols?: string[];
32
+ inTokenAddresses?: string[];
33
+ outTokenAddresses?: string[];
34
+ minDollarValueIn?: number;
35
+ startDate?: number;
36
+ endDate?: number;
37
+ orderType?: "limit" | "market";
38
+ };
39
+ export declare const getOrders: ({ chainId, signal, page, limit, filters, }: {
40
+ chainId: number;
41
+ signal?: AbortSignal;
42
+ page?: number;
43
+ limit?: number;
44
+ filters?: GetOrdersFilters;
45
+ }) => Promise<Order[]>;
46
+ export declare const getV1OrderProgress: (srcAmount: string, filledSrcAmount: string) => number;
47
+ export {};
48
+ //# sourceMappingURL=v1-orders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1-orders.d.ts","sourceRoot":"","sources":["../../../../src/lib/orders/v1-orders.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAuC,OAAO,EAAY,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjG,KAAK,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAuOjD,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EAAE,MAAM,EACb,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAiDrB;AAED,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,6BAA6B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAAG,OAAO,CAAC,WAAW,EAAE,CAgClJ,CAAC;AAEF,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC;AA8CD,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,4CAM7B;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,KAAG,OAAO,CAAC,KAAK,EAAE,CAWlB,CAAC;AASF,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,EAAE,iBAAiB,MAAM,WAQ5E,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { OrderV2, Order } from '../types';
2
+ export declare const buildV2Order: (order: OrderV2) => Order;
3
+ export declare const getOrders: ({ chainId, signal, account }: {
4
+ chainId: number;
5
+ signal?: AbortSignal;
6
+ account?: string;
7
+ }) => Promise<Order[]>;
8
+ //# sourceMappingURL=v2-orders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-orders.d.ts","sourceRoot":"","sources":["../../../../src/lib/orders/v2-orders.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAmDlE,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,KAqC7C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,8BAA8B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,KAAK,EAAE,CAS1I,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Order, RePermitOrder, Signature } from './types';
2
+ export declare const submitOrder: (order: RePermitOrder, signature: Signature) => Promise<Order>;
3
+ //# sourceMappingURL=submit-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-order.d.ts","sourceRoot":"","sources":["../../../src/lib/submit-order.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,WAAW,GAAU,OAAO,aAAa,EAAE,WAAW,SAAS,KAAG,OAAO,CAAC,KAAK,CA2B3F,CAAC"}