@xyo-network/xl1-rpc-server 2.0.9 → 2.0.11

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![logo][]][logo-link]
1
+ [![logo][]](https://xyo.network)
2
2
 
3
3
  # @xyo-network/xl1-rpc-server
4
4
 
@@ -98,13 +98,10 @@ See the [LICENSE](./LICENSE) file (LGPL-3.0-only).
98
98
 
99
99
  ## Credits
100
100
 
101
- [Made with 🔥 and ❄️ by XYO](https://xyo.network)
102
-
103
- [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
104
- [logo-link]: https://xyo.network
101
+ [Made with 🔥 and ❄️ by XYO Foundation](https://xyo.network)
105
102
 
106
103
  [npm-badge]: https://img.shields.io/npm/v/@xyo-network/xl1-rpc-server.svg
107
104
  [npm-link]: https://www.npmjs.com/package/@xyo-network/xl1-rpc-server
108
-
109
105
  [license-badge]: https://img.shields.io/npm/l/@xyo-network/xl1-rpc-server.svg
110
106
  [license-link]: ./LICENSE
107
+ [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-rpc-server",
4
- "version": "2.0.9",
4
+ "version": "2.0.11",
5
5
  "description": "XYO Layer One RPC HTTP Server",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
8
- "url": "git+https://github.com/xylabs/xyo-chain/issues",
8
+ "url": "https://github.com/XYOracleNetwork/xl1-protocol/issues",
9
9
  "email": "support@xylabs.com"
10
10
  },
11
11
  "repository": {
12
12
  "type": "git",
13
- "url": "git+https://github.com/xylabs/xyo-chain.git"
13
+ "url": "git+https://github.com/XYOracleNetwork/xl1-protocol.git"
14
14
  },
15
15
  "license": "LGPL-3.0-only",
16
16
  "author": {
@@ -36,9 +36,9 @@
36
36
  ],
37
37
  "devDependencies": {
38
38
  "@metamask/json-rpc-engine": "^10.5.0",
39
- "@types/node": "~25.9.1",
40
- "@xylabs/toolchain": "~8.1.12",
41
- "@xylabs/tsconfig": "~8.1.12",
39
+ "@types/node": "~25.9.2",
40
+ "@xylabs/toolchain": "~8.1.19",
41
+ "@xylabs/tsconfig": "~8.1.19",
42
42
  "eslint": "^10.4.1",
43
43
  "typescript": "~6.0.3",
44
44
  "vite": "^8.0.16",
@@ -1,14 +0,0 @@
1
- import HTTP from 'node:http';
2
- import { type JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
3
- /** Result returned by createRpcHttpServer. */
4
- export interface RpcHttpServer {
5
- close: () => Promise<void>;
6
- port: number;
7
- server: HTTP.Server;
8
- }
9
- /** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */
10
- export declare function createRpcHttpServer(options: {
11
- engine: JsonRpcEngineV2;
12
- port: number;
13
- }): Promise<RpcHttpServer>;
14
- //# sourceMappingURL=createRpcHttpServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRpcHttpServer.d.ts","sourceRoot":"","sources":["../../src/createRpcHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAElF,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CACpB;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CA2D9G"}
@@ -1,4 +0,0 @@
1
- import type { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
2
- /** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */
3
- export declare function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown>;
4
- //# sourceMappingURL=createRpcRequestHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRpcRequestHandler.d.ts","sourceRoot":"","sources":["../../src/createRpcRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,8BAA8B,CAAA;AAEnF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAgBpG"}
@@ -1,3 +0,0 @@
1
- export * from './createRpcHttpServer.ts';
2
- export * from './createRpcRequestHandler.ts';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
@@ -1,80 +0,0 @@
1
- // src/createRpcHttpServer.ts
2
- import HTTP from "node:http";
3
- import { JsonRpcServer } from "@metamask/json-rpc-engine/v2";
4
- function createRpcHttpServer(options) {
5
- const { engine, port } = options;
6
- const rpcServer = new JsonRpcServer({ engine });
7
- return new Promise((resolve, reject) => {
8
- const server = HTTP.createServer((req, res) => {
9
- res.setHeader("Access-Control-Allow-Origin", "*");
10
- res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
11
- res.setHeader("Access-Control-Allow-Headers", "Content-Type");
12
- if (req.method === "OPTIONS") {
13
- res.writeHead(204);
14
- res.end();
15
- return;
16
- }
17
- if (req.method !== "POST" || req.url !== "/rpc") {
18
- res.writeHead(404, { "Content-Type": "application/json" });
19
- res.end(JSON.stringify({ error: "Not found" }));
20
- return;
21
- }
22
- let body = "";
23
- req.on("data", (chunk) => {
24
- body += chunk.toString();
25
- });
26
- req.on("end", () => {
27
- const parsed = JSON.parse(body);
28
- rpcServer.handle(parsed).then((response) => {
29
- res.writeHead(200, { "Content-Type": "application/json" });
30
- res.end(JSON.stringify(response));
31
- }).catch((error) => {
32
- res.writeHead(500, { "Content-Type": "application/json" });
33
- res.end(JSON.stringify({ error: error.message }));
34
- });
35
- });
36
- });
37
- server.on("error", reject);
38
- server.listen(port, () => {
39
- resolve({
40
- server,
41
- port,
42
- close: () => new Promise((resolveClose, rejectClose) => {
43
- server.close((err) => {
44
- if (err) {
45
- rejectClose(err);
46
- } else {
47
- resolveClose();
48
- }
49
- });
50
- })
51
- });
52
- });
53
- });
54
- }
55
-
56
- // src/createRpcRequestHandler.ts
57
- function createRpcRequestHandler(engine) {
58
- return async (body) => {
59
- const request = body;
60
- try {
61
- const result = await engine.handle(request);
62
- return {
63
- jsonrpc: "2.0",
64
- id: request.id,
65
- result
66
- };
67
- } catch (error) {
68
- return {
69
- jsonrpc: "2.0",
70
- id: request.id,
71
- error: { code: -32603, message: error.message }
72
- };
73
- }
74
- };
75
- }
76
- export {
77
- createRpcHttpServer,
78
- createRpcRequestHandler
79
- };
80
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createRpcHttpServer.ts", "../../src/createRpcRequestHandler.ts"],
4
- "sourcesContent": ["import HTTP from 'node:http'\n\nimport { type JsonRpcEngineV2, JsonRpcServer } from '@metamask/json-rpc-engine/v2'\n\n/** Result returned by createRpcHttpServer. */\nexport interface RpcHttpServer {\n close: () => Promise<void>\n port: number\n server: HTTP.Server\n}\n\n/** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */\nexport function createRpcHttpServer(options: { engine: JsonRpcEngineV2; port: number }): Promise<RpcHttpServer> {\n const { engine, port } = options\n const rpcServer = new JsonRpcServer({ engine })\n\n return new Promise((resolve, reject) => {\n const server = HTTP.createServer((req, res) => {\n res.setHeader('Access-Control-Allow-Origin', '*')\n res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS')\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type')\n\n if (req.method === 'OPTIONS') {\n res.writeHead(204)\n res.end()\n return\n }\n\n if (req.method !== 'POST' || req.url !== '/rpc') {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: 'Not found' }))\n return\n }\n\n let body = ''\n req.on('data', (chunk: Buffer) => {\n body += chunk.toString()\n })\n\n req.on('end', () => {\n const parsed: unknown = JSON.parse(body)\n rpcServer.handle(parsed)\n .then((response) => {\n res.writeHead(200, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify(response))\n })\n .catch((error: unknown) => {\n res.writeHead(500, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: (error as Error).message }))\n })\n })\n })\n\n server.on('error', reject)\n\n server.listen(port, () => {\n resolve({\n server,\n port,\n close: () => new Promise<void>((resolveClose, rejectClose) => {\n server.close((err) => {\n if (err) {\n rejectClose(err)\n } else {\n resolveClose()\n }\n })\n }),\n })\n })\n })\n}\n", "import type { JsonRpcEngineV2, JsonRpcRequest } from '@metamask/json-rpc-engine/v2'\n\n/** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */\nexport function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown> {\n return async (body: unknown) => {\n const request = body as JsonRpcRequest\n try {\n const result = await engine.handle(request)\n return {\n jsonrpc: '2.0', id: request.id, result,\n }\n } catch (error) {\n return {\n jsonrpc: '2.0',\n id: request.id,\n error: { code: -32_603, message: (error as Error).message },\n }\n }\n }\n}\n"],
5
- "mappings": ";AAAA,OAAO,UAAU;AAEjB,SAA+B,qBAAqB;AAU7C,SAAS,oBAAoB,SAA4E;AAC9G,QAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,QAAM,YAAY,IAAI,cAAc,EAAE,OAAO,CAAC;AAE9C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAS,KAAK,aAAa,CAAC,KAAK,QAAQ;AAC7C,UAAI,UAAU,+BAA+B,GAAG;AAChD,UAAI,UAAU,gCAAgC,eAAe;AAC7D,UAAI,UAAU,gCAAgC,cAAc;AAE5D,UAAI,IAAI,WAAW,WAAW;AAC5B,YAAI,UAAU,GAAG;AACjB,YAAI,IAAI;AACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,UAAU,IAAI,QAAQ,QAAQ;AAC/C,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAO,YAAY,CAAC,CAAC;AAC9C;AAAA,MACF;AAEA,UAAI,OAAO;AACX,UAAI,GAAG,QAAQ,CAAC,UAAkB;AAChC,gBAAQ,MAAM,SAAS;AAAA,MACzB,CAAC;AAED,UAAI,GAAG,OAAO,MAAM;AAClB,cAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,kBAAU,OAAO,MAAM,EACpB,KAAK,CAAC,aAAa;AAClB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,QAAQ,CAAC;AAAA,QAClC,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,EAAE,OAAQ,MAAgB,QAAQ,CAAC,CAAC;AAAA,QAC7D,CAAC;AAAA,MACL,CAAC;AAAA,IACH,CAAC;AAED,WAAO,GAAG,SAAS,MAAM;AAEzB,WAAO,OAAO,MAAM,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,OAAO,MAAM,IAAI,QAAc,CAAC,cAAc,gBAAgB;AAC5D,iBAAO,MAAM,CAAC,QAAQ;AACpB,gBAAI,KAAK;AACP,0BAAY,GAAG;AAAA,YACjB,OAAO;AACL,2BAAa;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;;;ACpEO,SAAS,wBAAwB,QAA8D;AACpG,SAAO,OAAO,SAAkB;AAC9B,UAAM,UAAU;AAChB,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,aAAO;AAAA,QACL,SAAS;AAAA,QAAO,IAAI,QAAQ;AAAA,QAAI;AAAA,MAClC;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,IAAI,QAAQ;AAAA,QACZ,OAAO,EAAE,MAAM,QAAS,SAAU,MAAgB,QAAQ;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,14 +0,0 @@
1
- import HTTP from 'node:http';
2
- import { type JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
3
- /** Result returned by createRpcHttpServer. */
4
- export interface RpcHttpServer {
5
- close: () => Promise<void>;
6
- port: number;
7
- server: HTTP.Server;
8
- }
9
- /** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */
10
- export declare function createRpcHttpServer(options: {
11
- engine: JsonRpcEngineV2;
12
- port: number;
13
- }): Promise<RpcHttpServer>;
14
- //# sourceMappingURL=createRpcHttpServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRpcHttpServer.d.ts","sourceRoot":"","sources":["../../src/createRpcHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAElF,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CACpB;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CA2D9G"}
@@ -1,4 +0,0 @@
1
- import type { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
2
- /** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */
3
- export declare function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown>;
4
- //# sourceMappingURL=createRpcRequestHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRpcRequestHandler.d.ts","sourceRoot":"","sources":["../../src/createRpcRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,8BAA8B,CAAA;AAEnF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAgBpG"}
@@ -1,3 +0,0 @@
1
- export * from './createRpcHttpServer.ts';
2
- export * from './createRpcRequestHandler.ts';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
@@ -1,80 +0,0 @@
1
- // src/createRpcHttpServer.ts
2
- import HTTP from "node:http";
3
- import { JsonRpcServer } from "@metamask/json-rpc-engine/v2";
4
- function createRpcHttpServer(options) {
5
- const { engine, port } = options;
6
- const rpcServer = new JsonRpcServer({ engine });
7
- return new Promise((resolve, reject) => {
8
- const server = HTTP.createServer((req, res) => {
9
- res.setHeader("Access-Control-Allow-Origin", "*");
10
- res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
11
- res.setHeader("Access-Control-Allow-Headers", "Content-Type");
12
- if (req.method === "OPTIONS") {
13
- res.writeHead(204);
14
- res.end();
15
- return;
16
- }
17
- if (req.method !== "POST" || req.url !== "/rpc") {
18
- res.writeHead(404, { "Content-Type": "application/json" });
19
- res.end(JSON.stringify({ error: "Not found" }));
20
- return;
21
- }
22
- let body = "";
23
- req.on("data", (chunk) => {
24
- body += chunk.toString();
25
- });
26
- req.on("end", () => {
27
- const parsed = JSON.parse(body);
28
- rpcServer.handle(parsed).then((response) => {
29
- res.writeHead(200, { "Content-Type": "application/json" });
30
- res.end(JSON.stringify(response));
31
- }).catch((error) => {
32
- res.writeHead(500, { "Content-Type": "application/json" });
33
- res.end(JSON.stringify({ error: error.message }));
34
- });
35
- });
36
- });
37
- server.on("error", reject);
38
- server.listen(port, () => {
39
- resolve({
40
- server,
41
- port,
42
- close: () => new Promise((resolveClose, rejectClose) => {
43
- server.close((err) => {
44
- if (err) {
45
- rejectClose(err);
46
- } else {
47
- resolveClose();
48
- }
49
- });
50
- })
51
- });
52
- });
53
- });
54
- }
55
-
56
- // src/createRpcRequestHandler.ts
57
- function createRpcRequestHandler(engine) {
58
- return async (body) => {
59
- const request = body;
60
- try {
61
- const result = await engine.handle(request);
62
- return {
63
- jsonrpc: "2.0",
64
- id: request.id,
65
- result
66
- };
67
- } catch (error) {
68
- return {
69
- jsonrpc: "2.0",
70
- id: request.id,
71
- error: { code: -32603, message: error.message }
72
- };
73
- }
74
- };
75
- }
76
- export {
77
- createRpcHttpServer,
78
- createRpcRequestHandler
79
- };
80
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createRpcHttpServer.ts", "../../src/createRpcRequestHandler.ts"],
4
- "sourcesContent": ["import HTTP from 'node:http'\n\nimport { type JsonRpcEngineV2, JsonRpcServer } from '@metamask/json-rpc-engine/v2'\n\n/** Result returned by createRpcHttpServer. */\nexport interface RpcHttpServer {\n close: () => Promise<void>\n port: number\n server: HTTP.Server\n}\n\n/** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */\nexport function createRpcHttpServer(options: { engine: JsonRpcEngineV2; port: number }): Promise<RpcHttpServer> {\n const { engine, port } = options\n const rpcServer = new JsonRpcServer({ engine })\n\n return new Promise((resolve, reject) => {\n const server = HTTP.createServer((req, res) => {\n res.setHeader('Access-Control-Allow-Origin', '*')\n res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS')\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type')\n\n if (req.method === 'OPTIONS') {\n res.writeHead(204)\n res.end()\n return\n }\n\n if (req.method !== 'POST' || req.url !== '/rpc') {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: 'Not found' }))\n return\n }\n\n let body = ''\n req.on('data', (chunk: Buffer) => {\n body += chunk.toString()\n })\n\n req.on('end', () => {\n const parsed: unknown = JSON.parse(body)\n rpcServer.handle(parsed)\n .then((response) => {\n res.writeHead(200, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify(response))\n })\n .catch((error: unknown) => {\n res.writeHead(500, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: (error as Error).message }))\n })\n })\n })\n\n server.on('error', reject)\n\n server.listen(port, () => {\n resolve({\n server,\n port,\n close: () => new Promise<void>((resolveClose, rejectClose) => {\n server.close((err) => {\n if (err) {\n rejectClose(err)\n } else {\n resolveClose()\n }\n })\n }),\n })\n })\n })\n}\n", "import type { JsonRpcEngineV2, JsonRpcRequest } from '@metamask/json-rpc-engine/v2'\n\n/** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */\nexport function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown> {\n return async (body: unknown) => {\n const request = body as JsonRpcRequest\n try {\n const result = await engine.handle(request)\n return {\n jsonrpc: '2.0', id: request.id, result,\n }\n } catch (error) {\n return {\n jsonrpc: '2.0',\n id: request.id,\n error: { code: -32_603, message: (error as Error).message },\n }\n }\n }\n}\n"],
5
- "mappings": ";AAAA,OAAO,UAAU;AAEjB,SAA+B,qBAAqB;AAU7C,SAAS,oBAAoB,SAA4E;AAC9G,QAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,QAAM,YAAY,IAAI,cAAc,EAAE,OAAO,CAAC;AAE9C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAS,KAAK,aAAa,CAAC,KAAK,QAAQ;AAC7C,UAAI,UAAU,+BAA+B,GAAG;AAChD,UAAI,UAAU,gCAAgC,eAAe;AAC7D,UAAI,UAAU,gCAAgC,cAAc;AAE5D,UAAI,IAAI,WAAW,WAAW;AAC5B,YAAI,UAAU,GAAG;AACjB,YAAI,IAAI;AACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,UAAU,IAAI,QAAQ,QAAQ;AAC/C,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAO,YAAY,CAAC,CAAC;AAC9C;AAAA,MACF;AAEA,UAAI,OAAO;AACX,UAAI,GAAG,QAAQ,CAAC,UAAkB;AAChC,gBAAQ,MAAM,SAAS;AAAA,MACzB,CAAC;AAED,UAAI,GAAG,OAAO,MAAM;AAClB,cAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,kBAAU,OAAO,MAAM,EACpB,KAAK,CAAC,aAAa;AAClB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,QAAQ,CAAC;AAAA,QAClC,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,EAAE,OAAQ,MAAgB,QAAQ,CAAC,CAAC;AAAA,QAC7D,CAAC;AAAA,MACL,CAAC;AAAA,IACH,CAAC;AAED,WAAO,GAAG,SAAS,MAAM;AAEzB,WAAO,OAAO,MAAM,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,OAAO,MAAM,IAAI,QAAc,CAAC,cAAc,gBAAgB;AAC5D,iBAAO,MAAM,CAAC,QAAQ;AACpB,gBAAI,KAAK;AACP,0BAAY,GAAG;AAAA,YACjB,OAAO;AACL,2BAAa;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;;;ACpEO,SAAS,wBAAwB,QAA8D;AACpG,SAAO,OAAO,SAAkB;AAC9B,UAAM,UAAU;AAChB,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,aAAO;AAAA,QACL,SAAS;AAAA,QAAO,IAAI,QAAQ;AAAA,QAAI;AAAA,MAClC;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,IAAI,QAAQ;AAAA,QACZ,OAAO,EAAE,MAAM,QAAS,SAAU,MAAgB,QAAQ;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACF;",
6
- "names": []
7
- }