@tricoteuses/tisseuse 0.19.3 → 0.21.0

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 (54) hide show
  1. package/README.md +79 -0
  2. package/dist/{html-EuDDYMr2.js → html-jaUHsXKQ.js} +6449 -5951
  3. package/dist/index.js +115 -115
  4. package/dist/{resolver-tBQRf8TL.js → resolver-CzmDH4S3.js} +125 -97
  5. package/dist/server-f-legi.js +73 -92
  6. package/dist/server.js +892 -722
  7. package/dist/src/lib/extractors/action_directives_cpu.test.d.ts +1 -0
  8. package/dist/src/lib/extractors/links.citation_scope.test.d.ts +1 -0
  9. package/dist/src/lib/extractors/links.d.ts +2 -1
  10. package/dist/src/lib/extractors/portion_references_cpu.test.d.ts +1 -0
  11. package/dist/src/lib/extractors/qualified_versions.d.ts +6 -0
  12. package/dist/src/lib/extractors/references.d.ts +8 -8
  13. package/dist/src/lib/f_legi/resolver.d.ts +0 -2
  14. package/dist/src/lib/index.d.ts +1 -0
  15. package/dist/src/lib/legi/canutes_article_preload.test.d.ts +1 -0
  16. package/dist/src/lib/legi/canutes_candidates.test.d.ts +1 -0
  17. package/dist/src/lib/legi/canutes_resolver.d.ts +5 -4
  18. package/dist/src/lib/legi/canutes_resolver_cache.test.d.ts +1 -0
  19. package/dist/src/lib/legi/canutes_section_roots.test.d.ts +1 -0
  20. package/dist/src/lib/legi/canutes_sql.d.ts +4 -0
  21. package/dist/src/lib/legi/canutes_text_titles_cache.d.ts +24 -0
  22. package/dist/src/lib/legi/canutes_text_titles_cache.integration.test.d.ts +1 -0
  23. package/dist/src/lib/legi/canutes_titles_metrics.d.ts +13 -0
  24. package/dist/src/lib/legi/text_titles_infos.d.ts +1 -0
  25. package/dist/src/lib/linkers/html.d.ts +6 -4
  26. package/dist/src/lib/linkers/markdown.d.ts +2 -2
  27. package/dist/src/lib/server/akn_rendering.test.d.ts +1 -0
  28. package/dist/src/lib/server/bill_action_resolver_invariance.test.d.ts +1 -0
  29. package/dist/src/lib/server/bill_action_target_fixtures.d.ts +7 -0
  30. package/dist/src/lib/server/bill_citation_anaphora.test.d.ts +1 -0
  31. package/dist/src/lib/server/bill_comparison.d.ts +42 -0
  32. package/dist/src/lib/server/bill_comparison.test.d.ts +1 -0
  33. package/dist/src/lib/server/bill_target_scope.test.d.ts +1 -0
  34. package/dist/src/lib/server/canutes_legacy_candidates.d.ts +19 -0
  35. package/dist/src/lib/server/canutes_only_compatibility.test.d.ts +1 -0
  36. package/dist/src/lib/server/databases/canutes_text_titles_cache.d.ts +8 -0
  37. package/dist/src/lib/server/flegi_profiling.d.ts +14 -0
  38. package/dist/src/lib/server/flegi_profiling.test.d.ts +1 -0
  39. package/dist/src/lib/server/masquage-typesense.test.d.ts +1 -0
  40. package/dist/src/lib/server/masquage_typesense.d.ts +36 -0
  41. package/dist/src/lib/server/parsed_bills.d.ts +4 -0
  42. package/dist/src/lib/server/sql_profiling.d.ts +30 -0
  43. package/dist/src/lib/server/sql_profiling.test.d.ts +1 -0
  44. package/dist/src/lib/text_parsers/action_words.d.ts +2 -0
  45. package/dist/src/lib/text_parsers/action_words.test.d.ts +1 -0
  46. package/dist/src/lib/text_parsers/qualified_versions.d.ts +2 -0
  47. package/dist/src/lib/text_parsers/texts.d.ts +1 -0
  48. package/dist/src/lib/text_parsers/transformers.d.ts +2 -0
  49. package/dist/src/scripts/compare_legi_bills.d.ts +1 -0
  50. package/dist/src/scripts/configure_postgres_legi_resolver.d.ts +1 -0
  51. package/dist/src/scripts/profile_canutes_bill.d.ts +1 -0
  52. package/dist/src/scripts/test_canutes_titles_cache.d.ts +1 -0
  53. package/dist/src/scripts/warm_canutes_text_titles_cache.d.ts +1 -0
  54. package/package.json +7 -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 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";
1
+ import { At as e, C as t, D as n, E as r, Ft as i, Ht as a, K as o, L as s, M as c, Mt as l, N as u, O as d, Q as f, S as p, Tt as m, U as h, Ut as g, W as _, b as v, c as y, ft as b, g as x, h as ee, j as S, jt as C, k as te, kt as ne, m as re, n as ie, nt as ae, ot as oe, p as se, s as ce, t as le, tt as ue, u as de, ut as fe, v as pe, w as me, x as he } from "./html-jaUHsXKQ.js";
2
+ import { A as ge, At as w, F as _e, Ft as T, Lt as E, R as ve, St as D, d as ye, ft as be, it as xe, j as O, jt as k, kt as A, n as Se, r as Ce, t as we, yt as Te, z as Ee } from "./resolver-CzmDH4S3.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";
7
7
  //#region src/lib/server/assemblee_amendment_search.ts
