@my-life-buddies/buddy-runtime 0.17.0 → 0.18.0
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 +14 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +25 -9
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,15 +20,25 @@ npm install @my-life-buddies/buddy-runtime typebox
|
|
|
20
20
|
|
|
21
21
|
### 1.2 创建搭子
|
|
22
22
|
|
|
23
|
-
通过 `@my-life-buddies/cli` 完成搭搭账号注册,并创建一个新的搭子,获取 buddyId 与开发令牌(平台另有一把正式令牌,只在托管运行时注入,不经 CLI
|
|
23
|
+
通过 `@my-life-buddies/cli` 完成搭搭账号注册,并创建一个新的搭子,获取 buddyId 与开发令牌(平台另有一把正式令牌,只在托管运行时注入,不经 CLI 下发)。buddyId 写进 `package.json` 的 `buddyId` 字段,开发令牌写进 `.env` 的 `BUDDY_TOKEN`。
|
|
24
24
|
|
|
25
25
|
### 1.3 搭子工程框架
|
|
26
26
|
|
|
27
27
|
```
|
|
28
28
|
my-buddy/
|
|
29
|
-
├─ .env
|
|
29
|
+
├─ .env BUDDY_TOKEN
|
|
30
30
|
├─ src/index.ts
|
|
31
|
-
└─ package.json
|
|
31
|
+
└─ package.json buddyId 字段
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"name": "my-buddy",
|
|
37
|
+
"buddyId": "b_1234567890abcdef",
|
|
38
|
+
"private": true,
|
|
39
|
+
"type": "module",
|
|
40
|
+
"scripts": { "start": "node --env-file-if-exists=.env src/index.ts" }
|
|
41
|
+
}
|
|
32
42
|
```
|
|
33
43
|
|
|
34
44
|
```ts
|
|
@@ -66,7 +76,7 @@ await BuddyServer.start(() => ({
|
|
|
66
76
|
|
|
67
77
|
`buddy` 是每场会话建起来时调用一次的工厂函数,返回这场会话的配置,见 2.2、2.3。DataAccess 声明不属于会话工厂,单独写在工程根目录的 `data-access.json`,见 3.4。
|
|
68
78
|
|
|
69
|
-
**buddyId 与 token**:
|
|
79
|
+
**buddyId 与 token**:buddyId 从工程 `package.json` 顶层的 `buddyId` 字段读,token 从环境变量 `BUDDY_TOKEN` 读,缺一个都启动失败。创建搭子时会下发 buddyId 与开发 token:buddyId 写进 `package.json`,随工程进 git 与发布包,平台收包时会比对它与推送目标是否一致;开发 token 写在 `.env`,由启动命令带进环境变量。正式上线时平台托管注入正式 token 到同名变量,对开发者无感。
|
|
70
80
|
|
|
71
81
|
**buddy 的生命周期**:`buddy` 在每场会话收到第一条消息时调用一次。会话空闲 30 分钟被回收、或进程重启后,下一条消息会重新调用,所以闭包里的变量不能当长期存储,需要存储会话状态可以根据场景使用 3.3 记忆、3.5 小挂件实现。
|
|
72
82
|
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAc,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAc,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAiD9E,qBAAa,WAAW;IACvB,iDAAiD;WACpC,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA6JnE"}
|
package/dist/server.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// 进程级入口:一只搭子起来后长什么样。
|
|
2
|
-
//
|
|
2
|
+
// 管:读搭子 id(工程 package.json 的 buddyId 字段)与令牌(环境变量 BUDDY_TOKEN),缺一个就启动失败、定网关地址(缺省连 ecs-test,开发者不用填,设了环境变量 MLB_GATEWAY_URL 才覆盖)、
|
|
3
3
|
// 建日志 / MLBClient、启动时注册 data-access.json 声明、读一次 resources/ 目录里的资料、把 widgets/ 目录里的小挂件逐个上传平台(任一上传失败都启动失败)、按会话键管一张 ConversationHandle 表、
|
|
4
4
|
// 把事件流的 message / welcome / delete 分发给对应会话、收到 replaced(同一身份有新的进程连上了平台)就收尾并退出进程、
|
|
5
5
|
// 每 60 秒淘汰不忙且 30 分钟没消息的会话(淘汰前历史超过触发线的拍快照、回收后在后台压缩写回,见 conversation/compaction.ts)、stop 时把一切收掉。
|
|
6
6
|
// 不管:会话里的纪律(conversation/ 目录)、协议细节(mlbClient.ts)。没有 HTTP 面、没有主动触达、没有会话列表。
|
|
7
|
-
import { existsSync } from "node:fs";
|
|
7
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
8
8
|
import { dirname, join, resolve } from "node:path";
|
|
9
9
|
import { compactConversation } from "./conversation/compaction.js";
|
|
10
10
|
import { ConversationHandle } from "./conversation/index.js";
|
|
@@ -41,22 +41,38 @@ function buddyDir() {
|
|
|
41
41
|
dir = parent;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* 搭子 id:工程 package.json 顶层的 buddyId 字段,创建搭子时平台发的那个。
|
|
46
|
+
* 它不是凭据——平台认身份只看令牌,这个 id 只用来给日志、会话 id、幂等键起名;
|
|
47
|
+
* 放在 package.json 里跟着工程进 git、进发布包,平台收包时能比对推的是不是这只搭子。
|
|
48
|
+
*/
|
|
49
|
+
function readBuddyId(dir) {
|
|
50
|
+
const file = join(dir, "package.json");
|
|
51
|
+
let pkg;
|
|
52
|
+
try {
|
|
53
|
+
pkg = JSON.parse(readFileSync(file, "utf8"));
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
throw new Error(`读不了 ${file}:${errorText(e)}`);
|
|
57
|
+
}
|
|
58
|
+
if (typeof pkg.buddyId !== "string" || pkg.buddyId === "")
|
|
59
|
+
throw new Error(`${file} 缺 buddyId 字段:搭子 id,创建搭子时平台发的,写成 "buddyId": "b_…"`);
|
|
60
|
+
return pkg.buddyId;
|
|
61
|
+
}
|
|
44
62
|
export class BuddyServer {
|
|
45
63
|
/** 起一只搭子:连上事件流,之后消息来一条处理一条。返回的 handle 只有 stop */
|
|
46
64
|
static async start(buddy) {
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
const
|
|
65
|
+
// id 在工程 package.json 里(见 readBuddyId);令牌只从环境变量来:平台托管时由网关注入正式令牌
|
|
66
|
+
// (见 my-life-buddies-server 的 hosting/hostedRunner.ts),本地开发把 CLI 发的开发令牌写在工程的 .env 里
|
|
67
|
+
// (npm start 的 --env-file-if-exists 会读进来)。开发者不转手这两个值——转手就有传错名字、硬编码、忘了读的余地。
|
|
68
|
+
const dir = buddyDir();
|
|
69
|
+
const buddyId = readBuddyId(dir);
|
|
51
70
|
const token = process.env.BUDDY_TOKEN ?? "";
|
|
52
|
-
if (!buddyId)
|
|
53
|
-
throw new Error("缺少环境变量 BUDDY_ID:搭子 id,平台托管时自动注入,本地写在工程的 .env 里");
|
|
54
71
|
if (!token)
|
|
55
72
|
throw new Error("缺少环境变量 BUDDY_TOKEN:搭子令牌,平台托管时自动注入,本地写在工程的 .env 里");
|
|
56
73
|
const gatewayUrl = process.env.MLB_GATEWAY_URL || DEFAULT_GATEWAY_URL;
|
|
57
74
|
const log = createLogger(buddyId);
|
|
58
75
|
const client = new MLBClient({ gatewayUrl, token, log });
|
|
59
|
-
const dir = buddyDir();
|
|
60
76
|
const dataRequirements = loadDataAccessRequirements(dir);
|
|
61
77
|
try {
|
|
62
78
|
await client.dataAccessRequirementsUpload(dataRequirements);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,8HAA8H;AAC9H,0IAA0I;AAC1I,oFAAoF;AACpF,mGAAmG;AACnG,0EAA0E;AAE1E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAElG,wDAAwD;AACxD,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAExD,gDAAgD;AAChD,MAAM,aAAa,GAAG,WAAW,CAAC;AAElC,gFAAgF;AAChF,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,0BAA0B;AAC1B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,SAAS,QAAQ;IAChB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9D,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,SAAS,CAAC;QACT,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,GAAW;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvC,IAAI,GAA0B,CAAC;IAC/B,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA0B,CAAC;IACvE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mDAAmD,CAAC,CAAC;IACvI,OAAO,GAAG,CAAC,OAAO,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,WAAW;IACvB,iDAAiD;IACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAmB;QACrC,gEAAgE;QAChE,oFAAoF;QACpF,2EAA2E;QAC3E,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,mBAAmB,CAAC;QACtE,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC;YACJ,MAAM,MAAM,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;YAC5J,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;QAE3I,2DAA2D;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YACnG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAE/E,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5E,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACxF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAqD,CAAC;YAC5E,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;YACtG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;QACxD,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,2BAA2B;QAC3B,MAAM,cAAc,GAAG,CAAC,GAAW,EAAsB,EAAE;YAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC;YAChE,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC;gBAC3C,GAAG;gBACH,OAAO;gBACP,MAAM;gBACN,UAAU;gBACV,QAAQ;gBACR,KAAK;gBACL,WAAW;gBACX,SAAS;gBACT,gBAAgB;gBAChB,OAAO,EAAE,KAAK;gBACd,GAAG;gBACH,aAAa,EAAE,GAAG,EAAE;oBACnB,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY;wBAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvE,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC3B,CAAC;aACD,CAAC,CAAC;YACH,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACrC,OAAO,YAAY,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAQ,EAAE;YAC9D,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,YAAY,KAAK,SAAS;gBAAE,OAAO;YACvC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5C,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAQ,EAAE;YAC3C,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,uCAAuC;gBACvC,0CAA0C;gBAC1C,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC3C,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO;YACR,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;oBACxB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxD,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;wBAAE,OAAO;oBAClD,IAAI,MAAM,CAAC;oBACX,IAAI,CAAC;wBACJ,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAChE,CAAC;oBAAC,MAAM,CAAC;wBACR,MAAM,GAAG,EAAE,MAAM,EAAE,QAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;oBACtE,CAAC;oBACD,wDAAwD;oBACxD,yCAAyC;oBACzC,IAAI,MAAM,KAAK,SAAS;wBAAE,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACnG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;qBAC5E,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpD,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACtC,OAAO;YACR,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC1G,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpE,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QACvD,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,QAA4B,EAAQ,EAAE;YAC3E,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YACjC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;YACpC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,KAAK,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC;iBACtG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC7E,OAAO,CAAC,GAAG,EAAE;gBACb,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK;oBAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC;gBACjD,IAAI,YAAY,CAAC,IAAI,IAAI,GAAG,GAAG,YAAY,CAAC,YAAY,IAAI,aAAa;oBAAE,SAAS;gBACpF,mCAAmC;gBACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;gBACtD,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9B,IAAI,QAAQ,KAAK,SAAS;oBAAE,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5D,CAAC;QACF,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtB,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;YACtC,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;YACxF,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAE3C,OAAO,EAAE,IAAI,EAAE,CAAC;IACjB,CAAC;CACD"}
|