eyecite-ts 0.8.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1 -2
  2. package/dist/annotate/index.d.cts +1 -1
  3. package/dist/annotate/index.d.mts +1 -1
  4. package/dist/{citation-Cp0M8pGK.d.cts → citation-CCExUh08.d.mts} +144 -2
  5. package/dist/citation-CCExUh08.d.mts.map +1 -0
  6. package/dist/{citation-GF9_w_kw.d.mts → citation-DEZNY4qH.d.cts} +144 -2
  7. package/dist/citation-DEZNY4qH.d.cts.map +1 -0
  8. package/dist/data/index.cjs +1 -1
  9. package/dist/data/index.d.cts +29 -15
  10. package/dist/data/index.d.cts.map +1 -1
  11. package/dist/data/index.d.mts +29 -15
  12. package/dist/data/index.d.mts.map +1 -1
  13. package/dist/data/index.mjs +1 -1
  14. package/dist/data/index.mjs.map +1 -1
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +13 -5
  18. package/dist/index.d.cts.map +1 -1
  19. package/dist/index.d.mts +13 -5
  20. package/dist/index.d.mts.map +1 -1
  21. package/dist/index.mjs +1 -1
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/knownCodes-D_EXxDqq.cjs +2 -0
  24. package/dist/knownCodes-D_EXxDqq.cjs.map +1 -0
  25. package/dist/knownCodes-WUweUwCB.mjs +2 -0
  26. package/dist/knownCodes-WUweUwCB.mjs.map +1 -0
  27. package/dist/{types-BCj-F1CQ.d.mts → types-6BYsuJiz.d.mts} +2 -8
  28. package/dist/types-6BYsuJiz.d.mts.map +1 -0
  29. package/dist/{types-DsYwn8kp.d.cts → types-Q1_sllNN.d.cts} +2 -8
  30. package/dist/types-Q1_sllNN.d.cts.map +1 -0
  31. package/dist/utils/index.d.cts +2 -2
  32. package/dist/utils/index.d.mts +2 -2
  33. package/package.json +1 -1
  34. package/dist/citation-Cp0M8pGK.d.cts.map +0 -1
  35. package/dist/citation-GF9_w_kw.d.mts.map +0 -1
  36. package/dist/knownCodes-DBWj7s2T.cjs +0 -2
  37. package/dist/knownCodes-DBWj7s2T.cjs.map +0 -1
  38. package/dist/knownCodes-DTkb3Uw9.mjs +0 -2
  39. package/dist/knownCodes-DTkb3Uw9.mjs.map +0 -1
  40. package/dist/types-BCj-F1CQ.d.mts.map +0 -1
  41. package/dist/types-DsYwn8kp.d.cts.map +0 -1
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as PinciteInfo, C as StatuteCitation, D as Warning, E as SupraCitation, O as Span, S as ShortFormCitationType, T as SubsequentHistoryEntry, _ as Parenthetical, a as CitationType, b as ShortFormCaseCitation, c as ExtractorMap, d as FullCitation, f as FullCitationType, g as NeutralCitation, h as JournalCitation, i as CitationSignal, j as parsePincite, k as TransformationMap, l as FederalRegisterCitation, m as IdCitation, n as CitationBase, o as ConstitutionalCitation, p as HistorySignal, r as CitationOfType, s as CourtInference, t as Citation, u as FullCaseCitation, v as ParentheticalType, w as StatutesAtLargeCitation, x as ShortFormCitation, y as PublicLawCitation } from "./citation-Cp0M8pGK.cjs";
2
- import { a as FootnoteMap, i as ScopeStrategy, n as ResolutionResult, o as FootnoteZone, r as ResolvedCitation, t as ResolutionOptions } from "./types-DsYwn8kp.cjs";
1
+ import { A as FederalRegisterComponentSpans, B as parsePincite, C as StatuteCitation, D as Warning, E as SupraCitation, F as StatutesAtLargeComponentSpans, I as Span, L as TransformationMap, M as NeutralComponentSpans, N as PublicLawComponentSpans, O as CaseComponentSpans, P as StatuteComponentSpans, R as spanFromGroupIndex, S as ShortFormCitationType, T as SubsequentHistoryEntry, _ as Parenthetical, a as CitationType, b as ShortFormCaseCitation, c as ExtractorMap, d as FullCitation, f as FullCitationType, g as NeutralCitation, h as JournalCitation, i as CitationSignal, j as JournalComponentSpans, k as ConstitutionalComponentSpans, l as FederalRegisterCitation, m as IdCitation, n as CitationBase, o as ConstitutionalCitation, p as HistorySignal, r as CitationOfType, s as CourtInference, t as Citation, u as FullCaseCitation, v as ParentheticalType, w as StatutesAtLargeCitation, x as ShortFormCitation, y as PublicLawCitation, z as PinciteInfo } from "./citation-DEZNY4qH.cjs";
2
+ import { a as FootnoteMap, i as ScopeStrategy, n as ResolutionResult, o as FootnoteZone, r as ResolvedCitation, t as ResolutionOptions } from "./types-Q1_sllNN.cjs";
3
3
 
4
4
  //#region src/types/guards.d.ts
5
5
  /**
@@ -423,6 +423,11 @@ declare function extractFederalRegister(token: Token, transformationMap: Transfo
423
423
  * - Journal: Journal abbreviation (e.g., "Harv. L. Rev.")
424
424
  * - Page: Starting page number (e.g., "456")
425
425
  * - Pincite: Optional specific page reference after comma (e.g., ", 458")
426
+ * - Year: Optional publication year in parenthetical (e.g., "(2020)")
427
+ *
428
+ * When `cleanedText` is provided, the extractor performs lookahead beyond the token
429
+ * boundary to extract optional pincite and year components that the tokenizer does
430
+ * not capture in the token text.
426
431
  *
427
432
  * Confidence scoring:
428
433
  * - Base: 0.6 (journal validation happens in Phase 3)
@@ -432,6 +437,7 @@ declare function extractFederalRegister(token: Token, transformationMap: Transfo
432
437
  *
433
438
  * @param token - Token from tokenizer containing matched text and clean positions
434
439
  * @param transformationMap - Position mapping from clean → original text
440
+ * @param cleanedText - Full cleaned document text (optional; enables pincite/year lookahead)
435
441
  * @returns JournalCitation with parsed metadata and translated positions
436
442
  *
437
443
  * @example
@@ -453,7 +459,7 @@ declare function extractFederalRegister(token: Token, transformationMap: Transfo
453
459
  * // }
454
460
  * ```
455
461
  */
456
- declare function extractJournal(token: Token, transformationMap: TransformationMap): JournalCitation;
462
+ declare function extractJournal(token: Token, transformationMap: TransformationMap, cleanedText?: string): JournalCitation;
457
463
  //#endregion
458
464
  //#region src/extract/extractNeutral.d.ts
459
465
  /**
@@ -581,7 +587,9 @@ declare class DocumentResolver {
581
587
  */
582
588
  resolve(): ResolvedCitation[];
583
589
  /**
584
- * Resolves Id. citation to immediately preceding full case citation.
590
+ * Resolves Id. citation to the most recently cited authority.
591
+ * Uses lastResolvedIndex which tracks the most recent successfully
592
+ * resolved citation (full, short-form, supra, or Id.).
585
593
  */
586
594
  private resolveId;
587
595
  /**
@@ -654,5 +662,5 @@ declare function resolveCitations(citations: Citation[], text: string, options?:
654
662
  */
655
663
  declare function detectFootnotes(text: string): FootnoteMap;
656
664
  //#endregion
657
- export { type Citation, type CitationBase, type CitationOfType, type CitationSignal, type CitationType, type CleanTextResult, type ConstitutionalCitation, type CourtInference, DocumentResolver, type ExtractOptions, type ExtractorMap, type FederalRegisterCitation, type FootnoteMap, type FootnoteZone, type FullCaseCitation, type FullCitation, type FullCitationType, type HistorySignal, type IdCitation, type JournalCitation, type NeutralCitation, type Parenthetical, type ParentheticalType, type PinciteInfo, type PublicLawCitation, type ResolutionOptions, type ResolutionResult, type ResolvedCitation, type ScopeStrategy, type ShortFormCaseCitation, type ShortFormCitation, type ShortFormCitationType, type Span, type StatuteCitation, type StatutesAtLargeCitation, type SubsequentHistoryEntry, type SupraCitation, type Token, type TransformationMap, type Warning, applyFalsePositiveFilters, assertUnreachable, cleanText, detectFootnotes, extractCase, extractCitations, extractCitationsAsync, extractConstitutional, extractFederalRegister, extractJournal, extractNeutral, extractPublicLaw, extractStatute, extractStatutesAtLarge, isCaseCitation, isCitationType, isFullCitation, isShortFormCitation, normalizeCourt, parsePincite, resolveCitations, tokenize };
665
+ export { type CaseComponentSpans, type Citation, type CitationBase, type CitationOfType, type CitationSignal, type CitationType, type CleanTextResult, type ConstitutionalCitation, type ConstitutionalComponentSpans, type CourtInference, DocumentResolver, type ExtractOptions, type ExtractorMap, type FederalRegisterCitation, type FederalRegisterComponentSpans, type FootnoteMap, type FootnoteZone, type FullCaseCitation, type FullCitation, type FullCitationType, type HistorySignal, type IdCitation, type JournalCitation, type JournalComponentSpans, type NeutralCitation, type NeutralComponentSpans, type Parenthetical, type ParentheticalType, type PinciteInfo, type PublicLawCitation, type PublicLawComponentSpans, type ResolutionOptions, type ResolutionResult, type ResolvedCitation, type ScopeStrategy, type ShortFormCaseCitation, type ShortFormCitation, type ShortFormCitationType, type Span, type StatuteCitation, type StatuteComponentSpans, type StatutesAtLargeCitation, type StatutesAtLargeComponentSpans, type SubsequentHistoryEntry, type SupraCitation, type Token, type TransformationMap, type Warning, applyFalsePositiveFilters, assertUnreachable, cleanText, detectFootnotes, extractCase, extractCitations, extractCitationsAsync, extractConstitutional, extractFederalRegister, extractJournal, extractNeutral, extractPublicLaw, extractStatute, extractStatutesAtLarge, isCaseCitation, isCitationType, isFullCitation, isShortFormCitation, normalizeCourt, parsePincite, resolveCitations, spanFromGroupIndex, tokenize };
658
666
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/guards.ts","../src/patterns/casePatterns.ts","../src/extract/extractCitations.ts","../src/extract/filterFalsePositives.ts","../src/clean/cleanText.ts","../src/tokenize/tokenizer.ts","../src/extract/extractCase.ts","../src/extract/extractConstitutional.ts","../src/extract/extractFederalRegister.ts","../src/extract/extractJournal.ts","../src/extract/extractNeutral.ts","../src/extract/extractPublicLaw.ts","../src/extract/extractStatute.ts","../src/extract/extractStatutesAtLarge.ts","../src/extract/courtNormalization.ts","../src/resolve/DocumentResolver.ts","../src/resolve/index.ts","../src/footnotes/detectFootnotes.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/guards.ts","../src/patterns/casePatterns.ts","../src/extract/extractCitations.ts","../src/extract/filterFalsePositives.ts","../src/clean/cleanText.ts","../src/tokenize/tokenizer.ts","../src/extract/extractCase.ts","../src/extract/extractConstitutional.ts","../src/extract/extractFederalRegister.ts","../src/extract/extractJournal.ts","../src/extract/extractNeutral.ts","../src/extract/extractPublicLaw.ts","../src/extract/extractStatute.ts","../src/extract/extractStatutesAtLarge.ts","../src/extract/courtNormalization.ts","../src/resolve/DocumentResolver.ts","../src/resolve/index.ts","../src/footnotes/detectFootnotes.ts"],"mappings":";;;;;;;iBAYgB,cAAA,CAAe,QAAA,EAAU,QAAA,GAAW,QAAA,IAAY,YAAA;;;;iBAgBhD,mBAAA,CAAoB,QAAA,EAAU,QAAA,GAAW,QAAA,IAAY,iBAAA;;;;iBAOrD,cAAA,CAAe,QAAA,EAAU,QAAA,GAAW,QAAA,IAAY,gBAAA;;AAPhE;;;iBAegB,cAAA,WAAyB,YAAA,CAAA,CACvC,QAAA,EAAU,QAAA,EACV,IAAA,EAAM,CAAA,GACL,QAAA,IAAY,cAAA,CAAe,CAAA;;;;;;;AAX9B;;;;;;;;;;iBA+BgB,iBAAA,CAAkB,CAAA;;;UClDjB,OAAA;EACf,EAAA;EACA,KAAA,EAAO,MAAA;EACP,WAAA;EACA,IAAA,EAAM,gBAAA;AAAA;;;;ADRR;;UE4CiB,cAAA;EF5C+C;;;;;;;AAgBhE;;;;;;;EE2CE,QAAA,GAAW,KAAA,EAAO,IAAA;;;AFpCpB;;;;;;;;;;AAQA;;EE4CE,QAAA,GAAW,OAAA;;;;;;;;;;;;;;EAeX,OAAA;;;;;AFpCF;;;;;;;;AClDA;;ECsGE,iBAAA,GAAoB,iBAAA;EDlGd;;;;;;;;;;;;ACoCR;;;;EAgFE,oBAAA;;EAGA,eAAA;AAAA;;;;;;;;;;;;;AA6DF;;;;;;;;;;;AAIA;;;;;;;;;;AA4MA;;;;;;;;;;;;;;;;AAIA;;;;;;;;;iBApNgB,gBAAA,CACd,IAAA,UACA,OAAA,EAAS,cAAA;EAAmB,OAAA;AAAA,IAC3B,gBAAA;AAAA,iBACa,gBAAA,CAAiB,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,QAAA;;;;;;AC6G1E;;;;;;;;;;;;;ACtSA;;;;iBFqYsB,qBAAA,CACpB,IAAA,UACA,OAAA,EAAS,cAAA;EAAmB,OAAA;AAAA,IAC3B,OAAA,CAAQ,gBAAA;AAAA,iBACW,qBAAA,CACpB,IAAA,UACA,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,QAAA;;;AFnYX;;;;;;;AAAA,iBG6RgB,yBAAA,CAA0B,SAAA,EAAW,QAAA,IAAY,MAAA,YAAkB,QAAA;;;;;AH7SnF;UIOiB,eAAA;;EAEf,OAAA;;EAGA,iBAAA,EAAmB,iBAAA;;EAGnB,QAAA,EAAU,OAAA;AAAA;;AJCZ;;;;;;;;;;AAOA;;;;;iBIWgB,SAAA,CACd,QAAA,UACA,QAAA,GAAU,KAAA,EAAO,IAAA,uBAYhB,eAAA;;;;;;;;;;UChCc,KAAA;ELOD;EKLd,IAAA;ELK8D;EKF9D,IAAA,EAAM,IAAA,CAAK,IAAA;;EAGX,IAAA,EAAM,OAAA;;EAGN,SAAA;AAAA;ALIF;;;;;;;;;;;;;;;;;;;;;AAuBA;;;;;;;;AClDA;;;;;;;AD2BA,iBKmCgB,QAAA,CACd,WAAA,UACA,QAAA,GAAU,OAAA,KAOT,KAAA;;;;;;ALpDH;;;;;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;AAuBA;;;;;;;;AClDA;;;;;;;;;iBKg2BgB,WAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,EACnB,WAAA,YACC,gBAAA;;;;ANx2BH;;;;;;iBOwIgB,qBAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,GAClB,sBAAA;;;;;;AP3HH;;;;;;;;;;AAOA;;;;;;;;;;AAQA;;;;;;;;;;iBQIgB,sBAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,GAClB,uBAAA;;;;;;ARtBH;;;;;;;;;;AAOA;;;;;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;iBSegB,cAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,EACnB,WAAA,YACC,eAAA;;;;;;ATlCH;;;;;;;;;;AAOA;;;;;;;;;;AAQA;;;;;;;;;;;iBUKgB,cAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,GAClB,eAAA;;;;;;AVvBH;;;;;;;;;;AAOA;;;;;;;;;;AAQA;;;;;;;;;;;;iBWMgB,gBAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,GAClB,iBAAA;;;;;;;iBC8Ca,cAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,GAClB,eAAA;;;iBCpFa,sBAAA,CACd,KAAA,EAAO,KAAA,EACP,iBAAA,EAAmB,iBAAA,GAClB,uBAAA;;;;;;;AbRH;;;;;;;;iBcAgB,cAAA,CAAe,KAAA;;;;AdgB/B;;;ceMa,gBAAA;EAAA,iBACM,SAAA;EAAA,iBACA,IAAA;EAAA,iBACA,OAAA;EAAA,iBAGA,OAAA;EAAA,iBACA,aAAA;EfbkD;AAOrE;;;;;;EeeE,WAAA,CAAY,SAAA,EAAW,QAAA,IAAY,IAAA,UAAc,OAAA,GAAS,iBAAA;;;;AfP5D;;EeqDE,OAAA,CAAA,GAAW,gBAAA;;;;;;UAqDH,SAAA;EfvGK;;;EAAA,Qe8HL,YAAA;;;;UA6DA,oBAAA;;;;;AfvKV;Ue6MU,iBAAA;;;;;UA8BA,gBAAA;;Ad7RV;;;;Uc6TU,gBAAA;;;;UAWA,kBAAA;;;;UAUA,iBAAA;;;Ab1SV;UaoTU,aAAA;;;;UAiBA,mBAAA;AAAA;;;;;;;Af1VV;;;;;;iBgBFgB,gBAAA,CACd,SAAA,EAAW,QAAA,IACX,IAAA,UACA,OAAA,GAAU,iBAAA,GACT,gBAAA;;;;;;AhBzBH;;;;;;;;iBiBKgB,eAAA,CAAgB,IAAA,WAAe,WAAA"}
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as PinciteInfo, C as StatuteCitation, D as Warning, E as SupraCitation, O as Span, S as ShortFormCitationType, T as SubsequentHistoryEntry, _ as Parenthetical, a as CitationType, b as ShortFormCaseCitation, c as ExtractorMap, d as FullCitation, f as FullCitationType, g as NeutralCitation, h as JournalCitation, i as CitationSignal, j as parsePincite, k as TransformationMap, l as FederalRegisterCitation, m as IdCitation, n as CitationBase, o as ConstitutionalCitation, p as HistorySignal, r as CitationOfType, s as CourtInference, t as Citation, u as FullCaseCitation, v as ParentheticalType, w as StatutesAtLargeCitation, x as ShortFormCitation, y as PublicLawCitation } from "./citation-GF9_w_kw.mjs";
2
- import { a as FootnoteMap, i as ScopeStrategy, n as ResolutionResult, o as FootnoteZone, r as ResolvedCitation, t as ResolutionOptions } from "./types-BCj-F1CQ.mjs";
1
+ import { A as FederalRegisterComponentSpans, B as parsePincite, C as StatuteCitation, D as Warning, E as SupraCitation, F as StatutesAtLargeComponentSpans, I as Span, L as TransformationMap, M as NeutralComponentSpans, N as PublicLawComponentSpans, O as CaseComponentSpans, P as StatuteComponentSpans, R as spanFromGroupIndex, S as ShortFormCitationType, T as SubsequentHistoryEntry, _ as Parenthetical, a as CitationType, b as ShortFormCaseCitation, c as ExtractorMap, d as FullCitation, f as FullCitationType, g as NeutralCitation, h as JournalCitation, i as CitationSignal, j as JournalComponentSpans, k as ConstitutionalComponentSpans, l as FederalRegisterCitation, m as IdCitation, n as CitationBase, o as ConstitutionalCitation, p as HistorySignal, r as CitationOfType, s as CourtInference, t as Citation, u as FullCaseCitation, v as ParentheticalType, w as StatutesAtLargeCitation, x as ShortFormCitation, y as PublicLawCitation, z as PinciteInfo } from "./citation-CCExUh08.mjs";
2
+ import { a as FootnoteMap, i as ScopeStrategy, n as ResolutionResult, o as FootnoteZone, r as ResolvedCitation, t as ResolutionOptions } from "./types-6BYsuJiz.mjs";
3
3
 
4
4
  //#region src/types/guards.d.ts
5
5
  /**
@@ -423,6 +423,11 @@ declare function extractFederalRegister(token: Token, transformationMap: Transfo
423
423
  * - Journal: Journal abbreviation (e.g., "Harv. L. Rev.")
424
424
  * - Page: Starting page number (e.g., "456")
425
425
  * - Pincite: Optional specific page reference after comma (e.g., ", 458")
426
+ * - Year: Optional publication year in parenthetical (e.g., "(2020)")
427
+ *
428
+ * When `cleanedText` is provided, the extractor performs lookahead beyond the token
429
+ * boundary to extract optional pincite and year components that the tokenizer does
430
+ * not capture in the token text.
426
431
  *
427
432
  * Confidence scoring:
428
433
  * - Base: 0.6 (journal validation happens in Phase 3)
@@ -432,6 +437,7 @@ declare function extractFederalRegister(token: Token, transformationMap: Transfo
432
437
  *
433
438
  * @param token - Token from tokenizer containing matched text and clean positions
434
439
  * @param transformationMap - Position mapping from clean → original text
440
+ * @param cleanedText - Full cleaned document text (optional; enables pincite/year lookahead)
435
441
  * @returns JournalCitation with parsed metadata and translated positions
436
442
  *
437
443
  * @example
@@ -453,7 +459,7 @@ declare function extractFederalRegister(token: Token, transformationMap: Transfo
453
459
  * // }
454
460
  * ```
455
461
  */
456
- declare function extractJournal(token: Token, transformationMap: TransformationMap): JournalCitation;
462
+ declare function extractJournal(token: Token, transformationMap: TransformationMap, cleanedText?: string): JournalCitation;
457
463
  //#endregion
458
464
  //#region src/extract/extractNeutral.d.ts
459
465
  /**
@@ -581,7 +587,9 @@ declare class DocumentResolver {
581
587
  */
582
588
  resolve(): ResolvedCitation[];
583
589
  /**
584
- * Resolves Id. citation to immediately preceding full case citation.
590
+ * Resolves Id. citation to the most recently cited authority.
591
+ * Uses lastResolvedIndex which tracks the most recent successfully
592
+ * resolved citation (full, short-form, supra, or Id.).
585
593
  */
586
594
  private resolveId;
587
595
  /**
@@ -654,5 +662,5 @@ declare function resolveCitations(citations: Citation[], text: string, options?:
654
662
  */
655
663
  declare function detectFootnotes(text: string): FootnoteMap;
656
664
  //#endregion
