@tricoteuses/tisseuse 0.19.1 → 0.19.2

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.
Files changed (2) hide show
  1. package/dist/server.js +484 -466
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,11 +1,11 @@
1
- import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as ne, j as re, k as ie, kt as C, m as ae, n as oe, p as se, s as ce, t as le, u as ue, ut as w, v as de, w as fe, x as pe } from "./html-EuDDYMr2.js";
2
- import { A as me, Dt as T, Ft as E, I as he, L as ge, Nt as D, Ot as O, P as _e, _t as ve, bt as k, jt as ye, k as be, kt as A, n as xe, nt as Se, o as Ce, r as we, t as Te, ut as Ee } from "./resolver-tBQRf8TL.js";
3
- import * as De from "node:crypto";
4
- import { createHash as Oe } from "node:crypto";
5
- import j from "fs-extra";
6
- import ke from "node:path";
1
+ import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as C, j as w, k as ne, kt as T, m as re, n as ie, p as ae, s as oe, t as se, u as ce, ut as E, v as le, w as ue, x as de } from "./html-EuDDYMr2.js";
2
+ import { A as fe, Dt as D, Ft as O, I as pe, L as me, Nt as k, Ot as A, P as he, _t as ge, bt as j, jt as _e, k as ve, kt as M, n as ye, nt as be, o as xe, r as Se, t as Ce, ut as we } from "./resolver-tBQRf8TL.js";
3
+ import * as Te from "node:crypto";
4
+ import { createHash as Ee } from "node:crypto";
5
+ import N from "fs-extra";
6
+ import De from "node:path";
7
7
  //#region src/lib/server/assemblee_amendment_search.ts
