PageSourceSearch

https://app.demoway.com/_nuxt/Req7Qlo4.js

js demoway.com collected 2026-10-02 00:17:12 UTC 19,662 bytes, 234 lines download raw bytes

1import { aI as ye, aJ as ie, aK as ue, aL as we, aM as Ue, d as pe, q as fe, u as _e, g as $, Y as oe, aN as ke, X as xe, M as z, z as x, f as g, y as i, e as R, k as D, h as d, B as A, F as X, l as e, t as p, Z as Ne, K as Y, A as j, H as be, j as U, aO as ge, aP as ve, aQ as Se, aR as Ee, U as Ie, aS as Ae, T as P, _ as Ce, s as De, aT as $e, aU as le, aV as Le, c as Te, Q as Me, aG as ce, aW as Ve, I as Be, aX as de, a5 as Pe, W as ae, a3 as O, aY as Re, aZ as Fe, i as Oe } from "./CSCE6Vg2.js";
2import { E as ze, a as Ye } from "./WYWP78wn.js";
3import { _ as je, a as Ge } from "./CHcCZeGh.js";
4import { _ as G } from "./BK2jQsIJ.js";
5import { _ as qe } from "./BaK0F23F.js";
6import { u as He, A as Qe } from "./B8yQbb0U.js";
7import { E as We, a as Xe } from "./CbujOpDN.js";
8import { E as Ze, a as Ke } from "./BHUFD9gV.js";
9import { E as re } from "./DmEYpeZX.js";
10import { u as Je } from "./CesY6ogl.js";
11import { v as et } from "./Dm4zHxUw.js";
12import "./CII-tQw4.js";
13import "./CqrtuKKb.js";
14import "./Dz3vHLWq.js";
15import "./Bv4GO9Lm.js";
16import "./B8u0w9tB.js";
17import "./CRsIl1Yy.js";
18import "./CeQqvnFU.js";
19import "./DWHxQajD.js";
20import "./DjLGDBGD.js";
21import "./CpcHvzOH.js";
22import "./FUKBWQwh.js";
23import "./CEzLI_XM.js";
24import "./B1hGu9GA.js";
25import "./fWbG8gK3.js";
26import "./DXq1RRK6.js";
27import "./ChZXNEj1.js";
28import "./Dis_jhua.js";
29import "./v9PKyFuB.js";
30import "./V2zqNvpV.js";
31import "./BfbNICde.js";
32import "./LdY3Up6O.js";
33import "./CsZPXJzw.js";
34import "./OAKT5gXF.js";
35import "./BqQ_b-4w.js";
36import "./v3mdHLdR.js";
37import "./BN8VkRbt.js";
38import "./BWP416Pv.js";
39import "./OAWgKAkZ.js";
40import "./0PYmIqKs.js";
41import "./CQikfZCd.js";
42import "./Di8OpqPk.js";
43import "./D5T8jBC5.js";
44import "./Dn2SRQuk.js";
45import "./Ba8QGe2O.js";
46function tt() {
47}
48function st(m) {
49  return m !== m;
50}
51function nt(m, n, u) {
52  for (var l = u - 1, o = m.length; ++l < o; ) if (m[l] === n) return l;
53  return -1;
54}
55function it(m, n, u) {
56  return n === n ? nt(m, n, u) : ye(m, st, u);
57}
58function at(m, n) {
59  var u = m == null ? 0 : m.length;
60  return !!u && it(m, n, 0) > -1;
61}
62var ot = 1 / 0, rt = ie && 1 / ue(new ie([, -0]))[1] == ot ? function(m) {
63  return new ie(m);
64} : tt, lt = 200;
65function ct(m, n, u) {
66  var l = -1, o = at, L = m.length, T = true, v = [], h = v;
67  if (L >= lt) {
68    var c = rt(m);
69    if (c) return ue(c);
70    T = false, o = Ue, h = new we();
71  } else h = v;
72  e: for (; ++l < L; ) {
73    var k = m[l], w = k;
74    if (k = k !== 0 ? k : 0, T && w === w) {
75      for (var N = h.length; N--; ) if (h[N] === w) continue e;
76      v.push(k);
77    } else o(h, w, u) || (h !== v && h.push(w), v.push(k));
78  }
79  return v;
80}
81function dt(m) {
82  return m && m.length ? ct(m) : [];
83}
84const mt = { class: "break-all" }, ut = { class: "break-all" }, pt = { class: "flex w-full flex-col" }, ft = { key: 0, class: "text-muted-foreground mt-1 flex items-center text-xs" }, _t = { class: "flex items-center gap-1" }, bt = { class: "flex w-full justify-end" }, me = 40, gt = pe({ __name: "admin-user-form", props: { mode: { default: "create" }, initialValues: {}, onSave: {}, subscriptionAssets: {} }, emits: ["success", "cancel"], setup(m, { emit: n }) {
85  const u = m, l = n, { t: o } = fe(), L = _e(), T = $(() => {
86    var _a;
87    return (_a = L.profile) == null ? void 0 : _a.id;
88  }), v = oe(false), { appContext: h } = ke(), c = xe({ name: "", adminLevel: z.ADMIN, ...u.initialValues });
89  function k(I) {
90    const { displayNickName: r, displayContact: b, ...y } = I;
91    return y;
92  }
93  const w = $(() => {
94    var _a, _b;
95    const I = dt((_a = c.subscriptionAssetIds) == null ? void 0 : _a.map((r) => {
96      var _a2;
97      return (_a2 = u.subscriptionAssets) == null ? void 0 : _a2.find((b) => b.id === r);
98    }).map((r) => r == null ? void 0 : r.subscriptionId)).filter((r) => !!r);
99    return ((_b = u.subscriptionAssets) == null ? void 0 : _b.filter((r) => {
100      var _a2;
101      return I.includes(r.subscriptionId) ? (_a2 = c.subscriptionAssetIds) == null ? void 0 : _a2.includes(r.id) : !r.adminUserId || r.adminUserId === c.adminUserId;
102    })) || [];
103  }), N = $(() => {
104    var _a, _b;
105    const I = {}, r = w.value, b = (_a = c.subscriptionAssetIds) != null ? _a : [];
106    return (_b = u.subscriptionAssets) == null ? void 0 : _b.forEach((y) => {
107      const S = I[y.subscriptionId] || { subscriptionId: y.subscriptionId, total: 0, taken: 0, selectedCount: 0 };
108      S.total += 1, y.adminUserId && y.adminUserId !== c.adminUserId && (S.taken += 1), b.includes(y.id) && (S.selectedCount += 1), r.some((V) => V.id === y.id) && (S.assetIdForUser = y.id), I[y.subscriptionId] = S;
109    }), Object.values(I);
110  }), M = oe(), F = $(() => ({ rolesadminLevel: o("roles.".concat(c.adminLevel)), rolestipsadminLevel: o("roles-tips.".concat(c.adminLevel)) })), q = (I) => {
111    I && I.validate(async (r) => {
112      var _a;
113      if (r) {
114        if (!((_a = c.subscriptionAssetIds) == null ? void 0 : _a.length)) try {
115          await re.confirm(o("user-info.admin-user-form.no-subscription-asset-confirm-description"), o("common.tips"), { confirmButtonText: o("common.ok"), cancelButtonText: o("common.cancel"), type: "warning" }, h);
116        } catch (e2) {
117          return;
118        }
119        try {
120          const b = k(c);
121          u.mode === "create" ? (v.value = true, c.adminLevel === z.ADMIN ? (await u.onSave(b), l("success"), v.value = false) : await re.confirm(o("user-info.admin-user-form.invited-users-will-serve-as", F.value), o("common.tips"), { confirmButtonText: o("common.ok"), cancelButtonText: o("common.cancel"), type: "warning" }, h).then(async () => {
122            await u.onSave(b), l("success"), v.value = false;
123          }).catch(() => {
124          })) : (await u.onSave(b), l("success"));
125        } catch (b) {
126          P.error(b.message);
127        } finally {
128          v.value = false;
129        }
130      }
131    });
132  };
133  return (I, r) => {
134    const b = Xe, y = Ne, S = Ke, V = Ze, Z = Se, K = ve, H = Ie, J = We;
135    return g(), x(J, { ref_key: "ruleFormRef", ref: M, model: c, "label-position": "right", "label-width": "120px", class: "mt-4" }, { default: i(() => [I.mode === "update" ? (g(), R(X, { key: 0 }, [d(b, { label: e(o)("role-settings.form.current-nickname-label"), "label-width": "150" }, { default: i(() => [A("span", mt, p(c.displayNickName || "-"), 1)]), _: 1 }, 8, ["label"]), d(b, { label: e(o)("role-settings.form.current-contact-label"), "label-width": "150" }, { default: i(() => [A("span", ut, p(c.displayContact || "-"), 1)]), _: 1 }, 8, ["label"])], 64)) : D("", true), d(b, { label: e(o)("role-settings.form.name"), prop: "name", "label-width": "150", rules: [{ required: true, message: e(o)("role-settings.form.name-required-message"), trigger: "blur" }, { max: me, message: e(o)("role-settings.form.name-length-message"), trigger: "blur" }] }, { default: i(() => [d(y, { modelValue: c.name, "onUpdate:modelValue": r[0] || (r[0] = (_) => c.name = _), class: "!w-[280px]", maxlength: me, "show-word-limit": "", placeholder: e(o)("role-settings.form.name-placeholder") }, null, 8, ["modelValue", "placeholder"])]), _: 1 }, 8, ["label", "rules"]), d(e(G), { ability: [[e(Y).Govern, e(j).SubscriptionAsset]], behavior: "hidden" }, { default: i(() => [d(b, { "label-width": "150", label: e(o)("role-settings.form.seat.label") }, { default: i(() => {
136      var _a;
137      return [A("div", pt, [d(V, { modelValue: c.subscriptionAssetIds, "onUpdate:modelValue": r[1] || (r[1] = (_) => c.subscriptionAssetIds = _) }, { default: i(() => [(g(true), R(X, null, be(e(N), (_) => {
138        var _a2;
139        return g(), x(S, { key: _.assetIdForUser, value: _.assetIdForUser, disabled: _.total - _.taken - _.selectedCount === 0 && !((_a2 = c.subscriptionAssetIds) == null ? void 0 : _a2.includes(_.assetIdForUser || "")) }, { default: i(() => [U(p(e(ge)(e(o), _.subscriptionId)) + " \u2013 " + p(_.taken + _.selectedCount) + " / " + p(_.total), 1)]), _: 2 }, 1032, ["value", "disabled"]);
140      }), 128))]), _: 1 }, 8, ["modelValue"]), ((_a = c.subscriptionAssetIds) == null ? void 0 : _a.length) ? D("", true) : (g(), R("span", ft, p(e(o)("role-settings.form.seat.tips")), 1))])];
141    }), _: 1 }, 8, ["label"])]), _: 1 }, 8, ["ability"]), d(b, { "label-width": "150" }, { label: i(() => [A("div", _t, [U(p(e(o)("roles.SUPER_ADMIN")) + " ", 1), d(K, { effect: "dark", content: e(o)("roles-tips.SUPER_ADMIN"), placement: "bottom-end" }, { default: i(() => [d(Z, { class: "cursor-pointer text-gray-500" }, { default: i(() => [d(e(Ee))]), _: 1 })]), _: 1 }, 8, ["content"])])]), default: i(() => [d(S, { modelValue: c.adminLevel, "onUpdate:modelValue": r[2] || (r[2] = (_) => c.adminLevel = _), "true-label": e(z).SUPER_ADMIN, "false-label": e(z).ADMIN, disabled: e(T) === c.adminUserId }, null, 8, ["modelValue", "true-label", "false-label", "disabled"])]), _: 1 }), A("div", bt, [I.mode === "update" ? (g(), x(H, { key: 0, style: { "min-width": "65px" }, round: "", type: "primary", loading: v.value, onClick: r[3] || (r[3] = (_) => q(M.value)) }, { default: i(() => [U(p(e(o)("common.save")), 1)]), _: 1 }, 8, ["loading"])) : (g(), x(H, { key: 1, round: "", type: "primary", loading: v.value, icon: e(Ae), onClick: r[4] || (r[4] = (_) => q(M.value)) }, { default: i(() => [U(p(e(o)("user-info.admin-user-form.generate-invitation-link")), 1)]), _: 1 }, 8, ["loading", "icon"]))])]), _: 1 }, 8, ["model"]);
142  };
143} }), vt = Object.assign(Ce(gt, [["__scopeId", "data-v-78aff8dd"]]), { __name: "UserInfoAdminUserForm" }), It = { class: "mb-2 flex justify-end" }, At = { class: "flex items-center gap-1" }, ht = { class: "mr-2" }, yt = { class: "flex items-center gap-1" }, wt = { class: "flex flex-col" }, Ut = { class: "text-xs" }, kt = { class: "flex items-center justify-end" }, gs = pe({ __name: "role", setup(m) {
144  const { t: n } = fe(), u = De(), l = _e(), o = $(() => {
145    var _a;
146    return (_a = l.profile) == null ? void 0 : _a.id;
147  });
148  $(() => {
149    var _a;
150    return (_a = l.profile) == null ? void 0 : _a.nickName;
151  });
152  const { data: L, loading: T, page: v, pageSize: h, total: c, refresh: k } = Je(({ page: s, pageSize: t }) => u("/api/application/".concat(l.appId, "/admin-user"), { query: { page: s, pageSize: t } }), { onError: (s) => {
153    console.error(s), P.error(n("role-settings.fetch-list-failed"));
154  } }), w = He(), N = $e(() => u("/api/subscription-asset/all"), "$h6pl2PdjeG"), M = $(() => {
155    var _a;
156    return le((_a = N.data.value) != null ? _a : []);
157  }), F = oe("");
158  function q(s) {
159    var _a, _b;
160    const t = String((_a = s == null ? void 0 : s.nickName) != null ? _a : ""), f = String((_b = s == null ? void 0 : s.name) != null ? _b : "");
161    return t && f && f !== t ? "".concat(t, "(").concat(f, ")") : t || f;
162  }
163  function I(s) {
164    var _a;
165    return String((_a = s == null ? void 0 : s.name) != null ? _a : "");
166  }
167  function r(s) {
168    var _a, _b, _c;
169    const t = s.adminUser.accounts || [];
170    return ((_a = t.find((f) => f.type === ae.EMAIL)) == null ? void 0 : _a.accountId) || ((_c = (_b = t.find((f) => {
171      var _a2;
172      return !!((_a2 = f.data) == null ? void 0 : _a2.email);
173    })) == null ? void 0 : _b.data) == null ? void 0 : _c.email) || "";
174  }
175  const b = async () => {
176    const s = M.value;
177    try {
178      F.value = n("role-settings.add-user");
179      const t = s == null ? void 0 : s.find((f) => !f.adminUserId);
180      await w.open({ initialValues: { subscriptionAssetIds: t ? [t.id] : [] }, onSave: async (f) => {
181        await S(f);
182      } }), k(), N.refresh();
183    } catch (e2) {
184    }
185  }, { copy: y } = Le(), S = async (s) => {
186    const t = await u("/api/application/admin-user/invite?appId=".concat(l.appId), { method: "POST", body: { adminUser: { name: s.name }, adminLevel: s.adminLevel, subscriptionAssetIds: s.subscriptionAssetIds } });
187    return await V(t.adminUserId, s.subscriptionAssetIds), true;
188  }, V = async (s, t) => {
189    var _a, _b, _c, _d, _e2, _f, _g, _h, _i, _j, _k, _l;
190    const f = (_a = N.data.value) == null ? void 0 : _a.filter((a) => t == null ? void 0 : t.includes(a.id)), B = f && f.some((a) => Re.includes(a.subscriptionId)) ? "Invite-Design" : "Invite", C = (_b = l.appId) != null ? _b : "", ee = (_d = (_c = l.application) == null ? void 0 : _c.name) != null ? _d : "", Q = (_f = (_e2 = l.application) == null ? void 0 : _e2.avatar) != null ? _f : "", te = (_l = (_k = (_i = (_g = l.profile) == null ? void 0 : _g.nickName) != null ? _i : (_h = l.profile) == null ? void 0 : _h.email) != null ? _k : (_j = l.profile) == null ? void 0 : _j.phone) != null ? _l : "", se = B === "Invite-Design" ? "invite/design" : "invite", ne = await u("/api/share", { method: "POST", body: { resourceType: "Application", resourceId: l.appId, validateBefore: "FOREVER", redirectUrl: Fe(se, { appId: C, appName: ee, appAvatar: Q, creatorName: te }), data: { appId: C, adminUserId: s } } }), W = "".concat(location.origin, "/s/").concat(ne.alias);
191    y(W), P.success(n("role-settings.add-success", { link: W }));
192  }, Z = Te(), K = async (s) => {
193    var _a;
194    try {
195      F.value = n("role-settings.edit-user"), await w.open({ initialValues: { adminUserId: s.adminUserId, name: I(s.adminUser), displayNickName: s.adminUser.nickName, displayContact: (() => {
196        var _a2;
197        const t = r(s);
198        if (de) return t;
199        const f = ((_a2 = (s.adminUser.accounts || []).find((B) => B.type === ae.PHONE_NUMBER)) == null ? void 0 : _a2.accountId) || "";
200        return [t, f].filter(Boolean).join(" / ");
201      })(), adminLevel: s.adminLevel, isActive: s.adminUser.isActive, subscriptionAssetIds: s.adminUser.subscriptionAssets.map((t) => t.id) }, mode: "update", onSave: (t) => u("/api/application/".concat(l.appId, "/admin-user/").concat(s.adminUserId), { method: "PATCH", body: { name: t.name, adminLevel: t.adminLevel, subscriptionAssetIds: t.subscriptionAssetIds } }) }), P.success(n("role-settings.edit-success")), k(), s.adminUser.id === ((_a = l.profile) == null ? void 0 : _a.id) && Oe(Z), N.refresh();
202    } catch (e2) {
203    }
204  }, H = async (s) => {
205    try {
206      await u("/api/application/".concat(l.appId, "/admin-user/").concat(s), { method: "DELETE" }), P.success(n("common.message.delete-success")), k(), N.refresh();
207    } catch (t) {
208      P.error(t.message);
209    }
210  }, J = (s, t) => {
211    re.confirm(n("role-settings.delete-user-popup"), n("common.warning"), { confirmButtonText: n("common.confirm"), cancelButtonText: n("common.cancel"), type: "error" }).then(() => {
212      H(s);
213    });
214  }, _ = (s) => {
215    if (s.forever) return null;
216    const t = O(s.expiredAt);
217    if (t.isBefore(/* @__PURE__ */ new Date())) return n("role-settings.expired-time", { duration: O.duration(t.diff(/* @__PURE__ */ new Date())).humanize() });
218    const f = O.duration(t.diff(/* @__PURE__ */ new Date()));
219    return n("role-settings.left-time", { duration: f.humanize() });
220  };
221  return (s, t) => {
222    const f = Ie, B = Be, C = Ye, ee = ve, Q = Ge, te = je, se = ze, ne = Ve, W = et;
223    return g(), R(X, null, [A("div", It, [d(e(G), { ability: [e(Y).Create, e(j).AdminUserOnApplication], behavior: "message-box", "show-contact": false }, { reason: i(() => [U(p(e(n)("role-settings.no-permission-tips")), 1)]), default: i(() => [d(f, { type: "primary", round: "", onClick: b }, { default: i(() => [U(p(e(n)("role-settings.add-user")), 1)]), _: 1 })]), _: 1 }, 8, ["ability"])]), Me((g(), x(se, { data: e(L), "current-row-key": "id", "max-height": "calc(100vh - 220p
223x)" }, { default: i(() => [d(C, { prop: "adminUser.nickName", label: e(n)("role-settings.table-column.nickName") }, { default: i((a) => {
224      var _a, _b;
225      return [A("div", At, [d(e(qe), { "admin-user": a.row.adminUser, size: 16, style: { "min-width": "16px" } }, null, 8, ["admin-user"]), A("span", ht, p(q(a.row.adminUser)), 1), A("div", yt, [((_a = e(l).application) == null ? void 0 : _a.ownerId) && ((_b = a.row.adminUser) == null ? void 0 : _b.id) === e(l).application.ownerId ? (g(), x(B, { key: 0, type: "success", size: "small", round: "", "disable-transitions": true }, { default: i(() => [U(p(e(n)("role-settings.owner")), 1)]), _: 1 })) : a.row.adminLevel === e(z).SUPER_ADMIN ? (g(), x(B, { key: 1, type: "warning", size: "small", round: "", "disable-transitions": true }, { default: i(() => [U(p(e(n)("roles.SUPER_ADMIN")), 1)]), _: 1 })) : D("", true)])])];
226    }), _: 1 }, 8, ["label"]), e(de) ? (g(), x(C, { key: 0, prop: "adminUser.email", label: e(n)("common.email") }, { default: i((a) => [U(p(r(a.row)), 1)]), _: 1 }, 8, ["label"])) : D("", true), e(Pe) ? (g(), x(C, { key: 1, label: e(n)("common.contact") }, { default: i((a) => {
227      var _a;
228      return [A("div", wt, [A("span", null, p(r(a.row)), 1), A("span", null, p(((_a = (a.row.adminUser.accounts || []).find((E) => E.type === e(ae).PHONE_NUMBER)) == null ? void 0 : _a.accountId) || ""), 1)])];
229    }), _: 1 }, 8, ["label"])) : D("", true), d(e(G), { ability: [[e(Y).Read, e(j).SubscriptionAsset]], behavior: "hidden" }, { default: i(() => [d(C, { prop: "seat", label: e(n)("role-settings.table-column.seat") }, { default: i(({ row: a }) => [(g(true), R(X, null, be(e(le)(a.adminUser.subscriptionAssets), (E) => (g(), R("div", { key: E.id, class: "flex flex-col items-start" }, [A("span", null, p(e(ge)(e(n), E.subscriptionId)), 1), E.forever ? D("", true) : (g(), x(ee, { key: 0, content: e(O)(E.expiredAt).format("YYYY-MM-DD hh:mm:ss"), placement: "right" }, { default: i(() => [A("span", Ut, p(_(E)), 1)]), _: 2 }, 1032, ["content"]))]))), 128))]), _: 1 }, 8, ["label"])]), _: 1 }, 8, ["ability"]), d(C, { prop: "createdAt", label: e(n)("role-settings.table-column.createdAt"), width: "140" }, { default: i((a) => [U(p(e(O)(a.row.createdAt).format("YYYY-MM-DD")), 1)]), _: 1 }, 8, ["label"]), d(C, { label: e(n)("common.operations"), align: "right", width: "140" }, { default: i((a) => [A("div", kt, [a.row.adminUser.isActive ? D("", true) : (g(), x(f, { key: 0, class: "mr-2", size: "small", round: "", icon: e(Ae), onClick: (E) => V(a.row.adminUserId, a.row.adminUser.subscriptionAssets.map((he) => he.id)) }, { default: i(() => [U(p(e(n)("settings.role.invite-link")), 1)]), _: 2 }, 1032, ["icon", "onClick"])), d(te, null, { default: i(() => [d(e(G), { ability: [e(Y).Update, e(j).AdminUserOnApplication], behavior: "disabled" }, { default: i(() => [d(Q, { onClick: (E) => K(a.row) }, { default: i(() => [U(p(e(n)("common.edit")), 1)]), _: 2 }, 1032, ["onClick"])]), _: 2 }, 1032, ["ability"]), d(e(G), { ability: [e(Y).Govern, e(j).AdminUserOnApplication], behavior: "disabled" }, { default: i(() => [d(Q, { disabled: e(o) === a.row.adminUserId, onClick: (E) => J(a.row.adminUserId, a.$index) }, { default: i(() => [U(p(e(n)("common.delete")), 1)]), _: 2 }, 1032, ["disabled", "onClick"])]), _: 2 }, 1032, ["ability"])]), _: 2 }, 1024)])]), _: 1 }, 8, ["label"])]), _: 1 }, 8, ["data"])), [[W, e(T)]]), d(ne, { "current-page": e(v), "onUpdate:currentPage": t[0] || (t[0] = (a) => ce(v) ? v.value = a : null), "page-size": e(h), "onUpdate:pageSize": t[1] || (t[1] = (a) => ce(h) ? h.value = a : null), class: "mt-4 flex justify-end", total: e(c) }, null, 8, ["current-page", "page-size", "total"]), d(Qe, { modal: e(w), "dialog-props": { title: e(F), width: "600px" } }, { default: i((a) => [a.params ? (g(), x(vt, { key: 0, "initial-values": a.params.initialValues, mode: a.params.mode, "on-save": a.params.onSave, "subscription-assets": e(M), onSuccess: e(w).onConfirm, onCancel: e(w).onCancel }, null, 8, ["initial-values", "mode", "on-save", "subscription-assets", "onSuccess", "onCancel"])) : D("", true)]), _: 1 }, 8, ["modal", "dialog-props"])], 64);
230  };
231} });
232export {
233  gs as default
234};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.