657
- export { type Citation, type CitationBase, type CitationOfType, type CitationSignal, type CitationType, type CleanTextResult, type ConstitutionalCitation, type CourtInference, DocumentResolver, type ExtractOptions, type ExtractorMap, type FederalRegisterCitation, type FootnoteMap, type FootnoteZone, type FullCaseCitation, type FullCitation, type FullCitationType, type HistorySignal, type IdCitation, type JournalCitation, type NeutralCitation, type Parenthetical, type ParentheticalType, type PinciteInfo, type PublicLawCitation, type ResolutionOptions, type ResolutionResult, type ResolvedCitation, type ScopeStrategy, type ShortFormCaseCitation, type ShortFormCitation, type ShortFormCitationType, type Span, type StatuteCitation, type StatutesAtLargeCitation, type SubsequentHistoryEntry, type SupraCitation, type Token, type TransformationMap, type Warning, applyFalsePositiveFilters, assertUnreachable, cleanText, detectFootnotes, extractCase, extractCitations, extractCitationsAsync, extractConstitutional, extractFederalRegister, extractJournal, extractNeutral, extractPublicLaw, extractStatute, extractStatutesAtLarge, isCaseCitation, isCitationType, isFullCitation, isShortFormCitation, normalizeCourt, parsePincite, resolveCitations, tokenize };
665
+ export { type CaseComponentSpans, type Citation, type CitationBase, type CitationOfType, type CitationSignal, type CitationType, type CleanTextResult, type ConstitutionalCitation, type ConstitutionalComponentSpans, type CourtInference, DocumentResolver, type ExtractOptions, type ExtractorMap, type FederalRegisterCitation, type FederalRegisterComponentSpans, type FootnoteMap, type FootnoteZone, type FullCaseCitation, type FullCitation, type FullCitationType, type HistorySignal, type IdCitation, type JournalCitation, type JournalComponentSpans, type NeutralCitation, type NeutralComponentSpans, type Parenthetical, type ParentheticalType, type PinciteInfo, type PublicLawCitation, type PublicLawComponentSpans, type ResolutionOptions, type ResolutionResult, type ResolvedCitation, type ScopeStrategy, type ShortFormCaseCitation, type ShortFormCitation, type ShortFormCitationType, type Span, type StatuteCitation, type StatuteComponentSpans, type StatutesAtLargeCitation, type StatutesAtLargeComponentSpans, type SubsequentHistoryEntry, type SupraCitation, type Token, type TransformationMap, type Warning, applyFalsePositiveFilters, assertUnreachable, cleanText, detectFootnotes, extractCase, extractCitations, extractCitationsAsync, extractConstitutional, extractFederalRegister, extractJournal, extractNeutral, extractPublicLaw, extractStatute, extractStatutesAtLarge, isCaseCitation, isCitationType, isFullCitation, isShortFormCitation, normalizeCourt, parsePincite, resolveCitations, spanFromGroupIndex, tokenize };
658
666
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/guards.ts","../src/patterns/casePatterns.ts","../src/extract/extractCitations.ts","../src/extract/filterFalsePositives.ts","../src/clean/cleanText.ts","../src/tokenize/tokenizer.ts","../src/extract/extractCase.ts","../src/extract/extractConstitutional.ts","../src/extract/extractFederalRegister.ts","../src/extract/extractJournal.ts","../src/extract/extractNeutral.ts","../src/extract/extractPublicLaw.ts","../src/extract/extractStatute.ts","../src/extract/extractStatutesAtLarge.ts","../src/extract/courtNormalization.ts","../src/resolve/DocumentResolver.ts","../src/resolve/index.ts","../src/footnotes/detectFootnotes.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/guards.ts","../src/patterns/casePatterns.ts","../src/extract/extractCitations.ts","../src/extract/filterFalsePositives.ts","../src/clean/cleanText.ts","../src/tokenize/tokenizer.ts","../src/extract/extractCase.ts","../src/extract/extractConstitutional.ts","../src/extract/extractFederalRegister.ts","../src/extract/extractJournal.ts","../src/extract/extractNeutral.ts","../src/extract/extractPublicLaw.ts","../src/extract/extractStatute.ts","../src/extract/extractStatutesAtLarge.ts","../src/extract/courtNormalization.ts","../src/resolve/DocumentResolver.ts","../src/resolve/index.ts","../src/footnotes/detectFootnotes.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,n as t,r as n}from"./knownCodes-DTkb3Uw9.mjs";function r(e){return e.type===`case`||e.type===`statute`||e.type===`journal`||e.type===`neutral`||e.type===`publicLaw`||e.type===`federalRegister`||e.type===`statutesAtLarge`||e.type===`constitutional`}function i(e){return e.type===`id`||e.type===`supra`||e.type===`shortFormCase`}function a(e){return e.type===`case`}function o(e,t){return e.type===t}function s(e){throw Error(`Unexpected value: ${e}`)}function c(e){return e.replace(/<[^>]+>/g,``)}function l(e){return e.replace(/(\w)-\s*[\n\r]+\s*(\w)/g,`$1$2`)}function u(e){return e.replace(/[\t\n\r\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,` `)}function d(e){return e.replace(/ {2,}/g,` `)}function f(e){return e.normalize(`NFKC`)}function p(e){return e.replace(/[\u201C\u201D]/g,`"`).replace(/[\u2018\u2019]/g,`'`)}function m(e){return e.replace(/[\u2014\u2015]/g,`---`).replace(/[\u2010\u2012\u2013]/g,`-`)}function h(e){return e.replace(/&sect;/gi,`§`).replace(/&para;/gi,`¶`).replace(/&amp;/gi,`&`).replace(/&nbsp;/gi,` `).replace(/&lt;/gi,`<`).replace(/&gt;/gi,`>`).replace(/&quot;/gi,`"`).replace(/&apos;/gi,`'`).replace(/&#(\d+);/g,(e,t)=>{let n=Number.parseInt(t,10);return Number.isNaN(n)?e:String.fromCharCode(n)}).replace(/&#x([0-9a-fA-F]+);/g,(e,t)=>{let n=Number.parseInt(t,16);return Number.isNaN(n)?e:String.fromCharCode(n)})}function g(e){let t=e;return t=t.replace(/\bU\.\s+S\./g,`U.S.`),t=t.replace(/\bS\.\s+Ct\./g,`S.Ct.`),t=t.replace(/\bL\.\s+Ed\./g,`L.Ed.`),t=t.replace(/\bF\.\s+Supp\./g,`F.Supp.`),t=t.replace(/\bF\.\s+(\d+[a-z]+)/g,`F.$1`),t=t.replace(/([A-Za-z])\.\s+(\d+[a-z]+)/g,`$1.$2`),t}function _(e){return e.replace(/[\u2032\u2035]/g,`'`).replace(/\u200B|\u200C|\u200D|\u2060|\uFEFF/g,``)}var v=class e{constructor(e){this.segments=e}static identity(t){return new e([{cleanPos:0,origPos:0,len:t+1}])}static fromMap(t){if(t.size===0)return new e([]);let n=[...t.entries()].sort((e,t)=>e[0]-t[0]),r=[],i=n[0][0],a=n[0][1],o=1;for(let e=1;e<n.length;e++){let[t,s]=n[e],c=i+o,l=a+o;t===c&&s===l?o++:(r.push({cleanPos:i,origPos:a,len:o}),i=t,a=s,o=1)}return r.push({cleanPos:i,origPos:a,len:o}),new e(r)}lookup(e){let t=this.segments;if(t.length===0)return e;let n=0,r=t.length-1;for(;n<=r;){let i=n+r>>>1,a=t[i];if(e<a.cleanPos)r=i-1;else if(e>=a.cleanPos+a.len)n=i+1;else return a.origPos+(e-a.cleanPos)}let i=t[t.length-1];return i.origPos+(e-i.cleanPos)}};function y(e,t=[c,h,l,u,d,f,m,p,_,g]){let n=e,r=new Map,i=new Map;for(let t=0;t<=e.length;t++)r.set(t,t),i.set(t,t);for(let e of t){let t=n,a=e(n);if(t!==a){let{newCleanToOriginal:e,newOriginalToClean:o}=b(t,a,r,i);r=e,i=o,n=a}}let a={cleanToOriginal:r,originalToClean:i,cleanToOriginalSegments:v.fromMap(r)};return{cleaned:n,transformationMap:a,warnings:[]}}function b(e,t,n,r){let i=new Map,a=new Map,o=0,s=0;for(;o<=e.length||s<=t.length;){if(o>=e.length&&s>=t.length){let e=n.get(o)??o;i.set(s,e),a.set(e,s);break}if(o>=e.length){let e=n.get(o)??o;i.set(s,e),s++;continue}if(s>=t.length){let e=n.get(o)??o;a.set(e,s),o++;continue}if(e[o]===t[s]){let e=n.get(o)??o;i.set(s,e),a.set(e,s),o++,s++}else{if(e.length-o===t.length-s){let e=n.get(o)??o;i.set(s,e),a.set(e,s),o++,s++;continue}let r=!1,c=Math.max(40,Math.abs(e.length-t.length)+10),l=-1,u=-1;for(let n=1;n<=c;n++){if(l<0&&o+n<e.length&&e[o+n]===t[s]){let r=!0;for(let i=1;i<3;i++){let a=o+n+i,c=s+i;if(a>=e.length||c>=t.length)break;if(e[a]!==t[c]){r=!1;break}}r&&(l=n)}if(u<0&&s+n<t.length&&e[o]===t[s+n]){let r=!0;for(let i=1;i<3;i++){let a=o+i,c=s+n+i;if(a>=e.length||c>=t.length)break;if(e[a]!==t[c]){r=!1;break}}r&&(u=n)}if(l>=0&&u>=0)break}if(l>=0&&(u<0||l<=u)){for(let e=0;e<l;e++){let t=n.get(o+e)??o+e;a.set(t,s)}o+=l,r=!0}else if(u>=0){let e=n.get(o)??o;for(let t=0;t<u;t++)i.set(s+t,e);s+=u,r=!0}if(r)continue;let d=n.get(o)??o;i.set(s,d),a.set(d,s),o++,s++}}return{newCleanToOriginal:i,newOriginalToClean:a}}var x=class{constructor(e){this.parent=Array.from({length:e},(e,t)=>t),this.rank=Array(e).fill(0)}find(e){let t=e;for(;this.parent[t]!==t;)this.parent[t]=this.parent[this.parent[t]],t=this.parent[t];return t}union(e,t){let n=this.find(e),r=this.find(t);if(n!==r){if(n>r){let e=n;n=r,r=e}this.parent[r]=n,this.rank[n]===this.rank[r]&&this.rank[n]++}}connected(e,t){return this.find(e)===this.find(t)}components(){let e=new Map;for(let t=0;t<this.parent.length;t++){let n=this.find(t),r=e.get(n);r||(r=[],e.set(n,r)),r.push(t)}return e}};function S(e,t,n){let r=/\blabel\s*=\s*["'](\d+)["']/.exec(e);if(r)return Number.parseInt(r[1],10);let i=/\bid\s*=\s*["'](?:fn|footnote)(\d+)["']/.exec(e);if(i)return Number.parseInt(i[1],10);let a=t.replace(/<[^>]*>/g,``),o=/^\s*(\d+)[.\s):]/.exec(a);return o?Number.parseInt(o[1],10):n+1}function C(e,t,n){let r=RegExp(`<${t}\\b[^>]*>`,`gi`),i=RegExp(`</${t}\\s*>`,`gi`);r.lastIndex=n,i.lastIndex=n;let a=1;for(;a>0;){let t=r.exec(e),n=i.exec(e);if(!n)return null;if(t&&t.index<n.index)a++,i.lastIndex=t.index+t[0].length;else{if(a--,a===0)return{contentEnd:n.index,tagEnd:n.index+n[0].length};r.lastIndex=n.index+n[0].length}}return null}function w(e){let t=[],n,r=RegExp(`<(footnote|fn)\\b[^>]*>|<(div|aside|section|p|span)\\b[^>]*(?:class\\s*=\\s*["'][^"']*\\bfootnote\\b[^"']*["']|id\\s*=\\s*["'](?:fn|footnote)\\d*["'])[^>]*>`,`gi`);for(;(n=r.exec(e))!==null;){let i=n[0],a=n.index+i.length,o=C(e,n[1]||n[2],a);if(!o)continue;let s=S(i,e.slice(a,o.contentEnd),t.length);t.push({start:a,end:o.contentEnd,footnoteNumber:s}),r.lastIndex=o.tagEnd}return t.sort((e,t)=>e.start-t.start)}const T=/^\s*[-_]{5,}\s*$/m;function E(e){let t=T.exec(e);if(!t)return[];let n=t.index+t[0].length,r=e.slice(n),i=RegExp(`^\\s*(?:FN\\s*(\\d+)[.\\s:)]|\\[(\\d+)\\]\\s|n\\.\\s*(\\d+)\\s|(\\d+)\\.\\s)`,`gm`),a=[],o;for(;(o=i.exec(r))!==null;){let e=o[1]||o[2]||o[3]||o[4];e&&a.push({index:o.index+n,footnoteNumber:Number.parseInt(e,10)})}if(a.length===0)return[];let s=[];for(let t=0;t<a.length;t++){let n=a[t].index,r=t+1<a.length?a[t+1].index:e.length;s.push({start:n,end:r,footnoteNumber:a[t].footnoteNumber})}return s}const D=/<[^>]+>/;function O(e){if(D.test(e)){let t=w(e);if(t.length>0)return t}return E(e)}function k(e,t,n,r=20){for(let i=1;i<=r;i++){let r=n===`forward`?e+i:e-i,a=t.get(r);if(a!==void 0)return a}}function A(e,t){return e.length===0?[]:e.map(e=>({start:t.originalToClean.get(e.start)??k(e.start,t.originalToClean,`forward`)??e.start,end:t.originalToClean.get(e.end)??k(e.end,t.originalToClean,`backward`)??e.end,footnoteNumber:e.footnoteNumber}))}function j(e,t){if(t.length!==0)for(let n of e){let e=n.span.cleanStart,r=0,i=t.length-1;for(;r<=i;){let a=r+i>>>1,o=t[a];if(e<o.start)i=a-1;else if(e>=o.end)r=a+1;else{n.inFootnote=!0,n.footnoteNumber=o.footnoteNumber;break}}}}function M(e,t){return t.cleanToOriginalSegments?{originalStart:t.cleanToOriginalSegments.lookup(e.cleanStart),originalEnd:t.cleanToOriginalSegments.lookup(e.cleanEnd)}:{originalStart:t.cleanToOriginal.get(e.cleanStart)??e.cleanStart,originalEnd:t.cleanToOriginal.get(e.cleanEnd)??e.cleanEnd}}const N={jan:1,january:1,feb:2,february:2,mar:3,march:3,apr:4,april:4,may:5,jun:6,june:6,jul:7,july:7,aug:8,august:8,sep:9,sept:9,september:9,oct:10,october:10,nov:11,november:11,dec:12,december:12};function P(e){let t=N[e.toLowerCase().replace(/\.$/,``)];if(t===void 0)throw Error(`Invalid month name: ${e}`);return t}function F(e){let{year:t,month:n,day:r}=e;return n!==void 0&&r!==void 0?`${t}-${String(n).padStart(2,`0`)}-${String(r).padStart(2,`0`)}`:n===void 0?String(t):`${t}-${String(n).padStart(2,`0`)}`}function I(e){let t=e.match(/\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec)\.?\s+(\d{1,2}),?\s+(\d{4})\b/i);if(t){let e=P(t[1]),n=Number.parseInt(t[2],10),r={year:Number.parseInt(t[3],10),month:e,day:n};return{iso:F(r),parsed:r}}let n=e.match(/\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b/i);if(n){let e=P(n[1]),t=Number.parseInt(n[2],10),r={year:Number.parseInt(n[3],10),month:e,day:t};return{iso:F(r),parsed:r}}let r=e.match(/\b(\d{1,2})\/(\d{1,2})\/(\d{4})\b/);if(r){let e=Number.parseInt(r[1],10),t=Number.parseInt(r[2],10),n={year:Number.parseInt(r[3],10),month:e,day:t};return{iso:F(n),parsed:n}}let i=e.match(/\b(\d{4})\b/);if(i){let e={year:Number.parseInt(i[1],10)};return{iso:F(e),parsed:e}}}function L(e){return{level:e,jurisdiction:`federal`,confidence:1}}function R(e,t){return{level:e,jurisdiction:`state`,state:t,confidence:1}}function z(e){return{level:e,jurisdiction:`state`,confidence:.7}}const B=new Map([[`U.S.`,L(`supreme`)],[`S.Ct.`,L(`supreme`)],[`L.Ed.`,L(`supreme`)],[`L.Ed.2d`,L(`supreme`)],[`S. Ct.`,L(`supreme`)],[`L. Ed.`,L(`supreme`)],[`L. Ed. 2d`,L(`supreme`)],[`U. S.`,L(`supreme`)],[`L.Ed. 2d`,L(`supreme`)],[`L. Ed.2d`,L(`supreme`)],[`F.`,L(`appellate`)],[`F.2d`,L(`appellate`)],[`F.3d`,L(`appellate`)],[`F.4th`,L(`appellate`)],[`F. App'x`,L(`appellate`)],[`F.Supp.`,L(`trial`)],[`F.Supp.2d`,L(`trial`)],[`F.Supp.3d`,L(`trial`)],[`F.Supp.4th`,L(`trial`)],[`F. Supp.`,L(`trial`)],[`F. Supp. 2d`,L(`trial`)],[`F. Supp. 3d`,L(`trial`)],[`F. Supp. 4th`,L(`trial`)],[`F.R.D.`,L(`trial`)],[`B.R.`,L(`trial`)],[`Cal.`,R(`supreme`,`CA`)],[`Cal.2d`,R(`supreme`,`CA`)],[`Cal.3d`,R(`supreme`,`CA`)],[`Cal.4th`,R(`supreme`,`CA`)],[`Cal.5th`,R(`supreme`,`CA`)],[`Cal.App.`,R(`appellate`,`CA`)],[`Cal.App.2d`,R(`appellate`,`CA`)],[`Cal.App.3d`,R(`appellate`,`CA`)],[`Cal.App.4th`,R(`appellate`,`CA`)],[`Cal.App.5th`,R(`appellate`,`CA`)],[`Cal.Rptr.`,R(`unknown`,`CA`)],[`Cal.Rptr.2d`,R(`unknown`,`CA`)],[`Cal.Rptr.3d`,R(`unknown`,`CA`)],[`N.Y.`,R(`supreme`,`NY`)],[`N.Y.2d`,R(`supreme`,`NY`)],[`N.Y.3d`,R(`supreme`,`NY`)],[`A.D.`,R(`appellate`,`NY`)],[`A.D.2d`,R(`appellate`,`NY`)],[`A.D.3d`,R(`appellate`,`NY`)],[`Misc.`,R(`trial`,`NY`)],[`Misc.2d`,R(`trial`,`NY`)],[`Misc.3d`,R(`trial`,`NY`)],[`N.Y.S.`,R(`unknown`,`NY`)],[`N.Y.S.2d`,R(`unknown`,`NY`)],[`N.Y.S.3d`,R(`unknown`,`NY`)],[`Ill.`,R(`supreme`,`IL`)],[`Ill.2d`,R(`supreme`,`IL`)],[`Ill.App.`,R(`appellate`,`IL`)],[`Ill.App.2d`,R(`appellate`,`IL`)],[`Ill.App.3d`,R(`appellate`,`IL`)],[`Ill.Dec.`,R(`unknown`,`IL`)],[`Ohio St.`,R(`supreme`,`OH`)],[`Ohio St.2d`,R(`supreme`,`OH`)],[`Ohio St.3d`,R(`supreme`,`OH`)],[`Ohio App.3d`,R(`appellate`,`OH`)],[`Pa.`,R(`supreme`,`PA`)],[`Pa. Super.`,R(`appellate`,`PA`)],[`Tex.`,R(`supreme`,`TX`)],[`Fla.`,R(`supreme`,`FL`)],[`Mass.`,R(`supreme`,`MA`)],[`Mass. App. Ct.`,R(`appellate`,`MA`)],[`A.`,z(`unknown`)],[`A.2d`,z(`unknown`)],[`A.3d`,z(`unknown`)],[`S.E.`,z(`unknown`)],[`S.E.2d`,z(`unknown`)],[`S.E.3d`,z(`unknown`)],[`S.W.`,z(`unknown`)],[`S.W.2d`,z(`unknown`)],[`S.W.3d`,z(`unknown`)],[`N.E.`,z(`unknown`)],[`N.E.2d`,z(`unknown`)],[`N.E.3d`,z(`unknown`)],[`N.W.`,z(`unknown`)],[`N.W.2d`,z(`unknown`)],[`N.W.3d`,z(`unknown`)],[`So.`,z(`unknown`)],[`So.2d`,z(`unknown`)],[`So.3d`,z(`unknown`)],[`P.`,z(`unknown`)],[`P.2d`,z(`unknown`)],[`P.3d`,z(`unknown`)]]);function ee(e){return B.get(e)}const V=/^(?:at\s+)?(\d+)(?:[-–—](\d+))?\s*(?:(?:n|note)\s*\.?\s*(\d+))?$/i;function H(e){let t=e.trim();if(!t)return null;let n=V.exec(t);if(!n)return null;let r=Number.parseInt(n[1],10),i=n[2],a=n[3],o,s=!1;if(i){s=!0;let e=Number.parseInt(i,10);if(i.length<n[1].length){let e=n[1].slice(0,n[1].length-i.length);o=Number.parseInt(e+i,10)}else o=e}let c=a?Number.parseInt(a,10):void 0,l={page:r,isRange:s,raw:t};return o!==void 0&&(l.endPage=o),c!==void 0&&(l.footnote=c),l}function U(e){if(!e||!e.trim())return;let t=e.trim();return t=t.replace(/\.\s+(?=[A-Za-z])/g,`.`),/[A-Za-z]$/.test(t)&&(/\./.test(t)||/^\d+\w*\s+[A-Z]/i.test(t))&&(t+=`.`),t}const te=new Set([`see`,`see also`,`see generally`,`cf`,`but see`,`but cf`,`compare`,`accord`,`contra`]),ne=(()=>{let e=[...te].sort((e,t)=>t.length-e.length).map(e=>e.replace(/\s+/g,`\\s+`).replace(/\./g,`\\.`));return RegExp(`^(${e.join(`|`)})\\s+`,`i`)})();function re(e){let t=Number.parseInt(e,10);return String(t)===e?t:e}const ie=/(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec|January|February|March|April|May|June|July|August|September|October|November|December)\.?/,ae=new Date().getFullYear(),oe=new Set(`F.,F.2d,F.3d,F.4th,U.S.,S. Ct.,L. Ed.,L. Ed. 2d,P.,P.2d,P.3d,A.,A.2d,A.3d,N.E.,N.E.2d,N.E.3d,N.W.,N.W.2d,S.E.,S.E.2d,S.W.,S.W.2d,S.W.3d,So.,So. 2d,So. 3d,F. Supp.,F. Supp. 2d,F. Supp. 3d,F. Supp. 4th,F. App'x`.split(`,`)),se=/^(\d+(?:-\d+)?)\s+([A-Za-z0-9.\s']+)\s+(?:\((\d+)\s+([A-Z][A-Za-z.]+)\)\s+)?(\d+|_{3,}|-{3,})/,ce=/^[_-]{3,}$/,le=/,\s*(\d+)/,ue=/\(([^)]+)\)/,de=/^(?:,\s*\d+(?:-\d+)?)*(?:\s+(?:n|note)\s*\.?\s*\d+)?\s*\(([^)]+)\)/,fe=/^,\s*(\d+(?:-\d+)?)/,pe=/\d\.\s+/g,me=/[\s,]/,he=/^(?:,\s*\d+(?:[-–—]\d+)?(?:\s+(?:n|note)\s*\.?\s*\d+)?)+/,ge=[[/^aff'?d\s+on\s+other\s+grounds\b/i,`affirmed`],[/^affirmed\s+on\s+other\s+grounds\b/i,`affirmed`],[/^aff'?d\b/i,`affirmed`],[/^affirmed\b/i,`affirmed`],[/^rev'?d\s+and\s+remanded\b/i,`reversed`],[/^rev'?d\s+on\s+other\s+grounds\b/i,`reversed`],[/^reversed\s+and\s+remanded\b/i,`reversed`],[/^rev'?d\b/i,`reversed`],[/^reversed\b/i,`reversed`],[/^certiorari\s+denied\b/i,`cert_denied`],[/^cert\.\s*den(ied|\.)(?=[\s,;(]|$)/i,`cert_denied`],[/^certiorari\s+granted\b/i,`cert_granted`],[/^cert\.\s*granted\b/i,`cert_granted`],[/^overruled\s+by\b/i,`overruled`],[/^overruled\s+in\b/i,`overruled`],[/^overruling\b/i,`overruled`],[/^overruled\b/i,`overruled`],[/^vacated\s+by\b/i,`vacated`],[/^vacated\b/i,`vacated`],[/^remanded\s+for\s+reconsideration\b/i,`remanded`],[/^remanded\b/i,`remanded`],[/^modified\s+by\b/i,`modified`],[/^modified\b/i,`modified`],[/^abrogated\s+by\b/i,`abrogated`],[/^abrogated\s+in\b/i,`abrogated`],[/^abrogated\b/i,`abrogated`],[/^superseded\s+by\b/i,`superseded`],[/^superseded\b/i,`superseded`],[/^disapproved\s+of\b/i,`disapproved`],[/^disapproved\b/i,`disapproved`],[/^questioned\s+by\b/i,`questioned`],[/^questioned\b/i,`questioned`],[/^distinguished\s+by\b/i,`distinguished`],[/^distinguished\b/i,`distinguished`],[/^withdrawn\b/i,`withdrawn`],[/^reinstated\b/i,`reinstated`]];function _e(e){for(let[t,n]of ge){let r=t.exec(e);if(r)return{signal:n,matchLength:r[0].length}}}const ve=new Set([`holding`,`finding`,`stating`,`noting`,`explaining`,`quoting`,`citing`,`discussing`,`describing`,`recognizing`,`applying`,`rejecting`,`adopting`,`requiring`]);function ye(e){return ve.has(e)}const be=/^([a-z]+)\b/i,xe=/([A-Z][A-Za-z0-9\s.,'&()/-]+?)\s+v(?:s)?\.?\s+([A-Za-z0-9\s.,'&()/-]+?)\s*,\s*$/,Se=/\b(In re|Ex parte|Matter of|Estate of|State ex rel\.|United States ex rel\.|Application of|Petition of)\s+([A-Za-z0-9\s.,'&()/-]+?)\s*,\s*$/i;function Ce(e){let t=e.replace(/\s*\d{1,2}\/\d{1,2}\/\d{4}\s*$/,``).trim();return t=t.replace(/\s*\d{4}\s*$/,``).trim(),t=t.replace(/\s*,?\s*\d{1,2}\s*,?\s*$/,``).trim(),t=t.replace(RegExp(`\\s*${ie.source}\\s*$`,`i`),``).trim(),t=t.replace(/,\s*$/,``).trim(),t&&/[A-Za-z]/.test(t)?t:void 0}function we(e,t,n=150){let r=Math.max(0,t-n),i=e.substring(r,t),a=r,o=-1,s;for(;(s=pe.exec(i))!==null;)o=s.index+s[0].length;let c=/\b(?:v|vs|Inc|Corp|Ltd|Co|Cir|App|Ct|Supp|Dist|Rev|Stat|Gen|No|ed|Jr|Sr|Dr|Mr|Mrs|Ms|Prof|St|Dep|Auth|Ass|Comm)\.\s+$/i,l=/[.)]\s+(?=[A-Z])/g;for(;(s=l.exec(i))!==null;){let e=i.substring(Math.max(0,s.index-15),s.index+2);if(c.test(e))continue;let t=s.index+s[0].length;t>o&&(o=t)}o!==-1&&(i=i.substring(o),a=r+o);let u=xe.exec(i);if(u&&!u[0].includes(`;`))return{caseName:`${u[1].trim()} v. ${u[2].trim()}`,nameStart:a+u.index};let d=Se.exec(i);if(d&&!d[0].includes(`;`))return{caseName:`${d[1]} ${d[2].trim()}`,nameStart:a+d.index}}function Te(e,t,n=500){let r=[],i=[],a=t,o=Math.min(e.length,t+n),s,c=e.substring(a,o),l=he.exec(c);for(l&&(a+=l[0].length);a<o;){for(;a<o&&me.test(e[a]);)a++;if(a>=o||e[a]!==`(`){let t=e.substring(a,o),n=_e(t);if(n){s={text:t.substring(0,n.matchLength).replace(/\s+$/,``),normalized:n.signal,start:a,end:a+n.matchLength},a+=n.matchLength;continue}break}let t=a,n=0,c=a+1;for(;a<o;){let o=e[a];if(o===`(`)n++;else if(o===`)`&&(n--,n===0)){a++;let n=e.substring(c,a-1).trim();n.length>0&&(r.push({text:n,start:t,end:a}),s&&=(i.push({signal:s,nextParenIndex:r.length-1}),void 0));break}a++}if(n>0)break}return s&&i.push({signal:s,nextParenIndex:-1}),{parens:r,signals:i}}function W(e){let t={},n=I(e);n&&(t.date=n,t.year=n.parsed.year);let r=Ce(e);return r&&(t.court=r),/\ben banc\b/i.test(e)?t.disposition=`en banc`:/\bper curiam\b/i.test(e)&&(t.disposition=`per curiam`),t}function Ee(e){let t=be.exec(e);if(t){let n=t[1].toLowerCase();if(ye(n))return{kind:`explanatory`,text:e,type:n}}let n=W(e);return n.year||n.date||n.disposition?{kind:`metadata`,...n}:{kind:`explanatory`,text:e,type:`other`}}function G(e){let t=e;t=t.replace(/\bet\s+al\.?/gi,``),t=t.replace(/\s+d\/b\/a\b.*/gi,``),t=t.replace(/\s+aka\b.*/gi,``);let n=``;for(;n!==t;)n=t,t=t.replace(/,?\s*(Inc|LLC|Corp|Ltd|Co|LLP|LP|P\.C)\.?$/gi,``);return t=t.replace(/^(The|A|An)\s+/i,``),t=t.replace(/\s+/g,` `),t.trim().toLowerCase()}function De(e){let t;for(let t of[`In re`,`Ex parte`,`Matter of`,`State ex rel.`,`United States ex rel.`,`Application of`,`Petition of`,`Estate of`]){let n=RegExp(`^(${t})\\s+(.+)$`,`i`).exec(e);if(n){let t=n[1],r=n[2];if(/\s+v\.?\s+/i.test(r)){let t=/^(.+?)\s+v\.?\s+(.+)$/i.exec(e);if(t){let e=t[1].trim(),n=t[2].trim();return{plaintiff:e,plaintiffNormalized:G(e),defendant:n,defendantNormalized:G(n)}}}else return{plaintiff:e,plaintiffNormalized:G(r),proceduralPrefix:t}}}let n=/^(.+?)\s+v\.?\s+(.+)$/i.exec(e);if(n){let e=n[1].trim(),r=n[2].trim(),i=e.match(ne)??e.match(/^(Also|In(?!\s+re\b))\s+/i);if(i){let n=i[1].toLowerCase().replace(/\.$/,``);te.has(n)&&(t=n),e=e.substring(i[0].length).trim()}return{plaintiff:e||n[1].trim(),plaintiffNormalized:G(e||n[1].trim()),defendant:r,defendantNormalized:G(r),signal:t}}return{}}function K(t,n,r){let{text:i,span:a}=t,o=se.exec(i);if(!o)throw Error(`Failed to parse case citation: ${i}`);let s=re(o[1]),c=o[2].trim(),l=o[3]?Number.parseInt(o[3],10):void 0,u=o[4]||void 0,d=o[5],f=ce.test(d),p=f?void 0:Number.parseInt(d,10),m=f?!0:void 0,h=le.exec(i),g=h?Number.parseInt(h[1],10):void 0,_=h?H(h[1])??void 0:void 0,v,y,b,x,S,C,w,T=ue.exec(i);if(T&&!l){w=T[1];let e=W(w);v=e.year,y=e.court,b=e.date,x=e.disposition}if(r&&!w){let e=r.substring(a.cleanEnd),t=de.exec(e);if(t){w=t[1];let n=W(w);if(v=n.year,y=n.court,b=n.date,x=n.disposition,g===void 0){let t=fe.exec(e);t&&(g=Number.parseInt(t[1],10),_||=H(t[1])??void 0)}}}let E,D,O;if(r){O=Te(r,a.cleanEnd),D=O.parens;let e=w?D.slice(1):D;for(let t of e){let e=Ee(t.text);e.kind===`metadata`?(e.court&&(!y||y===x)&&(y=e.court),e.year&&!v&&(v=e.year,b=e.date),e.disposition&&!x&&(x=e.disposition)):(E??=[],E.push({text:e.text,type:e.type}))}}let k;if(r&&O&&O.signals.length>0)for(let e=0;e<O.signals.length;e++){let{signal:t}=O.signals[e];k??=[];let{originalStart:r,originalEnd:i}=M({cleanStart:t.start,cleanEnd:t.end},n);k.push({signal:t.normalized,rawSignal:t.text,signalSpan:{cleanStart:t.start,cleanEnd:t.end,originalStart:r,originalEnd:i},order:e})}let A=ee(c);if(!y&&A?.level===`supreme`&&A?.jurisdiction===`federal`&&(y=`scotus`),r){let e=we(r,a.cleanStart);if(e){S=e.caseName;let t=D&&D.length>0?D[D.length-1].end:a.cleanEnd,r=e.nameStart,i=t;C={cleanStart:r,cleanEnd:i,originalStart:n.cleanToOriginal.get(r)??r,originalEnd:n.cleanToOriginal.get(i)??i}}}let j,N,P,F,I,L;if(S){let e=De(S);if(j=e.plaintiff,N=e.plaintiffNormalized,P=e.defendant,F=e.defendantNormalized,I=e.proceduralPrefix,L=e.signal,L&&j&&P&&(S=`${j} v. ${P}`,C)){let e=r?.substring(C.cleanStart,a.cleanStart)??``,t=e.trimStart(),i=e.length-t.length,o=ne.exec(t);if(o){let e=C.cleanStart+i+o[0].length,t=n.cleanToOriginal.get(e)??e;C={...C,cleanStart:e,originalStart:t}}}}let{originalStart:R,originalEnd:z}=M(a,n),B=.2,V=e()?.byAbbreviation.get(c.toLowerCase());return(V&&V.length>0||oe.has(c))&&(B+=.3),v!==void 0&&v<=ae&&(B+=.2),S&&(B+=.15),y&&(B+=.1),B=Math.round(Math.min(B,1)*100)/100,m&&(B=Math.max(B,.5)),{type:`case`,text:i,span:{cleanStart:a.cleanStart,cleanEnd:a.cleanEnd,originalStart:R,originalEnd:z},confidence:B,matchedText:i,processTimeMs:0,patternsChecked:1,volume:s,reporter:c,page:p,nominativeVolume:l,nominativeReporter:u,pincite:g,pinciteInfo:_,court:y,normalizedCourt:U(y),year:v,hasBlankPage:m,date:b,fullSpan:C,caseName:S,disposition:x,parentheticals:E,subsequentHistoryEntries:k,plaintiff:j,plaintiffNormalized:N,defendant:P,defendantNormalized:F,proceduralPrefix:I,inferredCourt:A,signal:L}}const q=`${String.raw`(?:art(?:icle)?\.?|amend(?:ment)?\.?|amdt\.?)\s+([IVX]+|\d+)`}${String.raw`(?:[,;]\s*§\s*([\w-]+))?`}${String.raw`(?:[,;]\s*cl\.?\s*(\d+))?`}`,Oe=new RegExp(q,`i`),ke=[{id:`us-constitution`,regex:new RegExp(String.raw`\b(?:United\s+States\s+Constitution|U\.?\s*S\.?\s+Const\.?),?\s+${q}`,`gi`),description:`U.S. Constitution citations (e.g., "U.S. Const. art. III, § 2", "U.S. Const. amend. XIV")`,type:`constitutional`},{id:`state-constitution`,regex:new RegExp(String.raw`\b(?:Ala|Alaska|Ariz|Ark|Cal(?:if)?|Colo|Conn|Del|Fla|Ga|Haw|Idaho|Ill|Ind|Iowa|Kan|Ky|La|Me|Md|Mass|Mich|Minn|Miss|Mo|Mont|Neb|Nev|N\.?\s*H|N\.?\s*J|N\.?\s*M|N\.?\s*Y|N\.?\s*C|N\.?\s*D|Ohio|Okla|Or(?:e)?|Pa|R\.?\s*I|S\.?\s*C|S\.?\s*D|Tenn|Tex|Utah|Vt|W\.?\s*Va|Va|Wash|Wis|Wyo)\.?\s+Const\.?,?\s+${q}`,`gi`),description:`State constitution citations (e.g., "Cal. Const. art. I, § 7", "N.Y. Const. art. VI, § 20")`,type:`constitutional`},{id:`bare-constitution`,regex:new RegExp(String.raw`(?<!\.\s)(?<![A-Z]\s)\bConst\.?,?\s+${q}`,`g`),description:`Bare constitutional citations without jurisdiction prefix (e.g., "Const. art. I, § 8, cl. 3")`,type:`constitutional`},{id:`bare-article`,regex:new RegExp(String.raw`(?<!Const\.?,?\s)\bArt\.?\s+[IVX]+[,;]\s*§\s*[\w-]+(?:[,;]\s*cl\.?\s*\d+)?`,`g`),description:`Bare article references without "Const." prefix (e.g., "Art. I, §8, cl. 3")`,type:`constitutional`}],Ae={I:1,II:2,III:3,IV:4,V:5,VI:6,VII:7,VIII:8,IX:9,X:10,XI:11,XII:12,XIII:13,XIV:14,XV:15,XVI:16,XVII:17,XVIII:18,XIX:19,XX:20,XXI:21,XXII:22,XXIII:23,XXIV:24,XXV:25,XXVI:26,XXVII:27};function je(e){let t=e.toUpperCase();if(t in Ae)return Ae[t];let n=Number.parseInt(e,10);return Number.isNaN(n)?void 0:n}const Me={ala:`AL`,alaska:`AK`,ariz:`AZ`,ark:`AR`,cal:`CA`,calif:`CA`,colo:`CO`,conn:`CT`,del:`DE`,fla:`FL`,ga:`GA`,haw:`HI`,idaho:`ID`,ill:`IL`,ind:`IN`,iowa:`IA`,kan:`KS`,ky:`KY`,la:`LA`,me:`ME`,md:`MD`,mass:`MA`,mich:`MI`,minn:`MN`,miss:`MS`,mo:`MO`,mont:`MT`,neb:`NE`,nev:`NV`,"n.h":`NH`,"n.j":`NJ`,"n.m":`NM`,"n.y":`NY`,"n.c":`NC`,"n.d":`ND`,ohio:`OH`,okla:`OK`,or:`OR`,ore:`OR`,pa:`PA`,"r.i":`RI`,"s.c":`SC`,"s.d":`SD`,tenn:`TN`,tex:`TX`,utah:`UT`,vt:`VT`,va:`VA`,wash:`WA`,"w.va":`WV`,wis:`WI`,wyo:`WY`},Ne=/amend|amdt/i,Pe=/^([A-Za-z]+(?:\.\s*[A-Za-z]+)?(?:\.\s*[A-Za-z]+)?)\.?\s+Const/i;function Fe(e){let t=Pe.exec(e);if(!t)return;let n=t[1].replace(/\s+/g,``).replace(/\.$/g,``).toLowerCase();if(n in Me)return Me[n]}function Ie(e,t){let{text:n,span:r}=e,i=Oe.exec(n),a,o,s,c;if(i){let e=je(i[1]);Ne.test(i[0])?o=e:a=e,s=i[2]||void 0,c=i[3]?Number.parseInt(i[3],10):void 0}let l;switch(e.patternId){case`us-constitution`:l=`US`;break;case`state-constitution`:l=Fe(n);break;default:l=void 0;break}let{originalStart:u,originalEnd:d}=M(r,t),f;f=e.patternId===`bare-article`?.5:e.patternId===`bare-constitution`?.7:s?.95:.9;let p=n.endsWith(`.`)?n.slice(0,-1):n;return{type:`constitutional`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:u,originalEnd:d},confidence:f,matchedText:p,processTimeMs:0,patternsChecked:1,jurisdiction:l,article:a,amendment:o,section:s,clause:c}}function Le(e,t){let{text:n,span:r}=e,i=/^(\d+(?:-\d+)?)\s+Fed\.\s?Reg\.\s+(\d+)/.exec(n);if(!i)throw Error(`Failed to parse Federal Register citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=Number.parseInt(i[2],10),c=/\((?:.*?\s)?(\d{4})\)/.exec(n),l=c?Number.parseInt(c[1],10):void 0,{originalStart:u,originalEnd:d}=M(r,t);return{type:`federalRegister`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:u,originalEnd:d},confidence:.9,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,page:s,year:l}}function Re(e,t){let{text:n,span:r}=e,i=/^(\d+(?:-\d+)?)\s+([A-Za-z.\s]+?)\s+(\d+)/.exec(n);if(!i)throw Error(`Failed to parse journal citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=i[2].trim(),c=Number.parseInt(i[3],10),l=/,\s*(\d+)/.exec(n),u=l?Number.parseInt(l[1],10):void 0,{originalStart:d,originalEnd:f}=M(r,t);return{type:`journal`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:d,originalEnd:f},confidence:.6,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,journal:s,abbreviation:s,page:c,pincite:u}}function ze(e,t){let{text:n,span:r}=e,i=/^(\d{4})\s+(.+?)\s+(\d+)$/.exec(n);if(!i)throw Error(`Failed to parse neutral citation: ${n}`);let a=Number.parseInt(i[1],10),o=i[2],s=i[3],{originalStart:c,originalEnd:l}=M(r,t);return{type:`neutral`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:c,originalEnd:l},confidence:1,matchedText:n,processTimeMs:0,patternsChecked:1,year:a,court:o,documentNumber:s}}function Be(e,t){let{text:n,span:r}=e,i=/Pub\.\s?L\.(?:\s?No\.)?\s?(\d+)-(\d+)/.exec(n);if(!i)throw Error(`Failed to parse public law citation: ${n}`);let a=Number.parseInt(i[1],10),o=Number.parseInt(i[2],10),{originalStart:s,originalEnd:c}=M(r,t);return{type:`publicLaw`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:s,originalEnd:c},confidence:.9,matchedText:n,processTimeMs:0,patternsChecked:1,congress:a,lawNumber:o}}function Ve(e,t,n){let{text:r,span:i}=e,a=/([Ii])(?:d|bid)(\.)(,?)\s*(?:at\s+(\d+(?:\s*[-–]\s*\d+)?))?/.exec(r);if(!a)throw Error(`Failed to parse Id. citation: ${r}`);let o=a[1],s=a[3]===`,`,c=a[4]?Number.parseInt(a[4],10):void 0,l=1;if(o===`i`&&(l=.85),s&&(l=Math.min(l,.9)),n&&i.cleanStart>0){let e=n.slice(Math.max(0,i.cleanStart-20),i.cleanStart).trimEnd();e.length>0&&(e[e.length-1],/[.;)\]—:]$/.test(e)||(l=Math.min(l,.4)))}let{originalStart:u,originalEnd:d}=M(i,t);return{type:`id`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:u,originalEnd:d},confidence:l,matchedText:r,processTimeMs:0,patternsChecked:1,pincite:c}}function He(e,t){let{text:n,span:r}=e,i=/\b([A-Z][a-zA-Z''\-]+\.?(?:(?:\s+v\.?\s+|\s+)[A-Z][a-zA-Z''\-]+\.?)*)\s*,?\s+supra(?:\s+note\s+(\d+))?(?:,?\s+at\s+(\d+))?/.exec(n),a=i||/supra(?:\s+note\s+(\d+)(?:,?\s+at\s+(\d+))?|\s+at\s+(\d+))?/.exec(n);if(!a)throw Error(`Failed to parse supra citation: ${n}`);let o,s,c;if(i)o=i[1],s=i[3]?Number.parseInt(i[3],10):void 0,c=.9;else{o=void 0,a[1];let e=a[2],t=a[3];s=e?Number.parseInt(e,10):t?Number.parseInt(t,10):void 0,c=.8}let{originalStart:l,originalEnd:u}=M(r,t);return{type:`supra`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:l,originalEnd:u},confidence:c,matchedText:n,processTimeMs:0,patternsChecked:1,partyName:o,pincite:s}}function Ue(e,t){let{text:n,span:r}=e,i=/(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.''\s]+?(?:\d[a-z]{1,2})?)\s*,?\s+at\s+(\d+)/.exec(n);if(!i)throw Error(`Failed to parse short-form case citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=i[2].trim(),c=Number.parseInt(i[3],10),{originalStart:l,originalEnd:u}=M(r,t),d=.4;return oe.has(s)&&(d+=.3),{type:`shortFormCase`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:l,originalEnd:u},confidence:d,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,reporter:s,pincite:c}}const We=/^([^(]+?)\s*((?:\([^)]*\))*)$/,Ge=/\s*et\s+seq\.?\s*$/i;function J(e){let t=e.replace(Ge,``),n=t!==e,r=t.trim(),i=We.exec(r),a=i?.[2];return i!==null&&a?{section:i[1].trim(),subsection:a,hasEtSeq:n}:{section:r,hasEtSeq:n}}const Ke=/^(?:(\d+)\s+)?(.+?)\s*§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)$/;function qe(e,n){let{text:r,span:i}=e,a=Ke.exec(r),o,s,c;a?(o=a[1]?Number.parseInt(a[1],10):void 0,s=a[2].trim(),c=a[3]):(s=r,c=``);let l=t(s),u=l?.jurisdiction,d=s,{section:f,subsection:p,hasEtSeq:m}=J(c),{originalStart:h,originalEnd:g}=M(i,n),_=r.includes(`§`),v;return v=l&&_?.95:l?.85:_?.6:.4,o!==void 0&&(v+=.05),p&&(v+=.05),v=Math.min(v,1),{type:`statute`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:h,originalEnd:g},confidence:v,matchedText:r,processTimeMs:0,patternsChecked:1,title:o,code:d,section:f,subsection:p,pincite:p,jurisdiction:u,hasEtSeq:m||void 0}}const Je=/^(\d+)\s+(?:ILCS|Ill\.?\s*Comp\.?\s*Stat\.?)\s*(?:Ann\.?\s+)?(\d+)\/(.+)$/;function Ye(e,t){let{text:n,span:r}=e,i=Je.exec(n),a,o,s;i?(a=Number.parseInt(i[1],10),o=i[2],s=i[3]):(o=n,s=``);let{section:c,subsection:l,hasEtSeq:u}=J(s),{originalStart:d,originalEnd:f}=M(r,t),p=i?.95:.3;return l&&(p+=.05),p=Math.min(p,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:d,originalEnd:f},confidence:p,matchedText:n,processTimeMs:0,patternsChecked:1,title:a,code:o,section:c,subsection:l,pincite:l,jurisdiction:i?`IL`:void 0,hasEtSeq:u||void 0}}const Xe=/^(\d+)\s+(\S+(?:\.\S+)*)\s*§§?\s*(.+)$/,Ze=/^(\d+)\s+(\S+(?:\.\S+)*)\s+(?:Part|pt\.)\s+(.+)$/;function Qe(e,t){let{text:n,span:r}=e,i=Xe.exec(n)??Ze.exec(n),a,o,s;i?(a=Number.parseInt(i[1],10),o=i[2],s=i[3]):(o=e.patternId===`cfr`?`C.F.R.`:`U.S.C.`,s=n,a=void 0);let{section:c,subsection:l,hasEtSeq:u}=J(s),{originalStart:d,originalEnd:f}=M(r,t),p=.95;return a!==void 0&&(p+=.05),l&&(p+=.05),p=Math.min(p,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:d,originalEnd:f},confidence:p,matchedText:n,processTimeMs:0,patternsChecked:1,title:a,code:o,section:c,subsection:l,pincite:l,jurisdiction:`US`,hasEtSeq:u||void 0}}const $e=/^(N\.?\s*Y\.?|Cal(?:ifornia)?\.?|Tex(?:as)?\.?|Md\.?|Va\.?|Ala(?:bama)?\.?)\s+(.*?)\s*§§?\s*(.+)$/s,et=/^(.*?)\s+(?:ch\.?|c\.?)\s*(\w+),?\s*§\s*(.+)$/,tt={"n.y.":`NY`,"n.y":`NY`,ny:`NY`,"cal.":`CA`,cal:`CA`,"california.":`CA`,california:`CA`,"tex.":`TX`,tex:`TX`,"texas.":`TX`,texas:`TX`,"md.":`MD`,md:`MD`,"va.":`VA`,va:`VA`,"ala.":`AL`,ala:`AL`,"alabama.":`AL`,alabama:`AL`};function nt(e){return tt[e.toLowerCase().replace(/\s+/g,``)]}function rt(e){return e.replace(/^\s*Code\s+Ann\.\s*,\s*/i,``).replace(/^\s*Code\s*,\s*/i,``).replace(/\s+Code\s*$/i,``).replace(/\s+Ann\.?\s*$/i,``).replace(/,\s*$/,``).trim()}function it(e,t){let{text:r,span:i}=e,a,o,s;if(e.patternId===`mass-chapter`){let e=et.exec(r);e?(a=`MA`,o=e[2],s=e[3]):(o=r,s=``)}else{let e=$e.exec(r);if(e){a=nt(e[1]);let t=e[2],r=rt(t);o=a&&n(a,r)?r:t.trim(),s=e[3]}else o=r,s=``}let{section:c,subsection:l,hasEtSeq:u}=J(s),{originalStart:d,originalEnd:f}=M(i,t),p=a?.95:.5;return l&&(p+=.05),p=Math.min(p,1),{type:`statute`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:d,originalEnd:f},confidence:p,matchedText:r,processTimeMs:0,patternsChecked:1,code:o,section:c,subsection:l,pincite:l,jurisdiction:a,hasEtSeq:u||void 0}}const at=/[Ss]ection\s+(\d+[A-Za-z0-9-]*)((?:\([^)]*\))*)\s+of\s+title\s+(\d+)/;function ot(e,t){let{text:n,span:r}=e,i=at.exec(n),a,o,s;i?(a=i[1],o=i[2]||void 0,s=Number.parseInt(i[3],10)):a=n;let{originalStart:c,originalEnd:l}=M(r,t),u=.85;return s!==void 0&&(u+=.05),o&&(u+=.05),u=Math.min(u,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:c,originalEnd:l},confidence:u,matchedText:n,processTimeMs:0,patternsChecked:1,title:s,code:`U.S.C.`,section:a,subsection:o,pincite:o,jurisdiction:`US`}}function st(e,t){let{text:n,span:r}=e,i=/^(?:(\d+)\s+)?([A-Za-z.\s]+?)\s*§+\s*(\d+[A-Za-z0-9-]*)/.exec(n);if(!i){let{originalStart:e,originalEnd:i}=M(r,t);return{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:e,originalEnd:i},confidence:.3,matchedText:n,processTimeMs:0,patternsChecked:1,code:n,section:``}}let a=i[1]?Number.parseInt(i[1],10):void 0,o=i[2].trim(),s=i[3],{originalStart:c,originalEnd:l}=M(r,t),u=.5;return[`U.S.C.`,`C.F.R.`,`Cal. Civ. Code`,`Cal. Penal Code`,`N.Y. Civ. Prac. L. & R.`,`Tex. Civ. Prac. & Rem. Code`].some(e=>o.includes(e))&&(u+=.3),u=Math.min(u,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:c,originalEnd:l},confidence:u,matchedText:n,processTimeMs:0,patternsChecked:1,title:a,code:o,section:s}}function ct(e,t){switch(e.patternId){case`usc`:case`cfr`:return Qe(e,t);case`prose`:return ot(e,t);case`abbreviated-code`:return qe(e,t);case`named-code`:case`mass-chapter`:return it(e,t);case`chapter-act`:return Ye(e,t);default:return st(e,t)}}function lt(e,t){let{text:n,span:r}=e,i=/^(\d+(?:-\d+)?)\s+Stat\.\s+(\d+)/.exec(n);if(!i)throw Error(`Failed to parse Statutes at Large citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=Number.parseInt(i[2],10),c=/\((?:.*?\s)?(\d{4})\)/.exec(n),l=c?Number.parseInt(c[1],10):void 0,{originalStart:u,originalEnd:d}=M(r,t);return{type:`statutesAtLarge`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:u,originalEnd:d},confidence:.9,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,page:s,year:l}}const ut=[{id:`federal-reporter`,regex:/\b(\d+(?:-\d+)?)\s+(F\.|F\.2d|F\.3d|F\.4th|F\.\s?Supp\.|F\.\s?Supp\.\s?2d|F\.\s?Supp\.\s?3d|F\.\s?Supp\.\s?4th|F\.\s?App'x)\s+(\d+|_{3,}|-{3,})(?=\s|$|\(|,|;|\.)/g,description:`Federal Reporter (F., F.2d, F.3d, F.4th, F.Supp., F.App'x, etc.)`,type:`case`},{id:`supreme-court`,regex:/\b(\d+(?:-\d+)?)\s+(U\.\s?S\.|S\.\s?Ct\.|L\.\s?Ed\.(?:\s?2d)?)\s+(?:\(\d+\s+[A-Z][A-Za-z.]+\)\s+)?(\d+|_{3,}|-{3,})(?=\s|$|\(|,|;|\.)/g,description:`U.S. Supreme Court reporters (with optional nominative reporter parenthetical)`,type:`case`},{id:`state-reporter`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z](?:(?! L\.[JQR\s])[A-Za-z.\d\s])+?)\s+(\d+|_{3,}|-{3,})(?=\s|$|\(|,|;|\.)/g,description:`State reporters (broad pattern allowing multi-word reporters, excludes journal patterns with " L.J/Q/Rev", validated against reporters-db in Phase 3)`,type:`case`}],dt=[{id:`law-review`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.\s]+)\s+(\d+)\b/g,description:`Law review citations (e.g., "120 Harv. L. Rev. 500"), validated against journals-db in Phase 3`,type:`journal`}],ft=[{id:`state-vendor-neutral`,regex:/\b(\d{4})\s+([A-Z]{2}(?:\s+App\.?)?)\s+(\d+)\b/g,description:`State vendor-neutral citations (e.g., "2007 UT 49", "2017 WI 17", "2013 IL 112116")`,type:`neutral`},{id:`westlaw`,regex:/\b(\d{4})\s+WL\s+(\d+)\b/g,description:`WestLaw citations (e.g., "2021 WL 123456")`,type:`neutral`},{id:`lexis`,regex:/\b(\d{4})\s+U\.S\.(?:\s+(?:App|Dist)\.)?\s+LEXIS\s+(\d+)\b/g,description:`LexisNexis citations (e.g., "2021 U.S. LEXIS 5000", "2021 U.S. App. LEXIS 12345", "2021 U.S. Dist. LEXIS 67890")`,type:`neutral`},{id:`public-law`,regex:/\bPub\.\s?L\.(?:\s?No\.)?\s?(\d+-\d+)\b/g,description:`Public Law citations (e.g., "Pub. L. No. 117-58" or "Pub. L. 116-283")`,type:`publicLaw`},{id:`federal-register`,regex:/\b(\d+(?:-\d+)?)\s+Fed\.\s?Reg\.\s+(\d+)\b/g,description:`Federal Register citations (e.g., "86 Fed. Reg. 12345")`,type:`federalRegister`},{id:`statutes-at-large`,regex:/\b(\d+(?:-\d+)?)\s+Stat\.\s+(\d+)\b/g,description:`Statutes at Large citations (e.g., "124 Stat. 119")`,type:`statutesAtLarge`},{id:`compact-law-review`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.]+L\.(?:Rev|J|Q)\.)\s+(\d+)\b/g,description:`Compact law review citations without spaces (e.g., "93 Harv.L.Rev. 752")`,type:`journal`}],pt=[{id:`id`,regex:/(?:^|(?<=\s)|(?<=["'(\[—]))\b[Ii]d\.(?:,?\s+at\s+(\d+(?:\s*[-–]\s*\d+)?))?/g,description:`Id. citations (e.g., "Id." or "Id. at 253")`,type:`case`},{id:`ibid`,regex:/(?:^|(?<=\s)|(?<=["'(\[—]))\b[Ii]bid\.(?:,?\s+at\s+(\d+(?:\s*[-–]\s*\d+)?))?/g,description:`Ibid. citations (e.g., "Ibid." or "Ibid. at 125")`,type:`case`},{id:`supra`,regex:/\b([A-Z][a-zA-Z''\-]+\.?(?:(?:\s+v\.?\s+|\s+)[A-Z][a-zA-Z''\-]+\.?)*)\s*,?\s+supra(?:\s+note\s+(\d+))?(?:,?\s+at\s+(\d+))?/g,description:`Supra citations (e.g., "Smith, supra" or "Smith, supra, at 460")`,type:`case`},{id:`supra`,regex:/(?:^|(?<=\s)|(?<=[;.]))supra(?:\s+note\s+(\d+)(?:,?\s+at\s+(\d+))?|\s+at\s+(\d+)|\s+(?:§+|Part|p\.)\s*\S+)/g,description:`Standalone supra (e.g., "supra note 12" or "supra at 15")`,type:`case`},{id:`shortFormCase`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.''\s]+?(?:\d[a-z]{1,2})?)\s*,?\s+at\s+(\d+)\b/g,description:`Short-form case citations (e.g., "500 F.2d at 125")`,type:`case`}],mt=[{id:`usc`,regex:/\b(\d+)\s+(?:U\.S\.C\.?|USC)\s*§§?\s*(\d+[A-Za-z0-9-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`U.S. Code citations with optional subsections and et seq. (e.g., "42 U.S.C. § 1983(a)(1) et seq.")`,type:`statute`},{id:`cfr`,regex:/\b(\d+)\s+C\.?F\.?R\.?\s*(?:(?:Part|pt\.)\s+|§§?\s*)(\d+(?:\.\d+)?[A-Za-z0-9-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Code of Federal Regulations with Part or §, subsections, et seq. (e.g., "12 C.F.R. Part 226", "40 C.F.R. § 122.26(b)(14)")`,type:`statute`},{id:`prose`,regex:/\b[Ss]ection\s+(\d+[A-Za-z0-9-]*(?:\([^)]*\))*)\s+of\s+title\s+(\d+)\b/g,description:`Prose-form federal citations (e.g., "section 1983 of title 42"). Note: MD-style "section X of the Y Article" deferred to PR 3.`,type:`statute`},{id:`named-code`,regex:/\b(N\.?\s*Y\.?|Cal(?:ifornia)?\.?|Tex(?:as)?\.?|Md\.?|Va\.?|Ala(?:bama)?\.?)\s+((?:[A-Za-z.&',\s]+?))\s*§§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Named-code state citations (NY, CA, TX, MD, VA, AL) with jurisdiction prefix + code name + §`,type:`statute`},{id:`mass-chapter`,regex:/\b(Mass\.?\s*Gen\.?\s*Laws|M\.?G\.?L\.?A?\.?|A\.?L\.?M\.?|G\.?\s*L\.?)\s+(?:ch\.?|c\.?)\s*(\w+),?\s*§\s*([\w./-]+(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Massachusetts chapter-based citations (e.g., "Mass. Gen. Laws ch. 93A, § 2")`,type:`statute`},{id:`chapter-act`,regex:/\b(\d+)\s+(?:ILCS|Ill\.?\s*Comp\.?\s*Stat\.?)\s*(?:Ann\.?\s+)?(\d+)\/([^\s(]+(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Illinois Compiled Statutes chapter-act citations (e.g., "735 ILCS 5/2-1001")`,type:`statute`},{id:`abbreviated-code`,regex:/\b(?:(\d+)\s+)?(Fla\.?\s*Stat(?:utes)?\.?(?:\s*Ann\.?)?|F\.?S\.?|R\.?C\.?|O\.?R\.?C\.?|Ohio\s+Rev\.?\s+Code(?:\s+Ann\.?)?|MCL[AS]?|M\.?C\.?L\.?|Mich\.?\s+Comp\.?\s+Laws(?:\s+(?:Ann|Serv)\.?)?|Utah\s+Code(?:\s+Ann\.?)?|U\.?C\.?A\.?|C\.?R\.?S\.?|Colo\.?\s+Rev\.?\s+Stat\.?(?:\s+Ann\.?)?|RCW|Wash\.?\s+Rev\.?\s+Code(?:\s+Ann\.?)?|G\.?S\.?|N\.?C\.?\s*Gen\.?\s*Stat\.?(?:\s+Ann\.?)?|N\.?C\.?G\.?S\.?|O\.?C\.?G\.?A\.?|Ga\.?\s+Code(?:\s+Ann\.?)?|Pa\.?\s*C\.?S\.?A?\.?|Pa\.?\s+Cons\.?\s+Stat\.?|P\.?S\.?|Ind(?:iana)?\.?\s+Code(?:\s+Ann\.?)?|Burns\s+Ind\.?\s+Code(?:\s+Ann\.?)?|I\.?C\.?|N\.?J\.?\s*S(?:tat)?\.?\s*A?\.?|Del\.?\s*(?:Code(?:\s+Ann\.?)?|C\.?))\s*§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Abbreviated state code citations for 12 jurisdictions (FL, OH, MI, UT, CO, WA, NC, GA, PA, IN, NJ, DE)`,type:`statute`}];function ht(e,t=[...ut,...mt,...dt,...ft,...pt]){let n=[];for(let r of t)try{let t=e.matchAll(r.regex);for(let e of t)n.push({text:e[0],span:{cleanStart:e.index,cleanEnd:e.index+e[0].length},type:r.type,patternId:r.id})}catch(e){console.warn(`Pattern ${r.id} threw error, skipping:`,e instanceof Error?e.message:String(e))}return n.sort((e,t)=>e.span.cleanStart-t.span.cleanStart),n}var gt=class{constructor(e){this.root=null,this.nextOrder=0,this.distanceFn=e}insert(e){let t={key:e,insertionOrder:this.nextOrder++,children:new Map};if(this.root===null){this.root=t;return}let n=this.root;for(;;){let r=this.distanceFn(e,n.key);if(r===0)return;let i=n.children.get(r);if(i)n=i;else{n.children.set(r,t);return}}}query(e,t){if(this.root===null)return[];let n=[],r=[this.root],i;for(;i=r.pop();){let a=this.distanceFn(e,i.key);a<=t&&n.push({key:i.key,distance:a,insertionOrder:i.insertionOrder});let o=a-t,s=a+t;for(let[e,t]of i.children)e>=o&&e<=s&&r.push(t)}return n.sort((e,t)=>e.distance-t.distance||e.insertionOrder-t.insertionOrder),n}};function _t(e,t,n=1/0){if(e.length===0)return Math.min(t.length,n+1);if(t.length===0)return Math.min(e.length,n+1);let r=e.length<=t.length?e:t,i=e.length<=t.length?t:e,a=r.length,o=Array.from({length:a+1},(e,t)=>t),s=Array(a+1);for(let e=1;e<=i.length;e++){s[0]=e;let t=e;for(let n=1;n<=a;n++)i[e-1]===r[n-1]?s[n]=o[n-1]:s[n]=1+Math.min(o[n],s[n-1],o[n-1]),s[n]<t&&(t=s[n]);if(t>n)return n+1;let c=o;o=s,s=c}return o[a]}function vt(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;e[i]<=t?n=i+1:r=i}return n}function yt(e,t,n=/\n\n+/g){let r=new Map,i=[0],a;for(;(a=n.exec(e))!==null;)i.push(a.index+a[0].length);i.push(e.length);for(let e=0;e<t.length;e++){let n=t[e].span.originalStart;r.set(e,vt(i,n)-1)}return r}function bt(e,t){let n=new Map;for(let r=0;r<e.length;r++){let i=e[r].span.cleanStart,a=0,o=0,s=t.length-1;for(;o<=s;){let e=o+s>>>1,n=t[e];if(i<n.start)s=e-1;else if(i>=n.end)o=e+1;else{a=n.footnoteNumber;break}}n.set(r,a)}return n}function xt(e,t,n,r,i=!1){if(r===`none`)return!0;let a=n.get(e),o=n.get(t);return!!(a===void 0||o===void 0||a===o||r===`footnote`&&i&&a===0)}var St=class{constructor(e,t,n={}){this.citations=e,this.text=t,this.options={scopeStrategy:n.scopeStrategy??`none`,autoDetectParagraphs:n.autoDetectParagraphs??!0,paragraphBoundaryPattern:n.paragraphBoundaryPattern??/\n\n+/g,fuzzyPartyMatching:n.fuzzyPartyMatching??!0,partyMatchThreshold:n.partyMatchThreshold??.8,allowNestedResolution:n.allowNestedResolution??!1,reportUnresolved:n.reportUnresolved??!0,footnoteMap:n.footnoteMap},this.partyNameTree=new gt(_t),this.context={citationIndex:0,allCitations:e,lastFullCitation:void 0,fullCitationHistory:new Map,paragraphMap:new Map},this.options.autoDetectParagraphs&&(this.context.paragraphMap=yt(t,e,this.options.paragraphBoundaryPattern)),this.options.scopeStrategy===`footnote`&&this.options.footnoteMap&&(this.context.paragraphMap=bt(e,this.options.footnoteMap))}resolve(){let e=[];for(let t=0;t<this.citations.length;t++){this.context.citationIndex=t;let n=this.citations[t],i;switch(n.type){case`id`:i=this.resolveId(n);break;case`supra`:i=this.resolveSupra(n);break;case`shortFormCase`:i=this.resolveShortFormCase(n);break;default:r(n)&&(this.context.lastFullCitation=t,this.trackFullCitation(n,t));break}e.push({...n,resolution:i})}return e}resolveId(e){let t=this.context.citationIndex,n;for(let e=t-1;e>=0;e--)if(this.citations[e].type===`case`){n=e;break}return n===void 0?this.createFailureResult(`No preceding full case citation found`):this.isWithinScope(n,t)?{resolvedTo:n,confidence:1}:this.createFailureResult(`Antecedent citation outside scope boundary`)}resolveSupra(e){if(!e.partyName)return;let t=this.context.citationIndex,n=this.normalizePartyName(e.partyName),r=n.length,i=this.options.partyMatchThreshold,a=r===0?0:Math.ceil(r*(1-i)/i),o=this.partyNameTree.query(n,a);o.sort((e,t)=>e.insertionOrder-t.insertionOrder);let s;for(let e of o){let n=this.context.fullCitationHistory.get(e.key);if(n===void 0||!this.isWithinScope(n,t,!0))continue;let i=Math.max(r,e.key.length),a=i===0?1:1-e.distance/i;(!s||a>s.similarity)&&(s={index:n,similarity:a})}if(!s)return this.createFailureResult(`No full citation found in scope`);if(s.similarity<this.options.partyMatchThreshold)return this.createFailureResult(`Party name similarity ${s.similarity.toFixed(2)} below threshold ${this.options.partyMatchThreshold}`);let c=[];return s.similarity<1&&c.push(`Fuzzy match: similarity ${s.similarity.toFixed(2)}`),{resolvedTo:s.index,confidence:s.similarity,warnings:c.length>0?c:void 0}}resolveShortFormCase(e){let t=this.context.citationIndex;for(let n=t-1;n>=0;n--){let r=this.citations[n];if(r.type===`case`&&r.volume===e.volume&&this.normalizeReporter(r.reporter)===this.normalizeReporter(e.reporter))return this.isWithinScope(n,t,!0)?{resolvedTo:n,confidence:.95}:this.createFailureResult(`Matching citation outside scope boundary`)}return this.createFailureResult(`No matching full case citation found`)}trackFullCitation(e,t){if(e.type===`case`&&(e.defendantNormalized&&(this.context.fullCitationHistory.set(e.defendantNormalized,t),this.partyNameTree.insert(e.defendantNormalized)),e.plaintiffNormalized&&(this.context.fullCitationHistory.set(e.plaintiffNormalized,t),this.partyNameTree.insert(e.plaintiffNormalized)),!e.plaintiffNormalized&&!e.defendantNormalized)){let n=this.extractPartyName(e);if(n){let e=this.normalizePartyName(n);this.context.fullCitationHistory.set(e,t),this.partyNameTree.insert(e)}}}extractPartyName(e){let t=e.span.originalStart,n=Math.max(0,t-100),r=this.text.substring(n,t),i=r.match(/([A-Z][a-zA-Z]*(?:\s+[A-Z][a-zA-Z]*)*)\s+v\.?\s+[A-Z][a-zA-Z]*(?:\s+[A-Z][a-zA-Z]*)*,\s*$/);if(i)return this.stripSignalWords(i[1].trim());let a=r.match(/([A-Z][a-zA-Z]*(?:\s+[A-Z][a-zA-Z]*)*),\s*$/);if(a)return this.stripSignalWords(a[1].trim())}stripSignalWords(e){let t=e.replace(/^(?:In(?!\s+re\b)|See(?:\s+[Aa]lso)?|Compare|But(?:\s+[Ss]ee)?|Cf\.?|Also)\s+/i,``).trim();return t.length>0?t:e}normalizePartyName(e){return e.toLowerCase().replace(/\s+/g,` `).trim()}normalizeReporter(e){return e.toLowerCase().replace(/\s+/g,``).replace(/\./g,``)}isWithinScope(e,t,n=!1){return xt(e,t,this.context.paragraphMap,this.options.scopeStrategy,n)}createFailureResult(e){if(this.options.reportUnresolved)return{resolvedTo:void 0,failureReason:e,confidence:0}}};function Ct(e,t,n){return new St(e,t,n).resolve()}function wt(e,t=``){let n=new Map;if(e.length===0||t===``)return n;let r=new Set;for(let i=0;i<e.length;i++){let a=e[i];if(a.type!==`case`||r.has(i))continue;let o=[];for(let n=i+1;n<e.length;n++){let s=e[n];if(s.type!==`case`)break;let c=(n===i+1?a:e[n-1]).span.cleanEnd,l=s.span.cleanStart;if(l-c>20)break;let u=t.substring(c,l);if(!u.includes(`,`))break;let d=u.indexOf(`,`);if(u.length-d-1>5||t.substring(a.span.cleanEnd,s.span.cleanEnd).includes(`)`)||!Tt(t,s.span.cleanEnd))break;o.push(n),r.add(n)}o.length>0&&n.set(i,o)}return n}function Tt(e,t){let n=e.substring(t,t+200),r=n.indexOf(`(`);if(r===-1)return!1;let i=0;for(let e=r;e<n.length;e++)if(n[e]===`(`)i++;else if(n[e]===`)`&&(i--,i===0))return!0;return!1}const Y=Et();function Et(){return[{regex:/^see\s+generally\b/i,signal:`see generally`},{regex:/^see\s+also\b/i,signal:`see also`},{regex:/^but\s+see\b/i,signal:`but see`},{regex:/^but\s+cf\.?(?=\s|$)/i,signal:`but cf`},{regex:/^compare\b/i,signal:`compare`},{regex:/^accord\b/i,signal:`accord`},{regex:/^contra\b/i,signal:`contra`},{regex:/^see\b/i,signal:`see`},{regex:/^cf\.?(?=\s|$)/i,signal:`cf`}].map(({regex:e,signal:t})=>({regex:e,endRegex:RegExp(`${e.source.replace(/^\^/,`(?<![a-z])`)}\\s*$`,e.flags),signal:t}))}function Dt(e){let t=`fullSpan`in e?e.fullSpan:void 0;return t?t.cleanEnd:e.span.cleanEnd}function X(e){let t=`fullSpan`in e?e.fullSpan:void 0;return t?t.cleanStart:e.span.cleanStart}function Z(e,t){e.signal=t}function Ot(e){let t=e.trimStart();for(let{regex:e,signal:n}of Y){let r=e.exec(t);if(r)return{signal:n,length:r[0].length}}}function kt(e){let t=e.indexOf(`;`);if(t===-1||e.substring(0,t).trim()!==``)return{valid:!1};let n=e.substring(t+1).trim();if(n===``)return{valid:!0};let r=Ot(n);return r&&n.substring(r.length).trim()===``?{valid:!0,signal:r.signal}:{valid:!1}}function At(e,t){if(e.length<2)return;let n=[],r=[];for(let i=0;i<e.length-1;i++){let a=e[i],o=e[i+1];if(o.type===`case`&&o.subsequentHistoryOf){r.length>=2&&n.push(r),r=[];continue}if(a.type===`case`&&a.subsequentHistoryOf)continue;let s=Dt(a),c=X(o);if(c<=s){r.length>=2&&n.push(r),r=[];continue}let l=kt(t.substring(s,c));l.valid?(r.length===0&&r.push(i),r.push(i+1),l.signal&&!o.signal&&Z(o,l.signal)):(r.length>=2&&n.push(r),r=[])}r.length>=2&&n.push(r);for(let t=0;t<n.length;t++){let r=n[t];if(r.length<2)continue;let i=`sc-${t}`;for(let t=0;t<r.length;t++){let n=e[r[t]];n.stringCitationGroupId=i,n.stringCitationIndex=t,n.stringCitationGroupSize=r.length}}for(let r of n){if(r.length<2)continue;let n=e[r[0]];if(n.signal)continue;let i=Math.max(0,X(n)-60),a=t.substring(i,X(n)).trim();for(let{endRegex:e,signal:t}of Y)if(e.test(a)){Z(n,t);break}}}function jt(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(r.signal&&r.stringCitationGroupId)continue;let i=n>0?Dt(e[n-1]):0,a=r.span.cleanStart;if(a<=i)continue;let o=t.substring(i,a),s=[];for(let{signal:e}of Y){let t=e.replace(/\./g,`\\.`).replace(/\s+/g,`\\s+`),n=RegExp(`(?<![a-zA-Z])(${t})(?![a-zA-Z])`,`gi`),r;for(;(r=n.exec(o))!==null;)s.push({signal:e,start:r.index,end:r.index+r[0].length})}if(s.length===0)continue;s.sort((e,t)=>{let n=t.end-e.end;return n===0?t.end-t.start-(e.end-e.start):n});let c=s[0];for(let e of s)e.start<=c.start&&e.end>=c.end&&(c=e);Z(r,c.signal)}}const Q=1750,Mt=.1,Nt=new Set([`i.c.j.`,`u.n.t.s.`,`i.l.m.`,`i.l.r.`,`p.c.i.j.`,`a.c.`,`w.l.r.`,`all e.r.`,`q.b.`,`k.b.`,`ch.`,`co. rep.`,`e.c.r.`,`e.h.r.r.`,`c.m.l.r.`,`edw.`]);function $(e){if(e.type===`case`||e.type===`shortFormCase`)return e.reporter;if(e.type===`journal`)return e.abbreviation}function Pt(e){switch(e.type){case`case`:return e.year;case`journal`:return e.year;case`federalRegister`:return e.year;case`statutesAtLarge`:return e.year;default:return}}const Ft=new Set([`court`,`rule`,`section`,`chapter`,`article`,`part`,`title`,`paragraph`,`clause`,`amendment`,`dismissed`,`granted`,`denied`,`filed`,`argued`]);function It(e){return!!(e.toLowerCase().split(/\s+/).some(e=>Ft.has(e))||!e.includes(`.`)&&e.length>12)}const Lt=new Set(`the.a.an.in.on.at.but.and.for.by.to.with.from.as.if.so.nor.yet.not.no.then.when.where.who.what.how.that.this.these.those.he.she.it.they.we.his.her.its.their.our.was.were.is.are.has.had.been.being.did.does.do.may.shall.will.would.could.should.held.said.found.made.took.gave.see.also.january.february.march.april.june.july.august.september.october.november.december`.split(`.`)),Rt=2e3,zt=/^\d{1,2}-\d{4,}$/;function Bt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e;return typeof t.volume==`number`?t.volume>Rt:!1}function Vt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e,n=String(t.volume);return zt.test(n)}function Ht(t){if(t.type!==`case`&&t.type!==`shortFormCase`)return!1;let n=t,r=typeof n.volume==`number`?n.volume:Number.parseInt(String(n.volume),10);if(Number.isNaN(r)||r<1||r>20)return!1;let i=n.reporter;if(!i)return!1;let a=e();return a?(a.byAbbreviation.get(i.toLowerCase())??[]).length===0:i.includes(`.`)?!1:i.toLowerCase().split(/\s+/).some(e=>Lt.has(e))}function Ut(e){let t=$(e);if(t&&Nt.has(t.toLowerCase().trim())||t&&(e.type===`case`||e.type===`shortFormCase`)&&It(t)||Bt(e)||Vt(e)||Ht(e))return!0;let n=Pt(e);return n!==void 0&&n<Q}function Wt(e){let t=[],n=$(e);if(n){let r=n.toLowerCase().trim();Nt.has(r)&&t.push(`Reporter "${n}" is a known non-US source`),(e.type===`case`||e.type===`shortFormCase`)&&It(n)&&t.push(`Reporter "${n}" contains prose words or is implausibly long`)}if(Bt(e)){let n=e;t.push(`Volume ${n.volume} exceeds maximum plausible volume (${Rt}) — likely a zip code or other number`)}if(Vt(e)){let n=e;t.push(`Hyphenated volume "${n.volume}" matches docket number pattern — likely a case number, not a citation volume`)}if(Ht(e)){let n=e;t.push(`Small volume (${n.volume}) with unrecognized reporter "${n.reporter}" — likely a paragraph or footnote marker`)}let r=Pt(e);return r!==void 0&&r<Q&&t.push(`Year ${r} predates US legal reporting (threshold: ${Q})`),t}function Gt(e,t){if(t)return e.filter(e=>!Ut(e));for(let t of e){if(t.confidence===Mt&&t.warnings?.length)continue;let e=Wt(t);if(e.length>0){t.confidence=Mt;let n=e.map(e=>({level:`warning`,message:e,position:{start:t.span.originalStart,end:t.span.originalEnd}}));t.warnings=[...t.warnings||[],...n]}}return e}const Kt=/^(\S+)\s+(.+)\s+(\d+)$/;function qt(e,t){let n=performance.now(),{cleaned:r,transformationMap:i,warnings:a}=y(e,t?.cleaners),o;if(t?.detectFootnotes){let t=O(e);t.length>0&&(o=A(t,i))}let s=ht(r,t?.patterns||[...ft,...pt,...ut,...ke,...mt,...dt]),c=[],l=new Set,u=r.length<65536;for(let e of s){let t=u?e.span.cleanStart<<16|e.span.cleanEnd:`${e.span.cleanStart}-${e.span.cleanEnd}`;l.has(t)||(l.add(t),c.push(e))}let d=wt(c,r),f=new Map;for(let[e,t]of d.entries())for(let n of t)f.set(n,e);let p=[];for(let e=0;e<c.length;e++){let t=c[e],o;switch(t.type){case`case`:o=t.patternId===`id`||t.patternId===`ibid`?Ve(t,i,r):t.patternId===`supra`?He(t,i):t.patternId===`shortFormCase`?Ue(t,i):K(t,i,r);break;case`statute`:o=ct(t,i);break;case`journal`:o=Re(t,i);break;case`neutral`:o=ze(t,i);break;case`publicLaw`:o=Be(t,i);break;case`federalRegister`:o=Le(t,i);break;case`statutesAtLarge`:o=lt(t,i);break;case`constitutional`:o=Ie(t,i);break;default:continue}if(a.length>0&&(o.warnings=[...o.warnings||[],...a]),o.processTimeMs=performance.now()-n,o.type===`case`){let t=d.has(e),n=f.has(e);if(t||n){let r=c[n?f.get(e)??e:e],i=Kt.exec(r.text);if(i){let[,n,r,a]=i;if(o.groupId=`${n}-${r.replace(/\s+/g,`.`)}-${a}`,t){let t=d.get(e)??[];o.parallelCitations=t.map(e=>{let t=c[e],n=Kt.exec(t.text);if(n){let[,e,t,r]=n;return{volume:/^\d+$/.test(e)?Number.parseInt(e,10):e,reporter:t,page:Number.parseInt(r,10)}}return{volume:0,reporter:``,page:0}})}}}}p.push(o)}Yt(p),At(p,r),jt(p,r);let m=Gt(p,t?.filterFalsePositives??!1);return o&&j(m,o),t?.resolve?Ct(m,e,o?{...t.resolutionOptions,footnoteMap:o}:t.resolutionOptions):m}async function Jt(e,t){return qt(e,t)}function Yt(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type!==`case`||!r.subsequentHistoryEntries)continue;let i=r.subsequentHistoryEntries,a=0;for(let r=n+1;r<e.length&&a<i.length;r++){let o=e[r];if(o.type!==`case`)continue;let s=i[a].signalSpan.cleanEnd;o.span.cleanStart>=s&&(t.push({parentIdx:n,childIdx:r,signal:i[a].signal}),a++)}}if(t.length===0)return;let n=new x(e.length);for(let e of t)n.union(e.parentIdx,e.childIdx);let r=new Map;for(let e of t)r.set(e.childIdx,e.signal);for(let[t,i]of n.components()){if(i.length===1)continue;let n=e[t];if(n.type!==`case`)continue;let a=[...n.subsequentHistoryEntries??[]];for(let n of i){if(n===t)continue;let i=e[n];if(i.type!==`case`)continue;let o=r.get(n);if(o&&(i.subsequentHistoryOf={index:t,signal:o},i.subsequentHistoryEntries)){for(let e of i.subsequentHistoryEntries)a.push({...e,order:a.length});i.subsequentHistoryEntries=void 0}}n.subsequentHistoryEntries=a}}export{St as DocumentResolver,Gt as applyFalsePositiveFilters,s as assertUnreachable,y as cleanText,O as detectFootnotes,K as extractCase,qt as extractCitations,Jt as extractCitationsAsync,Ie as extractConstitutional,Le as extractFederalRegister,Re as extractJournal,ze as extractNeutral,Be as extractPublicLaw,ct as extractStatute,lt as extractStatutesAtLarge,a as isCaseCitation,o as isCitationType,r as isFullCitation,i as isShortFormCitation,U as normalizeCourt,H as parsePincite,Ct as resolveCitations,ht as tokenize};
1
+ import{a as e,n as t,r as n,s as r}from"./knownCodes-WUweUwCB.mjs";function i(e){return e.type===`case`||e.type===`statute`||e.type===`journal`||e.type===`neutral`||e.type===`publicLaw`||e.type===`federalRegister`||e.type===`statutesAtLarge`||e.type===`constitutional`}function a(e){return e.type===`id`||e.type===`supra`||e.type===`shortFormCase`}function o(e){return e.type===`case`}function s(e,t){return e.type===t}function c(e){throw Error(`Unexpected value: ${e}`)}function l(e,t,n){let r=e+t[0],i=e+t[1],{originalStart:a,originalEnd:o}=u({cleanStart:r,cleanEnd:i},n);return{cleanStart:r,cleanEnd:i,originalStart:a,originalEnd:o}}function u(e,t){return t.cleanToOriginalSegments?{originalStart:t.cleanToOriginalSegments.lookup(e.cleanStart),originalEnd:t.cleanToOriginalSegments.lookup(e.cleanEnd)}:{originalStart:t.cleanToOriginal.get(e.cleanStart)??e.cleanStart,originalEnd:t.cleanToOriginal.get(e.cleanEnd)??e.cleanEnd}}function d(e){return e.replace(/<[^>]+>/g,``)}function f(e){return e.replace(/(\w)-\s*[\n\r]+\s*(\w)/g,`$1$2`)}function p(e){return e.replace(/[\t\n\r\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,` `)}function m(e){return e.replace(/ {2,}/g,` `)}function h(e){return e.normalize(`NFKC`)}function g(e){return e.replace(/[\u201C\u201D]/g,`"`).replace(/[\u2018\u2019]/g,`'`)}function _(e){return e.replace(/[\u2014\u2015]/g,`---`).replace(/[\u2010\u2012\u2013]/g,`-`)}function v(e){return e.replace(/&sect;/gi,`§`).replace(/&para;/gi,`¶`).replace(/&amp;/gi,`&`).replace(/&nbsp;/gi,` `).replace(/&lt;/gi,`<`).replace(/&gt;/gi,`>`).replace(/&quot;/gi,`"`).replace(/&apos;/gi,`'`).replace(/&#(\d+);/g,(e,t)=>{let n=Number.parseInt(t,10);return Number.isNaN(n)?e:String.fromCharCode(n)}).replace(/&#x([0-9a-fA-F]+);/g,(e,t)=>{let n=Number.parseInt(t,16);return Number.isNaN(n)?e:String.fromCharCode(n)})}function y(e){let t=e;return t=t.replace(/\bU\.\s+S\./g,`U.S.`),t=t.replace(/\bS\.\s+Ct\./g,`S.Ct.`),t=t.replace(/\bL\.\s+Ed\./g,`L.Ed.`),t=t.replace(/\bF\.\s+Supp\./g,`F.Supp.`),t=t.replace(/\bF\.\s+(\d+[a-z]+)/g,`F.$1`),t=t.replace(/([A-Za-z])\.\s+(\d+[a-z]+)/g,`$1.$2`),t}function b(e){return e.replace(/[\u2032\u2035]/g,`'`).replace(/\u200B|\u200C|\u200D|\u2060|\uFEFF/g,``)}var x=class e{segments;constructor(e){this.segments=e}static identity(t){return new e([{cleanPos:0,origPos:0,len:t+1}])}static fromMap(t){if(t.size===0)return new e([]);let n=[...t.entries()].sort((e,t)=>e[0]-t[0]),r=[],i=n[0][0],a=n[0][1],o=1;for(let e=1;e<n.length;e++){let[t,s]=n[e],c=i+o,l=a+o;t===c&&s===l?o++:(r.push({cleanPos:i,origPos:a,len:o}),i=t,a=s,o=1)}return r.push({cleanPos:i,origPos:a,len:o}),new e(r)}lookup(e){let t=this.segments;if(t.length===0)return e;let n=0,r=t.length-1;for(;n<=r;){let i=n+r>>>1,a=t[i];if(e<a.cleanPos)r=i-1;else if(e>=a.cleanPos+a.len)n=i+1;else return a.origPos+(e-a.cleanPos)}let i=t[t.length-1];return i.origPos+(e-i.cleanPos)}};function S(e,t=[d,v,f,p,m,h,_,g,b,y]){let n=e,r=new Map,i=new Map;for(let t=0;t<=e.length;t++)r.set(t,t),i.set(t,t);for(let e of t){let t=n,a=e(n);if(t!==a){let{newCleanToOriginal:e,newOriginalToClean:o}=C(t,a,r,i);r=e,i=o,n=a}}let a={cleanToOriginal:r,originalToClean:i,cleanToOriginalSegments:x.fromMap(r)};return{cleaned:n,transformationMap:a,warnings:[]}}function C(e,t,n,r){let i=new Map,a=new Map,o=0,s=0;for(;o<=e.length||s<=t.length;){if(o>=e.length&&s>=t.length){let e=n.get(o)??o;i.set(s,e),a.set(e,s);break}if(o>=e.length){let e=n.get(o)??o;i.set(s,e),s++;continue}if(s>=t.length){let e=n.get(o)??o;a.set(e,s),o++;continue}if(e[o]===t[s]){let e=n.get(o)??o;i.set(s,e),a.set(e,s),o++,s++}else{if(e.length-o===t.length-s){let e=n.get(o)??o;i.set(s,e),a.set(e,s),o++,s++;continue}let r=!1,c=Math.max(40,Math.abs(e.length-t.length)+10),l=-1,u=-1;for(let n=1;n<=c;n++){if(l<0&&o+n<e.length&&e[o+n]===t[s]){let r=!0;for(let i=1;i<3;i++){let a=o+n+i,c=s+i;if(a>=e.length||c>=t.length)break;if(e[a]!==t[c]){r=!1;break}}r&&(l=n)}if(u<0&&s+n<t.length&&e[o]===t[s+n]){let r=!0;for(let i=1;i<3;i++){let a=o+i,c=s+n+i;if(a>=e.length||c>=t.length)break;if(e[a]!==t[c]){r=!1;break}}r&&(u=n)}if(l>=0&&u>=0)break}if(l>=0&&(u<0||l<=u)){for(let e=0;e<l;e++){let t=n.get(o+e)??o+e;a.set(t,s)}o+=l,r=!0}else if(u>=0){let e=n.get(o)??o;for(let t=0;t<u;t++)i.set(s+t,e);s+=u,r=!0}if(r)continue;let d=n.get(o)??o;i.set(s,d),a.set(d,s),o++,s++}}return{newCleanToOriginal:i,newOriginalToClean:a}}var w=class{parent;rank;constructor(e){this.parent=Array.from({length:e},(e,t)=>t),this.rank=Array(e).fill(0)}find(e){let t=e;for(;this.parent[t]!==t;)this.parent[t]=this.parent[this.parent[t]],t=this.parent[t];return t}union(e,t){let n=this.find(e),r=this.find(t);if(n!==r){if(n>r){let e=n;n=r,r=e}this.parent[r]=n,this.rank[n]===this.rank[r]&&this.rank[n]++}}connected(e,t){return this.find(e)===this.find(t)}components(){let e=new Map;for(let t=0;t<this.parent.length;t++){let n=this.find(t),r=e.get(n);r||(r=[],e.set(n,r)),r.push(t)}return e}};function T(e,t,n){let r=/\blabel\s*=\s*["'](\d+)["']/.exec(e);if(r)return Number.parseInt(r[1],10);let i=/\bid\s*=\s*["'](?:fn|footnote)(\d+)["']/.exec(e);if(i)return Number.parseInt(i[1],10);let a=t.replace(/<[^>]*>/g,``),o=/^\s*(\d+)[.\s):]/.exec(a);return o?Number.parseInt(o[1],10):n+1}function E(e,t,n){let r=RegExp(`<${t}\\b[^>]*>`,`gi`),i=RegExp(`</${t}\\s*>`,`gi`);r.lastIndex=n,i.lastIndex=n;let a=1;for(;a>0;){let t=r.exec(e),n=i.exec(e);if(!n)return null;if(t&&t.index<n.index)a++,i.lastIndex=t.index+t[0].length;else{if(a--,a===0)return{contentEnd:n.index,tagEnd:n.index+n[0].length};r.lastIndex=n.index+n[0].length}}return null}function D(e){let t=[],n,r=RegExp(`<(footnote|fn)\\b[^>]*>|<(div|aside|section|p|span)\\b[^>]*(?:class\\s*=\\s*["'][^"']*\\bfootnote\\b[^"']*["']|id\\s*=\\s*["'](?:fn|footnote)\\d*["'])[^>]*>`,`gi`);for(;(n=r.exec(e))!==null;){let i=n[0],a=n.index+i.length,o=E(e,n[1]||n[2],a);if(!o)continue;let s=T(i,e.slice(a,o.contentEnd),t.length);t.push({start:a,end:o.contentEnd,footnoteNumber:s}),r.lastIndex=o.tagEnd}return t.sort((e,t)=>e.start-t.start)}const O=/^\s*[-_]{5,}\s*$/m;function k(e){let t=O.exec(e);if(!t)return[];let n=t.index+t[0].length,r=e.slice(n),i=RegExp(`^\\s*(?:FN\\s*(\\d+)[.\\s:)]|\\[(\\d+)\\]\\s|n\\.\\s*(\\d+)\\s|(\\d+)\\.\\s)`,`gm`),a=[],o;for(;(o=i.exec(r))!==null;){let e=o[1]||o[2]||o[3]||o[4];e&&a.push({index:o.index+n,footnoteNumber:Number.parseInt(e,10)})}if(a.length===0)return[];let s=[];for(let t=0;t<a.length;t++){let n=a[t].index,r=t+1<a.length?a[t+1].index:e.length;s.push({start:n,end:r,footnoteNumber:a[t].footnoteNumber})}return s}const A=/<[^>]+>/;function j(e){if(A.test(e)){let t=D(e);if(t.length>0)return t}return k(e)}function M(e,t,n,r=20){for(let i=1;i<=r;i++){let r=n===`forward`?e+i:e-i,a=t.get(r);if(a!==void 0)return a}}function N(e,t){return e.length===0?[]:e.map(e=>({start:t.originalToClean.get(e.start)??M(e.start,t.originalToClean,`forward`)??e.start,end:t.originalToClean.get(e.end)??M(e.end,t.originalToClean,`backward`)??e.end,footnoteNumber:e.footnoteNumber}))}function P(e,t){if(t.length!==0)for(let n of e){let e=n.span.cleanStart,r=0,i=t.length-1;for(;r<=i;){let a=r+i>>>1,o=t[a];if(e<o.start)i=a-1;else if(e>=o.end)r=a+1;else{n.inFootnote=!0,n.footnoteNumber=o.footnoteNumber;break}}}}const F={jan:1,january:1,feb:2,february:2,mar:3,march:3,apr:4,april:4,may:5,jun:6,june:6,jul:7,july:7,aug:8,august:8,sep:9,sept:9,september:9,oct:10,october:10,nov:11,november:11,dec:12,december:12};function I(e){let t=F[e.toLowerCase().replace(/\.$/,``)];if(t===void 0)throw Error(`Invalid month name: ${e}`);return t}function L(e){let{year:t,month:n,day:r}=e;return n!==void 0&&r!==void 0?`${t}-${String(n).padStart(2,`0`)}-${String(r).padStart(2,`0`)}`:n===void 0?String(t):`${t}-${String(n).padStart(2,`0`)}`}function R(e){let t=e.match(/\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec)\.?\s+(\d{1,2}),?\s+(\d{4})\b/i);if(t){let e=I(t[1]),n=Number.parseInt(t[2],10),r={year:Number.parseInt(t[3],10),month:e,day:n};return{iso:L(r),parsed:r}}let n=e.match(/\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b/i);if(n){let e=I(n[1]),t=Number.parseInt(n[2],10),r={year:Number.parseInt(n[3],10),month:e,day:t};return{iso:L(r),parsed:r}}let r=e.match(/\b(\d{1,2})\/(\d{1,2})\/(\d{4})\b/);if(r){let e=Number.parseInt(r[1],10),t=Number.parseInt(r[2],10),n={year:Number.parseInt(r[3],10),month:e,day:t};return{iso:L(n),parsed:n}}let i=e.match(/\b(\d{4})\b/);if(i){let e={year:Number.parseInt(i[1],10)};return{iso:L(e),parsed:e}}}function z(e){return{level:e,jurisdiction:`federal`,confidence:1}}function B(e,t){return{level:e,jurisdiction:`state`,state:t,confidence:1}}function V(e){return{level:e,jurisdiction:`state`,confidence:.7}}const ee=new Map([[`U.S.`,z(`supreme`)],[`S.Ct.`,z(`supreme`)],[`L.Ed.`,z(`supreme`)],[`L.Ed.2d`,z(`supreme`)],[`S. Ct.`,z(`supreme`)],[`L. Ed.`,z(`supreme`)],[`L. Ed. 2d`,z(`supreme`)],[`U. S.`,z(`supreme`)],[`L.Ed. 2d`,z(`supreme`)],[`L. Ed.2d`,z(`supreme`)],[`F.`,z(`appellate`)],[`F.2d`,z(`appellate`)],[`F.3d`,z(`appellate`)],[`F.4th`,z(`appellate`)],[`F. App'x`,z(`appellate`)],[`F.Supp.`,z(`trial`)],[`F.Supp.2d`,z(`trial`)],[`F.Supp.3d`,z(`trial`)],[`F.Supp.4th`,z(`trial`)],[`F. Supp.`,z(`trial`)],[`F. Supp. 2d`,z(`trial`)],[`F. Supp. 3d`,z(`trial`)],[`F. Supp. 4th`,z(`trial`)],[`F.R.D.`,z(`trial`)],[`B.R.`,z(`trial`)],[`Cal.`,B(`supreme`,`CA`)],[`Cal.2d`,B(`supreme`,`CA`)],[`Cal.3d`,B(`supreme`,`CA`)],[`Cal.4th`,B(`supreme`,`CA`)],[`Cal.5th`,B(`supreme`,`CA`)],[`Cal.App.`,B(`appellate`,`CA`)],[`Cal.App.2d`,B(`appellate`,`CA`)],[`Cal.App.3d`,B(`appellate`,`CA`)],[`Cal.App.4th`,B(`appellate`,`CA`)],[`Cal.App.5th`,B(`appellate`,`CA`)],[`Cal.Rptr.`,B(`unknown`,`CA`)],[`Cal.Rptr.2d`,B(`unknown`,`CA`)],[`Cal.Rptr.3d`,B(`unknown`,`CA`)],[`N.Y.`,B(`supreme`,`NY`)],[`N.Y.2d`,B(`supreme`,`NY`)],[`N.Y.3d`,B(`supreme`,`NY`)],[`A.D.`,B(`appellate`,`NY`)],[`A.D.2d`,B(`appellate`,`NY`)],[`A.D.3d`,B(`appellate`,`NY`)],[`Misc.`,B(`trial`,`NY`)],[`Misc.2d`,B(`trial`,`NY`)],[`Misc.3d`,B(`trial`,`NY`)],[`N.Y.S.`,B(`unknown`,`NY`)],[`N.Y.S.2d`,B(`unknown`,`NY`)],[`N.Y.S.3d`,B(`unknown`,`NY`)],[`Ill.`,B(`supreme`,`IL`)],[`Ill.2d`,B(`supreme`,`IL`)],[`Ill.App.`,B(`appellate`,`IL`)],[`Ill.App.2d`,B(`appellate`,`IL`)],[`Ill.App.3d`,B(`appellate`,`IL`)],[`Ill.Dec.`,B(`unknown`,`IL`)],[`Ohio St.`,B(`supreme`,`OH`)],[`Ohio St.2d`,B(`supreme`,`OH`)],[`Ohio St.3d`,B(`supreme`,`OH`)],[`Ohio App.3d`,B(`appellate`,`OH`)],[`Pa.`,B(`supreme`,`PA`)],[`Pa. Super.`,B(`appellate`,`PA`)],[`Tex.`,B(`supreme`,`TX`)],[`Fla.`,B(`supreme`,`FL`)],[`Mass.`,B(`supreme`,`MA`)],[`Mass. App. Ct.`,B(`appellate`,`MA`)],[`A.`,V(`unknown`)],[`A.2d`,V(`unknown`)],[`A.3d`,V(`unknown`)],[`S.E.`,V(`unknown`)],[`S.E.2d`,V(`unknown`)],[`S.E.3d`,V(`unknown`)],[`S.W.`,V(`unknown`)],[`S.W.2d`,V(`unknown`)],[`S.W.3d`,V(`unknown`)],[`N.E.`,V(`unknown`)],[`N.E.2d`,V(`unknown`)],[`N.E.3d`,V(`unknown`)],[`N.W.`,V(`unknown`)],[`N.W.2d`,V(`unknown`)],[`N.W.3d`,V(`unknown`)],[`So.`,V(`unknown`)],[`So.2d`,V(`unknown`)],[`So.3d`,V(`unknown`)],[`P.`,V(`unknown`)],[`P.2d`,V(`unknown`)],[`P.3d`,V(`unknown`)]]);function te(e){return ee.get(e)}const ne=/^(?:at\s+)?(\d+)(?:[-–—](\d+))?\s*(?:(?:n|note)\s*\.?\s*(\d+))?$/i;function H(e){let t=e.trim();if(!t)return null;let n=ne.exec(t);if(!n)return null;let r=Number.parseInt(n[1],10),i=n[2],a=n[3],o,s=!1;if(i){s=!0;let e=Number.parseInt(i,10);if(i.length<n[1].length){let e=n[1].slice(0,n[1].length-i.length);o=Number.parseInt(e+i,10)}else o=e}let c=a?Number.parseInt(a,10):void 0,l={page:r,isRange:s,raw:t};return o!==void 0&&(l.endPage=o),c!==void 0&&(l.footnote=c),l}function re(e){if(!e||!e.trim())return;let t=e.trim();return t=t.replace(/\.\s+(?=[A-Za-z])/g,`.`),/[A-Za-z]$/.test(t)&&(/\./.test(t)||/^\d+\w*\s+[A-Z]/i.test(t))&&(t+=`.`),t}const U=new Set([`see`,`see also`,`see generally`,`cf`,`but see`,`but cf`,`compare`,`accord`,`contra`]),W=(()=>{let e=[...U].sort((e,t)=>t.length-e.length).map(e=>e.replace(/\s+/g,`\\s+`).replace(/\./g,`\\.`));return RegExp(`^(${e.join(`|`)})\\s+`,`i`)})();function ie(e){let t=Number.parseInt(e,10);return String(t)===e?t:e}const G=/(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec|January|February|March|April|May|June|July|August|September|October|November|December)\.?/,ae=new Date().getFullYear(),oe=new Set(`F.,F.2d,F.3d,F.4th,U.S.,S. Ct.,L. Ed.,L. Ed. 2d,P.,P.2d,P.3d,A.,A.2d,A.3d,N.E.,N.E.2d,N.E.3d,N.W.,N.W.2d,S.E.,S.E.2d,S.W.,S.W.2d,S.W.3d,So.,So. 2d,So. 3d,F. Supp.,F. Supp. 2d,F. Supp. 3d,F. Supp. 4th,F. App'x`.split(`,`)),se=/^(\d+(?:-\d+)?)\s+([A-Za-z0-9.\s']+)\s+(?:\((\d+)\s+([A-Z][A-Za-z.]+)\)\s+)?(\d+|_{3,}|-{3,})/d,ce=/^[_-]{3,}$/,le=/,\s*(\d+)/d,ue=/\(([^)]+)\)/,de=/^(?:,\s*\d+(?:-\d+)?)*(?:\s+(?:n|note)\s*\.?\s*\d+)?\s*\(([^)]+)\)/,fe=/^,\s*(\d+(?:-\d+)?)/d,pe=/\d\.\s+/g,me=/[\s,]/,he=/^(?:,\s*\d+(?:[-–—]\d+)?(?:\s+(?:n|note)\s*\.?\s*\d+)?)+/,ge=[[/^aff'?d\s+on\s+other\s+grounds\b/i,`affirmed`],[/^affirmed\s+on\s+other\s+grounds\b/i,`affirmed`],[/^aff'?d\b/i,`affirmed`],[/^affirmed\b/i,`affirmed`],[/^rev'?d\s+and\s+remanded\b/i,`reversed`],[/^rev'?d\s+on\s+other\s+grounds\b/i,`reversed`],[/^reversed\s+and\s+remanded\b/i,`reversed`],[/^rev'?d\b/i,`reversed`],[/^reversed\b/i,`reversed`],[/^certiorari\s+denied\b/i,`cert_denied`],[/^cert\.\s*den(ied|\.)(?=[\s,;(]|$)/i,`cert_denied`],[/^certiorari\s+granted\b/i,`cert_granted`],[/^cert\.\s*granted\b/i,`cert_granted`],[/^overruled\s+by\b/i,`overruled`],[/^overruled\s+in\b/i,`overruled`],[/^overruling\b/i,`overruled`],[/^overruled\b/i,`overruled`],[/^vacated\s+by\b/i,`vacated`],[/^vacated\b/i,`vacated`],[/^remanded\s+for\s+reconsideration\b/i,`remanded`],[/^remanded\b/i,`remanded`],[/^modified\s+by\b/i,`modified`],[/^modified\b/i,`modified`],[/^abrogated\s+by\b/i,`abrogated`],[/^abrogated\s+in\b/i,`abrogated`],[/^abrogated\b/i,`abrogated`],[/^superseded\s+by\b/i,`superseded`],[/^superseded\b/i,`superseded`],[/^disapproved\s+of\b/i,`disapproved`],[/^disapproved\b/i,`disapproved`],[/^questioned\s+by\b/i,`questioned`],[/^questioned\b/i,`questioned`],[/^distinguished\s+by\b/i,`distinguished`],[/^distinguished\b/i,`distinguished`],[/^withdrawn\b/i,`withdrawn`],[/^reinstated\b/i,`reinstated`]];function _e(e){for(let[t,n]of ge){let r=t.exec(e);if(r)return{signal:n,matchLength:r[0].length}}}const ve=new Set([`holding`,`finding`,`stating`,`noting`,`explaining`,`quoting`,`citing`,`discussing`,`describing`,`recognizing`,`applying`,`rejecting`,`adopting`,`requiring`]);function ye(e){return ve.has(e)}const be=/^([a-z]+)\b/i,xe=/([A-Z][A-Za-z0-9\s.,'&()/-]+?)\s+v(?:s)?\.?\s+([A-Za-z0-9\s.,'&()/-]+?)\s*,\s*$/,Se=/\b(In re|Ex parte|Matter of|Estate of|State ex rel\.|United States ex rel\.|Application of|Petition of)\s+([A-Za-z0-9\s.,'&()/-]+?)\s*,\s*$/i,Ce=new Set([`of`,`the`,`and`,`for`,`in`,`on`,`by`,`a`,`an`,`to`,`at`,`as`,`de`,`la`,`el`,`del`,`von`,`van`,`ex`,`rel`,`et`,`al`,`d`,`or`]);function we(e){let t=e.split(/\s+/);for(let e of t){if(!e)continue;let t=e.toLowerCase().replace(/[.,']+$/,``);if(!Ce.has(t)&&!/^[A-Z]/.test(e)&&!/^\d/.test(e))return!1}return!0}function Te(e){let t=e.replace(/\s*\d{1,2}\/\d{1,2}\/\d{4}\s*$/,``).trim();return t=t.replace(/\s*\d{4}\s*$/,``).trim(),t=t.replace(/\s*,?\s*\d{1,2}\s*,?\s*$/,``).trim(),t=t.replace(RegExp(`\\s*${G.source}\\s*$`,`i`),``).trim(),t=t.replace(/,\s*$/,``).trim(),t&&/[A-Za-z]/.test(t)?t:void 0}function Ee(e,t,n=150){let r=Math.max(0,t-n),i=e.substring(r,t),a=r,o=-1,s;for(;(s=pe.exec(i))!==null;)o=s.index+s[0].length;let c=/\b(?:v|vs|Inc|Corp|Ltd|Co|Cir|App|Ct|Supp|Dist|Rev|Stat|Gen|No|ed|Jr|Sr|Dr|Mr|Mrs|Ms|Prof|St|Dep|Auth|Ass|Comm)\.\s+$/i,l=/[.)]\s+(?=[A-Z])/g;for(;(s=l.exec(i))!==null;){let e=i.substring(Math.max(0,s.index-15),s.index+2);if(c.test(e))continue;let t=s.index+s[0].length;t>o&&(o=t)}o!==-1&&(i=i.substring(o),a=r+o);let u=xe.exec(i);if(u&&!u[0].includes(`;`)){let e=u[1].trim(),t=0;if(!we(e)){let n=e.split(/\s+/),r=n[0]??``,i=r.toLowerCase().replace(/[.,']+$/,``);if(!(/^[A-Z]/.test(r)&&!Ce.has(i))&&!W.exec(e))for(let r=1;r<n.length;r++){let i=n.slice(r).join(` `);if(/^[A-Z]/.test(i)&&we(i)){t=n.slice(0,r).join(` `).length+1,e=i;break}}}return{caseName:`${e} v. ${u[2].trim()}`,nameStart:a+u.index+t}}let d=Se.exec(i);if(d&&!d[0].includes(`;`))return{caseName:`${d[1]} ${d[2].trim()}`,nameStart:a+d.index}}function De(e,t,n=500){let r=[],i=[],a=t,o=Math.min(e.length,t+n),s,c=e.substring(a,o),l=he.exec(c);for(l&&(a+=l[0].length);a<o;){for(;a<o&&me.test(e[a]);)a++;if(a>=o||e[a]!==`(`){let t=e.substring(a,o),n=_e(t);if(n){s={text:t.substring(0,n.matchLength).replace(/\s+$/,``),normalized:n.signal,start:a,end:a+n.matchLength},a+=n.matchLength;continue}break}let t=a,n=0,c=a+1;for(;a<o;){let o=e[a];if(o===`(`)n++;else if(o===`)`&&(n--,n===0)){a++;let n=e.substring(c,a-1).trim();n.length>0&&(r.push({text:n,start:t,end:a}),s&&=(i.push({signal:s,nextParenIndex:r.length-1}),void 0));break}a++}if(n>0)break}return s&&i.push({signal:s,nextParenIndex:-1}),{parens:r,signals:i}}function K(e){let t={},n=R(e);n&&(t.date=n,t.year=n.parsed.year);let r=Te(e);if(r){t.court=r;let n=e.indexOf(r);n!==-1&&(t.courtStart=n,t.courtEnd=n+r.length)}if(t.year){let n=String(t.year),r=e.lastIndexOf(n);r!==-1&&(t.yearStart=r,t.yearEnd=r+n.length)}return/\ben banc\b/i.test(e)?t.disposition=`en banc`:/\bper curiam\b/i.test(e)&&(t.disposition=`per curiam`),t}function Oe(e){let t=be.exec(e);if(t){let n=t[1].toLowerCase();if(ye(n))return{kind:`explanatory`,text:e,type:n}}let n=K(e);return n.year||n.date||n.disposition?{kind:`metadata`,...n}:{kind:`explanatory`,text:e,type:`other`}}function q(e){let t=e;t=t.replace(/\bet\s+al\.?/gi,``),t=t.replace(/\s+d\/b\/a\b.*/gi,``),t=t.replace(/\s+aka\b.*/gi,``);let n=``;for(;n!==t;)n=t,t=t.replace(/,?\s*(Inc|LLC|Corp|Ltd|Co|LLP|LP|P\.C)\.?$/gi,``);return t=t.replace(/^(The|A|An)\s+/i,``),t=t.replace(/\s+/g,` `),t.trim().toLowerCase()}function ke(e){let t;for(let t of[`In re`,`Ex parte`,`Matter of`,`State ex rel.`,`United States ex rel.`,`Application of`,`Petition of`,`Estate of`]){let n=RegExp(`^(${t})\\s+(.+)$`,`i`).exec(e);if(n){let t=n[1],r=n[2];if(/\s+v\.?\s+/i.test(r)){let t=/^(.+?)\s+v\.?\s+(.+)$/i.exec(e);if(t){let e=t[1].trim(),n=t[2].trim();return{plaintiff:e,plaintiffNormalized:q(e),defendant:n,defendantNormalized:q(n)}}}else return{plaintiff:e,plaintiffNormalized:q(r),proceduralPrefix:t}}}let n=/^(.+?)\s+v\.?\s+(.+)$/i.exec(e);if(n){let e=n[1].trim(),r=n[2].trim(),i=e.match(W)??e.match(/^(Also|In(?!\s+re\b))\s+/i);if(i){let n=i[1].toLowerCase().replace(/\.$/,``);U.has(n)&&(t=n),e=e.substring(i[0].length).trim()}return{plaintiff:e||n[1].trim(),plaintiffNormalized:q(e||n[1].trim()),defendant:r,defendantNormalized:q(r),signal:t}}return{}}function Ae(e,t,n){let{text:i,span:a}=e,o=se.exec(i);if(!o)throw Error(`Failed to parse case citation: ${i}`);let s=ie(o[1]),c=o[2].trim(),d=o[3]?Number.parseInt(o[3],10):void 0,f=o[4]||void 0,p=o[5],m=ce.test(p),h=m?void 0:Number.parseInt(p,10),g=m?!0:void 0,_=le.exec(i),v=_?Number.parseInt(_[1],10):void 0,y=_?H(_[1])??void 0:void 0,b={};if(o.indices){if(o.indices[1]&&(b.volume=l(a.cleanStart,o.indices[1],t)),o.indices[2]){let[e,n]=o.indices[2],r=i.substring(e,n),s=r.length-r.trimStart().length,c=r.length-r.trimEnd().length;b.reporter=l(a.cleanStart,[e+s,n-c],t)}o.indices[5]&&(b.page=l(a.cleanStart,o.indices[5],t))}_?.indices?.[1]&&(b.pincite=l(a.cleanStart,_.indices[1],t));let x,S,C,w,T,E,D,O,k=ue.exec(i);if(k&&!d&&(D=k[1],O=K(D),x=O.year,S=O.court,C=O.date,w=O.disposition),n&&!D){let e=n.substring(a.cleanEnd),r=de.exec(e);if(r&&(D=r[1],O=K(D),x=O.year,S=O.court,C=O.date,w=O.disposition,v===void 0)){let n=fe.exec(e);n&&(v=Number.parseInt(n[1],10),y||=H(n[1])??void 0,n.indices?.[1]&&(b.pincite=l(a.cleanEnd,n.indices[1],t)))}}let A,j,M;if(n){M=De(n,a.cleanEnd),j=M.parens;let e=D?j.slice(1):j;for(let n of e){let e=Oe(n.text);if(e.kind===`metadata`)e.court&&(!S||S===w)&&(S=e.court),e.year&&!x&&(x=e.year,C=e.date),e.disposition&&!w&&(w=e.disposition);else{A??=[];let r=u({cleanStart:n.start,cleanEnd:n.end},t);A.push({text:e.text,type:e.type,span:{cleanStart:n.start,cleanEnd:n.end,originalStart:r.originalStart,originalEnd:r.originalEnd}})}}}if(j&&j.length>0&&(S||x)){let e=D?j[0]:void 0;if(e){let n=u({cleanStart:e.start,cleanEnd:e.end},t);if(b.metadataParenthetical={cleanStart:e.start,cleanEnd:e.end,originalStart:n.originalStart,originalEnd:n.originalEnd},O){let n=e.start+1;if(O.courtStart!==void 0){let e=n+O.courtStart,r=n+O.courtEnd,i=u({cleanStart:e,cleanEnd:r},t);b.court={cleanStart:e,cleanEnd:r,originalStart:i.originalStart,originalEnd:i.originalEnd}}if(O.yearStart!==void 0){let e=n+O.yearStart,r=n+O.yearEnd,i=u({cleanStart:e,cleanEnd:r},t);b.year={cleanStart:e,cleanEnd:r,originalStart:i.originalStart,originalEnd:i.originalEnd}}}}}let N;if(n&&M&&M.signals.length>0)for(let e=0;e<M.signals.length;e++){let{signal:n}=M.signals[e];N??=[];let{originalStart:r,originalEnd:i}=u({cleanStart:n.start,cleanEnd:n.end},t);N.push({signal:n.normalized,rawSignal:n.text,signalSpan:{cleanStart:n.start,cleanEnd:n.end,originalStart:r,originalEnd:i},order:e})}let P=te(c);!S&&P?.level===`supreme`&&P?.jurisdiction===`federal`&&(S=`scotus`);let F;if(n&&(F=Ee(n,a.cleanStart),F)){T=F.caseName;let e=j&&j.length>0?j[j.length-1].end:a.cleanEnd,n=F.nameStart,r=e;E={cleanStart:n,cleanEnd:r,originalStart:t.cleanToOriginal.get(n)??n,originalEnd:t.cleanToOriginal.get(r)??r};let i=F.nameStart,o=i+T.length,s=u({cleanStart:i,cleanEnd:o},t);b.caseName={cleanStart:i,cleanEnd:o,originalStart:s.originalStart,originalEnd:s.originalEnd}}let I,L,R,z,B,V;if(T){let e=ke(T);if(I=e.plaintiff,L=e.plaintiffNormalized,R=e.defendant,z=e.defendantNormalized,B=e.proceduralPrefix,V=e.signal,V&&I&&R){if(T=`${I} v. ${R}`,E){let e=n?.substring(E.cleanStart,a.cleanStart)??``,r=e.trimStart(),i=e.length-r.length,o=W.exec(r);if(o){let e=E.cleanStart+i+o[0].length,n=t.cleanToOriginal.get(e)??e;E={...E,cleanStart:e,originalStart:n}}}if(F){let e=E?.cleanStart??F.nameStart,n=e+T.length,r=u({cleanStart:e,cleanEnd:n},t);b.caseName={cleanStart:e,cleanEnd:n,originalStart:r.originalStart,originalEnd:r.originalEnd}}}if(I&&F&&n){let e=V&&E?E.cleanStart:F.nameStart,r=n.substring(e,a.cleanStart),i=/\s+v\.?\s+/i.exec(r);if(i){let n=r.substring(0,i.index).lastIndexOf(I);if(n!==-1){let r=e+n,i=r+I.length,a=u({cleanStart:r,cleanEnd:i},t);b.plaintiff={cleanStart:r,cleanEnd:i,originalStart:a.originalStart,originalEnd:a.originalEnd}}if(R){let n=i.index+i[0].length,a=r.substring(n).indexOf(R);if(a!==-1){let r=e+n+a,i=r+R.length,o=u({cleanStart:r,cleanEnd:i},t);b.defendant={cleanStart:r,cleanEnd:i,originalStart:o.originalStart,originalEnd:o.originalEnd}}}}else{let n=r.indexOf(I);if(n!==-1){let r=e+n,i=r+I.length,a=u({cleanStart:r,cleanEnd:i},t);b.plaintiff={cleanStart:r,cleanEnd:i,originalStart:a.originalStart,originalEnd:a.originalEnd}}}}if(V&&E&&n&&F){let e=n.substring(F.nameStart,a.cleanStart),r=W.exec(e);if(r){let e=F.nameStart,n=e+r[1].length,i=u({cleanStart:e,cleanEnd:n},t);b.signal={cleanStart:e,cleanEnd:n,originalStart:i.originalStart,originalEnd:i.originalEnd}}}}let{originalStart:ee,originalEnd:ne}=u(a,t),U=.2,G=r()?.byAbbreviation.get(c.toLowerCase());return(G&&G.length>0||oe.has(c))&&(U+=.3),x!==void 0&&x<=ae&&(U+=.2),T&&(U+=.15),S&&(U+=.1),U=Math.round(Math.min(U,1)*100)/100,g&&(U=Math.max(U,.5)),{type:`case`,text:i,span:{cleanStart:a.cleanStart,cleanEnd:a.cleanEnd,originalStart:ee,originalEnd:ne},confidence:U,matchedText:i,processTimeMs:0,patternsChecked:1,volume:s,reporter:c,page:h,nominativeVolume:d,nominativeReporter:f,pincite:v,pinciteInfo:y,court:S,normalizedCourt:re(S),year:x,hasBlankPage:g,date:C,fullSpan:E,caseName:T,disposition:w,parentheticals:A,subsequentHistoryEntries:N,plaintiff:I,plaintiffNormalized:L,defendant:R,defendantNormalized:z,proceduralPrefix:B,inferredCourt:P,signal:V,spans:b}}const J=`${String.raw`(?:art(?:icle)?\.?|amend(?:ment)?\.?|amdt\.?)\s+([IVX]+|\d+)`}${String.raw`(?:[,;]\s*§\s*([\w-]+))?`}${String.raw`(?:[,;]\s*cl\.?\s*(\d+))?`}`,je=new RegExp(J,`id`),Me=[{id:`us-constitution`,regex:new RegExp(String.raw`\b(?:United\s+States\s+Constitution|U\.?\s*S\.?\s+Const\.?),?\s+${J}`,`gi`),description:`U.S. Constitution citations (e.g., "U.S. Const. art. III, § 2", "U.S. Const. amend. XIV")`,type:`constitutional`},{id:`state-constitution`,regex:new RegExp(String.raw`\b(?:Ala|Alaska|Ariz|Ark|Cal(?:if)?|Colo|Conn|Del|Fla|Ga|Haw|Idaho|Ill|Ind|Iowa|Kan|Ky|La|Me|Md|Mass|Mich|Minn|Miss|Mo|Mont|Neb|Nev|N\.?\s*H|N\.?\s*J|N\.?\s*M|N\.?\s*Y|N\.?\s*C|N\.?\s*D|Ohio|Okla|Or(?:e)?|Pa|R\.?\s*I|S\.?\s*C|S\.?\s*D|Tenn|Tex|Utah|Vt|W\.?\s*Va|Va|Wash|Wis|Wyo)\.?\s+Const\.?,?\s+${J}`,`gi`),description:`State constitution citations (e.g., "Cal. Const. art. I, § 7", "N.Y. Const. art. VI, § 20")`,type:`constitutional`},{id:`bare-constitution`,regex:new RegExp(String.raw`(?<!\.\s)(?<![A-Z]\s)\bConst\.?,?\s+${J}`,`g`),description:`Bare constitutional citations without jurisdiction prefix (e.g., "Const. art. I, § 8, cl. 3")`,type:`constitutional`},{id:`bare-article`,regex:new RegExp(String.raw`(?<!Const\.?,?\s)\bArt\.?\s+[IVX]+[,;]\s*§\s*[\w-]+(?:[,;]\s*cl\.?\s*\d+)?`,`g`),description:`Bare article references without "Const." prefix (e.g., "Art. I, §8, cl. 3")`,type:`constitutional`}],Ne={I:1,II:2,III:3,IV:4,V:5,VI:6,VII:7,VIII:8,IX:9,X:10,XI:11,XII:12,XIII:13,XIV:14,XV:15,XVI:16,XVII:17,XVIII:18,XIX:19,XX:20,XXI:21,XXII:22,XXIII:23,XXIV:24,XXV:25,XXVI:26,XXVII:27};function Pe(e){let t=e.toUpperCase();if(t in Ne)return Ne[t];let n=Number.parseInt(e,10);return Number.isNaN(n)?void 0:n}const Fe={ala:`AL`,alaska:`AK`,ariz:`AZ`,ark:`AR`,cal:`CA`,calif:`CA`,colo:`CO`,conn:`CT`,del:`DE`,fla:`FL`,ga:`GA`,haw:`HI`,idaho:`ID`,ill:`IL`,ind:`IN`,iowa:`IA`,kan:`KS`,ky:`KY`,la:`LA`,me:`ME`,md:`MD`,mass:`MA`,mich:`MI`,minn:`MN`,miss:`MS`,mo:`MO`,mont:`MT`,neb:`NE`,nev:`NV`,"n.h":`NH`,"n.j":`NJ`,"n.m":`NM`,"n.y":`NY`,"n.c":`NC`,"n.d":`ND`,ohio:`OH`,okla:`OK`,or:`OR`,ore:`OR`,pa:`PA`,"r.i":`RI`,"s.c":`SC`,"s.d":`SD`,tenn:`TN`,tex:`TX`,utah:`UT`,vt:`VT`,va:`VA`,wash:`WA`,"w.va":`WV`,wis:`WI`,wyo:`WY`},Ie=/amend|amdt/i,Le=/^([A-Za-z]+(?:\.\s*[A-Za-z]+)?(?:\.\s*[A-Za-z]+)?)\.?\s+Const/i;function Re(e){let t=Le.exec(e);if(!t)return;let n=t[1].replace(/\s+/g,``).replace(/\.$/g,``).toLowerCase();if(n in Fe)return Fe[n]}function ze(e,t){let{text:n,span:r}=e,i=je.exec(n),a,o,s,c;if(i){let e=Pe(i[1]);Ie.test(i[0])?o=e:a=e,s=i[2]||void 0,c=i[3]?Number.parseInt(i[3],10):void 0}let d;switch(e.patternId){case`us-constitution`:d=`US`;break;case`state-constitution`:d=Re(n);break;default:d=void 0;break}let{originalStart:f,originalEnd:p}=u(r,t),m;m=e.patternId===`bare-article`?.5:e.patternId===`bare-constitution`?.7:s?.95:.9;let h=n.endsWith(`.`)?n.slice(0,-1):n,g={};if(d===`US`){let e=n.indexOf(`U.S.`);e!==-1&&(g.jurisdiction=l(r.cleanStart,[e,e+4],t))}else if(d&&e.patternId===`state-constitution`){let e=Le.exec(n);if(e){let n=e[1].length+1;g.jurisdiction=l(r.cleanStart,[0,n],t)}}return i?.indices&&(Ie.test(i[0])?i.indices[1]&&(g.amendment=l(r.cleanStart,i.indices[1],t)):i.indices[1]&&(g.article=l(r.cleanStart,i.indices[1],t)),i.indices[2]&&(g.section=l(r.cleanStart,i.indices[2],t)),i.indices[3]&&(g.clause=l(r.cleanStart,i.indices[3],t))),{type:`constitutional`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:f,originalEnd:p},confidence:m,matchedText:h,processTimeMs:0,patternsChecked:1,jurisdiction:d,article:a,amendment:o,section:s,clause:c,spans:g}}function Be(e,t){let{text:n,span:r}=e,i=/^(\d+(?:-\d+)?)\s+Fed\.\s?Reg\.\s+(\d+)/d.exec(n);if(!i)throw Error(`Failed to parse Federal Register citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=Number.parseInt(i[2],10),c;i.indices&&(c={volume:l(r.cleanStart,i.indices[1],t),page:l(r.cleanStart,i.indices[2],t)});let d=/\((?:.*?\s)?(\d{4})\)/.exec(n),f=d?Number.parseInt(d[1],10):void 0,{originalStart:p,originalEnd:m}=u(r,t);return{type:`federalRegister`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:p,originalEnd:m},confidence:.9,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,page:s,year:f,spans:c}}function Ve(e,t,n){let{text:r,span:i}=e,a=/^(\d+(?:-\d+)?)\s+([A-Za-z.\s]+?)\s+(\d+)/d.exec(r);if(!a)throw Error(`Failed to parse journal citation: ${r}`);let o=a[1],s=/^\d+$/.test(o)?Number.parseInt(o,10):o,c=a[2].trim(),d=Number.parseInt(a[3],10),f,p;n===void 0?(f=r.slice(a[0].length),p=i.cleanStart+a[0].length):(f=n.slice(i.cleanEnd,i.cleanEnd+30),p=i.cleanEnd);let m=n?n.slice(i.cleanStart,i.cleanEnd+30):r,h=/^,\s*(\d+)/d.exec(f),g=h?Number.parseInt(h[1],10):void 0,_=/\((?:.*?\s)?(\d{4})\)/d.exec(m),v=_?Number.parseInt(_[1],10):void 0,y;a.indices&&(y={volume:l(i.cleanStart,a.indices[1],t),journal:l(i.cleanStart,a.indices[2],t),page:l(i.cleanStart,a.indices[3],t)},h?.indices?.[1]&&(y.pincite=l(p,h.indices[1],t)),_?.indices?.[1]&&(y.year=l(i.cleanStart,_.indices[1],t)));let{originalStart:b,originalEnd:x}=u(i,t);return{type:`journal`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:b,originalEnd:x},confidence:.6,matchedText:r,processTimeMs:0,patternsChecked:1,volume:s,journal:c,abbreviation:c,page:d,pincite:g,year:v,spans:y}}function He(e,t){let{text:n,span:r}=e,i=/^(\d{4})\s+(.+?)\s+(\d+)$/d.exec(n);if(!i)throw Error(`Failed to parse neutral citation: ${n}`);let a=Number.parseInt(i[1],10),o=i[2],s=i[3],c;i.indices&&(c={year:l(r.cleanStart,i.indices[1],t),court:l(r.cleanStart,i.indices[2],t),documentNumber:l(r.cleanStart,i.indices[3],t)});let{originalStart:d,originalEnd:f}=u(r,t);return{type:`neutral`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:d,originalEnd:f},confidence:1,matchedText:n,processTimeMs:0,patternsChecked:1,year:a,court:o,documentNumber:s,spans:c}}function Ue(e,t){let{text:n,span:r}=e,i=/Pub\.\s?L\.(?:\s?No\.)?\s?(\d+)-(\d+)/d.exec(n);if(!i)throw Error(`Failed to parse public law citation: ${n}`);let a=Number.parseInt(i[1],10),o=Number.parseInt(i[2],10),s;i.indices&&(s={congress:l(r.cleanStart,i.indices[1],t),lawNumber:l(r.cleanStart,i.indices[2],t)});let{originalStart:c,originalEnd:d}=u(r,t);return{type:`publicLaw`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:c,originalEnd:d},confidence:.9,matchedText:n,processTimeMs:0,patternsChecked:1,congress:a,lawNumber:o,spans:s}}function We(e,t,n){let{text:r,span:i}=e,a=/([Ii])(?:d|bid)(\.)(,?)\s*(?:at\s+(\d+(?:\s*[-–]\s*\d+)?))?/.exec(r);if(!a)throw Error(`Failed to parse Id. citation: ${r}`);let o=a[1],s=a[3]===`,`,c=a[4]?Number.parseInt(a[4],10):void 0,l=1;if(o===`i`&&(l=.85),s&&(l=Math.min(l,.9)),n&&i.cleanStart>0){let e=n.slice(Math.max(0,i.cleanStart-20),i.cleanStart).trimEnd();e.length>0&&(e[e.length-1],/[.;)\]—:]$/.test(e)||(l=Math.min(l,.4)))}let{originalStart:d,originalEnd:f}=u(i,t);return{type:`id`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:d,originalEnd:f},confidence:l,matchedText:r,processTimeMs:0,patternsChecked:1,pincite:c}}function Ge(e,t){let{text:n,span:r}=e,i=/\b([A-Z][a-zA-Z''\-]+\.?(?:(?:\s+v\.?\s+|\s+)[A-Z][a-zA-Z''\-]+\.?)*)\s*,?\s+supra(?:\s+note\s+(\d+))?(?:,?\s+at\s+(\d+))?/.exec(n),a=i||/supra(?:\s+note\s+(\d+)(?:,?\s+at\s+(\d+))?|\s+at\s+(\d+))?/.exec(n);if(!a)throw Error(`Failed to parse supra citation: ${n}`);let o,s,c;if(i)o=i[1],s=i[3]?Number.parseInt(i[3],10):void 0,c=.9;else{o=void 0,a[1];let e=a[2],t=a[3];s=e?Number.parseInt(e,10):t?Number.parseInt(t,10):void 0,c=.8}let{originalStart:l,originalEnd:d}=u(r,t);return{type:`supra`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:l,originalEnd:d},confidence:c,matchedText:n,processTimeMs:0,patternsChecked:1,partyName:o,pincite:s}}function Ke(e,t){let{text:n,span:r}=e,i=/(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.''\s]+?(?:\d[a-z]{1,2})?)\s*,?\s+at\s+(\d+)/.exec(n);if(!i)throw Error(`Failed to parse short-form case citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=i[2].trim(),c=Number.parseInt(i[3],10),{originalStart:l,originalEnd:d}=u(r,t),f=.4;return oe.has(s)&&(f+=.3),{type:`shortFormCase`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:l,originalEnd:d},confidence:f,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,reporter:s,pincite:c}}const qe=/^([^(]+?)\s*((?:\([^)]*\))*)$/,Je=/\s*et\s+seq\.?\s*$/i;function Y(e){let t=e.replace(Je,``),n=t!==e,r=t.trim(),i=qe.exec(r),a=i?.[2];return i!==null&&a?{section:i[1].trim(),subsection:a,hasEtSeq:n}:{section:r,hasEtSeq:n}}const Ye=/^(?:(\d+)\s+)?(.+?)\s*§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)$/d;function Xe(e,n){let{text:r,span:i}=e,a=Ye.exec(r),o,s,c;a?(o=a[1]?Number.parseInt(a[1],10):void 0,s=a[2].trim(),c=a[3]):(s=r,c=``);let d=t(s),f=d?.jurisdiction,p=s,{section:m,subsection:h,hasEtSeq:g}=Y(c),{originalStart:_,originalEnd:v}=u(i,n),y;if(a?.indices&&(y={},a.indices[1]&&(y.title=l(i.cleanStart,a.indices[1],n)),a.indices[2]&&(y.code=l(i.cleanStart,a.indices[2],n)),a.indices[3]&&m)){let e=a.indices[3][0],t=m.replace(/[.,;:]\s*$/,``).length;if(y.section=l(i.cleanStart,[e,e+t],n),h){let t=e+m.length;y.subsection=l(i.cleanStart,[t,t+h.length],n)}}let b=r.includes(`§`),x;return x=d&&b?.95:d?.85:b?.6:.4,o!==void 0&&(x+=.05),h&&(x+=.05),x=Math.min(x,1),{type:`statute`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:_,originalEnd:v},confidence:x,matchedText:r,processTimeMs:0,patternsChecked:1,title:o,code:p,section:m,subsection:h,pincite:h,jurisdiction:f,hasEtSeq:g||void 0,spans:y}}const Ze=/^(\d+)\s+(?:ILCS|Ill\.?\s*Comp\.?\s*Stat\.?)\s*(?:Ann\.?\s+)?(\d+)\/(.+)$/d;function Qe(e,t){let{text:n,span:r}=e,i=Ze.exec(n),a,o,s;i?(a=Number.parseInt(i[1],10),o=i[2],s=i[3]):(o=n,s=``);let{section:c,subsection:d,hasEtSeq:f}=Y(s),{originalStart:p,originalEnd:m}=u(r,t),h=c.replace(/[.,;:]\s*$/,``).length,g;if(i?.indices&&(g={},i.indices[1]&&(g.title=l(r.cleanStart,i.indices[1],t)),i.indices[2]&&(g.code=l(r.cleanStart,i.indices[2],t)),i.indices[3]&&c)){let e=i.indices[3][0];if(g.section=l(r.cleanStart,[e,e+h],t),d){let n=e+c.length;g.subsection=l(r.cleanStart,[n,n+d.length],t)}}let _=i?.95:.3;return d&&(_+=.05),_=Math.min(_,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:p,originalEnd:m},confidence:_,matchedText:n,processTimeMs:0,patternsChecked:1,title:a,code:o,section:c,subsection:d,pincite:d,jurisdiction:i?`IL`:void 0,hasEtSeq:f||void 0,spans:g}}const $e=/^(\d+)\s+(\S+(?:\.\S+)*)\s*§§?\s*(.+)$/d,et=/^(\d+)\s+(\S+(?:\.\S+)*)\s+(?:Part|pt\.)\s+(.+)$/d;function tt(e,t){let{text:n,span:r}=e,i=$e.exec(n)??et.exec(n),a,o,s;i?(a=Number.parseInt(i[1],10),o=i[2],s=i[3]):(o=e.patternId===`cfr`?`C.F.R.`:`U.S.C.`,s=n,a=void 0);let{section:c,subsection:d,hasEtSeq:f}=Y(s),{originalStart:p,originalEnd:m}=u(r,t),h;if(i?.indices&&(h={},i.indices[1]&&(h.title=l(r.cleanStart,i.indices[1],t)),i.indices[2]&&(h.code=l(r.cleanStart,i.indices[2],t)),i.indices[3]&&c)){let e=i.indices[3][0],n=c.replace(/[.,;:]\s*$/,``).length;if(h.section=l(r.cleanStart,[e,e+n],t),d){let n=e+c.length;h.subsection=l(r.cleanStart,[n,n+d.length],t)}}let g=.95;return a!==void 0&&(g+=.05),d&&(g+=.05),g=Math.min(g,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:p,originalEnd:m},confidence:g,matchedText:n,processTimeMs:0,patternsChecked:1,title:a,code:o,section:c,subsection:d,pincite:d,jurisdiction:`US`,hasEtSeq:f||void 0,spans:h}}const nt=/^(N\.?\s*Y\.?|Cal(?:ifornia)?\.?|Tex(?:as)?\.?|Md\.?|Va\.?|Ala(?:bama)?\.?)\s+(.*?)\s*§§?\s*(.+)$/ds,rt=/^(.*?)\s+(?:ch\.?|c\.?)\s*(\w+),?\s*§\s*(.+)$/d,it={"n.y.":`NY`,"n.y":`NY`,ny:`NY`,"cal.":`CA`,cal:`CA`,"california.":`CA`,california:`CA`,"tex.":`TX`,tex:`TX`,"texas.":`TX`,texas:`TX`,"md.":`MD`,md:`MD`,"va.":`VA`,va:`VA`,"ala.":`AL`,ala:`AL`,"alabama.":`AL`,alabama:`AL`};function at(e){return it[e.toLowerCase().replace(/\s+/g,``)]}function ot(e){return e.replace(/^\s*Code\s+Ann\.\s*,\s*/i,``).replace(/^\s*Code\s*,\s*/i,``).replace(/\s+Code\s*$/i,``).replace(/\s+Ann\.?\s*$/i,``).replace(/,\s*$/,``).trim()}function st(e,t){let{text:r,span:i}=e,a,o,s,c=null,d=null;if(e.patternId===`mass-chapter`)c=rt.exec(r),c?(a=`MA`,o=c[2],s=c[3]):(o=r,s=``);else if(d=nt.exec(r),d){a=at(d[1]);let e=d[2],t=ot(e);o=a&&n(a,t)?t:e.trim(),s=d[3]}else o=r,s=``;let{section:f,subsection:p,hasEtSeq:m}=Y(s),{originalStart:h,originalEnd:g}=u(i,t),_=f.replace(/[.,;:]\s*$/,``).length,v;if(c?.indices){if(v={},c.indices[2]&&(v.code=l(i.cleanStart,c.indices[2],t)),c.indices[3]&&f){let e=c.indices[3][0];if(v.section=l(i.cleanStart,[e,e+_],t),p){let n=e+f.length;v.subsection=l(i.cleanStart,[n,n+p.length],t)}}}else if(d?.indices&&(v={},d.indices[2]&&(v.code=l(i.cleanStart,d.indices[2],t)),d.indices[3]&&f)){let e=d.indices[3][0];if(v.section=l(i.cleanStart,[e,e+_],t),p){let n=e+f.length;v.subsection=l(i.cleanStart,[n,n+p.length],t)}}let y=a?.95:.5;return p&&(y+=.05),y=Math.min(y,1),{type:`statute`,text:r,span:{cleanStart:i.cleanStart,cleanEnd:i.cleanEnd,originalStart:h,originalEnd:g},confidence:y,matchedText:r,processTimeMs:0,patternsChecked:1,code:o,section:f,subsection:p,pincite:p,jurisdiction:a,hasEtSeq:m||void 0,spans:v}}const ct=/[Ss]ection\s+(\d+[A-Za-z0-9-]*)((?:\([^)]*\))*)\s+of\s+title\s+(\d+)/d;function lt(e,t){let{text:n,span:r}=e,i=ct.exec(n),a,o,s;i?(a=i[1],o=i[2]||void 0,s=Number.parseInt(i[3],10)):a=n;let{originalStart:c,originalEnd:d}=u(r,t),f;i?.indices&&(f={},i.indices[1]&&(f.section=l(r.cleanStart,i.indices[1],t)),i.indices[3]&&(f.title=l(r.cleanStart,i.indices[3],t)),i.indices[2]&&o&&(f.subsection=l(r.cleanStart,i.indices[2],t)));let p=.85;return s!==void 0&&(p+=.05),o&&(p+=.05),p=Math.min(p,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:c,originalEnd:d},confidence:p,matchedText:n,processTimeMs:0,patternsChecked:1,title:s,code:`U.S.C.`,section:a,subsection:o,pincite:o,jurisdiction:`US`,spans:f}}function ut(e,t){let{text:n,span:r}=e,i=/^(?:(\d+)\s+)?([A-Za-z.\s]+?)\s*§+\s*(\d+[A-Za-z0-9-]*)/.exec(n);if(!i){let{originalStart:e,originalEnd:i}=u(r,t);return{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:e,originalEnd:i},confidence:.3,matchedText:n,processTimeMs:0,patternsChecked:1,code:n,section:``}}let a=i[1]?Number.parseInt(i[1],10):void 0,o=i[2].trim(),s=i[3],{originalStart:c,originalEnd:l}=u(r,t),d=.5;return[`U.S.C.`,`C.F.R.`,`Cal. Civ. Code`,`Cal. Penal Code`,`N.Y. Civ. Prac. L. & R.`,`Tex. Civ. Prac. & Rem. Code`].some(e=>o.includes(e))&&(d+=.3),d=Math.min(d,1),{type:`statute`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:c,originalEnd:l},confidence:d,matchedText:n,processTimeMs:0,patternsChecked:1,title:a,code:o,section:s}}function dt(e,t){switch(e.patternId){case`usc`:case`cfr`:return tt(e,t);case`prose`:return lt(e,t);case`abbreviated-code`:return Xe(e,t);case`named-code`:case`mass-chapter`:return st(e,t);case`chapter-act`:return Qe(e,t);default:return ut(e,t)}}function ft(e,t){let{text:n,span:r}=e,i=/^(\d+(?:-\d+)?)\s+Stat\.\s+(\d+)/d.exec(n);if(!i)throw Error(`Failed to parse Statutes at Large citation: ${n}`);let a=i[1],o=/^\d+$/.test(a)?Number.parseInt(a,10):a,s=Number.parseInt(i[2],10),c;i.indices&&(c={volume:l(r.cleanStart,i.indices[1],t),page:l(r.cleanStart,i.indices[2],t)});let d=/\((?:.*?\s)?(\d{4})\)/.exec(n),f=d?Number.parseInt(d[1],10):void 0,{originalStart:p,originalEnd:m}=u(r,t);return{type:`statutesAtLarge`,text:n,span:{cleanStart:r.cleanStart,cleanEnd:r.cleanEnd,originalStart:p,originalEnd:m},confidence:.9,matchedText:n,processTimeMs:0,patternsChecked:1,volume:o,page:s,year:f,spans:c}}const pt=[{id:`federal-reporter`,regex:/\b(\d+(?:-\d+)?)\s+(F\.|F\.2d|F\.3d|F\.4th|F\.\s?Supp\.|F\.\s?Supp\.\s?2d|F\.\s?Supp\.\s?3d|F\.\s?Supp\.\s?4th|F\.\s?App'x)\s+(\d+|_{3,}|-{3,})(?=\s|$|\(|,|;|\.)/g,description:`Federal Reporter (F., F.2d, F.3d, F.4th, F.Supp., F.App'x, etc.)`,type:`case`},{id:`supreme-court`,regex:/\b(\d+(?:-\d+)?)\s+(U\.\s?S\.|S\.\s?Ct\.|L\.\s?Ed\.(?:\s?2d)?)\s+(?:\(\d+\s+[A-Z][A-Za-z.]+\)\s+)?(\d+|_{3,}|-{3,})(?=\s|$|\(|,|;|\.)/g,description:`U.S. Supreme Court reporters (with optional nominative reporter parenthetical)`,type:`case`},{id:`state-reporter`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z](?:(?! L\.[JQR\s])[A-Za-z.\d\s])+?)\s+(\d+|_{3,}|-{3,})(?=\s|$|\(|,|;|\.)/g,description:`State reporters (broad pattern allowing multi-word reporters, excludes journal patterns with " L.J/Q/Rev", validated against reporters-db in Phase 3)`,type:`case`}],mt=[{id:`law-review`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.\s]+)\s+(\d+)\b/g,description:`Law review citations (e.g., "120 Harv. L. Rev. 500"), validated against journals-db in Phase 3`,type:`journal`}],ht=[{id:`state-vendor-neutral`,regex:/\b(\d{4})\s+([A-Z]{2}(?:\s+App\.?)?)\s+(\d+)\b/g,description:`State vendor-neutral citations (e.g., "2007 UT 49", "2017 WI 17", "2013 IL 112116")`,type:`neutral`},{id:`westlaw`,regex:/\b(\d{4})\s+WL\s+(\d+)\b/g,description:`WestLaw citations (e.g., "2021 WL 123456")`,type:`neutral`},{id:`lexis`,regex:/\b(\d{4})\s+U\.S\.(?:\s+(?:App|Dist)\.)?\s+LEXIS\s+(\d+)\b/g,description:`LexisNexis citations (e.g., "2021 U.S. LEXIS 5000", "2021 U.S. App. LEXIS 12345", "2021 U.S. Dist. LEXIS 67890")`,type:`neutral`},{id:`public-law`,regex:/\bPub\.\s?L\.(?:\s?No\.)?\s?(\d+-\d+)\b/g,description:`Public Law citations (e.g., "Pub. L. No. 117-58" or "Pub. L. 116-283")`,type:`publicLaw`},{id:`federal-register`,regex:/\b(\d+(?:-\d+)?)\s+Fed\.\s?Reg\.\s+(\d+)\b/g,description:`Federal Register citations (e.g., "86 Fed. Reg. 12345")`,type:`federalRegister`},{id:`statutes-at-large`,regex:/\b(\d+(?:-\d+)?)\s+Stat\.\s+(\d+)\b/g,description:`Statutes at Large citations (e.g., "124 Stat. 119")`,type:`statutesAtLarge`},{id:`compact-law-review`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.]+L\.(?:Rev|J|Q)\.)\s+(\d+)\b/g,description:`Compact law review citations without spaces (e.g., "93 Harv.L.Rev. 752")`,type:`journal`}],gt=[{id:`id`,regex:/(?:^|(?<=\s)|(?<=["'(\[—]))\b[Ii]d\.(?:,?\s+at\s+(\d+(?:\s*[-–]\s*\d+)?))?/g,description:`Id. citations (e.g., "Id." or "Id. at 253")`,type:`case`},{id:`ibid`,regex:/(?:^|(?<=\s)|(?<=["'(\[—]))\b[Ii]bid\.(?:,?\s+at\s+(\d+(?:\s*[-–]\s*\d+)?))?/g,description:`Ibid. citations (e.g., "Ibid." or "Ibid. at 125")`,type:`case`},{id:`supra`,regex:/\b([A-Z][a-zA-Z''\-]+\.?(?:(?:\s+v\.?\s+|\s+)[A-Z][a-zA-Z''\-]+\.?)*)\s*,?\s+supra(?:\s+note\s+(\d+))?(?:,?\s+at\s+(\d+))?/g,description:`Supra citations (e.g., "Smith, supra" or "Smith, supra, at 460")`,type:`case`},{id:`supra`,regex:/(?:^|(?<=\s)|(?<=[;.]))supra(?:\s+note\s+(\d+)(?:,?\s+at\s+(\d+))?|\s+at\s+(\d+)|\s+(?:§+|Part|p\.)\s*\S+)/g,description:`Standalone supra (e.g., "supra note 12" or "supra at 15")`,type:`case`},{id:`shortFormCase`,regex:/\b(\d+(?:-\d+)?)\s+([A-Z][A-Za-z.''\s]+?(?:\d[a-z]{1,2})?)\s*,?\s+at\s+(\d+)\b/g,description:`Short-form case citations (e.g., "500 F.2d at 125")`,type:`case`}],_t=[{id:`usc`,regex:/\b(\d+)\s+(?:U\.S\.C\.?|USC)\s*§§?\s*(\d+[A-Za-z0-9-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`U.S. Code citations with optional subsections and et seq. (e.g., "42 U.S.C. § 1983(a)(1) et seq.")`,type:`statute`},{id:`cfr`,regex:/\b(\d+)\s+C\.?F\.?R\.?\s*(?:(?:Part|pt\.)\s+|§§?\s*)(\d+(?:\.\d+)?[A-Za-z0-9-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Code of Federal Regulations with Part or §, subsections, et seq. (e.g., "12 C.F.R. Part 226", "40 C.F.R. § 122.26(b)(14)")`,type:`statute`},{id:`prose`,regex:/\b[Ss]ection\s+(\d+[A-Za-z0-9-]*(?:\([^)]*\))*)\s+of\s+title\s+(\d+)\b/g,description:`Prose-form federal citations (e.g., "section 1983 of title 42"). Note: MD-style "section X of the Y Article" deferred to PR 3.`,type:`statute`},{id:`named-code`,regex:/\b(N\.?\s*Y\.?|Cal(?:ifornia)?\.?|Tex(?:as)?\.?|Md\.?|(?<!W\.?\s?)Va\.?|Ala(?:bama)?\.?)\s+((?:[A-Za-z.&',\s]+?))\s*§§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Named-code state citations (NY, CA, TX, MD, VA, AL) with jurisdiction prefix + code name + §`,type:`statute`},{id:`mass-chapter`,regex:/\b(Mass\.?\s*Gen\.?\s*Laws|M\.?G\.?L\.?A?\.?|A\.?L\.?M\.?|G\.?\s*L\.?)\s+(?:ch\.?|c\.?)\s*(\w+),?\s*§\s*([\w./-]+(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Massachusetts chapter-based citations (e.g., "Mass. Gen. Laws ch. 93A, § 2")`,type:`statute`},{id:`chapter-act`,regex:/\b(\d+)\s+(?:ILCS|Ill\.?\s*Comp\.?\s*Stat\.?)\s*(?:Ann\.?\s+)?(\d+)\/([^\s(]+(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)/g,description:`Illinois Compiled Statutes chapter-act citations (e.g., "735 ILCS 5/2-1001")`,type:`statute`},{id:`abbreviated-code`,regex:e(),description:`Abbreviated state code citations for all US jurisdictions`,type:`statute`}];function vt(e,t=[...pt,..._t,...mt,...ht,...gt]){let n=[];for(let r of t)try{let t=e.matchAll(r.regex);for(let e of t)n.push({text:e[0],span:{cleanStart:e.index,cleanEnd:e.index+e[0].length},type:r.type,patternId:r.id})}catch(e){console.warn(`Pattern ${r.id} threw error, skipping:`,e instanceof Error?e.message:String(e))}return n.sort((e,t)=>e.span.cleanStart-t.span.cleanStart),n}var yt=class{root=null;nextOrder=0;distanceFn;constructor(e){this.distanceFn=e}insert(e){let t={key:e,insertionOrder:this.nextOrder++,children:new Map};if(this.root===null){this.root=t;return}let n=this.root;for(;;){let r=this.distanceFn(e,n.key);if(r===0)return;let i=n.children.get(r);if(i)n=i;else{n.children.set(r,t);return}}}query(e,t){if(this.root===null)return[];let n=[],r=[this.root],i;for(;i=r.pop();){let a=this.distanceFn(e,i.key);a<=t&&n.push({key:i.key,distance:a,insertionOrder:i.insertionOrder});let o=a-t,s=a+t;for(let[e,t]of i.children)e>=o&&e<=s&&r.push(t)}return n.sort((e,t)=>e.distance-t.distance||e.insertionOrder-t.insertionOrder),n}};function bt(e,t,n=1/0){if(e.length===0)return Math.min(t.length,n+1);if(t.length===0)return Math.min(e.length,n+1);let r=e.length<=t.length?e:t,i=e.length<=t.length?t:e,a=r.length,o=Array.from({length:a+1},(e,t)=>t),s=Array(a+1);for(let e=1;e<=i.length;e++){s[0]=e;let t=e;for(let n=1;n<=a;n++)i[e-1]===r[n-1]?s[n]=o[n-1]:s[n]=1+Math.min(o[n],s[n-1],o[n-1]),s[n]<t&&(t=s[n]);if(t>n)return n+1;let c=o;o=s,s=c}return o[a]}function xt(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;e[i]<=t?n=i+1:r=i}return n}function St(e,t,n=/\n\n+/g){let r=new Map,i=[0],a;for(;(a=n.exec(e))!==null;)i.push(a.index+a[0].length);i.push(e.length);for(let e=0;e<t.length;e++){let n=t[e].span.originalStart;r.set(e,xt(i,n)-1)}return r}function Ct(e,t){let n=new Map;for(let r=0;r<e.length;r++){let i=e[r].span.cleanStart,a=0,o=0,s=t.length-1;for(;o<=s;){let e=o+s>>>1,n=t[e];if(i<n.start)s=e-1;else if(i>=n.end)o=e+1;else{a=n.footnoteNumber;break}}n.set(r,a)}return n}function wt(e,t,n,r,i=!1){if(r===`none`)return!0;let a=n.get(e),o=n.get(t);return!!(a===void 0||o===void 0||a===o||r===`footnote`&&i&&a===0)}var Tt=class{citations;text;options;context;partyNameTree;constructor(e,t,n={}){this.citations=e,this.text=t,this.options={scopeStrategy:n.scopeStrategy??`none`,autoDetectParagraphs:n.autoDetectParagraphs??!0,paragraphBoundaryPattern:n.paragraphBoundaryPattern??/\n\n+/g,fuzzyPartyMatching:n.fuzzyPartyMatching??!0,partyMatchThreshold:n.partyMatchThreshold??.8,reportUnresolved:n.reportUnresolved??!0,footnoteMap:n.footnoteMap},this.partyNameTree=new yt(bt),this.context={citationIndex:0,allCitations:e,lastResolvedIndex:void 0,fullCitationHistory:new Map,paragraphMap:new Map},this.options.autoDetectParagraphs&&(this.context.paragraphMap=St(t,e,this.options.paragraphBoundaryPattern)),this.options.scopeStrategy===`footnote`&&this.options.footnoteMap&&(this.context.paragraphMap=Ct(e,this.options.footnoteMap))}resolve(){let e=[];for(let t=0;t<this.citations.length;t++){this.context.citationIndex=t;let n=this.citations[t],r;switch(n.type){case`id`:r=this.resolveId(n);break;case`supra`:r=this.resolveSupra(n);break;case`shortFormCase`:r=this.resolveShortFormCase(n);break;default:i(n)&&(this.context.lastResolvedIndex=t,this.trackFullCitation(n,t));break}r?.resolvedTo!==void 0&&(this.context.lastResolvedIndex=r.resolvedTo),e.push({...n,resolution:r})}return e}resolveId(e){let t=this.context.citationIndex,n=this.context.lastResolvedIndex;return n===void 0?this.createFailureResult(`No preceding citation found`):this.isWithinScope(n,t)?{resolvedTo:n,confidence:1}:this.createFailureResult(`Antecedent citation outside scope boundary`)}resolveSupra(e){if(!e.partyName)return;let t=this.context.citationIndex,n=this.normalizePartyName(e.partyName),r=n.length,i=this.options.partyMatchThreshold,a=r===0?0:Math.ceil(r*(1-i)/i),o=this.partyNameTree.query(n,a);o.sort((e,t)=>e.insertionOrder-t.insertionOrder);let s;for(let e of o){let n=this.context.fullCitationHistory.get(e.key);if(n===void 0||!this.isWithinScope(n,t,!0))continue;let i=Math.max(r,e.key.length),a=i===0?1:1-e.distance/i;(!s||a>s.similarity)&&(s={index:n,similarity:a})}if(!s)return this.createFailureResult(`No full citation found in scope`);if(s.similarity<this.options.partyMatchThreshold)return this.createFailureResult(`Party name similarity ${s.similarity.toFixed(2)} below threshold ${this.options.partyMatchThreshold}`);let c=[];return s.similarity<1&&c.push(`Fuzzy match: similarity ${s.similarity.toFixed(2)}`),{resolvedTo:s.index,confidence:s.similarity,warnings:c.length>0?c:void 0}}resolveShortFormCase(e){let t=this.context.citationIndex;for(let n=t-1;n>=0;n--){let r=this.citations[n];if(r.type===`case`&&r.volume===e.volume&&this.normalizeReporter(r.reporter)===this.normalizeReporter(e.reporter))return this.isWithinScope(n,t,!0)?{resolvedTo:n,confidence:.95}:this.createFailureResult(`Matching citation outside scope boundary`)}return this.createFailureResult(`No matching full case citation found`)}trackFullCitation(e,t){if(e.type===`case`&&(e.defendantNormalized&&(this.context.fullCitationHistory.set(e.defendantNormalized,t),this.partyNameTree.insert(e.defendantNormalized)),e.plaintiffNormalized&&(this.context.fullCitationHistory.set(e.plaintiffNormalized,t),this.partyNameTree.insert(e.plaintiffNormalized)),!e.plaintiffNormalized&&!e.defendantNormalized)){let n=this.extractPartyName(e);if(n){let e=this.normalizePartyName(n);this.context.fullCitationHistory.set(e,t),this.partyNameTree.insert(e)}}}extractPartyName(e){let t=e.span.originalStart,n=Math.max(0,t-100),r=this.text.substring(n,t),i=r.match(/([A-Z][a-zA-Z]*(?:\s+[A-Z][a-zA-Z]*)*)\s+v\.?\s+[A-Z][a-zA-Z]*(?:\s+[A-Z][a-zA-Z]*)*,\s*$/);if(i)return this.stripSignalWords(i[1].trim());let a=r.match(/([A-Z][a-zA-Z]*(?:\s+[A-Z][a-zA-Z]*)*),\s*$/);if(a)return this.stripSignalWords(a[1].trim())}stripSignalWords(e){let t=e.replace(/^(?:In(?!\s+re\b)|See(?:\s+[Aa]lso)?|Compare|But(?:\s+[Ss]ee)?|Cf\.?|Also)\s+/i,``).trim();return t.length>0?t:e}normalizePartyName(e){return e.toLowerCase().replace(/\s+/g,` `).trim()}normalizeReporter(e){return e.toLowerCase().replace(/\s+/g,``).replace(/\./g,``)}isWithinScope(e,t,n=!1){return wt(e,t,this.context.paragraphMap,this.options.scopeStrategy,n)}createFailureResult(e){if(this.options.reportUnresolved)return{resolvedTo:void 0,failureReason:e,confidence:0}}};function Et(e,t,n){return new Tt(e,t,n).resolve()}function Dt(e,t=``){let n=new Map;if(e.length===0||t===``)return n;let r=new Set;for(let i=0;i<e.length;i++){let a=e[i];if(a.type!==`case`||r.has(i))continue;let o=[];for(let n=i+1;n<e.length;n++){let s=e[n];if(s.type!==`case`)break;let c=(n===i+1?a:e[n-1]).span.cleanEnd,l=s.span.cleanStart;if(l-c>20)break;let u=t.substring(c,l);if(!u.includes(`,`))break;let d=u.indexOf(`,`);if(u.length-d-1>5||t.substring(a.span.cleanEnd,s.span.cleanEnd).includes(`)`)||!Ot(t,s.span.cleanEnd))break;o.push(n),r.add(n)}o.length>0&&n.set(i,o)}return n}function Ot(e,t){let n=e.substring(t,t+200),r=n.indexOf(`(`);if(r===-1)return!1;let i=0;for(let e=r;e<n.length;e++)if(n[e]===`(`)i++;else if(n[e]===`)`&&(i--,i===0))return!0;return!1}const X=kt();function kt(){return[{regex:/^see\s+generally\b/i,signal:`see generally`},{regex:/^see\s+also\b/i,signal:`see also`},{regex:/^but\s+see\b/i,signal:`but see`},{regex:/^but\s+cf\.?(?=\s|$)/i,signal:`but cf`},{regex:/^compare\b/i,signal:`compare`},{regex:/^accord\b/i,signal:`accord`},{regex:/^contra\b/i,signal:`contra`},{regex:/^see\b/i,signal:`see`},{regex:/^cf\.?(?=\s|$)/i,signal:`cf`}].map(({regex:e,signal:t})=>({regex:e,endRegex:RegExp(`${e.source.replace(/^\^/,`(?<![a-z])`)}\\s*$`,e.flags),signal:t}))}function At(e){let t=`fullSpan`in e?e.fullSpan:void 0;return t?t.cleanEnd:e.span.cleanEnd}function Z(e){let t=`fullSpan`in e?e.fullSpan:void 0;return t?t.cleanStart:e.span.cleanStart}function Q(e,t){e.signal=t}function jt(e){let t=e.trimStart();for(let{regex:e,signal:n}of X){let r=e.exec(t);if(r)return{signal:n,length:r[0].length}}}function Mt(e){let t=e.indexOf(`;`);if(t===-1||e.substring(0,t).trim()!==``)return{valid:!1};let n=e.substring(t+1).trim();if(n===``)return{valid:!0};let r=jt(n);return r&&n.substring(r.length).trim()===``?{valid:!0,signal:r.signal}:{valid:!1}}function Nt(e,t){if(e.length<2)return;let n=[],r=[];for(let i=0;i<e.length-1;i++){let a=e[i],o=e[i+1];if(o.type===`case`&&o.subsequentHistoryOf){r.length>=2&&n.push(r),r=[];continue}if(a.type===`case`&&a.subsequentHistoryOf)continue;let s=At(a),c=Z(o);if(c<=s){r.length>=2&&n.push(r),r=[];continue}let l=Mt(t.substring(s,c));l.valid?(r.length===0&&r.push(i),r.push(i+1),l.signal&&!o.signal&&Q(o,l.signal)):(r.length>=2&&n.push(r),r=[])}r.length>=2&&n.push(r);for(let t=0;t<n.length;t++){let r=n[t];if(r.length<2)continue;let i=`sc-${t}`;for(let t=0;t<r.length;t++){let n=e[r[t]];n.stringCitationGroupId=i,n.stringCitationIndex=t,n.stringCitationGroupSize=r.length}}for(let r of n){if(r.length<2)continue;let n=e[r[0]];if(n.signal)continue;let i=Math.max(0,Z(n)-60),a=t.substring(i,Z(n)).trim();for(let{endRegex:e,signal:t}of X)if(e.test(a)){Q(n,t);break}}}function Pt(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(r.signal&&r.stringCitationGroupId)continue;let i=n>0?At(e[n-1]):0,a=r.span.cleanStart;if(a<=i)continue;let o=t.substring(i,a),s=[];for(let{signal:e}of X){let t=e.replace(/\./g,`\\.`).replace(/\s+/g,`\\s+`),n=RegExp(`(?<![a-zA-Z])(${t})(?![a-zA-Z])`,`gi`),r;for(;(r=n.exec(o))!==null;)s.push({signal:e,start:r.index,end:r.index+r[0].length})}if(s.length===0)continue;s.sort((e,t)=>{let n=t.end-e.end;return n===0?t.end-t.start-(e.end-e.start):n});let c=s[0];for(let e of s)e.start<=c.start&&e.end>=c.end&&(c=e);Q(r,c.signal)}}const $=1750,Ft=.1,It=new Set([`i.c.j.`,`u.n.t.s.`,`i.l.m.`,`i.l.r.`,`p.c.i.j.`,`a.c.`,`w.l.r.`,`all e.r.`,`q.b.`,`k.b.`,`ch.`,`co. rep.`,`e.c.r.`,`e.h.r.r.`,`c.m.l.r.`,`edw.`]);function Lt(e){if(e.type===`case`||e.type===`shortFormCase`)return e.reporter;if(e.type===`journal`)return e.abbreviation}function Rt(e){switch(e.type){case`case`:return e.year;case`journal`:return e.year;case`federalRegister`:return e.year;case`statutesAtLarge`:return e.year;default:return}}const zt=new Set([`court`,`rule`,`section`,`chapter`,`article`,`part`,`title`,`paragraph`,`clause`,`amendment`,`dismissed`,`granted`,`denied`,`filed`,`argued`]);function Bt(e){return!!(e.toLowerCase().split(/\s+/).some(e=>zt.has(e))||!e.includes(`.`)&&e.length>12)}const Vt=new Set(`the.a.an.in.on.at.but.and.for.by.to.with.from.as.if.so.nor.yet.not.no.then.when.where.who.what.how.that.this.these.those.he.she.it.they.we.his.her.its.their.our.was.were.is.are.has.had.been.being.did.does.do.may.shall.will.would.could.should.held.said.found.made.took.gave.see.also.january.february.march.april.june.july.august.september.october.november.december`.split(`.`)),Ht=2e3,Ut=/^\d{1,2}-\d{4,}$/;function Wt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e;return typeof t.volume==`number`?t.volume>Ht:!1}function Gt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e,n=String(t.volume);return Ut.test(n)}function Kt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e,n=typeof t.volume==`number`?t.volume:Number.parseInt(String(t.volume),10);if(Number.isNaN(n)||n<1||n>20)return!1;let i=t.reporter;if(!i)return!1;let a=r();return a?(a.byAbbreviation.get(i.toLowerCase())??[]).length===0:i.includes(`.`)?!1:i.toLowerCase().split(/\s+/).some(e=>Vt.has(e))}function qt(e){let t=Lt(e);if(t&&It.has(t.toLowerCase().trim())||t&&(e.type===`case`||e.type===`shortFormCase`)&&Bt(t)||Wt(e)||Gt(e)||Kt(e))return!0;let n=Rt(e);return n!==void 0&&n<$}function Jt(e){let t=[],n=Lt(e);if(n){let r=n.toLowerCase().trim();It.has(r)&&t.push(`Reporter "${n}" is a known non-US source`),(e.type===`case`||e.type===`shortFormCase`)&&Bt(n)&&t.push(`Reporter "${n}" contains prose words or is implausibly long`)}if(Wt(e)){let n=e;t.push(`Volume ${n.volume} exceeds maximum plausible volume (${Ht}) — likely a zip code or other number`)}if(Gt(e)){let n=e;t.push(`Hyphenated volume "${n.volume}" matches docket number pattern — likely a case number, not a citation volume`)}if(Kt(e)){let n=e;t.push(`Small volume (${n.volume}) with unrecognized reporter "${n.reporter}" — likely a paragraph or footnote marker`)}let r=Rt(e);return r!==void 0&&r<$&&t.push(`Year ${r} predates US legal reporting (threshold: ${$})`),t}function Yt(e,t){if(t)return e.filter(e=>!qt(e));for(let t of e){if(t.confidence===Ft&&t.warnings?.length)continue;let e=Jt(t);if(e.length>0){t.confidence=Ft;let n=e.map(e=>({level:`warning`,message:e,position:{start:t.span.originalStart,end:t.span.originalEnd}}));t.warnings=[...t.warnings||[],...n]}}return e}const Xt=/^(\S+)\s+(.+)\s+(\d+)$/;function Zt(e,t){let n=performance.now(),{cleaned:r,transformationMap:i,warnings:a}=S(e,t?.cleaners),o;if(t?.detectFootnotes){let t=j(e);t.length>0&&(o=N(t,i))}let s=vt(r,t?.patterns||[...ht,...gt,...pt,...Me,..._t,...mt]),c=[],l=new Set,u=r.length<65536;for(let e of s){let t=u?e.span.cleanStart<<16|e.span.cleanEnd:`${e.span.cleanStart}-${e.span.cleanEnd}`;l.has(t)||(l.add(t),c.push(e))}let d=Dt(c,r),f=new Map;for(let[e,t]of d.entries())for(let n of t)f.set(n,e);let p=[];for(let e=0;e<c.length;e++){let t=c[e],o;switch(t.type){case`case`:o=t.patternId===`id`||t.patternId===`ibid`?We(t,i,r):t.patternId===`supra`?Ge(t,i):t.patternId===`shortFormCase`?Ke(t,i):Ae(t,i,r);break;case`statute`:o=dt(t,i);break;case`journal`:o=Ve(t,i,r);break;case`neutral`:o=He(t,i);break;case`publicLaw`:o=Ue(t,i);break;case`federalRegister`:o=Be(t,i);break;case`statutesAtLarge`:o=ft(t,i);break;case`constitutional`:o=ze(t,i);break;default:continue}if(a.length>0&&(o.warnings=[...o.warnings||[],...a]),o.processTimeMs=performance.now()-n,o.type===`case`){let t=d.has(e),n=f.has(e);if(t||n){let r=c[n?f.get(e)??e:e],i=Xt.exec(r.text);if(i){let[,n,r,a]=i;if(o.groupId=`${n}-${r.replace(/\s+/g,`.`)}-${a}`,t){let t=d.get(e)??[];o.parallelCitations=t.map(e=>{let t=c[e],n=Xt.exec(t.text);if(n){let[,e,t,r]=n;return{volume:/^\d+$/.test(e)?Number.parseInt(e,10):e,reporter:t,page:Number.parseInt(r,10)}}return{volume:0,reporter:``,page:0}})}}}}p.push(o)}$t(p),Nt(p,r),Pt(p,r);let m=Yt(p,t?.filterFalsePositives??!1);return o&&P(m,o),t?.resolve?Et(m,e,o?{...t.resolutionOptions,footnoteMap:o}:t.resolutionOptions):m}async function Qt(e,t){return Zt(e,t)}function $t(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type!==`case`||!r.subsequentHistoryEntries)continue;let i=r.subsequentHistoryEntries,a=0;for(let r=n+1;r<e.length&&a<i.length;r++){let o=e[r];if(o.type!==`case`)continue;let s=i[a].signalSpan.cleanEnd;o.span.cleanStart>=s&&(t.push({parentIdx:n,childIdx:r,signal:i[a].signal}),a++)}}if(t.length===0)return;let n=new w(e.length);for(let e of t)n.union(e.parentIdx,e.childIdx);let r=new Map;for(let e of t)r.set(e.childIdx,e.signal);for(let[t,i]of n.components()){if(i.length===1)continue;let n=e[t];if(n.type!==`case`)continue;let a=[...n.subsequentHistoryEntries??[]];for(let n of i){if(n===t)continue;let i=e[n];if(i.type!==`case`)continue;let o=r.get(n);if(o&&(i.subsequentHistoryOf={index:t,signal:o},i.subsequentHistoryEntries)){for(let e of i.subsequentHistoryEntries)a.push({...e,order:a.length});i.subsequentHistoryEntries=void 0}}n.subsequentHistoryEntries=a}}export{Tt as DocumentResolver,Yt as applyFalsePositiveFilters,c as assertUnreachable,S as cleanText,j as detectFootnotes,Ae as extractCase,Zt as extractCitations,Qt as extractCitationsAsync,ze as extractConstitutional,Be as extractFederalRegister,Ve as extractJournal,He as extractNeutral,Ue as extractPublicLaw,dt as extractStatute,ft as extractStatutesAtLarge,o as isCaseCitation,s as isCitationType,i as isFullCitation,a as isShortFormCitation,re as normalizeCourt,H as parsePincite,Et as resolveCitations,l as spanFromGroupIndex,vt as tokenize};
2
2
  //# sourceMappingURL=index.mjs.map