8
- function Oe(e, t) {
8
+ function Ae(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 Oe(e, t) {
13
13
  }
14
14
  return typeof n == "string" && n.trim() ? n.trim() : null;
15
15
  }
16
- function ke(e) {
16
+ function je(e) {
17
17
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
18
18
  }
19
- function Ae(e) {
20
- return ke(E(e).text());
19
+ function Me(e) {
20
+ return je(b(e).text());
21
21
  }
22
- function je(e) {
23
- let t = ke([
24
- Oe(e, [
22
+ function Ne(e) {
23
+ let t = je([
24
+ Ae(e, [
25
25
  "corps",
26
26
  "contenuAuteur",
27
27
  "dispositif"
28
28
  ]),
29
- Oe(e, [
29
+ Ae(e, [
30
30
  "corps",
31
31
  "contenuAuteur",
32
32
  "dispositifAmdtCreditPLF"
33
33
  ]),
34
- Oe(e, [
34
+ Ae(e, [
35
35
  "corps",
36
36
  "contenuAuteur",
37
37
  "dispositifAmdtCreditPLFR"
38
38
  ])
39
- ].filter((e) => e !== null).map((e) => Ae(e)).join("\n")), n = Oe(e, [
39
+ ].filter((e) => e !== null).map((e) => Me(e)).join("\n")), n = Ae(e, [
40
40
  "corps",
41
41
  "contenuAuteur",
42
42
  "exposeSommaire"
43
- ]), r = n === null ? "" : Ae(n);
43
+ ]), r = n === null ? "" : Me(n);
44
44
  return [...t ? [{
45
45
  content: t,
46
46
  itemKind: "dispositif",
@@ -51,24 +51,24 @@ function je(e) {
51
51
  label: "Exposé sommaire"
52
52
  }] : []];
53
53
  }
54
- function Me(e, t) {
55
- return Ee("sha256").update(JSON.stringify({
54
+ function Pe(e, t) {
55
+ return Oe("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 P(e) {
62
+ function M(e) {
63
63
  switch (e.type) {
64
- case "reference_et_action": return P(e.reference);
65
- case "enumeration": return [...P(e.left), ...P(e.right)];
64
+ case "reference_et_action": return M(e.reference);
65
+ case "enumeration": return [...M(e.left), ...M(e.right)];
66
66
  case "parent-enfant": {
67
- let t = [...r(e.parent)].filter((e) => e.type === "article");
67
+ let t = [...a(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 ? [] : P(e.child).map((t) => ({
71
+ }] : t.length > 1 ? [] : M(e.child).map((t) => ({
72
72
  article: t.article,
73
73
  reference: {
74
74
  ...e,
@@ -89,11 +89,11 @@ function P(e) {
89
89
  }
90
90
  //#endregion
91
91
  //#region src/lib/extractors/article_action_effects.ts
92
- function Ne(e, t) {
92
+ function Fe(e, t) {
93
93
  if (t < 2) return null;
94
- let n = fe(e), r = S(e);
94
+ let n = O(e), r = x(e);
95
95
  if (r.length !== t) return null;
96
- let i = u(new D(n.output)), a = (e) => me(n, [e])[0].position;
96
+ let i = s(new A(n.output)), a = (e) => Ee(n, [e])[0].position;
97
97
  return r.map((t, n) => ({
98
98
  sourceText: e,
99
99
  referencePosition: a({
@@ -103,24 +103,24 @@ function Ne(e, t) {
103
103
  actionPosition: a(t.position)
104
104
  }));
105
105
  }
106
- function Pe(e, t, n) {
106
+ function Ie(e, t, n) {
107
107
  if (t.length < 2) return null;
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
- if (s.length !== t.length || s.length < 2) return null;
110
- let c = de(i);
111
- if (c.length > 0) return n?.kind !== "replace_portion" || c.length !== s.length || c.some((e, t) => {
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 || !C(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
114
- }) ? null : s.map((r, i) => ({
108
+ let r = O(e), i = r.output, a = (e) => Ee(r, [e])[0].position, o = s(new A(i)), c = o.flatMap(M);
109
+ if (c.length !== t.length || c.length < 2) return null;
110
+ let l = he(i);
111
+ if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== c.length || l.some((e, t) => {
112
+ let n = c[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 || !oe(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
114
+ }) ? null : c.map((r, i) => ({
115
115
  targetId: t[i],
116
116
  directive: {
117
117
  ...n,
118
118
  reference: r.reference,
119
- portionSelectors: C(r.reference),
119
+ portionSelectors: oe(r.reference),
120
120
  tableTarget: {
121
121
  type: "table",
122
- rowIndex: c[i].rowIndex,
123
- rowEndIndex: c[i].rowEndIndex
122
+ rowIndex: l[i].rowIndex,
123
+ rowEndIndex: l[i].rowEndIndex
124
124
  }
125
125
  },
126
126
  sourceAnnotation: {
@@ -132,12 +132,12 @@ function Pe(e, t, n) {
132
132
  }
133
133
  }
134
134
  }));
135
- let l = s.filter(({ reference: e }) => e.type === "parent-enfant" && e.parent.type === "texte" && e.parent.nature !== "CODE");
136
- if (l.length > 0 && l.length < s.length) {
137
- let n = s.filter((e) => !l.includes(e));
135
+ let u = c.filter(({ reference: e }) => e.type === "parent-enfant" && e.parent.type === "texte" && e.parent.nature !== "CODE");
136
+ if (u.length > 0 && u.length < c.length) {
137
+ let n = c.filter((e) => !u.includes(e));
138
138
  if (n.length !== 1) return null;
139
- let r = n[0], o = t[s.indexOf(r)], c = y(i);
140
- return !o || c.length !== 1 || c[0].kind === "compound" ? null : [{
139
+ let r = n[0], o = t[c.indexOf(r)], s = v(i);
140
+ return !o || s.length !== 1 || s[0].kind === "compound" ? null : [{
141
141
  targetId: o,
142
142
  sourceAnnotation: {
143
143
  sourceText: e,
@@ -148,7 +148,7 @@ function Pe(e, t, n) {
148
148
  }
149
149
  },
150
150
  directive: {
151
- ...c[0],
151
+ ...s[0],
152
152
  reference: r.reference,
153
153
  sourcePosition: {
154
154
  start: 0,
@@ -161,17 +161,17 @@ function Pe(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" || 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);
164
+ t.type !== "reference_et_action" || M(t).length === 0 || o.slice(f, e).flatMap(M).length === 0 || v(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && v(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(P);
169
+ let r = o.slice(m, n + 1).flatMap(M);
170
170
  if (r.length === 0) {
171
171
  m = n + 1;
172
172
  continue;
173
173
  }
174
- let s = m === 0 ? 0 : o[m].position.start, c = o[n + 1]?.position.start ?? i.length, l = y(i.slice(s, c));
174
+ let s = m === 0 ? 0 : o[m].position.start, c = o[n + 1]?.position.start ?? i.length, l = v(i.slice(s, c));
175
175
  if (l.length !== 1 || l[0].kind === "compound") return null;
176
176
  let u = l[0];
177
177
  for (let n of r) {
@@ -195,7 +195,7 @@ function Pe(e, t, n) {
195
195
  stop: i.length
196
196
  },
197
197
  reference: n.reference,
198
- portionSelectors: C(n.reference)
198
+ portionSelectors: oe(n.reference)
199
199
  }
200
200
  });
201
201
  }
@@ -203,41 +203,26 @@ function Pe(e, t, n) {
203
203
  }
204
204
  return h === t.length ? p : null;
205
205
  }
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
- //#endregion
208
- //#region src/lib/extractors/qualified_versions.ts
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
- if (i.type !== "parent-enfant" || i.parent.type !== "texte" || i.parent.nature !== "LOI") continue;
213
- let e = [...r(i.child)].filter((e) => e.type === "article" && e.position.start < i.parent.position.start);
214
- if (e.length === 1) {
215
- n.push(me(t, [e[0].position])[0].position);
216
- break;
217
- }
218
- }
219
- return n;
220
- }
221
206
  //#endregion
222
207
  //#region src/lib/server/parsed_bills.ts
223
208
  var Le = /^expos[ée]\s+des\s+motifs\b/iu;
224
- function F(e) {
209
+ function N(e) {
225
210
  return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
226
211
  }
227
- function I(e) {
228
- return F(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
212
+ function P(e) {
213
+ return N(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
229
214
  }
230
215
  function Re(e) {
231
- return s(F(e));
216
+ return ne(N(e));
232
217
  }
233
- function L(e) {
218
+ function F(e) {
234
219
  return `_TocArt${Re(e).replace(/\s+/gu, "")}`;
235
220
  }
236
221
  function ze(e, t) {
237
222
  return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
238
223
  }
239
224
  function Be(e) {
240
- return I(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
225
+ return P(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
241
226
  }
242
227
  function Ve(e) {
243
228
  return Be(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
@@ -260,12 +245,12 @@ function He(e) {
260
245
  default: return;
261
246
  }
262
247
  }
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
- if (n?.[1] !== void 0) return h(n[1]);
248
+ function Ue(t) {
249
+ let n = N(t.sourceText), r = /\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(n);
250
+ if (r?.[1] !== void 0) return e(r[1]);
266
251
  }
267
252
  function We(e) {
268
- let t = He(e), n = a(t ?? "");
253
+ let t = He(e), n = m(t ?? "");
269
254
  if (n.length > 0 && t !== void 0) return n.map((e, r) => {
270
255
  let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
271
256
  return {
@@ -292,39 +277,45 @@ function Ge(e, t = /* @__PURE__ */ new Set()) {
292
277
  return t;
293
278
  }
294
279
  function Ke(e) {
295
- let t = I(e.sourceText);
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);
280
+ if (typeof e != "object" || !e) return !1;
281
+ if (Array.isArray(e)) return e.some(Ke);
282
+ let t = e;
283
+ return t.type === "bounded-interval" || Object.values(t).some(Ke);
297
284
  }
298
285
  function qe(e) {
299
- return F(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
286
+ let t = P(e.sourceText);
287
+ 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);
300
288
  }
301
- function Je(e, t) {
302
- let n = new D(e, t), r = be(n);
289
+ function Je(e) {
290
+ return N(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
291
+ }
292
+ function Ye(e, t) {
293
+ let n = new A(e, t), r = xe(n);
303
294
  return typeof r != "string" || n.offset <= t ? null : {
304
295
  date: r,
305
296
  start: t,
306
297
  stop: n.offset
307
298
  };
308
299
  }
309
- function Ye(e, t) {
300
+ function Xe(e, t) {
310
301
  let n = /\d/u.exec(e.slice(t));
311
302
  if (!n) return null;
312
303
  let r = t + n.index;
313
- return e.slice(t, r).trim().length > 0 ? null : Je(e, r);
304
+ return e.slice(t, r).trim().length > 0 ? null : Ye(e, r);
314
305
  }
315
- function Xe(e) {
306
+ function Ze(e) {
316
307
  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
308
  for (; o !== -1;) {
318
309
  let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
319
310
  if (l) {
320
- let e = Ye(c, l[0].length);
311
+ let e = Xe(c, l[0].length);
321
312
  e && i.push(e.date);
322
313
  }
323
314
  let u = n.exec(c);
324
315
  if (u) {
325
316
  let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
326
317
  for (r.lastIndex = 0; r.exec(t) !== null;) {
327
- let e = Ye(t, r.lastIndex);
318
+ let e = Xe(t, r.lastIndex);
328
319
  e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
329
320
  }
330
321
  }
@@ -332,20 +323,20 @@ function Xe(e) {
332
323
  }
333
324
  return i;
334
325
  }
335
- function Ze(e) {
336
- let t = Xe(qe(e).toLowerCase()), n = Array.from(new Set(t));
326
+ function Qe(e) {
327
+ let t = Ze(Je(e).toLowerCase()), n = Array.from(new Set(t));
337
328
  return n.length === 1 ? n[0] : void 0;
338
329
  }
339
- function Qe(e) {
340
- return I(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
330
+ function $e(e) {
331
+ return P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
341
332
  }
342
- function R(e) {
333
+ function I(e) {
343
334
  return e?.type === "tag";
344
335
  }
345
- function $e(e, t) {
336
+ function et(e, t) {
346
337
  return e.html(t) ?? "";
347
338
  }
348
- function et(e, t) {
339
+ function tt(e, t) {
349
340
  let n = [], r = /* @__PURE__ */ new Set();
350
341
  for (let i of e(t).find("a").get()) {
351
342
  let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
@@ -353,65 +344,83 @@ function et(e, t) {
353
344
  let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
354
345
  if (r.has(l)) continue;
355
346
  r.add(l);
356
- let u = F(e(i).text());
347
+ let u = N(e(i).text());
357
348
  n.push({
358
349
  id: c,
359
- ...tt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
350
+ ...nt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
360
351
  ...u ? { text: u } : {},
361
352
  type: s
362
353
  });
363
354
  }
364
355
  return n;
365
356
  }
366
- function tt(e, t, n) {
367
- let r = nt(e, t, n);
357
+ function nt(e, t, n) {
358
+ let r = rt(e, t, n);
368
359
  return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
369
360
  }
370
- function nt(e, t, n) {
361
+ function rt(e, t, n) {
371
362
  if (t === n) return "";
372
363
  if (t.type === "text") return t.data ?? "";
373
- if (!R(t)) return "";
364
+ if (!I(t)) return "";
374
365
  let r = "";
375
366
  for (let i of e(t).contents().get()) {
376
367
  if (i === n) return r;
377
- if (R(i) && e.contains(i, n)) return r + nt(e, i, n);
368
+ if (I(i) && e.contains(i, n)) return r + rt(e, i, n);
378
369
  r += e(i).text();
379
370
  }
380
371
  return r;
381
372
  }
382
- function rt(e, t) {
383
- return t.map((t) => F(e(t).text())).filter(Boolean).join("\n");
373
+ function it(e, t) {
374
+ return t.map((t) => N(e(t).text())).filter(Boolean).join("\n");
375
+ }
376
+ function at(e) {
377
+ let t = P(e);
378
+ return !t || Le.test(t) ? "noise" : d.test(e) ? "directive_candidate" : "context";
384
379
  }
385
- function it(e) {
386
- let t = I(e);
387
- return !t || Le.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
380
+ function ot(e, t) {
381
+ return t.tagName === "p" && (/pastille/iu.test(e(t).attr("class") ?? "") || e(t).is("[data-pastille]")) && /^\(\d+\)$/u.test(N(e(t).text()));
388
382
  }
389
- async function at(e, t, n) {
383
+ function st(e) {
384
+ let t = b(e, { xml: {
385
+ xmlMode: !1,
386
+ withStartIndices: !0,
387
+ withEndIndices: !0
388
+ } });
389
+ return t("p").get().filter((e) => ot(t, e)).map((e) => {
390
+ if (e.startIndex === null || e.endIndex === null) throw Error("Missing source positions for an Assembly pastille");
391
+ return {
392
+ start: e.startIndex,
393
+ stop: e.endIndex + 1
394
+ };
395
+ });
396
+ }
397
+ async function ct(e, t, n, r) {
390
398
  if (n === void 0) throw Error("A document date is required to add links to legal references.");
391
399
  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 ae(t.canutesDb), { output: i } = await ie({
400
+ let i = t.legiResolver ?? new se(t.canutesDb), { output: a } = await ie({
393
401
  date: n,
402
+ excludedHtmlRanges: r,
394
403
  html: e,
395
404
  includeInternalArticleLinks: t.includeInternalArticleLinks,
396
- legiResolver: r,
405
+ legiResolver: i,
397
406
  linkBaseUrl: t.linkBaseUrl,
398
407
  linkType: t.linkType,
399
408
  logIgnoredReferencesTypes: t.logIgnoredReferencesTypes,
400
409
  logPartialReferences: t.logPartialReferences,
401
410
  logReferences: t.logReferences
402
411
  });
403
- return i ?? e;
412
+ return a ?? e;
404
413
  }
405
- function ot(e, t) {
414
+ function lt(e, t) {
406
415
  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 R(r) && R(n) && e(n).parents("table").get(0) === r ? r : R(n) ? n : t;
416
+ return I(r) && I(n) && e(n).parents("table").get(0) === r ? r : I(n) ? n : t;
408
417
  }
409
- function st(e, t, n, r, i) {
418
+ function ut(e, t, n, r, i) {
410
419
  if (n.has(i.container)) return;
411
- let a = i.id ?? L(i.num ?? i.label);
420
+ let a = i.id ?? F(i.num ?? i.label);
412
421
  if (r.has(a)) return;
413
422
  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)) ? {
423
+ let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = I(o) ? dt(e, o) : null, c = s ? e(o).text() : "", l = I(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => P(e) === P(c)) ? {
415
424
  element: o,
416
425
  text: `${s.label}\n${s.title}`
417
426
  } : void 0;
@@ -425,37 +434,37 @@ function st(e, t, n, r, i) {
425
434
  splitAtBreak: l
426
435
  });
427
436
  }
428
- function ct(e) {
437
+ function L(e) {
429
438
  let t = /* @__PURE__ */ new Map();
430
439
  return e("body *").each((e, n) => {
431
440
  t.set(n, e);
432
441
  }), t;
433
442
  }
434
- function z(e, t) {
443
+ function R(e, t) {
435
444
  return e.get(t) ?? 2 ** 53 - 1;
436
445
  }
437
- function lt(e, t) {
438
- if (!e(t).hasClass("assnat9ArticleNum") && !dt(e, t) || e(t).find("br").length !== 1) return null;
446
+ function dt(e, t) {
447
+ if (!e(t).hasClass("assnat9ArticleNum") && !pt(e, t) || e(t).find("br").length !== 1) return null;
439
448
  let n = "", r = "", i = !1, a = (e) => {
440
449
  if (e.type === "text") i ? r += e.data : n += e.data;
441
- else if (R(e)) if (e.tagName.toLowerCase() === "br") i = !0;
450
+ else if (I(e)) if (e.tagName.toLowerCase() === "br") i = !0;
442
451
  else for (let t of e.children) a(t);
443
452
  };
444
453
  a(t);
445
- let o = T(F(n)), s = F(r);
454
+ let o = C(N(n)), s = N(r);
446
455
  return o && !o.title && s ? {
447
456
  ...o,
448
457
  title: s
449
458
  } : null;
450
459
  }
451
- function ut(e) {
460
+ function ft(e) {
452
461
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
453
462
  e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
454
463
  if (ze(e, a)) return;
455
- let o = F(e(a).text()), s = e(a).attr("id");
464
+ let o = N(e(a).text()), s = e(a).attr("id");
456
465
  if (!s || r.has(s)) return;
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, {
466
+ let c = lt(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) ? dt(e, l) : null);
467
+ u && ut(e, t, n, r, {
459
468
  id: s,
460
469
  ...u,
461
470
  element: a,
@@ -463,36 +472,36 @@ function ut(e) {
463
472
  });
464
473
  }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
465
474
  if (n.has(a)) return;
466
- let o = T(F(e(a).text())) ?? lt(e, a);
467
- o && st(e, t, n, r, {
475
+ let o = C(N(e(a).text())) ?? dt(e, a);
476
+ o && ut(e, t, n, r, {
468
477
  ...o,
469
478
  element: a,
470
479
  container: a
471
480
  });
472
481
  });
473
- let i = ct(e);
474
- return t.sort((e, t) => z(i, e.container) - z(i, t.container)), t;
482
+ let i = L(e);
483
+ return t.sort((e, t) => R(i, e.container) - R(i, t.container)), t;
475
484
  }
476
- function dt(e, t) {
485
+ function pt(e, t) {
477
486
  if (ze(e, t)) return !1;
478
487
  let n = t.tagName?.toLowerCase();
479
488
  if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
480
489
  let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
481
490
  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));
482
491
  }
483
- function ft(e) {
492
+ function mt(e) {
484
493
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
485
494
  return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
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, {
495
+ if (ze(e, a) || !e(a).hasClass("assnat9ArticleNum") && !pt(e, a)) return;
496
+ let o = C(e(a).text()) ?? dt(e, a);
497
+ o && ut(e, t, n, r, {
489
498
  ...o,
490
499
  element: a,
491
500
  container: a
492
501
  });
493
502
  }), t;
494
503
  }
495
- function pt(e) {
504
+ function ht(e) {
496
505
  let t = Re(e ?? "").replace(/[()]/gu, "").trim();
497
506
  if (!t || t.toLowerCase() === "liminaire") return;
498
507
  if (t.toLowerCase() === "unique") return {
@@ -502,7 +511,7 @@ function pt(e) {
502
511
  };
503
512
  let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
504
513
  if (!n) return;
505
- let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : ht(i);
514
+ let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : _t(i);
506
515
  if (a !== void 0) return {
507
516
  base: r,
508
517
  suffixOrder: a,
@@ -510,7 +519,7 @@ function pt(e) {
510
519
  text: t
511
520
  };
512
521
  }
513
- function mt(e, t) {
522
+ function gt(e, t) {
514
523
  if (t.base !== e.base) return t.base - e.base;
515
524
  if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
516
525
  for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
@@ -519,14 +528,14 @@ function mt(e, t) {
519
528
  }
520
529
  return 0;
521
530
  }
522
- function ht(e) {
523
- let t = new D(e), n = we(t);
531
+ function _t(e) {
532
+ let t = new A(e), n = be(t);
524
533
  if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
525
534
  }
526
- function gt(e) {
535
+ function vt(e) {
527
536
  let t = [], n = e.map((e) => ({
528
537
  heading: e,
529
- token: pt(e.num)
538
+ token: ht(e.num)
530
539
  }));
531
540
  n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
532
541
  code: "article_toc_out_of_order",
@@ -535,7 +544,7 @@ function gt(e) {
535
544
  let r;
536
545
  for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
537
546
  if (r !== void 0) {
538
- let n = mt(r, i);
547
+ let n = gt(r, i);
539
548
  n === 0 ? t.push({
540
549
  code: "article_toc_duplicate_number",
541
550
  message: `Article ${e.num ?? e.label} is repeated`,
@@ -564,158 +573,196 @@ function gt(e) {
564
573
  }
565
574
  return t;
566
575
  }
567
- function _t(e) {
568
- let t = gt(e);
576
+ function yt(e) {
577
+ let t = vt(e);
569
578
  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) });
570
579
  }
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)));
580
+ function bt(e, { warn: t = !0 } = {}) {
581
+ let n = ft(e), r = mt(e);
582
+ if (n.length === 0) return t && yt(r), r;
583
+ let i = L(e), a = (e, t) => {
584
+ let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => F(e.num ?? e.label)));
576
585
  for (let i of t) {
577
- let t = L(i.num ?? i.label);
586
+ let t = F(i.num ?? i.label);
578
587
  n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
579
588
  }
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;
589
+ return e.sort((e, t) => R(i, e.container) - R(i, t.container)), e;
590
+ }, 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 && vt(c).length > vt(s).length ? s : c;
591
+ return t && yt(l), l;
583
592
  }
584
- function yt(e) {
593
+ function xt(e) {
585
594
  let t = e.next;
586
595
  for (; t !== null;) {
587
- if (R(t)) return t;
596
+ if (I(t)) return t;
588
597
  t = t.next;
589
598
  }
590
599
  return null;
591
600
  }
592
- function bt(e, t, n) {
601
+ function St(e, t, n) {
593
602
  let r = e(t.container);
594
603
  if (!r.is("p.assnat9ArticleNum")) return;
595
604
  let i = r.parent(), a = i.parent();
596
605
  if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
597
606
  let o = a.children().get();
598
- if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || F(e(o[1]).text()) !== "") return;
607
+ if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || N(e(o[1]).text()) !== "") return;
599
608
  let s = o.length === 4 ? o[2] : void 0;
600
- if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(F(e(s).text())))) return;
609
+ if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(N(e(s).text())))) return;
601
610
  let c = o.at(-1);
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 [
611
+ 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 [
603
612
  t.container,
604
613
  ...s === void 0 ? [] : [s],
605
614
  c
606
615
  ];
607
616
  }
608
- function xt(e, t, n, r = ct(e)) {
617
+ function Ct(e, t, n, r = L(e)) {
609
618
  let i = [t.container], a = n?.container;
610
- for (let e = yt(t.container); e !== null && e !== a; e = yt(e)) i.push(e);
619
+ for (let e = xt(t.container); e !== null && e !== a; e = xt(e)) i.push(e);
611
620
  if (i.length > 1) return i;
612
- let o = bt(e, t, n);
621
+ let o = St(e, t, n);
613
622
  if (o !== void 0) return o;
614
- let s = z(r, t.container), c = a ? z(r, a) : -1;
623
+ let s = R(r, t.container), c = a ? R(r, a) : -1;
615
624
  return e("body > *").get().filter((e) => {
616
- let t = z(r, e);
625
+ let t = R(r, e);
617
626
  return t >= s && (c === -1 || t < c);
618
627
  });
619
628
  }
620
- function St(e, t) {
629
+ function wt(e, t) {
621
630
  let n = [], r = /* @__PURE__ */ new Set();
622
631
  for (let i of t) {
623
632
  let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
624
- for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || t.tagName === "p" && (/pastille/iu.test(e(t).attr("class") ?? "") || e(t).is("[data-pastille]")) && /^\(\d+\)$/u.test(F(e(t).text())) || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
633
+ for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || ot(e, t) || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
625
634
  }
626
635
  return n;
627
636
  }
628
- function Ct(e, t, n, r) {
637
+ function Tt(e, t, n, r) {
629
638
  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());
639
+ for (let o of wt(e, n)) {
640
+ let n = e(o).is("table.akn-quoted-table") ? yn(e, o) : N(e(o).text());
632
641
  if (o === r?.splitAtBreak?.element && (n = r.splitAtBreak.text), !n) continue;
633
642
  Le.test(n) && (a = !0);
634
- let s = a ? "noise" : it(n), c = `${t}-b${i.length + 1}`;
643
+ let s = a ? "noise" : at(n), c = `${t}-b${i.length + 1}`;
635
644
  e(o).attr("data-pjl-parsed-article-id", t), e(o).attr("data-pjl-parsed-block-id", c), i.push({
636
645
  id: c,
637
646
  articleId: t,
638
647
  kind: s,
639
- links: et(e, o),
648
+ links: tt(e, o),
640
649
  text: n,
641
- html: $e(e, o)
650
+ html: et(e, o)
642
651
  });
643
652
  }
644
653
  return i;
645
654
  }
646
- function wt(e, t) {
655
+ function Et(e, t) {
647
656
  if (t.length === 0) return e;
648
657
  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>`;
649
658
  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}`;
650
659
  }
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");
660
+ function Dt(e) {
661
+ let t = b(e), n = Ot(t);
662
+ for (let e of bt(t, { warn: !1 })) {
663
+ let r = F(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
655
664
  if (a !== r) {
656
- if (a?.startsWith("_Toc") && !Ot(n, a, e.element)) {
665
+ if (a?.startsWith("_Toc") && !At(n, a, e.element)) {
657
666
  let e = t("<span></span>").attr("id", a);
658
667
  i.before(e);
659
668
  let r = e.get(0);
660
- R(r) && B(n, a, r);
669
+ I(r) && z(n, a, r);
661
670
  }
662
- a && Dt(n, a, e.element), i.attr("id", r), B(n, r, e.element);
671
+ a && kt(n, a, e.element), i.attr("id", r), z(n, r, e.element);
663
672
  }
664
673
  }
665
- let r = vt(t), i = ct(t);
674
+ let r = bt(t), i = L(t);
666
675
  for (let [e, a] of r.entries()) {
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());
676
+ let o = Ct(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
668
677
  for (let e of o) {
669
678
  let r = t(e).attr("data-alinea")?.trim();
670
679
  if (!r) continue;
671
680
  let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
672
- if (Ot(n, i, e)) continue;
681
+ if (At(n, i, e)) continue;
673
682
  let o = t(e).attr("id");
674
683
  if (o && o !== i) {
675
684
  let r = t("<span></span>").attr("id", i);
676
685
  t(e).before(r);
677
686
  let a = r.get(0);
678
- R(a) && B(n, i, a);
679
- } else o && Dt(n, o, e), t(e).attr("id", i), B(n, i, e);
687
+ I(a) && z(n, i, a);
688
+ } else o && kt(n, o, e), t(e).attr("id", i), z(n, i, e);
680
689
  }
681
690
  }
682
691
  return t.html();
683
692
  }
684
- function Et(e) {
693
+ function Ot(e) {
685
694
  let t = /* @__PURE__ */ new Map();
686
695
  for (let n of e("[id]").get()) {
687
696
  let r = e(n).attr("id");
688
- r && B(t, r, n);
697
+ r && z(t, r, n);
689
698
  }
690
699
  return t;
691
700
  }
692
- function B(e, t, n) {
701
+ function z(e, t, n) {
693
702
  let r = e.get(t);
694
703
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
695
704
  }
696
- function Dt(e, t, n) {
705
+ function kt(e, t, n) {
697
706
  let r = e.get(t);
698
707
  r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
699
708
  }
700
- function Ot(e, t, n) {
709
+ function At(e, t, n) {
701
710
  for (let r of e.get(t) ?? []) if (r !== n) return !0;
702
711
  return !1;
703
712
  }
704
- function kt(e, t) {
705
- let n = Qe("sourceText" in t ? t.sourceText : "");
713
+ function jt(e, t) {
714
+ let n = $e("sourceText" in t ? t.sourceText : "");
706
715
  if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
707
- let t = Qe(e.text);
716
+ let t = $e(e.text);
708
717
  return t.length > 0 && (n.includes(t) || t.includes(n));
709
718
  });
710
719
  }
711
- function At(e, t) {
720
+ function Mt(e, t) {
712
721
  if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
713
722
  }
714
- function jt(e) {
723
+ function Nt(e) {
715
724
  return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
716
725
  }
717
- function Mt(e) {
718
- let t = Ie(e.text);
726
+ function Pt(e) {
727
+ if (e.kind === "noise") return !1;
728
+ let t = P(e.text.split("«", 1)[0]).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-"), n = /^(?:(?:\d+°|[ivxlcdm]+[.)]|[a-z][.)])\s*)?(?:est|sont)\s+(?:ainsi\s+)?(?:abroge|modifie|complete|supprime|remplace|retabli)\w*\b/u.test(t) ? t : t.split(/\b(?:est|sont|il|elle|ils|elles)\b/iu, 1)[0];
729
+ return /(?:\b(?:articles?|livres?|titres?|sous[- ]?titres?|chapitres?|sections?|sous[- ]?sections?|parties?|paragraphes?|sous[- ]?paragraphes?|annexes?|etats?)\s+(?:[lrda]\s*\.?\s*-?\s*\d|\d|[ivxlcdm]+(?:er|re)?(?=\s|$|[.,;:])|(?:premier|premiere|deuxieme|troisieme|quatrieme|cinquieme|sixieme|septieme|huitieme|neuvieme|dixieme)\b)|\b(?:premier|premiere|deuxieme|troisieme|quatrieme|cinquieme|sixieme|septieme|huitieme|neuvieme|dixieme)\s+(?:article|livre|titre|chapitre|section|sous[- ]?section|partie|paragraphe)\b|\b(?:annexes?|etats?)\s+[a-z](?:\s|$))/iu.test(n);
730
+ }
731
+ function Ft(t, n) {
732
+ if (!n || n.articleId !== t.articleId || !/\br[ée]sultent\s+du\s+\d+°/iu.test(t.text)) return;
733
+ let r = (e) => P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-"), i = r(t.text).replace(/«[^»]*»/gu, "");
734
+ if (/[«»]/u.test(i)) return;
735
+ let o = /\btels? qu['’]ils resultent du (\d+)°/u.exec(i);
736
+ if (!o || s(new A(i)).some((e) => [...a(e)].some((e) => e.type === "texte" && e.relative === void 0))) return;
737
+ let c = r(n.text);
738
+ if (/^\s*(\d+)°/u.exec(P(n.text))?.[1] !== o[1]) return;
739
+ let l = /\bles articles (.+?) deviennent respectivement les articles ([^;]+);?\s*$/u.exec(c);
740
+ if (!l) return;
741
+ let u = (t) => e(t.trim().replace(/^[lrda](?=[.\s\d])/u, (e) => e.toUpperCase())), d = (e) => {
742
+ let t = e.trim().split(/,\s*|\s+et\s+/u);
743
+ if (t.length === 0 || t.length > 64) return;
744
+ let n = t.map(u);
745
+ if (n.some((e) => e === void 0)) return;
746
+ let r = n;
747
+ return new Set(r).size === r.length ? r : void 0;
748
+ }, f = d(l[1]), p = d(l[2].replace(/;\s*$/u, ""));
749
+ if (!f || !p || f.length !== p.length) return;
750
+ let m = /* @__PURE__ */ new Map();
751
+ for (let e = 0; e < f.length; e++) {
752
+ let t = n.links.filter((t) => t.type === "article" && !t.insideFrenchQuotes && u(r(t.text ?? "")) === f[e]), i = [...new Set(t.map((e) => e.id))];
753
+ if (i.length !== 1 || !i[0]) return;
754
+ m.set(p[e], i[0]);
755
+ }
756
+ let h = [];
757
+ for (let e of i.matchAll(/\baux articles (.+?)(?=,?\s+tels? qu|,\s*la reference|;|$)/gu)) {
758
+ let t = d(e[1]);
759
+ if (!t) return;
760
+ h.push(...t);
761
+ }
762
+ if (!(h.length === 0 || h.some((e) => !m.has(e)))) return [...new Set(h.map((e) => m.get(e)))];
763
+ }
764
+ function It(e) {
765
+ let t = h(e.text);
719
766
  if (t.length !== 1) return;
720
767
  let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
721
768
  let r = n.text ?? "", i = e.text.indexOf(r);
@@ -729,13 +776,13 @@ function Mt(e) {
729
776
  modifyingArticleLabel: i.text ?? ""
730
777
  };
731
778
  }
732
- function Nt(e, t) {
733
- let n = F(e);
779
+ function Lt(e, t) {
780
+ let n = N(e);
734
781
  if (!n) return;
735
- let r = x(n);
782
+ let r = fe(n);
736
783
  return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
737
784
  }
738
- function Pt(e) {
785
+ function Rt(e) {
739
786
  let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
740
787
  for (let [a, o] of e.entries()) {
741
788
  let e = r.get(a);
@@ -743,7 +790,7 @@ function Pt(e) {
743
790
  t.set(o.id, [...n.map((e) => e.block), o]);
744
791
  continue;
745
792
  }
746
- let s = Nt(o.text, n.at(-1)?.level);
793
+ let s = Lt(o.text, n.at(-1)?.level);
747
794
  if (s === void 0) {
748
795
  t.set(o.id, [...n.map((e) => e.block), o]);
749
796
  continue;
@@ -756,14 +803,14 @@ function Pt(e) {
756
803
  }
757
804
  return t;
758
805
  }
759
- function Ft(e, t) {
806
+ function zt(e, t) {
760
807
  let n = [], r = /* @__PURE__ */ new Set();
761
808
  for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
762
809
  return n;
763
810
  }
764
- function It(e, t, n) {
811
+ function Bt(e, t, n) {
765
812
  if (!t) return;
766
- let r = Ft(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
813
+ let r = zt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
767
814
  if (r.length === 0) return;
768
815
  let i = r.map((e) => e.id);
769
816
  if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
@@ -778,7 +825,7 @@ function It(e, t, n) {
778
825
  }
779
826
  };
780
827
  }
781
- function Lt(e) {
828
+ function Vt(e) {
782
829
  let t = [], n = 0;
783
830
  for (let r of e.blocks) {
784
831
  let i = e.directiveText.indexOf(r.text, n);
@@ -792,7 +839,7 @@ function Lt(e) {
792
839
  }
793
840
  return t;
794
841
  }
795
- function Rt(e, t, n) {
842
+ function Ht(e, t, n) {
796
843
  let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
797
844
  if (a.length === 0) return;
798
845
  let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
@@ -806,7 +853,7 @@ function Rt(e, t, n) {
806
853
  }
807
854
  };
808
855
  }
809
- function zt(e, t, n) {
856
+ function Ut(e, t, n) {
810
857
  if (!t) return;
811
858
  let r = e.directiveText.indexOf(t.text);
812
859
  if (r === -1) return;
@@ -819,17 +866,92 @@ function zt(e, t, n) {
819
866
  stop: a
820
867
  };
821
868
  }
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;
824
- for (let t of e.blocks) {
825
- t.qualifiedVersion = Mt(t);
826
- let e = jt(t);
827
- (e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
869
+ function Wt(e, t, n) {
870
+ for (let r of [...t.get(e.id) ?? [e]].reverse()) {
871
+ let e = n.get(r.id);
872
+ if (!n.has(r.id)) {
873
+ let t = r.links.filter((e) => e.type === "text" && !e.insideFrenchQuotes), i = t.length > 0 ? _(r.text) : [], a = [], o = !1;
874
+ for (let e of t) {
875
+ let t = e.text, n = t ? r.text.indexOf(t) : -1;
876
+ if (n < 0 || r.text.indexOf(t, n + 1) !== -1) {
877
+ o = !0;
878
+ break;
879
+ }
880
+ i.some((e) => n <= e.start && e.stop <= n + t.length) || a.push(e.id);
881
+ }
882
+ e = o ? void 0 : [...new Set(a)], n.set(r.id, e);
883
+ }
884
+ if (e === void 0 || e.length > 1) return;
885
+ if (e.length === 1) return e[0];
828
886
  }
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) {
887
+ }
888
+ function B(e, t) {
889
+ return `${e}\0${Be(t)}`;
890
+ }
891
+ function Gt(e) {
892
+ let t = new Map(e.map((e) => [e.id, e])), n = /* @__PURE__ */ new Map();
893
+ return (e, r) => {
894
+ if (r === void 0) return;
895
+ let i = n.get(e);
896
+ if (i === void 0) {
897
+ let r = t.get(e);
898
+ if (r === void 0) return;
899
+ i = {
900
+ blockById: new Map(r.blocks.map((e) => [e.id, e])),
901
+ contextByBlockId: Rt(r.blocks),
902
+ textIdsByBlockId: /* @__PURE__ */ new Map()
903
+ }, n.set(e, i);
904
+ }
905
+ let a = i.blockById.get(r);
906
+ return a === void 0 ? void 0 : Wt(a, i.contextByBlockId, i.textIdsByBlockId);
907
+ };
908
+ }
909
+ function Kt(e, t, n, r, i) {
910
+ let o = /* @__PURE__ */ new Map(), c = new Set(e.blocks.flatMap((e) => {
911
+ if (!e.text.includes("Art.")) return [];
912
+ let t = Wt(e, i, o);
913
+ return t === void 0 ? [] : m(O(e.text).output).map(({ num: e }) => B(t, e));
914
+ }));
915
+ if (c.size === 0) return /* @__PURE__ */ new Map();
916
+ let l = new Set([...c].map((e) => e.slice(e.indexOf("\0") + 1))), u = t.flatMap((t) => {
917
+ if (Ke(t.reference)) return [];
918
+ let s = new Set([...a(t.reference)].filter((e) => e.type === "article" && e.num).map((e) => e.num));
919
+ if (![...s].some((e) => l.has(Be(e)))) return [];
920
+ let c = Mt(n, Ht(e, r, t)) ?? jt(e.blocks, t);
921
+ if (!c) return [];
922
+ let u = Wt(c, i, o);
923
+ return u === void 0 ? [] : [{
924
+ block: c,
925
+ directive: t,
926
+ nums: s,
927
+ textId: u
928
+ }];
929
+ });
930
+ if (u.length === 0) return /* @__PURE__ */ new Map();
931
+ let d = new Set(u.flatMap(({ nums: e, textId: t }) => [...e].map((e) => B(t, e))));
932
+ if (![...d].some((e) => c.has(e))) return /* @__PURE__ */ new Map();
933
+ let f = new Set(t.flatMap((t) => {
934
+ let a = We(t);
935
+ if (a.length === 0) return [];
936
+ let s = Mt(n, Ht(e, r, t)) ?? jt(e.blocks, t);
937
+ if (!s) return [];
938
+ let c = Wt(s, i, o);
939
+ return c === void 0 ? [] : a.map(({ num: e }) => B(c, e)).filter((e) => d.has(e));
940
+ })), p = /* @__PURE__ */ new Map();
941
+ for (let { block: e, directive: t, nums: n, textId: r } of u) {
942
+ if (![...n].some((e) => c.has(B(r, e)))) continue;
943
+ let i = new Set(s(new A(O(t.sourceText).output)).flatMap((e) => [...a(e)].filter((e) => e.type === "article" && e.num).map((e) => e.num))), o = [...n].filter((e) => c.has(B(r, e)) && !f.has(B(r, e)) && [...i].some((t) => Be(t) === Be(e)));
944
+ o.length > 0 && p.set(e.id, [...new Set([...p.get(e.id) ?? [], ...o])]);
945
+ }
946
+ return p;
947
+ }
948
+ function qt(e, t) {
949
+ let n = performance.now(), r = performance.now(), i = Vt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Rt(e.blocks);
950
+ for (let t of e.blocks) t.qualifiedVersion = It(t);
951
+ let l = performance.now() - o, u = performance.now(), d = ee(), f = e.blocks[0], p = e.title !== void 0 && f?.text.startsWith(`${e.label}\n`) && (e.directiveText === f.text || e.directiveText.startsWith(`${f.text}\n`)), m = p && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", h = pe(p ? `${e.label}${m}${e.title}${e.directiveText.slice(f.text.length)}` : e.directiveText, t === void 0 ? void 0 : d);
952
+ if (p && !m) {
831
953
  let t = e.label.length;
832
- y = y.map((e) => ({
954
+ h = h.map((e) => ({
833
955
  ...e,
834
956
  sourcePosition: {
835
957
  start: e.sourcePosition.start > t ? e.sourcePosition.start + 1 : e.sourcePosition.start,
@@ -837,39 +959,46 @@ function Bt(e, t) {
837
959
  }
838
960
  }));
839
961
  }
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);
962
+ let g = performance.now() - u, _ = performance.now(), v = Kt(e, h, s, i, c), y = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), x = [], S, C;
963
+ for (let t of e.blocks) {
964
+ let e = Nt(t), n = e.length === 0 ? Ft(t, C) : void 0;
965
+ (e.length > 0 || n !== void 0 || t.qualifiedVersion || v.has(t.id) || Pt(t)) && (x = v.has(t.id) ? [] : n ?? e, S = t.qualifiedVersion), y.set(t.id, x), b.set(t.id, S), C = t;
966
+ }
967
+ l += performance.now() - _;
968
+ let te = performance.now(), ne = h.map((t) => {
969
+ let n = Ht(e, i, t), r = Mt(s, n) ?? jt(e.blocks, t), a = Nt(r), o = r?.id !== void 0 && v.has(r.id) ? [] : a.length > 0 ? a : r?.id === void 0 ? [] : y.get(r.id) ?? [], l = Ut(e, r, t), u = Bt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
842
970
  return {
843
971
  articleId: e.id,
844
972
  blockId: r?.id,
845
- ...d === void 0 ? {} : { sourceBlockPosition: d },
973
+ ...l === void 0 ? {} : { sourceBlockPosition: l },
846
974
  ...n === void 0 ? {} : {
847
975
  sourceBlockIds: n.blockIds,
848
976
  sourceBlockText: n.text,
849
977
  sourceBlockHtml: n.html,
850
978
  sourceBlockPosition: n.position
851
979
  },
852
- ...f === void 0 ? {} : {
853
- sourceContextBlockIds: f.blockIds,
854
- sourceContextPosition: f.position
980
+ ...u === void 0 ? {} : {
981
+ sourceContextBlockIds: u.blockIds,
982
+ sourceContextPosition: u.position
855
983
  },
856
984
  directive: t,
857
- ...o.length > 0 ? { targetIds: o } : {},
858
- ...r?.id !== void 0 && u.get(r.id) ? { qualifiedVersion: u.get(r.id) } : {}
985
+ ...r?.id !== void 0 && v.has(r.id) ? { internallyCreatedTargetNums: v.get(r.id) } : {},
986
+ ...o.length > 0 || r?.id !== void 0 && v.has(r.id) ? { targetIds: o } : {},
987
+ ...r?.id !== void 0 && b.get(r.id) ? { qualifiedVersion: b.get(r.id) } : {}
859
988
  };
860
- }), S = /* @__PURE__ */ new Set(), C = /* @__PURE__ */ new Map(), w = ee.flatMap((e) => {
989
+ }), re = /* @__PURE__ */ new Set(), ie = /* @__PURE__ */ new Map(), ae = ne.flatMap((e) => {
861
990
  let t = e.blockId ? s.get(e.blockId) : void 0;
862
- if (!t) return [e];
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;
991
+ if (!t || e.internallyCreatedTargetNums?.length) return [e];
992
+ if (re.has(t.id)) return [];
993
+ let n = ie.get(t.id);
994
+ if (n === void 0 && (n = Ie(t.text, Nt(t), e.directive), ie.set(t.id, n)), !n) {
995
+ let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Fe(t.text, n.operations.length) : null;
867
996
  return [r ? {
868
997
  ...e,
869
998
  sourceAnnotations: r
870
999
  } : e];
871
1000
  }
872
- return S.add(t.id), [{
1001
+ return re.add(t.id), [{
873
1002
  ...e,
874
1003
  effects: n.map((t) => ({
875
1004
  ...t,
@@ -880,69 +1009,84 @@ function Bt(e, t) {
880
1009
  }
881
1010
  }))
882
1011
  }];
883
- }), ne = performance.now() - x;
1012
+ }), oe = performance.now() - te;
884
1013
  return t?.push({
885
- actionDirectiveExtraction: h,
1014
+ actionDirectiveExtraction: d,
886
1015
  articleId: e.id,
887
1016
  blockCount: e.blocks.length,
888
1017
  buildRangesMs: Math.round(a * 10) / 10,
889
- directiveCount: w.length,
1018
+ directiveCount: ae.length,
890
1019
  directiveTextSize: e.directiveText.length,
891
- extractActionDirectivesMs: Math.round(b * 10) / 10,
892
- mapDirectivesMs: Math.round(ne * 10) / 10,
893
- prepareBlockIndexesMs: Math.round(p * 10) / 10,
1020
+ extractActionDirectivesMs: Math.round(g * 10) / 10,
1021
+ mapDirectivesMs: Math.round(oe * 10) / 10,
1022
+ prepareBlockIndexesMs: Math.round(l * 10) / 10,
894
1023
  totalMs: Math.round((performance.now() - n) * 10) / 10
895
- }), w;
1024
+ }), ae;
896
1025
  }
897
- function Vt(e) {
898
- let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
899
- for (let i of e) {
900
- let e = We(i.directive);
1026
+ function Jt(e, t) {
1027
+ let n = /* @__PURE__ */ new Map(), r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map();
1028
+ for (let o of e) {
1029
+ let e = We(o.directive);
901
1030
  if (e.length === 0) continue;
902
- let a = e.map(({ num: e }) => ({
903
- definitionId: `${i.articleId}:article:${Ve(e)}`,
904
- num: e
905
- }));
906
- t.set(i, a);
907
- for (let [t, o] of e.entries()) {
908
- let e = a[t];
909
- e === void 0 || r.has(e.definitionId) || (r.add(e.definitionId), n.push({
1031
+ let s = t(o.articleId, o.blockId), c = e.map(({ num: e }) => {
1032
+ let t = s === void 0 ? void 0 : `${o.articleId}\0${B(s, e)}`, n = t === void 0 ? void 0 : a.get(t);
1033
+ if (n !== void 0) return n;
1034
+ let r = `${o.articleId}:article:${Ve(e)}`, c = r;
1035
+ if (i.has(c)) {
1036
+ let e = s ?? o.blockId ?? "unknown";
1037
+ c = `${r}:text:${e}`;
1038
+ for (let t = 2; i.has(c); t++) c = `${r}:text:${e}:${t}`;
1039
+ }
1040
+ let l = {
1041
+ definitionId: c,
1042
+ num: e
1043
+ };
1044
+ return t !== void 0 && a.set(t, l), l;
1045
+ });
1046
+ n.set(o, c);
1047
+ for (let [t, n] of e.entries()) {
1048
+ let e = c[t];
1049
+ e === void 0 || i.has(e.definitionId) || (i.add(e.definitionId), r.push({
910
1050
  ...e,
911
- articleId: i.articleId,
912
- blockId: i.blockId,
913
- html: o.text,
914
- ...i.targetIds === void 0 ? {} : { parentTargetIds: i.targetIds },
915
- ...i.sourceBlockHtml === void 0 ? {} : { sourceBlockHtml: i.sourceBlockHtml },
916
- ...i.sourceBlockText === void 0 ? {} : { sourceBlockText: i.sourceBlockText },
917
- text: o.text
1051
+ articleId: o.articleId,
1052
+ blockId: o.blockId,
1053
+ html: n.text,
1054
+ ...o.targetIds === void 0 ? {} : { parentTargetIds: o.targetIds },
1055
+ ...o.sourceBlockHtml === void 0 ? {} : { sourceBlockHtml: o.sourceBlockHtml },
1056
+ ...o.sourceBlockText === void 0 ? {} : { sourceBlockText: o.sourceBlockText },
1057
+ text: n.text
918
1058
  }));
919
1059
  }
920
1060
  }
921
1061
  return {
922
- createdArticlesByDirective: t,
923
- definitions: n
1062
+ createdArticlesByDirective: n,
1063
+ definitions: r
924
1064
  };
925
1065
  }
926
- function Ht(e, t, n) {
927
- let r = new Map(t.map((e) => [Be(e.num), e]));
1066
+ function Yt(e, t, n, r) {
1067
+ if (t.length === 0) return e;
1068
+ let i = new Map(t.flatMap((e) => {
1069
+ let t = r(e.articleId, e.blockId);
1070
+ return t === void 0 ? [] : [[B(t, e.num), e]];
1071
+ }));
928
1072
  return e.map((e) => {
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 : {
930
- definitionId: a.definitionId,
931
- num: a.num
932
- }, s = Ke(e.directive), c = (e.targetIds?.length ?? 0) > 0;
1073
+ let t = n.get(e), a = t?.[0], o = r(e.articleId, e.blockId), s = (o === void 0 ? [] : [...Ge(e.directive.reference)].map((e) => i.get(B(o, e))).filter((e) => e !== void 0 && e.definitionId !== a?.definitionId))[0], c = s === void 0 ? void 0 : {
1074
+ definitionId: s.definitionId,
1075
+ num: s.num
1076
+ }, l = qe(e.directive), u = (e.targetIds?.length ?? 0) > 0;
933
1077
  return {
934
1078
  ...e,
935
- ...i === void 0 ? {} : { createdArticle: i },
1079
+ ...a === void 0 ? {} : { createdArticle: a },
936
1080
  ...t !== void 0 && t.length > 0 ? { createdArticles: t } : {},
937
- ...o !== void 0 && (s || !c) ? { internalTarget: {
938
- ...o,
939
- resolution: s ? "explicit" : "fallback"
1081
+ ...c !== void 0 && (l || !u) ? { internalTarget: {
1082
+ ...c,
1083
+ resolution: l ? "explicit" : "fallback"
940
1084
  } } : {},
941
- ...o !== void 0 && c && !s ? { internalTargetAmbiguity: o } : {}
1085
+ ...c !== void 0 && u && !l ? { internalTargetAmbiguity: c } : {}
942
1086
  };
943
1087
  });
944
1088
  }
945
- function Ut(e) {
1089
+ function Xt(e) {
946
1090
  switch (e.kind) {
947
1091
  case "insert_after":
948
1092
  case "insert_before": return [e.insertText];
@@ -960,8 +1104,8 @@ function Ut(e) {
960
1104
  default: return [];
961
1105
  }
962
1106
  }
963
- function Wt(e) {
964
- return e.flatMap((e) => Ut(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
1107
+ function Zt(e) {
1108
+ return e.flatMap((e) => Xt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
965
1109
  code: "nested_french_quote_in_redaction",
966
1110
  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.",
967
1111
  details: {
@@ -973,18 +1117,18 @@ function Wt(e) {
973
1117
  }
974
1118
  })));
975
1119
  }
976
- function Gt(e) {
977
- return Ut(e).map((t) => ({
1120
+ function Qt(e) {
1121
+ return Xt(e).map((t) => ({
978
1122
  directiveKind: e.kind,
979
1123
  text: t
980
1124
  }));
981
1125
  }
982
- function Kt(e) {
1126
+ function $t(e) {
983
1127
  let t = /* @__PURE__ */ new Set();
984
1128
  for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
985
1129
  return Array.from(t);
986
1130
  }
987
- function qt(e, t) {
1131
+ function en(e, t) {
988
1132
  let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
989
1133
  for (let e of r) {
990
1134
  let t = n.get(e);
@@ -996,11 +1140,11 @@ function qt(e, t) {
996
1140
  }
997
1141
  return i;
998
1142
  }
999
- function Jt(e, t, n) {
1143
+ function tn(e, t, n) {
1000
1144
  return e.find((e) => t >= e.start && n <= e.stop);
1001
1145
  }
1002
- function Yt(e, t, n) {
1003
- let r = Kt(n), i = r.flatMap((t) => {
1146
+ function nn(e, t, n) {
1147
+ let r = $t(n), i = r.flatMap((t) => {
1004
1148
  for (let n of e.blocks) {
1005
1149
  let e = n.text.indexOf(t);
1006
1150
  if (e !== -1) return [{
@@ -1019,7 +1163,7 @@ function Yt(e, t, n) {
1019
1163
  e.directiveText
1020
1164
  ].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
1021
1165
  if (!o) return [];
1022
- let s = qt(e, t);
1166
+ let s = en(e, t);
1023
1167
  if (s.length === 0) return [];
1024
1168
  let c = [], l = 0;
1025
1169
  for (let e of r) {
@@ -1027,7 +1171,7 @@ function Yt(e, t, n) {
1027
1171
  if (t === -1) continue;
1028
1172
  let n = t + e.length;
1029
1173
  l = n;
1030
- let r = Jt(s, t, n);
1174
+ let r = tn(s, t, n);
1031
1175
  r && c.push({
1032
1176
  blockId: r.block.id,
1033
1177
  start: t - r.start,
@@ -1037,15 +1181,15 @@ function Yt(e, t, n) {
1037
1181
  }
1038
1182
  return c;
1039
1183
  }
1040
- function Xt(e, t) {
1184
+ function rn(e, t) {
1041
1185
  let n = new Map(e.map((e) => [e.id, e]));
1042
1186
  return t.flatMap((e) => {
1043
1187
  let t = n.get(e.articleId);
1044
- return t ? Gt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1188
+ return t ? Qt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1045
1189
  articleId: e.articleId,
1046
1190
  code: "nested_french_quote_in_redaction",
1047
1191
  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.",
1048
- ranges: Yt(t, e, r),
1192
+ ranges: nn(t, e, r),
1049
1193
  severity: "warning",
1050
1194
  details: {
1051
1195
  blockId: e.blockId,
@@ -1056,7 +1200,7 @@ function Xt(e, t) {
1056
1200
  })) : [];
1057
1201
  });
1058
1202
  }
1059
- function Zt(e, t) {
1203
+ function an(e, t) {
1060
1204
  let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1061
1205
  articleId: e.id,
1062
1206
  blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
@@ -1079,13 +1223,35 @@ function Zt(e, t) {
1079
1223
  }];
1080
1224
  });
1081
1225
  }
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 = {
1226
+ function on(e, t) {
1227
+ let n = new Map(e.flatMap((e) => e.blocks.map((e) => [e.id, e]))), r = /* @__PURE__ */ new Set();
1228
+ return t.flatMap((e) => {
1229
+ let t = e.blockId, i = e.internallyCreatedTargetNums;
1230
+ if (!t || !i?.length || r.has(t)) return [];
1231
+ r.add(t);
1232
+ let a = n.get(t);
1233
+ return a?.text ? [{
1234
+ articleId: e.articleId,
1235
+ code: "bill_created_article_target_unprojectable",
1236
+ details: { articleNums: i },
1237
+ message: "La directive vise un article créé par ce texte ; sa projection n'est pas encore disponible.",
1238
+ ranges: [{
1239
+ blockId: t,
1240
+ start: 0,
1241
+ stop: a.text.length,
1242
+ text: a.text
1243
+ }],
1244
+ severity: "warning"
1245
+ }] : [];
1246
+ });
1247
+ }
1248
+ function sn(e, t, n, r, i, a, o = !0, s) {
1249
+ let c = new ye("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 = {
1084
1250
  sourceFormat: e,
1085
1251
  documentDate: r,
1086
1252
  html: t,
1087
1253
  htmlWithLinks: n,
1088
- tableOfContents: a ?? c.timeSync("extractTableOfContents", () => b(u), { inputSize: u.length }),
1254
+ tableOfContents: a ?? c.timeSync("extractTableOfContents", () => y(u), { inputSize: u.length }),
1089
1255
  articles: i
1090
1256
  };
1091
1257
  if (!o) {
@@ -1101,29 +1267,33 @@ function Qt(e, t, n, r, i, a, o = !0, s) {
1101
1267
  directiveTextSize: u.length
1102
1268
  }), e;
1103
1269
  }
1104
- let f = c.timeSync("extractGlobalApplicabilityDate", () => Ze(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1270
+ let f = c.timeSync("extractGlobalApplicabilityDate", () => Qe(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1105
1271
  let e = [];
1106
1272
  for (let t of i) {
1107
- let n = Bt(t, c.enabled ? p : void 0);
1273
+ let n = qt(t, c.enabled ? p : void 0);
1108
1274
  e.push(...n);
1109
1275
  }
1110
1276
  return e;
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 = {
1277
+ }, { count: i.length }), h = Gt(i), { createdArticlesByDirective: g, definitions: _ } = c.timeSync("buildInternalArticleDefinitions", () => Jt(m, h), { count: m.length }), v = c.timeSync("attachInternalArticleMetadata", () => Yt(m, _, g, h), { count: m.length }), b = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Zt(v), { count: v.length }), x = [...s ?? [], ...b], ee = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [
1278
+ ...rn(i, v),
1279
+ ...an(i, v),
1280
+ ...on(i, v)
1281
+ ], { count: v.length }), S = {
1112
1282
  ...d,
1113
1283
  ...f ? { globalApplicabilityDate: f } : {},
1114
- ...g.length > 0 ? { internalArticleDefinitions: g } : {},
1115
- directives: _,
1116
- ...x.length > 0 ? { annotations: x } : {},
1117
- ...y.length > 0 ? { diagnostics: y } : {}
1284
+ ..._.length > 0 ? { internalArticleDefinitions: _ } : {},
1285
+ directives: v,
1286
+ ...ee.length > 0 ? { annotations: ee } : {},
1287
+ ...x.length > 0 ? { diagnostics: x } : {}
1118
1288
  };
1119
1289
  return c.log({
1120
- annotationCount: x.length,
1290
+ annotationCount: ee.length,
1121
1291
  articleCount: i.length,
1122
1292
  blockCount: l,
1123
- definitionCount: g.length,
1124
- diagnosticCount: y.length,
1293
+ definitionCount: _.length,
1294
+ diagnosticCount: x.length,
1125
1295
  directiveAnalysisIncluded: !0,
1126
- directiveCount: _.length,
1296
+ directiveCount: v.length,
1127
1297
  actionDirectiveExtractionTotals: p.reduce((e, t) => ({
1128
1298
  applyApplicabilityDatesMs: e.applyApplicabilityDatesMs + t.actionDirectiveExtraction.applyApplicabilityDatesMs,
1129
1299
  buildListItemTreeMs: e.buildListItemTreeMs + t.actionDirectiveExtraction.buildListItemTreeMs,
@@ -1200,20 +1370,20 @@ function Qt(e, t, n, r, i, a, o = !0, s) {
1200
1370
  }),
1201
1371
  directiveTextSize: u.length,
1202
1372
  slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
1203
- }), ee;
1373
+ }), S;
1204
1374
  }
1205
- function $t(e) {
1375
+ function cn(e) {
1206
1376
  return { items: e.map((e) => ({
1207
1377
  id: e.id,
1208
1378
  line: e.title ? `${e.label} : ${e.title}` : e.label,
1209
1379
  type: "article"
1210
1380
  })) };
1211
1381
  }
1212
- function en(e) {
1213
- return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => I(e.line.split(/[::]/u)[0]));
1382
+ function ln(e) {
1383
+ return Array.from(de(e)).filter((e) => e.type === "article").map((e) => P(e.line.split(/[::]/u)[0]));
1214
1384
  }
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);
1385
+ function un(e, t, n, r) {
1386
+ let i = vt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(de(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? F(e.num) : b(e.html)("p.TCNumArticle").first().attr("id") ?? F(e.label) : e.id), c = o.map((e) => e.id);
1217
1387
  (c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
1218
1388
  code: "article_toc_source_heading_mismatch",
1219
1389
  message: "The table of contents differs from the parsed article headings",
@@ -1229,8 +1399,8 @@ function tn(e, t, n, r) {
1229
1399
  });
1230
1400
  return i;
1231
1401
  }
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")];
1402
+ function dn(e, t, n) {
1403
+ let r = ln(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => P(e.label)), a = cn(e), o = [...n, ...un(e, a, t, "assemblee-html")];
1234
1404
  if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
1235
1405
  let t = r.findIndex((e, t) => e !== i[t]);
1236
1406
  o.push({
@@ -1254,24 +1424,24 @@ function nn(e, t, n) {
1254
1424
  tableOfContents: a
1255
1425
  };
1256
1426
  }
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 ? [{
1427
+ async function fn(e, t) {
1428
+ let n = new ye("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => pn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Dt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => b(i)), o = n.timeSync("extractArticleHeadings", () => bt(a)), s = new Set(o.map((e) => e.id)), c = mt(a).filter((e) => !s.has(F(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1259
1429
  code: "article_toc_source_heading_mismatch",
1260
1430
  message: "Some structural article headings were not retained",
1261
1431
  details: { discardedCandidates: c }
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");
1432
+ }] : [], u = L(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1433
+ let n = Ct(a, e, o[t + 1], u), r = Tt(a, e.id, n, e), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1264
1434
  return {
1265
1435
  id: e.id,
1266
1436
  label: e.label,
1267
1437
  num: e.num,
1268
1438
  title: e.title,
1269
- text: rt(a, n),
1270
- html: n.map((e) => $e(a, e)).join("\n"),
1439
+ text: it(a, n),
1440
+ html: n.map((e) => et(a, e)).join("\n"),
1271
1441
  directiveText: i,
1272
1442
  blocks: r
1273
1443
  };
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));
1444
+ }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Et(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => dn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => sn("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1275
1445
  return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
1276
1446
  articleCount: h.articles.length,
1277
1447
  blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1279,18 +1449,18 @@ async function rn(e, t) {
1279
1449
  targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
1280
1450
  }), h;
1281
1451
  }
1282
- async function an(e, t) {
1452
+ async function pn(e, t) {
1283
1453
  return {
1284
1454
  sourceFormat: "assemblee-html",
1285
1455
  documentDate: t.date,
1286
1456
  html: e,
1287
- linkedHtml: await at(e, t, t.date)
1457
+ linkedHtml: await ct(e, t, t.date, st(e))
1288
1458
  };
1289
1459
  }
1290
1460
  function V(e) {
1291
1461
  return e.replace(/&/gu, "&amp;").replace(/</gu, "&lt;").replace(/>/gu, "&gt;").replace(/"/gu, "&quot;");
1292
1462
  }
1293
- function on(e) {
1463
+ function mn(e) {
1294
1464
  let t = e;
1295
1465
  for (let e = 0; e < 3; e++) {
1296
1466
  let e = t;
@@ -1298,33 +1468,33 @@ function on(e) {
1298
1468
  }
1299
1469
  return t;
1300
1470
  }
1301
- function sn(e) {
1471
+ function hn(e) {
1302
1472
  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);
1303
1473
  }
1304
1474
  function H(e) {
1305
1475
  return e.name.replace(/^.*:/u, "");
1306
1476
  }
1307
- function cn(e, t) {
1477
+ function gn(e, t) {
1308
1478
  return t.children.map((t) => U(e, t)).filter(Boolean).join("");
1309
1479
  }
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("");
1480
+ function _n(e, t) {
1481
+ return t.children.map((t) => t.type === "text" && hn(t.data) ? mn(t.data) : U(e, t)).filter(Boolean).join("");
1312
1482
  }
1313
1483
  function U(e, t) {
1314
1484
  if (t.type === "text") {
1315
1485
  let e = t.data.replace(/\s+\./gu, ".");
1316
- return sn(e) ? on(e) : V(e);
1486
+ return hn(e) ? mn(e) : V(e);
1317
1487
  }
1318
- if (!R(t)) return "";
1319
- let n = H(t), r = cn(e, t);
1488
+ if (!I(t)) return "";
1489
+ let n = H(t), r = () => gn(e, t);
1320
1490
  switch (n) {
1321
- case "p": return `<p${fn(e, t, [
1491
+ case "p": return `<p${bn(e, t, [
1322
1492
  "id",
1323
1493
  "class",
1324
1494
  "align",
1325
1495
  "valign",
1326
1496
  "style"
1327
- ])}>${r}</p>`;
1497
+ ])}>${r()}</p>`;
1328
1498
  case "br": return "<br>";
1329
1499
  case "span":
1330
1500
  case "b":
@@ -1332,42 +1502,42 @@ function U(e, t) {
1332
1502
  case "u":
1333
1503
  case "sup":
1334
1504
  case "sub":
1335
- case "abbr": return `<${n}${fn(e, t, [
1505
+ case "abbr": return `<${n}${bn(e, t, [
1336
1506
  "id",
1337
1507
  "class",
1338
1508
  "title",
1339
1509
  "style"
1340
- ])}>${r}</${n}>`;
1341
- case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${fn(e, t, [
1510
+ ])}>${r()}</${n}>`;
1511
+ case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${bn(e, t, [
1342
1512
  "id",
1343
1513
  "class",
1344
1514
  "title",
1345
1515
  "style"
1346
- ])}>${r}</a>`;
1516
+ ])}>${r()}</a>`;
1347
1517
  case "table":
1348
1518
  case "thead":
1349
1519
  case "tbody":
1350
1520
  case "tr":
1351
1521
  case "th":
1352
- case "td": return pn(e, t, n, r);
1353
- case "caption": return `<caption${fn(e, t, [
1522
+ case "td": return xn(e, t, n, r());
1523
+ case "caption": return `<caption${bn(e, t, [
1354
1524
  "id",
1355
1525
  "class",
1356
1526
  "align",
1357
1527
  "style"
1358
- ])}>${r}</caption>`;
1359
- case "num": return `<span class="akn-num">${r}</span> `;
1360
- case "heading": return `<p class="akn-heading">${r}</p>`;
1361
- case "content": return ln(e, t);
1362
- case "alinea": return On(e, t, "div", "akn-alinea");
1363
- case "article": return On(e, t, "article", "akn-article");
1528
+ ])}>${r()}</caption>`;
1529
+ case "num": return `<span class="akn-num">${r()}</span> `;
1530
+ case "heading": return `<p class="akn-heading">${r()}</p>`;
1531
+ case "content": return _n(e, t);
1532
+ case "alinea": return In(e, t, "div", "akn-alinea");
1533
+ case "article": return In(e, t, "article", "akn-article");
1364
1534
  case "blockList":
1365
- case "list": return `<div class="akn-list">${r}</div>`;
1366
- case "item": return On(e, t, "div", "akn-item");
1535
+ case "list": return `<div class="akn-list">${r()}</div>`;
1536
+ case "item": return In(e, t, "div", "akn-item");
1367
1537
  case "listIntroduction":
1368
1538
  case "listWrapUp":
1369
1539
  case "intro":
1370
- case "wrapUp": return `<div class="akn-${n}">${r}</div>`;
1540
+ case "wrapUp": return `<div class="akn-${n}">${r()}</div>`;
1371
1541
  case "part":
1372
1542
  case "title":
1373
1543
  case "chapter":
@@ -1379,12 +1549,12 @@ function U(e, t) {
1379
1549
  case "book":
1380
1550
  case "tome":
1381
1551
  case "subchapter":
1382
- case "subsection": return On(e, t, "section", `akn-${n}`);
1383
- case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
1384
- default: return r;
1552
+ case "subsection": return In(e, t, "section", `akn-${n}`);
1553
+ case "crossHeading": return `<p class="akn-cross-heading">${r()}</p>`;
1554
+ default: return r();
1385
1555
  }
1386
1556
  }
1387
- function un(e, t) {
1557
+ function vn(e, t) {
1388
1558
  let n = e(t).text();
1389
1559
  if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
1390
1560
  let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
@@ -1395,28 +1565,28 @@ function un(e, t) {
1395
1565
  let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
1396
1566
  if (l) {
1397
1567
  let t = Number(e(l).attr("rowspan") ?? "1");
1398
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && F(e(l).text()) !== "«") return [];
1568
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && N(e(l).text()) !== "«") return [];
1399
1569
  i = t - 1;
1400
1570
  }
1401
1571
  if (u) {
1402
1572
  let t = Number(e(u).attr("rowspan") ?? "1");
1403
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(F(e(u).text()))) return [];
1573
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(N(e(u).text()))) return [];
1404
1574
  a = t - 1;
1405
1575
  }
1406
1576
  return [l, u];
1407
1577
  });
1408
1578
  if (o.some((e) => e.length !== 2)) return;
1409
- let s = o.map(([t]) => t ? F(e(t).text()) : ""), c = o.map(([, t]) => t ? F(e(t).text()) : "");
1579
+ let s = o.map(([t]) => t ? N(e(t).text()) : ""), c = o.map(([, t]) => t ? N(e(t).text()) : "");
1410
1580
  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("»")))) {
1411
1581
  e(t).addClass("akn-quoted-table");
1412
1582
  for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
1413
1583
  }
1414
1584
  }
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(";") ? " ;" : ""}`;
1585
+ function yn(e, t) {
1586
+ 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();
1587
+ return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => N(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1418
1588
  }
1419
- function fn(e, t, n, r = {}) {
1589
+ function bn(e, t, n, r = {}) {
1420
1590
  let i = [];
1421
1591
  for (let r of n) {
1422
1592
  if (r === "style") continue;
@@ -1426,8 +1596,8 @@ function fn(e, t, n, r = {}) {
1426
1596
  let a = r.style ?? e(t).attr("style");
1427
1597
  return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1428
1598
  }
1429
- function pn(e, t, n, r) {
1430
- return `<${n}${fn(e, t, [
1599
+ function xn(e, t, n, r) {
1600
+ return `<${n}${bn(e, t, [
1431
1601
  "id",
1432
1602
  "class",
1433
1603
  "colspan",
@@ -1440,105 +1610,105 @@ function pn(e, t, n, r) {
1440
1610
  "cellspacing",
1441
1611
  "cellpadding",
1442
1612
  "style"
1443
- ], { style: mn(e, t, n) })}>${r}</${n}>`;
1613
+ ], { style: Sn(e, t, n) })}>${r}</${n}>`;
1444
1614
  }
1445
- function mn(e, t, n) {
1615
+ function Sn(e, t, n) {
1446
1616
  let r = e(t).attr("style") ?? "";
1447
- return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = hn(r, "text-align", "center")), r || void 0;
1617
+ return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = Cn(r, "text-align", "center")), r || void 0;
1448
1618
  }
1449
- function hn(e, t, n) {
1619
+ function Cn(e, t, n) {
1450
1620
  let r = e.trim();
1451
1621
  return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
1452
1622
  }
1453
- function gn(e, t) {
1454
- let n = [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean);
1623
+ function wn(e, t) {
1624
+ let n = [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean);
1455
1625
  return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
1456
1626
  }
1457
- function _n(e, t) {
1627
+ function Tn(e, t) {
1458
1628
  if (!t) return !1;
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));
1629
+ let n = (e) => N(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1630
+ return n(N(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1461
1631
  }
1462
- function vn(e) {
1632
+ function En(e) {
1463
1633
  let t = V(e);
1464
1634
  return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
1465
1635
  }
1466
- function yn(e, t) {
1467
- return bn([xn({
1636
+ function Dn(e, t) {
1637
+ return On([kn({
1468
1638
  content: e,
1469
1639
  pastille: t
1470
1640
  })]);
1471
1641
  }
1472
- function bn(e) {
1642
+ function On(e) {
1473
1643
  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>`;
1474
1644
  }
1475
- function xn({ content: e, pastille: t, style: n, contextClass: r }) {
1645
+ function kn({ content: e, pastille: t, style: n, contextClass: r }) {
1476
1646
  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>`;
1647
+ 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}">${En(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>`;
1478
1648
  }
1479
- function Sn({ content: e, style: t, contextClass: n }) {
1649
+ function An({ content: e, style: t, contextClass: n }) {
1480
1650
  let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
1481
1651
  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>`;
1482
1652
  }
1483
- function Cn(e, t) {
1653
+ function jn(e, t) {
1484
1654
  return e(t).attr("data:pastille") ?? e(t).attr("pastille");
1485
1655
  }
1486
- function wn(e, t) {
1656
+ function Mn(e, t) {
1487
1657
  return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1488
1658
  }
1489
- function Tn(e, t) {
1490
- return e(t).children().get().filter((e) => R(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1659
+ function Nn(e, t) {
1660
+ return e(t).children().get().filter((e) => I(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1491
1661
  }
1492
- function En(e, t) {
1662
+ function Pn(e, t) {
1493
1663
  let n = [];
1494
1664
  return e(t).children().each((t, r) => {
1495
- if (!R(r)) return;
1665
+ if (!I(r)) return;
1496
1666
  let i = H(r);
1497
1667
  i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
1498
1668
  }), n.filter(Boolean);
1499
1669
  }
1500
- function Dn(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);
1670
+ function Fn(e, t) {
1671
+ let n = [], r = H(t), i = r === "alinea" ? jn(e, t) : void 0, a = Nn(e, t), o = Ln(e, t, r, i), s = Un(e, t);
1502
1672
  if (i) {
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({
1673
+ let r = [Tn(a, N(e(t).children("num").first().text())) ? "" : wn(e, t), a].filter(Boolean).join("\n");
1674
+ N(r) && n.push(kn({
1505
1675
  content: r,
1506
1676
  pastille: i,
1507
1677
  style: o,
1508
1678
  contextClass: s
1509
1679
  }));
1510
- } else a && n.push(Sn({
1680
+ } else a && n.push(An({
1511
1681
  content: a,
1512
1682
  style: o,
1513
1683
  contextClass: s
1514
1684
  }));
1515
1685
  for (let r of e(t).children().get()) {
1516
- if (!R(r)) continue;
1686
+ if (!I(r)) continue;
1517
1687
  let t = H(r);
1518
- t === "num" || t === "heading" || t === "content" || (t === "alinea" || wn(e, r)) && n.push(...Dn(e, r));
1688
+ t === "num" || t === "heading" || t === "content" || (t === "alinea" || Mn(e, r)) && n.push(...Fn(e, r));
1519
1689
  }
1520
1690
  return n;
1521
1691
  }
1522
- function On(e, t, n, r) {
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} ${[
1692
+ function In(e, t, n, r) {
1693
+ let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = jn(e, t), s = Ln(e, t, i, o), c = [`<${n} ${[
1524
1694
  a ? `id="${V(a)}"` : void 0,
1525
1695
  `class="${r}"`,
1526
1696
  o ? `data-pastille="${V(o)}"` : void 0,
1527
1697
  s ? `style="${V(s)}"` : void 0
1528
1698
  ].filter((e) => e !== void 0).join(" ")}>`];
1529
1699
  if (i === "part" || i === "title") {
1530
- let r = Mn(e, t, i), a = Pn(e, t), o = r ? [Sn({
1700
+ let r = Bn(e, t, i), a = Hn(e, t), o = r ? [An({
1531
1701
  content: r,
1532
1702
  contextClass: a
1533
1703
  })] : [], s = () => {
1534
- o.length !== 0 && (c.push(jn(o)), o = []);
1704
+ o.length !== 0 && (c.push(zn(o)), o = []);
1535
1705
  };
1536
1706
  return e(t).children().each((t, n) => {
1537
- if (!R(n)) return;
1707
+ if (!I(n)) return;
1538
1708
  let r = H(n);
1539
1709
  if (!(r === "num" || r === "heading" || r === "content")) {
1540
1710
  if (r === "alinea") {
1541
- o.push(...Dn(e, n));
1711
+ o.push(...Fn(e, n));
1542
1712
  return;
1543
1713
  }
1544
1714
  s(), c.push(U(e, n));
@@ -1546,49 +1716,49 @@ function On(e, t, n, r) {
1546
1716
  }), s(), c.push(`</${n}>`), c.join("\n");
1547
1717
  }
1548
1718
  if (i === "article") {
1549
- let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = T(r) ?? {
1719
+ let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = C(r) ?? {
1550
1720
  label: r,
1551
1721
  num: r
1552
1722
  }, 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>`;
1553
- if (wn(e, t)) {
1554
- let r = [Sn({
1723
+ if (Mn(e, t)) {
1724
+ let r = [An({
1555
1725
  content: o,
1556
- contextClass: Ln(a.label)
1557
- }), ...Dn(e, t)];
1558
- c.push(bn(r));
1559
- for (let n of En(e, t)) n.includes("akn-pastille-table") || c.push(n);
1726
+ contextClass: Gn(a.label)
1727
+ }), ...Fn(e, t)];
1728
+ c.push(On(r));
1729
+ for (let n of Pn(e, t)) n.includes("akn-pastille-table") || c.push(n);
1560
1730
  return c.push(`</${n}>`), c.join("\n");
1561
1731
  }
1562
1732
  c.push(o);
1563
1733
  }
1564
1734
  let l = [];
1565
1735
  for (let n of ["content", "children"]) e(t).children().each((t, r) => {
1566
- if (!R(r)) return;
1736
+ if (!I(r)) return;
1567
1737
  let i = H(r);
1568
1738
  i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
1569
1739
  });
1570
1740
  let u = l.join("\n");
1571
1741
  if (i !== "article") {
1572
- let n = _n(u, F(e(t).children("num").first().text())) ? "" : gn(e, t);
1742
+ let n = Tn(u, N(e(t).children("num").first().text())) ? "" : wn(e, t);
1573
1743
  n && c.push(n);
1574
1744
  }
1575
- return c.push(o ? yn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1745
+ return c.push(o ? Dn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1576
1746
  }
1577
- function kn(e, t, n, r) {
1578
- let i = An(e(t).attr("style") ?? "", "font-family");
1579
- return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = hn(i, "text-align", "center")), i || void 0;
1747
+ function Ln(e, t, n, r) {
1748
+ let i = Rn(e(t).attr("style") ?? "", "font-family");
1749
+ return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = Cn(i, "text-align", "center")), i || void 0;
1580
1750
  }
1581
- function An(e, t) {
1751
+ function Rn(e, t) {
1582
1752
  return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
1583
1753
  }
1584
- function jn(e) {
1754
+ function zn(e) {
1585
1755
  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>`;
1586
1756
  }
1587
- function Mn(e, t, n) {
1588
- let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = Nn(n), o = [];
1757
+ function Bn(e, t, n) {
1758
+ let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = Vn(n), o = [];
1589
1759
  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");
1590
1760
  }
1591
- function Nn(e) {
1761
+ function Vn(e) {
1592
1762
  switch (e) {
1593
1763
  case "part": return {
1594
1764
  num: "TCNumPartie",
@@ -1612,22 +1782,22 @@ function Nn(e) {
1612
1782
  };
1613
1783
  }
1614
1784
  }
1615
- function Pn(e, t) {
1616
- let n = In(F(e(t).children("num").first().text()));
1785
+ function Hn(e, t) {
1786
+ let n = Wn(N(e(t).children("num").first().text()));
1617
1787
  if (n) return n;
1618
1788
  for (let n of e(t).parents().get()) {
1619
- if (!R(n)) continue;
1789
+ if (!I(n)) continue;
1620
1790
  let t = H(n);
1621
1791
  if (t !== "title" && t !== "part") continue;
1622
- let r = In(F(e(n).children("num").first().text()));
1792
+ let r = Wn(N(e(n).children("num").first().text()));
1623
1793
  if (r) return r;
1624
1794
  }
1625
1795
  }
1626
- function Fn(e, t) {
1627
- return Pn(e, t);
1796
+ function Un(e, t) {
1797
+ return Hn(e, t);
1628
1798
  }
1629
- function In(e) {
1630
- let [t, ...n] = F(e).split(/\s+/u);
1799
+ function Wn(e) {
1800
+ let [t, ...n] = N(e).split(/\s+/u);
1631
1801
  if (!t || n.length === 0) return;
1632
1802
  let r = t.toLocaleLowerCase("fr-FR");
1633
1803
  if ([
@@ -1637,10 +1807,10 @@ function In(e) {
1637
1807
  "section"
1638
1808
  ].includes(r)) return `${r}-${n.join("_")}`;
1639
1809
  }
1640
- function Ln(e) {
1641
- return `article-${F(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1810
+ function Gn(e) {
1811
+ return `article-${N(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1642
1812
  }
1643
- function Rn(e) {
1813
+ function Kn(e) {
1644
1814
  switch (e) {
1645
1815
  case "part": return "partie";
1646
1816
  case "book": return "livre";
@@ -1652,11 +1822,11 @@ function Rn(e) {
1652
1822
  default: return;
1653
1823
  }
1654
1824
  }
1655
- function zn(e, t) {
1656
- return [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1825
+ function qn(e, t) {
1826
+ return [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1657
1827
  }
1658
- function Bn(e, t) {
1659
- let n = F(e(t).children("num").first().text()), r = F(e(t).children("heading").first().text()), i = T(n) ?? {
1828
+ function Jn(e, t) {
1829
+ let n = N(e(t).children("num").first().text()), r = N(e(t).children("heading").first().text()), i = C(n) ?? {
1660
1830
  label: n,
1661
1831
  num: n
1662
1832
  };
@@ -1666,24 +1836,24 @@ function Bn(e, t) {
1666
1836
  type: "article"
1667
1837
  };
1668
1838
  }
1669
- function Vn(e, t) {
1839
+ function Yn(e, t) {
1670
1840
  e.items.push(...t.items);
1671
1841
  }
1672
- function Hn(e, t) {
1842
+ function Xn(e, t) {
1673
1843
  let n = { items: [] };
1674
1844
  return e(t).children().each((t, r) => {
1675
- if (!R(r)) return;
1845
+ if (!I(r)) return;
1676
1846
  let i = H(r);
1677
1847
  if (i === "article") {
1678
- n.items.push(Bn(e, r));
1848
+ n.items.push(Jn(e, r));
1679
1849
  return;
1680
1850
  }
1681
- let a = Rn(i);
1851
+ let a = Kn(i);
1682
1852
  if (!a) {
1683
- Vn(n, Hn(e, r));
1853
+ Yn(n, Xn(e, r));
1684
1854
  return;
1685
1855
  }
1686
- let o = zn(e, r), s = Hn(e, r);
1856
+ let o = qn(e, r), s = Xn(e, r);
1687
1857
  !o && s.items.length === 0 || n.items.push({
1688
1858
  ...s,
1689
1859
  id: e(r).attr("eId") ?? e(r).attr("GUID"),
@@ -1692,27 +1862,27 @@ function Hn(e, t) {
1692
1862
  });
1693
1863
  }), n;
1694
1864
  }
1695
- function Un(e) {
1865
+ function Zn(e) {
1696
1866
  let t = e("body").first().get(0);
1697
- return t === void 0 ? { items: [] } : Hn(e, t);
1867
+ return t === void 0 ? { items: [] } : Xn(e, t);
1698
1868
  }
1699
- function Wn(e) {
1869
+ function Qn(e) {
1700
1870
  return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
1701
1871
  }
1702
- function Gn(e) {
1703
- e("table").each((t, n) => un(e, n));
1872
+ function $n(e) {
1873
+ e("table").each((t, n) => vn(e, n));
1704
1874
  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>"];
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));
1875
+ return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(gn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1876
+ I(n) && r.push(H(n) === "article" ? In(e, n, "article", "akn-article") : U(e, n));
1707
1877
  }), r.push("</section></div>"), r.join("\n");
1708
1878
  }
1709
- function Kn(e) {
1710
- let t = E(e, { xml: {
1879
+ function er(e) {
1880
+ let t = b(e, { xml: {
1711
1881
  decodeEntities: !1,
1712
1882
  lowerCaseTags: !1,
1713
1883
  lowerCaseAttributeNames: !1,
1714
1884
  xmlMode: !0
1715
- } }), n = Wn(t), r = Gn(t);
1885
+ } }), n = Qn(t), r = $n(t);
1716
1886
  return {
1717
1887
  sourceFormat: "akoma-ntoso",
1718
1888
  documentDate: n,
@@ -1720,42 +1890,42 @@ function Kn(e) {
1720
1890
  linkedHtml: r
1721
1891
  };
1722
1892
  }
1723
- function qn(e) {
1724
- return Jn(E(e));
1893
+ function tr(e) {
1894
+ return nr(b(e));
1725
1895
  }
1726
- function Jn(e) {
1896
+ function nr(e) {
1727
1897
  let t = [];
1728
1898
  return e("article.akn-article").each((n, r) => {
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");
1899
+ 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 = Tt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1730
1900
  t.push({
1731
1901
  id: s,
1732
1902
  label: o.label,
1733
1903
  num: o.num,
1734
1904
  title: o.title,
1735
- text: rt(e, c),
1736
- html: $e(e, r),
1905
+ text: it(e, c),
1906
+ html: et(e, r),
1737
1907
  directiveText: u,
1738
1908
  blocks: l
1739
1909
  });
1740
1910
  }), t;
1741
1911
  }
1742
- function Yn(e) {
1743
- let t = E(e);
1912
+ function rr(e) {
1913
+ let t = b(e);
1744
1914
  return {
1745
- articles: Jn(t),
1915
+ articles: nr(t),
1746
1916
  htmlWithLinks: t.html()
1747
1917
  };
1748
1918
  }
1749
- async function Xn(e, t) {
1750
- let n = new xe("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => E(e, { xml: {
1919
+ async function ir(e, t) {
1920
+ let n = new ye("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => b(e, { xml: {
1751
1921
  decodeEntities: !1,
1752
1922
  lowerCaseTags: !1,
1753
1923
  lowerCaseAttributeNames: !1,
1754
1924
  xmlMode: !0
1755
- } })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => at(a, {
1925
+ } })), i = t.date ?? Qn(r), a = n.timeSync("renderAknHtml", () => $n(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => ct(a, {
1756
1926
  ...t,
1757
1927
  date: i
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")));
1928
+ }, i)), s = n.timeSync("extractRenderedAknArticles", () => tr(a)), c = n.timeSync("injectHiddenArticleSummary", () => Et(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => rr(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Zn(r)), p = n.timeSync("buildParsedDocument", () => sn("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, un(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1759
1929
  return n.log({
1760
1930
  articleCount: p.articles.length,
1761
1931
  blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1763,25 +1933,25 @@ async function Xn(e, t) {
1763
1933
  targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
1764
1934
  }), p;
1765
1935
  }
1766
- async function Zn(e, t) {
1767
- let n = Kn(e), r = t.date ?? n.documentDate;
1936
+ async function ar(e, t) {
1937
+ let n = er(e), r = t.date ?? n.documentDate;
1768
1938
  return {
1769
1939
  sourceFormat: "akoma-ntoso",
1770
1940
  documentDate: r,
1771
1941
  html: n.html,
1772
- linkedHtml: await at(n.html, t, r)
1942
+ linkedHtml: await ct(n.html, t, r)
1773
1943
  };
1774
1944
  }
1775
1945
  //#endregion
1776
1946
  //#region src/lib/server/assemblee_document_search.ts
1777
- var Qn = /\bexpos[ée]\s+des\s+motifs\b/giu, $n = /\barticle\s+(?:premier|1er|\d+)/iu;
1778
- function er(e) {
1947
+ var or = /\bexpos[ée]\s+des\s+motifs\b/giu, sr = /\barticle\s+(?:premier|1er|\d+)/iu;
1948
+ function cr(e) {
1779
1949
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
1780
1950
  }
1781
- function tr(e) {
1782
- let t = er(E(e).text()), n = [...t.matchAll(Qn)], r = /* @__PURE__ */ new Set(), i = [];
1951
+ function lr(e) {
1952
+ let t = cr(b(e).text()), n = [...t.matchAll(or)], r = /* @__PURE__ */ new Set(), i = [];
1783
1953
  for (let [e, a] of n.entries()) {
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));
1954
+ let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = sr.exec(s), l = cr(s.slice(0, c?.index ?? s.length));
1785
1955
  if (l.length < 20 || r.has(l)) continue;
1786
1956
  r.add(l);
1787
1957
  let u = `expose-des-motifs-${e + 1}`;
@@ -1797,8 +1967,8 @@ function tr(e) {
1797
1967
  }
1798
1968
  return i;
1799
1969
  }
1800
- async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1801
- let i = await rn(t, {
1970
+ async function ur({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1971
+ let i = await fn(t, {
1802
1972
  date: e,
1803
1973
  includeDirectiveAnalysis: !1,
1804
1974
  linkBaseUrl: n,
@@ -1807,7 +1977,7 @@ async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1807
1977
  });
1808
1978
  return {
1809
1979
  items: [...i.articles.map((e) => {
1810
- let t = er(e.directiveText || e.text);
1980
+ let t = cr(e.directiveText || e.text);
1811
1981
  if (t) return {
1812
1982
  anchor: e.id,
1813
1983
  articleNumber: e.num ?? null,
@@ -1817,17 +1987,17 @@ async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1817
1987
  label: e.label,
1818
1988
  title: e.title ?? null
1819
1989
  };
1820
- }).filter((e) => e !== void 0), ...tr(t)],
1990
+ }).filter((e) => e !== void 0), ...lr(t)],
1821
1991
  tableOfContents: i.tableOfContents
1822
1992
  };
1823
1993
  }
1824
- function rr(e, t) {
1825
- return Ee("sha256").update(JSON.stringify({
1994
+ function dr(e, t) {
1995
+ return Oe("sha256").update(JSON.stringify({
1826
1996
  item: e,
1827
1997
  metadata: t
1828
1998
  })).digest("hex");
1829
1999
  }
1830
- function ir(e) {
2000
+ function fr(e) {
1831
2001
  if (typeof e != "object" || !e) return;
1832
2002
  let t = e.cycleDeVie?.chrono;
1833
2003
  if (t !== void 0) for (let e of [
@@ -1842,11 +2012,11 @@ function ir(e) {
1842
2012
  }
1843
2013
  //#endregion
1844
2014
  //#region src/lib/server/senat_amendment_search.ts
1845
- function ar(e) {
1846
- return e?.trim() ? E(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
2015
+ function pr(e) {
2016
+ return e?.trim() ? b(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1847
2017
  }
1848
- function or({ dispositifHtml: e, objetHtml: t }) {
1849
- let n = ar(e), r = ar(t);
2018
+ function mr({ dispositifHtml: e, objetHtml: t }) {
2019
+ let n = pr(e), r = pr(t);
1850
2020
  return [...n ? [{
1851
2021
  content: n,
1852
2022
  itemKind: "dispositif",
@@ -1857,8 +2027,8 @@ function or({ dispositifHtml: e, objetHtml: t }) {
1857
2027
  label: "Objet"
1858
2028
  }] : []];
1859
2029
  }
1860
- function sr(e, t) {
1861
- return Ee("sha256").update(JSON.stringify({
2030
+ function hr(e, t) {
2031
+ return Oe("sha256").update(JSON.stringify({
1862
2032
  item: e,
1863
2033
  metadata: t
1864
2034
  })).digest("hex");
@@ -1872,76 +2042,76 @@ function W(e, t) {
1872
2042
  type: "amendment_action_directive"
1873
2043
  };
1874
2044
  }
1875
- function cr(e, t) {
2045
+ function gr(e, t) {
1876
2046
  return {
1877
2047
  type: e === "start" ? "head_of_target" : "tail_after_target",
1878
- unit: t ? ue(t) : "article"
2048
+ unit: t ? me(t) : "article"
1879
2049
  };
1880
2050
  }
1881
- function lr(e) {
2051
+ function _r(e) {
1882
2052
  return e === "start" ? "insert_before" : "insert_after";
1883
2053
  }
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) => {
2054
+ var vr = T(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = w(l, k([E("les?\\s+", { flags: "i" }), i], { value: (e) => e[1] }), i, o), yr = w(k([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1885
2055
  let t = e[1];
1886
2056
  return {
1887
2057
  targetReference: t,
1888
2058
  targetScope: {
1889
2059
  type: "tail_after_target",
1890
- unit: ue(t)
2060
+ unit: me(t)
1891
2061
  }
1892
2062
  };
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: "" }),
2063
+ } }), k([t], { value: (e) => ({ targetScope: e[0] }) })), K = T(k([
2064
+ T(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
2065
+ T(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1896
2066
  G,
1897
- k(O("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
2067
+ T(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1898
2068
  ], { value: (e, t) => ({
1899
2069
  reference: e[2],
1900
2070
  text: t.text()
1901
- }) }), { default: null }), fr = k(O(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ge})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
2071
+ }) }), { default: null }), br = T(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Te})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1902
2072
  function q(e) {
1903
2073
  return e?.text ?? "";
1904
2074
  }
1905
- function pr(e) {
1906
- return { citation: ee(e.position()) };
2075
+ function xr(e) {
2076
+ return { citation: ae(e.position()) };
1907
2077
  }
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*:)", {
2078
+ var J = w(k([f], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => xr(t) })), Sr = E("\\S[\\s\\S]*", { value: (e, t) => xr(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), Cr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1909
2079
  flags: "i",
1910
- value: (e, t) => pr(t)
1911
- }), gr = O("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
2080
+ value: (e, t) => xr(t)
2081
+ }), wr = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1912
2082
  flags: "i",
1913
- value: (e, t) => pr(t)
1914
- }), _r = O("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
2083
+ value: (e, t) => xr(t)
2084
+ }), Tr = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1915
2085
  flags: "i",
1916
- value: (e, t) => pr(t)
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([
1918
- fr,
1919
- O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1920
- Sr
1921
- ], { value: (e) => e[2] }), wr = M([
1922
- fr,
1923
- O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
1924
- A(M([v], { value: (e) => ({ citation: e[0] }) }), mr)
2086
+ value: (e, t) => xr(t)
2087
+ }), Er = w(k([f], { value: (e) => ({ citation: e[0] }) }), Cr), Dr = w(k([f], { value: (e) => ({ citation: e[0] }) }), Tr), Or = k([E(`${n}s?\\s*:?\\s*`, { flags: "i" }), Er], { value: (e) => e[1] }), kr = k([E(`${r}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), Dr], { value: (e) => e[1] }), Ar = w(k([f], { value: (e) => ({ citation: e[0] }) }), wr), jr = k([
2088
+ br,
2089
+ E(`${n}s?\\s*:?\\s*`, { flags: "i" }),
2090
+ Ar
2091
+ ], { value: (e) => e[2] }), Mr = k([
2092
+ br,
2093
+ E(`${n}s?\\s*:?\\s*`, { flags: "i" }),
2094
+ w(k([f], { value: (e) => ({ citation: e[0] }) }), Sr)
1925
2095
  ], { value: (e) => e[2] });
1926
2096
  function X(e) {
1927
2097
  return e?.reference;
1928
2098
  }
1929
- var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
2099
+ var Nr = k([vr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1930
2100
  contextText: e[0],
1931
2101
  kind: "delete_article"
1932
- }) }), Er = M([
2102
+ }) }), Pr = k([
1933
2103
  K,
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 })
2104
+ E("supprimer", { flags: "i" }),
2105
+ T(k([D, G], { value: (e) => e[1] }), { default: null }),
2106
+ T(k([D, Mr], { value: (e) => e[1] }), { default: null })
1937
2107
  ], { value: (e, t) => W(t, {
1938
2108
  contextText: q(e[0]),
1939
2109
  kind: "delete_portion",
1940
2110
  targetCitation: e[3]?.citation ?? void 0,
1941
2111
  targetReference: e[2] ?? X(e[0])
1942
- }) }), Dr = M([
2112
+ }) }), Fr = k([
1943
2113
  K,
1944
- A(O("r[eé]diger\\s+ainsi", { flags: "i" }), O("r[eé]tablir", { flags: "i" })),
2114
+ w(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
1945
2115
  Y,
1946
2116
  J
1947
2117
  ], { value: (e, t) => W(t, {
@@ -1949,76 +2119,76 @@ var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1949
2119
  kind: "rewrite_portion",
1950
2120
  replacementCitation: e[3].citation,
1951
2121
  targetReference: X(e[0])
1952
- }) }), Or = M([
2122
+ }) }), Ir = k([
1953
2123
  K,
1954
- A(O("substituer", { flags: "i" }), O("remplacer", { flags: "i" })),
1955
- j,
1956
- fr,
2124
+ w(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
2125
+ D,
1957
2126
  br,
1958
- O("\\s*,?\\s*"),
1959
- k(O("par\\s+", { flags: "i" }), { default: "" }),
1960
- xr
2127
+ Or,
2128
+ E("\\s*,?\\s*"),
2129
+ T(E("par\\s+", { flags: "i" }), { default: "" }),
2130
+ kr
1961
2131
  ], { value: (e, t) => W(t, {
1962
2132
  contextText: q(e[0]),
1963
2133
  kind: "replace",
1964
2134
  replacementCitation: e[7].citation,
1965
2135
  targetCitation: e[4].citation,
1966
2136
  targetReference: X(e[0])
1967
- }) }), kr = M([
2137
+ }) }), Lr = k([
1968
2138
  K,
1969
- O("substituer", { flags: "i" }),
1970
- j,
1971
- k(O("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
2139
+ E("substituer", { flags: "i" }),
2140
+ D,
2141
+ T(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1972
2142
  G,
1973
- O("[\\s\\S]*?(?=[«“\"]|$)"),
2143
+ E("[\\s\\S]*?(?=[«“\"]|$)"),
1974
2144
  J
1975
2145
  ], { value: (e, t) => W(t, {
1976
2146
  contextText: q(e[0]),
1977
2147
  kind: "rewrite_portion",
1978
2148
  replacementCitation: e[6].citation,
1979
2149
  targetReference: e[4] ?? X(e[0])
1980
- }) }), Ar = M([
1981
- d,
1982
- j,
1983
- O("l['’ ]article", { flags: "i" }),
1984
- O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1985
- O("ins[eé]rer", { flags: "i" }),
2150
+ }) }), Rr = k([
2151
+ c,
2152
+ D,
2153
+ E("l['’ ]article", { flags: "i" }),
2154
+ E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2155
+ E("ins[eé]rer", { flags: "i" }),
1986
2156
  Y,
1987
2157
  J
1988
2158
  ], { value: (e, t) => W(t, {
1989
2159
  contextText: "",
1990
2160
  insertCitation: e[6].citation,
1991
2161
  kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
1992
- }) }), jr = M([
1993
- d,
1994
- j,
2162
+ }) }), zr = k([
2163
+ c,
2164
+ D,
1995
2165
  G,
1996
- O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1997
- A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
2166
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2167
+ w(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
1998
2168
  Y,
1999
2169
  J
2000
2170
  ], { value: (e, t) => W(t, {
2001
2171
  contextText: "",
2002
2172
  insertCitation: e[6].citation,
2003
- kind: w(e[0]),
2173
+ kind: S(e[0]),
2004
2174
  targetReference: e[2]
2005
- }) }), Mr = M([
2006
- d,
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" }),
2175
+ }) }), Br = k([
2176
+ c,
2177
+ D,
2178
+ E("l['’ ]alin[eé]a", { flags: "i" }),
2179
+ E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2180
+ E("ins[eé]rer", { flags: "i" }),
2011
2181
  Y,
2012
2182
  J
2013
2183
  ], { value: (e, t) => W(t, {
2014
2184
  contextText: "",
2015
2185
  insertCitation: e[6].citation,
2016
- kind: w(e[0])
2017
- }) }), Nr = M([
2186
+ kind: S(e[0])
2187
+ }) }), Vr = k([
2018
2188
  K,
2019
- ne,
2020
- O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2021
- A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
2189
+ te,
2190
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2191
+ w(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
2022
2192
  Y,
2023
2193
  J
2024
2194
  ], { value: (e, t) => {
@@ -2026,62 +2196,62 @@ var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2026
2196
  return W(t, {
2027
2197
  contextText: q(n),
2028
2198
  insertCitation: e[5].citation,
2029
- kind: lr(i),
2199
+ kind: _r(i),
2030
2200
  targetReference: r,
2031
- targetScope: cr(i, r)
2201
+ targetScope: gr(i, r)
2032
2202
  });
2033
- } }), Pr = M([
2203
+ } }), Hr = k([
2034
2204
  K,
2035
- d,
2036
- j,
2037
- Cr,
2038
- O("[\\s\\S]*?(?=ins[eé]rer)"),
2039
- O("ins[eé]rer", { flags: "i" }),
2040
- j,
2041
- xr
2205
+ c,
2206
+ D,
2207
+ jr,
2208
+ E("[\\s\\S]*?(?=ins[eé]rer)"),
2209
+ E("ins[eé]rer", { flags: "i" }),
2210
+ D,
2211
+ kr
2042
2212
  ], { value: (e, t) => W(t, {
2043
2213
  contextText: q(e[0]),
2044
2214
  insertCitation: e[7].citation,
2045
- kind: w(e[1]),
2215
+ kind: S(e[1]),
2046
2216
  targetCitation: e[3].citation,
2047
2217
  targetReference: X(e[0])
2048
- }) }), Fr = M([
2218
+ }) }), Ur = k([
2049
2219
  K,
2050
- d,
2051
- j,
2220
+ c,
2221
+ D,
2052
2222
  G,
2053
- O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2054
- A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
2223
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2224
+ w(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
2055
2225
  Y,
2056
2226
  J
2057
2227
  ], { value: (e, t) => W(t, {
2058
2228
  contextText: q(e[0]),
2059
2229
  insertCitation: e[7].citation,
2060
- kind: w(e[1]),
2230
+ kind: S(e[1]),
2061
2231
  targetReference: X(e[0]) ?? e[3]
2062
- }) }), Ir = A(Nr, Ar, jr, Mr, kr, M([
2232
+ }) }), Wr = w(Vr, Rr, zr, Br, Lr, k([
2063
2233
  K,
2064
- d,
2065
- j,
2066
- Cr,
2067
- O("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2068
- A(M([
2069
- O("supprimer", {
2234
+ c,
2235
+ D,
2236
+ jr,
2237
+ E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2238
+ w(k([
2239
+ E("supprimer", {
2070
2240
  flags: "i",
2071
2241
  value: "delete_portion"
2072
2242
  }),
2073
- j,
2074
- dr
2243
+ D,
2244
+ yr
2075
2245
  ], { value: (e) => ({
2076
2246
  kind: e[0],
2077
2247
  ...e[2]
2078
- }) }), M([
2079
- O("r[eé]diger\\s+ainsi", {
2248
+ }) }), k([
2249
+ E("r[eé]diger\\s+ainsi", {
2080
2250
  flags: "i",
2081
2251
  value: "rewrite_portion"
2082
2252
  }),
2083
- j,
2084
- dr,
2253
+ D,
2254
+ yr,
2085
2255
  Y,
2086
2256
  J
2087
2257
  ], { value: (e) => ({
@@ -2099,24 +2269,24 @@ var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2099
2269
  targetReference: X(e[0]) ?? n.targetReference,
2100
2270
  targetScope: n.targetScope
2101
2271
  });
2102
- } }), Pr, Fr, M([
2103
- ur,
2104
- O("ins[eé]rer", { flags: "i" }),
2105
- O(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
2106
- d,
2272
+ } }), Hr, Ur, k([
2273
+ vr,
2274
+ E("ins[eé]rer", { flags: "i" }),
2275
+ E(`[\\s\\S]*?(?=${u})`, { flags: "i" }),
2276
+ c,
2107
2277
  Y,
2108
- v,
2278
+ f,
2109
2279
  Y,
2110
- v
2280
+ f
2111
2281
  ], { value: (e, t) => W(t, {
2112
2282
  contextText: e[0],
2113
2283
  insertCitation: e[8],
2114
- kind: w(e[3]),
2284
+ kind: S(e[3]),
2115
2285
  targetCitation: e[6]
2116
- }) }), Or, Dr, M([
2286
+ }) }), Ir, Fr, k([
2117
2287
  K,
2118
- O("compl[eé]ter", { flags: "i" }),
2119
- k(M([j, G], { value: (e) => e[1] }), { default: null }),
2288
+ E("compl[eé]ter", { flags: "i" }),
2289
+ T(k([D, G], { value: (e) => e[1] }), { default: null }),
2120
2290
  Y,
2121
2291
  J
2122
2292
  ], { value: (e, t) => W(t, {
@@ -2124,16 +2294,16 @@ var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2124
2294
  insertCitation: e[4].citation,
2125
2295
  kind: "insert_after",
2126
2296
  targetReference: e[2] ?? X(e[0])
2127
- }) }), Tr, Er);
2297
+ }) }), Nr, Pr);
2128
2298
  //#endregion
2129
2299
  //#region src/lib/server/parsed_amendments.ts
2130
- function Lr(e) {
2300
+ function Gr(e) {
2131
2301
  return e.replace(/\s+/gu, " ").trim();
2132
2302
  }
2133
- function Rr(e) {
2134
- return e.split(/\n/gu).map(Lr).filter(Boolean).join("\n");
2303
+ function Kr(e) {
2304
+ return e.split(/\n/gu).map(Gr).filter(Boolean).join("\n");
2135
2305
  }
2136
- function zr(e, t) {
2306
+ function qr(e, t) {
2137
2307
  let { start: n, stop: r } = t;
2138
2308
  for (; n < r && /\s/u.test(e[n]);) n++;
2139
2309
  for (; r > n && /\s/u.test(e[r - 1]);) r--;
@@ -2142,16 +2312,16 @@ function zr(e, t) {
2142
2312
  stop: r
2143
2313
  } : null;
2144
2314
  }
2145
- function Br(e, t) {
2146
- return pe(he(e), t);
2315
+ function Jr(e, t) {
2316
+ return ve(_e(e), t);
2147
2317
  }
2148
- function Vr(e) {
2318
+ function Yr(e) {
2149
2319
  return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
2150
2320
  }
2151
- function Hr(e) {
2321
+ function Xr(e) {
2152
2322
  return {
2153
2323
  articleLabel: e.targetArticleLabel ?? null,
2154
- targetPosition: Vr(e.targetPosition),
2324
+ targetPosition: Yr(e.targetPosition),
2155
2325
  alinea: e.targetAlinea ?? null,
2156
2326
  alineaLabel: e.targetAlineaLabel ?? null,
2157
2327
  subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
@@ -2166,36 +2336,36 @@ function Z(e) {
2166
2336
  sourceText: e.text
2167
2337
  };
2168
2338
  }
2169
- function Ur(e) {
2339
+ function Zr(e) {
2170
2340
  return {
2171
2341
  ...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
2172
2342
  sourcePosition: e.position,
2173
2343
  sourceText: e.text
2174
2344
  };
2175
2345
  }
2176
- function Wr(e) {
2346
+ function Qr(e) {
2177
2347
  return {
2178
2348
  ...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
2179
2349
  ...e === null ? {} : { dispositifPosition: e.position },
2180
2350
  dispositifText: e?.text ?? null
2181
2351
  };
2182
2352
  }
2183
- function Gr(e, t, n, r = Rr(e.slice(n.start, n.stop))) {
2353
+ function $r(e, t, n, r = Kr(e.slice(n.start, n.stop))) {
2184
2354
  return {
2185
- originalTransformation: Br(t, n),
2355
+ originalTransformation: Jr(t, n),
2186
2356
  position: n,
2187
2357
  text: r
2188
2358
  };
2189
2359
  }
2190
- function Kr(e) {
2360
+ function ei(e) {
2191
2361
  let t = e.dispositifHtml ?? e.dispositifText;
2192
2362
  if (!t) return null;
2193
- let n = e.dispositifHtml ? ve()(t) : fe(t), r = n.output, i = zr(r, {
2363
+ let n = e.dispositifHtml ? ge()(t) : O(t), r = n.output, i = qr(r, {
2194
2364
  start: 0,
2195
2365
  stop: r.length
2196
2366
  });
2197
2367
  return {
2198
- dispositif: i === null ? null : Gr(r, n, i),
2368
+ dispositif: i === null ? null : $r(r, n, i),
2199
2369
  simplifiedText: r,
2200
2370
  transformation: n
2201
2371
  };
@@ -2212,10 +2382,10 @@ function Q(e) {
2212
2382
  return t === void 0 ? [] : Array.from({ length: e.count }, (e, n) => t + n);
2213
2383
  }
2214
2384
  if (e.type === "exclusion") return Q(e.left);
2215
- for (let t of r(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2385
+ for (let t of a(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2216
2386
  return [];
2217
2387
  }
2218
- function qr(e, t) {
2388
+ function ti(e, t) {
2219
2389
  let n = Q(t);
2220
2390
  return {
2221
2391
  ...e,
@@ -2223,11 +2393,11 @@ function qr(e, t) {
2223
2393
  ...n.length > 0 ? { alineas: n } : {}
2224
2394
  };
2225
2395
  }
2226
- function Jr(e) {
2396
+ function ni(e) {
2227
2397
  return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
2228
2398
  }
2229
- function Yr(e, t) {
2230
- let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Jr(t.text));
2399
+ function ri(e, t) {
2400
+ let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(ni(t.text));
2231
2401
  if (!n) return null;
2232
2402
  let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
2233
2403
  return !Number.isFinite(r) || r < 1 ? null : {
@@ -2236,25 +2406,25 @@ function Yr(e, t) {
2236
2406
  alineas: [r]
2237
2407
  };
2238
2408
  }
2239
- function Xr(e, t) {
2409
+ function ii(e, t) {
2240
2410
  if (e) return e.unit === "article" && t.alinea !== null ? {
2241
2411
  ...e,
2242
2412
  unit: "alinéa"
2243
2413
  } : e;
2244
2414
  }
2245
- function Zr(e) {
2246
- return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Jr(e.text));
2415
+ function ai(e) {
2416
+ return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(ni(e.text));
2247
2417
  }
2248
- function Qr(e, t, n, r) {
2249
- return Gr(e, t, {
2418
+ function oi(e, t, n, r) {
2419
+ return $r(e, t, {
2250
2420
  start: n.position.start,
2251
2421
  stop: r.position.stop
2252
2422
  });
2253
2423
  }
2254
- function $r(e) {
2424
+ function si(e) {
2255
2425
  return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
2256
2426
  }
2257
- function ei(e, t) {
2427
+ function ci(e, t) {
2258
2428
  let n = { ...t.position };
2259
2429
  function r(t) {
2260
2430
  let r = t.exec(e.slice(n.start, n.stop));
@@ -2263,29 +2433,29 @@ function ei(e, t) {
2263
2433
  stop: n.stop
2264
2434
  });
2265
2435
  }
2266
- return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), zr(e, n);
2436
+ return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), qr(e, n);
2267
2437
  }
2268
- function ti(e) {
2269
- return g(e);
2438
+ function li(e) {
2439
+ return p(e);
2270
2440
  }
2271
- function ni(e, t) {
2272
- return Ir(new D(e.slice(0, t.stop), t.start)) ?? null;
2441
+ function ui(e, t) {
2442
+ return Wr(new A(e.slice(0, t.stop), t.start)) ?? null;
2273
2443
  }
2274
- function $(t, n, r) {
2275
- if (r) return Gr(t, n, r.position, Rr(e(t, r)));
2444
+ function $(e, t, n) {
2445
+ if (n) return $r(e, t, n.position, Kr(ue(e, n)));
2276
2446
  }
2277
- function ri(e, t) {
2447
+ function di(e, t) {
2278
2448
  if (!e) return;
2279
2449
  let n = structuredClone(e);
2280
- for (let e of _(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Br(t, e.position));
2450
+ for (let e of g(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Jr(t, e.position));
2281
2451
  return n;
2282
2452
  }
2283
- function ii(e, t, n, r) {
2284
- let i = ei(e, n);
2453
+ function fi(e, t, n, r) {
2454
+ let i = ci(e, n);
2285
2455
  if (!i) return null;
2286
- let a = ni(e, i);
2456
+ let a = ui(e, i);
2287
2457
  if (!a) return null;
2288
- let o = Gr(e, t, i), s = ri(a.targetReference, t), c = qr(r, s), l = ti(o.text);
2458
+ let o = $r(e, t, i), s = di(a.targetReference, t), c = ti(r, s), l = li(o.text);
2289
2459
  if (a.kind === "delete_article") return {
2290
2460
  kind: "delete_article",
2291
2461
  ...Z(o),
@@ -2303,7 +2473,7 @@ function ii(e, t, n, r) {
2303
2473
  },
2304
2474
  targetOccurrence: l,
2305
2475
  targetReference: s,
2306
- targetScope: Xr(a.targetScope, c)
2476
+ targetScope: ii(a.targetScope, c)
2307
2477
  };
2308
2478
  }
2309
2479
  if (a.kind === "rewrite_portion") {
@@ -2320,7 +2490,7 @@ function ii(e, t, n, r) {
2320
2490
  },
2321
2491
  targetOccurrence: l,
2322
2492
  targetReference: s,
2323
- targetScope: Xr(a.targetScope, c),
2493
+ targetScope: ii(a.targetScope, c),
2324
2494
  replacementCitation: n,
2325
2495
  replacementText: n.text
2326
2496
  };
@@ -2375,19 +2545,19 @@ function ii(e, t, n, r) {
2375
2545
  targetReference: s,
2376
2546
  insertCitation: n,
2377
2547
  insertText: n.text,
2378
- targetScope: Xr(a.targetScope, c)
2548
+ targetScope: ii(a.targetScope, c)
2379
2549
  };
2380
2550
  }
2381
2551
  return null;
2382
2552
  }
2383
- function ai(e, t) {
2553
+ function pi(e, t) {
2384
2554
  let n = [], r = 0, i = 0;
2385
2555
  function a(r) {
2386
- let a = zr(e, {
2556
+ let a = qr(e, {
2387
2557
  start: i,
2388
2558
  stop: r
2389
2559
  });
2390
- a !== null && n.push(Gr(e, t, a));
2560
+ a !== null && n.push($r(e, t, a));
2391
2561
  }
2392
2562
  function o(t) {
2393
2563
  let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
@@ -2405,7 +2575,7 @@ function ai(e, t) {
2405
2575
  continue;
2406
2576
  }
2407
2577
  if (r > 0) continue;
2408
- let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && Zr({
2578
+ let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && ai({
2409
2579
  originalTransformation: void 0,
2410
2580
  position: {
2411
2581
  start: i,
@@ -2417,8 +2587,8 @@ function ai(e, t) {
2417
2587
  }
2418
2588
  return a(e.length), n;
2419
2589
  }
2420
- function oi(e) {
2421
- let t = Kr(e), n = t?.dispositif ?? null, r = Wr(n), i = [], a = [], o = Hr(e);
2590
+ function mi(e) {
2591
+ let t = ei(e), n = t?.dispositif ?? null, r = Qr(n), i = [], a = [], o = Xr(e);
2422
2592
  if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
2423
2593
  code: "unsupported_sub_amendment",
2424
2594
  message: "Les sous-amendements ne sont pas encore projetés."
@@ -2436,9 +2606,9 @@ function oi(e) {
2436
2606
  });
2437
2607
  else {
2438
2608
  let { simplifiedText: e, transformation: r } = t, s = o, c = null;
2439
- for (let t of ai(e, r)) {
2440
- $r(t) && (s = o, c = null);
2441
- let n = c ? Qr(e, r, c, t) : t, i = ii(e, r, n, s);
2609
+ for (let t of pi(e, r)) {
2610
+ si(t) && (s = o, c = null);
2611
+ let n = c ? oi(e, r, c, t) : t, i = fi(e, r, n, s);
2442
2612
  if (i) {
2443
2613
  a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
2444
2614
  continue;
@@ -2447,12 +2617,12 @@ function oi(e) {
2447
2617
  c = n;
2448
2618
  continue;
2449
2619
  }
2450
- let l = Yr(o, t);
2620
+ let l = ri(o, t);
2451
2621
  if (l !== null) {
2452
2622
  s = l;
2453
2623
  continue;
2454
2624
  }
2455
- Zr(t) && (c = t);
2625
+ ai(t) && (c = t);
2456
2626
  }
2457
2627
  a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
2458
2628
  kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
@@ -2463,7 +2633,7 @@ function oi(e) {
2463
2633
  }), a.length === 0 && i.push({
2464
2634
  code: "unrecognized_dispositif",
2465
2635
  message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
2466
- ...Ur(n)
2636
+ ...Zr(n)
2467
2637
  });
2468
2638
  }
2469
2639
  return {
@@ -2477,25 +2647,25 @@ function oi(e) {
2477
2647
  }
2478
2648
  //#endregion
2479
2649
  //#region src/lib/server/senat_document_search.ts
2480
- function si(e) {
2650
+ function hi(e) {
2481
2651
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
2482
2652
  }
2483
- function ci(e) {
2484
- let t = T(e);
2653
+ function gi(e) {
2654
+ let t = C(e);
2485
2655
  if (!t) return {
2486
2656
  articleNumber: null,
2487
2657
  label: e,
2488
2658
  title: null
2489
2659
  };
2490
- let n = si(t.num ?? "") || null, r = si(t.title ?? "") || null;
2660
+ let n = hi(t.num ?? "") || null, r = hi(t.title ?? "") || null;
2491
2661
  return {
2492
2662
  articleNumber: n,
2493
2663
  label: t.label,
2494
2664
  title: r
2495
2665
  };
2496
2666
  }
2497
- function li(e) {
2498
- let t = E(e), n = [], r = si(t("section.akn-preamble").text());
2667
+ function _i(e) {
2668
+ let t = b(e), n = [], r = hi(t("section.akn-preamble").text());
2499
2669
  return r && n.push({
2500
2670
  anchor: "senat-expose-des-motifs",
2501
2671
  articleNumber: null,
@@ -2505,9 +2675,9 @@ function li(e) {
2505
2675
  label: "Exposé des motifs",
2506
2676
  title: null
2507
2677
  }), t("article.akn-article").each((e, r) => {
2508
- let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = si(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = ci(o || s), l = i.clone();
2678
+ let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = hi(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = gi(o || s), l = i.clone();
2509
2679
  l.children("p.TCNumArticle").remove();
2510
- let u = si(l.text());
2680
+ let u = hi(l.text());
2511
2681
  u && n.push({
2512
2682
  anchor: i.attr("id") || null,
2513
2683
  articleNumber: c.articleNumber,
@@ -2519,40 +2689,40 @@ function li(e) {
2519
2689
  });
2520
2690
  }), n;
2521
2691
  }
2522
- function ui(e, t) {
2523
- return Ee("sha256").update(JSON.stringify({
2692
+ function vi(e, t) {
2693
+ return Oe("sha256").update(JSON.stringify({
2524
2694
  item: e,
2525
2695
  metadata: t
2526
2696
  })).digest("hex");
2527
2697
  }
2528
2698
  //#endregion
2529
2699
  //#region src/lib/server/senat_document_sources.ts
2530
- var di = new Set(["senat.fr", "www.senat.fr"]), fi = "https://www.senat.fr";
2531
- function pi(e) {
2700
+ var yi = new Set(["senat.fr", "www.senat.fr"]), bi = "https://www.senat.fr";
2701
+ function xi(e) {
2532
2702
  return e?.trim() || void 0;
2533
2703
  }
2534
- function mi(e) {
2704
+ function Si(e) {
2535
2705
  try {
2536
- let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, fi);
2537
- return di.has(n.hostname.toLowerCase()) ? n : void 0;
2706
+ let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, bi);
2707
+ return yi.has(n.hostname.toLowerCase()) ? n : void 0;
2538
2708
  } catch {
2539
2709
  return;
2540
2710
  }
2541
2711
  }
2542
- function hi(e) {
2543
- let t = pi(e);
2712
+ function Ci(e) {
2713
+ let t = xi(e);
2544
2714
  if (t === void 0) return {
2545
2715
  publicUrl: null,
2546
2716
  status: "no_url"
2547
2717
  };
2548
- let n = mi(t);
2718
+ let n = Si(t);
2549
2719
  if (n === void 0) return {
2550
2720
  publicUrl: t,
2551
2721
  status: "unsupported_source"
2552
2722
  };
2553
2723
  let r = n.pathname;
2554
2724
  if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
2555
- akomaNtosoUrl: `${fi}${r}`,
2725
+ akomaNtosoUrl: `${bi}${r}`,
2556
2726
  publicUrl: n.toString(),
2557
2727
  status: "available"
2558
2728
  };
@@ -2561,17 +2731,17 @@ function hi(e) {
2561
2731
  publicUrl: n.toString(),
2562
2732
  status: "unsupported_source"
2563
2733
  } : {
2564
- akomaNtosoUrl: `${fi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2734
+ akomaNtosoUrl: `${bi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2565
2735
  publicUrl: n.toString(),
2566
2736
  status: "available"
2567
2737
  };
2568
2738
  }
2569
- function gi(e) {
2739
+ function wi(e) {
2570
2740
  return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
2571
2741
  }
2572
2742
  //#endregion
2573
2743
  //#region src/lib/alineas/alineas_numbers.ts
2574
- var _i = {
2744
+ var Ti = {
2575
2745
  "0150a855548f15a2af52ea057be53f5d": 1,
2576
2746
  "039826cf379b94afefe90b25c6045ca0": 1,
2577
2747
  "03a7e564b84662f4d957c51018e26244": 1,
@@ -21545,7 +21715,7 @@ var _i = {
21545
21715
  d16d29c923bd60c7b095b66c6058fe60: 1664,
21546
21716
  "1c14c2adf5cfda3220b2057160e10e91": 1665,
21547
21717
  e44c55ca1ac46ff46420686a466c9fc6: 1665
21548
- }, vi = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", yi = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", bi = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", xi = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", Si = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", Ci = {
21718
+ }, Ei = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", Di = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", Oi = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", ki = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", Ai = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", ji = {
21549
21719
  assnatetatagr: { bold: !0 },
21550
21720
  assnatetatagrgr: { bold: !0 },
21551
21721
  assnatetatatr: { bold: !0 },
@@ -21646,29 +21816,29 @@ var _i = {
21646
21816
  assnatxl67: { align: "center" },
21647
21817
  assnatenteteequilibre: { align: "center" }
21648
21818
  };
21649
- function wi(e) {
21650
- let t = Object.keys(Ci).sort((e, t) => t.length - e.length);
21651
- for (let n of t) if (e.includes(n)) return Ci[n];
21819
+ function Mi(e) {
21820
+ let t = Object.keys(ji).sort((e, t) => t.length - e.length);
21821
+ for (let n of t) if (e.includes(n)) return ji[n];
21652
21822
  return null;
21653
21823
  }
21654
- function Ti(e) {
21655
- return Te.createHash("md5").update(e).digest("hex");
21824
+ function Ni(e) {
21825
+ return De.createHash("md5").update(e).digest("hex");
21656
21826
  }
21657
- function Ei(e) {
21827
+ function Pi(e) {
21658
21828
  return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
21659
21829
  }
21660
- function Di(e) {
21830
+ function Fi(e) {
21661
21831
  return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
21662
21832
  }
21663
- function Oi(e) {
21833
+ function Ii(e) {
21664
21834
  if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
21665
21835
  let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
21666
21836
  return !(t && parseFloat(t[1]) < 8);
21667
21837
  }
21668
- function ki(e) {
21838
+ function Li(e) {
21669
21839
  return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
21670
21840
  }
21671
- function Ai(e) {
21841
+ function Ri(e) {
21672
21842
  if (!e) return;
21673
21843
  let t = [
21674
21844
  "width",
@@ -21703,15 +21873,15 @@ function Ai(e) {
21703
21873
  }
21704
21874
  return n.length > 0 ? n.join("; ") : void 0;
21705
21875
  }
21706
- function ji(e, t) {
21876
+ function zi(e, t) {
21707
21877
  return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
21708
21878
  }
21709
- function Mi(e) {
21879
+ function Bi(e) {
21710
21880
  if (!e) return null;
21711
21881
  let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
21712
21882
  return t ? t[1].toLowerCase() : null;
21713
21883
  }
21714
- function Ni(e) {
21884
+ function Vi(e) {
21715
21885
  if (!e) return null;
21716
21886
  for (let [t, n] of [
21717
21887
  [/assnat1Tome|assnatAN1PARTIE/i, 1],
@@ -21723,8 +21893,8 @@ function Ni(e) {
21723
21893
  ]) if (t.test(e)) return n;
21724
21894
  return null;
21725
21895
  }
21726
- function Pi(e, t = {}) {
21727
- let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = E(e, { xml: { decodeEntities: !1 } });
21896
+ function Hi(e, t = {}) {
21897
+ let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = b(e, { xml: { decodeEntities: !1 } });
21728
21898
  a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
21729
21899
  let n = a(t).closest("table");
21730
21900
  n.length > 0 && n.remove();
@@ -21749,7 +21919,7 @@ function Pi(e, t = {}) {
21749
21919
  if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
21750
21920
  let e = i.attr();
21751
21921
  if (e && (e.width === "45" && (e.height === "31" || e.height === "30") || parseInt(e.width || "0", 10) < 50 && parseInt(e.height || "0", 10) < 50) && r.includes("position:absolute")) {
21752
- let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Ti(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21922
+ let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Ni(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21753
21923
  n.replaceWith(`<span class="alinea"${i}></span>`);
21754
21924
  return;
21755
21925
  }
@@ -21768,7 +21938,7 @@ function Pi(e, t = {}) {
21768
21938
  (!r || r === "\xA0") && n.remove();
21769
21939
  }), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
21770
21940
  function o(e) {
21771
- let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Ei(n) || r === "b" || r === "strong", o = Di(n) || r === "i" || r === "em", s = Oi(n) || r === "sup", c = ki(n) || r === "sub", l = t.attr("class") || "";
21941
+ let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Pi(n) || r === "b" || r === "strong", o = Fi(n) || r === "i" || r === "em", s = Ii(n) || r === "sup", c = Li(n) || r === "sub", l = t.attr("class") || "";
21772
21942
  return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
21773
21943
  bold: i,
21774
21944
  italic: o,
@@ -21802,7 +21972,7 @@ function Pi(e, t = {}) {
21802
21972
  c = e;
21803
21973
  }
21804
21974
  for (a("p").each((e, t) => {
21805
- let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Ni(i);
21975
+ let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Vi(i);
21806
21976
  if (i.includes("assnatFARCouvTitreD")) {
21807
21977
  let e = r.html() || "";
21808
21978
  r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
@@ -21835,11 +22005,11 @@ function Pi(e, t = {}) {
21835
22005
  let c = r.text().trim().startsWith("«");
21836
22006
  if (s && !c) {
21837
22007
  let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
21838
- n && ji(o, i) && e.attr("align", "center"), r.replaceWith(e);
22008
+ n && zi(o, i) && e.attr("align", "center"), r.replaceWith(e);
21839
22009
  } else {
21840
- let e = wi(i), t;
22010
+ let e = Mi(i), t;
21841
22011
  if (n) {
21842
- let n = Mi(o);
22012
+ let n = Bi(o);
21843
22013
  n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
21844
22014
  }
21845
22015
  if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
@@ -21849,7 +22019,7 @@ function Pi(e, t = {}) {
21849
22019
  }
21850
22020
  }), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
21851
22021
  let r = a(t), i = r.attr("style"), o = r.attr("class");
21852
- n && ji(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
22022
+ n && zi(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21853
22023
  }), a("a").each((e, t) => {
21854
22024
  let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
21855
22025
  for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
@@ -21888,7 +22058,7 @@ function Pi(e, t = {}) {
21888
22058
  }), a("br").each((e, t) => {
21889
22059
  a(t).removeAttr("style").removeAttr("class");
21890
22060
  }), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
21891
- let n = a(t), r = Ai(n.attr("style"));
22061
+ let n = a(t), r = Ri(n.attr("style"));
21892
22062
  n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
21893
22063
  }), a("td, th").each((e, t) => {
21894
22064
  let n = a(t), r = n.children();
@@ -21906,17 +22076,17 @@ function Pi(e, t = {}) {
21906
22076
  !isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
21907
22077
  }
21908
22078
  }), a("li").each((e, t) => {
21909
- let n = a(t), r = Mi(n.attr("style"));
22079
+ let n = a(t), r = Bi(n.attr("style"));
21910
22080
  n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
21911
22081
  let i = n.html() || "", o = i.replace(/^(\s|&#xa0;|&#160;|\u00a0)+/, "");
21912
22082
  o !== i && n.html(o);
21913
- }), Fi(a), Ii(a, i);
22083
+ }), Ui(a), Wi(a, i);
21914
22084
  let l = a("body").html() || a.html(), u = l.includes("class=\"alinea"), d = a("ol").length > 0, f = a("h1, h2, h3, h4, h5, h6").length > 0, p = l.includes("class=\"expose-motifs"), m = l.includes("class=\"cover-title\"") || l.includes("class=\"cover-subtitle\"") || l.includes("class=\"cover-info\"") || l.includes("class=\"cover-year\""), h = "";
21915
- m && (h += Si), f && (h += yi), p && (h += bi), u && (h += vi), d && (h += xi);
22085
+ m && (h += Ai), f && (h += Di), p && (h += Oi), u && (h += Ei), d && (h += ki);
21916
22086
  let g = h ? `<style>${h}</style>\n${l}` : l;
21917
- return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/&nbsp;/g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Li(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>(&nbsp;|&#xa0;|&#160;|\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
22087
+ return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/&nbsp;/g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Gi(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>(&nbsp;|&#xa0;|&#160;|\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
21918
22088
  }
21919
- function Fi(e) {
22089
+ function Ui(e) {
21920
22090
  e("span[id]").each((t, n) => {
21921
22091
  let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
21922
22092
  if (o.length !== 1 || o[0] !== "id") return;
@@ -21939,13 +22109,13 @@ function Fi(e) {
21939
22109
  l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
21940
22110
  });
21941
22111
  }
21942
- function Ii(e, t = !1) {
22112
+ function Wi(e, t = !1) {
21943
22113
  let n = e("body");
21944
22114
  if (n.length === 0) return;
21945
22115
  let r = n.find("span.alinea[data-image-hash]"), i = -1;
21946
22116
  r.each((n, r) => {
21947
22117
  let a = e(r), o = a.attr("data-image-hash"), s;
21948
- if (o && _i[o] !== void 0 && (s = _i[o]), s === void 0) {
22118
+ if (o && Ti[o] !== void 0 && (s = Ti[o]), s === void 0) {
21949
22119
  if (t) throw Error(`Missing alinea number mapping for image hash: "${o}". Please extract images, review them, and update the mapping in "src/lib/alineas/alineas_numbers.ts".`);
21950
22120
  a.remove();
21951
22121
  return;
@@ -21957,11 +22127,11 @@ function Ii(e, t = !1) {
21957
22127
  i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
21958
22128
  });
21959
22129
  }
21960
- function Li(e) {
22130
+ function Gi(e) {
21961
22131
  let t = e;
21962
22132
  return t = t.replace(/<\/strong>(\s*)<strong>/gi, "$1"), t = t.replace(/<\/em>(\s*)<em>/gi, "$1"), t = t.replace(/<\/sup>(\s*)<sup>/gi, "$1"), t = t.replace(/<\/sub>(\s*)<sub>/gi, "$1"), t;
21963
22133
  }
21964
- function Ri(e, t = {}) {
22134
+ function Ki(e, t = {}) {
21965
22135
  return `<!DOCTYPE html>
21966
22136
  <html lang="fr">
21967
22137
  <head>
@@ -21969,33 +22139,33 @@ function Ri(e, t = {}) {
21969
22139
  <title>Document simplifié</title>
21970
22140
  </head>
21971
22141
  <body>
21972
- ${Pi(e, t)}
22142
+ ${Hi(e, t)}
21973
22143
  </body>
21974
22144
  </html>`;
21975
22145
  }
21976
22146
  //#endregion
21977
22147
  //#region src/lib/server/text_parsers/transformers.ts
21978
- function zi(e, t) {
22148
+ function qi(e, t) {
21979
22149
  let n = "transformation_", r = {};
21980
- for (let e of N.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
22150
+ for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21981
22151
  let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
21982
22152
  for (let e of a.slice(1)) {
21983
22153
  let t = o.transformations ??= [];
21984
22154
  for (; e >= t.length;) t.push({});
21985
22155
  o = t[e];
21986
22156
  }
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" });
22157
+ o.output = j.readFileSync(ke.join(t, `${n}${i}.html`), { encoding: "utf-8" });
22158
+ let { sourceMap: s, title: c } = j.readJsonSync(ke.join(t, e), { encoding: "utf-8" });
21989
22159
  o.sourceMap = s ?? [], o.title = c;
21990
22160
  }
21991
- return Bi(r, e), r;
22161
+ return Ji(r, e), r;
21992
22162
  }
21993
- function Bi(e, t) {
21994
- if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Bi(n, t), t = n.output;
22163
+ function Ji(e, t) {
22164
+ if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Ji(n, t), t = n.output;
21995
22165
  return t;
21996
22166
  }
21997
- function Vi(e, t, n = "1") {
21998
- if (N.ensureDirSync(t), e.transformations === void 0) N.writeJsonSync(De.join(t, `transformation_${n}.json`), {
22167
+ function Yi(e, t, n = "1") {
22168
+ if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(ke.join(t, `transformation_${n}.json`), {
21999
22169
  sourceMap: e.sourceMap,
22000
22170
  title: e.title
22001
22171
  }, {
@@ -22003,24 +22173,24 @@ function Vi(e, t, n = "1") {
22003
22173
  spaces: 2
22004
22174
  });
22005
22175
  else {
22006
- N.writeJsonSync(De.join(t, `transformation_${n}.json`), { title: e.title }, {
22176
+ j.writeJsonSync(ke.join(t, `transformation_${n}.json`), { title: e.title }, {
22007
22177
  encoding: "utf-8",
22008
22178
  spaces: 2
22009
22179
  });
22010
- for (let [r, i] of e.transformations.entries()) Vi(i, t, `${n}.${r + 1}`);
22180
+ for (let [r, i] of e.transformations.entries()) Yi(i, t, `${n}.${r + 1}`);
22011
22181
  }
22012
- e.output !== void 0 && N.writeFileSync(De.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
22182
+ e.output !== void 0 && j.writeFileSync(ke.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
22013
22183
  }
22014
22184
  //#endregion
22015
22185
  //#region src/lib/server/linkers/html.ts
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 }) {
22017
- let _ = t ?? (e === void 0 ? void 0 : new ae(e));
22186
+ async function Xi({ 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 }) {
22187
+ let _ = t ?? (e === void 0 ? void 0 : new se(e));
22018
22188
  if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
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);
22189
+ let v = await j.readFile(i, { encoding: "utf-8" }), y;
22190
+ a === void 0 ? (y = ge({ removeAWithHref: !0 })(v), o !== void 0 && Yi(y, o)) : y = qi(v, a);
22021
22191
  let b = [];
22022
22192
  s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
22023
- let { outputByType: x, referredLegifranceTextCountByCid: ee } = await se({
22193
+ let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
22024
22194
  legiResolver: _,
22025
22195
  date: n,
22026
22196
  defaultTextId: r,
@@ -22037,38 +22207,38 @@ async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
22037
22207
  s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
22038
22208
  for (let [e, t] of Object.entries(x)) {
22039
22209
  let n = S[e];
22040
- n !== void 0 && await N.writeFile(n, t.html, { encoding: "utf-8" });
22210
+ n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
22041
22211
  }
22042
- x.links !== void 0 && l !== void 0 && Vi(ve()(x.links.html), l), g !== void 0 && await N.writeJson(g, ee, {
22212
+ x.links !== void 0 && l !== void 0 && Yi(ge()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
22043
22213
  encoding: "utf-8",
22044
22214
  spaces: 2
22045
22215
  });
22046
22216
  }
22047
22217
  //#endregion
22048
22218
  //#region src/lib/server/tables_of_contents.ts
22049
- async function Ui(e, t, n, r) {
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({
22219
+ async function Zi(e, t, n, r) {
22220
+ let i = qi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new A(a), s = await j.readJson(n, { encoding: "utf-8" });
22221
+ for await (let e of ce({
22052
22222
  context: o,
22053
22223
  tableOfContents: s,
22054
22224
  transformation: i
22055
22225
  }));
22056
- await N.writeJson(r, s, {
22226
+ await j.writeJson(r, s, {
22057
22227
  encoding: "utf-8",
22058
22228
  spaces: 2
22059
22229
  });
22060
22230
  }
22061
- async function Wi(e, t, n) {
22062
- let r = zi(await N.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
22063
- await N.writeJson(n, i, {
22231
+ async function Qi(e, t, n) {
22232
+ let r = qi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
22233
+ await j.writeJson(n, i, {
22064
22234
  encoding: "utf-8",
22065
22235
  spaces: 2
22066
22236
  });
22067
22237
  }
22068
22238
  //#endregion
22069
22239
  //#region src/lib/server/legi/resolvers.ts
22070
- function Gi({ canutesDb: e }) {
22071
- return new ae(e);
22240
+ function $i({ canutesDb: e }) {
22241
+ return new se(e);
22072
22242
  }
22073
22243
  //#endregion
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 };
22244
+ export { we as LegiResolver, Xi as addLinksOrReferencesToHtmlFile, Zi as addPositionsToTableOfContentsFile, Se as buildAndInstallTextTitlesInfos, Ce as buildTextTitlesInfos, $i as createLegiResolver, Ne as extractAssembleeAmendmentSearchItems, lr as extractAssembleeExposesDesMotifs, mr as extractSenatAmendmentSearchItems, Pe as hashAssembleeAmendmentSearchItem, dr as hashAssembleeSearchItem, hr as hashSenatAmendmentSearchItem, vi as hashSenatSearchItem, wi as isAkomaNtosoXml, fr as isoDateFromAssembleeDocument, ar as linkAkomaNtosoBillRaw, pn as linkAssembleeBillRaw, ir as parseAkomaNtosoBillRaw, mi as parseAmendment, fn as parseAssembleeBillRaw, ur as parseAssembleeDocumentSearchContent, _i as parseSenatDocumentSearchContent, qi as readTransformation, er as renderAkomaNtosoBillRaw, Ci as resolveSenatAkomaNtosoSource, Qi as simplifiedHtmlBillFileToTableOfContentsFile, Hi as simplifyWordHtml, Ki as simplifyWordHtmlToDocument, Yi as writeTransformation };