@tricoteuses/tisseuse 0.16.1 → 0.17.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.
package/dist/server.js CHANGED
@@ -1,11 +1,11 @@
1
- import { A as e, B as t, C as n, Ct as r, D as i, E as a, Et as o, F as s, It as c, J as l, Lt as u, O as d, Q as f, R as p, S as m, T as h, Tt as g, Z as _, b as v, c as y, g as b, h as x, it as ee, j as S, jt as te, k as C, kt as ne, m as re, mt as ie, n as ae, nt as oe, ot as w, p as se, s as ce, t as le, u as ue, v as de, wt as fe, x as pe, yt as me } from "./html-BTeBbxJE.js";
2
- import { $ as he, Dt as T, Et as E, F as ge, I as _e, N as ve, Nt as D, O as ye, Tt as O, ct as be, et as xe, ht as Se, jt as k, k as Ce, kt as we, n as Te, o as Ee, r as De, st as Oe, t as ke, vt as A } from "./resolver-CuP8arVX.js";
3
- import * as Ae from "node:crypto";
4
- import { createHash as je } from "node:crypto";
5
- import j from "fs-extra";
6
- import M from "node:path";
1
+ import { $ as e, A as t, C as n, D as r, Dt as i, E as a, Et as o, I as s, M as c, O as l, Ot as u, Q as d, Rt as f, S as p, Tt as m, V as h, Y as g, b as _, c as v, ct as y, g as b, h as x, j as S, jt as C, k as ee, m as te, n as ne, ot as re, p as ie, rt as ae, s as oe, t as se, u as ce, v as le, w as ue, x as de, xt as fe, z as pe, zt as me } from "./html-UaTiLfCR.js";
2
+ import { Dt as w, Et as T, F as he, I as ge, N as _e, Nt as E, O as ve, Tt as D, ct as ye, et as be, ht as xe, jt as O, k as Se, kt as Ce, n as we, o as Te, r as Ee, t as De, vt as k } from "./resolver-CuP8arVX.js";
3
+ import * as Oe from "node:crypto";
4
+ import { createHash as ke } from "node:crypto";
5
+ import A from "fs-extra";
6
+ import Ae from "node:path";
7
7
  //#region src/lib/server/assemblee_amendment_search.ts
