@eko-ai/eko 2.0.2-alpha.4 → 2.0.2-alpha.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser_labels.d.ts","sourceRoot":"","sources":["../../../src/agent/browser/browser_labels.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,sBAAuB,SAAQ,gBAAgB;gBAC/D,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU;cAmCvD,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;cAOA,aAAa,CAC3B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAClC,OAAO,CAAC,IAAI,CAAC;cAMA,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;cAaA,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"browser_labels.d.ts","sourceRoot":"","sources":["../../../src/agent/browser/browser_labels.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,sBAAuB,SAAQ,gBAAgB;gBAC/D,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU;cAmCvD,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;cAOA,aAAa,CAC3B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAClC,OAAO,CAAC,IAAI,CAAC;cAMA,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;cAaA,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;cAgBA,gBAAgB,CAC9B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;cAIA,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC;QACvE,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC;QACtC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAqCF,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInD,OAAO,CAAC,cAAc;cA4RN,cAAc,CAC5B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC;CA6BjB"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -15681,93 +15681,57 @@ request_help: Request assistance from the user; for instance, when an operation
|
|
|
15681
15681
|
description: "The type of interaction with users.",
|
|
15682
15682
|
enum: ["confirm", "input", "select", "request_help"],
|
|
15683
15683
|
},
|
|
15684
|
-
|
|
15685
|
-
type: "
|
|
15686
|
-
|
|
15687
|
-
prompt: {
|
|
15688
|
-
type: "string",
|
|
15689
|
-
description: "Display prompts to users",
|
|
15690
|
-
},
|
|
15691
|
-
},
|
|
15692
|
-
required: ["prompt"],
|
|
15684
|
+
prompt: {
|
|
15685
|
+
type: "string",
|
|
15686
|
+
description: "Display prompts to users",
|
|
15693
15687
|
},
|
|
15694
|
-
|
|
15695
|
-
type: "
|
|
15696
|
-
|
|
15697
|
-
|
|
15698
|
-
|
|
15699
|
-
description: "Display prompts to users",
|
|
15700
|
-
},
|
|
15688
|
+
selectOptions: {
|
|
15689
|
+
type: "array",
|
|
15690
|
+
description: "Options provided to users, this parameter is required when interactType is select.",
|
|
15691
|
+
items: {
|
|
15692
|
+
type: "string",
|
|
15701
15693
|
},
|
|
15702
|
-
required: ["prompt"],
|
|
15703
15694
|
},
|
|
15704
|
-
|
|
15705
|
-
type: "
|
|
15706
|
-
|
|
15707
|
-
prompt: {
|
|
15708
|
-
type: "string",
|
|
15709
|
-
description: "Display prompts to users",
|
|
15710
|
-
},
|
|
15711
|
-
options: {
|
|
15712
|
-
type: "array",
|
|
15713
|
-
description: "Options provided to the user",
|
|
15714
|
-
items: {
|
|
15715
|
-
type: "string",
|
|
15716
|
-
},
|
|
15717
|
-
},
|
|
15718
|
-
multiple: {
|
|
15719
|
-
type: "boolean",
|
|
15720
|
-
},
|
|
15721
|
-
},
|
|
15722
|
-
required: ["prompt", "options"],
|
|
15695
|
+
selectMultiple: {
|
|
15696
|
+
type: "boolean",
|
|
15697
|
+
description: "isMultiple, used when interactType is select",
|
|
15723
15698
|
},
|
|
15724
|
-
|
|
15725
|
-
type: "
|
|
15726
|
-
|
|
15727
|
-
|
|
15728
|
-
type: "string",
|
|
15729
|
-
description: "Display prompts to users",
|
|
15730
|
-
enum: ["request_login", "request_assistance"],
|
|
15731
|
-
},
|
|
15732
|
-
prompt: {
|
|
15733
|
-
type: "string",
|
|
15734
|
-
description: "Display prompts to users",
|
|
15735
|
-
},
|
|
15736
|
-
},
|
|
15737
|
-
required: ["helpType", "prompt"],
|
|
15699
|
+
helpType: {
|
|
15700
|
+
type: "string",
|
|
15701
|
+
description: "Help type, required when interactType is request_help.",
|
|
15702
|
+
enum: ["request_login", "request_assistance"],
|
|
15738
15703
|
},
|
|
15739
15704
|
},
|
|
15740
|
-
required: ["interactType"],
|
|
15705
|
+
required: ["interactType", "prompt"],
|
|
15741
15706
|
};
|
|
15742
15707
|
}
|
|
15743
15708
|
async execute(args, agentContext) {
|
|
15744
15709
|
let interactType = args.interactType;
|
|
15745
|
-
let interact = args[interactType];
|
|
15746
15710
|
let callback = agentContext.context.config.callback;
|
|
15747
15711
|
let resultText = "";
|
|
15748
15712
|
if (callback) {
|
|
15749
15713
|
switch (interactType) {
|
|
15750
15714
|
case "confirm":
|
|
15751
15715
|
if (callback.onHumanConfirm) {
|
|
15752
|
-
let result = await callback.onHumanConfirm(agentContext,
|
|
15716
|
+
let result = await callback.onHumanConfirm(agentContext, args.prompt);
|
|
15753
15717
|
resultText = `confirm result: ${result ? "Yes" : "No"}`;
|
|
15754
15718
|
}
|
|
15755
15719
|
break;
|
|
15756
15720
|
case "input":
|
|
15757
15721
|
if (callback.onHumanInput) {
|
|
15758
|
-
let result = await callback.onHumanInput(agentContext,
|
|
15722
|
+
let result = await callback.onHumanInput(agentContext, args.prompt);
|
|
15759
15723
|
resultText = `input result: ${result}`;
|
|
15760
15724
|
}
|
|
15761
15725
|
break;
|
|
15762
15726
|
case "select":
|
|
15763
15727
|
if (callback.onHumanSelect) {
|
|
15764
|
-
let result = await callback.onHumanSelect(agentContext,
|
|
15728
|
+
let result = await callback.onHumanSelect(agentContext, args.prompt, (args.selectOptions || []), (args.selectMultiple || false));
|
|
15765
15729
|
resultText = `select result: ${JSON.stringify(result)}`;
|
|
15766
15730
|
}
|
|
15767
15731
|
break;
|
|
15768
15732
|
case "request_help":
|
|
15769
15733
|
if (callback.onHumanHelp) {
|
|
15770
|
-
let result = await callback.onHumanHelp(agentContext,
|
|
15734
|
+
let result = await callback.onHumanHelp(agentContext, (args.helpType || "request_assistance"), args.prompt);
|
|
15771
15735
|
resultText = `request_help result: ${result ? "Solved" : "Unresolved"}`;
|
|
15772
15736
|
}
|
|
15773
15737
|
break;
|
|
@@ -15980,9 +15944,10 @@ UTC datetime: {datetime}
|
|
|
15980
15944
|
</root>
|
|
15981
15945
|
`;
|
|
15982
15946
|
const HUMAN_PROMPT = `
|
|
15983
|
-
During the task execution process, you can use the \`${TOOL_NAME$3}\` tool to interact with humans
|
|
15947
|
+
During the task execution process, you can use the \`${TOOL_NAME$3}\` tool to interact with humans, please call it in the following situations:
|
|
15984
15948
|
- When performing dangerous operations such as deleting files, confirmation from humans is required
|
|
15985
15949
|
- When encountering obstacles while accessing websites, such as requiring user login, you need to request human assistance
|
|
15950
|
+
- Try not to use the \`${TOOL_NAME$3}\` tool
|
|
15986
15951
|
`;
|
|
15987
15952
|
const VARIABLE_PROMPT = `
|
|
15988
15953
|
If you need to read and write the input/output variables in the node, require the use of the \`${TOOL_NAME$1}\` tool.
|
|
@@ -18533,7 +18498,11 @@ class BaseBrowserLabelsAgent extends BaseBrowserAgent {
|
|
|
18533
18498
|
}
|
|
18534
18499
|
async scroll_mouse_wheel(agentContext, amount) {
|
|
18535
18500
|
await this.execute_script(agentContext, (amount) => {
|
|
18536
|
-
window.
|
|
18501
|
+
let viewportHeight = window.innerHeight ||
|
|
18502
|
+
document.documentElement.clientHeight ||
|
|
18503
|
+
document.body.clientHeight;
|
|
18504
|
+
let y = Math.max(20, Math.min(viewportHeight / 10, 200));
|
|
18505
|
+
window.scrollBy(0, y * amount);
|
|
18537
18506
|
}, [amount]);
|
|
18538
18507
|
await sleep(200);
|
|
18539
18508
|
}
|
|
@@ -18789,7 +18758,9 @@ class BaseBrowserLabelsAgent extends BaseBrowserAgent {
|
|
|
18789
18758
|
}
|
|
18790
18759
|
async handleMessages(agentContext, messages) {
|
|
18791
18760
|
let lastTool = this.lastToolResult(messages);
|
|
18792
|
-
if (lastTool &&
|
|
18761
|
+
if (lastTool &&
|
|
18762
|
+
lastTool.toolName !== "extract_content" &&
|
|
18763
|
+
lastTool.toolName !== "get_all_tabs") {
|
|
18793
18764
|
await sleep(200);
|
|
18794
18765
|
let result = await this.screenshot_and_html(agentContext);
|
|
18795
18766
|
let image = toImage(result.imageBase64);
|
package/dist/index.esm.js
CHANGED
|
@@ -15646,93 +15646,57 @@ request_help: Request assistance from the user; for instance, when an operation
|
|
|
15646
15646
|
description: "The type of interaction with users.",
|
|
15647
15647
|
enum: ["confirm", "input", "select", "request_help"],
|
|
15648
15648
|
},
|
|
15649
|
-
|
|
15650
|
-
type: "
|
|
15651
|
-
|
|
15652
|
-
prompt: {
|
|
15653
|
-
type: "string",
|
|
15654
|
-
description: "Display prompts to users",
|
|
15655
|
-
},
|
|
15656
|
-
},
|
|
15657
|
-
required: ["prompt"],
|
|
15649
|
+
prompt: {
|
|
15650
|
+
type: "string",
|
|
15651
|
+
description: "Display prompts to users",
|
|
15658
15652
|
},
|
|
15659
|
-
|
|
15660
|
-
type: "
|
|
15661
|
-
|
|
15662
|
-
|
|
15663
|
-
|
|
15664
|
-
description: "Display prompts to users",
|
|
15665
|
-
},
|
|
15653
|
+
selectOptions: {
|
|
15654
|
+
type: "array",
|
|
15655
|
+
description: "Options provided to users, this parameter is required when interactType is select.",
|
|
15656
|
+
items: {
|
|
15657
|
+
type: "string",
|
|
15666
15658
|
},
|
|
15667
|
-
required: ["prompt"],
|
|
15668
15659
|
},
|
|
15669
|
-
|
|
15670
|
-
type: "
|
|
15671
|
-
|
|
15672
|
-
prompt: {
|
|
15673
|
-
type: "string",
|
|
15674
|
-
description: "Display prompts to users",
|
|
15675
|
-
},
|
|
15676
|
-
options: {
|
|
15677
|
-
type: "array",
|
|
15678
|
-
description: "Options provided to the user",
|
|
15679
|
-
items: {
|
|
15680
|
-
type: "string",
|
|
15681
|
-
},
|
|
15682
|
-
},
|
|
15683
|
-
multiple: {
|
|
15684
|
-
type: "boolean",
|
|
15685
|
-
},
|
|
15686
|
-
},
|
|
15687
|
-
required: ["prompt", "options"],
|
|
15660
|
+
selectMultiple: {
|
|
15661
|
+
type: "boolean",
|
|
15662
|
+
description: "isMultiple, used when interactType is select",
|
|
15688
15663
|
},
|
|
15689
|
-
|
|
15690
|
-
type: "
|
|
15691
|
-
|
|
15692
|
-
|
|
15693
|
-
type: "string",
|
|
15694
|
-
description: "Display prompts to users",
|
|
15695
|
-
enum: ["request_login", "request_assistance"],
|
|
15696
|
-
},
|
|
15697
|
-
prompt: {
|
|
15698
|
-
type: "string",
|
|
15699
|
-
description: "Display prompts to users",
|
|
15700
|
-
},
|
|
15701
|
-
},
|
|
15702
|
-
required: ["helpType", "prompt"],
|
|
15664
|
+
helpType: {
|
|
15665
|
+
type: "string",
|
|
15666
|
+
description: "Help type, required when interactType is request_help.",
|
|
15667
|
+
enum: ["request_login", "request_assistance"],
|
|
15703
15668
|
},
|
|
15704
15669
|
},
|
|
15705
|
-
required: ["interactType"],
|
|
15670
|
+
required: ["interactType", "prompt"],
|
|
15706
15671
|
};
|
|
15707
15672
|
}
|
|
15708
15673
|
async execute(args, agentContext) {
|
|
15709
15674
|
let interactType = args.interactType;
|
|
15710
|
-
let interact = args[interactType];
|
|
15711
15675
|
let callback = agentContext.context.config.callback;
|
|
15712
15676
|
let resultText = "";
|
|
15713
15677
|
if (callback) {
|
|
15714
15678
|
switch (interactType) {
|
|
15715
15679
|
case "confirm":
|
|
15716
15680
|
if (callback.onHumanConfirm) {
|
|
15717
|
-
let result = await callback.onHumanConfirm(agentContext,
|
|
15681
|
+
let result = await callback.onHumanConfirm(agentContext, args.prompt);
|
|
15718
15682
|
resultText = `confirm result: ${result ? "Yes" : "No"}`;
|
|
15719
15683
|
}
|
|
15720
15684
|
break;
|
|
15721
15685
|
case "input":
|
|
15722
15686
|
if (callback.onHumanInput) {
|
|
15723
|
-
let result = await callback.onHumanInput(agentContext,
|
|
15687
|
+
let result = await callback.onHumanInput(agentContext, args.prompt);
|
|
15724
15688
|
resultText = `input result: ${result}`;
|
|
15725
15689
|
}
|
|
15726
15690
|
break;
|
|
15727
15691
|
case "select":
|
|
15728
15692
|
if (callback.onHumanSelect) {
|
|
15729
|
-
let result = await callback.onHumanSelect(agentContext,
|
|
15693
|
+
let result = await callback.onHumanSelect(agentContext, args.prompt, (args.selectOptions || []), (args.selectMultiple || false));
|
|
15730
15694
|
resultText = `select result: ${JSON.stringify(result)}`;
|
|
15731
15695
|
}
|
|
15732
15696
|
break;
|
|
15733
15697
|
case "request_help":
|
|
15734
15698
|
if (callback.onHumanHelp) {
|
|
15735
|
-
let result = await callback.onHumanHelp(agentContext,
|
|
15699
|
+
let result = await callback.onHumanHelp(agentContext, (args.helpType || "request_assistance"), args.prompt);
|
|
15736
15700
|
resultText = `request_help result: ${result ? "Solved" : "Unresolved"}`;
|
|
15737
15701
|
}
|
|
15738
15702
|
break;
|
|
@@ -15945,9 +15909,10 @@ UTC datetime: {datetime}
|
|
|
15945
15909
|
</root>
|
|
15946
15910
|
`;
|
|
15947
15911
|
const HUMAN_PROMPT = `
|
|
15948
|
-
During the task execution process, you can use the \`${TOOL_NAME$3}\` tool to interact with humans
|
|
15912
|
+
During the task execution process, you can use the \`${TOOL_NAME$3}\` tool to interact with humans, please call it in the following situations:
|
|
15949
15913
|
- When performing dangerous operations such as deleting files, confirmation from humans is required
|
|
15950
15914
|
- When encountering obstacles while accessing websites, such as requiring user login, you need to request human assistance
|
|
15915
|
+
- Try not to use the \`${TOOL_NAME$3}\` tool
|
|
15951
15916
|
`;
|
|
15952
15917
|
const VARIABLE_PROMPT = `
|
|
15953
15918
|
If you need to read and write the input/output variables in the node, require the use of the \`${TOOL_NAME$1}\` tool.
|
|
@@ -18498,7 +18463,11 @@ class BaseBrowserLabelsAgent extends BaseBrowserAgent {
|
|
|
18498
18463
|
}
|
|
18499
18464
|
async scroll_mouse_wheel(agentContext, amount) {
|
|
18500
18465
|
await this.execute_script(agentContext, (amount) => {
|
|
18501
|
-
window.
|
|
18466
|
+
let viewportHeight = window.innerHeight ||
|
|
18467
|
+
document.documentElement.clientHeight ||
|
|
18468
|
+
document.body.clientHeight;
|
|
18469
|
+
let y = Math.max(20, Math.min(viewportHeight / 10, 200));
|
|
18470
|
+
window.scrollBy(0, y * amount);
|
|
18502
18471
|
}, [amount]);
|
|
18503
18472
|
await sleep(200);
|
|
18504
18473
|
}
|
|
@@ -18754,7 +18723,9 @@ class BaseBrowserLabelsAgent extends BaseBrowserAgent {
|
|
|
18754
18723
|
}
|
|
18755
18724
|
async handleMessages(agentContext, messages) {
|
|
18756
18725
|
let lastTool = this.lastToolResult(messages);
|
|
18757
|
-
if (lastTool &&
|
|
18726
|
+
if (lastTool &&
|
|
18727
|
+
lastTool.toolName !== "extract_content" &&
|
|
18728
|
+
lastTool.toolName !== "get_all_tabs") {
|
|
18758
18729
|
await sleep(200);
|
|
18759
18730
|
let result = await this.screenshot_and_html(agentContext);
|
|
18760
18731
|
let image = toImage(result.imageBase64);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/prompt/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,OAAO,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/prompt/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,OAAO,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAmEpD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CA8BR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,GACf,MAAM,CAOR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"human_interact.d.ts","sourceRoot":"","sources":["../../src/tools/human_interact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,IAAI;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAa;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;;
|
|
1
|
+
{"version":3,"file":"human_interact.d.ts","sourceRoot":"","sources":["../../src/tools/human_interact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,IAAI;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAa;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;;IA4C3B,OAAO,CACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,UAAU,CAAC;CAsEvB"}
|