agentcard 0.0.20 → 0.0.21
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/src/commands/cards/details.d.ts +2 -0
- package/dist/src/commands/cards/details.js +6 -0
- package/dist/src/commands/cards/details.js.map +1 -1
- package/dist/src/commands/cards/list.js +1 -1
- package/dist/src/commands/cards/list.js.map +1 -1
- package/dist/src/commands/limit.d.ts +3 -0
- package/dist/src/commands/limit.js +50 -0
- package/dist/src/commands/limit.js.map +1 -0
- package/dist/src/commands/mail/get.d.ts +1 -0
- package/dist/src/commands/mail/get.js +28 -0
- package/dist/src/commands/mail/get.js.map +1 -0
- package/dist/src/commands/mail/info.d.ts +1 -0
- package/dist/src/commands/mail/info.js +17 -0
- package/dist/src/commands/mail/info.js.map +1 -0
- package/dist/src/commands/mail/list.d.ts +4 -0
- package/dist/src/commands/mail/list.js +34 -0
- package/dist/src/commands/mail/list.js.map +1 -0
- package/dist/src/commands/mail/send.d.ts +8 -0
- package/dist/src/commands/mail/send.js +59 -0
- package/dist/src/commands/mail/send.js.map +1 -0
- package/dist/src/commands/request/get.d.ts +1 -0
- package/dist/src/commands/request/get.js +104 -0
- package/dist/src/commands/request/get.js.map +1 -0
- package/dist/src/commands/request/new.d.ts +1 -0
- package/dist/src/commands/request/new.js +82 -0
- package/dist/src/commands/request/new.js.map +1 -0
- package/dist/src/commands/setup.d.ts +8 -0
- package/dist/src/commands/setup.js +166 -0
- package/dist/src/commands/setup.js.map +1 -0
- package/dist/src/commands/signup.js +26 -17
- package/dist/src/commands/signup.js.map +1 -1
- package/dist/src/commands/whoami.js +5 -2
- package/dist/src/commands/whoami.js.map +1 -1
- package/dist/src/index.js +100 -36
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/api.d.ts +2 -0
- package/dist/src/lib/api.js +6 -0
- package/dist/src/lib/api.js.map +1 -1
- package/dist/src/lib/track-command.d.ts +8 -0
- package/dist/src/lib/track-command.js +54 -0
- package/dist/src/lib/track-command.js.map +1 -0
- package/dist/src/lib/update-check.js +21 -2
- package/dist/src/lib/update-check.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/commands/cards/create.d.ts +0 -1
- package/dist/src/commands/cards/create.js +0 -110
- package/dist/src/commands/cards/create.js.map +0 -1
- package/dist/src/commands/cards/refund.d.ts +0 -1
- package/dist/src/commands/cards/refund.js +0 -100
- package/dist/src/commands/cards/refund.js.map +0 -1
- package/dist/src/commands/track/purchase.d.ts +0 -8
- package/dist/src/commands/track/purchase.js +0 -25
- package/dist/src/commands/track/purchase.js.map +0 -1
|
@@ -18,6 +18,14 @@ export function getLocalVersion() {
|
|
|
18
18
|
}
|
|
19
19
|
throw new Error("Could not find agentcard package.json");
|
|
20
20
|
}
|
|
21
|
+
function detectPackageManager() {
|
|
22
|
+
const binPath = process.argv[1] ?? "";
|
|
23
|
+
if (binPath.includes("pnpm"))
|
|
24
|
+
return "pnpm";
|
|
25
|
+
if (binPath.includes("yarn"))
|
|
26
|
+
return "yarn";
|
|
27
|
+
return "npm";
|
|
28
|
+
}
|
|
21
29
|
function getLatestVersion() {
|
|
22
30
|
try {
|
|
23
31
|
const result = execSync("npm view agentcard version", {
|
|
@@ -38,9 +46,15 @@ export function checkForUpdate() {
|
|
|
38
46
|
const latest = getLatestVersion();
|
|
39
47
|
if (!latest || !semver.gt(latest, local))
|
|
40
48
|
return false;
|
|
49
|
+
const pm = detectPackageManager();
|
|
50
|
+
const installCmds = {
|
|
51
|
+
npm: `npm install -g agentcard@${latest}`,
|
|
52
|
+
pnpm: `pnpm add -g agentcard@${latest}`,
|
|
53
|
+
yarn: `yarn global add agentcard@${latest}`,
|
|
54
|
+
};
|
|
41
55
|
console.log(chalk.yellow(`Updating agentcard ${local} → ${latest}...`));
|
|
42
56
|
try {
|
|
43
|
-
execSync(
|
|
57
|
+
execSync(installCmds[pm], {
|
|
44
58
|
stdio: ["pipe", "pipe", "pipe"],
|
|
45
59
|
timeout: 60000,
|
|
46
60
|
});
|
|
@@ -49,7 +63,12 @@ export function checkForUpdate() {
|
|
|
49
63
|
return true;
|
|
50
64
|
}
|
|
51
65
|
catch {
|
|
52
|
-
|
|
66
|
+
const manualCmds = {
|
|
67
|
+
npm: "npm install -g agentcard",
|
|
68
|
+
pnpm: "pnpm add -g agentcard",
|
|
69
|
+
yarn: "yarn global add agentcard",
|
|
70
|
+
};
|
|
71
|
+
console.error(chalk.yellow(`Update available: ${local} → ${latest}. Run: ${manualCmds[pm]}`));
|
|
53
72
|
console.log("");
|
|
54
73
|
return false;
|
|
55
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/lib/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,eAAe;IAC7B,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,4BAA4B,EAAE;YACpD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function createCard(amount?: string): Promise<void>;
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import inquirer from "inquirer";
|
|
3
|
-
import open from "open";
|
|
4
|
-
import ora from "ora";
|
|
5
|
-
import { get, post } from "../../lib/api.js";
|
|
6
|
-
import { printCardDetails } from "./details.js";
|
|
7
|
-
const POLL_INTERVAL = 2000;
|
|
8
|
-
const TIMEOUT = 10 * 60 * 1000;
|
|
9
|
-
function formatDollars(cents) {
|
|
10
|
-
return `$${(cents / 100).toFixed(2)}`;
|
|
11
|
-
}
|
|
12
|
-
export async function createCard(amount) {
|
|
13
|
-
let dollars;
|
|
14
|
-
if (amount) {
|
|
15
|
-
dollars = parseInt(amount, 10);
|
|
16
|
-
if (isNaN(dollars) || dollars <= 0) {
|
|
17
|
-
console.error(chalk.red("Amount must be a positive integer (in dollars)."));
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
const { rawAmount } = await inquirer.prompt([
|
|
23
|
-
{
|
|
24
|
-
type: "input",
|
|
25
|
-
name: "rawAmount",
|
|
26
|
-
message: "Enter card amount in dollars (multiples of $5, up to $200):",
|
|
27
|
-
validate: (v) => {
|
|
28
|
-
const n = parseFloat(v);
|
|
29
|
-
if (isNaN(n) || n <= 0)
|
|
30
|
-
return "Enter a valid dollar amount";
|
|
31
|
-
if (!Number.isInteger(n) || n % 5 !== 0)
|
|
32
|
-
return "Amount must be a multiple of $5 (e.g. 5, 10, 15, 20)";
|
|
33
|
-
if (n < 5)
|
|
34
|
-
return "Minimum amount is $5";
|
|
35
|
-
if (n > 200)
|
|
36
|
-
return "Maximum amount is $200";
|
|
37
|
-
return true;
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
]);
|
|
41
|
-
dollars = parseInt(rawAmount, 10);
|
|
42
|
-
}
|
|
43
|
-
if (dollars < 5 || dollars > 200 || dollars % 5 !== 0) {
|
|
44
|
-
console.error(chalk.red("Amount must be a multiple of $5, between $5 and $200."));
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
const spinner = ora("Creating checkout session...").start();
|
|
48
|
-
let purchase;
|
|
49
|
-
try {
|
|
50
|
-
purchase = await post("/api/cards/purchase", {
|
|
51
|
-
amountCents: dollars * 100,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
catch (err) {
|
|
55
|
-
spinner.fail(`Failed to create card: ${err instanceof Error ? err.message : "Unknown error"}`);
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
spinner.stop();
|
|
59
|
-
if (purchase.manualFulfillment) {
|
|
60
|
-
console.log("");
|
|
61
|
-
console.log(chalk.yellow("Note: Cards are currently being fulfilled manually. After payment, your card will be available within 72 hours."));
|
|
62
|
-
console.log(chalk.yellow("Run `agentcard list` to check when your card is ready."));
|
|
63
|
-
console.log("");
|
|
64
|
-
}
|
|
65
|
-
console.log(`Checkout URL: ${purchase.url}`);
|
|
66
|
-
if (purchase.manualFulfillment) {
|
|
67
|
-
// In manual mode, don't auto-open or poll — just show the URL
|
|
68
|
-
console.log("");
|
|
69
|
-
console.log(chalk.green("Complete payment at the URL above."));
|
|
70
|
-
console.log(chalk.dim("Your card will appear in `agentcard list` once fulfilled (up to 72 hours)."));
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
console.log(chalk.blue("Opening browser for payment..."));
|
|
74
|
-
await open(purchase.url);
|
|
75
|
-
const paymentSpinner = ora("Waiting for payment and card provisioning...").start();
|
|
76
|
-
const deadline = Date.now() + TIMEOUT;
|
|
77
|
-
while (Date.now() < deadline) {
|
|
78
|
-
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL));
|
|
79
|
-
try {
|
|
80
|
-
const status = await get(`/api/cards/purchase/status?session_id=${purchase.sessionId}`);
|
|
81
|
-
if (status.status === "complete" && status.card) {
|
|
82
|
-
paymentSpinner.succeed(chalk.green("Card purchased!"));
|
|
83
|
-
try {
|
|
84
|
-
const details = await get(`/api/cards/${status.card.id}/details`);
|
|
85
|
-
printCardDetails(details);
|
|
86
|
-
console.log(chalk.dim(` To view again: agentcard details ${status.card.id}`));
|
|
87
|
-
console.log("");
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
console.log(`Run \`agentcard details ${status.card.id}\` to view card details.`);
|
|
91
|
-
}
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (status.status === "failed") {
|
|
95
|
-
paymentSpinner.fail(chalk.red(status.error || "Card could not be provisioned. Your payment has been refunded."));
|
|
96
|
-
process.exit(1);
|
|
97
|
-
}
|
|
98
|
-
if (status.status === "expired") {
|
|
99
|
-
paymentSpinner.fail("Payment session expired. Please try again.");
|
|
100
|
-
process.exit(1);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
// Not ready yet, keep polling
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
paymentSpinner.fail("Payment timed out. Please try again.");
|
|
108
|
-
process.exit(1);
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function refundCard(cardId: string, amount?: string): Promise<void>;
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import inquirer from "inquirer";
|
|
3
|
-
import ora from "ora";
|
|
4
|
-
import { get, post } from "../../lib/api.js";
|
|
5
|
-
const POLL_INTERVAL = 2000;
|
|
6
|
-
const TIMEOUT = 10 * 60 * 1000;
|
|
7
|
-
export async function refundCard(cardId, amount) {
|
|
8
|
-
let dollars;
|
|
9
|
-
if (amount) {
|
|
10
|
-
dollars = parseFloat(amount);
|
|
11
|
-
if (isNaN(dollars) || dollars <= 0) {
|
|
12
|
-
console.error(chalk.red("Amount must be a positive number (in dollars)."));
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const { rawAmount } = await inquirer.prompt([
|
|
18
|
-
{
|
|
19
|
-
type: "input",
|
|
20
|
-
name: "rawAmount",
|
|
21
|
-
message: "Enter the amount to refund in dollars:",
|
|
22
|
-
validate: (v) => {
|
|
23
|
-
const n = parseFloat(v);
|
|
24
|
-
if (isNaN(n) || n <= 0)
|
|
25
|
-
return "Enter a valid dollar amount";
|
|
26
|
-
return true;
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
]);
|
|
30
|
-
dollars = parseFloat(rawAmount);
|
|
31
|
-
}
|
|
32
|
-
const amountCents = Math.round(dollars * 100);
|
|
33
|
-
// Fetch card details so the user knows exactly which card to use
|
|
34
|
-
const detailsSpinner = ora("Fetching card details...").start();
|
|
35
|
-
let card;
|
|
36
|
-
try {
|
|
37
|
-
card = await get(`/api/cards/${cardId}/details`);
|
|
38
|
-
}
|
|
39
|
-
catch (err) {
|
|
40
|
-
detailsSpinner.fail(`Failed to fetch card details: ${err instanceof Error ? err.message : "Unknown error"}`);
|
|
41
|
-
process.exit(1);
|
|
42
|
-
}
|
|
43
|
-
detailsSpinner.stop();
|
|
44
|
-
const expiry = `${String(card.expiryMonth).padStart(2, "0")}/${card.expiryYear}`;
|
|
45
|
-
console.log("");
|
|
46
|
-
console.log(chalk.bold(" Use this card on the checkout page:"));
|
|
47
|
-
console.log(chalk.dim(" ────────────────────────────"));
|
|
48
|
-
console.log(` Number: ${chalk.white(card.pan)}`);
|
|
49
|
-
console.log(` CVV: ${chalk.white(card.cvv)}`);
|
|
50
|
-
console.log(` Expiry: ${chalk.white(expiry)}`);
|
|
51
|
-
console.log(chalk.dim(" ────────────────────────────"));
|
|
52
|
-
console.log("");
|
|
53
|
-
console.log(chalk.yellow.bold(" Please make sure to use the card above on checkout to"));
|
|
54
|
-
console.log(chalk.yellow.bold(" ensure your refund ends up in the right place."));
|
|
55
|
-
console.log("");
|
|
56
|
-
const spinner = ora("Creating refund checkout session...").start();
|
|
57
|
-
let refund;
|
|
58
|
-
try {
|
|
59
|
-
refund = await post("/api/cards/refund", {
|
|
60
|
-
cardId,
|
|
61
|
-
amountCents,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
spinner.fail(`Failed to create refund: ${err instanceof Error ? err.message : "Unknown error"}`);
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
68
|
-
spinner.stop();
|
|
69
|
-
console.log(`Checkout URL: ${refund.url}`);
|
|
70
|
-
const pollSpinner = ora("Waiting for payment and refund processing...").start();
|
|
71
|
-
const deadline = Date.now() + TIMEOUT;
|
|
72
|
-
while (Date.now() < deadline) {
|
|
73
|
-
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL));
|
|
74
|
-
try {
|
|
75
|
-
const status = await get(`/api/cards/refund/status?session_id=${refund.sessionId}`);
|
|
76
|
-
if (status.status === "complete") {
|
|
77
|
-
const refundedDollars = status.refundedAmountCents
|
|
78
|
-
? `$${(status.refundedAmountCents / 100).toFixed(2)}`
|
|
79
|
-
: `$${dollars.toFixed(2)}`;
|
|
80
|
-
pollSpinner.succeed(chalk.green(`Refund of ${refundedDollars} processed! Funds will return to your original payment method.`));
|
|
81
|
-
console.log(chalk.dim(" Note: refunds typically appear within 5-10 business days."));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
if (status.status === "failed") {
|
|
85
|
-
pollSpinner.fail(chalk.red(status.error || "Refund failed. Please contact support."));
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
if (status.status === "expired") {
|
|
89
|
-
pollSpinner.fail("Checkout session expired. Please try again.");
|
|
90
|
-
process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
// Not ready yet, keep polling
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
pollSpinner.fail("Refund timed out. Please check your email or contact support.");
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=refund.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../../src/commands/cards/refund.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { post } from "../../lib/api.js";
|
|
3
|
-
export async function trackPurchase(opts) {
|
|
4
|
-
const amount = parseFloat(opts.amount);
|
|
5
|
-
if (isNaN(amount) || amount <= 0) {
|
|
6
|
-
console.error(chalk.red("Amount must be a positive number."));
|
|
7
|
-
process.exit(1);
|
|
8
|
-
}
|
|
9
|
-
try {
|
|
10
|
-
await post("/api/track/purchase", {
|
|
11
|
-
name: opts.name,
|
|
12
|
-
amount,
|
|
13
|
-
store: opts.store,
|
|
14
|
-
status: opts.incomplete ? "incomplete" : "complete",
|
|
15
|
-
intent: opts.intent,
|
|
16
|
-
cardId: opts.cardId,
|
|
17
|
-
});
|
|
18
|
-
console.log(chalk.green("Purchase tracked."));
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
console.error(chalk.red("Failed to track purchase."));
|
|
22
|
-
process.exit(1);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=purchase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../../../src/commands/track/purchase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAOnC;IACC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,qBAAqB,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;YACnD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|