8
- function Me(e, t) {
8
+ function je(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 Me(e, t) {
13
13
  }
14
14
  return typeof n == "string" && n.trim() ? n.trim() : null;
15
15
  }
16
- function Ne(e) {
16
+ function Me(e) {
17
17
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
18
18
  }
19
- function Pe(e) {
20
- return Ne(w(e).text());
19
+ function Ne(e) {
20
+ return Me(y(e).text());
21
21
  }
22
- function Fe(e) {
23
- let t = Ne([
24
- Me(e, [
22
+ function Pe(e) {
23
+ let t = Me([
24
+ je(e, [
25
25
  "corps",
26
26
  "contenuAuteur",
27
27
  "dispositif"
28
28
  ]),
29
- Me(e, [
29
+ je(e, [
30
30
  "corps",
31
31
  "contenuAuteur",
32
32
  "dispositifAmdtCreditPLF"
33
33
  ]),
34
- Me(e, [
34
+ je(e, [
35
35
  "corps",
36
36
  "contenuAuteur",
37
37
  "dispositifAmdtCreditPLFR"
38
38
  ])
39
- ].filter((e) => e !== null).map((e) => Pe(e)).join("\n")), n = Me(e, [
39
+ ].filter((e) => e !== null).map((e) => Ne(e)).join("\n")), n = je(e, [
40
40
  "corps",
41
41
  "contenuAuteur",
42
42
  "exposeSommaire"
43
- ]), r = n === null ? "" : Pe(n);
43
+ ]), r = n === null ? "" : Ne(n);
44
44
  return [...t ? [{
45
45
  content: t,
46
46
  itemKind: "dispositif",
@@ -51,24 +51,24 @@ function Fe(e) {
51
51
  label: "Exposé sommaire"
52
52
  }] : []];
53
53
  }
54
- function Ie(e, t) {
55
- return je("sha256").update(JSON.stringify({
54
+ function Fe(e, t) {
55
+ return ke("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 N(e) {
62
+ function j(e) {
63
63
  switch (e.type) {
64
- case "reference_et_action": return N(e.reference);
65
- case "enumeration": return [...N(e.left), ...N(e.right)];
64
+ case "reference_et_action": return j(e.reference);
65
+ case "enumeration": return [...j(e.left), ...j(e.right)];
66
66
  case "parent-enfant": {
67
- let t = [...c(e.parent)].filter((e) => e.type === "article");
67
+ let t = [...f(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 ? [] : N(e.child).map((t) => ({
71
+ }] : t.length > 1 ? [] : j(e.child).map((t) => ({
72
72
  article: t.article,
73
73
  reference: {
74
74
  ...e,
@@ -88,36 +88,12 @@ function N(e) {
88
88
  }
89
89
  }
90
90
  //#endregion
91
- //#region src/lib/text_parsers/table_row_targets.ts
92
- var Le = we("lignes du tableau constituant", T([
93
- D("les ", { flags: "i" }),
94
- Oe,
95
- D(" et ", { flags: "i" }),
96
- Oe,
97
- D(" lignes du tableau constituant le ", { flags: "i" }),
98
- te,
99
- he,
100
- ie
101
- ], { value: (e, t) => {
102
- let n = e[1], r = e[3], i = e[5];
103
- if (!(i.type !== "alinéa" || i.index === void 0 || n < 1 || r !== n + 1)) return {
104
- article: e[7],
105
- alineaIndex: i.index,
106
- rowIndex: n,
107
- rowEndIndex: r,
108
- position: t.position()
109
- };
110
- } }));
111
- function Re(e) {
112
- return [...Le.extract(new O(e), { overlapWindow: 50 })];
113
- }
114
- //#endregion
115
91
  //#region src/lib/extractors/article_action_effects.ts
116
- function ze(e, t) {
92
+ function Ie(e, t) {
117
93
  if (t < 2) return null;
118
- let n = Ce(e), r = b(e);
94
+ let n = Se(e), r = b(e);
119
95
  if (r.length !== t) return null;
120
- let i = s(new O(n.output)), a = (e) => _e(n, [e])[0].position;
96
+ let i = s(new D(n.output)), a = (e) => ge(n, [e])[0].position;
121
97
  return r.map((t, n) => ({
122
98
  sourceText: e,
123
99
  referencePosition: a({
@@ -127,20 +103,20 @@ function ze(e, t) {
127
103
  actionPosition: a(t.position)
128
104
  }));
129
105
  }
130
- function Be(e, t, n) {
106
+ function Le(e, t, n) {
131
107
  if (t.length < 2) return null;
132
- let r = Ce(e), i = r.output, a = (e) => _e(r, [e])[0].position, o = s(new O(i)), c = o.flatMap(N);
108
+ let r = Se(e), i = r.output, a = (e) => ge(r, [e])[0].position, o = s(new D(i)), c = o.flatMap(j);
133
109
  if (c.length !== t.length || c.length < 2) return null;
134
- let l = Re(i);
110
+ let l = de(i);
135
111
  if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== c.length || l.some((e, t) => {
136
112
  let n = c[t];
137
- 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));
113
+ return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !ae(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
138
114
  }) ? null : c.map((r, i) => ({
139
115
  targetId: t[i],
140
116
  directive: {
141
117
  ...n,
142
118
  reference: r.reference,
143
- portionSelectors: oe(r.reference),
119
+ portionSelectors: ae(r.reference),
144
120
  tableTarget: {
145
121
  type: "table",
146
122
  rowIndex: l[i].rowIndex,
@@ -160,7 +136,7 @@ function Be(e, t, n) {
160
136
  if (u.length > 0 && u.length < c.length) {
161
137
  let n = c.filter((e) => !u.includes(e));
162
138
  if (n.length !== 1) return null;
163
- let r = n[0], o = t[c.indexOf(r)], s = v(i);
139
+ let r = n[0], o = t[c.indexOf(r)], s = _(i);
164
140
  return !o || s.length !== 1 || s[0].kind === "compound" ? null : [{
165
141
  targetId: o,
166
142
  sourceAnnotation: {
@@ -185,17 +161,17 @@ function Be(e, t, n) {
185
161
  let d = [], f = 0;
186
162
  for (let e = 1; e < o.length; e += 1) {
187
163
  let t = o[e];
188
- t.type !== "reference_et_action" || N(t).length === 0 || o.slice(f, e).flatMap(N).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);
164
+ t.type !== "reference_et_action" || j(t).length === 0 || o.slice(f, e).flatMap(j).length === 0 || _(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && _(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
189
165
  }
190
166
  d.push(o.length - 1);
191
167
  let p = [], m = 0, h = 0;
192
168
  for (let n of d) {
193
- let r = o.slice(m, n + 1).flatMap(N);
169
+ let r = o.slice(m, n + 1).flatMap(j);
194
170
  if (r.length === 0) {
195
171
  m = n + 1;
196
172
  continue;
197
173
  }
198
- let s = m === 0 ? 0 : o[m].position.start, c = o[n + 1]?.position.start ?? i.length, l = v(i.slice(s, c));
174
+ let s = m === 0 ? 0 : o[m].position.start, c = o[n + 1]?.position.start ?? i.length, l = _(i.slice(s, c));
199
175
  if (l.length !== 1 || l[0].kind === "compound") return null;
200
176
  let u = l[0];
201
177
  for (let n of r) {
@@ -219,7 +195,7 @@ function Be(e, t, n) {
219
195
  stop: i.length
220
196
  },
221
197
  reference: n.reference,
222
- portionSelectors: oe(n.reference)
198
+ portionSelectors: ae(n.reference)
223
199
  }
224
200
  });
225
201
  }
@@ -227,16 +203,16 @@ function Be(e, t, n) {
227
203
  }
228
204
  return h === t.length ? p : null;
229
205
  }
230
- var Ve = we("dans sa rédaction", T([T([D("dans sa rédaction ", { flags: "i" }), E(D("issue ", { flags: "i" }), D("résultante ", { flags: "i" }), D("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), E(T([D("de l'", { flags: "i" }), t], { value: (e) => e[1] }), p)], { value: (e) => e[1] }));
206
+ var Re = Ce("dans sa rédaction", w([w([E("dans sa rédaction ", { flags: "i" }), T(E("issue ", { flags: "i" }), E("résultante ", { flags: "i" }), E("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), T(w([E("de l'", { flags: "i" }), h], { value: (e) => e[1] }), pe)], { value: (e) => e[1] }));
231
207
  //#endregion
232
208
  //#region src/lib/extractors/qualified_versions.ts
233
- function He(e) {
234
- let t = Ce(e), n = [];
235
- for (let e of Ve.extract(new O(t.output), { jumpExact: !0 })) for (let r of u(e)) {
209
+ function ze(e) {
210
+ let t = Se(e), n = [];
211
+ for (let e of Re.extract(new D(t.output), { jumpExact: !0 })) for (let r of me(e)) {
236
212
  if (r.type !== "parent-enfant" || r.parent.type !== "texte" || r.parent.nature !== "LOI") continue;
237
- let e = [...c(r.child)].filter((e) => e.type === "article" && e.position.start < r.parent.position.start);
213
+ let e = [...f(r.child)].filter((e) => e.type === "article" && e.position.start < r.parent.position.start);
238
214
  if (e.length === 1) {
239
- n.push(_e(t, [e[0].position])[0].position);
215
+ n.push(ge(t, [e[0].position])[0].position);
240
216
  break;
241
217
  }
242
218
  }
@@ -244,29 +220,29 @@ function He(e) {
244
220
  }
245
221
  //#endregion
246
222
  //#region src/lib/server/parsed_bills.ts
247
- var Ue = /^expos[ée]\s+des\s+motifs\b/iu;
248
- function P(e) {
223
+ var Be = /^expos[ée]\s+des\s+motifs\b/iu;
224
+ function M(e) {
249
225
  return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
250
226
  }
251
- function F(e) {
252
- return P(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
227
+ function N(e) {
228
+ return M(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
253
229
  }
254
- function We(e) {
255
- return r(P(e));
230
+ function Ve(e) {
231
+ return m(M(e));
256
232
  }
257
- function I(e) {
258
- return `_TocArt${We(e).replace(/\s+/gu, "")}`;
233
+ function P(e) {
234
+ return `_TocArt${Ve(e).replace(/\s+/gu, "")}`;
259
235
  }
260
- function Ge(e, t) {
236
+ function He(e, t) {
261
237
  return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
262
238
  }
263
- function Ke(e) {
264
- return F(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
239
+ function Ue(e) {
240
+ return N(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
265
241
  }
266
- function qe(e) {
267
- return Ke(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
242
+ function We(e) {
243
+ return Ue(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
268
244
  }
269
- function Je(e) {
245
+ function Ge(e) {
270
246
  switch (e.kind) {
271
247
  case "insert_after":
272
248
  case "insert_before": return e.insertText;
@@ -284,12 +260,12 @@ function Je(e) {
284
260
  default: return;
285
261
  }
286
262
  }
287
- function Ye(e) {
288
- let t = P(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);
289
- if (n?.[1] !== void 0) return fe(n[1]);
263
+ function Ke(e) {
264
+ let t = M(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 o(n[1]);
290
266
  }
291
- function Xe(e) {
292
- let t = Je(e), n = me(t ?? "");
267
+ function qe(e) {
268
+ let t = Ge(e), n = fe(t ?? "");
293
269
  if (n.length > 0 && t !== void 0) return n.map((e, r) => {
294
270
  let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
295
271
  return {
@@ -297,58 +273,58 @@ function Xe(e) {
297
273
  text: o
298
274
  };
299
275
  });
300
- let r = Ye(e);
276
+ let r = Ke(e);
301
277
  return r === void 0 ? [] : [{
302
278
  num: r,
303
279
  text: t ?? e.sourceText
304
280
  }];
305
281
  }
306
- function Ze(e, t = /* @__PURE__ */ new Set()) {
282
+ function Je(e, t = /* @__PURE__ */ new Set()) {
307
283
  if (e == null) return t;
308
284
  if (Array.isArray(e)) {
309
- for (let n of e) Ze(n, t);
285
+ for (let n of e) Je(n, t);
310
286
  return t;
311
287
  }
312
288
  if (typeof e != "object") return t;
313
289
  let n = e;
314
290
  n.type === "article" && typeof n.num == "string" && t.add(n.num);
315
- for (let e of Object.values(n)) Ze(e, t);
291
+ for (let e of Object.values(n)) Je(e, t);
316
292
  return t;
317
293
  }
318
- function Qe(e) {
319
- let t = F(e.sourceText);
294
+ function Ye(e) {
295
+ let t = N(e.sourceText);
320
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);
321
297
  }
322
- function $e(e) {
323
- return P(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
298
+ function Xe(e) {
299
+ return M(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
324
300
  }
325
- function et(e, t) {
326
- let n = new O(e, t), r = xe(n);
301
+ function Ze(e, t) {
302
+ let n = new D(e, t), r = be(n);
327
303
  return typeof r != "string" || n.offset <= t ? null : {
328
304
  date: r,
329
305
  start: t,
330
306
  stop: n.offset
331
307
  };
332
308
  }
333
- function tt(e, t) {
309
+ function Qe(e, t) {
334
310
  let n = /\d/u.exec(e.slice(t));
335
311
  if (!n) return null;
336
312
  let r = t + n.index;
337
- return e.slice(t, r).trim().length > 0 ? null : et(e, r);
313
+ return e.slice(t, r).trim().length > 0 ? null : Ze(e, r);
338
314
  }
339
- function nt(e) {
315
+ function $e(e) {
340
316
  let t = /^la présente loi (?:s['’]appli(?:que|quent)|entr(?:e|ent) en vigueur) (?:[aà] compter (?:du|de|d['’])|au|le)\s*/u, n = /^la présente loi s['’]appli(?:que|quent)\s*:\s*/u, r = /\b[aà] compter (?:du|de|d['’])\s*/gu, i = [], a = "la présente loi", o = e.indexOf(a);
341
317
  for (; o !== -1;) {
342
318
  let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
343
319
  if (l) {
344
- let e = tt(c, l[0].length);
320
+ let e = Qe(c, l[0].length);
345
321
  e && i.push(e.date);
346
322
  }
347
323
  let u = n.exec(c);
348
324
  if (u) {
349
325
  let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
350
326
  for (r.lastIndex = 0; r.exec(t) !== null;) {
351
- let e = tt(t, r.lastIndex);
327
+ let e = Qe(t, r.lastIndex);
352
328
  e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
353
329
  }
354
330
  }
@@ -356,20 +332,20 @@ function nt(e) {
356
332
  }
357
333
  return i;
358
334
  }
359
- function rt(e) {
360
- let t = nt($e(e).toLowerCase()), n = Array.from(new Set(t));
335
+ function et(e) {
336
+ let t = $e(Xe(e).toLowerCase()), n = Array.from(new Set(t));
361
337
  return n.length === 1 ? n[0] : void 0;
362
338
  }
363
- function it(e) {
364
- return F(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
339
+ function tt(e) {
340
+ return N(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
365
341
  }
366
- function L(e) {
342
+ function F(e) {
367
343
  return e?.type === "tag";
368
344
  }
369
- function at(e, t) {
345
+ function nt(e, t) {
370
346
  return e.html(t) ?? "";
371
347
  }
372
- function ot(e, t) {
348
+ function rt(e, t) {
373
349
  let n = [], r = /* @__PURE__ */ new Set();
374
350
  for (let i of e(t).find("a").get()) {
375
351
  let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
@@ -377,43 +353,43 @@ function ot(e, t) {
377
353
  let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
378
354
  if (r.has(l)) continue;
379
355
  r.add(l);
380
- let u = P(e(i).text());
356
+ let u = M(e(i).text());
381
357
  n.push({
382
358
  id: c,
383
- ...st(e, t, i) ? { insideFrenchQuotes: !0 } : {},
359
+ ...it(e, t, i) ? { insideFrenchQuotes: !0 } : {},
384
360
  ...u ? { text: u } : {},
385
361
  type: s
386
362
  });
387
363
  }
388
364
  return n;
389
365
  }
390
- function st(e, t, n) {
391
- let r = ct(e, t, n);
366
+ function it(e, t, n) {
367
+ let r = at(e, t, n);
392
368
  return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
393
369
  }
394
- function ct(e, t, n) {
370
+ function at(e, t, n) {
395
371
  if (t === n) return "";
396
372
  if (t.type === "text") return t.data ?? "";
397
- if (!L(t)) return "";
373
+ if (!F(t)) return "";
398
374
  let r = "";
399
375
  for (let i of e(t).contents().get()) {
400
376
  if (i === n) return r;
401
- if (L(i) && e.contains(i, n)) return r + ct(e, i, n);
377
+ if (F(i) && e.contains(i, n)) return r + at(e, i, n);
402
378
  r += e(i).text();
403
379
  }
404
380
  return r;
405
381
  }
406
- function lt(e, t) {
407
- return t.map((t) => P(e(t).text())).filter(Boolean).join("\n");
382
+ function ot(e, t) {
383
+ return t.map((t) => M(e(t).text())).filter(Boolean).join("\n");
408
384
  }
409
- function ut(e) {
410
- let t = F(e);
411
- return !t || Ue.test(t) ? "noise" : i.test(e) ? "directive_candidate" : "context";
385
+ function st(e) {
386
+ let t = N(e);
387
+ return !t || Be.test(t) ? "noise" : l.test(e) ? "directive_candidate" : "context";
412
388
  }
413
- async function dt(e, t, n) {
389
+ async function ct(e, t, n) {
414
390
  if (n === void 0) throw Error("A document date is required to add links to legal references.");
415
391
  if (t.legiResolver === void 0 && t.canutesDb === void 0) throw Error("A Canutes database or an explicit legal resolver is required to add links to legal references.");
416
- let r = t.legiResolver ?? new se(t.canutesDb), { output: i } = await ae({
392
+ let r = t.legiResolver ?? new ie(t.canutesDb), { output: i } = await ne({
417
393
  date: n,
418
394
  html: e,
419
395
  includeInternalArticleLinks: t.includeInternalArticleLinks,
@@ -426,13 +402,13 @@ async function dt(e, t, n) {
426
402
  });
427
403
  return i ?? e;
428
404
  }
429
- function ft(e, t) {
405
+ function lt(e, t) {
430
406
  let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
431
- return L(r) && L(n) && e(n).parents("table").get(0) === r ? r : L(n) ? n : t;
407
+ return F(r) && F(n) && e(n).parents("table").get(0) === r ? r : F(n) ? n : t;
432
408
  }
433
- function pt(e, t, n, r) {
409
+ function ut(e, t, n, r) {
434
410
  if (t.has(r.container)) return;
435
- let i = r.id ?? I(r.num ?? r.label);
411
+ let i = r.id ?? P(r.num ?? r.label);
436
412
  n.has(i) || (n.add(i), t.add(r.container), e.push({
437
413
  id: i,
438
414
  label: r.label,
@@ -442,63 +418,63 @@ function pt(e, t, n, r) {
442
418
  container: r.container
443
419
  }));
444
420
  }
445
- function R(e) {
421
+ function I(e) {
446
422
  let t = /* @__PURE__ */ new Map();
447
423
  return e("body *").each((e, n) => {
448
424
  t.set(n, e);
449
425
  }), t;
450
426
  }
451
- function z(e, t) {
427
+ function L(e, t) {
452
428
  return e.get(t) ?? 2 ** 53 - 1;
453
429
  }
454
- function mt(e) {
430
+ function dt(e) {
455
431
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
456
- e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
457
- if (Ge(e, a)) return;
458
- let o = g(P(e(a).text()));
459
- if (!o) return;
460
- let s = e(a).attr("id");
461
- if (!s || r.has(s)) return;
462
- let c = ft(e, a);
463
- pt(t, n, r, {
464
- id: s,
465
- ...o,
466
- element: a,
467
- container: c
432
+ e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((a, o) => {
433
+ if (He(e, o)) return;
434
+ let s = i(M(e(o).text()));
435
+ if (!s) return;
436
+ let c = e(o).attr("id");
437
+ if (!c || r.has(c)) return;
438
+ let l = lt(e, o);
439
+ ut(t, n, r, {
440
+ id: c,
441
+ ...s,
442
+ element: o,
443
+ container: l
468
444
  });
469
- }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
470
- if (n.has(a)) return;
471
- let o = g(P(e(a).text()));
472
- o && pt(t, n, r, {
473
- ...o,
474
- element: a,
475
- container: a
445
+ }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((a, o) => {
446
+ if (n.has(o)) return;
447
+ let s = i(M(e(o).text()));
448
+ s && ut(t, n, r, {
449
+ ...s,
450
+ element: o,
451
+ container: o
476
452
  });
477
453
  });
478
- let i = R(e);
479
- return t.sort((e, t) => z(i, e.container) - z(i, t.container)), t;
454
+ let a = I(e);
455
+ return t.sort((e, t) => L(a, e.container) - L(a, t.container)), t;
480
456
  }
481
- function ht(e, t) {
482
- if (Ge(e, t)) return !1;
457
+ function ft(e, t) {
458
+ if (He(e, t)) return !1;
483
459
  let n = t.tagName?.toLowerCase();
484
460
  if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
485
461
  let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
486
462
  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));
487
463
  }
488
- function gt(e) {
464
+ function pt(e) {
489
465
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
490
- return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
491
- if (Ge(e, a) || !e(a).hasClass("assnat9ArticleNum") && !ht(e, a)) return;
492
- let o = g(e(a).text());
493
- o && pt(t, n, r, {
494
- ...o,
495
- element: a,
496
- container: a
466
+ return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((a, o) => {
467
+ if (He(e, o) || !e(o).hasClass("assnat9ArticleNum") && !ft(e, o)) return;
468
+ let s = i(e(o).text());
469
+ s && ut(t, n, r, {
470
+ ...s,
471
+ element: o,
472
+ container: o
497
473
  });
498
474
  }), t;
499
475
  }
500
- function _t(e) {
501
- let t = We(e ?? "").replace(/[()]/gu, "").trim();
476
+ function mt(e) {
477
+ let t = Ve(e ?? "").replace(/[()]/gu, "").trim();
502
478
  if (!t || t.toLowerCase() === "liminaire") return;
503
479
  if (t.toLowerCase() === "unique") return {
504
480
  base: 1,
@@ -507,7 +483,7 @@ function _t(e) {
507
483
  };
508
484
  let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
509
485
  if (!n) return;
510
- let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : yt(i);
486
+ let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : gt(i);
511
487
  if (a !== void 0) return {
512
488
  base: r,
513
489
  suffixOrder: a,
@@ -515,7 +491,7 @@ function _t(e) {
515
491
  text: t
516
492
  };
517
493
  }
518
- function vt(e, t) {
494
+ function ht(e, t) {
519
495
  if (t.base !== e.base) return t.base - e.base;
520
496
  if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
521
497
  for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
@@ -524,14 +500,14 @@ function vt(e, t) {
524
500
  }
525
501
  return 0;
526
502
  }
527
- function yt(e) {
528
- let t = new O(e), n = be(t);
503
+ function gt(e) {
504
+ let t = new D(e), n = ye(t);
529
505
  if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
530
506
  }
531
- function bt(e) {
507
+ function _t(e) {
532
508
  let t = [], n = e.map((e) => ({
533
509
  heading: e,
534
- token: _t(e.num)
510
+ token: mt(e.num)
535
511
  }));
536
512
  n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
537
513
  code: "article_toc_out_of_order",
@@ -540,7 +516,7 @@ function bt(e) {
540
516
  let r;
541
517
  for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
542
518
  if (r !== void 0) {
543
- let n = vt(r, i);
519
+ let n = ht(r, i);
544
520
  n === 0 ? t.push({
545
521
  code: "article_toc_duplicate_number",
546
522
  message: `Article ${e.num ?? e.label} is repeated`,
@@ -569,158 +545,158 @@ function bt(e) {
569
545
  }
570
546
  return t;
571
547
  }
572
- function xt(e) {
573
- let t = bt(e);
548
+ function vt(e) {
549
+ let t = _t(e);
574
550
  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) });
575
551
  }
576
- function St(e, { warn: t = !0 } = {}) {
577
- let n = mt(e), r = gt(e);
578
- if (n.length === 0) return t && xt(r), r;
579
- let i = R(e), a = (e, t) => {
580
- let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => I(e.num ?? e.label)));
552
+ function yt(e, { warn: t = !0 } = {}) {
553
+ let n = dt(e), r = pt(e);
554
+ if (n.length === 0) return t && vt(r), r;
555
+ let i = I(e), a = (e, t) => {
556
+ let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => P(e.num ?? e.label)));
581
557
  for (let i of t) {
582
- let t = I(i.num ?? i.label);
558
+ let t = P(i.num ?? i.label);
583
559
  n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
584
560
  }
585
- return e.sort((e, t) => z(i, e.container) - z(i, t.container)), e;
586
- }, 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 && bt(c).length > bt(s).length ? s : c;
587
- return t && xt(l), l;
561
+ return e.sort((e, t) => L(i, e.container) - L(i, t.container)), e;
562
+ }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && _t(c).length > _t(s).length ? s : c;
563
+ return t && vt(l), l;
588
564
  }
589
- function Ct(e) {
565
+ function bt(e) {
590
566
  let t = e.next;
591
567
  for (; t !== null;) {
592
- if (L(t)) return t;
568
+ if (F(t)) return t;
593
569
  t = t.next;
594
570
  }
595
571
  return null;
596
572
  }
597
- function wt(e, t, n) {
573
+ function xt(e, t, n) {
598
574
  let r = e(t.container);
599
575
  if (!r.is("p.assnat9ArticleNum")) return;
600
- let i = r.parent(), a = i.parent();
601
- if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
602
- let o = a.children().get();
603
- if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || P(e(o[1]).text()) !== "") return;
604
- let s = o.length === 4 ? o[2] : void 0;
605
- if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(P(e(s).text())))) return;
606
- let c = o.at(-1);
607
- 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) => g(e(t).text()) !== null))) return [
576
+ let a = r.parent(), o = a.parent();
577
+ if (!a.is("div") || a.children().length !== 1 || !o.is("div")) return;
578
+ let s = o.children().get();
579
+ if (s.length !== 3 && s.length !== 4 || s[0] !== a.get(0) || s[1]?.tagName !== "span" || M(e(s[1]).text()) !== "") return;
580
+ let c = s.length === 4 ? s[2] : void 0;
581
+ if (c !== void 0 && (c.tagName !== "p" || !e(c).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(M(e(c).text())))) return;
582
+ let l = s.at(-1);
583
+ if (!(l.tagName !== "div" || n !== void 0 && e.contains(l, n.container) || e(l).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => i(e(t).text()) !== null))) return [
608
584
  t.container,
609
- ...s === void 0 ? [] : [s],
610
- c
585
+ ...c === void 0 ? [] : [c],
586
+ l
611
587
  ];
612
588
  }
613
- function Tt(e, t, n, r = R(e)) {
589
+ function St(e, t, n, r = I(e)) {
614
590
  let i = [t.container], a = n?.container;
615
- for (let e = Ct(t.container); e !== null && e !== a; e = Ct(e)) i.push(e);
591
+ for (let e = bt(t.container); e !== null && e !== a; e = bt(e)) i.push(e);
616
592
  if (i.length > 1) return i;
617
- let o = wt(e, t, n);
593
+ let o = xt(e, t, n);
618
594
  if (o !== void 0) return o;
619
- let s = z(r, t.container), c = a ? z(r, a) : -1;
595
+ let s = L(r, t.container), c = a ? L(r, a) : -1;
620
596
  return e("body > *").get().filter((e) => {
621
- let t = z(r, e);
597
+ let t = L(r, e);
622
598
  return t >= s && (c === -1 || t < c);
623
599
  });
624
600
  }
625
- function Et(e, t) {
601
+ function Ct(e, t) {
626
602
  let n = [], r = /* @__PURE__ */ new Set();
627
603
  for (let i of t) {
628
604
  let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
629
- for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || r.has(t) || (r.add(t), n.push(t));
605
+ for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
630
606
  }
631
607
  return n;
632
608
  }
633
- function Dt(e, t, n) {
609
+ function wt(e, t, n) {
634
610
  let r = [], i = !1;
635
- for (let a of Et(e, n)) {
636
- let n = P(e(a).text());
611
+ for (let a of Ct(e, n)) {
612
+ let n = e(a).is("table.akn-quoted-table") ? fn(e, a) : M(e(a).text());
637
613
  if (!n) continue;
638
- Ue.test(n) && (i = !0);
639
- let o = i ? "noise" : ut(n), s = `${t}-b${r.length + 1}`;
614
+ Be.test(n) && (i = !0);
615
+ let o = i ? "noise" : st(n), s = `${t}-b${r.length + 1}`;
640
616
  e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
641
617
  id: s,
642
618
  articleId: t,
643
619
  kind: o,
644
- links: ot(e, a),
620
+ links: rt(e, a),
645
621
  text: n,
646
- html: at(e, a)
622
+ html: nt(e, a)
647
623
  });
648
624
  }
649
625
  return r;
650
626
  }
651
- function Ot(e, t) {
627
+ function Tt(e, t) {
652
628
  if (t.length === 0) return e;
653
629
  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>`;
654
630
  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}`;
655
631
  }
656
- function kt(e) {
657
- let t = w(e), n = At(t);
658
- for (let e of St(t, { warn: !1 })) {
659
- let r = I(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
632
+ function Et(e) {
633
+ let t = y(e), n = Dt(t);
634
+ for (let e of yt(t, { warn: !1 })) {
635
+ let r = P(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
660
636
  if (a !== r) {
661
- if (a?.startsWith("_Toc") && !Mt(n, a, e.element)) {
637
+ if (a?.startsWith("_Toc") && !kt(n, a, e.element)) {
662
638
  let e = t("<span></span>").attr("id", a);
663
639
  i.before(e);
664
640
  let r = e.get(0);
665
- L(r) && B(n, a, r);
641
+ F(r) && R(n, a, r);
666
642
  }
667
- a && jt(n, a, e.element), i.attr("id", r), B(n, r, e.element);
643
+ a && Ot(n, a, e.element), i.attr("id", r), R(n, r, e.element);
668
644
  }
669
645
  }
670
- let r = St(t), i = R(t);
646
+ let r = yt(t), i = I(t);
671
647
  for (let [e, a] of r.entries()) {
672
- let o = Tt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
648
+ let o = St(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
673
649
  for (let e of o) {
674
650
  let r = t(e).attr("data-alinea")?.trim();
675
651
  if (!r) continue;
676
652
  let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
677
- if (Mt(n, i, e)) continue;
653
+ if (kt(n, i, e)) continue;
678
654
  let o = t(e).attr("id");
679
655
  if (o && o !== i) {
680
656
  let r = t("<span></span>").attr("id", i);
681
657
  t(e).before(r);
682
658
  let a = r.get(0);
683
- L(a) && B(n, i, a);
684
- } else o && jt(n, o, e), t(e).attr("id", i), B(n, i, e);
659
+ F(a) && R(n, i, a);
660
+ } else o && Ot(n, o, e), t(e).attr("id", i), R(n, i, e);
685
661
  }
686
662
  }
687
663
  return t.html();
688
664
  }
689
- function At(e) {
665
+ function Dt(e) {
690
666
  let t = /* @__PURE__ */ new Map();
691
667
  for (let n of e("[id]").get()) {
692
668
  let r = e(n).attr("id");
693
- r && B(t, r, n);
669
+ r && R(t, r, n);
694
670
  }
695
671
  return t;
696
672
  }
697
- function B(e, t, n) {
673
+ function R(e, t, n) {
698
674
  let r = e.get(t);
699
675
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
700
676
  }
701
- function jt(e, t, n) {
677
+ function Ot(e, t, n) {
702
678
  let r = e.get(t);
703
679
  r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
704
680
  }
705
- function Mt(e, t, n) {
681
+ function kt(e, t, n) {
706
682
  for (let r of e.get(t) ?? []) if (r !== n) return !0;
707
683
  return !1;
708
684
  }
709
- function Nt(e, t) {
710
- let n = it("sourceText" in t ? t.sourceText : "");
685
+ function At(e, t) {
686
+ let n = tt("sourceText" in t ? t.sourceText : "");
711
687
  if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
712
- let t = it(e.text);
688
+ let t = tt(e.text);
713
689
  return t.length > 0 && (n.includes(t) || t.includes(n));
714
690
  });
715
691
  }
716
- function Pt(e, t) {
692
+ function jt(e, t) {
717
693
  if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
718
694
  }
719
- function Ft(e) {
695
+ function Mt(e) {
720
696
  return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
721
697
  }
722
- function It(e) {
723
- let t = He(e.text);
698
+ function Nt(e) {
699
+ let t = ze(e.text);
724
700
  if (t.length !== 1) return;
725
701
  let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
726
702
  let r = n.text ?? "", i = e.text.indexOf(r);
@@ -734,21 +710,21 @@ function It(e) {
734
710
  modifyingArticleLabel: i.text ?? ""
735
711
  };
736
712
  }
737
- function Lt(e, t) {
738
- let n = P(e);
713
+ function Pt(e, t) {
714
+ let n = M(e);
739
715
  if (!n) return;
740
- let r = ee(n);
716
+ let r = re(n);
741
717
  return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
742
718
  }
743
- function Rt(e) {
744
- let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
719
+ function Ft(e) {
720
+ let t = /* @__PURE__ */ new Map(), n = [], r = te(e.map((e) => e.text)), i = -1;
745
721
  for (let [a, o] of e.entries()) {
746
722
  let e = r.get(a);
747
723
  if (e && (i = e.endIndex), a <= i) {
748
724
  t.set(o.id, [...n.map((e) => e.block), o]);
749
725
  continue;
750
726
  }
751
- let s = Lt(o.text, n.at(-1)?.level);
727
+ let s = Pt(o.text, n.at(-1)?.level);
752
728
  if (s === void 0) {
753
729
  t.set(o.id, [...n.map((e) => e.block), o]);
754
730
  continue;
@@ -761,14 +737,14 @@ function Rt(e) {
761
737
  }
762
738
  return t;
763
739
  }
764
- function zt(e, t) {
740
+ function It(e, t) {
765
741
  let n = [], r = /* @__PURE__ */ new Set();
766
742
  for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
767
743
  return n;
768
744
  }
769
- function Bt(e, t, n) {
745
+ function Lt(e, t, n) {
770
746
  if (!t) return;
771
- let r = zt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
747
+ let r = It(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
772
748
  if (r.length === 0) return;
773
749
  let i = r.map((e) => e.id);
774
750
  if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
@@ -783,7 +759,7 @@ function Bt(e, t, n) {
783
759
  }
784
760
  };
785
761
  }
786
- function Vt(e) {
762
+ function Rt(e) {
787
763
  let t = [], n = 0;
788
764
  for (let r of e.blocks) {
789
765
  let i = e.directiveText.indexOf(r.text, n);
@@ -797,7 +773,7 @@ function Vt(e) {
797
773
  }
798
774
  return t;
799
775
  }
800
- function Ht(e, t, n) {
776
+ function zt(e, t, n) {
801
777
  let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
802
778
  if (a.length === 0) return;
803
779
  let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
@@ -811,7 +787,7 @@ function Ht(e, t, n) {
811
787
  }
812
788
  };
813
789
  }
814
- function Ut(e, t, n) {
790
+ function Bt(e, t, n) {
815
791
  if (!t) return;
816
792
  let r = e.directiveText.indexOf(t.text);
817
793
  if (r === -1) return;
@@ -824,15 +800,15 @@ function Ut(e, t, n) {
824
800
  stop: a
825
801
  };
826
802
  }
827
- function Wt(e, t) {
828
- 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), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
803
+ function Vt(e, t) {
804
+ let n = performance.now(), r = performance.now(), i = Rt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Ft(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
829
805
  for (let t of e.blocks) {
830
- t.qualifiedVersion = It(t);
831
- let e = Ft(t);
806
+ t.qualifiedVersion = Nt(t);
807
+ let e = Mt(t);
832
808
  (e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
833
809
  }
834
- let p = performance.now() - o, m = performance.now(), h = x(), g = de(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
835
- let n = Ht(e, i, t), r = Pt(s, n) ?? Nt(e.blocks, t), a = Ft(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Ut(e, r, t), f = Bt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
810
+ let p = performance.now() - o, m = performance.now(), h = x(), g = le(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
811
+ let n = zt(e, i, t), r = jt(s, n) ?? At(e.blocks, t), a = Mt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Bt(e, r, t), f = Lt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
836
812
  return {
837
813
  articleId: e.id,
838
814
  blockId: r?.id,
@@ -851,13 +827,13 @@ function Wt(e, t) {
851
827
  ...o.length > 0 ? { targetIds: o } : {},
852
828
  ...r?.id !== void 0 && u.get(r.id) ? { qualifiedVersion: u.get(r.id) } : {}
853
829
  };
854
- }), b = /* @__PURE__ */ new Set(), ee = /* @__PURE__ */ new Map(), S = y.flatMap((e) => {
830
+ }), b = /* @__PURE__ */ new Set(), S = /* @__PURE__ */ new Map(), C = y.flatMap((e) => {
855
831
  let t = e.blockId ? s.get(e.blockId) : void 0;
856
832
  if (!t) return [e];
857
833
  if (b.has(t.id)) return [];
858
- let n = ee.get(t.id);
859
- if (n === void 0 && (n = Be(t.text, Ft(t), e.directive), ee.set(t.id, n)), !n) {
860
- let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? ze(t.text, n.operations.length) : null;
834
+ let n = S.get(t.id);
835
+ if (n === void 0 && (n = Le(t.text, Mt(t), e.directive), S.set(t.id, n)), !n) {
836
+ let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ie(t.text, n.operations.length) : null;
861
837
  return [r ? {
862
838
  ...e,
863
839
  sourceAnnotations: r
@@ -874,27 +850,27 @@ function Wt(e, t) {
874
850
  }
875
851
  }))
876
852
  }];
877
- }), te = performance.now() - v;
853
+ }), ee = performance.now() - v;
878
854
  return t?.push({
879
855
  actionDirectiveExtraction: h,
880
856
  articleId: e.id,
881
857
  blockCount: e.blocks.length,
882
858
  buildRangesMs: Math.round(a * 10) / 10,
883
- directiveCount: S.length,
859
+ directiveCount: C.length,
884
860
  directiveTextSize: e.directiveText.length,
885
861
  extractActionDirectivesMs: Math.round(_ * 10) / 10,
886
- mapDirectivesMs: Math.round(te * 10) / 10,
862
+ mapDirectivesMs: Math.round(ee * 10) / 10,
887
863
  prepareBlockIndexesMs: Math.round(p * 10) / 10,
888
864
  totalMs: Math.round((performance.now() - n) * 10) / 10
889
- }), S;
865
+ }), C;
890
866
  }
891
- function Gt(e) {
867
+ function Ht(e) {
892
868
  let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
893
869
  for (let i of e) {
894
- let e = Xe(i.directive);
870
+ let e = qe(i.directive);
895
871
  if (e.length === 0) continue;
896
872
  let a = e.map(({ num: e }) => ({
897
- definitionId: `${i.articleId}:article:${qe(e)}`,
873
+ definitionId: `${i.articleId}:article:${We(e)}`,
898
874
  num: e
899
875
  }));
900
876
  t.set(i, a);
@@ -917,13 +893,13 @@ function Gt(e) {
917
893
  definitions: n
918
894
  };
919
895
  }
920
- function Kt(e, t, n) {
921
- let r = new Map(t.map((e) => [Ke(e.num), e]));
896
+ function Ut(e, t, n) {
897
+ let r = new Map(t.map((e) => [Ue(e.num), e]));
922
898
  return e.map((e) => {
923
- let t = n.get(e), i = t?.[0], a = [...Ze(e.directive.reference)].map((e) => r.get(Ke(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
899
+ let t = n.get(e), i = t?.[0], a = [...Je(e.directive.reference)].map((e) => r.get(Ue(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
924
900
  definitionId: a.definitionId,
925
901
  num: a.num
926
- }, s = Qe(e.directive), c = (e.targetIds?.length ?? 0) > 0;
902
+ }, s = Ye(e.directive), c = (e.targetIds?.length ?? 0) > 0;
927
903
  return {
928
904
  ...e,
929
905
  ...i === void 0 ? {} : { createdArticle: i },
@@ -936,7 +912,7 @@ function Kt(e, t, n) {
936
912
  };
937
913
  });
938
914
  }
939
- function qt(e) {
915
+ function Wt(e) {
940
916
  switch (e.kind) {
941
917
  case "insert_after":
942
918
  case "insert_before": return [e.insertText];
@@ -954,8 +930,8 @@ function qt(e) {
954
930
  default: return [];
955
931
  }
956
932
  }
957
- function Jt(e) {
958
- return e.flatMap((e) => qt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
933
+ function Gt(e) {
934
+ return e.flatMap((e) => Wt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
959
935
  code: "nested_french_quote_in_redaction",
960
936
  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.",
961
937
  details: {
@@ -967,18 +943,18 @@ function Jt(e) {
967
943
  }
968
944
  })));
969
945
  }
970
- function Yt(e) {
971
- return qt(e).map((t) => ({
946
+ function Kt(e) {
947
+ return Wt(e).map((t) => ({
972
948
  directiveKind: e.kind,
973
949
  text: t
974
950
  }));
975
951
  }
976
- function Xt(e) {
952
+ function qt(e) {
977
953
  let t = /* @__PURE__ */ new Set();
978
954
  for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
979
955
  return Array.from(t);
980
956
  }
981
- function Zt(e, t) {
957
+ function Jt(e, t) {
982
958
  let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
983
959
  for (let e of r) {
984
960
  let t = n.get(e);
@@ -990,11 +966,11 @@ function Zt(e, t) {
990
966
  }
991
967
  return i;
992
968
  }
993
- function Qt(e, t, n) {
969
+ function Yt(e, t, n) {
994
970
  return e.find((e) => t >= e.start && n <= e.stop);
995
971
  }
996
- function $t(e, t, n) {
997
- let r = Xt(n), i = r.flatMap((t) => {
972
+ function Xt(e, t, n) {
973
+ let r = qt(n), i = r.flatMap((t) => {
998
974
  for (let n of e.blocks) {
999
975
  let e = n.text.indexOf(t);
1000
976
  if (e !== -1) return [{
@@ -1013,7 +989,7 @@ function $t(e, t, n) {
1013
989
  e.directiveText
1014
990
  ].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
1015
991
  if (!o) return [];
1016
- let s = Zt(e, t);
992
+ let s = Jt(e, t);
1017
993
  if (s.length === 0) return [];
1018
994
  let c = [], l = 0;
1019
995
  for (let e of r) {
@@ -1021,7 +997,7 @@ function $t(e, t, n) {
1021
997
  if (t === -1) continue;
1022
998
  let n = t + e.length;
1023
999
  l = n;
1024
- let r = Qt(s, t, n);
1000
+ let r = Yt(s, t, n);
1025
1001
  r && c.push({
1026
1002
  blockId: r.block.id,
1027
1003
  start: t - r.start,
@@ -1031,15 +1007,15 @@ function $t(e, t, n) {
1031
1007
  }
1032
1008
  return c;
1033
1009
  }
1034
- function en(e, t) {
1010
+ function Zt(e, t) {
1035
1011
  let n = new Map(e.map((e) => [e.id, e]));
1036
1012
  return t.flatMap((e) => {
1037
1013
  let t = n.get(e.articleId);
1038
- return t ? Yt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1014
+ return t ? Kt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1039
1015
  articleId: e.articleId,
1040
1016
  code: "nested_french_quote_in_redaction",
1041
1017
  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.",
1042
- ranges: $t(t, e, r),
1018
+ ranges: Xt(t, e, r),
1043
1019
  severity: "warning",
1044
1020
  details: {
1045
1021
  blockId: e.blockId,
@@ -1050,8 +1026,8 @@ function en(e, t) {
1050
1026
  })) : [];
1051
1027
  });
1052
1028
  }
1053
- function tn(e, t) {
1054
- let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1029
+ function Qt(e, t) {
1030
+ let n = new Map(e.flatMap((e) => [...te(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1055
1031
  articleId: e.id,
1056
1032
  blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
1057
1033
  ...n
@@ -1073,13 +1049,13 @@ function tn(e, t) {
1073
1049
  }];
1074
1050
  });
1075
1051
  }
1076
- function nn(e, t, n, r, i, a, o = !0, s) {
1077
- let c = new Ee("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 = {
1052
+ function $t(e, t, n, r, i, a, o = !0, s) {
1053
+ let c = new Te("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 = {
1078
1054
  sourceFormat: e,
1079
1055
  documentDate: r,
1080
1056
  html: t,
1081
1057
  htmlWithLinks: n,
1082
- tableOfContents: a ?? c.timeSync("extractTableOfContents", () => y(u), { inputSize: u.length }),
1058
+ tableOfContents: a ?? c.timeSync("extractTableOfContents", () => v(u), { inputSize: u.length }),
1083
1059
  articles: i
1084
1060
  };
1085
1061
  if (!o) {
@@ -1095,14 +1071,14 @@ function nn(e, t, n, r, i, a, o = !0, s) {
1095
1071
  directiveTextSize: u.length
1096
1072
  }), e;
1097
1073
  }
1098
- let f = c.timeSync("extractGlobalApplicabilityDate", () => rt(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1074
+ let f = c.timeSync("extractGlobalApplicabilityDate", () => et(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1099
1075
  let e = [];
1100
1076
  for (let t of i) {
1101
- let n = Wt(t, c.enabled ? p : void 0);
1077
+ let n = Vt(t, c.enabled ? p : void 0);
1102
1078
  e.push(...n);
1103
1079
  }
1104
1080
  return e;
1105
- }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Gt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Kt(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Jt(_), { count: _.length }), b = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...en(i, _), ...tn(i, _)], { count: _.length }), ee = {
1081
+ }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Ht(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Ut(m, g, h), { count: m.length }), y = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Gt(_), { count: _.length }), b = [...s ?? [], ...y], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Zt(i, _), ...Qt(i, _)], { count: _.length }), S = {
1106
1082
  ...d,
1107
1083
  ...f ? { globalApplicabilityDate: f } : {},
1108
1084
  ...g.length > 0 ? { internalArticleDefinitions: g } : {},
@@ -1194,20 +1170,20 @@ function nn(e, t, n, r, i, a, o = !0, s) {
1194
1170
  }),
1195
1171
  directiveTextSize: u.length,
1196
1172
  slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
1197
- }), ee;
1173
+ }), S;
1198
1174
  }
1199
- function rn(e) {
1175
+ function en(e) {
1200
1176
  return { items: e.map((e) => ({
1201
1177
  id: e.id,
1202
1178
  line: e.title ? `${e.label} : ${e.title}` : e.label,
1203
1179
  type: "article"
1204
1180
  })) };
1205
1181
  }
1206
- function an(e) {
1207
- return Array.from(ue(e)).filter((e) => e.type === "article").map((e) => F(e.line.split(/[::]/u)[0]));
1182
+ function tn(e) {
1183
+ return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => N(e.line.split(/[::]/u)[0]));
1208
1184
  }
1209
- function on(e, t, n, r) {
1210
- let i = bt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ue(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? I(e.num) : w(e.html)("p.TCNumArticle").first().attr("id") ?? I(e.label) : e.id), c = o.map((e) => e.id);
1185
+ function nn(e, t, n, r) {
1186
+ let i = _t(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 ? P(e.num) : y(e.html)("p.TCNumArticle").first().attr("id") ?? P(e.label) : e.id), c = o.map((e) => e.id);
1211
1187
  (c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
1212
1188
  code: "article_toc_source_heading_mismatch",
1213
1189
  message: "The table of contents differs from the parsed article headings",
@@ -1223,8 +1199,8 @@ function on(e, t, n, r) {
1223
1199
  });
1224
1200
  return i;
1225
1201
  }
1226
- function sn(e, t, n) {
1227
- let r = an(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => F(e.label)), a = rn(e), o = [...n, ...on(e, a, t, "assemblee-html")];
1202
+ function rn(e, t, n) {
1203
+ let r = tn(v(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => N(e.label)), a = en(e), o = [...n, ...nn(e, a, t, "assemblee-html")];
1228
1204
  if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
1229
1205
  let t = r.findIndex((e, t) => e !== i[t]);
1230
1206
  o.push({
@@ -1248,24 +1224,24 @@ function sn(e, t, n) {
1248
1224
  tableOfContents: a
1249
1225
  };
1250
1226
  }
1251
- async function cn(e, t) {
1252
- let n = new Ee("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => ln(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => kt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => w(i)), o = n.timeSync("extractArticleHeadings", () => St(a)), s = new Set(o.map((e) => e.id)), c = gt(a).filter((e) => !s.has(I(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1227
+ async function an(e, t) {
1228
+ let n = new Te("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => on(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Et(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => y(i)), o = n.timeSync("extractArticleHeadings", () => yt(a)), s = new Set(o.map((e) => e.id)), c = pt(a).filter((e) => !s.has(P(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1253
1229
  code: "article_toc_source_heading_mismatch",
1254
1230
  message: "Some structural article headings were not retained",
1255
1231
  details: { discardedCandidates: c }
1256
- }] : [], u = R(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1257
- let n = Tt(a, e, o[t + 1], u), r = Dt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1232
+ }] : [], u = I(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1233
+ let n = St(a, e, o[t + 1], u), r = wt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1258
1234
  return {
1259
1235
  id: e.id,
1260
1236
  label: e.label,
1261
1237
  num: e.num,
1262
1238
  title: e.title,
1263
- text: lt(a, n),
1264
- html: n.map((e) => at(a, e)).join("\n"),
1239
+ text: ot(a, n),
1240
+ html: n.map((e) => nt(a, e)).join("\n"),
1265
1241
  directiveText: i,
1266
1242
  blocks: r
1267
1243
  };
1268
- }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Ot(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => sn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => nn("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1244
+ }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Tt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => rn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => $t("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1269
1245
  return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
1270
1246
  articleCount: h.articles.length,
1271
1247
  blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1273,18 +1249,18 @@ async function cn(e, t) {
1273
1249
  targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
1274
1250
  }), h;
1275
1251
  }
1276
- async function ln(e, t) {
1252
+ async function on(e, t) {
1277
1253
  return {
1278
1254
  sourceFormat: "assemblee-html",
1279
1255
  documentDate: t.date,
1280
1256
  html: e,
1281
- linkedHtml: await dt(e, t, t.date)
1257
+ linkedHtml: await ct(e, t, t.date)
1282
1258
  };
1283
1259
  }
1284
- function V(e) {
1260
+ function z(e) {
1285
1261
  return e.replace(/&/gu, "&amp;").replace(/</gu, "&lt;").replace(/>/gu, "&gt;").replace(/"/gu, "&quot;");
1286
1262
  }
1287
- function un(e) {
1263
+ function sn(e) {
1288
1264
  let t = e;
1289
1265
  for (let e = 0; e < 3; e++) {
1290
1266
  let e = t;
@@ -1292,27 +1268,27 @@ function un(e) {
1292
1268
  }
1293
1269
  return t;
1294
1270
  }
1295
- function dn(e) {
1271
+ function cn(e) {
1296
1272
  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);
1297
1273
  }
1298
- function H(e) {
1274
+ function B(e) {
1299
1275
  return e.name.replace(/^.*:/u, "");
1300
1276
  }
1301
- function fn(e, t) {
1302
- return t.children.map((t) => U(e, t)).filter(Boolean).join("");
1277
+ function ln(e, t) {
1278
+ return t.children.map((t) => V(e, t)).filter(Boolean).join("");
1303
1279
  }
1304
- function pn(e, t) {
1305
- return t.children.map((t) => t.type === "text" && dn(t.data) ? un(t.data) : U(e, t)).filter(Boolean).join("");
1280
+ function un(e, t) {
1281
+ return t.children.map((t) => t.type === "text" && cn(t.data) ? sn(t.data) : V(e, t)).filter(Boolean).join("");
1306
1282
  }
1307
- function U(e, t) {
1283
+ function V(e, t) {
1308
1284
  if (t.type === "text") {
1309
1285
  let e = t.data.replace(/\s+\./gu, ".");
1310
- return dn(e) ? un(e) : V(e);
1286
+ return cn(e) ? sn(e) : z(e);
1311
1287
  }
1312
- if (!L(t)) return "";
1313
- let n = H(t), r = fn(e, t);
1288
+ if (!F(t)) return "";
1289
+ let n = B(t), r = ln(e, t);
1314
1290
  switch (n) {
1315
- case "p": return `<p${mn(e, t, [
1291
+ case "p": return `<p${H(e, t, [
1316
1292
  "id",
1317
1293
  "class",
1318
1294
  "align",
@@ -1326,13 +1302,13 @@ function U(e, t) {
1326
1302
  case "u":
1327
1303
  case "sup":
1328
1304
  case "sub":
1329
- case "abbr": return `<${n}${mn(e, t, [
1305
+ case "abbr": return `<${n}${H(e, t, [
1330
1306
  "id",
1331
1307
  "class",
1332
1308
  "title",
1333
1309
  "style"
1334
1310
  ])}>${r}</${n}>`;
1335
- case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${mn(e, t, [
1311
+ case "a": return `<a href="${z(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${H(e, t, [
1336
1312
  "id",
1337
1313
  "class",
1338
1314
  "title",
@@ -1343,8 +1319,8 @@ function U(e, t) {
1343
1319
  case "tbody":
1344
1320
  case "tr":
1345
1321
  case "th":
1346
- case "td": return hn(e, t, n, r);
1347
- case "caption": return `<caption${mn(e, t, [
1322
+ case "td": return pn(e, t, n, r);
1323
+ case "caption": return `<caption${H(e, t, [
1348
1324
  "id",
1349
1325
  "class",
1350
1326
  "align",
@@ -1352,12 +1328,12 @@ function U(e, t) {
1352
1328
  ])}>${r}</caption>`;
1353
1329
  case "num": return `<span class="akn-num">${r}</span> `;
1354
1330
  case "heading": return `<p class="akn-heading">${r}</p>`;
1355
- case "content": return pn(e, t);
1356
- case "alinea": return An(e, t, "div", "akn-alinea");
1357
- case "article": return An(e, t, "article", "akn-article");
1331
+ case "content": return un(e, t);
1332
+ case "alinea": return U(e, t, "div", "akn-alinea");
1333
+ case "article": return U(e, t, "article", "akn-article");
1358
1334
  case "blockList":
1359
1335
  case "list": return `<div class="akn-list">${r}</div>`;
1360
- case "item": return An(e, t, "div", "akn-item");
1336
+ case "item": return U(e, t, "div", "akn-item");
1361
1337
  case "listIntroduction":
1362
1338
  case "listWrapUp":
1363
1339
  case "intro":
@@ -1373,23 +1349,43 @@ function U(e, t) {
1373
1349
  case "book":
1374
1350
  case "tome":
1375
1351
  case "subchapter":
1376
- case "subsection": return An(e, t, "section", `akn-${n}`);
1352
+ case "subsection": return U(e, t, "section", `akn-${n}`);
1377
1353
  case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
1378
1354
  default: return r;
1379
1355
  }
1380
1356
  }
1381
- function mn(e, t, n, r = {}) {
1357
+ function dn(e, t) {
1358
+ let n = e(t).text();
1359
+ if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
1360
+ let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
1361
+ if (r.length === 0) return;
1362
+ let i = r.map((t) => {
1363
+ let n = e(t).children("td,th").get();
1364
+ return n.length >= 3 ? [n[0], n.at(-1)] : [];
1365
+ });
1366
+ if (i.some((e) => e.length !== 2)) return;
1367
+ let a = i.map(([t]) => M(e(t).text())), o = i.map(([, t]) => M(e(t).text()));
1368
+ if (!(a.filter((e) => e === "«").length !== 1 || o.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || a.some((e) => e !== "" && e !== "«") || o.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || i.some(([t, n]) => [t, n].some((t) => e(t).attr("colspan") !== void 0 || e(t).attr("rowspan") !== void 0))) && !(a.indexOf("«") > o.findIndex((e) => e.startsWith("»")))) {
1369
+ e(t).addClass("akn-quoted-table");
1370
+ for (let [t, n] of i) e(t).addClass("akn-quote-column"), e(n).addClass("akn-quote-column");
1371
+ }
1372
+ }
1373
+ function fn(e, t) {
1374
+ let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(M(e(t).text())))).text();
1375
+ return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => M(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1376
+ }
1377
+ function H(e, t, n, r = {}) {
1382
1378
  let i = [];
1383
1379
  for (let r of n) {
1384
1380
  if (r === "style") continue;
1385
1381
  let n = e(t).attr(r);
1386
- n !== void 0 && i.push(`${r}="${V(n)}"`);
1382
+ n !== void 0 && i.push(`${r}="${z(n)}"`);
1387
1383
  }
1388
1384
  let a = r.style ?? e(t).attr("style");
1389
- return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1385
+ return a && i.push(`style="${z(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1390
1386
  }
1391
- function hn(e, t, n, r) {
1392
- return `<${n}${mn(e, t, [
1387
+ function pn(e, t, n, r) {
1388
+ return `<${n}${H(e, t, [
1393
1389
  "id",
1394
1390
  "class",
1395
1391
  "colspan",
@@ -1402,155 +1398,155 @@ function hn(e, t, n, r) {
1402
1398
  "cellspacing",
1403
1399
  "cellpadding",
1404
1400
  "style"
1405
- ], { style: gn(e, t, n) })}>${r}</${n}>`;
1401
+ ], { style: mn(e, t, n) })}>${r}</${n}>`;
1406
1402
  }
1407
- function gn(e, t, n) {
1403
+ function mn(e, t, n) {
1408
1404
  let r = e(t).attr("style") ?? "";
1409
- return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = _n(r, "text-align", "center")), r || void 0;
1405
+ 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;
1410
1406
  }
1411
- function _n(e, t, n) {
1407
+ function hn(e, t, n) {
1412
1408
  let r = e.trim();
1413
1409
  return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
1414
1410
  }
1415
- function vn(e, t) {
1416
- let n = [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean);
1417
- return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
1411
+ function gn(e, t) {
1412
+ let n = [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean);
1413
+ return n.length === 0 ? "" : `<p class="akn-heading">${z(n.join(" "))}</p>`;
1418
1414
  }
1419
- function yn(e, t) {
1415
+ function _n(e, t) {
1420
1416
  if (!t) return !1;
1421
- let n = (e) => P(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1422
- return n(P(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1417
+ let n = (e) => M(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1418
+ return n(M(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1423
1419
  }
1424
- function bn(e) {
1425
- let t = V(e);
1420
+ function vn(e) {
1421
+ let t = z(e);
1426
1422
  return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
1427
1423
  }
1428
- function xn(e, t) {
1429
- return Sn([Cn({
1424
+ function yn(e, t) {
1425
+ return bn([xn({
1430
1426
  content: e,
1431
1427
  pastille: t
1432
1428
  })]);
1433
1429
  }
1434
- function Sn(e) {
1430
+ function bn(e) {
1435
1431
  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>`;
1436
1432
  }
1437
- function Cn({ content: e, pastille: t, style: n, contextClass: r }) {
1438
- let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
1439
- 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}">${bn(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>`;
1433
+ function xn({ content: e, pastille: t, style: n, contextClass: r }) {
1434
+ let i = n ? ` style="${z(n)}"` : "", a = r ? ` ${z(r)}` : "";
1435
+ return `<tr${r ? ` class="${z(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>`;
1440
1436
  }
1441
- function wn({ content: e, style: t, contextClass: n }) {
1442
- let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
1443
- 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>`;
1437
+ function Sn({ content: e, style: t, contextClass: n }) {
1438
+ let r = t ? ` style="${z(t)}"` : "", i = n ? ` ${z(n)}` : "";
1439
+ return `<tr${n ? ` class="${z(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>`;
1444
1440
  }
1445
- function Tn(e, t) {
1441
+ function Cn(e, t) {
1446
1442
  return e(t).attr("data:pastille") ?? e(t).attr("pastille");
1447
1443
  }
1448
- function En(e, t) {
1444
+ function wn(e, t) {
1449
1445
  return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1450
1446
  }
1451
- function Dn(e, t) {
1452
- return e(t).children().get().filter((e) => L(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1447
+ function Tn(e, t) {
1448
+ return e(t).children().get().filter((e) => F(e) ? B(e) === "content" : !1).map((t) => V(e, t)).filter(Boolean).join("\n");
1453
1449
  }
1454
- function On(e, t) {
1450
+ function En(e, t) {
1455
1451
  let n = [];
1456
1452
  return e(t).children().each((t, r) => {
1457
- if (!L(r)) return;
1458
- let i = H(r);
1459
- i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
1453
+ if (!F(r)) return;
1454
+ let i = B(r);
1455
+ i === "num" || i === "heading" || i === "content" || n.push(V(e, r));
1460
1456
  }), n.filter(Boolean);
1461
1457
  }
1462
- function kn(e, t) {
1463
- let n = [], r = H(t), i = r === "alinea" ? Tn(e, t) : void 0, a = Dn(e, t), o = jn(e, t, r, i), s = Ln(e, t);
1458
+ function Dn(e, t) {
1459
+ let n = [], r = B(t), i = r === "alinea" ? Cn(e, t) : void 0, a = Tn(e, t), o = On(e, t, r, i), s = Pn(e, t);
1464
1460
  if (i) {
1465
- let r = [yn(a, P(e(t).children("num").first().text())) ? "" : vn(e, t), a].filter(Boolean).join("\n");
1466
- P(r) && n.push(Cn({
1461
+ let r = [_n(a, M(e(t).children("num").first().text())) ? "" : gn(e, t), a].filter(Boolean).join("\n");
1462
+ M(r) && n.push(xn({
1467
1463
  content: r,
1468
1464
  pastille: i,
1469
1465
  style: o,
1470
1466
  contextClass: s
1471
1467
  }));
1472
- } else a && n.push(wn({
1468
+ } else a && n.push(Sn({
1473
1469
  content: a,
1474
1470
  style: o,
1475
1471
  contextClass: s
1476
1472
  }));
1477
1473
  for (let r of e(t).children().get()) {
1478
- if (!L(r)) continue;
1479
- let t = H(r);
1480
- t === "num" || t === "heading" || t === "content" || (t === "alinea" || En(e, r)) && n.push(...kn(e, r));
1474
+ if (!F(r)) continue;
1475
+ let t = B(r);
1476
+ t === "num" || t === "heading" || t === "content" || (t === "alinea" || wn(e, r)) && n.push(...Dn(e, r));
1481
1477
  }
1482
1478
  return n;
1483
1479
  }
1484
- function An(e, t, n, r) {
1485
- let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Tn(e, t), s = jn(e, t, i, o), c = [`<${n} ${[
1486
- a ? `id="${V(a)}"` : void 0,
1480
+ function U(e, t, n, r) {
1481
+ let a = B(t), o = e(t).attr("eId") ?? e(t).attr("GUID"), s = Cn(e, t), c = On(e, t, a, s), l = [`<${n} ${[
1482
+ o ? `id="${z(o)}"` : void 0,
1487
1483
  `class="${r}"`,
1488
- o ? `data-pastille="${V(o)}"` : void 0,
1489
- s ? `style="${V(s)}"` : void 0
1484
+ s ? `data-pastille="${z(s)}"` : void 0,
1485
+ c ? `style="${z(c)}"` : void 0
1490
1486
  ].filter((e) => e !== void 0).join(" ")}>`];
1491
- if (i === "part" || i === "title") {
1492
- let r = Pn(e, t, i), a = In(e, t), o = r ? [wn({
1487
+ if (a === "part" || a === "title") {
1488
+ let r = jn(e, t, a), i = Nn(e, t), o = r ? [Sn({
1493
1489
  content: r,
1494
- contextClass: a
1490
+ contextClass: i
1495
1491
  })] : [], s = () => {
1496
- o.length !== 0 && (c.push(Nn(o)), o = []);
1492
+ o.length !== 0 && (l.push(An(o)), o = []);
1497
1493
  };
1498
1494
  return e(t).children().each((t, n) => {
1499
- if (!L(n)) return;
1500
- let r = H(n);
1495
+ if (!F(n)) return;
1496
+ let r = B(n);
1501
1497
  if (!(r === "num" || r === "heading" || r === "content")) {
1502
1498
  if (r === "alinea") {
1503
- o.push(...kn(e, n));
1499
+ o.push(...Dn(e, n));
1504
1500
  return;
1505
1501
  }
1506
- s(), c.push(U(e, n));
1502
+ s(), l.push(V(e, n));
1507
1503
  }
1508
- }), s(), c.push(`</${n}>`), c.join("\n");
1504
+ }), s(), l.push(`</${n}>`), l.join("\n");
1509
1505
  }
1510
- if (i === "article") {
1511
- let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = g(r) ?? {
1506
+ if (a === "article") {
1507
+ let r = M(e(t).children("num").first().text()), a = M(e(t).children("heading").first().text()), o = i(r) ?? {
1512
1508
  label: r,
1513
1509
  num: r
1514
- }, 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>`;
1515
- if (En(e, t)) {
1516
- let r = [wn({
1517
- content: o,
1518
- contextClass: zn(a.label)
1519
- }), ...kn(e, t)];
1520
- c.push(Sn(r));
1521
- for (let n of On(e, t)) n.includes("akn-pastille-table") || c.push(n);
1522
- return c.push(`</${n}>`), c.join("\n");
1510
+ }, s = `<p class="TCNumArticle as-text toc-article dispositif" id="${z(`_TocArt${(o.num ?? r).replace(/\s+/gu, "")}`)}">${z(o.label)}${a ? ` : ${z(a)}` : ""}</p>`;
1511
+ if (wn(e, t)) {
1512
+ let r = [Sn({
1513
+ content: s,
1514
+ contextClass: In(o.label)
1515
+ }), ...Dn(e, t)];
1516
+ l.push(bn(r));
1517
+ for (let n of En(e, t)) n.includes("akn-pastille-table") || l.push(n);
1518
+ return l.push(`</${n}>`), l.join("\n");
1523
1519
  }
1524
- c.push(o);
1520
+ l.push(s);
1525
1521
  }
1526
- let l = [];
1522
+ let u = [];
1527
1523
  for (let n of ["content", "children"]) e(t).children().each((t, r) => {
1528
- if (!L(r)) return;
1529
- let i = H(r);
1530
- i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
1524
+ if (!F(r)) return;
1525
+ let i = B(r);
1526
+ i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || u.push(V(e, r));
1531
1527
  });
1532
- let u = l.join("\n");
1533
- if (i !== "article") {
1534
- let n = yn(u, P(e(t).children("num").first().text())) ? "" : vn(e, t);
1535
- n && c.push(n);
1528
+ let d = u.join("\n");
1529
+ if (a !== "article") {
1530
+ let n = _n(d, M(e(t).children("num").first().text())) ? "" : gn(e, t);
1531
+ n && l.push(n);
1536
1532
  }
1537
- return c.push(o ? xn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1533
+ return l.push(s ? yn(d, s) : d), l.push(`</${n}>`), l.join("\n");
1538
1534
  }
1539
- function jn(e, t, n, r) {
1540
- let i = Mn(e(t).attr("style") ?? "", "font-family");
1541
- return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = _n(i, "text-align", "center")), i || void 0;
1535
+ function On(e, t, n, r) {
1536
+ let i = kn(e(t).attr("style") ?? "", "font-family");
1537
+ 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;
1542
1538
  }
1543
- function Mn(e, t) {
1539
+ function kn(e, t) {
1544
1540
  return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
1545
1541
  }
1546
- function Nn(e) {
1542
+ function An(e) {
1547
1543
  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>`;
1548
1544
  }
1549
- function Pn(e, t, n) {
1550
- let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = Fn(n), o = [];
1551
- 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");
1545
+ function jn(e, t, n) {
1546
+ let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = Mn(n), o = [];
1547
+ return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${z(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${z(i)}</span></p>`), o.join("\n");
1552
1548
  }
1553
- function Fn(e) {
1549
+ function Mn(e) {
1554
1550
  switch (e) {
1555
1551
  case "part": return {
1556
1552
  num: "TCNumPartie",
@@ -1574,22 +1570,22 @@ function Fn(e) {
1574
1570
  };
1575
1571
  }
1576
1572
  }
1577
- function In(e, t) {
1578
- let n = Rn(P(e(t).children("num").first().text()));
1573
+ function Nn(e, t) {
1574
+ let n = Fn(M(e(t).children("num").first().text()));
1579
1575
  if (n) return n;
1580
1576
  for (let n of e(t).parents().get()) {
1581
- if (!L(n)) continue;
1582
- let t = H(n);
1577
+ if (!F(n)) continue;
1578
+ let t = B(n);
1583
1579
  if (t !== "title" && t !== "part") continue;
1584
- let r = Rn(P(e(n).children("num").first().text()));
1580
+ let r = Fn(M(e(n).children("num").first().text()));
1585
1581
  if (r) return r;
1586
1582
  }
1587
1583
  }
1588
- function Ln(e, t) {
1589
- return In(e, t);
1584
+ function Pn(e, t) {
1585
+ return Nn(e, t);
1590
1586
  }
1591
- function Rn(e) {
1592
- let [t, ...n] = P(e).split(/\s+/u);
1587
+ function Fn(e) {
1588
+ let [t, ...n] = M(e).split(/\s+/u);
1593
1589
  if (!t || n.length === 0) return;
1594
1590
  let r = t.toLocaleLowerCase("fr-FR");
1595
1591
  if ([
@@ -1599,10 +1595,10 @@ function Rn(e) {
1599
1595
  "section"
1600
1596
  ].includes(r)) return `${r}-${n.join("_")}`;
1601
1597
  }
1602
- function zn(e) {
1603
- return `article-${P(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1598
+ function In(e) {
1599
+ return `article-${M(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1604
1600
  }
1605
- function Bn(e) {
1601
+ function Ln(e) {
1606
1602
  switch (e) {
1607
1603
  case "part": return "partie";
1608
1604
  case "book": return "livre";
@@ -1614,38 +1610,38 @@ function Bn(e) {
1614
1610
  default: return;
1615
1611
  }
1616
1612
  }
1617
- function Vn(e, t) {
1618
- return [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1613
+ function Rn(e, t) {
1614
+ return [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1619
1615
  }
1620
- function Hn(e, t) {
1621
- let n = P(e(t).children("num").first().text()), r = P(e(t).children("heading").first().text()), i = g(n) ?? {
1616
+ function zn(e, t) {
1617
+ let n = M(e(t).children("num").first().text()), r = M(e(t).children("heading").first().text()), a = i(n) ?? {
1622
1618
  label: n,
1623
1619
  num: n
1624
1620
  };
1625
1621
  return {
1626
- id: `_TocArt${(i.num ?? n).replace(/\s+/gu, "")}`,
1627
- line: [i.label, r].filter(Boolean).join(" : "),
1622
+ id: `_TocArt${(a.num ?? n).replace(/\s+/gu, "")}`,
1623
+ line: [a.label, r].filter(Boolean).join(" : "),
1628
1624
  type: "article"
1629
1625
  };
1630
1626
  }
1631
- function Un(e, t) {
1627
+ function Bn(e, t) {
1632
1628
  e.items.push(...t.items);
1633
1629
  }
1634
- function Wn(e, t) {
1630
+ function Vn(e, t) {
1635
1631
  let n = { items: [] };
1636
1632
  return e(t).children().each((t, r) => {
1637
- if (!L(r)) return;
1638
- let i = H(r);
1633
+ if (!F(r)) return;
1634
+ let i = B(r);
1639
1635
  if (i === "article") {
1640
- n.items.push(Hn(e, r));
1636
+ n.items.push(zn(e, r));
1641
1637
  return;
1642
1638
  }
1643
- let a = Bn(i);
1639
+ let a = Ln(i);
1644
1640
  if (!a) {
1645
- Un(n, Wn(e, r));
1641
+ Bn(n, Vn(e, r));
1646
1642
  return;
1647
1643
  }
1648
- let o = Vn(e, r), s = Wn(e, r);
1644
+ let o = Rn(e, r), s = Vn(e, r);
1649
1645
  !o && s.items.length === 0 || n.items.push({
1650
1646
  ...s,
1651
1647
  id: e(r).attr("eId") ?? e(r).attr("GUID"),
@@ -1654,26 +1650,27 @@ function Wn(e, t) {
1654
1650
  });
1655
1651
  }), n;
1656
1652
  }
1657
- function Gn(e) {
1653
+ function Hn(e) {
1658
1654
  let t = e("body").first().get(0);
1659
- return t === void 0 ? { items: [] } : Wn(e, t);
1655
+ return t === void 0 ? { items: [] } : Vn(e, t);
1660
1656
  }
1661
- function Kn(e) {
1657
+ function Un(e) {
1662
1658
  return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
1663
1659
  }
1664
- function qn(e) {
1660
+ function Wn(e) {
1661
+ e("table").each((t, n) => dn(e, n));
1665
1662
  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>"];
1666
- return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(fn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1667
- L(n) && r.push(H(n) === "article" ? An(e, n, "article", "akn-article") : U(e, n));
1663
+ return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(ln(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1664
+ F(n) && r.push(B(n) === "article" ? U(e, n, "article", "akn-article") : V(e, n));
1668
1665
  }), r.push("</section></div>"), r.join("\n");
1669
1666
  }
1670
- function Jn(e) {
1671
- let t = w(e, { xml: {
1667
+ function Gn(e) {
1668
+ let t = y(e, { xml: {
1672
1669
  decodeEntities: !1,
1673
1670
  lowerCaseTags: !1,
1674
1671
  lowerCaseAttributeNames: !1,
1675
1672
  xmlMode: !0
1676
- } }), n = Kn(t), r = qn(t);
1673
+ } }), n = Un(t), r = Wn(t);
1677
1674
  return {
1678
1675
  sourceFormat: "akoma-ntoso",
1679
1676
  documentDate: n,
@@ -1681,42 +1678,42 @@ function Jn(e) {
1681
1678
  linkedHtml: r
1682
1679
  };
1683
1680
  }
1684
- function Yn(e) {
1685
- return Xn(w(e));
1681
+ function Kn(e) {
1682
+ return qn(y(e));
1686
1683
  }
1687
- function Xn(e) {
1684
+ function qn(e) {
1688
1685
  let t = [];
1689
1686
  return e("article.akn-article").each((n, r) => {
1690
- let i = e(r).find("p.TCNumArticle").first().get(0), a = P(i ? e(i).text() : ""), o = g(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Dt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1687
+ let a = e(r).find("p.TCNumArticle").first().get(0), o = M(a ? e(a).text() : ""), s = i(o) ?? { label: o || `Article ${n + 1}` }, c = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, l = [r], u = wt(e, c, l), d = u.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1691
1688
  t.push({
1692
- id: s,
1693
- label: o.label,
1694
- num: o.num,
1695
- title: o.title,
1696
- text: lt(e, c),
1697
- html: at(e, r),
1698
- directiveText: u,
1699
- blocks: l
1689
+ id: c,
1690
+ label: s.label,
1691
+ num: s.num,
1692
+ title: s.title,
1693
+ text: ot(e, l),
1694
+ html: nt(e, r),
1695
+ directiveText: d,
1696
+ blocks: u
1700
1697
  });
1701
1698
  }), t;
1702
1699
  }
1703
- function Zn(e) {
1704
- let t = w(e);
1700
+ function Jn(e) {
1701
+ let t = y(e);
1705
1702
  return {
1706
- articles: Xn(t),
1703
+ articles: qn(t),
1707
1704
  htmlWithLinks: t.html()
1708
1705
  };
1709
1706
  }
1710
- async function Qn(e, t) {
1711
- let n = new Ee("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => w(e, { xml: {
1707
+ async function Yn(e, t) {
1708
+ let n = new Te("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => y(e, { xml: {
1712
1709
  decodeEntities: !1,
1713
1710
  lowerCaseTags: !1,
1714
1711
  lowerCaseAttributeNames: !1,
1715
1712
  xmlMode: !0
1716
- } })), i = t.date ?? Kn(r), a = n.timeSync("renderAknHtml", () => qn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => dt(a, {
1713
+ } })), i = t.date ?? Un(r), a = n.timeSync("renderAknHtml", () => Wn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => ct(a, {
1717
1714
  ...t,
1718
1715
  date: i
1719
- }, i)), s = n.timeSync("extractRenderedAknArticles", () => Yn(a)), c = n.timeSync("injectHiddenArticleSummary", () => Ot(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Zn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Gn(r)), p = n.timeSync("buildParsedDocument", () => nn("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, on(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1716
+ }, i)), s = n.timeSync("extractRenderedAknArticles", () => Kn(a)), c = n.timeSync("injectHiddenArticleSummary", () => Tt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Jn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Hn(r)), p = n.timeSync("buildParsedDocument", () => $t("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, nn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1720
1717
  return n.log({
1721
1718
  articleCount: p.articles.length,
1722
1719
  blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1724,25 +1721,25 @@ async function Qn(e, t) {
1724
1721
  targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
1725
1722
  }), p;
1726
1723
  }
1727
- async function $n(e, t) {
1728
- let n = Jn(e), r = t.date ?? n.documentDate;
1724
+ async function Xn(e, t) {
1725
+ let n = Gn(e), r = t.date ?? n.documentDate;
1729
1726
  return {
1730
1727
  sourceFormat: "akoma-ntoso",
1731
1728
  documentDate: r,
1732
1729
  html: n.html,
1733
- linkedHtml: await dt(n.html, t, r)
1730
+ linkedHtml: await ct(n.html, t, r)
1734
1731
  };
1735
1732
  }
1736
1733
  //#endregion
1737
1734
  //#region src/lib/server/assemblee_document_search.ts
1738
- var er = /\bexpos[ée]\s+des\s+motifs\b/giu, tr = /\barticle\s+(?:premier|1er|\d+)/iu;
1739
- function nr(e) {
1735
+ var Zn = /\bexpos[ée]\s+des\s+motifs\b/giu, Qn = /\barticle\s+(?:premier|1er|\d+)/iu;
1736
+ function $n(e) {
1740
1737
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
1741
1738
  }
1742
- function rr(e) {
1743
- let t = nr(w(e).text()), n = [...t.matchAll(er)], r = /* @__PURE__ */ new Set(), i = [];
1739
+ function er(e) {
1740
+ let t = $n(y(e).text()), n = [...t.matchAll(Zn)], r = /* @__PURE__ */ new Set(), i = [];
1744
1741
  for (let [e, a] of n.entries()) {
1745
- let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = tr.exec(s), l = nr(s.slice(0, c?.index ?? s.length));
1742
+ let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = Qn.exec(s), l = $n(s.slice(0, c?.index ?? s.length));
1746
1743
  if (l.length < 20 || r.has(l)) continue;
1747
1744
  r.add(l);
1748
1745
  let u = `expose-des-motifs-${e + 1}`;
@@ -1758,8 +1755,8 @@ function rr(e) {
1758
1755
  }
1759
1756
  return i;
1760
1757
  }
1761
- async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1762
- let i = await cn(t, {
1758
+ async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1759
+ let i = await an(t, {
1763
1760
  date: e,
1764
1761
  includeDirectiveAnalysis: !1,
1765
1762
  linkBaseUrl: n,
@@ -1768,7 +1765,7 @@ async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1768
1765
  });
1769
1766
  return {
1770
1767
  items: [...i.articles.map((e) => {
1771
- let t = nr(e.directiveText || e.text);
1768
+ let t = $n(e.directiveText || e.text);
1772
1769
  if (t) return {
1773
1770
  anchor: e.id,
1774
1771
  articleNumber: e.num ?? null,
@@ -1778,17 +1775,17 @@ async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1778
1775
  label: e.label,
1779
1776
  title: e.title ?? null
1780
1777
  };
1781
- }).filter((e) => e !== void 0), ...rr(t)],
1778
+ }).filter((e) => e !== void 0), ...er(t)],
1782
1779
  tableOfContents: i.tableOfContents
1783
1780
  };
1784
1781
  }
1785
- function ar(e, t) {
1786
- return je("sha256").update(JSON.stringify({
1782
+ function nr(e, t) {
1783
+ return ke("sha256").update(JSON.stringify({
1787
1784
  item: e,
1788
1785
  metadata: t
1789
1786
  })).digest("hex");
1790
1787
  }
1791
- function or(e) {
1788
+ function rr(e) {
1792
1789
  if (typeof e != "object" || !e) return;
1793
1790
  let t = e.cycleDeVie?.chrono;
1794
1791
  if (t !== void 0) for (let e of [
@@ -1803,11 +1800,11 @@ function or(e) {
1803
1800
  }
1804
1801
  //#endregion
1805
1802
  //#region src/lib/server/senat_amendment_search.ts
1806
- function sr(e) {
1807
- return e?.trim() ? w(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1803
+ function ir(e) {
1804
+ return e?.trim() ? y(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1808
1805
  }
1809
- function cr({ dispositifHtml: e, objetHtml: t }) {
1810
- let n = sr(e), r = sr(t);
1806
+ function ar({ dispositifHtml: e, objetHtml: t }) {
1807
+ let n = ir(e), r = ir(t);
1811
1808
  return [...n ? [{
1812
1809
  content: n,
1813
1810
  itemKind: "dispositif",
@@ -1818,8 +1815,8 @@ function cr({ dispositifHtml: e, objetHtml: t }) {
1818
1815
  label: "Objet"
1819
1816
  }] : []];
1820
1817
  }
1821
- function lr(e, t) {
1822
- return je("sha256").update(JSON.stringify({
1818
+ function or(e, t) {
1819
+ return ke("sha256").update(JSON.stringify({
1823
1820
  item: e,
1824
1821
  metadata: t
1825
1822
  })).digest("hex");
@@ -1833,76 +1830,76 @@ function W(e, t) {
1833
1830
  type: "amendment_action_directive"
1834
1831
  };
1835
1832
  }
1836
- function ur(e, t) {
1833
+ function sr(e, t) {
1837
1834
  return {
1838
1835
  type: e === "start" ? "head_of_target" : "tail_after_target",
1839
- unit: t ? n(t) : "article"
1836
+ unit: t ? ue(t) : "article"
1840
1837
  };
1841
1838
  }
1842
- function dr(e) {
1839
+ function cr(e) {
1843
1840
  return e === "start" ? "insert_before" : "insert_after";
1844
1841
  }
1845
- var fr = k(D("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = E(o, T([D("les?\\s+", { flags: "i" }), ne], { value: (e) => e[1] }), ne, p), pr = E(T([D("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1842
+ var lr = O(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = T(u, w([E("les?\\s+", { flags: "i" }), C], { value: (e) => e[1] }), C, pe), ur = T(w([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1846
1843
  let t = e[1];
1847
1844
  return {
1848
1845
  targetReference: t,
1849
1846
  targetScope: {
1850
1847
  type: "tail_after_target",
1851
- unit: n(t)
1848
+ unit: ue(t)
1852
1849
  }
1853
1850
  };
1854
- } }), T([m], { value: (e) => ({ targetScope: e[0] }) })), K = k(T([
1855
- k(D("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1856
- k(D("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1851
+ } }), w([n], { value: (e) => ({ targetScope: e[0] }) })), K = O(w([
1852
+ O(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1853
+ O(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1857
1854
  G,
1858
- k(D("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1855
+ O(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1859
1856
  ], { value: (e, t) => ({
1860
1857
  reference: e[2],
1861
1858
  text: t.text()
1862
- }) }), { default: null }), mr = k(D(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Se})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1859
+ }) }), { default: null }), dr = O(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${xe})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1863
1860
  function q(e) {
1864
1861
  return e?.text ?? "";
1865
1862
  }
1866
- function hr(e) {
1867
- return { citation: f(e.position()) };
1863
+ function fr(t) {
1864
+ return { citation: e(t.position()) };
1868
1865
  }
1869
- var J = E(T([l], { value: (e) => ({ citation: e[0] }) }), D("\\S[\\s\\S]*", { value: (e, t) => hr(t) })), gr = D("\\S[\\s\\S]*", { value: (e, t) => hr(t) }), Y = D("[^:«“\"]*(?::\\s*)?", { flags: "i" }), _r = D("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1866
+ var J = T(w([g], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => fr(t) })), pr = E("\\S[\\s\\S]*", { value: (e, t) => fr(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), mr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1870
1867
  flags: "i",
1871
- value: (e, t) => hr(t)
1872
- }), vr = D("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1868
+ value: (e, t) => fr(t)
1869
+ }), hr = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1873
1870
  flags: "i",
1874
- value: (e, t) => hr(t)
1875
- }), yr = D("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1871
+ value: (e, t) => fr(t)
1872
+ }), gr = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1876
1873
  flags: "i",
1877
- value: (e, t) => hr(t)
1878
- }), br = E(T([l], { value: (e) => ({ citation: e[0] }) }), _r), xr = E(T([l], { value: (e) => ({ citation: e[0] }) }), yr), Sr = T([D(`${a}s?\\s*:?\\s*`, { flags: "i" }), br], { value: (e) => e[1] }), Cr = T([D(`${h}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), xr], { value: (e) => e[1] }), wr = E(T([l], { value: (e) => ({ citation: e[0] }) }), vr), Tr = T([
1879
- mr,
1880
- D(`${a}s?\\s*:?\\s*`, { flags: "i" }),
1881
- wr
1882
- ], { value: (e) => e[2] }), Er = T([
1883
- mr,
1884
- D(`${a}s?\\s*:?\\s*`, { flags: "i" }),
1885
- E(T([l], { value: (e) => ({ citation: e[0] }) }), gr)
1874
+ value: (e, t) => fr(t)
1875
+ }), _r = T(w([g], { value: (e) => ({ citation: e[0] }) }), mr), vr = T(w([g], { value: (e) => ({ citation: e[0] }) }), gr), yr = w([E(`${r}s?\\s*:?\\s*`, { flags: "i" }), _r], { value: (e) => e[1] }), br = w([E(`${a}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = T(w([g], { value: (e) => ({ citation: e[0] }) }), hr), Sr = w([
1876
+ dr,
1877
+ E(`${r}s?\\s*:?\\s*`, { flags: "i" }),
1878
+ xr
1879
+ ], { value: (e) => e[2] }), Cr = w([
1880
+ dr,
1881
+ E(`${r}s?\\s*:?\\s*`, { flags: "i" }),
1882
+ T(w([g], { value: (e) => ({ citation: e[0] }) }), pr)
1886
1883
  ], { value: (e) => e[2] });
1887
1884
  function X(e) {
1888
1885
  return e?.reference;
1889
1886
  }
1890
- var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1887
+ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1891
1888
  contextText: e[0],
1892
1889
  kind: "delete_article"
1893
- }) }), Or = T([
1890
+ }) }), Tr = w([
1894
1891
  K,
1895
- D("supprimer", { flags: "i" }),
1896
- k(T([A, G], { value: (e) => e[1] }), { default: null }),
1897
- k(T([A, Er], { value: (e) => e[1] }), { default: null })
1892
+ E("supprimer", { flags: "i" }),
1893
+ O(w([k, G], { value: (e) => e[1] }), { default: null }),
1894
+ O(w([k, Cr], { value: (e) => e[1] }), { default: null })
1898
1895
  ], { value: (e, t) => W(t, {
1899
1896
  contextText: q(e[0]),
1900
1897
  kind: "delete_portion",
1901
1898
  targetCitation: e[3]?.citation ?? void 0,
1902
1899
  targetReference: e[2] ?? X(e[0])
1903
- }) }), kr = T([
1900
+ }) }), Er = w([
1904
1901
  K,
1905
- E(D("r[eé]diger\\s+ainsi", { flags: "i" }), D("r[eé]tablir", { flags: "i" })),
1902
+ T(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
1906
1903
  Y,
1907
1904
  J
1908
1905
  ], { value: (e, t) => W(t, {
@@ -1910,76 +1907,76 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1910
1907
  kind: "rewrite_portion",
1911
1908
  replacementCitation: e[3].citation,
1912
1909
  targetReference: X(e[0])
1913
- }) }), Ar = T([
1910
+ }) }), Dr = w([
1914
1911
  K,
1915
- E(D("substituer", { flags: "i" }), D("remplacer", { flags: "i" })),
1916
- A,
1917
- mr,
1918
- Sr,
1919
- D("\\s*,?\\s*"),
1920
- k(D("par\\s+", { flags: "i" }), { default: "" }),
1921
- Cr
1912
+ T(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
1913
+ k,
1914
+ dr,
1915
+ yr,
1916
+ E("\\s*,?\\s*"),
1917
+ O(E("par\\s+", { flags: "i" }), { default: "" }),
1918
+ br
1922
1919
  ], { value: (e, t) => W(t, {
1923
1920
  contextText: q(e[0]),
1924
1921
  kind: "replace",
1925
1922
  replacementCitation: e[7].citation,
1926
1923
  targetCitation: e[4].citation,
1927
1924
  targetReference: X(e[0])
1928
- }) }), jr = T([
1925
+ }) }), Or = w([
1929
1926
  K,
1930
- D("substituer", { flags: "i" }),
1931
- A,
1932
- k(D("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1927
+ E("substituer", { flags: "i" }),
1928
+ k,
1929
+ O(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1933
1930
  G,
1934
- D("[\\s\\S]*?(?=[«“\"]|$)"),
1931
+ E("[\\s\\S]*?(?=[«“\"]|$)"),
1935
1932
  J
1936
1933
  ], { value: (e, t) => W(t, {
1937
1934
  contextText: q(e[0]),
1938
1935
  kind: "rewrite_portion",
1939
1936
  replacementCitation: e[6].citation,
1940
1937
  targetReference: e[4] ?? X(e[0])
1941
- }) }), Mr = T([
1942
- e,
1943
- A,
1944
- D("l['’ ]article", { flags: "i" }),
1945
- D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1946
- D("ins[eé]rer", { flags: "i" }),
1938
+ }) }), kr = w([
1939
+ S,
1940
+ k,
1941
+ E("l['’ ]article", { flags: "i" }),
1942
+ E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1943
+ E("ins[eé]rer", { flags: "i" }),
1947
1944
  Y,
1948
1945
  J
1949
1946
  ], { value: (e, t) => W(t, {
1950
1947
  contextText: "",
1951
1948
  insertCitation: e[6].citation,
1952
1949
  kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
1953
- }) }), Nr = T([
1954
- e,
1955
- A,
1950
+ }) }), Ar = w([
1951
+ S,
1952
+ k,
1956
1953
  G,
1957
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1958
- E(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
1954
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1955
+ T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
1959
1956
  Y,
1960
1957
  J
1961
- ], { value: (e, t) => W(t, {
1958
+ ], { value: (e, n) => W(n, {
1962
1959
  contextText: "",
1963
1960
  insertCitation: e[6].citation,
1964
- kind: C(e[0]),
1961
+ kind: t(e[0]),
1965
1962
  targetReference: e[2]
1966
- }) }), Pr = T([
1967
- e,
1968
- A,
1969
- D("l['’ ]alin[eé]a", { flags: "i" }),
1970
- D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1971
- D("ins[eé]rer", { flags: "i" }),
1963
+ }) }), jr = w([
1964
+ S,
1965
+ k,
1966
+ E("l['’ ]alin[eé]a", { flags: "i" }),
1967
+ E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1968
+ E("ins[eé]rer", { flags: "i" }),
1972
1969
  Y,
1973
1970
  J
1974
- ], { value: (e, t) => W(t, {
1971
+ ], { value: (e, n) => W(n, {
1975
1972
  contextText: "",
1976
1973
  insertCitation: e[6].citation,
1977
- kind: C(e[0])
1978
- }) }), Fr = T([
1974
+ kind: t(e[0])
1975
+ }) }), Mr = w([
1979
1976
  K,
1980
- d,
1981
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1982
- E(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
1977
+ ee,
1978
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1979
+ T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
1983
1980
  Y,
1984
1981
  J
1985
1982
  ], { value: (e, t) => {
@@ -1987,62 +1984,62 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1987
1984
  return W(t, {
1988
1985
  contextText: q(n),
1989
1986
  insertCitation: e[5].citation,
1990
- kind: dr(i),
1987
+ kind: cr(i),
1991
1988
  targetReference: r,
1992
- targetScope: ur(i, r)
1989
+ targetScope: sr(i, r)
1993
1990
  });
1994
- } }), Ir = T([
1991
+ } }), Nr = w([
1995
1992
  K,
1996
- e,
1997
- A,
1998
- Tr,
1999
- D("[\\s\\S]*?(?=ins[eé]rer)"),
2000
- D("ins[eé]rer", { flags: "i" }),
2001
- A,
2002
- Cr
2003
- ], { value: (e, t) => W(t, {
1993
+ S,
1994
+ k,
1995
+ Sr,
1996
+ E("[\\s\\S]*?(?=ins[eé]rer)"),
1997
+ E("ins[eé]rer", { flags: "i" }),
1998
+ k,
1999
+ br
2000
+ ], { value: (e, n) => W(n, {
2004
2001
  contextText: q(e[0]),
2005
2002
  insertCitation: e[7].citation,
2006
- kind: C(e[1]),
2003
+ kind: t(e[1]),
2007
2004
  targetCitation: e[3].citation,
2008
2005
  targetReference: X(e[0])
2009
- }) }), Lr = T([
2006
+ }) }), Pr = w([
2010
2007
  K,
2011
- e,
2012
- A,
2008
+ S,
2009
+ k,
2013
2010
  G,
2014
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2015
- E(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2011
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2012
+ T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
2016
2013
  Y,
2017
2014
  J
2018
- ], { value: (e, t) => W(t, {
2015
+ ], { value: (e, n) => W(n, {
2019
2016
  contextText: q(e[0]),
2020
2017
  insertCitation: e[7].citation,
2021
- kind: C(e[1]),
2018
+ kind: t(e[1]),
2022
2019
  targetReference: X(e[0]) ?? e[3]
2023
- }) }), Rr = E(Fr, Mr, Nr, Pr, jr, T([
2020
+ }) }), Fr = T(Mr, kr, Ar, jr, Or, w([
2024
2021
  K,
2025
- e,
2026
- A,
2027
- Tr,
2028
- D("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2029
- E(T([
2030
- D("supprimer", {
2022
+ S,
2023
+ k,
2024
+ Sr,
2025
+ E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2026
+ T(w([
2027
+ E("supprimer", {
2031
2028
  flags: "i",
2032
2029
  value: "delete_portion"
2033
2030
  }),
2034
- A,
2035
- pr
2031
+ k,
2032
+ ur
2036
2033
  ], { value: (e) => ({
2037
2034
  kind: e[0],
2038
2035
  ...e[2]
2039
- }) }), T([
2040
- D("r[eé]diger\\s+ainsi", {
2036
+ }) }), w([
2037
+ E("r[eé]diger\\s+ainsi", {
2041
2038
  flags: "i",
2042
2039
  value: "rewrite_portion"
2043
2040
  }),
2044
- A,
2045
- pr,
2041
+ k,
2042
+ ur,
2046
2043
  Y,
2047
2044
  J
2048
2045
  ], { value: (e) => ({
@@ -2060,24 +2057,24 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2060
2057
  targetReference: X(e[0]) ?? n.targetReference,
2061
2058
  targetScope: n.targetScope
2062
2059
  });
2063
- } }), Ir, Lr, T([
2064
- fr,
2065
- D("ins[eé]rer", { flags: "i" }),
2066
- D(`[\\s\\S]*?(?=${S})`, { flags: "i" }),
2067
- e,
2060
+ } }), Nr, Pr, w([
2061
+ lr,
2062
+ E("ins[eé]rer", { flags: "i" }),
2063
+ E(`[\\s\\S]*?(?=${c})`, { flags: "i" }),
2064
+ S,
2068
2065
  Y,
2069
- l,
2066
+ g,
2070
2067
  Y,
2071
- l
2072
- ], { value: (e, t) => W(t, {
2068
+ g
2069
+ ], { value: (e, n) => W(n, {
2073
2070
  contextText: e[0],
2074
2071
  insertCitation: e[8],
2075
- kind: C(e[3]),
2072
+ kind: t(e[3]),
2076
2073
  targetCitation: e[6]
2077
- }) }), Ar, kr, T([
2074
+ }) }), Dr, Er, w([
2078
2075
  K,
2079
- D("compl[eé]ter", { flags: "i" }),
2080
- k(T([A, G], { value: (e) => e[1] }), { default: null }),
2076
+ E("compl[eé]ter", { flags: "i" }),
2077
+ O(w([k, G], { value: (e) => e[1] }), { default: null }),
2081
2078
  Y,
2082
2079
  J
2083
2080
  ], { value: (e, t) => W(t, {
@@ -2085,16 +2082,16 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2085
2082
  insertCitation: e[4].citation,
2086
2083
  kind: "insert_after",
2087
2084
  targetReference: e[2] ?? X(e[0])
2088
- }) }), Dr, Or);
2085
+ }) }), wr, Tr);
2089
2086
  //#endregion
2090
2087
  //#region src/lib/server/parsed_amendments.ts
2091
- function zr(e) {
2088
+ function Ir(e) {
2092
2089
  return e.replace(/\s+/gu, " ").trim();
2093
2090
  }
2094
- function Br(e) {
2095
- return e.split(/\n/gu).map(zr).filter(Boolean).join("\n");
2091
+ function Lr(e) {
2092
+ return e.split(/\n/gu).map(Ir).filter(Boolean).join("\n");
2096
2093
  }
2097
- function Vr(e, t) {
2094
+ function Rr(e, t) {
2098
2095
  let { start: n, stop: r } = t;
2099
2096
  for (; n < r && /\s/u.test(e[n]);) n++;
2100
2097
  for (; r > n && /\s/u.test(e[r - 1]);) r--;
@@ -2103,16 +2100,16 @@ function Vr(e, t) {
2103
2100
  stop: r
2104
2101
  } : null;
2105
2102
  }
2106
- function Hr(e, t) {
2107
- return ge(ve(e), t);
2103
+ function zr(e, t) {
2104
+ return he(_e(e), t);
2108
2105
  }
2109
- function Ur(e) {
2106
+ function Br(e) {
2110
2107
  return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
2111
2108
  }
2112
- function Wr(e) {
2109
+ function Vr(e) {
2113
2110
  return {
2114
2111
  articleLabel: e.targetArticleLabel ?? null,
2115
- targetPosition: Ur(e.targetPosition),
2112
+ targetPosition: Br(e.targetPosition),
2116
2113
  alinea: e.targetAlinea ?? null,
2117
2114
  alineaLabel: e.targetAlineaLabel ?? null,
2118
2115
  subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
@@ -2127,36 +2124,36 @@ function Z(e) {
2127
2124
  sourceText: e.text
2128
2125
  };
2129
2126
  }
2130
- function Gr(e) {
2127
+ function Hr(e) {
2131
2128
  return {
2132
2129
  ...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
2133
2130
  sourcePosition: e.position,
2134
2131
  sourceText: e.text
2135
2132
  };
2136
2133
  }
2137
- function Kr(e) {
2134
+ function Ur(e) {
2138
2135
  return {
2139
2136
  ...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
2140
2137
  ...e === null ? {} : { dispositifPosition: e.position },
2141
2138
  dispositifText: e?.text ?? null
2142
2139
  };
2143
2140
  }
2144
- function qr(e, t, n, r = Br(e.slice(n.start, n.stop))) {
2141
+ function Wr(e, t, n, r = Lr(e.slice(n.start, n.stop))) {
2145
2142
  return {
2146
- originalTransformation: Hr(t, n),
2143
+ originalTransformation: zr(t, n),
2147
2144
  position: n,
2148
2145
  text: r
2149
2146
  };
2150
2147
  }
2151
- function Jr(e) {
2148
+ function Gr(e) {
2152
2149
  let t = e.dispositifHtml ?? e.dispositifText;
2153
2150
  if (!t) return null;
2154
- let n = e.dispositifHtml ? ye()(t) : Ce(t), r = n.output, i = Vr(r, {
2151
+ let n = e.dispositifHtml ? ve()(t) : Se(t), r = n.output, i = Rr(r, {
2155
2152
  start: 0,
2156
2153
  stop: r.length
2157
2154
  });
2158
2155
  return {
2159
- dispositif: i === null ? null : qr(r, n, i),
2156
+ dispositif: i === null ? null : Wr(r, n, i),
2160
2157
  simplifiedText: r,
2161
2158
  transformation: n
2162
2159
  };
@@ -2173,10 +2170,10 @@ function Q(e) {
2173
2170
  return t === void 0 ? [] : Array.from({ length: e.count }, (e, n) => t + n);
2174
2171
  }
2175
2172
  if (e.type === "exclusion") return Q(e.left);
2176
- for (let t of c(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2173
+ for (let t of f(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2177
2174
  return [];
2178
2175
  }
2179
- function Yr(e, t) {
2176
+ function Kr(e, t) {
2180
2177
  let n = Q(t);
2181
2178
  return {
2182
2179
  ...e,
@@ -2184,11 +2181,11 @@ function Yr(e, t) {
2184
2181
  ...n.length > 0 ? { alineas: n } : {}
2185
2182
  };
2186
2183
  }
2187
- function Xr(e) {
2184
+ function qr(e) {
2188
2185
  return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
2189
2186
  }
2190
- function Zr(e, t) {
2191
- let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Xr(t.text));
2187
+ function Jr(e, t) {
2188
+ let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(qr(t.text));
2192
2189
  if (!n) return null;
2193
2190
  let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
2194
2191
  return !Number.isFinite(r) || r < 1 ? null : {
@@ -2197,25 +2194,25 @@ function Zr(e, t) {
2197
2194
  alineas: [r]
2198
2195
  };
2199
2196
  }
2200
- function Qr(e, t) {
2197
+ function Yr(e, t) {
2201
2198
  if (e) return e.unit === "article" && t.alinea !== null ? {
2202
2199
  ...e,
2203
2200
  unit: "alinéa"
2204
2201
  } : e;
2205
2202
  }
2206
- function $r(e) {
2207
- return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Xr(e.text));
2203
+ function Xr(e) {
2204
+ return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(qr(e.text));
2208
2205
  }
2209
- function ei(e, t, n, r) {
2210
- return qr(e, t, {
2206
+ function Zr(e, t, n, r) {
2207
+ return Wr(e, t, {
2211
2208
  start: n.position.start,
2212
2209
  stop: r.position.stop
2213
2210
  });
2214
2211
  }
2215
- function ti(e) {
2212
+ function Qr(e) {
2216
2213
  return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
2217
2214
  }
2218
- function ni(e, t) {
2215
+ function $r(e, t) {
2219
2216
  let n = { ...t.position };
2220
2217
  function r(t) {
2221
2218
  let r = t.exec(e.slice(n.start, n.stop));
@@ -2224,29 +2221,29 @@ function ni(e, t) {
2224
2221
  stop: n.stop
2225
2222
  });
2226
2223
  }
2227
- 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), Vr(e, n);
2224
+ 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), Rr(e, n);
2228
2225
  }
2229
- function ri(e) {
2230
- return pe(e);
2226
+ function ei(e) {
2227
+ return p(e);
2231
2228
  }
2232
- function ii(e, t) {
2233
- return Rr(new O(e.slice(0, t.stop), t.start)) ?? null;
2229
+ function ti(e, t) {
2230
+ return Fr(new D(e.slice(0, t.stop), t.start)) ?? null;
2234
2231
  }
2235
2232
  function $(e, t, n) {
2236
- if (n) return qr(e, t, n.position, Br(_(e, n)));
2233
+ if (n) return Wr(e, t, n.position, Lr(d(e, n)));
2237
2234
  }
2238
- function ai(e, t) {
2235
+ function ni(e, t) {
2239
2236
  if (!e) return;
2240
2237
  let n = structuredClone(e);
2241
- for (let e of u(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Hr(t, e.position));
2238
+ for (let e of me(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = zr(t, e.position));
2242
2239
  return n;
2243
2240
  }
2244
- function oi(e, t, n, r) {
2245
- let i = ni(e, n);
2241
+ function ri(e, t, n, r) {
2242
+ let i = $r(e, n);
2246
2243
  if (!i) return null;
2247
- let a = ii(e, i);
2244
+ let a = ti(e, i);
2248
2245
  if (!a) return null;
2249
- let o = qr(e, t, i), s = ai(a.targetReference, t), c = Yr(r, s), l = ri(o.text);
2246
+ let o = Wr(e, t, i), s = ni(a.targetReference, t), c = Kr(r, s), l = ei(o.text);
2250
2247
  if (a.kind === "delete_article") return {
2251
2248
  kind: "delete_article",
2252
2249
  ...Z(o),
@@ -2264,7 +2261,7 @@ function oi(e, t, n, r) {
2264
2261
  },
2265
2262
  targetOccurrence: l,
2266
2263
  targetReference: s,
2267
- targetScope: Qr(a.targetScope, c)
2264
+ targetScope: Yr(a.targetScope, c)
2268
2265
  };
2269
2266
  }
2270
2267
  if (a.kind === "rewrite_portion") {
@@ -2281,7 +2278,7 @@ function oi(e, t, n, r) {
2281
2278
  },
2282
2279
  targetOccurrence: l,
2283
2280
  targetReference: s,
2284
- targetScope: Qr(a.targetScope, c),
2281
+ targetScope: Yr(a.targetScope, c),
2285
2282
  replacementCitation: n,
2286
2283
  replacementText: n.text
2287
2284
  };
@@ -2336,19 +2333,19 @@ function oi(e, t, n, r) {
2336
2333
  targetReference: s,
2337
2334
  insertCitation: n,
2338
2335
  insertText: n.text,
2339
- targetScope: Qr(a.targetScope, c)
2336
+ targetScope: Yr(a.targetScope, c)
2340
2337
  };
2341
2338
  }
2342
2339
  return null;
2343
2340
  }
2344
- function si(e, t) {
2341
+ function ii(e, t) {
2345
2342
  let n = [], r = 0, i = 0;
2346
2343
  function a(r) {
2347
- let a = Vr(e, {
2344
+ let a = Rr(e, {
2348
2345
  start: i,
2349
2346
  stop: r
2350
2347
  });
2351
- a !== null && n.push(qr(e, t, a));
2348
+ a !== null && n.push(Wr(e, t, a));
2352
2349
  }
2353
2350
  function o(t) {
2354
2351
  let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
@@ -2366,7 +2363,7 @@ function si(e, t) {
2366
2363
  continue;
2367
2364
  }
2368
2365
  if (r > 0) continue;
2369
- 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) && $r({
2366
+ 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) && Xr({
2370
2367
  originalTransformation: void 0,
2371
2368
  position: {
2372
2369
  start: i,
@@ -2378,8 +2375,8 @@ function si(e, t) {
2378
2375
  }
2379
2376
  return a(e.length), n;
2380
2377
  }
2381
- function ci(e) {
2382
- let t = Jr(e), n = t?.dispositif ?? null, r = Kr(n), i = [], a = [], o = Wr(e);
2378
+ function ai(e) {
2379
+ let t = Gr(e), n = t?.dispositif ?? null, r = Ur(n), i = [], a = [], o = Vr(e);
2383
2380
  if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
2384
2381
  code: "unsupported_sub_amendment",
2385
2382
  message: "Les sous-amendements ne sont pas encore projetés."
@@ -2397,9 +2394,9 @@ function ci(e) {
2397
2394
  });
2398
2395
  else {
2399
2396
  let { simplifiedText: e, transformation: r } = t, s = o, c = null;
2400
- for (let t of si(e, r)) {
2401
- ti(t) && (s = o, c = null);
2402
- let n = c ? ei(e, r, c, t) : t, i = oi(e, r, n, s);
2397
+ for (let t of ii(e, r)) {
2398
+ Qr(t) && (s = o, c = null);
2399
+ let n = c ? Zr(e, r, c, t) : t, i = ri(e, r, n, s);
2403
2400
  if (i) {
2404
2401
  a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
2405
2402
  continue;
@@ -2408,12 +2405,12 @@ function ci(e) {
2408
2405
  c = n;
2409
2406
  continue;
2410
2407
  }
2411
- let l = Zr(o, t);
2408
+ let l = Jr(o, t);
2412
2409
  if (l !== null) {
2413
2410
  s = l;
2414
2411
  continue;
2415
2412
  }
2416
- $r(t) && (c = t);
2413
+ Xr(t) && (c = t);
2417
2414
  }
2418
2415
  a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
2419
2416
  kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
@@ -2424,7 +2421,7 @@ function ci(e) {
2424
2421
  }), a.length === 0 && i.push({
2425
2422
  code: "unrecognized_dispositif",
2426
2423
  message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
2427
- ...Gr(n)
2424
+ ...Hr(n)
2428
2425
  });
2429
2426
  }
2430
2427
  return {
@@ -2438,25 +2435,25 @@ function ci(e) {
2438
2435
  }
2439
2436
  //#endregion
2440
2437
  //#region src/lib/server/senat_document_search.ts
2441
- function li(e) {
2438
+ function oi(e) {
2442
2439
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
2443
2440
  }
2444
- function ui(e) {
2445
- let t = g(e);
2441
+ function si(e) {
2442
+ let t = i(e);
2446
2443
  if (!t) return {
2447
2444
  articleNumber: null,
2448
2445
  label: e,
2449
2446
  title: null
2450
2447
  };
2451
- let n = li(t.num ?? "") || null, r = li(t.title ?? "") || null;
2448
+ let n = oi(t.num ?? "") || null, r = oi(t.title ?? "") || null;
2452
2449
  return {
2453
2450
  articleNumber: n,
2454
2451
  label: t.label,
2455
2452
  title: r
2456
2453
  };
2457
2454
  }
2458
- function di(e) {
2459
- let t = w(e), n = [], r = li(t("section.akn-preamble").text());
2455
+ function ci(e) {
2456
+ let t = y(e), n = [], r = oi(t("section.akn-preamble").text());
2460
2457
  return r && n.push({
2461
2458
  anchor: "senat-expose-des-motifs",
2462
2459
  articleNumber: null,
@@ -2466,9 +2463,9 @@ function di(e) {
2466
2463
  label: "Exposé des motifs",
2467
2464
  title: null
2468
2465
  }), t("article.akn-article").each((e, r) => {
2469
- let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = li(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = ui(o || s), l = i.clone();
2466
+ let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = oi(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = si(o || s), l = i.clone();
2470
2467
  l.children("p.TCNumArticle").remove();
2471
- let u = li(l.text());
2468
+ let u = oi(l.text());
2472
2469
  u && n.push({
2473
2470
  anchor: i.attr("id") || null,
2474
2471
  articleNumber: c.articleNumber,
@@ -2480,40 +2477,40 @@ function di(e) {
2480
2477
  });
2481
2478
  }), n;
2482
2479
  }
2483
- function fi(e, t) {
2484
- return je("sha256").update(JSON.stringify({
2480
+ function li(e, t) {
2481
+ return ke("sha256").update(JSON.stringify({
2485
2482
  item: e,
2486
2483
  metadata: t
2487
2484
  })).digest("hex");
2488
2485
  }
2489
2486
  //#endregion
2490
2487
  //#region src/lib/server/senat_document_sources.ts
2491
- var pi = new Set(["senat.fr", "www.senat.fr"]), mi = "https://www.senat.fr";
2492
- function hi(e) {
2488
+ var ui = new Set(["senat.fr", "www.senat.fr"]), di = "https://www.senat.fr";
2489
+ function fi(e) {
2493
2490
  return e?.trim() || void 0;
2494
2491
  }
2495
- function gi(e) {
2492
+ function pi(e) {
2496
2493
  try {
2497
- let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, mi);
2498
- return pi.has(n.hostname.toLowerCase()) ? n : void 0;
2494
+ let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, di);
2495
+ return ui.has(n.hostname.toLowerCase()) ? n : void 0;
2499
2496
  } catch {
2500
2497
  return;
2501
2498
  }
2502
2499
  }
2503
- function _i(e) {
2504
- let t = hi(e);
2500
+ function mi(e) {
2501
+ let t = fi(e);
2505
2502
  if (t === void 0) return {
2506
2503
  publicUrl: null,
2507
2504
  status: "no_url"
2508
2505
  };
2509
- let n = gi(t);
2506
+ let n = pi(t);
2510
2507
  if (n === void 0) return {
2511
2508
  publicUrl: t,
2512
2509
  status: "unsupported_source"
2513
2510
  };
2514
2511
  let r = n.pathname;
2515
2512
  if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
2516
- akomaNtosoUrl: `${mi}${r}`,
2513
+ akomaNtosoUrl: `${di}${r}`,
2517
2514
  publicUrl: n.toString(),
2518
2515
  status: "available"
2519
2516
  };
@@ -2522,17 +2519,17 @@ function _i(e) {
2522
2519
  publicUrl: n.toString(),
2523
2520
  status: "unsupported_source"
2524
2521
  } : {
2525
- akomaNtosoUrl: `${mi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2522
+ akomaNtosoUrl: `${di}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2526
2523
  publicUrl: n.toString(),
2527
2524
  status: "available"
2528
2525
  };
2529
2526
  }
2530
- function vi(e) {
2527
+ function hi(e) {
2531
2528
  return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
2532
2529
  }
2533
2530
  //#endregion
2534
2531
  //#region src/lib/alineas/alineas_numbers.ts
2535
- var yi = {
2532
+ var gi = {
2536
2533
  "0150a855548f15a2af52ea057be53f5d": 1,
2537
2534
  "039826cf379b94afefe90b25c6045ca0": 1,
2538
2535
  "03a7e564b84662f4d957c51018e26244": 1,
@@ -21506,7 +21503,7 @@ var yi = {
21506
21503
  d16d29c923bd60c7b095b66c6058fe60: 1664,
21507
21504
  "1c14c2adf5cfda3220b2057160e10e91": 1665,
21508
21505
  e44c55ca1ac46ff46420686a466c9fc6: 1665
21509
- }, bi = "\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", xi = "\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", Si = "\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", Ci = "\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", wi = "\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", Ti = {
21506
+ }, _i = "\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", vi = "\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", yi = "\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", bi = "\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", xi = "\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", Si = {
21510
21507
  assnatetatagr: { bold: !0 },
21511
21508
  assnatetatagrgr: { bold: !0 },
21512
21509
  assnatetatatr: { bold: !0 },
@@ -21607,29 +21604,29 @@ var yi = {
21607
21604
  assnatxl67: { align: "center" },
21608
21605
  assnatenteteequilibre: { align: "center" }
21609
21606
  };
21610
- function Ei(e) {
21611
- let t = Object.keys(Ti).sort((e, t) => t.length - e.length);
21612
- for (let n of t) if (e.includes(n)) return Ti[n];
21607
+ function Ci(e) {
21608
+ let t = Object.keys(Si).sort((e, t) => t.length - e.length);
21609
+ for (let n of t) if (e.includes(n)) return Si[n];
21613
21610
  return null;
21614
21611
  }
21615
- function Di(e) {
21616
- return Ae.createHash("md5").update(e).digest("hex");
21612
+ function wi(e) {
21613
+ return Oe.createHash("md5").update(e).digest("hex");
21617
21614
  }
21618
- function Oi(e) {
21615
+ function Ti(e) {
21619
21616
  return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
21620
21617
  }
21621
- function ki(e) {
21618
+ function Ei(e) {
21622
21619
  return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
21623
21620
  }
21624
- function Ai(e) {
21621
+ function Di(e) {
21625
21622
  if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
21626
21623
  let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
21627
21624
  return !(t && parseFloat(t[1]) < 8);
21628
21625
  }
21629
- function ji(e) {
21626
+ function Oi(e) {
21630
21627
  return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
21631
21628
  }
21632
- function Mi(e) {
21629
+ function ki(e) {
21633
21630
  if (!e) return;
21634
21631
  let t = [
21635
21632
  "width",
@@ -21664,15 +21661,15 @@ function Mi(e) {
21664
21661
  }
21665
21662
  return n.length > 0 ? n.join("; ") : void 0;
21666
21663
  }
21667
- function Ni(e, t) {
21664
+ function Ai(e, t) {
21668
21665
  return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
21669
21666
  }
21670
- function Pi(e) {
21667
+ function ji(e) {
21671
21668
  if (!e) return null;
21672
21669
  let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
21673
21670
  return t ? t[1].toLowerCase() : null;
21674
21671
  }
21675
- function Fi(e) {
21672
+ function Mi(e) {
21676
21673
  if (!e) return null;
21677
21674
  for (let [t, n] of [
21678
21675
  [/assnat1Tome|assnatAN1PARTIE/i, 1],
@@ -21684,8 +21681,8 @@ function Fi(e) {
21684
21681
  ]) if (t.test(e)) return n;
21685
21682
  return null;
21686
21683
  }
21687
- function Ii(e, t = {}) {
21688
- let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = w(e, { xml: { decodeEntities: !1 } });
21684
+ function Ni(e, t = {}) {
21685
+ let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = y(e, { xml: { decodeEntities: !1 } });
21689
21686
  a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
21690
21687
  let n = a(t).closest("table");
21691
21688
  n.length > 0 && n.remove();
@@ -21710,7 +21707,7 @@ function Ii(e, t = {}) {
21710
21707
  if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
21711
21708
  let e = i.attr();
21712
21709
  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")) {
21713
- let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Di(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21710
+ let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? wi(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21714
21711
  n.replaceWith(`<span class="alinea"${i}></span>`);
21715
21712
  return;
21716
21713
  }
@@ -21729,7 +21726,7 @@ function Ii(e, t = {}) {
21729
21726
  (!r || r === "\xA0") && n.remove();
21730
21727
  }), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
21731
21728
  function o(e) {
21732
- let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Oi(n) || r === "b" || r === "strong", o = ki(n) || r === "i" || r === "em", s = Ai(n) || r === "sup", c = ji(n) || r === "sub", l = t.attr("class") || "";
21729
+ let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Ti(n) || r === "b" || r === "strong", o = Ei(n) || r === "i" || r === "em", s = Di(n) || r === "sup", c = Oi(n) || r === "sub", l = t.attr("class") || "";
21733
21730
  return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
21734
21731
  bold: i,
21735
21732
  italic: o,
@@ -21763,7 +21760,7 @@ function Ii(e, t = {}) {
21763
21760
  c = e;
21764
21761
  }
21765
21762
  for (a("p").each((e, t) => {
21766
- let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Fi(i);
21763
+ let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Mi(i);
21767
21764
  if (i.includes("assnatFARCouvTitreD")) {
21768
21765
  let e = r.html() || "";
21769
21766
  r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
@@ -21796,11 +21793,11 @@ function Ii(e, t = {}) {
21796
21793
  let c = r.text().trim().startsWith("«");
21797
21794
  if (s && !c) {
21798
21795
  let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
21799
- n && Ni(o, i) && e.attr("align", "center"), r.replaceWith(e);
21796
+ n && Ai(o, i) && e.attr("align", "center"), r.replaceWith(e);
21800
21797
  } else {
21801
- let e = Ei(i), t;
21798
+ let e = Ci(i), t;
21802
21799
  if (n) {
21803
- let n = Pi(o);
21800
+ let n = ji(o);
21804
21801
  n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
21805
21802
  }
21806
21803
  if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
@@ -21810,7 +21807,7 @@ function Ii(e, t = {}) {
21810
21807
  }
21811
21808
  }), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
21812
21809
  let r = a(t), i = r.attr("style"), o = r.attr("class");
21813
- n && Ni(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21810
+ n && Ai(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21814
21811
  }), a("a").each((e, t) => {
21815
21812
  let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
21816
21813
  for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
@@ -21849,7 +21846,7 @@ function Ii(e, t = {}) {
21849
21846
  }), a("br").each((e, t) => {
21850
21847
  a(t).removeAttr("style").removeAttr("class");
21851
21848
  }), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
21852
- let n = a(t), r = Mi(n.attr("style"));
21849
+ let n = a(t), r = ki(n.attr("style"));
21853
21850
  n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
21854
21851
  }), a("td, th").each((e, t) => {
21855
21852
  let n = a(t), r = n.children();
@@ -21867,17 +21864,17 @@ function Ii(e, t = {}) {
21867
21864
  !isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
21868
21865
  }
21869
21866
  }), a("li").each((e, t) => {
21870
- let n = a(t), r = Pi(n.attr("style"));
21867
+ let n = a(t), r = ji(n.attr("style"));
21871
21868
  n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
21872
21869
  let i = n.html() || "", o = i.replace(/^(\s|&#xa0;|&#160;|\u00a0)+/, "");
21873
21870
  o !== i && n.html(o);
21874
- }), Li(a), Ri(a, i);
21871
+ }), Pi(a), Fi(a, i);
21875
21872
  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 = "";
21876
- m && (h += wi), f && (h += xi), p && (h += Si), u && (h += bi), d && (h += Ci);
21873
+ m && (h += xi), f && (h += vi), p && (h += yi), u && (h += _i), d && (h += bi);
21877
21874
  let g = h ? `<style>${h}</style>\n${l}` : l;
21878
- 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 = zi(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;
21875
+ 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 = Ii(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;
21879
21876
  }
21880
- function Li(e) {
21877
+ function Pi(e) {
21881
21878
  e("span[id]").each((t, n) => {
21882
21879
  let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
21883
21880
  if (o.length !== 1 || o[0] !== "id") return;
@@ -21900,13 +21897,13 @@ function Li(e) {
21900
21897
  l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
21901
21898
  });
21902
21899
  }
21903
- function Ri(e, t = !1) {
21900
+ function Fi(e, t = !1) {
21904
21901
  let n = e("body");
21905
21902
  if (n.length === 0) return;
21906
21903
  let r = n.find("span.alinea[data-image-hash]"), i = -1;
21907
21904
  r.each((n, r) => {
21908
21905
  let a = e(r), o = a.attr("data-image-hash"), s;
21909
- if (o && yi[o] !== void 0 && (s = yi[o]), s === void 0) {
21906
+ if (o && gi[o] !== void 0 && (s = gi[o]), s === void 0) {
21910
21907
  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".`);
21911
21908
  a.remove();
21912
21909
  return;
@@ -21918,11 +21915,11 @@ function Ri(e, t = !1) {
21918
21915
  i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
21919
21916
  });
21920
21917
  }
21921
- function zi(e) {
21918
+ function Ii(e) {
21922
21919
  let t = e;
21923
21920
  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;
21924
21921
  }
21925
- function Bi(e, t = {}) {
21922
+ function Li(e, t = {}) {
21926
21923
  return `<!DOCTYPE html>
21927
21924
  <html lang="fr">
21928
21925
  <head>
@@ -21930,33 +21927,33 @@ function Bi(e, t = {}) {
21930
21927
  <title>Document simplifié</title>
21931
21928
  </head>
21932
21929
  <body>
21933
- ${Ii(e, t)}
21930
+ ${Ni(e, t)}
21934
21931
  </body>
21935
21932
  </html>`;
21936
21933
  }
21937
21934
  //#endregion
21938
21935
  //#region src/lib/server/text_parsers/transformers.ts
21939
- function Vi(e, t) {
21936
+ function Ri(e, t) {
21940
21937
  let n = "transformation_", r = {};
21941
- for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21938
+ for (let e of A.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21942
21939
  let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
21943
21940
  for (let e of a.slice(1)) {
21944
21941
  let t = o.transformations ??= [];
21945
21942
  for (; e >= t.length;) t.push({});
21946
21943
  o = t[e];
21947
21944
  }
21948
- o.output = j.readFileSync(M.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21949
- let { sourceMap: s, title: c } = j.readJsonSync(M.join(t, e), { encoding: "utf-8" });
21945
+ o.output = A.readFileSync(Ae.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21946
+ let { sourceMap: s, title: c } = A.readJsonSync(Ae.join(t, e), { encoding: "utf-8" });
21950
21947
  o.sourceMap = s ?? [], o.title = c;
21951
21948
  }
21952
- return Hi(r, e), r;
21949
+ return zi(r, e), r;
21953
21950
  }
21954
- function Hi(e, t) {
21955
- if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Hi(n, t), t = n.output;
21951
+ function zi(e, t) {
21952
+ if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) zi(n, t), t = n.output;
21956
21953
  return t;
21957
21954
  }
21958
- function Ui(e, t, n = "1") {
21959
- if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(M.join(t, `transformation_${n}.json`), {
21955
+ function Bi(e, t, n = "1") {
21956
+ if (A.ensureDirSync(t), e.transformations === void 0) A.writeJsonSync(Ae.join(t, `transformation_${n}.json`), {
21960
21957
  sourceMap: e.sourceMap,
21961
21958
  title: e.title
21962
21959
  }, {
@@ -21964,24 +21961,24 @@ function Ui(e, t, n = "1") {
21964
21961
  spaces: 2
21965
21962
  });
21966
21963
  else {
21967
- j.writeJsonSync(M.join(t, `transformation_${n}.json`), { title: e.title }, {
21964
+ A.writeJsonSync(Ae.join(t, `transformation_${n}.json`), { title: e.title }, {
21968
21965
  encoding: "utf-8",
21969
21966
  spaces: 2
21970
21967
  });
21971
- for (let [r, i] of e.transformations.entries()) Ui(i, t, `${n}.${r + 1}`);
21968
+ for (let [r, i] of e.transformations.entries()) Bi(i, t, `${n}.${r + 1}`);
21972
21969
  }
21973
- e.output !== void 0 && j.writeFileSync(M.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
21970
+ e.output !== void 0 && A.writeFileSync(Ae.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
21974
21971
  }
21975
21972
  //#endregion
21976
21973
  //#region src/lib/server/linkers/html.ts
21977
- async function Wi({ 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 }) {
21978
- let _ = t ?? (e === void 0 ? void 0 : new se(e));
21974
+ async function Vi({ 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 }) {
21975
+ let _ = t ?? (e === void 0 ? void 0 : new ie(e));
21979
21976
  if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
21980
- let v = await j.readFile(i, { encoding: "utf-8" }), y;
21981
- a === void 0 ? (y = ye({ removeAWithHref: !0 })(v), o !== void 0 && Ui(y, o)) : y = Vi(v, a);
21977
+ let v = await A.readFile(i, { encoding: "utf-8" }), y;
21978
+ a === void 0 ? (y = ve({ removeAWithHref: !0 })(v), o !== void 0 && Bi(y, o)) : y = Ri(v, a);
21982
21979
  let b = [];
21983
21980
  s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
21984
- let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
21981
+ let { outputByType: x, referredLegifranceTextCountByCid: S } = await se({
21985
21982
  legiResolver: _,
21986
21983
  date: n,
21987
21984
  defaultTextId: r,
@@ -21994,42 +21991,42 @@ async function Wi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
21994
21991
  logReferences: h,
21995
21992
  outputTypes: b,
21996
21993
  referredLegifranceTextsInfos: g !== void 0
21997
- }), S = {};
21998
- s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
21994
+ }), C = {};
21995
+ s !== void 0 && (C.links = s), c !== void 0 && (C.links_or_references = c), u !== void 0 && (C.references = u);
21999
21996
  for (let [e, t] of Object.entries(x)) {
22000
- let n = S[e];
22001
- n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
21997
+ let n = C[e];
21998
+ n !== void 0 && await A.writeFile(n, t.html, { encoding: "utf-8" });
22002
21999
  }
22003
- x.links !== void 0 && l !== void 0 && Ui(ye()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
22000
+ x.links !== void 0 && l !== void 0 && Bi(ve()(x.links.html), l), g !== void 0 && await A.writeJson(g, S, {
22004
22001
  encoding: "utf-8",
22005
22002
  spaces: 2
22006
22003
  });
22007
22004
  }
22008
22005
  //#endregion
22009
22006
  //#region src/lib/server/tables_of_contents.ts
22010
- async function Gi(e, t, n, r) {
22011
- let i = Vi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new O(a), s = await j.readJson(n, { encoding: "utf-8" });
22012
- for await (let e of ce({
22007
+ async function Hi(e, t, n, r) {
22008
+ let i = Ri(await A.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await A.readJson(n, { encoding: "utf-8" });
22009
+ for await (let e of oe({
22013
22010
  context: o,
22014
22011
  tableOfContents: s,
22015
22012
  transformation: i
22016
22013
  }));
22017
- await j.writeJson(r, s, {
22014
+ await A.writeJson(r, s, {
22018
22015
  encoding: "utf-8",
22019
22016
  spaces: 2
22020
22017
  });
22021
22018
  }
22022
- async function Ki(e, t, n) {
22023
- let r = Vi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
22024
- await j.writeJson(n, i, {
22019
+ async function Ui(e, t, n) {
22020
+ let r = Ri(await A.readFile(e, { encoding: "utf-8" }), t).output, i = v(r);
22021
+ await A.writeJson(n, i, {
22025
22022
  encoding: "utf-8",
22026
22023
  spaces: 2
22027
22024
  });
22028
22025
  }
22029
22026
  //#endregion
22030
22027
  //#region src/lib/server/legi/resolvers.ts
22031
- function qi({ canutesDb: e }) {
22032
- return new se(e);
22028
+ function Wi({ canutesDb: e }) {
22029
+ return new ie(e);
22033
22030
  }
22034
22031
  //#endregion
22035
- export { ke as LegiResolver, Wi as addLinksOrReferencesToHtmlFile, Gi as addPositionsToTableOfContentsFile, Te as buildAndInstallTextTitlesInfos, De as buildTextTitlesInfos, qi as createLegiResolver, Fe as extractAssembleeAmendmentSearchItems, rr as extractAssembleeExposesDesMotifs, cr as extractSenatAmendmentSearchItems, Ie as hashAssembleeAmendmentSearchItem, ar as hashAssembleeSearchItem, lr as hashSenatAmendmentSearchItem, fi as hashSenatSearchItem, vi as isAkomaNtosoXml, or as isoDateFromAssembleeDocument, $n as linkAkomaNtosoBillRaw, ln as linkAssembleeBillRaw, Qn as parseAkomaNtosoBillRaw, ci as parseAmendment, cn as parseAssembleeBillRaw, ir as parseAssembleeDocumentSearchContent, di as parseSenatDocumentSearchContent, Vi as readTransformation, Jn as renderAkomaNtosoBillRaw, _i as resolveSenatAkomaNtosoSource, Ki as simplifiedHtmlBillFileToTableOfContentsFile, Ii as simplifyWordHtml, Bi as simplifyWordHtmlToDocument, Ui as writeTransformation };
22032
+ export { De as LegiResolver, Vi as addLinksOrReferencesToHtmlFile, Hi as addPositionsToTableOfContentsFile, we as buildAndInstallTextTitlesInfos, Ee as buildTextTitlesInfos, Wi as createLegiResolver, Pe as extractAssembleeAmendmentSearchItems, er as extractAssembleeExposesDesMotifs, ar as extractSenatAmendmentSearchItems, Fe as hashAssembleeAmendmentSearchItem, nr as hashAssembleeSearchItem, or as hashSenatAmendmentSearchItem, li as hashSenatSearchItem, hi as isAkomaNtosoXml, rr as isoDateFromAssembleeDocument, Xn as linkAkomaNtosoBillRaw, on as linkAssembleeBillRaw, Yn as parseAkomaNtosoBillRaw, ai as parseAmendment, an as parseAssembleeBillRaw, tr as parseAssembleeDocumentSearchContent, ci as parseSenatDocumentSearchContent, Ri as readTransformation, Gn as renderAkomaNtosoBillRaw, mi as resolveSenatAkomaNtosoSource, Ui as simplifiedHtmlBillFileToTableOfContentsFile, Ni as simplifyWordHtml, Li as simplifyWordHtmlToDocument, Bi as writeTransformation };