@flexemarkets/fm-sdk 0.0.2 → 0.0.3
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/dist/client.d.ts +47 -1
- package/dist/client.js +144 -7
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/market-view.d.ts +195 -0
- package/dist/market-view.js +440 -0
- package/dist/market-view.js.map +1 -0
- package/dist/orderbook.d.ts +9 -0
- package/dist/orderbook.js +16 -0
- package/dist/orderbook.js.map +1 -1
- package/dist/snapshot.d.ts +18 -0
- package/dist/snapshot.js +2 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/stomp.d.ts +18 -1
- package/dist/stomp.js +44 -3
- package/dist/stomp.js.map +1 -1
- package/dist/ticker.js +5 -5
- package/dist/ticker.js.map +1 -1
- package/dist/trades.d.ts +4 -0
- package/dist/trades.js +9 -0
- package/dist/trades.js.map +1 -1
- package/package.json +2 -1
package/dist/client.d.ts
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Port of fm.client (Python) / fm.Flexemarkets (Java).
|
|
5
5
|
*/
|
|
6
6
|
import type { Account, ClientConnection, Holding, Market, Marketplace, Order, Person, Session } from "./types.js";
|
|
7
|
-
import { type EventCallback } from "./stomp.js";
|
|
7
|
+
import { EventListener, type EventCallback } from "./stomp.js";
|
|
8
|
+
import { type MarketView } from "./market-view.js";
|
|
9
|
+
import type { Snapshot } from "./snapshot.js";
|
|
8
10
|
export declare class FlexemarketsError extends Error {
|
|
9
11
|
}
|
|
10
12
|
export declare class AuthenticationError extends FlexemarketsError {
|
|
@@ -46,6 +48,13 @@ export declare class Flexemarkets {
|
|
|
46
48
|
get endpointMarketplaceId(): number;
|
|
47
49
|
private _authHeaders;
|
|
48
50
|
private _get;
|
|
51
|
+
/**
|
|
52
|
+
* GET helper that returns the parsed body bundled with the
|
|
53
|
+
* `x-fm-as-of-seq` response header so callers (notably MarketView)
|
|
54
|
+
* can correlate the snapshot with the WS delta stream. Returns
|
|
55
|
+
* `Snapshot.NO_SEQ` when the header is absent.
|
|
56
|
+
*/
|
|
57
|
+
private _getSnapshot;
|
|
49
58
|
private _post;
|
|
50
59
|
private _fetchApiRoot;
|
|
51
60
|
marketplaces(): Promise<Marketplace[]>;
|
|
@@ -56,6 +65,20 @@ export declare class Flexemarkets {
|
|
|
56
65
|
session(marketplaceId: number): Promise<Session>;
|
|
57
66
|
submitLimit(marketplaceId: number, marketId: number, side: string, units: number, price: number): Promise<Order>;
|
|
58
67
|
submitCancel(marketplaceId: number, marketId: number, originalId: number): Promise<Order>;
|
|
68
|
+
/**
|
|
69
|
+
* V1 active-orders snapshot: every resting limit order on the
|
|
70
|
+
* marketplace's current session, plus the `x-fm-as-of-seq` sequence
|
|
71
|
+
* the snapshot was read at. Used by `MarketView` Phase 2a seeding
|
|
72
|
+
* — clients apply WS deltas whose seq is greater than the returned
|
|
73
|
+
* value and skip those whose seq is less than or equal.
|
|
74
|
+
*/
|
|
75
|
+
activeOrdersV1(marketplaceId: number): Promise<Snapshot<Order[]>>;
|
|
76
|
+
/**
|
|
77
|
+
* V1 recent-trades snapshot for seeding the trade-history tape.
|
|
78
|
+
* Same `x-fm-as-of-seq` contract as `activeOrdersV1`. Server caps
|
|
79
|
+
* at 5000; default size is 1000.
|
|
80
|
+
*/
|
|
81
|
+
recentTradesV1(marketplaceId: number, size?: number): Promise<Snapshot<Order[]>>;
|
|
59
82
|
orders(marketplaceId: number, options?: {
|
|
60
83
|
symbol?: string;
|
|
61
84
|
sessionIds?: number[];
|
|
@@ -64,8 +87,31 @@ export declare class Flexemarkets {
|
|
|
64
87
|
holdings(marketplaceId: number, sessionIds?: number[] | null): Promise<Holding[]>;
|
|
65
88
|
holding(marketplaceId: number): Promise<Holding>;
|
|
66
89
|
connections(marketplaceId: number, sessionIds?: number[] | null): Promise<ClientConnection[]>;
|
|
90
|
+
private readonly _sharedViews;
|
|
91
|
+
private readonly _sharedViewPromises;
|
|
92
|
+
/**
|
|
93
|
+
* Open a stateful MarketView on this marketplace. Multiple calls
|
|
94
|
+
* for the same marketplaceId share a single underlying view + WS
|
|
95
|
+
* subscription + materialized state within this Flexemarkets
|
|
96
|
+
* instance — each call returns a fresh handle, the handles
|
|
97
|
+
* refcount, and the shared resources tear down on the last close.
|
|
98
|
+
*
|
|
99
|
+
* Sharing is intentionally per-Flexemarkets (i.e. per-bearer). Two
|
|
100
|
+
* callers with different identities each get their own view —
|
|
101
|
+
* multi-tenant WS multiplexing is a server-side concern, not a
|
|
102
|
+
* client-side one.
|
|
103
|
+
*/
|
|
104
|
+
observe(marketplaceId: number): Promise<MarketView>;
|
|
105
|
+
_releaseSharedView(marketplaceId: number): void;
|
|
67
106
|
/** Start receiving real-time events via WebSocket STOMP. */
|
|
68
107
|
listen(marketplaceId: number, callback: EventCallback): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Package-private helper used by {@link DefaultMarketView} (Phase 2d)
|
|
110
|
+
* to own its own EventListener subscription rather than clobbering
|
|
111
|
+
* the singleton {@link #_eventListener}. Lets multiple
|
|
112
|
+
* observe(marketplaceId) calls coexist within one Flexemarkets.
|
|
113
|
+
*/
|
|
114
|
+
_connectEvents(marketplaceId: number, callback: EventCallback): Promise<EventListener>;
|
|
69
115
|
/** Reconnect the WebSocket after a transport error. */
|
|
70
116
|
reconnect(): Promise<void>;
|
|
71
117
|
close(): void;
|
package/dist/client.js
CHANGED
|
@@ -7,7 +7,8 @@ import { readFileSync, existsSync } from "node:fs";
|
|
|
7
7
|
import { homedir } from "node:os";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
|
-
import { EventListener } from "./stomp.js";
|
|
10
|
+
import { EventListener, NO_SEQ } from "./stomp.js";
|
|
11
|
+
import { DefaultMarketView, MarketViewHandle } from "./market-view.js";
|
|
11
12
|
function readVersion() {
|
|
12
13
|
try {
|
|
13
14
|
const dir = fileURLToPath(new URL(".", import.meta.url));
|
|
@@ -18,7 +19,7 @@ function readVersion() {
|
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
const FM_NETWORK_CLIENT = `fm-sdk-typescript/${readVersion()}`;
|
|
21
|
-
const DEFAULT_ENDPOINT = "https://
|
|
22
|
+
const DEFAULT_ENDPOINT = "https://api.flexemarkets.com";
|
|
22
23
|
const BCRYPT_RE = /^\$2[abxy]?\$\d{2}\$[./A-Za-z0-9]{53}$/;
|
|
23
24
|
const JWT_RE = /^[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+$/;
|
|
24
25
|
// ---------------------------------------------------------------------------
|
|
@@ -156,7 +157,7 @@ export function parseHolding(data) {
|
|
|
156
157
|
function parseConnection(data) {
|
|
157
158
|
return {
|
|
158
159
|
marketplaceId: data.marketplaceId ?? 0,
|
|
159
|
-
connectionId: data.connectionId ?? 0,
|
|
160
|
+
connectionId: data.id ?? data.connectionId ?? 0,
|
|
160
161
|
ownerId: data.ownerId ?? 0,
|
|
161
162
|
established: data.established ?? null,
|
|
162
163
|
terminated: data.terminated ?? null,
|
|
@@ -215,7 +216,15 @@ function isValidToken(value) {
|
|
|
215
216
|
return BCRYPT_RE.test(value) || JWT_RE.test(value);
|
|
216
217
|
}
|
|
217
218
|
function server(endpoint) {
|
|
218
|
-
|
|
219
|
+
// Locate "/api" in the path, not in the scheme/host. A host like
|
|
220
|
+
// "https://api.flexemarkets.com" otherwise matches at the "//api" of the
|
|
221
|
+
// host and truncates the base URL to "https://api" (unresolvable). Skip
|
|
222
|
+
// past the scheme + host before searching for the "/api" path segment.
|
|
223
|
+
const scheme = endpoint.indexOf("://");
|
|
224
|
+
const pathStart = scheme >= 0 ? endpoint.indexOf("/", scheme + 3) : 0;
|
|
225
|
+
if (pathStart < 0)
|
|
226
|
+
return endpoint;
|
|
227
|
+
const idx = endpoint.indexOf("/api", pathStart);
|
|
219
228
|
return idx < 0 ? endpoint : endpoint.substring(0, idx + 4);
|
|
220
229
|
}
|
|
221
230
|
function resourceId(endpoint) {
|
|
@@ -361,6 +370,26 @@ export class Flexemarkets {
|
|
|
361
370
|
checkResponse(resp, body);
|
|
362
371
|
return JSON.parse(body);
|
|
363
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* GET helper that returns the parsed body bundled with the
|
|
375
|
+
* `x-fm-as-of-seq` response header so callers (notably MarketView)
|
|
376
|
+
* can correlate the snapshot with the WS delta stream. Returns
|
|
377
|
+
* `Snapshot.NO_SEQ` when the header is absent.
|
|
378
|
+
*/
|
|
379
|
+
async _getSnapshot(url) {
|
|
380
|
+
const resp = await fetch(url.startsWith("/") ? `${this._baseUrl}${url}` : url, {
|
|
381
|
+
headers: {
|
|
382
|
+
...this._authHeaders(),
|
|
383
|
+
Accept: "application/json, application/hal+json",
|
|
384
|
+
"User-Agent": FM_NETWORK_CLIENT,
|
|
385
|
+
},
|
|
386
|
+
});
|
|
387
|
+
const body = await resp.text();
|
|
388
|
+
checkResponse(resp, body);
|
|
389
|
+
const raw = resp.headers.get("x-fm-as-of-seq");
|
|
390
|
+
const asOfSeq = raw === null ? NO_SEQ : Number.parseInt(raw, 10);
|
|
391
|
+
return { data: JSON.parse(body), asOfSeq: Number.isFinite(asOfSeq) ? asOfSeq : NO_SEQ };
|
|
392
|
+
}
|
|
364
393
|
async _post(url, json) {
|
|
365
394
|
const resp = await fetch(url.startsWith("/") ? `${this._baseUrl}${url}` : url, {
|
|
366
395
|
method: "POST",
|
|
@@ -446,6 +475,31 @@ export class Flexemarkets {
|
|
|
446
475
|
});
|
|
447
476
|
return parseOrder(data);
|
|
448
477
|
}
|
|
478
|
+
/**
|
|
479
|
+
* V1 active-orders snapshot: every resting limit order on the
|
|
480
|
+
* marketplace's current session, plus the `x-fm-as-of-seq` sequence
|
|
481
|
+
* the snapshot was read at. Used by `MarketView` Phase 2a seeding
|
|
482
|
+
* — clients apply WS deltas whose seq is greater than the returned
|
|
483
|
+
* value and skip those whose seq is less than or equal.
|
|
484
|
+
*/
|
|
485
|
+
async activeOrdersV1(marketplaceId) {
|
|
486
|
+
const baseRest = this._baseUrl;
|
|
487
|
+
const url = `${baseRest}/v1/marketplaces/${marketplaceId}/orders/active`;
|
|
488
|
+
const { data, asOfSeq } = await this._getSnapshot(url);
|
|
489
|
+
const orders = (data._embedded?.orderDtoes ?? []).map(parseOrder);
|
|
490
|
+
return { body: orders, asOfSeq };
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* V1 recent-trades snapshot for seeding the trade-history tape.
|
|
494
|
+
* Same `x-fm-as-of-seq` contract as `activeOrdersV1`. Server caps
|
|
495
|
+
* at 5000; default size is 1000.
|
|
496
|
+
*/
|
|
497
|
+
async recentTradesV1(marketplaceId, size = 1000) {
|
|
498
|
+
const url = `${this._baseUrl}/v1/marketplaces/${marketplaceId}/orders/recent-trades?size=${size}`;
|
|
499
|
+
const { data, asOfSeq } = await this._getSnapshot(url);
|
|
500
|
+
const orders = (data._embedded?.orderDtoes ?? []).map(parseOrder);
|
|
501
|
+
return { body: orders, asOfSeq };
|
|
502
|
+
}
|
|
449
503
|
async orders(marketplaceId, options) {
|
|
450
504
|
if (options?.symbol != null) {
|
|
451
505
|
const url = uriParamMarketplaceIdParam(this._apiRoot, "symbolOrdersJson", marketplaceId, `symbol=${options.symbol}`);
|
|
@@ -490,18 +544,92 @@ export class Flexemarkets {
|
|
|
490
544
|
}
|
|
491
545
|
// -- connections -----------------------------------------------------------
|
|
492
546
|
async connections(marketplaceId, sessionIds) {
|
|
493
|
-
|
|
547
|
+
// Canonical path is /marketplaces/{id}/connections ("/agents" is the
|
|
548
|
+
// retained pre-FM-4 alias); format=application/json yields a plain list
|
|
549
|
+
// (vs the HAL _embedded form).
|
|
550
|
+
const sid = sessionIdsParam(sessionIds ?? null);
|
|
551
|
+
const param = sid ? `${sid}&format=application/json` : "format=application/json";
|
|
552
|
+
const url = uriIdSegmentParam(this._apiRoot, "marketplaces", marketplaceId, "connections", param);
|
|
494
553
|
const data = await this._get(url);
|
|
495
554
|
return data.map(parseConnection);
|
|
496
555
|
}
|
|
497
556
|
// -- events / WebSocket ----------------------------------------------------
|
|
557
|
+
_sharedViews = new Map();
|
|
558
|
+
_sharedViewPromises = new Map();
|
|
559
|
+
/**
|
|
560
|
+
* Open a stateful MarketView on this marketplace. Multiple calls
|
|
561
|
+
* for the same marketplaceId share a single underlying view + WS
|
|
562
|
+
* subscription + materialized state within this Flexemarkets
|
|
563
|
+
* instance — each call returns a fresh handle, the handles
|
|
564
|
+
* refcount, and the shared resources tear down on the last close.
|
|
565
|
+
*
|
|
566
|
+
* Sharing is intentionally per-Flexemarkets (i.e. per-bearer). Two
|
|
567
|
+
* callers with different identities each get their own view —
|
|
568
|
+
* multi-tenant WS multiplexing is a server-side concern, not a
|
|
569
|
+
* client-side one.
|
|
570
|
+
*/
|
|
571
|
+
async observe(marketplaceId) {
|
|
572
|
+
const existing = this._sharedViews.get(marketplaceId);
|
|
573
|
+
if (existing !== undefined) {
|
|
574
|
+
existing.refCount++;
|
|
575
|
+
return new MarketViewHandle(existing.view, () => this._releaseSharedView(marketplaceId));
|
|
576
|
+
}
|
|
577
|
+
// Two concurrent observe() calls for the same marketplaceId need
|
|
578
|
+
// to dedupe — JS is single-threaded but awaits introduce
|
|
579
|
+
// interleaving. Cache the in-flight Promise so the second caller
|
|
580
|
+
// awaits the first's construction instead of racing a duplicate
|
|
581
|
+
// WS subscription into existence.
|
|
582
|
+
let p = this._sharedViewPromises.get(marketplaceId);
|
|
583
|
+
if (p === undefined) {
|
|
584
|
+
p = DefaultMarketView.open(this, marketplaceId);
|
|
585
|
+
this._sharedViewPromises.set(marketplaceId, p);
|
|
586
|
+
}
|
|
587
|
+
let shared;
|
|
588
|
+
try {
|
|
589
|
+
shared = await p;
|
|
590
|
+
}
|
|
591
|
+
finally {
|
|
592
|
+
this._sharedViewPromises.delete(marketplaceId);
|
|
593
|
+
}
|
|
594
|
+
// Another observer may have arrived during the await and registered
|
|
595
|
+
// first. Re-check; if so, throw away our just-built view and use
|
|
596
|
+
// theirs.
|
|
597
|
+
const registered = this._sharedViews.get(marketplaceId);
|
|
598
|
+
if (registered !== undefined) {
|
|
599
|
+
if (registered.view !== shared)
|
|
600
|
+
shared.close();
|
|
601
|
+
registered.refCount++;
|
|
602
|
+
return new MarketViewHandle(registered.view, () => this._releaseSharedView(marketplaceId));
|
|
603
|
+
}
|
|
604
|
+
this._sharedViews.set(marketplaceId, { view: shared, refCount: 1 });
|
|
605
|
+
return new MarketViewHandle(shared, () => this._releaseSharedView(marketplaceId));
|
|
606
|
+
}
|
|
607
|
+
_releaseSharedView(marketplaceId) {
|
|
608
|
+
const entry = this._sharedViews.get(marketplaceId);
|
|
609
|
+
if (entry === undefined)
|
|
610
|
+
return;
|
|
611
|
+
if (--entry.refCount <= 0) {
|
|
612
|
+
this._sharedViews.delete(marketplaceId);
|
|
613
|
+
entry.view.close();
|
|
614
|
+
}
|
|
615
|
+
}
|
|
498
616
|
/** Start receiving real-time events via WebSocket STOMP. */
|
|
499
617
|
async listen(marketplaceId, callback) {
|
|
618
|
+
this._eventListener = await this._connectEvents(marketplaceId, callback);
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* Package-private helper used by {@link DefaultMarketView} (Phase 2d)
|
|
622
|
+
* to own its own EventListener subscription rather than clobbering
|
|
623
|
+
* the singleton {@link #_eventListener}. Lets multiple
|
|
624
|
+
* observe(marketplaceId) calls coexist within one Flexemarkets.
|
|
625
|
+
*/
|
|
626
|
+
async _connectEvents(marketplaceId, callback) {
|
|
500
627
|
const wsUrl = server(this._endpoint)
|
|
501
628
|
.replace("https://", "wss://")
|
|
502
629
|
.replace("http://", "ws://") + "/events";
|
|
503
|
-
|
|
504
|
-
await
|
|
630
|
+
const events = new EventListener(wsUrl, this._bearerToken, marketplaceId, callback, this._clientDescription, parseHolding, parseOrder);
|
|
631
|
+
await events.start();
|
|
632
|
+
return events;
|
|
505
633
|
}
|
|
506
634
|
/** Reconnect the WebSocket after a transport error. */
|
|
507
635
|
async reconnect() {
|
|
@@ -515,6 +643,15 @@ export class Flexemarkets {
|
|
|
515
643
|
this._eventListener.close();
|
|
516
644
|
this._eventListener = null;
|
|
517
645
|
}
|
|
646
|
+
// Force-close any remaining shared MarketViews — safety net for
|
|
647
|
+
// callers who didn't close their handles first.
|
|
648
|
+
for (const entry of this._sharedViews.values()) {
|
|
649
|
+
try {
|
|
650
|
+
entry.view.close();
|
|
651
|
+
}
|
|
652
|
+
catch { /* best-effort */ }
|
|
653
|
+
}
|
|
654
|
+
this._sharedViews.clear();
|
|
518
655
|
}
|
|
519
656
|
}
|
|
520
657
|
// ---------------------------------------------------------------------------
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAczC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAsB,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AAGxF,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,qBAAqB,WAAW,EAAE,EAAE,CAAC;AAC/D,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAExD,MAAM,SAAS,GAAG,wCAAwC,CAAC;AAC3D,MAAM,MAAM,GAAG,qDAAqD,CAAC;AAErE,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAC/C,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;CAAG;AAC7D,MAAM,OAAO,kBAAmB,SAAQ,iBAAiB;CAAG;AAC5D,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;CAAG;AAC9D,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;CAAG;AAC/D,MAAM,OAAO,kBAAmB,SAAQ,iBAAiB;CAAG;AAQ5D,SAAS,WAAW,CAAC,IAAmC;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO;QACL,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,CAAC;QAC5B,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,CAAC;QAC1C,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,IAAI;QAC7C,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,IAAI;QAC3C,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,IAAI;QACrC,KAAK,EAAG,IAAI,CAAC,KAAkB,IAAI,EAAE;QACrC,YAAY,EAAG,IAAI,CAAC,YAAwB,IAAI,KAAK;QACrD,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,gBAAgB,EAAG,IAAI,CAAC,gBAA2B,IAAI,IAAI;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAmC;IACvD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO;QACL,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,IAAI;QAC/B,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAmB,CAAC;QAC5C,QAAQ,EAAG,IAAI,CAAC,QAAoB,IAAI,KAAK;QAC7C,mBAAmB,EAAG,IAAI,CAAC,mBAA8B,IAAI,IAAI;QACjE,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,gBAAgB,EAAG,IAAI,CAAC,gBAA2B,IAAI,IAAI;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB;IAClC,OAAO;QACL,UAAU,EAAG,IAAI,CAAC,UAAqB,IAAI,IAAI;QAC/C,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAoB,CAAC;QAC9C,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAqB,CAAC;QACjD,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,IAAI;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAgB;IACrC,OAAO;QACL,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,CAAC;QACxC,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,CAAC;QAClC,cAAc,EAAG,IAAI,CAAC,cAAyB,IAAI,CAAC;QACpD,MAAM,EAAG,IAAI,CAAC,MAAkB,IAAI,KAAK;QACzC,OAAO,EAAG,IAAI,CAAC,OAAmB,IAAI,KAAK;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB;IACnC,OAAO;QACL,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,CAAC;QAC5B,aAAa,EAAG,IAAI,CAAC,aAAwB,IAAI,CAAC;QAClD,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,MAAM,EAAG,IAAI,CAAC,MAAiB,IAAI,IAAI;QACvC,aAAa,EAAG,IAAI,CAAC,aAAyB,IAAI,KAAK;QACvD,YAAY,EAAG,IAAI,CAAC,YAAuB,IAAI,CAAC;QAChD,YAAY,EAAG,IAAI,CAAC,YAAuB,IAAI,CAAC;QAChD,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,CAAC;QAC1C,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,CAAC;QAC9C,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,CAAC;QAC9C,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB;IACxC,OAAO;QACL,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,CAAC;QAC5B,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,OAAO,EAAE,CAAE,IAAI,CAAC,OAAwB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,OAAO;QACL,aAAa,EAAG,IAAI,CAAC,aAAwB,IAAI,CAAC;QAClD,YAAY,EAAG,IAAI,CAAC,YAAuB,IAAI,CAAC;QAChD,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,CAAC;QAC5B,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,CAAC;QACxC,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,IAAI;QACrC,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,IAAI;QAC3C,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,IAAI;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,OAAO;QACL,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,CAAC;QAC5B,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,CAAC;QACxC,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,CAAC;QACxC,QAAQ,EAAG,IAAI,CAAC,QAA0B,IAAI,IAAI;QAClD,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,CAAC;QAClC,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,CAAC;QAClC,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,IAAI;QACzC,aAAa,EAAG,IAAI,CAAC,aAAwB,IAAI,CAAC;QAClD,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,CAAC;QAC1C,MAAM,EAAG,IAAI,CAAC,MAAiB,IAAI,IAAI;QACvC,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,CAAC;QACxC,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,iBAAiB,EAAG,IAAI,CAAC,iBAA4B,IAAI,IAAI;QAC7D,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,gBAAgB,EAAG,IAAI,CAAC,gBAA2B,IAAI,IAAI;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,MAAM,aAAa,GAChB,IAAI,CAAC,UAA2B,IAAK,IAAI,CAAC,MAAuB,IAAI,EAAE,CAAC;IAC3E,OAAO;QACL,aAAa,EAAG,IAAI,CAAC,aAAwB,IAAI,CAAC;QAClD,SAAS,EAAG,IAAI,CAAC,SAAoB,IAAI,CAAC;QAC1C,YAAY,EAAG,IAAI,CAAC,YAAuB,IAAI,CAAC;QAChD,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,CAAC;QACtC,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,IAAI;QACnC,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,CAAC;QAChC,aAAa,EAAG,IAAI,CAAC,aAAwB,IAAI,CAAC;QAClD,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAgB;IACvC,OAAO;QACL,aAAa,EAAG,IAAI,CAAC,aAAwB,IAAI,CAAC;QAClD,YAAY,EAAG,IAAI,CAAC,EAAa,IAAK,IAAI,CAAC,YAAuB,IAAI,CAAC;QACvE,OAAO,EAAG,IAAI,CAAC,OAAkB,IAAI,CAAC;QACtC,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;QACjD,UAAU,EAAG,IAAI,CAAC,UAAqB,IAAI,IAAI;QAC/C,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,IAAI;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,MAAM,QAAQ,GAAI,IAAI,CAAC,MAAkC,IAAI,EAAE,CAAC;IAChE,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,GAAI,KAA0B,CAAC,IAAI,IAAI,EAAE,CAAC;QACvD,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,GAAG,CAAC,IAAa,EAAE,QAAgB;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,0BAA0B,CAAC,CAAC;IACrF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,KAAK,CAAC,IAAa,EAAE,QAAgB,EAAE,EAAU;IACxD,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,QAAgB,EAAE,EAAU,EAAE,OAAe;IAChF,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa,EAAE,QAAgB,EAAE,KAAa;IAC9D,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAa,EACb,QAAgB,EAChB,EAAU,EACV,OAAe,EACf,KAAa;IAEb,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAa,EACb,QAAgB,EAChB,EAAU,EACV,KAAoB;IAEpB,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK;QAAE,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB;IAC9B,iEAAiE;IACjE,yEAAyE;IACzE,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,UAA2B;IAClD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtD,OAAO,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACtC,IAAI,MAAM;QAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IAErC,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC;IAEzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,QAAkB,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO;IAC1C,IAAI,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,MAAM,IAAI,GAAG;QAAE,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,iBAAiB,CAAC,QAAQ,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAYD,MAAM,OAAO,YAAY;IACN,kBAAkB,CAAS;IAC3B,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,YAAY,CAAS;IAC9B,QAAQ,CAAW;IACnB,QAAQ,CAAW;IACnB,KAAK,CAAU;IACf,cAAc,GAAyB,IAAI,CAAC;IAEpD,YACE,QAAgB,EAChB,OAAe,EACf,WAAmB,EACnB,iBAAyB;QAEzB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAC9C,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,UAA0B,EAC1B,QAAwB,EACxB,iBAAiC;QAEjC,MAAM,IAAI,GAAG,iBAAiB,IAAI,oBAAoB,CAAC;QACvD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,kBAAkB,CAC1B,wBAAwB,UAAU,2BAA2B,CAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAE3B,eAAe;QACf,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC;QAE1C,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvD,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAQ,CAAC;QAChC,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAO,CAAC;QAE5B,mCAAmC;QACnC,EAAE,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC;QAEvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,6EAA6E;IAE7E,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAG,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAK,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,6EAA6E;IAErE,YAAY;QAClB,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,GAAW;QAC5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC7E,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,EAAE,wCAAwC;gBAChD,YAAY,EAAE,iBAAiB;aAChC;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,YAAY,CAAC,GAAW;QACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC7E,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,EAAE,wCAAwC;gBAChD,YAAY,EAAE,iBAAiB;aAChC;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1F,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAa;QAC5C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC7E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,wCAAwC;gBAChD,YAAY,EAAE,iBAAiB;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,yEAAyE;IACzE,YAAY;IACZ,yEAAyE;IAEzE,6EAA6E;IAE7E,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,yBAAyB,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,aAAqB;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,iBAAiB,CAC3B,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,SAAS,EACT,yBAAyB,CAC1B,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAClF,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAwB,CAAC;IACvD,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,QAAQ,CACZ,aAAqB,EACrB,UAA4B;QAE5B,IAAI,GAAW,CAAC;QAChB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,GAAG,GAAG,iBAAiB,CACrB,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,GAAG,eAAe,CAAC,UAAU,CAAC,0BAA0B,CACzD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,iBAAiB,CACrB,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,yBAAyB,CAC1B,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,YAAY,CACtB,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,CACjB,CAAC;QACF,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,WAAW,CACf,aAAqB,EACrB,QAAgB,EAChB,IAAY,EACZ,KAAa,EACb,KAAa;QAEb,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACjC,aAAa;YACb,QAAQ;YACR,IAAI,EAAE,OAAO;YACb,IAAI;YACJ,KAAK;YACL,KAAK;YACL,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;SAC3C,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACjC,aAAa;YACb,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,UAAU;YACpB,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;SAC3C,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,QAAQ,oBAAoB,aAAa,gBAAgB,CAAC;QACzE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,CAAE,IAAiE,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,IAAI,GAAG,IAAI;QACrD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,oBAAoB,aAAa,8BAA8B,IAAI,EAAE,CAAC;QAClG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,CAAE,IAAiE,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,aAAqB,EACrB,OAAoD;QAEpD,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,0BAA0B,CACpC,IAAI,CAAC,QAAQ,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,MAAM,GAAI,IAAgC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACjE,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAClD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,0BAA0B,CACpC,IAAI,CAAC,QAAQ,EACb,mBAAmB,EACnB,aAAa,EACb,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CACpC,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,MAAc;QAChD,MAAM,GAAG,GAAG,0BAA0B,CACpC,IAAI,CAAC,QAAQ,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,MAAM,EAAE,CACnB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAI,IAAgC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,QAAQ,CACZ,aAAqB,EACrB,UAA4B;QAE5B,IAAI,GAAW,CAAC;QAChB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,GAAG,GAAG,iBAAiB,CACrB,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACnC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,YAAY,CACtB,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,CACjB,CAAC;QACF,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,WAAW,CACf,aAAqB,EACrB,UAA4B;QAE5B,qEAAqE;QACrE,wEAAwE;QACxE,+BAA+B;QAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,0BAA0B,CAAC,CAAC,CAAC,yBAAyB,CAAC;QACjF,MAAM,GAAG,GAAG,iBAAiB,CAC3B,IAAI,CAAC,QAAQ,EACb,cAAc,EACd,aAAa,EACb,aAAa,EACb,KAAK,CACN,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAQ,IAAgC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC;IAED,6EAA6E;IAE5D,YAAY,GAAG,IAAI,GAAG,EAAyD,CAAC;IAChF,mBAAmB,GAAG,IAAI,GAAG,EAAsC,CAAC;IAErF;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,iEAAiE;QACjE,yDAAyD;QACzD,iEAAiE;QACjE,gEAAgE;QAChE,kCAAkC;QAClC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QACD,oEAAoE;QACpE,iEAAiE;QACjE,UAAU;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC/C,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,kBAAkB,CAAC,aAAqB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,QAAuB;QACzD,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,QAAuB;QACjE,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnB,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;aAC7B,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,aAAa,CAC9B,KAAK,EACL,IAAI,CAAC,YAAY,EACjB,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,kBAAkB,EACvB,YAAY,EACZ,UAAU,CACX,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E,KAAK;QACH,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,gEAAgE;QAChE,gDAAgD;QAChD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,KAAK,UAAU,MAAM,CACnB,OAAe,EACf,MAA8B,EAC9B,iBAAyB;IAEzB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,GAAG,OAAO,SAAS,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,GAAG,EAAE;gBAC9B,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,iBAAiB;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;gBACzD,QAAQ,EAAE,EAAE;aACb,CAAC;SACH,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;QAC9E,CAAC;QACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,kBAAkB,CAAC,qCAAqC,CAAC,CAAC;IAC/E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,mCAAmC,CAAC,CAAC;IAC9E,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAC;IAEpF,MAAM,OAAO,GAAG,GAAG,OAAO,SAAS,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,iBAAiB;SAChC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE;YAC5B,QAAQ;SACT,CAAC;KACH,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IAC1D,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,3 +8,8 @@ export { OrderBook, OrderBooks } from "./orderbook.js";
|
|
|
8
8
|
export { Trades, MarketplaceTrades } from "./trades.js";
|
|
9
9
|
export { EventListener } from "./stomp.js";
|
|
10
10
|
export type { StompFrame, WsTransportError, WsException, FmEvent, EventCallback, } from "./stomp.js";
|
|
11
|
+
export { DefaultMarketView, MarketViewHandle } from "./market-view.js";
|
|
12
|
+
export type { MarketView, Subscription, GapEvent, ReconnectEvent } from "./market-view.js";
|
|
13
|
+
export type { Snapshot } from "./snapshot.js";
|
|
14
|
+
export { NO_SEQ } from "./stomp.js";
|
|
15
|
+
export type { OrdersUpdate } from "./stomp.js";
|
package/dist/index.js
CHANGED
|
@@ -10,4 +10,9 @@ export { OrderBook, OrderBooks } from "./orderbook.js";
|
|
|
10
10
|
export { Trades, MarketplaceTrades } from "./trades.js";
|
|
11
11
|
// Events
|
|
12
12
|
export { EventListener } from "./stomp.js";
|
|
13
|
+
// MarketView (Phase 2d-complete — REST snapshot seeding + seq-filtered
|
|
14
|
+
// deltas + gap recovery + auto-reconnect + per-(Flexemarkets, mpid)
|
|
15
|
+
// sharing via refcounted handles)
|
|
16
|
+
export { DefaultMarketView, MarketViewHandle } from "./market-view.js";
|
|
17
|
+
export { NO_SEQ } from "./stomp.js";
|
|
13
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAmBnC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,SAAS;AACT,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,cAAc;AACd,OAAO,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,GACV,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEvD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExD,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAmBnC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,OAAO,GACR,MAAM,YAAY,CAAC;AAEpB,SAAS;AACT,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,cAAc;AACd,OAAO,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,GACV,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEvD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExD,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAS3C,uEAAuE;AACvE,oEAAoE;AACpE,kCAAkC;AAClC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MarketView — always-current view of a single marketplace, hiding
|
|
3
|
+
* transport details (WebSocket subscribe, snapshot+delta
|
|
4
|
+
* reconciliation, sequence-gap recovery, reconnect) behind a small
|
|
5
|
+
* read-side surface. Mirrors the Java + Python SDKs; same staged
|
|
6
|
+
* roadmap. See project_fm_sdk_canonical_client.
|
|
7
|
+
*
|
|
8
|
+
* Phase 1 scope: API surface + skeleton that delegates to the
|
|
9
|
+
* existing listen() / callback pipe. No reconciliation, no
|
|
10
|
+
* snapshot seed, no sharing, no reconnect — those land in Phase 2.
|
|
11
|
+
*/
|
|
12
|
+
import type { Flexemarkets } from "./client.js";
|
|
13
|
+
import { OrderBook } from "./orderbook.js";
|
|
14
|
+
import type { Holding, Market, Order, Session } from "./types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Handle returned by `MarketView.on*` listener registrations. Call
|
|
17
|
+
* to unregister. Idempotent — multiple calls are no-ops.
|
|
18
|
+
*/
|
|
19
|
+
export type Subscription = () => void;
|
|
20
|
+
/**
|
|
21
|
+
* Fires when MarketView detects a sequence-gap in the ORDERS-UPDATE
|
|
22
|
+
* WS stream — one or more frames were dropped between client and
|
|
23
|
+
* fm-server. After a gap, MarketView re-runs the REST snapshot
|
|
24
|
+
* recovery flow before applying further deltas; the gap event is the
|
|
25
|
+
* signal callers can wire into their own observability stack instead
|
|
26
|
+
* of relying on the SDK's default console.warn.
|
|
27
|
+
*/
|
|
28
|
+
export interface GapEvent {
|
|
29
|
+
readonly marketplaceId: number;
|
|
30
|
+
readonly expectedSeq: number;
|
|
31
|
+
readonly receivedSeq: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fires when MarketView reacts to a WsTransportError — either after
|
|
35
|
+
* the reconnect + resnapshot completes successfully, or after the
|
|
36
|
+
* attempt has failed and the view is left stale.
|
|
37
|
+
*/
|
|
38
|
+
export interface ReconnectEvent {
|
|
39
|
+
readonly marketplaceId: number;
|
|
40
|
+
readonly success: boolean;
|
|
41
|
+
readonly reason: string | null;
|
|
42
|
+
}
|
|
43
|
+
export interface MarketView {
|
|
44
|
+
/** The marketplace this view tracks. */
|
|
45
|
+
readonly marketplaceId: number;
|
|
46
|
+
/** Markets in this marketplace, captured at observe-time. */
|
|
47
|
+
readonly markets: Market[];
|
|
48
|
+
/**
|
|
49
|
+
* Always-current order book for `marketId`. Reads are atomic; a
|
|
50
|
+
* caller never sees a half-applied delta. Returns null if
|
|
51
|
+
* `marketId` isn't in this marketplace.
|
|
52
|
+
*/
|
|
53
|
+
orderBook(marketId: number): OrderBook | null;
|
|
54
|
+
/**
|
|
55
|
+
* Most-recent session update observed. Null until the first
|
|
56
|
+
* SESSION-UPDATE frame lands.
|
|
57
|
+
*/
|
|
58
|
+
session(): Session | null;
|
|
59
|
+
/**
|
|
60
|
+
* The caller's holding for this marketplace. Null until the first
|
|
61
|
+
* HOLDING-UPDATE frame lands.
|
|
62
|
+
*/
|
|
63
|
+
holding(): Holding | null;
|
|
64
|
+
/** Register a handler for session-state changes. */
|
|
65
|
+
onSessionChange(handler: (s: Session) => void): Subscription;
|
|
66
|
+
/**
|
|
67
|
+
* Register a handler that fires when the order book for
|
|
68
|
+
* `marketId` changes. The handler receives the post-update book.
|
|
69
|
+
*/
|
|
70
|
+
onOrderBookChange(marketId: number, handler: (b: OrderBook) => void): Subscription;
|
|
71
|
+
/** Register a handler for the caller's holding changes. */
|
|
72
|
+
onHoldingChange(handler: (h: Holding) => void): Subscription;
|
|
73
|
+
/**
|
|
74
|
+
* Register a handler that fires when MarketView detects a gap in
|
|
75
|
+
* the ORDERS-UPDATE seq stream. Use this to wire your own
|
|
76
|
+
* telemetry — by default the SDK logs to console.warn but
|
|
77
|
+
* otherwise hides the recovery flow.
|
|
78
|
+
*/
|
|
79
|
+
onGap(handler: (event: GapEvent) => void): Subscription;
|
|
80
|
+
/**
|
|
81
|
+
* Register a handler that fires after the SDK reacts to a
|
|
82
|
+
* transport error — either when reconnect + resnapshot have
|
|
83
|
+
* completed, or when the attempt has failed and the view is left
|
|
84
|
+
* stale.
|
|
85
|
+
*/
|
|
86
|
+
onReconnect(handler: (event: ReconnectEvent) => void): Subscription;
|
|
87
|
+
/** Submit a limit order on this marketplace. */
|
|
88
|
+
submitLimit(marketId: number, side: string, units: number, price: number): Promise<Order>;
|
|
89
|
+
/** Cancel a previously-submitted order. */
|
|
90
|
+
submitCancel(marketId: number, originalId: number): Promise<Order>;
|
|
91
|
+
/**
|
|
92
|
+
* Release the WS subscription and any reader-side handles. After
|
|
93
|
+
* close, accessors throw and new handler registrations are
|
|
94
|
+
* rejected. Idempotent.
|
|
95
|
+
*/
|
|
96
|
+
close(): void;
|
|
97
|
+
}
|
|
98
|
+
export declare class DefaultMarketView implements MarketView {
|
|
99
|
+
readonly marketplaceId: number;
|
|
100
|
+
readonly markets: Market[];
|
|
101
|
+
private readonly _flexemarkets;
|
|
102
|
+
private readonly _orderBooks;
|
|
103
|
+
private readonly _trades;
|
|
104
|
+
private _events;
|
|
105
|
+
private _session;
|
|
106
|
+
private _holding;
|
|
107
|
+
private readonly _sessionHandlers;
|
|
108
|
+
private readonly _holdingHandlers;
|
|
109
|
+
private readonly _bookHandlers;
|
|
110
|
+
private readonly _gapHandlers;
|
|
111
|
+
private readonly _reconnectHandlers;
|
|
112
|
+
private _closed;
|
|
113
|
+
/**
|
|
114
|
+
* Highest ORDERS-UPDATE seq this view has applied so far. Deltas
|
|
115
|
+
* with `seq <= _lastAppliedSeq` are skipped — they've already been
|
|
116
|
+
* folded into the local state via the initial REST snapshot or a
|
|
117
|
+
* previously-applied delta. Initial value comes from the snapshot's
|
|
118
|
+
* `asOfSeq`; `NO_SEQ` disables filtering (older fm-server).
|
|
119
|
+
*/
|
|
120
|
+
private _lastAppliedSeq;
|
|
121
|
+
static open(flexemarkets: Flexemarkets, marketplaceId: number): Promise<DefaultMarketView>;
|
|
122
|
+
private _seedComplete;
|
|
123
|
+
private _seedBuffer;
|
|
124
|
+
private constructor();
|
|
125
|
+
/**
|
|
126
|
+
* Phase 2a snapshot seeding. Fetches the V1 active-orders and
|
|
127
|
+
* recent-trades snapshots, applies them to the local aggregators,
|
|
128
|
+
* and records the `asOfSeq` so subsequent WS deltas can be
|
|
129
|
+
* filtered to avoid double-applying anything the snapshot already
|
|
130
|
+
* reflects.
|
|
131
|
+
*
|
|
132
|
+
* Known race window: a delta whose order persisted between the
|
|
133
|
+
* server's seq capture and its order read can appear both in the
|
|
134
|
+
* snapshot and in a delta with `seq > asOfSeq`, leading to a
|
|
135
|
+
* double-apply. Same caveat as the existing V0 WS snapshot path.
|
|
136
|
+
* Phase 2b (gap recovery + ID-based dedup) closes the window.
|
|
137
|
+
*/
|
|
138
|
+
private _seedFromSnapshot;
|
|
139
|
+
orderBook(marketId: number): OrderBook | null;
|
|
140
|
+
session(): Session | null;
|
|
141
|
+
holding(): Holding | null;
|
|
142
|
+
onSessionChange(handler: (s: Session) => void): Subscription;
|
|
143
|
+
onOrderBookChange(marketId: number, handler: (b: OrderBook) => void): Subscription;
|
|
144
|
+
onHoldingChange(handler: (h: Holding) => void): Subscription;
|
|
145
|
+
onGap(handler: (e: GapEvent) => void): Subscription;
|
|
146
|
+
onReconnect(handler: (e: ReconnectEvent) => void): Subscription;
|
|
147
|
+
submitLimit(marketId: number, side: string, units: number, price: number): Promise<Order>;
|
|
148
|
+
submitCancel(marketId: number, originalId: number): Promise<Order>;
|
|
149
|
+
close(): void;
|
|
150
|
+
private _resyncInFlight;
|
|
151
|
+
private _dispatch;
|
|
152
|
+
/**
|
|
153
|
+
* Phase 2c auto-reconnect. On a WsTransportError, reconnect the
|
|
154
|
+
* underlying WS and re-seed from the V1 snapshot — reconnect is
|
|
155
|
+
* just the largest possible gap, so 2b's _seedFromSnapshot()
|
|
156
|
+
* (clear + REST snapshot + reapply + seq watermark) handles state
|
|
157
|
+
* convergence. One reconnect attempt; if it fails the view is left
|
|
158
|
+
* stale until the caller close()s and observe()s again.
|
|
159
|
+
*/
|
|
160
|
+
private _handleTransportError;
|
|
161
|
+
private _applyOrdersUpdate;
|
|
162
|
+
private _ensureOpen;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Reader-side handle on a refcounted DefaultMarketView. Returned by
|
|
166
|
+
* Flexemarkets.observe(); multiple handles for the same marketplaceId
|
|
167
|
+
* share one underlying view + WS subscription + materialized state.
|
|
168
|
+
* Each handle's close() decrements the shared refcount and tears down
|
|
169
|
+
* the shared resources on the last close.
|
|
170
|
+
*
|
|
171
|
+
* Subscriptions registered via on*Change on this handle are tracked
|
|
172
|
+
* locally and closed when the handle closes — so a handler doesn't
|
|
173
|
+
* keep firing into stale state after the handle is gone.
|
|
174
|
+
*/
|
|
175
|
+
export declare class MarketViewHandle implements MarketView {
|
|
176
|
+
private readonly _shared;
|
|
177
|
+
private readonly _onClose;
|
|
178
|
+
private readonly _mySubscriptions;
|
|
179
|
+
private _closed;
|
|
180
|
+
constructor(shared: DefaultMarketView, onClose: () => void);
|
|
181
|
+
get marketplaceId(): number;
|
|
182
|
+
get markets(): Market[];
|
|
183
|
+
orderBook(marketId: number): OrderBook | null;
|
|
184
|
+
session(): Session | null;
|
|
185
|
+
holding(): Holding | null;
|
|
186
|
+
onSessionChange(handler: (s: Session) => void): Subscription;
|
|
187
|
+
onOrderBookChange(marketId: number, handler: (b: OrderBook) => void): Subscription;
|
|
188
|
+
onHoldingChange(handler: (h: Holding) => void): Subscription;
|
|
189
|
+
onGap(handler: (e: GapEvent) => void): Subscription;
|
|
190
|
+
onReconnect(handler: (e: ReconnectEvent) => void): Subscription;
|
|
191
|
+
submitLimit(marketId: number, side: string, units: number, price: number): Promise<Order>;
|
|
192
|
+
submitCancel(marketId: number, originalId: number): Promise<Order>;
|
|
193
|
+
close(): void;
|
|
194
|
+
private _check;
|
|
195
|
+
}
|