const __vite_ssr_import_0__ = await __vite_ssr_import__("/node_modules/vitest/dist/index.js", {"importedNames":["describe","expect","it"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/app/lib/payloads.ts", {"importedNames":["buildRefundBody","buildSaleAttempts","extractCodes","extractTid","goodsPaid","saleAmount"]});


const order = {
  id: 13437378527577,
  name: "#1003",
  email: "buyer@example.com",
  currency: "PLN",
  subtotal_price: "10.00",
  note_attributes: [{ name: "fp_tid", value: "bf92936c-bbff-4c25-b257" }]
};
const link = { trackCoupons: true, couponPriority: "link" };
const attempts = (o, opts = link) => {
  const built = (0,__vite_ssr_import_1__.buildSaleAttempts)(o, opts);
  return built.ok ? built.body : built;
};
(0,__vite_ssr_import_0__.describe)("buildSaleAttempts", () => {
  (0,__vite_ssr_import_0__.it)("maps a referred order like the working Flow setup", () => {
    (0,__vite_ssr_import_0__.expect)(attempts(order)).toEqual([
      {
        uid: "#1003",
        event_id: "13437378527577",
        email: "buyer@example.com",
        amount: 1e3,
        currency: "PLN",
        tid: "bf92936c-bbff-4c25-b257"
      }
    ]);
  });
  (0,__vite_ssr_import_0__.it)("falls back to the numeric id when the order has no name", () => {
    (0,__vite_ssr_import_0__.expect)(attempts({ ...order, name: void 0 })).toMatchObject([
      { uid: "13437378527577" }
    ]);
  });
  (0,__vite_ssr_import_0__.it)("skips orders with neither affiliate link nor code", () => {
    const plain = { ...order, note_attributes: [] };
    (0,__vite_ssr_import_0__.expect)(attempts(plain)).toEqual({ ok: false, reason: "no_link_or_code" });
  });
  (0,__vite_ssr_import_0__.it)("treats an empty fp_tid as missing", () => {
    const empty = { ...order, note_attributes: [{ name: "fp_tid", value: " " }] };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.extractTid)(empty)).toBeNull();
  });
  (0,__vite_ssr_import_0__.it)("reads the tid from a line item property (Buy it now skips the cart)", () => {
    const buyNow = {
      ...order,
      note_attributes: [],
      line_items: [{ properties: [{ name: "_fp_tid", value: "tid-from-item" }] }]
    };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.extractTid)(buyNow)).toBe("tid-from-item");
    (0,__vite_ssr_import_0__.expect)(attempts(buyNow)).toEqual([__vite_ssr_import_0__.expect.objectContaining({ tid: "tid-from-item" })]);
  });
  (0,__vite_ssr_import_0__.it)("prefers the cart attribute over a line item property", () => {
    const both = {
      ...order,
      line_items: [{ properties: [{ name: "_fp_tid", value: "other" }] }]
    };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.extractTid)(both)).toBe("bf92936c-bbff-4c25-b257");
  });
  (0,__vite_ssr_import_0__.it)("skips zero and invalid amounts", () => {
    (0,__vite_ssr_import_0__.expect)(attempts({ ...order, subtotal_price: "0.00" })).toEqual({ ok: false, reason: "zero_amount" });
    (0,__vite_ssr_import_0__.expect)(attempts({ ...order, subtotal_price: null })).toEqual({ ok: false, reason: "invalid_amount" });
  });
  (0,__vite_ssr_import_0__.it)("omits email when the order has none", () => {
    const result = attempts({ ...order, email: null });
    (0,__vite_ssr_import_0__.expect)("email" in result[0]).toBe(false);
  });
});
(0,__vite_ssr_import_0__.describe)("coupon attribution", () => {
  const both = { ...order, discount_codes: [{ code: "ANNA10" }] };
  (0,__vite_ssr_import_0__.it)("tries the link first and the code as fallback by default", () => {
    const result = attempts(both);
    (0,__vite_ssr_import_0__.expect)(result.map((a) => a.tid ?? a.promo_code)).toEqual([
      "bf92936c-bbff-4c25-b257",
      "ANNA10"
    ]);
  });
  (0,__vite_ssr_import_0__.it)("tries the code first when configured, keeping the link as fallback", () => {
    const result = attempts(both, { ...link, couponPriority: "code" });
    (0,__vite_ssr_import_0__.expect)(result.map((a) => a.tid ?? a.promo_code)).toEqual([
      "ANNA10",
      "bf92936c-bbff-4c25-b257"
    ]);
  });
  (0,__vite_ssr_import_0__.it)("tracks an order that only has a code", () => {
    const codeOnly = { ...order, note_attributes: [], discount_codes: [{ code: "ANNA10" }] };
    const result = attempts(codeOnly);
    (0,__vite_ssr_import_0__.expect)(result).toHaveLength(1);
    (0,__vite_ssr_import_0__.expect)(result[0]).toMatchObject({ promo_code: "ANNA10", event_id: "13437378527577", uid: "#1003" });
  });
  (0,__vite_ssr_import_0__.it)("ignores codes when coupon tracking is off", () => {
    const codeOnly = { ...order, note_attributes: [], discount_codes: [{ code: "ANNA10" }] };
    (0,__vite_ssr_import_0__.expect)(attempts(codeOnly, { ...link, trackCoupons: false })).toEqual({
      ok: false,
      reason: "no_link_or_code"
    });
  });
  (0,__vite_ssr_import_0__.it)("deduplicates codes and keeps at most two", () => {
    const many = {
      ...order,
      discount_codes: [{ code: "a" }, { code: "A" }, { code: " " }, { code: "b" }, { code: "c" }]
    };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.extractCodes)(many)).toEqual(["a", "b"]);
  });
});
(0,__vite_ssr_import_0__.describe)("buildRefundBody", () => {
  (0,__vite_ssr_import_0__.it)("sums line item subtotals in shop currency and links the sale", () => {
    const built = (0,__vite_ssr_import_1__.buildRefundBody)(
      {
        id: 555,
        order_id: 13437378527577,
        refund_line_items: [
          { subtotal_set: { shop_money: { amount: "4.00", currency_code: "PLN" } } },
          { subtotal_set: { shop_money: { amount: "1.50", currency_code: "PLN" } } }
        ]
      },
      "#1003"
    );
    (0,__vite_ssr_import_0__.expect)(built).toEqual({
      ok: true,
      body: {
        uid: "#1003",
        event_id: "refund-555",
        sale_event_id: "13437378527577",
        amount: "550",
        currency: "PLN"
      }
    });
  });
  (0,__vite_ssr_import_0__.it)("falls back to subtotal and omits currency when unknown", () => {
    const built = (0,__vite_ssr_import_1__.buildRefundBody)({
      id: 1,
      order_id: 2,
      refund_line_items: [{ subtotal: 3 }]
    });
    (0,__vite_ssr_import_0__.expect)(built.ok && built.body.amount).toBe("300");
    (0,__vite_ssr_import_0__.expect)(built.ok && "currency" in built.body).toBe(false);
  });
  (0,__vite_ssr_import_0__.it)("skips refunds that return no money (restock only)", () => {
    const restock = {
      id: 1,
      order_id: 2,
      refund_line_items: [{ subtotal: 540 }],
      transactions: []
    };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.buildRefundBody)(restock)).toEqual({ ok: false, reason: "no_money_refunded" });
  });
  (0,__vite_ssr_import_0__.it)("skips refunds of shipping only", () => {
    const shipping = {
      id: 1,
      order_id: 2,
      refund_line_items: [],
      refund_shipping_lines: [{ subtotal_amount_set: { shop_money: { amount: "15.00", currency_code: "USD" } } }],
      transactions: [{ kind: "refund", status: "success", amount: "15.00", currency: "USD" }]
    };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.buildRefundBody)(shipping)).toEqual({ ok: false, reason: "shipping_only" });
  });
  (0,__vite_ssr_import_0__.it)("sends the money returned, not the line subtotal (restocking fee kept)", () => {
    const built = (0,__vite_ssr_import_1__.buildRefundBody)({
      id: 1,
      order_id: 2,
      refund_line_items: [{ subtotal: 100 }],
      transactions: [{ kind: "refund", status: "success", amount: "90.00", currency: "USD" }]
    });
    (0,__vite_ssr_import_0__.expect)(built.ok && built.body.amount).toBe("9000");
  });
  (0,__vite_ssr_import_0__.it)("leaves out refunded shipping from a mixed refund", () => {
    const built = (0,__vite_ssr_import_1__.buildRefundBody)({
      id: 1,
      order_id: 2,
      refund_line_items: [{ subtotal: 100 }],
      refund_shipping_lines: [{ amount_set: { shop_money: { amount: "15.00" } } }],
      transactions: [{ kind: "refund", status: "success", amount: "115.00", currency: "USD" }]
    });
    (0,__vite_ssr_import_0__.expect)(built.ok && built.body.amount).toBe("10000");
  });
});
(0,__vite_ssr_import_0__.describe)("refunds scaled to the sale", () => {
  const byAmount = (amount) => ({
    id: 3,
    order_id: 2,
    refund_line_items: [],
    transactions: [{ kind: "refund", status: "success", amount, currency: "PLN" }]
  });
  (0,__vite_ssr_import_0__.it)("removes tax with the ratio of commission base to goods paid", () => {
    const built = (0,__vite_ssr_import_1__.buildRefundBody)(byAmount("123.00"), "#1", { amount: 1e4, goodsPaid: 12300, refunded: 0 });
    (0,__vite_ssr_import_0__.expect)(built.ok && built.body.amount).toBe("10000");
  });
  (0,__vite_ssr_import_0__.it)("never refunds more than the sale left", () => {
    const sale = { amount: 6e4, goodsPaid: 6e4, refunded: 0 };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.buildRefundBody)(byAmount("615.00"), "#1", sale).body.amount).toBe("60000");
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.buildRefundBody)(byAmount("10.00"), "#1", { ...sale, refunded: 6e4 })).toEqual({
      ok: false,
      reason: "nothing_left_to_refund"
    });
  });
});
(0,__vite_ssr_import_0__.describe)("saleAmount and goodsPaid", () => {
  (0,__vite_ssr_import_0__.it)("removes line taxes when prices include tax", () => {
    const vat = {
      ...order,
      subtotal_price: "123.00",
      taxes_included: true,
      total_tax: "23.00",
      line_items: [{ tax_lines: [{ price_set: { shop_money: { amount: "23.00" } } }] }]
    };
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.saleAmount)(vat)).toBe(1e4);
    (0,__vite_ssr_import_0__.expect)(attempts(vat)).toEqual([__vite_ssr_import_0__.expect.objectContaining({ amount: 1e4 })]);
  });
  (0,__vite_ssr_import_0__.it)("falls back to total_tax when lines carry no tax", () => {
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.saleAmount)({ ...order, subtotal_price: "123.00", taxes_included: true, total_tax: "23.00" })).toBe(1e4);
  });
  (0,__vite_ssr_import_0__.it)("keeps the subtotal when tax is added on top", () => {
    (0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_1__.saleAmount)({ ...order, total_tax: "2.30" })).toBe(1e3);
  });
  (0,__vite_ssr_import_0__.it)("is the total without shipping", () => {
    const paid = (0,__vite_ssr_import_1__.goodsPaid)({
      ...order,
      total_price: "138.00",
      total_shipping_price_set: { shop_money: { amount: "15.00" } }
    });
    (0,__vite_ssr_import_0__.expect)(paid).toBe(12300);
  });
});
(0,__vite_ssr_import_0__.describe)("refund of an amount without product lines", () => {
  (0,__vite_ssr_import_0__.it)("uses the refund transactions", () => {
    const result = (0,__vite_ssr_import_1__.buildRefundBody)(
      {
        id: 5,
        order_id: 7,
        refund_line_items: [],
        transactions: [
          { kind: "refund", status: "success", amount: "12.50", currency: "USD" },
          { kind: "sale", status: "success", amount: "99.00", currency: "USD" },
          { kind: "refund", status: "failure", amount: "5.00", currency: "USD" }
        ]
      },
      "#1100"
    );
    (0,__vite_ssr_import_0__.expect)(result).toMatchObject({
      ok: true,
      body: { uid: "#1100", amount: "1250", currency: "USD", event_id: "refund-5", sale_event_id: "7" }
    });
  });
});
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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LENBQUMsRUFBRSxLQUFLLEdBQUk7QUFBQSxFQUMvRCxDQUFDO0FBQ0QsK0JBQUcsaUNBQWlDLE1BQU07QUFDeEMsVUFBTSxVQUFPLGlDQUFVO0FBQUEsTUFDckIsR0FBRztBQUFBLE1BQ0gsYUFBYTtBQUFBLE1BQ2IsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLFFBQVEsUUFBUSxFQUFFO0FBQUEsSUFDOUQsQ0FBQztBQUNELHFDQUFPLElBQUksRUFBRSxLQUFLLEtBQUs7QUFBQSxFQUN6QixDQUFDO0FBQ0gsQ0FBQztHQUVELGdDQUFTLDZDQUE2QyxNQUFNO0FBQzFELCtCQUFHLGdDQUFnQyxNQUFNO0FBQ3ZDLFVBQU0sWUFBUztBQUFBLE1BQ2I7QUFBQSxRQUNFLElBQUk7QUFBQSxRQUNKLFVBQVU7QUFBQSxRQUNWLG1CQUFtQixDQUFDO0FBQUEsUUFDcEIsY0FBYztBQUFBLFVBQ1osRUFBRSxNQUFNLFVBQVUsUUFBUSxXQUFXLFFBQVEsU0FBUyxVQUFVLE1BQU07QUFBQSxVQUN0RSxFQUFFLE1BQU0sUUFBUSxRQUFRLFdBQVcsUUFBUSxTQUFTLFVBQVUsTUFBTTtBQUFBLFVBQ3BFLEVBQUUsTUFBTSxVQUFVLFFBQVEsV0FBVyxRQUFRLFFBQVEsVUFBVSxNQUFNO0FBQUEsUUFDdkU7QUFBQSxNQUNGO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFDQSxxQ0FBTyxNQUFNLEVBQUUsY0FBYztBQUFBLE1BQzNCLElBQUk7QUFBQSxNQUNKLE1BQU0sRUFBRSxLQUFLLFNBQVMsUUFBUSxRQUFRLFVBQVUsT0FBTyxVQUFVLFlBQVksZUFBZSxJQUFJO0FBQUEsSUFDbEcsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNILENBQUMiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbInBheWxvYWRzLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZXN0XCI7XG5pbXBvcnQge1xuICBidWlsZFJlZnVuZEJvZHksXG4gIGJ1aWxkU2FsZUF0dGVtcHRzLFxuICBleHRyYWN0Q29kZXMsXG4gIGV4dHJhY3RUaWQsXG4gIGdvb2RzUGFpZCxcbiAgc2FsZUFtb3VudCxcbiAgdHlwZSBPcmRlclBheWxvYWQsXG4gIHR5cGUgU2FsZU9wdGlvbnMsXG59IGZyb20gXCIuLi9hcHAvbGliL3BheWxvYWRzXCI7XG5cbmNvbnN0IG9yZGVyOiBPcmRlclBheWxvYWQgPSB7XG4gIGlkOiAxMzQzNzM3ODUyNzU3NyxcbiAgbmFtZTogXCIjMTAwM1wiLFxuICBlbWFpbDogXCJidXllckBleGFtcGxlLmNvbVwiLFxuICBjdXJyZW5jeTogXCJQTE5cIixcbiAgc3VidG90YWxfcHJpY2U6IFwiMTAuMDBcIixcbiAgbm90ZV9hdHRyaWJ1dGVzOiBbeyBuYW1lOiBcImZwX3RpZFwiLCB2YWx1ZTogXCJiZjkyOTM2Yy1iYmZmLTRjMjUtYjI1N1wiIH1dLFxufTtcblxuY29uc3QgbGluazogU2FsZU9wdGlvbnMgPSB7IHRyYWNrQ291cG9uczogdHJ1ZSwgY291cG9uUHJpb3JpdHk6IFwibGlua1wiIH07XG5jb25zdCBhdHRlbXB0cyA9IChvOiBPcmRlclBheWxvYWQsIG9wdHMgPSBsaW5rKSA9PiB7XG4gIGNvbnN0IGJ1aWx0ID0gYnVpbGRTYWxlQXR0ZW1wdHMobywgb3B0cyk7XG4gIHJldHVybiBidWlsdC5vayA/IGJ1aWx0LmJvZHkgOiBidWlsdDtcbn07XG5cbmRlc2NyaWJlKFwiYnVpbGRTYWxlQXR0ZW1wdHNcIiwgKCkgPT4ge1xuICBpdChcIm1hcHMgYSByZWZlcnJlZCBvcmRlciBsaWtlIHRoZSB3b3JraW5nIEZsb3cgc2V0dXBcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhdHRlbXB0cyhvcmRlcikpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICB1aWQ6IFwiIzEwMDNcIixcbiAgICAgICAgZXZlbnRfaWQ6IFwiMTM0MzczNzg1Mjc1NzdcIixcbiAgICAgICAgZW1haWw6IFwiYnV5ZXJAZXhhbXBsZS5jb21cIixcbiAgICAgICAgYW1vdW50OiAxMDAwLFxuICAgICAgICBjdXJyZW5jeTogXCJQTE5cIixcbiAgICAgICAgdGlkOiBcImJmOTI5MzZjLWJiZmYtNGMyNS1iMjU3XCIsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbiAgaXQoXCJmYWxscyBiYWNrIHRvIHRoZSBudW1lcmljIGlkIHdoZW4gdGhlIG9yZGVyIGhhcyBubyBuYW1lXCIsICgpID0+IHtcbiAgICBleHBlY3QoYXR0ZW1wdHMoeyAuLi5vcmRlciwgbmFtZTogdW5kZWZpbmVkIH0pKS50b01hdGNoT2JqZWN0KFtcbiAgICAgIHsgdWlkOiBcIjEzNDM3Mzc4NTI3NTc3XCIgfSxcbiAgICBdKTtcbiAgfSk7XG4gIGl0KFwic2tpcHMgb3JkZXJzIHdpdGggbmVpdGhlciBhZmZpbGlhdGUgbGluayBub3IgY29kZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgcGxhaW4gPSB7IC4uLm9yZGVyLCBub3RlX2F0dHJpYnV0ZXM6IFtdIH07XG4gICAgZXhwZWN0KGF0dGVtcHRzKHBsYWluKSkudG9FcXVhbCh7IG9rOiBmYWxzZSwgcmVhc29uOiBcIm5vX2xpbmtfb3JfY29kZVwiIH0pO1xuICB9KTtcbiAgaXQoXCJ0cmVhdHMgYW4gZW1wdHkgZnBfdGlkIGFzIG1pc3NpbmdcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGVtcHR5ID0geyAuLi5vcmRlciwgbm90ZV9hdHRyaWJ1dGVzOiBbeyBuYW1lOiBcImZwX3RpZFwiLCB2YWx1ZTogXCIgXCIgfV0gfTtcbiAgICBleHBlY3QoZXh0cmFjdFRpZChlbXB0eSkpLnRvQmVOdWxsKCk7XG4gIH0pO1xuICBpdChcInJlYWRzIHRoZSB0aWQgZnJvbSBhIGxpbmUgaXRlbSBwcm9wZXJ0eSAoQnV5IGl0IG5vdyBza2lwcyB0aGUgY2FydClcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGJ1eU5vdzogT3JkZXJQYXlsb2FkID0ge1xuICAgICAgLi4ub3JkZXIsXG4gICAgICBub3RlX2F0dHJpYnV0ZXM6IFtdLFxuICAgICAgbGluZV9pdGVtczogW3sgcHJvcGVydGllczogW3sgbmFtZTogXCJfZnBfdGlkXCIsIHZhbHVlOiBcInRpZC1mcm9tLWl0ZW1cIiB9XSB9XSxcbiAgICB9O1xuICAgIGV4cGVjdChleHRyYWN0VGlkKGJ1eU5vdykpLnRvQmUoXCJ0aWQtZnJvbS1pdGVtXCIpO1xuICAgIGV4cGVjdChhdHRlbXB0cyhidXlOb3cpKS50b0VxdWFsKFtleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7IHRpZDogXCJ0aWQtZnJvbS1pdGVtXCIgfSldKTtcbiAgfSk7XG4gIGl0KFwicHJlZmVycyB0aGUgY2FydCBhdHRyaWJ1dGUgb3ZlciBhIGxpbmUgaXRlbSBwcm9wZXJ0eVwiLCAoKSA9PiB7XG4gICAgY29uc3QgYm90aDogT3JkZXJQYXlsb2FkID0ge1xuICAgICAgLi4ub3JkZXIsXG4gICAgICBsaW5lX2l0ZW1zOiBbeyBwcm9wZXJ0aWVzOiBbeyBuYW1lOiBcIl9mcF90aWRcIiwgdmFsdWU6IFwib3RoZXJcIiB9XSB9XSxcbiAgICB9O1xuICAgIGV4cGVjdChleHRyYWN0VGlkKGJvdGgpKS50b0JlKFwiYmY5MjkzNmMtYmJmZi00YzI1LWIyNTdcIik7XG4gIH0pO1xuICBpdChcInNraXBzIHplcm8gYW5kIGludmFsaWQgYW1vdW50c1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGF0dGVtcHRzKHsgLi4ub3JkZXIsIHN1YnRvdGFsX3ByaWNlOiBcIjAuMDBcIiB9KSkudG9FcXVhbCh7IG9rOiBmYWxzZSwgcmVhc29uOiBcInplcm9fYW1vdW50XCIgfSk7XG4gICAgZXhwZWN0KGF0dGVtcHRzKHsgLi4ub3JkZXIsIHN1YnRvdGFsX3ByaWNlOiBudWxsIH0pKS50b0VxdWFsKHsgb2s6IGZhbHNlLCByZWFzb246IFwiaW52YWxpZF9hbW91bnRcIiB9KTtcbiAgfSk7XG4gIGl0KFwib21pdHMgZW1haWwgd2hlbiB0aGUgb3JkZXIgaGFzIG5vbmVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF0dGVtcHRzKHsgLi4ub3JkZXIsIGVtYWlsOiBudWxsIH0pIGFzIG9iamVjdFtdO1xuICAgIGV4cGVjdChcImVtYWlsXCIgaW4gcmVzdWx0WzBdKS50b0JlKGZhbHNlKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJjb3Vwb24gYXR0cmlidXRpb25cIiwgKCkgPT4ge1xuICBjb25zdCBib3RoOiBPcmRlclBheWxvYWQgPSB7IC4uLm9yZGVyLCBkaXNjb3VudF9jb2RlczogW3sgY29kZTogXCJBTk5BMTBcIiB9XSB9O1xuICBpdChcInRyaWVzIHRoZSBsaW5rIGZpcnN0IGFuZCB0aGUgY29kZSBhcyBmYWxsYmFjayBieSBkZWZhdWx0XCIsICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhdHRlbXB0cyhib3RoKSBhcyBBcnJheTx7IHRpZD86IHN0cmluZzsgcHJvbW9fY29kZT86IHN0cmluZyB9PjtcbiAgICBleHBlY3QocmVzdWx0Lm1hcCgoYSkgPT4gYS50aWQgPz8gYS5wcm9tb19jb2RlKSkudG9FcXVhbChbXG4gICAgICBcImJmOTI5MzZjLWJiZmYtNGMyNS1iMjU3XCIsXG4gICAgICBcIkFOTkExMFwiLFxuICAgIF0pO1xuICB9KTtcbiAgaXQoXCJ0cmllcyB0aGUgY29kZSBmaXJzdCB3aGVuIGNvbmZpZ3VyZWQsIGtlZXBpbmcgdGhlIGxpbmsgYXMgZmFsbGJhY2tcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF0dGVtcHRzKGJvdGgsIHsgLi4ubGluaywgY291cG9uUHJpb3JpdHk6IFwiY29kZVwiIH0pIGFzIEFycmF5PHtcbiAgICAgIHRpZD86IHN0cmluZztcbiAgICAgIHByb21vX2NvZGU/OiBzdHJpbmc7XG4gICAgfT47XG4gICAgZXhwZWN0KHJlc3VsdC5tYXAoKGEpID0+IGEudGlkID8/IGEucHJvbW9fY29kZSkpLnRvRXF1YWwoW1xuICAgICAgXCJBTk5BMTBcIixcbiAgICAgIFwiYmY5MjkzNmMtYmJmZi00YzI1LWIyNTdcIixcbiAgICBdKTtcbiAgfSk7XG4gIGl0KFwidHJhY2tzIGFuIG9yZGVyIHRoYXQgb25seSBoYXMgYSBjb2RlXCIsICgpID0+IHtcbiAgICBjb25zdCBjb2RlT25seSA9IHsgLi4ub3JkZXIsIG5vdGVfYXR0cmlidXRlczogW10sIGRpc2NvdW50X2NvZGVzOiBbeyBjb2RlOiBcIkFOTkExMFwiIH1dIH07XG4gICAgY29uc3QgcmVzdWx0ID0gYXR0ZW1wdHMoY29kZU9ubHkpIGFzIGltcG9ydChcIi4uL2FwcC9saWIvcGF5bG9hZHNcIikuU2FsZUJvZHlbXTtcbiAgICBleHBlY3QocmVzdWx0KS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHJlc3VsdFswXSkudG9NYXRjaE9iamVjdCh7IHByb21vX2NvZGU6IFwiQU5OQTEwXCIsIGV2ZW50X2lkOiBcIjEzNDM3Mzc4NTI3NTc3XCIsIHVpZDogXCIjMTAwM1wiIH0pO1xuICB9KTtcbiAgaXQoXCJpZ25vcmVzIGNvZGVzIHdoZW4gY291cG9uIHRyYWNraW5nIGlzIG9mZlwiLCAoKSA9PiB7XG4gICAgY29uc3QgY29kZU9ubHkgPSB7IC4uLm9yZGVyLCBub3RlX2F0dHJpYnV0ZXM6IFtdLCBkaXNjb3VudF9jb2RlczogW3sgY29kZTogXCJBTk5BMTBcIiB9XSB9O1xuICAgIGV4cGVjdChhdHRlbXB0cyhjb2RlT25seSwgeyAuLi5saW5rLCB0cmFja0NvdXBvbnM6IGZhbHNlIH0pKS50b0VxdWFsKHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHJlYXNvbjogXCJub19saW5rX29yX2NvZGVcIixcbiAgICB9KTtcbiAgfSk7XG4gIGl0KFwiZGVkdXBsaWNhdGVzIGNvZGVzIGFuZCBrZWVwcyBhdCBtb3N0IHR3b1wiLCAoKSA9PiB7XG4gICAgY29uc3QgbWFueTogT3JkZXJQYXlsb2FkID0ge1xuICAgICAgLi4ub3JkZXIsXG4gICAgICBkaXNjb3VudF9jb2RlczogW3sgY29kZTogXCJhXCIgfSwgeyBjb2RlOiBcIkFcIiB9LCB7IGNvZGU6IFwiIFwiIH0sIHsgY29kZTogXCJiXCIgfSwgeyBjb2RlOiBcImNcIiB9XSxcbiAgICB9O1xuICAgIGV4cGVjdChleHRyYWN0Q29kZXMobWFueSkpLnRvRXF1YWwoW1wiYVwiLCBcImJcIl0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcImJ1aWxkUmVmdW5kQm9keVwiLCAoKSA9PiB7XG4gIGl0KFwic3VtcyBsaW5lIGl0ZW0gc3VidG90YWxzIGluIHNob3AgY3VycmVuY3kgYW5kIGxpbmtzIHRoZSBzYWxlXCIsICgpID0+IHtcbiAgICBjb25zdCBidWlsdCA9IGJ1aWxkUmVmdW5kQm9keShcbiAgICAgIHtcbiAgICAgICAgaWQ6IDU1NSxcbiAgICAgICAgb3JkZXJfaWQ6IDEzNDM3Mzc4NTI3NTc3LFxuICAgICAgICByZWZ1bmRfbGluZV9pdGVtczogW1xuICAgICAgICAgIHsgc3VidG90YWxfc2V0OiB7IHNob3BfbW9uZXk6IHsgYW1vdW50OiBcIjQuMDBcIiwgY3VycmVuY3lfY29kZTogXCJQTE5cIiB9IH0gfSxcbiAgICAgICAgICB7IHN1YnRvdGFsX3NldDogeyBzaG9wX21vbmV5OiB7IGFtb3VudDogXCIxLjUwXCIsIGN1cnJlbmN5X2NvZGU6IFwiUExOXCIgfSB9IH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgXCIjMTAwM1wiLFxuICAgICk7XG4gICAgZXhwZWN0KGJ1aWx0KS50b0VxdWFsKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgYm9keToge1xuICAgICAgICB1aWQ6IFwiIzEwMDNcIixcbiAgICAgICAgZXZlbnRfaWQ6IFwicmVmdW5kLTU1NVwiLFxuICAgICAgICBzYWxlX2V2ZW50X2lkOiBcIjEzNDM3Mzc4NTI3NTc3XCIsXG4gICAgICAgIGFtb3VudDogXCI1NTBcIixcbiAgICAgICAgY3VycmVuY3k6IFwiUExOXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcbiAgaXQoXCJmYWxscyBiYWNrIHRvIHN1YnRvdGFsIGFuZCBvbWl0cyBjdXJyZW5jeSB3aGVuIHVua25vd25cIiwgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWx0ID0gYnVpbGRSZWZ1bmRCb2R5KHtcbiAgICAgIGlkOiAxLFxuICAgICAgb3JkZXJfaWQ6IDIsXG4gICAgICByZWZ1bmRfbGluZV9pdGVtczogW3sgc3VidG90YWw6IDMgfV0sXG4gICAgfSk7XG4gICAgZXhwZWN0KGJ1aWx0Lm9rICYmIGJ1aWx0LmJvZHkuYW1vdW50KS50b0JlKFwiMzAwXCIpO1xuICAgIGV4cGVjdChidWlsdC5vayAmJiBcImN1cnJlbmN5XCIgaW4gYnVpbHQuYm9keSkudG9CZShmYWxzZSk7XG4gIH0pO1xuICBpdChcInNraXBzIHJlZnVuZHMgdGhhdCByZXR1cm4gbm8gbW9uZXkgKHJlc3RvY2sgb25seSlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3RvY2sgPSB7XG4gICAgICBpZDogMSxcbiAgICAgIG9yZGVyX2lkOiAyLFxuICAgICAgcmVmdW5kX2xpbmVfaXRlbXM6IFt7IHN1YnRvdGFsOiA1NDAgfV0sXG4gICAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgIH07XG4gICAgZXhwZWN0KGJ1aWxkUmVmdW5kQm9keShyZXN0b2NrKSkudG9FcXVhbCh7IG9rOiBmYWxzZSwgcmVhc29uOiBcIm5vX21vbmV5X3JlZnVuZGVkXCIgfSk7XG4gIH0pO1xuICBpdChcInNraXBzIHJlZnVuZHMgb2Ygc2hpcHBpbmcgb25seVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2hpcHBpbmcgPSB7XG4gICAgICBpZDogMSxcbiAgICAgIG9yZGVyX2lkOiAyLFxuICAgICAgcmVmdW5kX2xpbmVfaXRlbXM6IFtdLFxuICAgICAgcmVmdW5kX3NoaXBwaW5nX2xpbmVzOiBbeyBzdWJ0b3RhbF9hbW91bnRfc2V0OiB7IHNob3BfbW9uZXk6IHsgYW1vdW50OiBcIjE1LjAwXCIsIGN1cnJlbmN5X2NvZGU6IFwiVVNEXCIgfSB9IH1dLFxuICAgICAgdHJhbnNhY3Rpb25zOiBbeyBraW5kOiBcInJlZnVuZFwiLCBzdGF0dXM6IFwic3VjY2Vzc1wiLCBhbW91bnQ6IFwiMTUuMDBcIiwgY3VycmVuY3k6IFwiVVNEXCIgfV0sXG4gICAgfTtcbiAgICBleHBlY3QoYnVpbGRSZWZ1bmRCb2R5KHNoaXBwaW5nKSkudG9FcXVhbCh7IG9rOiBmYWxzZSwgcmVhc29uOiBcInNoaXBwaW5nX29ubHlcIiB9KTtcbiAgfSk7XG4gIGl0KFwic2VuZHMgdGhlIG1vbmV5IHJldHVybmVkLCBub3QgdGhlIGxpbmUgc3VidG90YWwgKHJlc3RvY2tpbmcgZmVlIGtlcHQpXCIsICgpID0+IHtcbiAgICBjb25zdCBidWlsdCA9IGJ1aWxkUmVmdW5kQm9keSh7XG4gICAgICBpZDogMSxcbiAgICAgIG9yZGVyX2lkOiAyLFxuICAgICAgcmVmdW5kX2xpbmVfaXRlbXM6IFt7IHN1YnRvdGFsOiAxMDAgfV0sXG4gICAgICB0cmFuc2FjdGlvbnM6IFt7IGtpbmQ6IFwicmVmdW5kXCIsIHN0YXR1czogXCJzdWNjZXNzXCIsIGFtb3VudDogXCI5MC4wMFwiLCBjdXJyZW5jeTogXCJVU0RcIiB9XSxcbiAgICB9KTtcbiAgICBleHBlY3QoYnVpbHQub2sgJiYgYnVpbHQuYm9keS5hbW91bnQpLnRvQmUoXCI5MDAwXCIpO1xuICB9KTtcbiAgaXQoXCJsZWF2ZXMgb3V0IHJlZnVuZGVkIHNoaXBwaW5nIGZyb20gYSBtaXhlZCByZWZ1bmRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWx0ID0gYnVpbGRSZWZ1bmRCb2R5KHtcbiAgICAgIGlkOiAxLFxuICAgICAgb3JkZXJfaWQ6IDIsXG4gICAgICByZWZ1bmRfbGluZV9pdGVtczogW3sgc3VidG90YWw6IDEwMCB9XSxcbiAgICAgIHJlZnVuZF9zaGlwcGluZ19saW5lczogW3sgYW1vdW50X3NldDogeyBzaG9wX21vbmV5OiB7IGFtb3VudDogXCIxNS4wMFwiIH0gfSB9XSxcbiAgICAgIHRyYW5zYWN0aW9uczogW3sga2luZDogXCJyZWZ1bmRcIiwgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgYW1vdW50OiBcIjExNS4wMFwiLCBjdXJyZW5jeTogXCJVU0RcIiB9XSxcbiAgICB9KTtcbiAgICBleHBlY3QoYnVpbHQub2sgJiYgYnVpbHQuYm9keS5hbW91bnQpLnRvQmUoXCIxMDAwMFwiKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJyZWZ1bmRzIHNjYWxlZCB0byB0aGUgc2FsZVwiLCAoKSA9PiB7XG4gIGNvbnN0IGJ5QW1vdW50ID0gKGFtb3VudDogc3RyaW5nKSA9PiAoe1xuICAgIGlkOiAzLFxuICAgIG9yZGVyX2lkOiAyLFxuICAgIHJlZnVuZF9saW5lX2l0ZW1zOiBbXSxcbiAgICB0cmFuc2FjdGlvbnM6IFt7IGtpbmQ6IFwicmVmdW5kXCIsIHN0YXR1czogXCJzdWNjZXNzXCIsIGFtb3VudCwgY3VycmVuY3k6IFwiUExOXCIgfV0sXG4gIH0pO1xuICBpdChcInJlbW92ZXMgdGF4IHdpdGggdGhlIHJhdGlvIG9mIGNvbW1pc3Npb24gYmFzZSB0byBnb29kcyBwYWlkXCIsICgpID0+IHtcbiAgICAvLyBCYXNlIDEwMC4wMCBuZXQsIGJ1eWVyIHBhaWQgMTIzLjAwIGZvciB0aGUgZ29vZHMgKFZBVCAyMyUpLlxuICAgIGNvbnN0IGJ1aWx0ID0gYnVpbGRSZWZ1bmRCb2R5KGJ5QW1vdW50KFwiMTIzLjAwXCIpLCBcIiMxXCIsIHsgYW1vdW50OiAxMDAwMCwgZ29vZHNQYWlkOiAxMjMwMCwgcmVmdW5kZWQ6IDAgfSk7XG4gICAgZXhwZWN0KGJ1aWx0Lm9rICYmIGJ1aWx0LmJvZHkuYW1vdW50KS50b0JlKFwiMTAwMDBcIik7XG4gIH0pO1xuICBpdChcIm5ldmVyIHJlZnVuZHMgbW9yZSB0aGFuIHRoZSBzYWxlIGxlZnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNhbGUgPSB7IGFtb3VudDogNjAwMDAsIGdvb2RzUGFpZDogNjAwMDAsIHJlZnVuZGVkOiAwIH07XG4gICAgZXhwZWN0KChidWlsZFJlZnVuZEJvZHkoYnlBbW91bnQoXCI2MTUuMDBcIiksIFwiIzFcIiwgc2FsZSkgYXMgeyBib2R5OiB7IGFtb3VudDogc3RyaW5nIH0gfSkuYm9keS5hbW91bnQpLnRvQmUoXCI2MDAwMFwiKTtcbiAgICBleHBlY3QoYnVpbGRSZWZ1bmRCb2R5KGJ5QW1vdW50KFwiMTAuMDBcIiksIFwiIzFcIiwgeyAuLi5zYWxlLCByZWZ1bmRlZDogNjAwMDAgfSkpLnRvRXF1YWwoe1xuICAgICAgb2s6IGZhbHNlLFxuICAgICAgcmVhc29uOiBcIm5vdGhpbmdfbGVmdF90b19yZWZ1bmRcIixcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJzYWxlQW1vdW50IGFuZCBnb29kc1BhaWRcIiwgKCkgPT4ge1xuICBpdChcInJlbW92ZXMgbGluZSB0YXhlcyB3aGVuIHByaWNlcyBpbmNsdWRlIHRheFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdmF0OiBPcmRlclBheWxvYWQgPSB7XG4gICAgICAuLi5vcmRlcixcbiAgICAgIHN1YnRvdGFsX3ByaWNlOiBcIjEyMy4wMFwiLFxuICAgICAgdGF4ZXNfaW5jbHVkZWQ6IHRydWUsXG4gICAgICB0b3RhbF90YXg6IFwiMjMuMDBcIixcbiAgICAgIGxpbmVfaXRlbXM6IFt7IHRheF9saW5lczogW3sgcHJpY2Vfc2V0OiB7IHNob3BfbW9uZXk6IHsgYW1vdW50OiBcIjIzLjAwXCIgfSB9IH1dIH1dLFxuICAgIH07XG4gICAgZXhwZWN0KHNhbGVBbW91bnQodmF0KSkudG9CZSgxMDAwMCk7XG4gICAgZXhwZWN0KGF0dGVtcHRzKHZhdCkpLnRvRXF1YWwoW2V4cGVjdC5vYmplY3RDb250YWluaW5nKHsgYW1vdW50OiAxMDAwMCB9KV0pO1xuICB9KTtcbiAgaXQoXCJmYWxscyBiYWNrIHRvIHRvdGFsX3RheCB3aGVuIGxpbmVzIGNhcnJ5IG5vIHRheFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHNhbGVBbW91bnQoeyAuLi5vcmRlciwgc3VidG90YWxfcHJpY2U6IFwiMTIzLjAwXCIsIHRheGVzX2luY2x1ZGVkOiB0cnVlLCB0b3RhbF90YXg6IFwiMjMuMDBcIiB9KSkudG9CZSgxMDAwMCk7XG4gIH0pO1xuICBpdChcImtlZXBzIHRoZSBzdWJ0b3RhbCB3aGVuIHRheCBpcyBhZGRlZCBvbiB0b3BcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChzYWxlQW1vdW50KHsgLi4ub3JkZXIsIHRvdGFsX3RheDogXCIyLjMwXCIgfSkpLnRvQmUoMTAwMCk7XG4gIH0pO1xuICBpdChcImlzIHRoZSB0b3RhbCB3aXRob3V0IHNoaXBwaW5nXCIsICgpID0+IHtcbiAgICBjb25zdCBwYWlkID0gZ29vZHNQYWlkKHtcbiAgICAgIC4uLm9yZGVyLFxuICAgICAgdG90YWxfcHJpY2U6IFwiMTM4LjAwXCIsXG4gICAgICB0b3RhbF9zaGlwcGluZ19wcmljZV9zZXQ6IHsgc2hvcF9tb25leTogeyBhbW91bnQ6IFwiMTUuMDBcIiB9IH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KHBhaWQpLnRvQmUoMTIzMDApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcInJlZnVuZCBvZiBhbiBhbW91bnQgd2l0aG91dCBwcm9kdWN0IGxpbmVzXCIsICgpID0+IHtcbiAgaXQoXCJ1c2VzIHRoZSByZWZ1bmQgdHJhbnNhY3Rpb25zXCIsICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBidWlsZFJlZnVuZEJvZHkoXG4gICAgICB7XG4gICAgICAgIGlkOiA1LFxuICAgICAgICBvcmRlcl9pZDogNyxcbiAgICAgICAgcmVmdW5kX2xpbmVfaXRlbXM6IFtdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFtcbiAgICAgICAgICB7IGtpbmQ6IFwicmVmdW5kXCIsIHN0YXR1czogXCJzdWNjZXNzXCIsIGFtb3VudDogXCIxMi41MFwiLCBjdXJyZW5jeTogXCJVU0RcIiB9LFxuICAgICAgICAgIHsga2luZDogXCJzYWxlXCIsIHN0YXR1czogXCJzdWNjZXNzXCIsIGFtb3VudDogXCI5OS4wMFwiLCBjdXJyZW5jeTogXCJVU0RcIiB9LFxuICAgICAgICAgIHsga2luZDogXCJyZWZ1bmRcIiwgc3RhdHVzOiBcImZhaWx1cmVcIiwgYW1vdW50OiBcIjUuMDBcIiwgY3VycmVuY3k6IFwiVVNEXCIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBcIiMxMTAwXCIsXG4gICAgKTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgYm9keTogeyB1aWQ6IFwiIzExMDBcIiwgYW1vdW50OiBcIjEyNTBcIiwgY3VycmVuY3k6IFwiVVNEXCIsIGV2ZW50X2lkOiBcInJlZnVuZC01XCIsIHNhbGVfZXZlbnRfaWQ6IFwiN1wiIH0sXG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6Ii90ZXN0cy9wYXlsb2Fkcy50ZXN0LnRzIn0=

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvVXNlcnMvZGF3aWQvRGVza3RvcC9maXJzdHByb21vdGVyLXNob3BpZnktYXBwL3Rlc3RzL3BheWxvYWRzLnRlc3QudHMiLCIvdGVzdHMvcGF5bG9hZHMudGVzdC50cyIseyJ1cmxzIjoiNiIsImlkcyI6IjcifSxbIjgiLCI5Il0sW10sWyI4IiwiOSJdLHt9LCIvbm9kZV9tb2R1bGVzL3ZpdGVzdC9kaXN0L2luZGV4LmpzIiwiL2FwcC9saWIvcGF5bG9hZHMudHMiXQ==