8
- function Ae(e, t) {
8
+ function Oe(e, t) {
9
9
  let n = e;
10
10
  for (let e of t) {
11
11
  if (typeof n != "object" || !n) return null;
@@ -13,34 +13,34 @@ function Ae(e, t) {
13
13
  }
14
14
  return typeof n == "string" && n.trim() ? n.trim() : null;
15
15
  }
16
- function je(e) {
16
+ function ke(e) {
17
17
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
18
18
  }
19
- function Me(e) {
20
- return je(w(e).text());
19
+ function Ae(e) {
20
+ return ke(E(e).text());
21
21
  }
22
- function Ne(e) {
23
- let t = je([
24
- Ae(e, [
22
+ function je(e) {
23
+ let t = ke([
24
+ Oe(e, [
25
25
  "corps",
26
26
  "contenuAuteur",
27
27
  "dispositif"
28
28
  ]),
29
- Ae(e, [
29
+ Oe(e, [
30
30
  "corps",
31
31
  "contenuAuteur",
32
32
  "dispositifAmdtCreditPLF"
33
33
  ]),
34
- Ae(e, [
34
+ Oe(e, [
35
35
  "corps",
36
36
  "contenuAuteur",
37
37
  "dispositifAmdtCreditPLFR"
38
38
  ])
39
- ].filter((e) => e !== null).map((e) => Me(e)).join("\n")), n = Ae(e, [
39
+ ].filter((e) => e !== null).map((e) => Ae(e)).join("\n")), n = Oe(e, [
40
40
  "corps",
41
41
  "contenuAuteur",
42
42
  "exposeSommaire"
43
- ]), r = n === null ? "" : Me(n);
43
+ ]), r = n === null ? "" : Ae(n);
44
44
  return [...t ? [{
45
45
  content: t,
46
46
  itemKind: "dispositif",
@@ -51,24 +51,24 @@ function Ne(e) {
51
51
  label: "Exposé sommaire"
52
52
  }] : []];
53
53
  }
54
- function Pe(e, t) {
55
- return Oe("sha256").update(JSON.stringify({
54
+ function Me(e, t) {
55
+ return Ee("sha256").update(JSON.stringify({
56
56
  item: e,
57
57
  metadata: t
58
58
  })).digest("hex");
59
59
  }
60
60
  //#endregion
61
61
  //#region src/lib/extractors/article_action_targets.ts
62
- function M(e) {
62
+ function P(e) {
63
63
  switch (e.type) {
64
- case "reference_et_action": return M(e.reference);
65
- case "enumeration": return [...M(e.left), ...M(e.right)];
64
+ case "reference_et_action": return P(e.reference);
65
+ case "enumeration": return [...P(e.left), ...P(e.right)];
66
66
  case "parent-enfant": {
67
67
  let t = [...r(e.parent)].filter((e) => e.type === "article");
68
68
  return t.length === 1 ? [{
69
69
  article: t[0],
70
70
  reference: e
71
- }] : t.length > 1 ? [] : M(e.child).map((t) => ({
71
+ }] : t.length > 1 ? [] : P(e.child).map((t) => ({
72
72
  article: t.article,
73
73
  reference: {
74
74
  ...e,
@@ -89,11 +89,11 @@ function M(e) {
89
89
  }
90
90
  //#endregion
91
91
  //#region src/lib/extractors/article_action_effects.ts
92
- function Fe(e, t) {
92
+ function Ne(e, t) {
93
93
  if (t < 2) return null;
94
- let n = me(e), r = S(e);
94
+ let n = fe(e), r = S(e);
95
95
  if (r.length !== t) return null;
96
- let i = u(new T(n.output)), a = (e) => ge(n, [e])[0].position;
96
+ let i = u(new D(n.output)), a = (e) => me(n, [e])[0].position;
97
97
  return r.map((t, n) => ({
98
98
  sourceText: e,
99
99
  referencePosition: a({
@@ -103,20 +103,20 @@ function Fe(e, t) {
103
103
  actionPosition: a(t.position)
104
104
  }));
105
105
  }
106
- function Ie(e, t, n) {
106
+ function Pe(e, t, n) {
107
107
  if (t.length < 2) return null;
108
- let r = me(e), i = r.output, a = (e) => ge(r, [e])[0].position, o = u(new T(i)), s = o.flatMap(M);
108
+ let r = fe(e), i = r.output, a = (e) => me(r, [e])[0].position, o = u(new D(i)), s = o.flatMap(P);
109
109
  if (s.length !== t.length || s.length < 2) return null;
110
- let c = pe(i);
110
+ let c = de(i);
111
111
  if (c.length > 0) return n?.kind !== "replace_portion" || c.length !== s.length || c.some((e, t) => {
112
112
  let n = s[t];
113
- return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !ne(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
113
+ return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !C(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
114
114
  }) ? null : s.map((r, i) => ({
115
115
  targetId: t[i],
116
116
  directive: {
117
117
  ...n,
118
118
  reference: r.reference,
119
- portionSelectors: ne(r.reference),
119
+ portionSelectors: C(r.reference),
120
120
  tableTarget: {
121
121
  type: "table",
122
122
  rowIndex: c[i].rowIndex,
@@ -161,12 +161,12 @@ function Ie(e, t, n) {
161
161
  let d = [], f = 0;
162
162
  for (let e = 1; e < o.length; e += 1) {
163
163
  let t = o[e];
164
- t.type !== "reference_et_action" || M(t).length === 0 || o.slice(f, e).flatMap(M).length === 0 || y(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && y(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
164
+ t.type !== "reference_et_action" || P(t).length === 0 || o.slice(f, e).flatMap(P).length === 0 || y(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && y(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
165
165
  }
166
166
  d.push(o.length - 1);
167
167
  let p = [], m = 0, h = 0;
168
168
  for (let n of d) {
169
- let r = o.slice(m, n + 1).flatMap(M);
169
+ let r = o.slice(m, n + 1).flatMap(P);
170
170
  if (r.length === 0) {
171
171
  m = n + 1;
172
172
  continue;
@@ -195,7 +195,7 @@ function Ie(e, t, n) {
195
195
  stop: i.length
196
196
  },
197
197
  reference: n.reference,
198
- portionSelectors: ne(n.reference)
198
+ portionSelectors: C(n.reference)
199
199
  }
200
200
  });
201
201
  }
@@ -203,16 +203,16 @@ function Ie(e, t, n) {
203
203
  }
204
204
  return h === t.length ? p : null;
205
205
  }
206
- var Le = ye("dans sa rédaction", A([A([E("dans sa rédaction ", { flags: "i" }), O(E("issue ", { flags: "i" }), E("résultante ", { flags: "i" }), E("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), O(A([E("de l'", { flags: "i" }), l], { value: (e) => e[1] }), n)], { value: (e) => e[1] }));
206
+ var Fe = _e("dans sa rédaction", M([M([O("dans sa rédaction ", { flags: "i" }), A(O("issue ", { flags: "i" }), O("résultante ", { flags: "i" }), O("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), A(M([O("de l'", { flags: "i" }), l], { value: (e) => e[1] }), n)], { value: (e) => e[1] }));
207
207
  //#endregion
208
208
  //#region src/lib/extractors/qualified_versions.ts
209
- function Re(e) {
210
- let t = me(e), n = [];
211
- for (let e of Le.extract(new T(t.output), { jumpExact: !0 })) for (let i of _(e)) {
209
+ function Ie(e) {
210
+ let t = fe(e), n = [];
211
+ for (let e of Fe.extract(new D(t.output), { jumpExact: !0 })) for (let i of _(e)) {
212
212
  if (i.type !== "parent-enfant" || i.parent.type !== "texte" || i.parent.nature !== "LOI") continue;
213
213
  let e = [...r(i.child)].filter((e) => e.type === "article" && e.position.start < i.parent.position.start);
214
214
  if (e.length === 1) {
215
- n.push(ge(t, [e[0].position])[0].position);
215
+ n.push(me(t, [e[0].position])[0].position);
216
216
  break;
217
217
  }
218
218
  }
@@ -220,29 +220,29 @@ function Re(e) {
220
220
  }
221
221
  //#endregion
222
222
  //#region src/lib/server/parsed_bills.ts
223
- var ze = /^expos[ée]\s+des\s+motifs\b/iu;
224
- function N(e) {
223
+ var Le = /^expos[ée]\s+des\s+motifs\b/iu;
224
+ function F(e) {
225
225
  return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
226
226
  }
227
- function P(e) {
228
- return N(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
227
+ function I(e) {
228
+ return F(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
229
229
  }
230
- function Be(e) {
231
- return s(N(e));
230
+ function Re(e) {
231
+ return s(F(e));
232
232
  }
233
- function F(e) {
234
- return `_TocArt${Be(e).replace(/\s+/gu, "")}`;
233
+ function L(e) {
234
+ return `_TocArt${Re(e).replace(/\s+/gu, "")}`;
235
235
  }
236
- function Ve(e, t) {
236
+ function ze(e, t) {
237
237
  return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
238
238
  }
239
- function He(e) {
240
- return P(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
239
+ function Be(e) {
240
+ return I(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
241
241
  }
242
- function Ue(e) {
243
- return He(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
242
+ function Ve(e) {
243
+ return Be(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
244
244
  }
245
- function We(e) {
245
+ function He(e) {
246
246
  switch (e.kind) {
247
247
  case "insert_after":
248
248
  case "insert_before": return e.insertText;
@@ -260,12 +260,12 @@ function We(e) {
260
260
  default: return;
261
261
  }
262
262
  }
263
- function Ge(e) {
264
- let t = N(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
263
+ function Ue(e) {
264
+ let t = F(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
265
265
  if (n?.[1] !== void 0) return h(n[1]);
266
266
  }
267
- function Ke(e) {
268
- let t = We(e), n = a(t ?? "");
267
+ function We(e) {
268
+ let t = He(e), n = a(t ?? "");
269
269
  if (n.length > 0 && t !== void 0) return n.map((e, r) => {
270
270
  let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
271
271
  return {
@@ -273,58 +273,58 @@ function Ke(e) {
273
273
  text: o
274
274
  };
275
275
  });
276
- let r = Ge(e);
276
+ let r = Ue(e);
277
277
  return r === void 0 ? [] : [{
278
278
  num: r,
279
279
  text: t ?? e.sourceText
280
280
  }];
281
281
  }
282
- function qe(e, t = /* @__PURE__ */ new Set()) {
282
+ function Ge(e, t = /* @__PURE__ */ new Set()) {
283
283
  if (e == null) return t;
284
284
  if (Array.isArray(e)) {
285
- for (let n of e) qe(n, t);
285
+ for (let n of e) Ge(n, t);
286
286
  return t;
287
287
  }
288
288
  if (typeof e != "object") return t;
289
289
  let n = e;
290
290
  n.type === "article" && typeof n.num == "string" && t.add(n.num);
291
- for (let e of Object.values(n)) qe(e, t);
291
+ for (let e of Object.values(n)) Ge(e, t);
292
292
  return t;
293
293
  }
294
- function Je(e) {
295
- let t = P(e.sourceText);
294
+ function Ke(e) {
295
+ let t = I(e.sourceText);
296
296
  return /\b(?:cree|cree[e]?s?|resultant|issu|prevu|mentionne)\b[\s\S]{0,80}\b(?:present|presente|pjl|projet\s+de\s+loi)\b/u.test(t);
297
297
  }
298
- function Ye(e) {
299
- return N(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
298
+ function qe(e) {
299
+ return F(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
300
300
  }
301
- function Xe(e, t) {
302
- let n = new T(e, t), r = Se(n);
301
+ function Je(e, t) {
302
+ let n = new D(e, t), r = be(n);
303
303
  return typeof r != "string" || n.offset <= t ? null : {
304
304
  date: r,
305
305
  start: t,
306
306
  stop: n.offset
307
307
  };
308
308
  }
309
- function Ze(e, t) {
309
+ function Ye(e, t) {
310
310
  let n = /\d/u.exec(e.slice(t));
311
311
  if (!n) return null;
312
312
  let r = t + n.index;
313
- return e.slice(t, r).trim().length > 0 ? null : Xe(e, r);
313
+ return e.slice(t, r).trim().length > 0 ? null : Je(e, r);
314
314
  }
315
- function Qe(e) {
315
+ function Xe(e) {
316
316
  let t = /^la présente loi (?:s['’]appli(?:que|quent)|entr(?:e|ent) en vigueur) (?:[aà] compter (?:du|de|d['’])|au|le)\s*/u, n = /^la présente loi s['’]appli(?:que|quent)\s*:\s*/u, r = /\b[aà] compter (?:du|de|d['’])\s*/gu, i = [], a = "la présente loi", o = e.indexOf(a);
317
317
  for (; o !== -1;) {
318
318
  let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
319
319
  if (l) {
320
- let e = Ze(c, l[0].length);
320
+ let e = Ye(c, l[0].length);
321
321
  e && i.push(e.date);
322
322
  }
323
323
  let u = n.exec(c);
324
324
  if (u) {
325
325
  let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
326
326
  for (r.lastIndex = 0; r.exec(t) !== null;) {
327
- let e = Ze(t, r.lastIndex);
327
+ let e = Ye(t, r.lastIndex);
328
328
  e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
329
329
  }
330
330
  }
@@ -332,20 +332,20 @@ function Qe(e) {
332
332
  }
333
333
  return i;
334
334
  }
335
- function $e(e) {
336
- let t = Qe(Ye(e).toLowerCase()), n = Array.from(new Set(t));
335
+ function Ze(e) {
336
+ let t = Xe(qe(e).toLowerCase()), n = Array.from(new Set(t));
337
337
  return n.length === 1 ? n[0] : void 0;
338
338
  }
339
- function et(e) {
340
- return P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
339
+ function Qe(e) {
340
+ return I(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
341
341
  }
342
- function I(e) {
342
+ function R(e) {
343
343
  return e?.type === "tag";
344
344
  }
345
- function tt(e, t) {
345
+ function $e(e, t) {
346
346
  return e.html(t) ?? "";
347
347
  }
348
- function nt(e, t) {
348
+ function et(e, t) {
349
349
  let n = [], r = /* @__PURE__ */ new Set();
350
350
  for (let i of e(t).find("a").get()) {
351
351
  let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
@@ -353,43 +353,43 @@ function nt(e, t) {
353
353
  let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
354
354
  if (r.has(l)) continue;
355
355
  r.add(l);
356
- let u = N(e(i).text());
356
+ let u = F(e(i).text());
357
357
  n.push({
358
358
  id: c,
359
- ...rt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
359
+ ...tt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
360
360
  ...u ? { text: u } : {},
361
361
  type: s
362
362
  });
363
363
  }
364
364
  return n;
365
365
  }
366
- function rt(e, t, n) {
367
- let r = it(e, t, n);
366
+ function tt(e, t, n) {
367
+ let r = nt(e, t, n);
368
368
  return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
369
369
  }
370
- function it(e, t, n) {
370
+ function nt(e, t, n) {
371
371
  if (t === n) return "";
372
372
  if (t.type === "text") return t.data ?? "";
373
- if (!I(t)) return "";
373
+ if (!R(t)) return "";
374
374
  let r = "";
375
375
  for (let i of e(t).contents().get()) {
376
376
  if (i === n) return r;
377
- if (I(i) && e.contains(i, n)) return r + it(e, i, n);
377
+ if (R(i) && e.contains(i, n)) return r + nt(e, i, n);
378
378
  r += e(i).text();
379
379
  }
380
380
  return r;
381
381
  }
382
- function at(e, t) {
383
- return t.map((t) => N(e(t).text())).filter(Boolean).join("\n");
382
+ function rt(e, t) {
383
+ return t.map((t) => F(e(t).text())).filter(Boolean).join("\n");
384
384
  }
385
- function ot(e) {
386
- let t = P(e);
387
- return !t || ze.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
385
+ function it(e) {
386
+ let t = I(e);
387
+ return !t || Le.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
388
388
  }
389
- async function st(e, t, n) {
389
+ async function at(e, t, n) {
390
390
  if (n === void 0) throw Error("A document date is required to add links to legal references.");
391
391
  if (t.legiResolver === void 0 && t.canutesDb === void 0) throw Error("A Canutes database or an explicit legal resolver is required to add links to legal references.");
392
- let r = t.legiResolver ?? new se(t.canutesDb), { output: i } = await oe({
392
+ let r = t.legiResolver ?? new ae(t.canutesDb), { output: i } = await ie({
393
393
  date: n,
394
394
  html: e,
395
395
  includeInternalArticleLinks: t.includeInternalArticleLinks,
@@ -402,53 +402,60 @@ async function st(e, t, n) {
402
402
  });
403
403
  return i ?? e;
404
404
  }
405
- function ct(e, t) {
405
+ function ot(e, t) {
406
406
  let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
407
- return I(r) && I(n) && e(n).parents("table").get(0) === r ? r : I(n) ? n : t;
407
+ return R(r) && R(n) && e(n).parents("table").get(0) === r ? r : R(n) ? n : t;
408
408
  }
409
- function lt(e, t, n, r) {
410
- if (t.has(r.container)) return;
411
- let i = r.id ?? F(r.num ?? r.label);
412
- n.has(i) || (n.add(i), t.add(r.container), e.push({
413
- id: i,
414
- label: r.label,
415
- num: r.num,
416
- title: r.title,
417
- element: r.element,
418
- container: r.container
419
- }));
409
+ function st(e, t, n, r, i) {
410
+ if (n.has(i.container)) return;
411
+ let a = i.id ?? L(i.num ?? i.label);
412
+ if (r.has(a)) return;
413
+ r.add(a), n.add(i.container);
414
+ let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = R(o) ? lt(e, o) : null, c = s ? e(o).text() : "", l = R(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => I(e) === I(c)) ? {
415
+ element: o,
416
+ text: `${s.label}\n${s.title}`
417
+ } : void 0;
418
+ t.push({
419
+ id: a,
420
+ label: i.label,
421
+ num: i.num,
422
+ title: i.title,
423
+ element: i.element,
424
+ container: i.container,
425
+ splitAtBreak: l
426
+ });
420
427
  }
421
- function L(e) {
428
+ function ct(e) {
422
429
  let t = /* @__PURE__ */ new Map();
423
430
  return e("body *").each((e, n) => {
424
431
  t.set(n, e);
425
432
  }), t;
426
433
  }
427
- function R(e, t) {
434
+ function z(e, t) {
428
435
  return e.get(t) ?? 2 ** 53 - 1;
429
436
  }
430
- function ut(e, t) {
431
- if (!e(t).hasClass("assnat9ArticleNum") && !ft(e, t) || e(t).find("br").length !== 1) return null;
437
+ function lt(e, t) {
438
+ if (!e(t).hasClass("assnat9ArticleNum") && !dt(e, t) || e(t).find("br").length !== 1) return null;
432
439
  let n = "", r = "", i = !1, a = (e) => {
433
440
  if (e.type === "text") i ? r += e.data : n += e.data;
434
- else if (I(e)) if (e.tagName.toLowerCase() === "br") i = !0;
441
+ else if (R(e)) if (e.tagName.toLowerCase() === "br") i = !0;
435
442
  else for (let t of e.children) a(t);
436
443
  };
437
444
  a(t);
438
- let o = C(N(n)), s = N(r);
445
+ let o = T(F(n)), s = F(r);
439
446
  return o && !o.title && s ? {
440
447
  ...o,
441
448
  title: s
442
449
  } : null;
443
450
  }
444
- function dt(e) {
451
+ function ut(e) {
445
452
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
446
453
  e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
447
- if (Ve(e, a)) return;
448
- let o = N(e(a).text()), s = e(a).attr("id");
454
+ if (ze(e, a)) return;
455
+ let o = F(e(a).text()), s = e(a).attr("id");
449
456
  if (!s || r.has(s)) return;
450
- let c = ct(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = C(o) ?? (I(l) && (a === l || e(a).find("br").length === 1) ? ut(e, l) : null);
451
- u && lt(t, n, r, {
457
+ let c = ot(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = T(o) ?? (R(l) && (a === l || e(a).find("br").length === 1) ? lt(e, l) : null);
458
+ u && st(e, t, n, r, {
452
459
  id: s,
453
460
  ...u,
454
461
  element: a,
@@ -456,37 +463,37 @@ function dt(e) {
456
463
  });
457
464
  }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
458
465
  if (n.has(a)) return;
459
- let o = C(N(e(a).text())) ?? ut(e, a);
460
- o && lt(t, n, r, {
466
+ let o = T(F(e(a).text())) ?? lt(e, a);
467
+ o && st(e, t, n, r, {
461
468
  ...o,
462
469
  element: a,
463
470
  container: a
464
471
  });
465
472
  });
466
- let i = L(e);
467
- return t.sort((e, t) => R(i, e.container) - R(i, t.container)), t;
473
+ let i = ct(e);
474
+ return t.sort((e, t) => z(i, e.container) - z(i, t.container)), t;
468
475
  }
469
- function ft(e, t) {
470
- if (Ve(e, t)) return !1;
476
+ function dt(e, t) {
477
+ if (ze(e, t)) return !1;
471
478
  let n = t.tagName?.toLowerCase();
472
479
  if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
473
480
  let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
474
481
  return /text-align\s*:\s*center/iu.test(r) && (/font-weight\s*:\s*bold/iu.test(r) || /font-weight\s*:\s*bold/iu.test(i) || /<(?:strong|b)(?:\s|>)/iu.test(i));
475
482
  }
476
- function pt(e) {
483
+ function ft(e) {
477
484
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
478
485
  return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
479
- if (Ve(e, a) || !e(a).hasClass("assnat9ArticleNum") && !ft(e, a)) return;
480
- let o = C(e(a).text()) ?? ut(e, a);
481
- o && lt(t, n, r, {
486
+ if (ze(e, a) || !e(a).hasClass("assnat9ArticleNum") && !dt(e, a)) return;
487
+ let o = T(e(a).text()) ?? lt(e, a);
488
+ o && st(e, t, n, r, {
482
489
  ...o,
483
490
  element: a,
484
491
  container: a
485
492
  });
486
493
  }), t;
487
494
  }
488
- function mt(e) {
489
- let t = Be(e ?? "").replace(/[()]/gu, "").trim();
495
+ function pt(e) {
496
+ let t = Re(e ?? "").replace(/[()]/gu, "").trim();
490
497
  if (!t || t.toLowerCase() === "liminaire") return;
491
498
  if (t.toLowerCase() === "unique") return {
492
499
  base: 1,
@@ -495,7 +502,7 @@ function mt(e) {
495
502
  };
496
503
  let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
497
504
  if (!n) return;
498
- let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : gt(i);
505
+ let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : ht(i);
499
506
  if (a !== void 0) return {
500
507
  base: r,
501
508
  suffixOrder: a,
@@ -503,7 +510,7 @@ function mt(e) {
503
510
  text: t
504
511
  };
505
512
  }
506
- function ht(e, t) {
513
+ function mt(e, t) {
507
514
  if (t.base !== e.base) return t.base - e.base;
508
515
  if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
509
516
  for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
@@ -512,14 +519,14 @@ function ht(e, t) {
512
519
  }
513
520
  return 0;
514
521
  }
515
- function gt(e) {
516
- let t = new T(e), n = Ee(t);
522
+ function ht(e) {
523
+ let t = new D(e), n = we(t);
517
524
  if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
518
525
  }
519
- function _t(e) {
526
+ function gt(e) {
520
527
  let t = [], n = e.map((e) => ({
521
528
  heading: e,
522
- token: mt(e.num)
529
+ token: pt(e.num)
523
530
  }));
524
531
  n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
525
532
  code: "article_toc_out_of_order",
@@ -528,7 +535,7 @@ function _t(e) {
528
535
  let r;
529
536
  for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
530
537
  if (r !== void 0) {
531
- let n = ht(r, i);
538
+ let n = mt(r, i);
532
539
  n === 0 ? t.push({
533
540
  code: "article_toc_duplicate_number",
534
541
  message: `Article ${e.num ?? e.label} is repeated`,
@@ -557,60 +564,60 @@ function _t(e) {
557
564
  }
558
565
  return t;
559
566
  }
560
- function vt(e) {
561
- let t = _t(e);
567
+ function _t(e) {
568
+ let t = gt(e);
562
569
  t.length > 0 && process.env.TISSEUSE_WARN_ASSEMBLEE_HEADING_SEQUENCE === "1" && console.warn("Incoherent Assemblée article heading sequence", { issues: t.map((e) => e.message) });
563
570
  }
564
- function yt(e, { warn: t = !0 } = {}) {
565
- let n = dt(e), r = pt(e);
566
- if (n.length === 0) return t && vt(r), r;
567
- let i = L(e), a = (e, t) => {
568
- let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => F(e.num ?? e.label)));
571
+ function vt(e, { warn: t = !0 } = {}) {
572
+ let n = ut(e), r = ft(e);
573
+ if (n.length === 0) return t && _t(r), r;
574
+ let i = ct(e), a = (e, t) => {
575
+ let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => L(e.num ?? e.label)));
569
576
  for (let i of t) {
570
- let t = F(i.num ?? i.label);
577
+ let t = L(i.num ?? i.label);
571
578
  n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
572
579
  }
573
- return e.sort((e, t) => R(i, e.container) - R(i, t.container)), e;
574
- }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && _t(c).length > _t(s).length ? s : c;
575
- return t && vt(l), l;
580
+ return e.sort((e, t) => z(i, e.container) - z(i, t.container)), e;
581
+ }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && gt(c).length > gt(s).length ? s : c;
582
+ return t && _t(l), l;
576
583
  }
577
- function bt(e) {
584
+ function yt(e) {
578
585
  let t = e.next;
579
586
  for (; t !== null;) {
580
- if (I(t)) return t;
587
+ if (R(t)) return t;
581
588
  t = t.next;
582
589
  }
583
590
  return null;
584
591
  }
585
- function xt(e, t, n) {
592
+ function bt(e, t, n) {
586
593
  let r = e(t.container);
587
594
  if (!r.is("p.assnat9ArticleNum")) return;
588
595
  let i = r.parent(), a = i.parent();
589
596
  if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
590
597
  let o = a.children().get();
591
- if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || N(e(o[1]).text()) !== "") return;
598
+ if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || F(e(o[1]).text()) !== "") return;
592
599
  let s = o.length === 4 ? o[2] : void 0;
593
- if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(N(e(s).text())))) return;
600
+ if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(F(e(s).text())))) return;
594
601
  let c = o.at(-1);
595
- if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => C(e(t).text()) !== null))) return [
602
+ if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => T(e(t).text()) !== null))) return [
596
603
  t.container,
597
604
  ...s === void 0 ? [] : [s],
598
605
  c
599
606
  ];
600
607
  }
601
- function St(e, t, n, r = L(e)) {
608
+ function xt(e, t, n, r = ct(e)) {
602
609
  let i = [t.container], a = n?.container;
603
- for (let e = bt(t.container); e !== null && e !== a; e = bt(e)) i.push(e);
610
+ for (let e = yt(t.container); e !== null && e !== a; e = yt(e)) i.push(e);
604
611
  if (i.length > 1) return i;
605
- let o = xt(e, t, n);
612
+ let o = bt(e, t, n);
606
613
  if (o !== void 0) return o;
607
- let s = R(r, t.container), c = a ? R(r, a) : -1;
614
+ let s = z(r, t.container), c = a ? z(r, a) : -1;
608
615
  return e("body > *").get().filter((e) => {
609
- let t = R(r, e);
616
+ let t = z(r, e);
610
617
  return t >= s && (c === -1 || t < c);
611
618
  });
612
619
  }
613
- function Ct(e, t) {
620
+ function St(e, t) {
614
621
  let n = [], r = /* @__PURE__ */ new Set();
615
622
  for (let i of t) {
616
623
  let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
@@ -618,97 +625,97 @@ function Ct(e, t) {
618
625
  }
619
626
  return n;
620
627
  }
621
- function wt(e, t, n) {
622
- let r = [], i = !1;
623
- for (let a of Ct(e, n)) {
624
- let n = e(a).is("table.akn-quoted-table") ? fn(e, a) : N(e(a).text());
625
- if (!n) continue;
626
- ze.test(n) && (i = !0);
627
- let o = i ? "noise" : ot(n), s = `${t}-b${r.length + 1}`;
628
- e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
629
- id: s,
628
+ function Ct(e, t, n, r) {
629
+ let i = [], a = !1;
630
+ for (let o of St(e, n)) {
631
+ let n = e(o).is("table.akn-quoted-table") ? dn(e, o) : F(e(o).text());
632
+ if (o === r?.splitAtBreak?.element && (n = r.splitAtBreak.text), !n) continue;
633
+ Le.test(n) && (a = !0);
634
+ let s = a ? "noise" : it(n), c = `${t}-b${i.length + 1}`;
635
+ e(o).attr("data-pjl-parsed-article-id", t), e(o).attr("data-pjl-parsed-block-id", c), i.push({
636
+ id: c,
630
637
  articleId: t,
631
- kind: o,
632
- links: nt(e, a),
638
+ kind: s,
639
+ links: et(e, o),
633
640
  text: n,
634
- html: tt(e, a)
641
+ html: $e(e, o)
635
642
  });
636
643
  }
637
- return r;
644
+ return i;
638
645
  }
639
- function Tt(e, t) {
646
+ function wt(e, t) {
640
647
  if (t.length === 0) return e;
641
648
  let n = `<div style="display: none;">\n${t.map((e) => `<p class="assnatTOC6"><a href="#${e.id}"><span class="assnatHyperlink" style="font-weight:bold; text-decoration:none; color:#000000">${e.label.toUpperCase()}</span></a></p>`).join("\n")}\n</div>`;
642
649
  return e.includes("class=\"assnatSection3\"") ? e.replace(/(<div class="assnatSection3">)/u, `${n}$1`) : e.includes("id=\"formCorrection:panel:1:table\"") ? e.replace(/(<div id="formCorrection:panel:1:table">)/u, `${n}$1`) : `${n}\n${e}`;
643
650
  }
644
- function Et(e) {
645
- let t = w(e), n = Dt(t);
646
- for (let e of yt(t, { warn: !1 })) {
647
- let r = F(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
651
+ function Tt(e) {
652
+ let t = E(e), n = Et(t);
653
+ for (let e of vt(t, { warn: !1 })) {
654
+ let r = L(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
648
655
  if (a !== r) {
649
- if (a?.startsWith("_Toc") && !kt(n, a, e.element)) {
656
+ if (a?.startsWith("_Toc") && !Ot(n, a, e.element)) {
650
657
  let e = t("<span></span>").attr("id", a);
651
658
  i.before(e);
652
659
  let r = e.get(0);
653
- I(r) && z(n, a, r);
660
+ R(r) && B(n, a, r);
654
661
  }
655
- a && Ot(n, a, e.element), i.attr("id", r), z(n, r, e.element);
662
+ a && Dt(n, a, e.element), i.attr("id", r), B(n, r, e.element);
656
663
  }
657
664
  }
658
- let r = yt(t), i = L(t);
665
+ let r = vt(t), i = ct(t);
659
666
  for (let [e, a] of r.entries()) {
660
- let o = St(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
667
+ let o = xt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
661
668
  for (let e of o) {
662
669
  let r = t(e).attr("data-alinea")?.trim();
663
670
  if (!r) continue;
664
671
  let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
665
- if (kt(n, i, e)) continue;
672
+ if (Ot(n, i, e)) continue;
666
673
  let o = t(e).attr("id");
667
674
  if (o && o !== i) {
668
675
  let r = t("<span></span>").attr("id", i);
669
676
  t(e).before(r);
670
677
  let a = r.get(0);
671
- I(a) && z(n, i, a);
672
- } else o && Ot(n, o, e), t(e).attr("id", i), z(n, i, e);
678
+ R(a) && B(n, i, a);
679
+ } else o && Dt(n, o, e), t(e).attr("id", i), B(n, i, e);
673
680
  }
674
681
  }
675
682
  return t.html();
676
683
  }
677
- function Dt(e) {
684
+ function Et(e) {
678
685
  let t = /* @__PURE__ */ new Map();
679
686
  for (let n of e("[id]").get()) {
680
687
  let r = e(n).attr("id");
681
- r && z(t, r, n);
688
+ r && B(t, r, n);
682
689
  }
683
690
  return t;
684
691
  }
685
- function z(e, t, n) {
692
+ function B(e, t, n) {
686
693
  let r = e.get(t);
687
694
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
688
695
  }
689
- function Ot(e, t, n) {
696
+ function Dt(e, t, n) {
690
697
  let r = e.get(t);
691
698
  r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
692
699
  }
693
- function kt(e, t, n) {
700
+ function Ot(e, t, n) {
694
701
  for (let r of e.get(t) ?? []) if (r !== n) return !0;
695
702
  return !1;
696
703
  }
697
- function At(e, t) {
698
- let n = et("sourceText" in t ? t.sourceText : "");
704
+ function kt(e, t) {
705
+ let n = Qe("sourceText" in t ? t.sourceText : "");
699
706
  if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
700
- let t = et(e.text);
707
+ let t = Qe(e.text);
701
708
  return t.length > 0 && (n.includes(t) || t.includes(n));
702
709
  });
703
710
  }
704
- function jt(e, t) {
711
+ function At(e, t) {
705
712
  if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
706
713
  }
707
- function Mt(e) {
714
+ function jt(e) {
708
715
  return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
709
716
  }
710
- function Nt(e) {
711
- let t = Re(e.text);
717
+ function Mt(e) {
718
+ let t = Ie(e.text);
712
719
  if (t.length !== 1) return;
713
720
  let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
714
721
  let r = n.text ?? "", i = e.text.indexOf(r);
@@ -722,21 +729,21 @@ function Nt(e) {
722
729
  modifyingArticleLabel: i.text ?? ""
723
730
  };
724
731
  }
725
- function Pt(e, t) {
726
- let n = N(e);
732
+ function Nt(e, t) {
733
+ let n = F(e);
727
734
  if (!n) return;
728
735
  let r = x(n);
729
736
  return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
730
737
  }
731
- function Ft(e) {
732
- let t = /* @__PURE__ */ new Map(), n = [], r = ae(e.map((e) => e.text)), i = -1;
738
+ function Pt(e) {
739
+ let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
733
740
  for (let [a, o] of e.entries()) {
734
741
  let e = r.get(a);
735
742
  if (e && (i = e.endIndex), a <= i) {
736
743
  t.set(o.id, [...n.map((e) => e.block), o]);
737
744
  continue;
738
745
  }
739
- let s = Pt(o.text, n.at(-1)?.level);
746
+ let s = Nt(o.text, n.at(-1)?.level);
740
747
  if (s === void 0) {
741
748
  t.set(o.id, [...n.map((e) => e.block), o]);
742
749
  continue;
@@ -749,14 +756,14 @@ function Ft(e) {
749
756
  }
750
757
  return t;
751
758
  }
752
- function It(e, t) {
759
+ function Ft(e, t) {
753
760
  let n = [], r = /* @__PURE__ */ new Set();
754
761
  for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
755
762
  return n;
756
763
  }
757
- function Lt(e, t, n) {
764
+ function It(e, t, n) {
758
765
  if (!t) return;
759
- let r = It(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
766
+ let r = Ft(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
760
767
  if (r.length === 0) return;
761
768
  let i = r.map((e) => e.id);
762
769
  if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
@@ -771,7 +778,7 @@ function Lt(e, t, n) {
771
778
  }
772
779
  };
773
780
  }
774
- function Rt(e) {
781
+ function Lt(e) {
775
782
  let t = [], n = 0;
776
783
  for (let r of e.blocks) {
777
784
  let i = e.directiveText.indexOf(r.text, n);
@@ -785,7 +792,7 @@ function Rt(e) {
785
792
  }
786
793
  return t;
787
794
  }
788
- function zt(e, t, n) {
795
+ function Rt(e, t, n) {
789
796
  let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
790
797
  if (a.length === 0) return;
791
798
  let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
@@ -799,7 +806,7 @@ function zt(e, t, n) {
799
806
  }
800
807
  };
801
808
  }
802
- function Bt(e, t, n) {
809
+ function zt(e, t, n) {
803
810
  if (!t) return;
804
811
  let r = e.directiveText.indexOf(t.text);
805
812
  if (r === -1) return;
@@ -812,15 +819,26 @@ function Bt(e, t, n) {
812
819
  stop: a
813
820
  };
814
821
  }
815
- function Vt(e, t) {
816
- let n = performance.now(), r = performance.now(), i = Rt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Ft(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
822
+ function Bt(e, t) {
823
+ let n = performance.now(), r = performance.now(), i = Lt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Pt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
817
824
  for (let t of e.blocks) {
818
- t.qualifiedVersion = Nt(t);
819
- let e = Mt(t);
825
+ t.qualifiedVersion = Mt(t);
826
+ let e = jt(t);
820
827
  (e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
821
828
  }
822
- let p = performance.now() - o, m = performance.now(), h = te(), g = de(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
823
- let n = zt(e, i, t), r = jt(s, n) ?? At(e.blocks, t), a = Mt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Bt(e, r, t), f = Lt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
829
+ let p = performance.now() - o, m = performance.now(), h = te(), g = e.blocks[0], _ = e.title !== void 0 && g?.text.startsWith(`${e.label}\n`) && (e.directiveText === g.text || e.directiveText.startsWith(`${g.text}\n`)), v = _ && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", y = le(_ ? `${e.label}${v}${e.title}${e.directiveText.slice(g.text.length)}` : e.directiveText, t === void 0 ? void 0 : h);
830
+ if (_ && !v) {
831
+ let t = e.label.length;
832
+ y = y.map((e) => ({
833
+ ...e,
834
+ sourcePosition: {
835
+ start: e.sourcePosition.start > t ? e.sourcePosition.start + 1 : e.sourcePosition.start,
836
+ stop: e.sourcePosition.stop > t ? e.sourcePosition.stop + 1 : e.sourcePosition.stop
837
+ }
838
+ }));
839
+ }
840
+ let b = performance.now() - m, x = performance.now(), ee = y.map((t) => {
841
+ let n = Rt(e, i, t), r = At(s, n) ?? kt(e.blocks, t), a = jt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = zt(e, r, t), f = It(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
824
842
  return {
825
843
  articleId: e.id,
826
844
  blockId: r?.id,
@@ -839,19 +857,19 @@ function Vt(e, t) {
839
857
  ...o.length > 0 ? { targetIds: o } : {},
840
858
  ...r?.id !== void 0 && u.get(r.id) ? { qualifiedVersion: u.get(r.id) } : {}
841
859
  };
842
- }), b = /* @__PURE__ */ new Set(), x = /* @__PURE__ */ new Map(), ee = y.flatMap((e) => {
860
+ }), S = /* @__PURE__ */ new Set(), C = /* @__PURE__ */ new Map(), w = ee.flatMap((e) => {
843
861
  let t = e.blockId ? s.get(e.blockId) : void 0;
844
862
  if (!t) return [e];
845
- if (b.has(t.id)) return [];
846
- let n = x.get(t.id);
847
- if (n === void 0 && (n = Ie(t.text, Mt(t), e.directive), x.set(t.id, n)), !n) {
848
- let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Fe(t.text, n.operations.length) : null;
863
+ if (S.has(t.id)) return [];
864
+ let n = C.get(t.id);
865
+ if (n === void 0 && (n = Pe(t.text, jt(t), e.directive), C.set(t.id, n)), !n) {
866
+ let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ne(t.text, n.operations.length) : null;
849
867
  return [r ? {
850
868
  ...e,
851
869
  sourceAnnotations: r
852
870
  } : e];
853
871
  }
854
- return b.add(t.id), [{
872
+ return S.add(t.id), [{
855
873
  ...e,
856
874
  effects: n.map((t) => ({
857
875
  ...t,
@@ -862,27 +880,27 @@ function Vt(e, t) {
862
880
  }
863
881
  }))
864
882
  }];
865
- }), S = performance.now() - v;
883
+ }), ne = performance.now() - x;
866
884
  return t?.push({
867
885
  actionDirectiveExtraction: h,
868
886
  articleId: e.id,
869
887
  blockCount: e.blocks.length,
870
888
  buildRangesMs: Math.round(a * 10) / 10,
871
- directiveCount: ee.length,
889
+ directiveCount: w.length,
872
890
  directiveTextSize: e.directiveText.length,
873
- extractActionDirectivesMs: Math.round(_ * 10) / 10,
874
- mapDirectivesMs: Math.round(S * 10) / 10,
891
+ extractActionDirectivesMs: Math.round(b * 10) / 10,
892
+ mapDirectivesMs: Math.round(ne * 10) / 10,
875
893
  prepareBlockIndexesMs: Math.round(p * 10) / 10,
876
894
  totalMs: Math.round((performance.now() - n) * 10) / 10
877
- }), ee;
895
+ }), w;
878
896
  }
879
- function Ht(e) {
897
+ function Vt(e) {
880
898
  let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
881
899
  for (let i of e) {
882
- let e = Ke(i.directive);
900
+ let e = We(i.directive);
883
901
  if (e.length === 0) continue;
884
902
  let a = e.map(({ num: e }) => ({
885
- definitionId: `${i.articleId}:article:${Ue(e)}`,
903
+ definitionId: `${i.articleId}:article:${Ve(e)}`,
886
904
  num: e
887
905
  }));
888
906
  t.set(i, a);
@@ -905,13 +923,13 @@ function Ht(e) {
905
923
  definitions: n
906
924
  };
907
925
  }
908
- function Ut(e, t, n) {
909
- let r = new Map(t.map((e) => [He(e.num), e]));
926
+ function Ht(e, t, n) {
927
+ let r = new Map(t.map((e) => [Be(e.num), e]));
910
928
  return e.map((e) => {
911
- let t = n.get(e), i = t?.[0], a = [...qe(e.directive.reference)].map((e) => r.get(He(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
929
+ let t = n.get(e), i = t?.[0], a = [...Ge(e.directive.reference)].map((e) => r.get(Be(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
912
930
  definitionId: a.definitionId,
913
931
  num: a.num
914
- }, s = Je(e.directive), c = (e.targetIds?.length ?? 0) > 0;
932
+ }, s = Ke(e.directive), c = (e.targetIds?.length ?? 0) > 0;
915
933
  return {
916
934
  ...e,
917
935
  ...i === void 0 ? {} : { createdArticle: i },
@@ -924,7 +942,7 @@ function Ut(e, t, n) {
924
942
  };
925
943
  });
926
944
  }
927
- function Wt(e) {
945
+ function Ut(e) {
928
946
  switch (e.kind) {
929
947
  case "insert_after":
930
948
  case "insert_before": return [e.insertText];
@@ -942,8 +960,8 @@ function Wt(e) {
942
960
  default: return [];
943
961
  }
944
962
  }
945
- function Gt(e) {
946
- return e.flatMap((e) => Wt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
963
+ function Wt(e) {
964
+ return e.flatMap((e) => Ut(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
947
965
  code: "nested_french_quote_in_redaction",
948
966
  message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
949
967
  details: {
@@ -955,18 +973,18 @@ function Gt(e) {
955
973
  }
956
974
  })));
957
975
  }
958
- function Kt(e) {
959
- return Wt(e).map((t) => ({
976
+ function Gt(e) {
977
+ return Ut(e).map((t) => ({
960
978
  directiveKind: e.kind,
961
979
  text: t
962
980
  }));
963
981
  }
964
- function qt(e) {
982
+ function Kt(e) {
965
983
  let t = /* @__PURE__ */ new Set();
966
984
  for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
967
985
  return Array.from(t);
968
986
  }
969
- function Jt(e, t) {
987
+ function qt(e, t) {
970
988
  let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
971
989
  for (let e of r) {
972
990
  let t = n.get(e);
@@ -978,11 +996,11 @@ function Jt(e, t) {
978
996
  }
979
997
  return i;
980
998
  }
981
- function Yt(e, t, n) {
999
+ function Jt(e, t, n) {
982
1000
  return e.find((e) => t >= e.start && n <= e.stop);
983
1001
  }
984
- function Xt(e, t, n) {
985
- let r = qt(n), i = r.flatMap((t) => {
1002
+ function Yt(e, t, n) {
1003
+ let r = Kt(n), i = r.flatMap((t) => {
986
1004
  for (let n of e.blocks) {
987
1005
  let e = n.text.indexOf(t);
988
1006
  if (e !== -1) return [{
@@ -1001,7 +1019,7 @@ function Xt(e, t, n) {
1001
1019
  e.directiveText
1002
1020
  ].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
1003
1021
  if (!o) return [];
1004
- let s = Jt(e, t);
1022
+ let s = qt(e, t);
1005
1023
  if (s.length === 0) return [];
1006
1024
  let c = [], l = 0;
1007
1025
  for (let e of r) {
@@ -1009,7 +1027,7 @@ function Xt(e, t, n) {
1009
1027
  if (t === -1) continue;
1010
1028
  let n = t + e.length;
1011
1029
  l = n;
1012
- let r = Yt(s, t, n);
1030
+ let r = Jt(s, t, n);
1013
1031
  r && c.push({
1014
1032
  blockId: r.block.id,
1015
1033
  start: t - r.start,
@@ -1019,15 +1037,15 @@ function Xt(e, t, n) {
1019
1037
  }
1020
1038
  return c;
1021
1039
  }
1022
- function Zt(e, t) {
1040
+ function Xt(e, t) {
1023
1041
  let n = new Map(e.map((e) => [e.id, e]));
1024
1042
  return t.flatMap((e) => {
1025
1043
  let t = n.get(e.articleId);
1026
- return t ? Kt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1044
+ return t ? Gt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1027
1045
  articleId: e.articleId,
1028
1046
  code: "nested_french_quote_in_redaction",
1029
1047
  message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
1030
- ranges: Xt(t, e, r),
1048
+ ranges: Yt(t, e, r),
1031
1049
  severity: "warning",
1032
1050
  details: {
1033
1051
  blockId: e.blockId,
@@ -1038,8 +1056,8 @@ function Zt(e, t) {
1038
1056
  })) : [];
1039
1057
  });
1040
1058
  }
1041
- function Qt(e, t) {
1042
- let n = new Map(e.flatMap((e) => [...ae(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1059
+ function Zt(e, t) {
1060
+ let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1043
1061
  articleId: e.id,
1044
1062
  blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
1045
1063
  ...n
@@ -1061,8 +1079,8 @@ function Qt(e, t) {
1061
1079
  }];
1062
1080
  });
1063
1081
  }
1064
- function $t(e, t, n, r, i, a, o = !0, s) {
1065
- let c = new Ce("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
1082
+ function Qt(e, t, n, r, i, a, o = !0, s) {
1083
+ let c = new xe("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
1066
1084
  sourceFormat: e,
1067
1085
  documentDate: r,
1068
1086
  html: t,
@@ -1083,14 +1101,14 @@ function $t(e, t, n, r, i, a, o = !0, s) {
1083
1101
  directiveTextSize: u.length
1084
1102
  }), e;
1085
1103
  }
1086
- let f = c.timeSync("extractGlobalApplicabilityDate", () => $e(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1104
+ let f = c.timeSync("extractGlobalApplicabilityDate", () => Ze(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1087
1105
  let e = [];
1088
1106
  for (let t of i) {
1089
- let n = Vt(t, c.enabled ? p : void 0);
1107
+ let n = Bt(t, c.enabled ? p : void 0);
1090
1108
  e.push(...n);
1091
1109
  }
1092
1110
  return e;
1093
- }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Ht(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Ut(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Gt(_), { count: _.length }), y = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Zt(i, _), ...Qt(i, _)], { count: _.length }), ee = {
1111
+ }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Vt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Ht(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Wt(_), { count: _.length }), y = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Xt(i, _), ...Zt(i, _)], { count: _.length }), ee = {
1094
1112
  ...d,
1095
1113
  ...f ? { globalApplicabilityDate: f } : {},
1096
1114
  ...g.length > 0 ? { internalArticleDefinitions: g } : {},
@@ -1184,18 +1202,18 @@ function $t(e, t, n, r, i, a, o = !0, s) {
1184
1202
  slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
1185
1203
  }), ee;
1186
1204
  }
1187
- function en(e) {
1205
+ function $t(e) {
1188
1206
  return { items: e.map((e) => ({
1189
1207
  id: e.id,
1190
1208
  line: e.title ? `${e.label} : ${e.title}` : e.label,
1191
1209
  type: "article"
1192
1210
  })) };
1193
1211
  }
1194
- function tn(e) {
1195
- return Array.from(ue(e)).filter((e) => e.type === "article").map((e) => P(e.line.split(/[::]/u)[0]));
1212
+ function en(e) {
1213
+ return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => I(e.line.split(/[::]/u)[0]));
1196
1214
  }
1197
- function nn(e, t, n, r) {
1198
- let i = _t(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ue(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? F(e.num) : w(e.html)("p.TCNumArticle").first().attr("id") ?? F(e.label) : e.id), c = o.map((e) => e.id);
1215
+ function tn(e, t, n, r) {
1216
+ let i = gt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ce(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? L(e.num) : E(e.html)("p.TCNumArticle").first().attr("id") ?? L(e.label) : e.id), c = o.map((e) => e.id);
1199
1217
  (c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
1200
1218
  code: "article_toc_source_heading_mismatch",
1201
1219
  message: "The table of contents differs from the parsed article headings",
@@ -1211,8 +1229,8 @@ function nn(e, t, n, r) {
1211
1229
  });
1212
1230
  return i;
1213
1231
  }
1214
- function rn(e, t, n) {
1215
- let r = tn(b(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => P(e.label)), a = en(e), o = [...n, ...nn(e, a, t, "assemblee-html")];
1232
+ function nn(e, t, n) {
1233
+ let r = en(b(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => I(e.label)), a = $t(e), o = [...n, ...tn(e, a, t, "assemblee-html")];
1216
1234
  if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
1217
1235
  let t = r.findIndex((e, t) => e !== i[t]);
1218
1236
  o.push({
@@ -1236,24 +1254,24 @@ function rn(e, t, n) {
1236
1254
  tableOfContents: a
1237
1255
  };
1238
1256
  }
1239
- async function an(e, t) {
1240
- let n = new Ce("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => on(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Et(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => w(i)), o = n.timeSync("extractArticleHeadings", () => yt(a)), s = new Set(o.map((e) => e.id)), c = pt(a).filter((e) => !s.has(F(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1257
+ async function rn(e, t) {
1258
+ let n = new xe("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => an(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Tt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => E(i)), o = n.timeSync("extractArticleHeadings", () => vt(a)), s = new Set(o.map((e) => e.id)), c = ft(a).filter((e) => !s.has(L(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1241
1259
  code: "article_toc_source_heading_mismatch",
1242
1260
  message: "Some structural article headings were not retained",
1243
1261
  details: { discardedCandidates: c }
1244
- }] : [], u = L(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1245
- let n = St(a, e, o[t + 1], u), r = wt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1262
+ }] : [], u = ct(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1263
+ let n = xt(a, e, o[t + 1], u), r = Ct(a, e.id, n, e), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1246
1264
  return {
1247
1265
  id: e.id,
1248
1266
  label: e.label,
1249
1267
  num: e.num,
1250
1268
  title: e.title,
1251
- text: at(a, n),
1252
- html: n.map((e) => tt(a, e)).join("\n"),
1269
+ text: rt(a, n),
1270
+ html: n.map((e) => $e(a, e)).join("\n"),
1253
1271
  directiveText: i,
1254
1272
  blocks: r
1255
1273
  };
1256
- }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Tt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => rn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => $t("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1274
+ }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => wt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => nn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => Qt("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1257
1275
  return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
1258
1276
  articleCount: h.articles.length,
1259
1277
  blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1261,18 +1279,18 @@ async function an(e, t) {
1261
1279
  targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
1262
1280
  }), h;
1263
1281
  }
1264
- async function on(e, t) {
1282
+ async function an(e, t) {
1265
1283
  return {
1266
1284
  sourceFormat: "assemblee-html",
1267
1285
  documentDate: t.date,
1268
1286
  html: e,
1269
- linkedHtml: await st(e, t, t.date)
1287
+ linkedHtml: await at(e, t, t.date)
1270
1288
  };
1271
1289
  }
1272
- function B(e) {
1290
+ function V(e) {
1273
1291
  return e.replace(/&/gu, "&amp;").replace(/</gu, "&lt;").replace(/>/gu, "&gt;").replace(/"/gu, "&quot;");
1274
1292
  }
1275
- function sn(e) {
1293
+ function on(e) {
1276
1294
  let t = e;
1277
1295
  for (let e = 0; e < 3; e++) {
1278
1296
  let e = t;
@@ -1280,27 +1298,27 @@ function sn(e) {
1280
1298
  }
1281
1299
  return t;
1282
1300
  }
1283
- function cn(e) {
1301
+ function sn(e) {
1284
1302
  return /(?:&lt;|&amp;lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
1285
1303
  }
1286
- function V(e) {
1304
+ function H(e) {
1287
1305
  return e.name.replace(/^.*:/u, "");
1288
1306
  }
1289
- function ln(e, t) {
1290
- return t.children.map((t) => H(e, t)).filter(Boolean).join("");
1307
+ function cn(e, t) {
1308
+ return t.children.map((t) => U(e, t)).filter(Boolean).join("");
1291
1309
  }
1292
- function un(e, t) {
1293
- return t.children.map((t) => t.type === "text" && cn(t.data) ? sn(t.data) : H(e, t)).filter(Boolean).join("");
1310
+ function ln(e, t) {
1311
+ return t.children.map((t) => t.type === "text" && sn(t.data) ? on(t.data) : U(e, t)).filter(Boolean).join("");
1294
1312
  }
1295
- function H(e, t) {
1313
+ function U(e, t) {
1296
1314
  if (t.type === "text") {
1297
1315
  let e = t.data.replace(/\s+\./gu, ".");
1298
- return cn(e) ? sn(e) : B(e);
1316
+ return sn(e) ? on(e) : V(e);
1299
1317
  }
1300
- if (!I(t)) return "";
1301
- let n = V(t), r = ln(e, t);
1318
+ if (!R(t)) return "";
1319
+ let n = H(t), r = cn(e, t);
1302
1320
  switch (n) {
1303
- case "p": return `<p${U(e, t, [
1321
+ case "p": return `<p${fn(e, t, [
1304
1322
  "id",
1305
1323
  "class",
1306
1324
  "align",
@@ -1314,13 +1332,13 @@ function H(e, t) {
1314
1332
  case "u":
1315
1333
  case "sup":
1316
1334
  case "sub":
1317
- case "abbr": return `<${n}${U(e, t, [
1335
+ case "abbr": return `<${n}${fn(e, t, [
1318
1336
  "id",
1319
1337
  "class",
1320
1338
  "title",
1321
1339
  "style"
1322
1340
  ])}>${r}</${n}>`;
1323
- case "a": return `<a href="${B(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${U(e, t, [
1341
+ case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${fn(e, t, [
1324
1342
  "id",
1325
1343
  "class",
1326
1344
  "title",
@@ -1332,7 +1350,7 @@ function H(e, t) {
1332
1350
  case "tr":
1333
1351
  case "th":
1334
1352
  case "td": return pn(e, t, n, r);
1335
- case "caption": return `<caption${U(e, t, [
1353
+ case "caption": return `<caption${fn(e, t, [
1336
1354
  "id",
1337
1355
  "class",
1338
1356
  "align",
@@ -1340,7 +1358,7 @@ function H(e, t) {
1340
1358
  ])}>${r}</caption>`;
1341
1359
  case "num": return `<span class="akn-num">${r}</span> `;
1342
1360
  case "heading": return `<p class="akn-heading">${r}</p>`;
1343
- case "content": return un(e, t);
1361
+ case "content": return ln(e, t);
1344
1362
  case "alinea": return On(e, t, "div", "akn-alinea");
1345
1363
  case "article": return On(e, t, "article", "akn-article");
1346
1364
  case "blockList":
@@ -1366,7 +1384,7 @@ function H(e, t) {
1366
1384
  default: return r;
1367
1385
  }
1368
1386
  }
1369
- function dn(e, t) {
1387
+ function un(e, t) {
1370
1388
  let n = e(t).text();
1371
1389
  if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
1372
1390
  let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
@@ -1377,39 +1395,39 @@ function dn(e, t) {
1377
1395
  let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
1378
1396
  if (l) {
1379
1397
  let t = Number(e(l).attr("rowspan") ?? "1");
1380
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && N(e(l).text()) !== "«") return [];
1398
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && F(e(l).text()) !== "«") return [];
1381
1399
  i = t - 1;
1382
1400
  }
1383
1401
  if (u) {
1384
1402
  let t = Number(e(u).attr("rowspan") ?? "1");
1385
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(N(e(u).text()))) return [];
1403
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(F(e(u).text()))) return [];
1386
1404
  a = t - 1;
1387
1405
  }
1388
1406
  return [l, u];
1389
1407
  });
1390
1408
  if (o.some((e) => e.length !== 2)) return;
1391
- let s = o.map(([t]) => t ? N(e(t).text()) : ""), c = o.map(([, t]) => t ? N(e(t).text()) : "");
1409
+ let s = o.map(([t]) => t ? F(e(t).text()) : ""), c = o.map(([, t]) => t ? F(e(t).text()) : "");
1392
1410
  if (!(s.filter((e) => e === "«").length !== 1 || c.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || s.some((e) => e !== "" && e !== "«") || c.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || o.some(([t, n]) => [t, n].some((t) => t && e(t).attr("colspan") !== void 0))) && !(s.indexOf("«") > c.findIndex((e) => e.startsWith("»")))) {
1393
1411
  e(t).addClass("akn-quoted-table");
1394
1412
  for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
1395
1413
  }
1396
1414
  }
1397
- function fn(e, t) {
1398
- let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(N(e(t).text())))).text();
1399
- return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => N(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1415
+ function dn(e, t) {
1416
+ let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(F(e(t).text())))).text();
1417
+ return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => F(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1400
1418
  }
1401
- function U(e, t, n, r = {}) {
1419
+ function fn(e, t, n, r = {}) {
1402
1420
  let i = [];
1403
1421
  for (let r of n) {
1404
1422
  if (r === "style") continue;
1405
1423
  let n = e(t).attr(r);
1406
- n !== void 0 && i.push(`${r}="${B(n)}"`);
1424
+ n !== void 0 && i.push(`${r}="${V(n)}"`);
1407
1425
  }
1408
1426
  let a = r.style ?? e(t).attr("style");
1409
- return a && i.push(`style="${B(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1427
+ return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1410
1428
  }
1411
1429
  function pn(e, t, n, r) {
1412
- return `<${n}${U(e, t, [
1430
+ return `<${n}${fn(e, t, [
1413
1431
  "id",
1414
1432
  "class",
1415
1433
  "colspan",
@@ -1433,16 +1451,16 @@ function hn(e, t, n) {
1433
1451
  return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
1434
1452
  }
1435
1453
  function gn(e, t) {
1436
- let n = [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean);
1437
- return n.length === 0 ? "" : `<p class="akn-heading">${B(n.join(" "))}</p>`;
1454
+ let n = [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean);
1455
+ return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
1438
1456
  }
1439
1457
  function _n(e, t) {
1440
1458
  if (!t) return !1;
1441
- let n = (e) => N(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1442
- return n(N(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1459
+ let n = (e) => F(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1460
+ return n(F(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1443
1461
  }
1444
1462
  function vn(e) {
1445
- let t = B(e);
1463
+ let t = V(e);
1446
1464
  return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
1447
1465
  }
1448
1466
  function yn(e, t) {
@@ -1455,12 +1473,12 @@ function bn(e) {
1455
1473
  return `<table class="fixed-size large akn-pastille-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
1456
1474
  }
1457
1475
  function xn({ content: e, pastille: t, style: n, contextClass: r }) {
1458
- let i = n ? ` style="${B(n)}"` : "", a = r ? ` ${B(r)}` : "";
1459
- return `<tr${r ? ` class="${B(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${vn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
1476
+ let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
1477
+ return `<tr${r ? ` class="${V(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${vn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
1460
1478
  }
1461
1479
  function Sn({ content: e, style: t, contextClass: n }) {
1462
- let r = t ? ` style="${B(t)}"` : "", i = n ? ` ${B(n)}` : "";
1463
- return `<tr${n ? ` class="${B(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
1480
+ let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
1481
+ return `<tr${n ? ` class="${V(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
1464
1482
  }
1465
1483
  function Cn(e, t) {
1466
1484
  return e(t).attr("data:pastille") ?? e(t).attr("pastille");
@@ -1469,21 +1487,21 @@ function wn(e, t) {
1469
1487
  return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1470
1488
  }
1471
1489
  function Tn(e, t) {
1472
- return e(t).children().get().filter((e) => I(e) ? V(e) === "content" : !1).map((t) => H(e, t)).filter(Boolean).join("\n");
1490
+ return e(t).children().get().filter((e) => R(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1473
1491
  }
1474
1492
  function En(e, t) {
1475
1493
  let n = [];
1476
1494
  return e(t).children().each((t, r) => {
1477
- if (!I(r)) return;
1478
- let i = V(r);
1479
- i === "num" || i === "heading" || i === "content" || n.push(H(e, r));
1495
+ if (!R(r)) return;
1496
+ let i = H(r);
1497
+ i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
1480
1498
  }), n.filter(Boolean);
1481
1499
  }
1482
1500
  function Dn(e, t) {
1483
- let n = [], r = V(t), i = r === "alinea" ? Cn(e, t) : void 0, a = Tn(e, t), o = kn(e, t, r, i), s = Fn(e, t);
1501
+ let n = [], r = H(t), i = r === "alinea" ? Cn(e, t) : void 0, a = Tn(e, t), o = kn(e, t, r, i), s = Fn(e, t);
1484
1502
  if (i) {
1485
- let r = [_n(a, N(e(t).children("num").first().text())) ? "" : gn(e, t), a].filter(Boolean).join("\n");
1486
- N(r) && n.push(xn({
1503
+ let r = [_n(a, F(e(t).children("num").first().text())) ? "" : gn(e, t), a].filter(Boolean).join("\n");
1504
+ F(r) && n.push(xn({
1487
1505
  content: r,
1488
1506
  pastille: i,
1489
1507
  style: o,
@@ -1495,18 +1513,18 @@ function Dn(e, t) {
1495
1513
  contextClass: s
1496
1514
  }));
1497
1515
  for (let r of e(t).children().get()) {
1498
- if (!I(r)) continue;
1499
- let t = V(r);
1516
+ if (!R(r)) continue;
1517
+ let t = H(r);
1500
1518
  t === "num" || t === "heading" || t === "content" || (t === "alinea" || wn(e, r)) && n.push(...Dn(e, r));
1501
1519
  }
1502
1520
  return n;
1503
1521
  }
1504
1522
  function On(e, t, n, r) {
1505
- let i = V(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Cn(e, t), s = kn(e, t, i, o), c = [`<${n} ${[
1506
- a ? `id="${B(a)}"` : void 0,
1523
+ let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Cn(e, t), s = kn(e, t, i, o), c = [`<${n} ${[
1524
+ a ? `id="${V(a)}"` : void 0,
1507
1525
  `class="${r}"`,
1508
- o ? `data-pastille="${B(o)}"` : void 0,
1509
- s ? `style="${B(s)}"` : void 0
1526
+ o ? `data-pastille="${V(o)}"` : void 0,
1527
+ s ? `style="${V(s)}"` : void 0
1510
1528
  ].filter((e) => e !== void 0).join(" ")}>`];
1511
1529
  if (i === "part" || i === "title") {
1512
1530
  let r = Mn(e, t, i), a = Pn(e, t), o = r ? [Sn({
@@ -1516,22 +1534,22 @@ function On(e, t, n, r) {
1516
1534
  o.length !== 0 && (c.push(jn(o)), o = []);
1517
1535
  };
1518
1536
  return e(t).children().each((t, n) => {
1519
- if (!I(n)) return;
1520
- let r = V(n);
1537
+ if (!R(n)) return;
1538
+ let r = H(n);
1521
1539
  if (!(r === "num" || r === "heading" || r === "content")) {
1522
1540
  if (r === "alinea") {
1523
1541
  o.push(...Dn(e, n));
1524
1542
  return;
1525
1543
  }
1526
- s(), c.push(H(e, n));
1544
+ s(), c.push(U(e, n));
1527
1545
  }
1528
1546
  }), s(), c.push(`</${n}>`), c.join("\n");
1529
1547
  }
1530
1548
  if (i === "article") {
1531
- let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = C(r) ?? {
1549
+ let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = T(r) ?? {
1532
1550
  label: r,
1533
1551
  num: r
1534
- }, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${B(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${B(a.label)}${i ? ` : ${B(i)}` : ""}</p>`;
1552
+ }, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${V(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${V(a.label)}${i ? ` : ${V(i)}` : ""}</p>`;
1535
1553
  if (wn(e, t)) {
1536
1554
  let r = [Sn({
1537
1555
  content: o,
@@ -1545,13 +1563,13 @@ function On(e, t, n, r) {
1545
1563
  }
1546
1564
  let l = [];
1547
1565
  for (let n of ["content", "children"]) e(t).children().each((t, r) => {
1548
- if (!I(r)) return;
1549
- let i = V(r);
1550
- i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(H(e, r));
1566
+ if (!R(r)) return;
1567
+ let i = H(r);
1568
+ i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
1551
1569
  });
1552
1570
  let u = l.join("\n");
1553
1571
  if (i !== "article") {
1554
- let n = _n(u, N(e(t).children("num").first().text())) ? "" : gn(e, t);
1572
+ let n = _n(u, F(e(t).children("num").first().text())) ? "" : gn(e, t);
1555
1573
  n && c.push(n);
1556
1574
  }
1557
1575
  return c.push(o ? yn(u, o) : u), c.push(`</${n}>`), c.join("\n");
@@ -1567,8 +1585,8 @@ function jn(e) {
1567
1585
  return `<table class="fixed-size large akn-section-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
1568
1586
  }
1569
1587
  function Mn(e, t, n) {
1570
- let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = Nn(n), o = [];
1571
- return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${B(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${B(i)}</span></p>`), o.join("\n");
1588
+ let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = Nn(n), o = [];
1589
+ return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${V(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${V(i)}</span></p>`), o.join("\n");
1572
1590
  }
1573
1591
  function Nn(e) {
1574
1592
  switch (e) {
@@ -1595,13 +1613,13 @@ function Nn(e) {
1595
1613
  }
1596
1614
  }
1597
1615
  function Pn(e, t) {
1598
- let n = In(N(e(t).children("num").first().text()));
1616
+ let n = In(F(e(t).children("num").first().text()));
1599
1617
  if (n) return n;
1600
1618
  for (let n of e(t).parents().get()) {
1601
- if (!I(n)) continue;
1602
- let t = V(n);
1619
+ if (!R(n)) continue;
1620
+ let t = H(n);
1603
1621
  if (t !== "title" && t !== "part") continue;
1604
- let r = In(N(e(n).children("num").first().text()));
1622
+ let r = In(F(e(n).children("num").first().text()));
1605
1623
  if (r) return r;
1606
1624
  }
1607
1625
  }
@@ -1609,7 +1627,7 @@ function Fn(e, t) {
1609
1627
  return Pn(e, t);
1610
1628
  }
1611
1629
  function In(e) {
1612
- let [t, ...n] = N(e).split(/\s+/u);
1630
+ let [t, ...n] = F(e).split(/\s+/u);
1613
1631
  if (!t || n.length === 0) return;
1614
1632
  let r = t.toLocaleLowerCase("fr-FR");
1615
1633
  if ([
@@ -1620,7 +1638,7 @@ function In(e) {
1620
1638
  ].includes(r)) return `${r}-${n.join("_")}`;
1621
1639
  }
1622
1640
  function Ln(e) {
1623
- return `article-${N(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1641
+ return `article-${F(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1624
1642
  }
1625
1643
  function Rn(e) {
1626
1644
  switch (e) {
@@ -1635,10 +1653,10 @@ function Rn(e) {
1635
1653
  }
1636
1654
  }
1637
1655
  function zn(e, t) {
1638
- return [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1656
+ return [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1639
1657
  }
1640
1658
  function Bn(e, t) {
1641
- let n = N(e(t).children("num").first().text()), r = N(e(t).children("heading").first().text()), i = C(n) ?? {
1659
+ let n = F(e(t).children("num").first().text()), r = F(e(t).children("heading").first().text()), i = T(n) ?? {
1642
1660
  label: n,
1643
1661
  num: n
1644
1662
  };
@@ -1654,8 +1672,8 @@ function Vn(e, t) {
1654
1672
  function Hn(e, t) {
1655
1673
  let n = { items: [] };
1656
1674
  return e(t).children().each((t, r) => {
1657
- if (!I(r)) return;
1658
- let i = V(r);
1675
+ if (!R(r)) return;
1676
+ let i = H(r);
1659
1677
  if (i === "article") {
1660
1678
  n.items.push(Bn(e, r));
1661
1679
  return;
@@ -1682,14 +1700,14 @@ function Wn(e) {
1682
1700
  return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
1683
1701
  }
1684
1702
  function Gn(e) {
1685
- e("table").each((t, n) => dn(e, n));
1703
+ e("table").each((t, n) => un(e, n));
1686
1704
  let t = e("preamble").first(), n = e("body").first(), r = ["<div class=\"akn-bill\">", "<style>.akn-bill p.pastille span:empty::before{content:attr(data-pastille)}</style>"];
1687
- return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(ln(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1688
- I(n) && r.push(V(n) === "article" ? On(e, n, "article", "akn-article") : H(e, n));
1705
+ return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(cn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1706
+ R(n) && r.push(H(n) === "article" ? On(e, n, "article", "akn-article") : U(e, n));
1689
1707
  }), r.push("</section></div>"), r.join("\n");
1690
1708
  }
1691
1709
  function Kn(e) {
1692
- let t = w(e, { xml: {
1710
+ let t = E(e, { xml: {
1693
1711
  decodeEntities: !1,
1694
1712
  lowerCaseTags: !1,
1695
1713
  lowerCaseAttributeNames: !1,
@@ -1703,41 +1721,41 @@ function Kn(e) {
1703
1721
  };
1704
1722
  }
1705
1723
  function qn(e) {
1706
- return Jn(w(e));
1724
+ return Jn(E(e));
1707
1725
  }
1708
1726
  function Jn(e) {
1709
1727
  let t = [];
1710
1728
  return e("article.akn-article").each((n, r) => {
1711
- let i = e(r).find("p.TCNumArticle").first().get(0), a = N(i ? e(i).text() : ""), o = C(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = wt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1729
+ let i = e(r).find("p.TCNumArticle").first().get(0), a = F(i ? e(i).text() : ""), o = T(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Ct(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1712
1730
  t.push({
1713
1731
  id: s,
1714
1732
  label: o.label,
1715
1733
  num: o.num,
1716
1734
  title: o.title,
1717
- text: at(e, c),
1718
- html: tt(e, r),
1735
+ text: rt(e, c),
1736
+ html: $e(e, r),
1719
1737
  directiveText: u,
1720
1738
  blocks: l
1721
1739
  });
1722
1740
  }), t;
1723
1741
  }
1724
1742
  function Yn(e) {
1725
- let t = w(e);
1743
+ let t = E(e);
1726
1744
  return {
1727
1745
  articles: Jn(t),
1728
1746
  htmlWithLinks: t.html()
1729
1747
  };
1730
1748
  }
1731
1749
  async function Xn(e, t) {
1732
- let n = new Ce("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => w(e, { xml: {
1750
+ let n = new xe("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => E(e, { xml: {
1733
1751
  decodeEntities: !1,
1734
1752
  lowerCaseTags: !1,
1735
1753
  lowerCaseAttributeNames: !1,
1736
1754
  xmlMode: !0
1737
- } })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => st(a, {
1755
+ } })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => at(a, {
1738
1756
  ...t,
1739
1757
  date: i
1740
- }, i)), s = n.timeSync("extractRenderedAknArticles", () => qn(a)), c = n.timeSync("injectHiddenArticleSummary", () => Tt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Yn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Un(r)), p = n.timeSync("buildParsedDocument", () => $t("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, nn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1758
+ }, i)), s = n.timeSync("extractRenderedAknArticles", () => qn(a)), c = n.timeSync("injectHiddenArticleSummary", () => wt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Yn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Un(r)), p = n.timeSync("buildParsedDocument", () => Qt("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, tn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1741
1759
  return n.log({
1742
1760
  articleCount: p.articles.length,
1743
1761
  blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1751,7 +1769,7 @@ async function Zn(e, t) {
1751
1769
  sourceFormat: "akoma-ntoso",
1752
1770
  documentDate: r,
1753
1771
  html: n.html,
1754
- linkedHtml: await st(n.html, t, r)
1772
+ linkedHtml: await at(n.html, t, r)
1755
1773
  };
1756
1774
  }
1757
1775
  //#endregion
@@ -1761,7 +1779,7 @@ function er(e) {
1761
1779
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
1762
1780
  }
1763
1781
  function tr(e) {
1764
- let t = er(w(e).text()), n = [...t.matchAll(Qn)], r = /* @__PURE__ */ new Set(), i = [];
1782
+ let t = er(E(e).text()), n = [...t.matchAll(Qn)], r = /* @__PURE__ */ new Set(), i = [];
1765
1783
  for (let [e, a] of n.entries()) {
1766
1784
  let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = $n.exec(s), l = er(s.slice(0, c?.index ?? s.length));
1767
1785
  if (l.length < 20 || r.has(l)) continue;
@@ -1780,7 +1798,7 @@ function tr(e) {
1780
1798
  return i;
1781
1799
  }
1782
1800
  async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1783
- let i = await an(t, {
1801
+ let i = await rn(t, {
1784
1802
  date: e,
1785
1803
  includeDirectiveAnalysis: !1,
1786
1804
  linkBaseUrl: n,
@@ -1804,7 +1822,7 @@ async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1804
1822
  };
1805
1823
  }
1806
1824
  function rr(e, t) {
1807
- return Oe("sha256").update(JSON.stringify({
1825
+ return Ee("sha256").update(JSON.stringify({
1808
1826
  item: e,
1809
1827
  metadata: t
1810
1828
  })).digest("hex");
@@ -1825,7 +1843,7 @@ function ir(e) {
1825
1843
  //#endregion
1826
1844
  //#region src/lib/server/senat_amendment_search.ts
1827
1845
  function ar(e) {
1828
- return e?.trim() ? w(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1846
+ return e?.trim() ? E(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1829
1847
  }
1830
1848
  function or({ dispositifHtml: e, objetHtml: t }) {
1831
1849
  let n = ar(e), r = ar(t);
@@ -1840,7 +1858,7 @@ function or({ dispositifHtml: e, objetHtml: t }) {
1840
1858
  }] : []];
1841
1859
  }
1842
1860
  function sr(e, t) {
1843
- return Oe("sha256").update(JSON.stringify({
1861
+ return Ee("sha256").update(JSON.stringify({
1844
1862
  item: e,
1845
1863
  metadata: t
1846
1864
  })).digest("hex");
@@ -1857,73 +1875,73 @@ function W(e, t) {
1857
1875
  function cr(e, t) {
1858
1876
  return {
1859
1877
  type: e === "start" ? "head_of_target" : "tail_after_target",
1860
- unit: t ? fe(t) : "article"
1878
+ unit: t ? ue(t) : "article"
1861
1879
  };
1862
1880
  }
1863
1881
  function lr(e) {
1864
1882
  return e === "start" ? "insert_before" : "insert_after";
1865
1883
  }
1866
- var ur = D(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = O(t, A([E("les?\\s+", { flags: "i" }), p], { value: (e) => e[1] }), p, n), dr = O(A([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1884
+ var ur = k(O("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = A(t, M([O("les?\\s+", { flags: "i" }), p], { value: (e) => e[1] }), p, n), dr = A(M([O("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1867
1885
  let t = e[1];
1868
1886
  return {
1869
1887
  targetReference: t,
1870
1888
  targetScope: {
1871
1889
  type: "tail_after_target",
1872
- unit: fe(t)
1890
+ unit: ue(t)
1873
1891
  }
1874
1892
  };
1875
- } }), A([i], { value: (e) => ({ targetScope: e[0] }) })), K = D(A([
1876
- D(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1877
- D(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1893
+ } }), M([i], { value: (e) => ({ targetScope: e[0] }) })), K = k(M([
1894
+ k(O("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1895
+ k(O("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1878
1896
  G,
1879
- D(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1897
+ k(O("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1880
1898
  ], { value: (e, t) => ({
1881
1899
  reference: e[2],
1882
1900
  text: t.text()
1883
- }) }), { default: null }), fr = D(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ve})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1901
+ }) }), { default: null }), fr = k(O(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ge})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1884
1902
  function q(e) {
1885
1903
  return e?.text ?? "";
1886
1904
  }
1887
1905
  function pr(e) {
1888
1906
  return { citation: ee(e.position()) };
1889
1907
  }
1890
- var J = O(A([v], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => pr(t) })), mr = E("\\S[\\s\\S]*", { value: (e, t) => pr(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), hr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1908
+ var J = A(M([v], { value: (e) => ({ citation: e[0] }) }), O("\\S[\\s\\S]*", { value: (e, t) => pr(t) })), mr = O("\\S[\\s\\S]*", { value: (e, t) => pr(t) }), Y = O("[^:«“\"]*(?::\\s*)?", { flags: "i" }), hr = O("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1891
1909
  flags: "i",
1892
1910
  value: (e, t) => pr(t)
1893
- }), gr = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1911
+ }), gr = O("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1894
1912
  flags: "i",
1895
1913
  value: (e, t) => pr(t)
1896
- }), _r = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1914
+ }), _r = O("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1897
1915
  flags: "i",
1898
1916
  value: (e, t) => pr(t)
1899
- }), vr = O(A([v], { value: (e) => ({ citation: e[0] }) }), hr), yr = O(A([v], { value: (e) => ({ citation: e[0] }) }), _r), br = A([E(`${o}s?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = A([E(`${c}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), yr], { value: (e) => e[1] }), Sr = O(A([v], { value: (e) => ({ citation: e[0] }) }), gr), Cr = A([
1917
+ }), vr = A(M([v], { value: (e) => ({ citation: e[0] }) }), hr), yr = A(M([v], { value: (e) => ({ citation: e[0] }) }), _r), br = M([O(`${o}s?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = M([O(`${c}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), yr], { value: (e) => e[1] }), Sr = A(M([v], { value: (e) => ({ citation: e[0] }) }), gr), Cr = M([
1900
1918
  fr,
1901
- E(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1919
+ O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1902
1920
  Sr
1903
- ], { value: (e) => e[2] }), wr = A([
1921
+ ], { value: (e) => e[2] }), wr = M([
1904
1922
  fr,
1905
- E(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1906
- O(A([v], { value: (e) => ({ citation: e[0] }) }), mr)
1923
+ O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1924
+ A(M([v], { value: (e) => ({ citation: e[0] }) }), mr)
1907
1925
  ], { value: (e) => e[2] });
1908
1926
  function X(e) {
1909
1927
  return e?.reference;
1910
1928
  }
1911
- var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1929
+ var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1912
1930
  contextText: e[0],
1913
1931
  kind: "delete_article"
1914
- }) }), Er = A([
1932
+ }) }), Er = M([
1915
1933
  K,
1916
- E("supprimer", { flags: "i" }),
1917
- D(A([k, G], { value: (e) => e[1] }), { default: null }),
1918
- D(A([k, wr], { value: (e) => e[1] }), { default: null })
1934
+ O("supprimer", { flags: "i" }),
1935
+ k(M([j, G], { value: (e) => e[1] }), { default: null }),
1936
+ k(M([j, wr], { value: (e) => e[1] }), { default: null })
1919
1937
  ], { value: (e, t) => W(t, {
1920
1938
  contextText: q(e[0]),
1921
1939
  kind: "delete_portion",
1922
1940
  targetCitation: e[3]?.citation ?? void 0,
1923
1941
  targetReference: e[2] ?? X(e[0])
1924
- }) }), Dr = A([
1942
+ }) }), Dr = M([
1925
1943
  K,
1926
- O(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
1944
+ A(O("r[eé]diger\\s+ainsi", { flags: "i" }), O("r[eé]tablir", { flags: "i" })),
1927
1945
  Y,
1928
1946
  J
1929
1947
  ], { value: (e, t) => W(t, {
@@ -1931,14 +1949,14 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1931
1949
  kind: "rewrite_portion",
1932
1950
  replacementCitation: e[3].citation,
1933
1951
  targetReference: X(e[0])
1934
- }) }), Or = A([
1952
+ }) }), Or = M([
1935
1953
  K,
1936
- O(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
1937
- k,
1954
+ A(O("substituer", { flags: "i" }), O("remplacer", { flags: "i" })),
1955
+ j,
1938
1956
  fr,
1939
1957
  br,
1940
- E("\\s*,?\\s*"),
1941
- D(E("par\\s+", { flags: "i" }), { default: "" }),
1958
+ O("\\s*,?\\s*"),
1959
+ k(O("par\\s+", { flags: "i" }), { default: "" }),
1942
1960
  xr
1943
1961
  ], { value: (e, t) => W(t, {
1944
1962
  contextText: q(e[0]),
@@ -1946,61 +1964,61 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1946
1964
  replacementCitation: e[7].citation,
1947
1965
  targetCitation: e[4].citation,
1948
1966
  targetReference: X(e[0])
1949
- }) }), kr = A([
1967
+ }) }), kr = M([
1950
1968
  K,
1951
- E("substituer", { flags: "i" }),
1952
- k,
1953
- D(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1969
+ O("substituer", { flags: "i" }),
1970
+ j,
1971
+ k(O("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1954
1972
  G,
1955
- E("[\\s\\S]*?(?=[«“\"]|$)"),
1973
+ O("[\\s\\S]*?(?=[«“\"]|$)"),
1956
1974
  J
1957
1975
  ], { value: (e, t) => W(t, {
1958
1976
  contextText: q(e[0]),
1959
1977
  kind: "rewrite_portion",
1960
1978
  replacementCitation: e[6].citation,
1961
1979
  targetReference: e[4] ?? X(e[0])
1962
- }) }), Ar = A([
1980
+ }) }), Ar = M([
1963
1981
  d,
1964
- k,
1965
- E("l['’ ]article", { flags: "i" }),
1966
- E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1967
- E("ins[eé]rer", { flags: "i" }),
1982
+ j,
1983
+ O("l['’ ]article", { flags: "i" }),
1984
+ O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1985
+ O("ins[eé]rer", { flags: "i" }),
1968
1986
  Y,
1969
1987
  J
1970
1988
  ], { value: (e, t) => W(t, {
1971
1989
  contextText: "",
1972
1990
  insertCitation: e[6].citation,
1973
1991
  kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
1974
- }) }), jr = A([
1992
+ }) }), jr = M([
1975
1993
  d,
1976
- k,
1994
+ j,
1977
1995
  G,
1978
- E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1979
- O(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
1996
+ O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1997
+ A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
1980
1998
  Y,
1981
1999
  J
1982
2000
  ], { value: (e, t) => W(t, {
1983
2001
  contextText: "",
1984
2002
  insertCitation: e[6].citation,
1985
- kind: re(e[0]),
2003
+ kind: w(e[0]),
1986
2004
  targetReference: e[2]
1987
- }) }), Mr = A([
2005
+ }) }), Mr = M([
1988
2006
  d,
1989
- k,
1990
- E("l['’ ]alin[eé]a", { flags: "i" }),
1991
- E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1992
- E("ins[eé]rer", { flags: "i" }),
2007
+ j,
2008
+ O("l['’ ]alin[eé]a", { flags: "i" }),
2009
+ O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2010
+ O("ins[eé]rer", { flags: "i" }),
1993
2011
  Y,
1994
2012
  J
1995
2013
  ], { value: (e, t) => W(t, {
1996
2014
  contextText: "",
1997
2015
  insertCitation: e[6].citation,
1998
- kind: re(e[0])
1999
- }) }), Nr = A([
2016
+ kind: w(e[0])
2017
+ }) }), Nr = M([
2000
2018
  K,
2001
- ie,
2002
- E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2003
- O(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
2019
+ ne,
2020
+ O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2021
+ A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
2004
2022
  Y,
2005
2023
  J
2006
2024
  ], { value: (e, t) => {
@@ -2012,57 +2030,57 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2012
2030
  targetReference: r,
2013
2031
  targetScope: cr(i, r)
2014
2032
  });
2015
- } }), Pr = A([
2033
+ } }), Pr = M([
2016
2034
  K,
2017
2035
  d,
2018
- k,
2036
+ j,
2019
2037
  Cr,
2020
- E("[\\s\\S]*?(?=ins[eé]rer)"),
2021
- E("ins[eé]rer", { flags: "i" }),
2022
- k,
2038
+ O("[\\s\\S]*?(?=ins[eé]rer)"),
2039
+ O("ins[eé]rer", { flags: "i" }),
2040
+ j,
2023
2041
  xr
2024
2042
  ], { value: (e, t) => W(t, {
2025
2043
  contextText: q(e[0]),
2026
2044
  insertCitation: e[7].citation,
2027
- kind: re(e[1]),
2045
+ kind: w(e[1]),
2028
2046
  targetCitation: e[3].citation,
2029
2047
  targetReference: X(e[0])
2030
- }) }), Fr = A([
2048
+ }) }), Fr = M([
2031
2049
  K,
2032
2050
  d,
2033
- k,
2051
+ j,
2034
2052
  G,
2035
- E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2036
- O(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
2053
+ O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2054
+ A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
2037
2055
  Y,
2038
2056
  J
2039
2057
  ], { value: (e, t) => W(t, {
2040
2058
  contextText: q(e[0]),
2041
2059
  insertCitation: e[7].citation,
2042
- kind: re(e[1]),
2060
+ kind: w(e[1]),
2043
2061
  targetReference: X(e[0]) ?? e[3]
2044
- }) }), Ir = O(Nr, Ar, jr, Mr, kr, A([
2062
+ }) }), Ir = A(Nr, Ar, jr, Mr, kr, M([
2045
2063
  K,
2046
2064
  d,
2047
- k,
2065
+ j,
2048
2066
  Cr,
2049
- E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2050
- O(A([
2051
- E("supprimer", {
2067
+ O("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2068
+ A(M([
2069
+ O("supprimer", {
2052
2070
  flags: "i",
2053
2071
  value: "delete_portion"
2054
2072
  }),
2055
- k,
2073
+ j,
2056
2074
  dr
2057
2075
  ], { value: (e) => ({
2058
2076
  kind: e[0],
2059
2077
  ...e[2]
2060
- }) }), A([
2061
- E("r[eé]diger\\s+ainsi", {
2078
+ }) }), M([
2079
+ O("r[eé]diger\\s+ainsi", {
2062
2080
  flags: "i",
2063
2081
  value: "rewrite_portion"
2064
2082
  }),
2065
- k,
2083
+ j,
2066
2084
  dr,
2067
2085
  Y,
2068
2086
  J
@@ -2081,10 +2099,10 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2081
2099
  targetReference: X(e[0]) ?? n.targetReference,
2082
2100
  targetScope: n.targetScope
2083
2101
  });
2084
- } }), Pr, Fr, A([
2102
+ } }), Pr, Fr, M([
2085
2103
  ur,
2086
- E("ins[eé]rer", { flags: "i" }),
2087
- E(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
2104
+ O("ins[eé]rer", { flags: "i" }),
2105
+ O(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
2088
2106
  d,
2089
2107
  Y,
2090
2108
  v,
@@ -2093,12 +2111,12 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2093
2111
  ], { value: (e, t) => W(t, {
2094
2112
  contextText: e[0],
2095
2113
  insertCitation: e[8],
2096
- kind: re(e[3]),
2114
+ kind: w(e[3]),
2097
2115
  targetCitation: e[6]
2098
- }) }), Or, Dr, A([
2116
+ }) }), Or, Dr, M([
2099
2117
  K,
2100
- E("compl[eé]ter", { flags: "i" }),
2101
- D(A([k, G], { value: (e) => e[1] }), { default: null }),
2118
+ O("compl[eé]ter", { flags: "i" }),
2119
+ k(M([j, G], { value: (e) => e[1] }), { default: null }),
2102
2120
  Y,
2103
2121
  J
2104
2122
  ], { value: (e, t) => W(t, {
@@ -2125,7 +2143,7 @@ function zr(e, t) {
2125
2143
  } : null;
2126
2144
  }
2127
2145
  function Br(e, t) {
2128
- return he(_e(e), t);
2146
+ return pe(he(e), t);
2129
2147
  }
2130
2148
  function Vr(e) {
2131
2149
  return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
@@ -2172,7 +2190,7 @@ function Gr(e, t, n, r = Rr(e.slice(n.start, n.stop))) {
2172
2190
  function Kr(e) {
2173
2191
  let t = e.dispositifHtml ?? e.dispositifText;
2174
2192
  if (!t) return null;
2175
- let n = e.dispositifHtml ? be()(t) : me(t), r = n.output, i = zr(r, {
2193
+ let n = e.dispositifHtml ? ve()(t) : fe(t), r = n.output, i = zr(r, {
2176
2194
  start: 0,
2177
2195
  stop: r.length
2178
2196
  });
@@ -2251,7 +2269,7 @@ function ti(e) {
2251
2269
  return g(e);
2252
2270
  }
2253
2271
  function ni(e, t) {
2254
- return Ir(new T(e.slice(0, t.stop), t.start)) ?? null;
2272
+ return Ir(new D(e.slice(0, t.stop), t.start)) ?? null;
2255
2273
  }
2256
2274
  function $(t, n, r) {
2257
2275
  if (r) return Gr(t, n, r.position, Rr(e(t, r)));
@@ -2463,7 +2481,7 @@ function si(e) {
2463
2481
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
2464
2482
  }
2465
2483
  function ci(e) {
2466
- let t = C(e);
2484
+ let t = T(e);
2467
2485
  if (!t) return {
2468
2486
  articleNumber: null,
2469
2487
  label: e,
@@ -2477,7 +2495,7 @@ function ci(e) {
2477
2495
  };
2478
2496
  }
2479
2497
  function li(e) {
2480
- let t = w(e), n = [], r = si(t("section.akn-preamble").text());
2498
+ let t = E(e), n = [], r = si(t("section.akn-preamble").text());
2481
2499
  return r && n.push({
2482
2500
  anchor: "senat-expose-des-motifs",
2483
2501
  articleNumber: null,
@@ -2502,7 +2520,7 @@ function li(e) {
2502
2520
  }), n;
2503
2521
  }
2504
2522
  function ui(e, t) {
2505
- return Oe("sha256").update(JSON.stringify({
2523
+ return Ee("sha256").update(JSON.stringify({
2506
2524
  item: e,
2507
2525
  metadata: t
2508
2526
  })).digest("hex");
@@ -21634,7 +21652,7 @@ function wi(e) {
21634
21652
  return null;
21635
21653
  }
21636
21654
  function Ti(e) {
21637
- return De.createHash("md5").update(e).digest("hex");
21655
+ return Te.createHash("md5").update(e).digest("hex");
21638
21656
  }
21639
21657
  function Ei(e) {
21640
21658
  return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
@@ -21706,7 +21724,7 @@ function Ni(e) {
21706
21724
  return null;
21707
21725
  }
21708
21726
  function Pi(e, t = {}) {
21709
- let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = w(e, { xml: { decodeEntities: !1 } });
21727
+ let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = E(e, { xml: { decodeEntities: !1 } });
21710
21728
  a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
21711
21729
  let n = a(t).closest("table");
21712
21730
  n.length > 0 && n.remove();
@@ -21959,15 +21977,15 @@ ${Pi(e, t)}
21959
21977
  //#region src/lib/server/text_parsers/transformers.ts
21960
21978
  function zi(e, t) {
21961
21979
  let n = "transformation_", r = {};
21962
- for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21980
+ for (let e of N.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21963
21981
  let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
21964
21982
  for (let e of a.slice(1)) {
21965
21983
  let t = o.transformations ??= [];
21966
21984
  for (; e >= t.length;) t.push({});
21967
21985
  o = t[e];
21968
21986
  }
21969
- o.output = j.readFileSync(ke.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21970
- let { sourceMap: s, title: c } = j.readJsonSync(ke.join(t, e), { encoding: "utf-8" });
21987
+ o.output = N.readFileSync(De.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21988
+ let { sourceMap: s, title: c } = N.readJsonSync(De.join(t, e), { encoding: "utf-8" });
21971
21989
  o.sourceMap = s ?? [], o.title = c;
21972
21990
  }
21973
21991
  return Bi(r, e), r;
@@ -21977,7 +21995,7 @@ function Bi(e, t) {
21977
21995
  return t;
21978
21996
  }
21979
21997
  function Vi(e, t, n = "1") {
21980
- if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(ke.join(t, `transformation_${n}.json`), {
21998
+ if (N.ensureDirSync(t), e.transformations === void 0) N.writeJsonSync(De.join(t, `transformation_${n}.json`), {
21981
21999
  sourceMap: e.sourceMap,
21982
22000
  title: e.title
21983
22001
  }, {
@@ -21985,24 +22003,24 @@ function Vi(e, t, n = "1") {
21985
22003
  spaces: 2
21986
22004
  });
21987
22005
  else {
21988
- j.writeJsonSync(ke.join(t, `transformation_${n}.json`), { title: e.title }, {
22006
+ N.writeJsonSync(De.join(t, `transformation_${n}.json`), { title: e.title }, {
21989
22007
  encoding: "utf-8",
21990
22008
  spaces: 2
21991
22009
  });
21992
22010
  for (let [r, i] of e.transformations.entries()) Vi(i, t, `${n}.${r + 1}`);
21993
22011
  }
21994
- e.output !== void 0 && j.writeFileSync(ke.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
22012
+ e.output !== void 0 && N.writeFileSync(De.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
21995
22013
  }
21996
22014
  //#endregion
21997
22015
  //#region src/lib/server/linkers/html.ts
21998
22016
  async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
21999
- let _ = t ?? (e === void 0 ? void 0 : new se(e));
22017
+ let _ = t ?? (e === void 0 ? void 0 : new ae(e));
22000
22018
  if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
22001
- let v = await j.readFile(i, { encoding: "utf-8" }), y;
22002
- a === void 0 ? (y = be({ removeAWithHref: !0 })(v), o !== void 0 && Vi(y, o)) : y = zi(v, a);
22019
+ let v = await N.readFile(i, { encoding: "utf-8" }), y;
22020
+ a === void 0 ? (y = ve({ removeAWithHref: !0 })(v), o !== void 0 && Vi(y, o)) : y = zi(v, a);
22003
22021
  let b = [];
22004
22022
  s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
22005
- let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
22023
+ let { outputByType: x, referredLegifranceTextCountByCid: ee } = await se({
22006
22024
  legiResolver: _,
22007
22025
  date: n,
22008
22026
  defaultTextId: r,
@@ -22019,9 +22037,9 @@ async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
22019
22037
  s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
22020
22038
  for (let [e, t] of Object.entries(x)) {
22021
22039
  let n = S[e];
22022
- n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
22040
+ n !== void 0 && await N.writeFile(n, t.html, { encoding: "utf-8" });
22023
22041
  }
22024
- x.links !== void 0 && l !== void 0 && Vi(be()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
22042
+ x.links !== void 0 && l !== void 0 && Vi(ve()(x.links.html), l), g !== void 0 && await N.writeJson(g, ee, {
22025
22043
  encoding: "utf-8",
22026
22044
  spaces: 2
22027
22045
  });
@@ -22029,20 +22047,20 @@ async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
22029
22047
  //#endregion
22030
22048
  //#region src/lib/server/tables_of_contents.ts
22031
22049
  async function Ui(e, t, n, r) {
22032
- let i = zi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new T(a), s = await j.readJson(n, { encoding: "utf-8" });
22033
- for await (let e of ce({
22050
+ let i = zi(await N.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await N.readJson(n, { encoding: "utf-8" });
22051
+ for await (let e of oe({
22034
22052
  context: o,
22035
22053
  tableOfContents: s,
22036
22054
  transformation: i
22037
22055
  }));
22038
- await j.writeJson(r, s, {
22056
+ await N.writeJson(r, s, {
22039
22057
  encoding: "utf-8",
22040
22058
  spaces: 2
22041
22059
  });
22042
22060
  }
22043
22061
  async function Wi(e, t, n) {
22044
- let r = zi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
22045
- await j.writeJson(n, i, {
22062
+ let r = zi(await N.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
22063
+ await N.writeJson(n, i, {
22046
22064
  encoding: "utf-8",
22047
22065
  spaces: 2
22048
22066
  });
@@ -22050,7 +22068,7 @@ async function Wi(e, t, n) {
22050
22068
  //#endregion
22051
22069
  //#region src/lib/server/legi/resolvers.ts
22052
22070
  function Gi({ canutesDb: e }) {
22053
- return new se(e);
22071
+ return new ae(e);
22054
22072
  }
22055
22073
  //#endregion
22056
- export { Te as LegiResolver, Hi as addLinksOrReferencesToHtmlFile, Ui as addPositionsToTableOfContentsFile, xe as buildAndInstallTextTitlesInfos, we as buildTextTitlesInfos, Gi as createLegiResolver, Ne as extractAssembleeAmendmentSearchItems, tr as extractAssembleeExposesDesMotifs, or as extractSenatAmendmentSearchItems, Pe as hashAssembleeAmendmentSearchItem, rr as hashAssembleeSearchItem, sr as hashSenatAmendmentSearchItem, ui as hashSenatSearchItem, gi as isAkomaNtosoXml, ir as isoDateFromAssembleeDocument, Zn as linkAkomaNtosoBillRaw, on as linkAssembleeBillRaw, Xn as parseAkomaNtosoBillRaw, oi as parseAmendment, an as parseAssembleeBillRaw, nr as parseAssembleeDocumentSearchContent, li as parseSenatDocumentSearchContent, zi as readTransformation, Kn as renderAkomaNtosoBillRaw, hi as resolveSenatAkomaNtosoSource, Wi as simplifiedHtmlBillFileToTableOfContentsFile, Pi as simplifyWordHtml, Ri as simplifyWordHtmlToDocument, Vi as writeTransformation };
22074
+ export { Ce as LegiResolver, Hi as addLinksOrReferencesToHtmlFile, Ui as addPositionsToTableOfContentsFile, ye as buildAndInstallTextTitlesInfos, Se as buildTextTitlesInfos, Gi as createLegiResolver, je as extractAssembleeAmendmentSearchItems, tr as extractAssembleeExposesDesMotifs, or as extractSenatAmendmentSearchItems, Me as hashAssembleeAmendmentSearchItem, rr as hashAssembleeSearchItem, sr as hashSenatAmendmentSearchItem, ui as hashSenatSearchItem, gi as isAkomaNtosoXml, ir as isoDateFromAssembleeDocument, Zn as linkAkomaNtosoBillRaw, an as linkAssembleeBillRaw, Xn as parseAkomaNtosoBillRaw, oi as parseAmendment, rn as parseAssembleeBillRaw, nr as parseAssembleeDocumentSearchContent, li as parseSenatDocumentSearchContent, zi as readTransformation, Kn as renderAkomaNtosoBillRaw, hi as resolveSenatAkomaNtosoSource, Wi as simplifiedHtmlBillFileToTableOfContentsFile, Pi as simplifyWordHtml, Ri as simplifyWordHtmlToDocument, Vi as writeTransformation };