eyecite-ts 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/annotate/index.d.cts +1 -1
- package/dist/annotate/index.d.mts +1 -1
- package/dist/{citation-Cp0M8pGK.d.cts → citation-CCExUh08.d.mts} +144 -2
- package/dist/citation-CCExUh08.d.mts.map +1 -0
- package/dist/{citation-GF9_w_kw.d.mts → citation-DEZNY4qH.d.cts} +144 -2
- package/dist/citation-DEZNY4qH.d.cts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +13 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/{types-BCj-F1CQ.d.mts → types-6BYsuJiz.d.mts} +2 -8
- package/dist/types-6BYsuJiz.d.mts.map +1 -0
- package/dist/{types-DsYwn8kp.d.cts → types-Q1_sllNN.d.cts} +2 -8
- package/dist/types-Q1_sllNN.d.cts.map +1 -0
- package/dist/utils/index.d.cts +2 -2
- package/dist/utils/index.d.mts +2 -2
- package/package.json +1 -1
- package/dist/citation-Cp0M8pGK.d.cts.map +0 -1
- package/dist/citation-GF9_w_kw.d.mts.map +0 -1
- package/dist/types-BCj-F1CQ.d.mts.map +0 -1
- package/dist/types-DsYwn8kp.d.cts.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
import { a as FootnoteMap, i as ScopeStrategy, n as ResolutionResult, o as FootnoteZone, r as ResolvedCitation, t as ResolutionOptions } from "./types-
|
|
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
|
|
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
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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":";;;;;;;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;;;;;;;;;
|
|
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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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
import { a as FootnoteMap, i as ScopeStrategy, n as ResolutionResult, o as FootnoteZone, r as ResolvedCitation, t as ResolutionOptions } from "./types-
|
|
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
|
|
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
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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":";;;;;;;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;;;;;;;;;
|
|
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,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){return e.replace(/<[^>]+>/g,``)}function u(e){return e.replace(/(\w)-\s*[\n\r]+\s*(\w)/g,`$1$2`)}function d(e){return e.replace(/[\t\n\r\u00A0\u2000-\u200A\u202F\u205F\u3000]/g,` `)}function f(e){return e.replace(/ {2,}/g,` `)}function p(e){return e.normalize(`NFKC`)}function m(e){return e.replace(/[\u201C\u201D]/g,`"`).replace(/[\u2018\u2019]/g,`'`)}function h(e){return e.replace(/[\u2014\u2015]/g,`---`).replace(/[\u2010\u2012\u2013]/g,`-`)}function g(e){return e.replace(/§/gi,`§`).replace(/¶/gi,`¶`).replace(/&/gi,`&`).replace(/ /gi,` `).replace(/</gi,`<`).replace(/>/gi,`>`).replace(/"/gi,`"`).replace(/'/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 _(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 v(e){return e.replace(/[\u2032\u2035]/g,`'`).replace(/\u200B|\u200C|\u200D|\u2060|\uFEFF/g,``)}var y=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 b(e,t=[l,g,u,d,f,p,h,m,v,_]){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}=x(t,a,r,i);r=e,i=o,n=a}}let a={cleanToOriginal:r,originalToClean:i,cleanToOriginalSegments:y.fromMap(r)};return{cleaned:n,transformationMap:a,warnings:[]}}function x(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 S=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 C(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 w(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 T(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=w(e,n[1]||n[2],a);if(!o)continue;let s=C(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 E=/^\s*[-_]{5,}\s*$/m;function D(e){let t=E.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 O=/<[^>]+>/;function k(e){if(O.test(e)){let t=T(e);if(t.length>0)return t}return D(e)}function A(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 j(e,t){return e.length===0?[]:e.map(e=>({start:t.originalToClean.get(e.start)??A(e.start,t.originalToClean,`forward`)??e.start,end:t.originalToClean.get(e.end)??A(e.end,t.originalToClean,`backward`)??e.end,footnoteNumber:e.footnoteNumber}))}function M(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 N(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 P={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 F(e){let t=P[e.toLowerCase().replace(/\.$/,``)];if(t===void 0)throw Error(`Invalid month name: ${e}`);return t}function I(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 L(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=F(t[1]),n=Number.parseInt(t[2],10),r={year:Number.parseInt(t[3],10),month:e,day:n};return{iso:I(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=F(n[1]),t=Number.parseInt(n[2],10),r={year:Number.parseInt(n[3],10),month:e,day:t};return{iso:I(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:I(n),parsed:n}}let i=e.match(/\b(\d{4})\b/);if(i){let e={year:Number.parseInt(i[1],10)};return{iso:I(e),parsed:e}}}function R(e){return{level:e,jurisdiction:`federal`,confidence:1}}function z(e,t){return{level:e,jurisdiction:`state`,state:t,confidence:1}}function B(e){return{level:e,jurisdiction:`state`,confidence:.7}}const V=new Map([[`U.S.`,R(`supreme`)],[`S.Ct.`,R(`supreme`)],[`L.Ed.`,R(`supreme`)],[`L.Ed.2d`,R(`supreme`)],[`S. Ct.`,R(`supreme`)],[`L. Ed.`,R(`supreme`)],[`L. Ed. 2d`,R(`supreme`)],[`U. S.`,R(`supreme`)],[`L.Ed. 2d`,R(`supreme`)],[`L. Ed.2d`,R(`supreme`)],[`F.`,R(`appellate`)],[`F.2d`,R(`appellate`)],[`F.3d`,R(`appellate`)],[`F.4th`,R(`appellate`)],[`F. App'x`,R(`appellate`)],[`F.Supp.`,R(`trial`)],[`F.Supp.2d`,R(`trial`)],[`F.Supp.3d`,R(`trial`)],[`F.Supp.4th`,R(`trial`)],[`F. Supp.`,R(`trial`)],[`F. Supp. 2d`,R(`trial`)],[`F. Supp. 3d`,R(`trial`)],[`F. Supp. 4th`,R(`trial`)],[`F.R.D.`,R(`trial`)],[`B.R.`,R(`trial`)],[`Cal.`,z(`supreme`,`CA`)],[`Cal.2d`,z(`supreme`,`CA`)],[`Cal.3d`,z(`supreme`,`CA`)],[`Cal.4th`,z(`supreme`,`CA`)],[`Cal.5th`,z(`supreme`,`CA`)],[`Cal.App.`,z(`appellate`,`CA`)],[`Cal.App.2d`,z(`appellate`,`CA`)],[`Cal.App.3d`,z(`appellate`,`CA`)],[`Cal.App.4th`,z(`appellate`,`CA`)],[`Cal.App.5th`,z(`appellate`,`CA`)],[`Cal.Rptr.`,z(`unknown`,`CA`)],[`Cal.Rptr.2d`,z(`unknown`,`CA`)],[`Cal.Rptr.3d`,z(`unknown`,`CA`)],[`N.Y.`,z(`supreme`,`NY`)],[`N.Y.2d`,z(`supreme`,`NY`)],[`N.Y.3d`,z(`supreme`,`NY`)],[`A.D.`,z(`appellate`,`NY`)],[`A.D.2d`,z(`appellate`,`NY`)],[`A.D.3d`,z(`appellate`,`NY`)],[`Misc.`,z(`trial`,`NY`)],[`Misc.2d`,z(`trial`,`NY`)],[`Misc.3d`,z(`trial`,`NY`)],[`N.Y.S.`,z(`unknown`,`NY`)],[`N.Y.S.2d`,z(`unknown`,`NY`)],[`N.Y.S.3d`,z(`unknown`,`NY`)],[`Ill.`,z(`supreme`,`IL`)],[`Ill.2d`,z(`supreme`,`IL`)],[`Ill.App.`,z(`appellate`,`IL`)],[`Ill.App.2d`,z(`appellate`,`IL`)],[`Ill.App.3d`,z(`appellate`,`IL`)],[`Ill.Dec.`,z(`unknown`,`IL`)],[`Ohio St.`,z(`supreme`,`OH`)],[`Ohio St.2d`,z(`supreme`,`OH`)],[`Ohio St.3d`,z(`supreme`,`OH`)],[`Ohio App.3d`,z(`appellate`,`OH`)],[`Pa.`,z(`supreme`,`PA`)],[`Pa. Super.`,z(`appellate`,`PA`)],[`Tex.`,z(`supreme`,`TX`)],[`Fla.`,z(`supreme`,`FL`)],[`Mass.`,z(`supreme`,`MA`)],[`Mass. App. Ct.`,z(`appellate`,`MA`)],[`A.`,B(`unknown`)],[`A.2d`,B(`unknown`)],[`A.3d`,B(`unknown`)],[`S.E.`,B(`unknown`)],[`S.E.2d`,B(`unknown`)],[`S.E.3d`,B(`unknown`)],[`S.W.`,B(`unknown`)],[`S.W.2d`,B(`unknown`)],[`S.W.3d`,B(`unknown`)],[`N.E.`,B(`unknown`)],[`N.E.2d`,B(`unknown`)],[`N.E.3d`,B(`unknown`)],[`N.W.`,B(`unknown`)],[`N.W.2d`,B(`unknown`)],[`N.W.3d`,B(`unknown`)],[`So.`,B(`unknown`)],[`So.2d`,B(`unknown`)],[`So.3d`,B(`unknown`)],[`P.`,B(`unknown`)],[`P.2d`,B(`unknown`)],[`P.3d`,B(`unknown`)]]);function ee(e){return V.get(e)}const te=/^(?:at\s+)?(\d+)(?:[-–—](\d+))?\s*(?:(?:n|note)\s*\.?\s*(\d+))?$/i;function H(e){let t=e.trim();if(!t)return null;let n=te.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 ne=new Set([`see`,`see also`,`see generally`,`cf`,`but see`,`but cf`,`compare`,`accord`,`contra`]),re=(()=>{let e=[...ne].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 ae=/(?: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)\.?/,oe=new Date().getFullYear(),se=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(`,`)),ce=/^(\d+(?:-\d+)?)\s+([A-Za-z0-9.\s']+)\s+(?:\((\d+)\s+([A-Z][A-Za-z.]+)\)\s+)?(\d+|_{3,}|-{3,})/,le=/^[_-]{3,}$/,ue=/,\s*(\d+)/,de=/\(([^)]+)\)/,fe=/^(?:,\s*\d+(?:-\d+)?)*(?:\s+(?:n|note)\s*\.?\s*\d+)?\s*\(([^)]+)\)/,pe=/^,\s*(\d+(?:-\d+)?)/,me=/\d\.\s+/g,he=/[\s,]/,ge=/^(?:,\s*\d+(?:[-–—]\d+)?(?:\s+(?:n|note)\s*\.?\s*\d+)?)+/,_e=[[/^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 ve(e){for(let[t,n]of _e){let r=t.exec(e);if(r)return{signal:n,matchLength:r[0].length}}}const ye=new Set([`holding`,`finding`,`stating`,`noting`,`explaining`,`quoting`,`citing`,`discussing`,`describing`,`recognizing`,`applying`,`rejecting`,`adopting`,`requiring`]);function be(e){return ye.has(e)}const xe=/^([a-z]+)\b/i,Se=/([A-Z][A-Za-z0-9\s.,'&()/-]+?)\s+v(?:s)?\.?\s+([A-Za-z0-9\s.,'&()/-]+?)\s*,\s*$/,Ce=/\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 we(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*${ae.source}\\s*$`,`i`),``).trim(),t=t.replace(/,\s*$/,``).trim(),t&&/[A-Za-z]/.test(t)?t:void 0}function Te(e,t,n=150){let r=Math.max(0,t-n),i=e.substring(r,t),a=r,o=-1,s;for(;(s=me.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=Se.exec(i);if(u&&!u[0].includes(`;`))return{caseName:`${u[1].trim()} v. ${u[2].trim()}`,nameStart:a+u.index};let d=Ce.exec(i);if(d&&!d[0].includes(`;`))return{caseName:`${d[1]} ${d[2].trim()}`,nameStart:a+d.index}}function Ee(e,t,n=500){let r=[],i=[],a=t,o=Math.min(e.length,t+n),s,c=e.substring(a,o),l=ge.exec(c);for(l&&(a+=l[0].length);a<o;){for(;a<o&&he.test(e[a]);)a++;if(a>=o||e[a]!==`(`){let t=e.substring(a,o),n=ve(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=L(e);n&&(t.date=n,t.year=n.parsed.year);let r=we(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 De(e){let t=xe.exec(e);if(t){let n=t[1].toLowerCase();if(be(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 Oe(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(re)??e.match(/^(Also|In(?!\s+re\b))\s+/i);if(i){let n=i[1].toLowerCase().replace(/\.$/,``);ne.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(e,t,n){let{text:i,span:a}=e,o=ce.exec(i);if(!o)throw Error(`Failed to parse case citation: ${i}`);let s=ie(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=le.test(d),p=f?void 0:Number.parseInt(d,10),m=f?!0:void 0,h=ue.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=de.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(n&&!w){let e=n.substring(a.cleanEnd),t=fe.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=pe.exec(e);t&&(g=Number.parseInt(t[1],10),_||=H(t[1])??void 0)}}}let E,D,O;if(n){O=Ee(n,a.cleanEnd),D=O.parens;let e=w?D.slice(1):D;for(let t of e){let e=De(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(n&&O&&O.signals.length>0)for(let e=0;e<O.signals.length;e++){let{signal:n}=O.signals[e];k??=[];let{originalStart:r,originalEnd:i}=N({cleanStart:n.start,cleanEnd:n.end},t);k.push({signal:n.normalized,rawSignal:n.text,signalSpan:{cleanStart:n.start,cleanEnd:n.end,originalStart:r,originalEnd:i},order:e})}let A=ee(c);if(!y&&A?.level===`supreme`&&A?.jurisdiction===`federal`&&(y=`scotus`),n){let e=Te(n,a.cleanStart);if(e){S=e.caseName;let n=D&&D.length>0?D[D.length-1].end:a.cleanEnd,r=e.nameStart,i=n;C={cleanStart:r,cleanEnd:i,originalStart:t.cleanToOriginal.get(r)??r,originalEnd:t.cleanToOriginal.get(i)??i}}}let j,M,P,F,I,L;if(S){let e=Oe(S);if(j=e.plaintiff,M=e.plaintiffNormalized,P=e.defendant,F=e.defendantNormalized,I=e.proceduralPrefix,L=e.signal,L&&j&&P&&(S=`${j} v. ${P}`,C)){let e=n?.substring(C.cleanStart,a.cleanStart)??``,r=e.trimStart(),i=e.length-r.length,o=re.exec(r);if(o){let e=C.cleanStart+i+o[0].length,n=t.cleanToOriginal.get(e)??e;C={...C,cleanStart:e,originalStart:n}}}}let{originalStart:R,originalEnd:z}=N(a,t),B=.2,V=r()?.byAbbreviation.get(c.toLowerCase());return(V&&V.length>0||se.has(c))&&(B+=.3),v!==void 0&&v<=oe&&(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:M,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+))?`}`,ke=new RegExp(q,`i`),Ae=[{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`}],je={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 Me(e){let t=e.toUpperCase();if(t in je)return je[t];let n=Number.parseInt(e,10);return Number.isNaN(n)?void 0:n}const Ne={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`},Pe=/amend|amdt/i,Fe=/^([A-Za-z]+(?:\.\s*[A-Za-z]+)?(?:\.\s*[A-Za-z]+)?)\.?\s+Const/i;function Ie(e){let t=Fe.exec(e);if(!t)return;let n=t[1].replace(/\s+/g,``).replace(/\.$/g,``).toLowerCase();if(n in Ne)return Ne[n]}function Le(e,t){let{text:n,span:r}=e,i=ke.exec(n),a,o,s,c;if(i){let e=Me(i[1]);Pe.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=Ie(n);break;default:l=void 0;break}let{originalStart:u,originalEnd:d}=N(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 Re(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}=N(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 ze(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}=N(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 Be(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}=N(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 Ve(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}=N(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 He(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}=N(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 Ue(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}=N(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 We(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}=N(r,t),d=.4;return se.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 Ge=/^([^(]+?)\s*((?:\([^)]*\))*)$/,Ke=/\s*et\s+seq\.?\s*$/i;function J(e){let t=e.replace(Ke,``),n=t!==e,r=t.trim(),i=Ge.exec(r),a=i?.[2];return i!==null&&a?{section:i[1].trim(),subsection:a,hasEtSeq:n}:{section:r,hasEtSeq:n}}const qe=/^(?:(\d+)\s+)?(.+?)\s*§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)$/;function Je(e,n){let{text:r,span:i}=e,a=qe.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}=N(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 Ye=/^(\d+)\s+(?:ILCS|Ill\.?\s*Comp\.?\s*Stat\.?)\s*(?:Ann\.?\s+)?(\d+)\/(.+)$/;function Xe(e,t){let{text:n,span:r}=e,i=Ye.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}=N(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 Ze=/^(\d+)\s+(\S+(?:\.\S+)*)\s*§§?\s*(.+)$/,Qe=/^(\d+)\s+(\S+(?:\.\S+)*)\s+(?:Part|pt\.)\s+(.+)$/;function $e(e,t){let{text:n,span:r}=e,i=Ze.exec(n)??Qe.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}=N(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 et=/^(N\.?\s*Y\.?|Cal(?:ifornia)?\.?|Tex(?:as)?\.?|Md\.?|Va\.?|Ala(?:bama)?\.?)\s+(.*?)\s*§§?\s*(.+)$/s,tt=/^(.*?)\s+(?:ch\.?|c\.?)\s*(\w+),?\s*§\s*(.+)$/,nt={"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 rt(e){return nt[e.toLowerCase().replace(/\s+/g,``)]}function it(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 at(e,t){let{text:r,span:i}=e,a,o,s;if(e.patternId===`mass-chapter`){let e=tt.exec(r);e?(a=`MA`,o=e[2],s=e[3]):(o=r,s=``)}else{let e=et.exec(r);if(e){a=rt(e[1]);let t=e[2],r=it(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}=N(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 ot=/[Ss]ection\s+(\d+[A-Za-z0-9-]*)((?:\([^)]*\))*)\s+of\s+title\s+(\d+)/;function st(e,t){let{text:n,span:r}=e,i=ot.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}=N(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 ct(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}=N(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}=N(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 lt(e,t){switch(e.patternId){case`usc`:case`cfr`:return $e(e,t);case`prose`:return st(e,t);case`abbreviated-code`:return Je(e,t);case`named-code`:case`mass-chapter`:return at(e,t);case`chapter-act`:return Xe(e,t);default:return ct(e,t)}}function ut(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}=N(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 dt=[{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`}],ft=[{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`}],pt=[{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`}],mt=[{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`}],ht=[{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 gt(e,t=[...dt,...ht,...ft,...pt,...mt]){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 _t=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 vt(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 yt(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 bt(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,yt(i,n)-1)}return r}function xt(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 St(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 Ct=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 _t(vt),this.context={citationIndex:0,allCitations:e,lastFullCitation:void 0,fullCitationHistory:new Map,paragraphMap:new Map},this.options.autoDetectParagraphs&&(this.context.paragraphMap=bt(t,e,this.options.paragraphBoundaryPattern)),this.options.scopeStrategy===`footnote`&&this.options.footnoteMap&&(this.context.paragraphMap=xt(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.lastFullCitation=t,this.trackFullCitation(n,t));break}e.push({...n,resolution:r})}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 St(e,t,this.context.paragraphMap,this.options.scopeStrategy,n)}createFailureResult(e){if(this.options.reportUnresolved)return{resolvedTo:void 0,failureReason:e,confidence:0}}};function wt(e,t,n){return new Ct(e,t,n).resolve()}function Tt(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(`)`)||!Et(t,s.span.cleanEnd))break;o.push(n),r.add(n)}o.length>0&&n.set(i,o)}return n}function Et(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=Dt();function Dt(){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 Ot(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 kt(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 At(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=kt(n);return r&&n.substring(r.length).trim()===``?{valid:!0,signal:r.signal}:{valid:!1}}function jt(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=Ot(a),c=X(o);if(c<=s){r.length>=2&&n.push(r),r=[];continue}let l=At(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 Mt(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(r.signal&&r.stringCitationGroupId)continue;let i=n>0?Ot(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,Nt=.1,Pt=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 Ft(e){if(e.type===`case`||e.type===`shortFormCase`)return e.reporter;if(e.type===`journal`)return e.abbreviation}function It(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 Lt=new Set([`court`,`rule`,`section`,`chapter`,`article`,`part`,`title`,`paragraph`,`clause`,`amendment`,`dismissed`,`granted`,`denied`,`filed`,`argued`]);function Rt(e){return!!(e.toLowerCase().split(/\s+/).some(e=>Lt.has(e))||!e.includes(`.`)&&e.length>12)}const zt=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(`.`)),$=2e3,Bt=/^\d{1,2}-\d{4,}$/;function Vt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e;return typeof t.volume==`number`?t.volume>$:!1}function Ht(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e,n=String(t.volume);return Bt.test(n)}function Ut(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=>zt.has(e))}function Wt(e){let t=Ft(e);if(t&&Pt.has(t.toLowerCase().trim())||t&&(e.type===`case`||e.type===`shortFormCase`)&&Rt(t)||Vt(e)||Ht(e)||Ut(e))return!0;let n=It(e);return n!==void 0&&n<Q}function Gt(e){let t=[],n=Ft(e);if(n){let r=n.toLowerCase().trim();Pt.has(r)&&t.push(`Reporter "${n}" is a known non-US source`),(e.type===`case`||e.type===`shortFormCase`)&&Rt(n)&&t.push(`Reporter "${n}" contains prose words or is implausibly long`)}if(Vt(e)){let n=e;t.push(`Volume ${n.volume} exceeds maximum plausible volume (${$}) — likely a zip code or other number`)}if(Ht(e)){let n=e;t.push(`Hyphenated volume "${n.volume}" matches docket number pattern — likely a case number, not a citation volume`)}if(Ut(e)){let n=e;t.push(`Small volume (${n.volume}) with unrecognized reporter "${n.reporter}" — likely a paragraph or footnote marker`)}let r=It(e);return r!==void 0&&r<Q&&t.push(`Year ${r} predates US legal reporting (threshold: ${Q})`),t}function Kt(e,t){if(t)return e.filter(e=>!Wt(e));for(let t of e){if(t.confidence===Nt&&t.warnings?.length)continue;let e=Gt(t);if(e.length>0){t.confidence=Nt;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 qt=/^(\S+)\s+(.+)\s+(\d+)$/;function Jt(e,t){let n=performance.now(),{cleaned:r,transformationMap:i,warnings:a}=b(e,t?.cleaners),o;if(t?.detectFootnotes){let t=k(e);t.length>0&&(o=j(t,i))}let s=gt(r,t?.patterns||[...pt,...mt,...dt,...Ae,...ht,...ft]),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=Tt(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`?He(t,i,r):t.patternId===`supra`?Ue(t,i):t.patternId===`shortFormCase`?We(t,i):K(t,i,r);break;case`statute`:o=lt(t,i);break;case`journal`:o=ze(t,i);break;case`neutral`:o=Be(t,i);break;case`publicLaw`:o=Ve(t,i);break;case`federalRegister`:o=Re(t,i);break;case`statutesAtLarge`:o=ut(t,i);break;case`constitutional`:o=Le(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=qt.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=qt.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)}Xt(p),jt(p,r),Mt(p,r);let m=Kt(p,t?.filterFalsePositives??!1);return o&&M(m,o),t?.resolve?wt(m,e,o?{...t.resolutionOptions,footnoteMap:o}:t.resolutionOptions):m}async function Yt(e,t){return Jt(e,t)}function Xt(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 S(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{Ct as DocumentResolver,Kt as applyFalsePositiveFilters,c as assertUnreachable,b as cleanText,k as detectFootnotes,K as extractCase,Jt as extractCitations,Yt as extractCitationsAsync,Le as extractConstitutional,Re as extractFederalRegister,ze as extractJournal,Be as extractNeutral,Ve as extractPublicLaw,lt as extractStatute,ut as extractStatutesAtLarge,o as isCaseCitation,s as isCitationType,i as isFullCitation,a as isShortFormCitation,U as normalizeCourt,H as parsePincite,wt as resolveCitations,gt 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(/§/gi,`§`).replace(/¶/gi,`¶`).replace(/&/gi,`&`).replace(/ /gi,` `).replace(/</gi,`<`).replace(/>/gi,`>`).replace(/"/gi,`"`).replace(/'/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}const Te=new Set([`this`,`that`,`these`,`those`,`here`,`there`,`such`,`its`,`his`,`her`,`their`,`our`]);function Ee(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 De(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)&&!Te.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 Oe(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=Ee(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 ke(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 Ae(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 je(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=Oe(n,a.cleanEnd),j=M.parens;let e=D?j.slice(1):j;for(let n of e){let e=ke(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=De(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=Ae(T);if(I=e.plaintiff,L=e.plaintiffNormalized,R=e.defendant,z=e.defendantNormalized,B=e.proceduralPrefix,V=e.signal,I&&R){let e=`${I} v. ${R}`;if(e!==T&&E&&n){T=e;let r=n.substring(E.cleanStart,a.cleanStart),i=/\s+v\.?\s+/i.exec(r);if(i){let e=r.substring(0,i.index).lastIndexOf(I);if(e!==-1){let n=E.cleanStart+e,r=t.cleanToOriginal.get(n)??n;E={...E,cleanStart:n,originalStart:r}}}if(F){let e=E.cleanStart,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=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+))?`}`,Me=new RegExp(J,`id`),Ne=[{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`}],Pe={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 Fe(e){let t=e.toUpperCase();if(t in Pe)return Pe[t];let n=Number.parseInt(e,10);return Number.isNaN(n)?void 0:n}const Ie={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`},Le=/amend|amdt/i,Re=/^([A-Za-z]+(?:\.\s*[A-Za-z]+)?(?:\.\s*[A-Za-z]+)?)\.?\s+Const/i;function ze(e){let t=Re.exec(e);if(!t)return;let n=t[1].replace(/\s+/g,``).replace(/\.$/g,``).toLowerCase();if(n in Ie)return Ie[n]}function Be(e,t){let{text:n,span:r}=e,i=Me.exec(n),a,o,s,c;if(i){let e=Fe(i[1]);Le.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=ze(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=Re.exec(n);if(e){let n=e[1].length+1;g.jurisdiction=l(r.cleanStart,[0,n],t)}}return i?.indices&&(Le.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 Ve(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 He(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 Ue(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 We(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 Ge(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 Ke(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 qe(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 Je=/^([^(]+?)\s*((?:\([^)]*\))*)$/,Ye=/\s*et\s+seq\.?\s*$/i;function Y(e){let t=e.replace(Ye,``),n=t!==e,r=t.trim(),i=Je.exec(r),a=i?.[2];return i!==null&&a?{section:i[1].trim(),subsection:a,hasEtSeq:n}:{section:r,hasEtSeq:n}}const Xe=/^(?:(\d+)\s+)?(.+?)\s*§?\s*(\d+[A-Za-z0-9.:/-]*(?:\([^)]*\))*(?:\s*et\s+seq\.?)?)$/d;function Ze(e,n){let{text:r,span:i}=e,a=Xe.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 Qe=/^(\d+)\s+(?:ILCS|Ill\.?\s*Comp\.?\s*Stat\.?)\s*(?:Ann\.?\s+)?(\d+)\/(.+)$/d;function $e(e,t){let{text:n,span:r}=e,i=Qe.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 et=/^(\d+)\s+(\S+(?:\.\S+)*)\s*§§?\s*(.+)$/d,tt=/^(\d+)\s+(\S+(?:\.\S+)*)\s+(?:Part|pt\.)\s+(.+)$/d;function nt(e,t){let{text:n,span:r}=e,i=et.exec(n)??tt.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 rt=/^(N\.?\s*Y\.?|Cal(?:ifornia)?\.?|Tex(?:as)?\.?|Md\.?|Va\.?|Ala(?:bama)?\.?)\s+(.*?)\s*§§?\s*(.+)$/ds,it=/^(.*?)\s+(?:ch\.?|c\.?)\s*(\w+),?\s*§\s*(.+)$/d,at={"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 ot(e){return at[e.toLowerCase().replace(/\s+/g,``)]}function st(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 ct(e,t){let{text:r,span:i}=e,a,o,s,c=null,d=null;if(e.patternId===`mass-chapter`)c=it.exec(r),c?(a=`MA`,o=c[2],s=c[3]):(o=r,s=``);else if(d=rt.exec(r),d){a=ot(d[1]);let e=d[2],t=st(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 lt=/[Ss]ection\s+(\d+[A-Za-z0-9-]*)((?:\([^)]*\))*)\s+of\s+title\s+(\d+)/d;function ut(e,t){let{text:n,span:r}=e,i=lt.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 dt(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 ft(e,t){switch(e.patternId){case`usc`:case`cfr`:return nt(e,t);case`prose`:return ut(e,t);case`abbreviated-code`:return Ze(e,t);case`named-code`:case`mass-chapter`:return ct(e,t);case`chapter-act`:return $e(e,t);default:return dt(e,t)}}function pt(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 mt=[{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`}],ht=[{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`}],gt=[{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`}],_t=[{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`}],vt=[{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 yt(e,t=[...mt,...vt,...ht,...gt,..._t]){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 bt=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 xt(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 St(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 Ct(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,St(i,n)-1)}return r}function wt(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 Tt(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 Et=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 bt(xt),this.context={citationIndex:0,allCitations:e,lastResolvedIndex:void 0,fullCitationHistory:new Map,paragraphMap:new Map},this.options.autoDetectParagraphs&&(this.context.paragraphMap=Ct(t,e,this.options.paragraphBoundaryPattern)),this.options.scopeStrategy===`footnote`&&this.options.footnoteMap&&(this.context.paragraphMap=wt(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 Tt(e,t,this.context.paragraphMap,this.options.scopeStrategy,n)}createFailureResult(e){if(this.options.reportUnresolved)return{resolvedTo:void 0,failureReason:e,confidence:0}}};function Dt(e,t,n){return new Et(e,t,n).resolve()}function Ot(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(`)`)||!kt(t,s.span.cleanEnd))break;o.push(n),r.add(n)}o.length>0&&n.set(i,o)}return n}function kt(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=At();function At(){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 jt(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 Mt(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 Nt(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=Mt(n);return r&&n.substring(r.length).trim()===``?{valid:!0,signal:r.signal}:{valid:!1}}function Pt(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=jt(a),c=Z(o);if(c<=s){r.length>=2&&n.push(r),r=[];continue}let l=Nt(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 Ft(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(r.signal&&r.stringCitationGroupId)continue;let i=n>0?jt(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,It=.1,Lt=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 Rt(e){if(e.type===`case`||e.type===`shortFormCase`)return e.reporter;if(e.type===`journal`)return e.abbreviation}function zt(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 Bt=new Set([`court`,`rule`,`section`,`chapter`,`article`,`part`,`title`,`paragraph`,`clause`,`amendment`,`dismissed`,`granted`,`denied`,`filed`,`argued`]);function Vt(e){return!!(e.toLowerCase().split(/\s+/).some(e=>Bt.has(e))||!e.includes(`.`)&&e.length>12)}const Ht=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(`.`)),Ut=2e3,Wt=/^\d{1,2}-\d{4,}$/;function Gt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e;return typeof t.volume==`number`?t.volume>Ut:!1}function Kt(e){if(e.type!==`case`&&e.type!==`shortFormCase`)return!1;let t=e,n=String(t.volume);return Wt.test(n)}function qt(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=>Ht.has(e))}function Jt(e){let t=Rt(e);if(t&&Lt.has(t.toLowerCase().trim())||t&&(e.type===`case`||e.type===`shortFormCase`)&&Vt(t)||Gt(e)||Kt(e)||qt(e))return!0;let n=zt(e);return n!==void 0&&n<$}function Yt(e){let t=[],n=Rt(e);if(n){let r=n.toLowerCase().trim();Lt.has(r)&&t.push(`Reporter "${n}" is a known non-US source`),(e.type===`case`||e.type===`shortFormCase`)&&Vt(n)&&t.push(`Reporter "${n}" contains prose words or is implausibly long`)}if(Gt(e)){let n=e;t.push(`Volume ${n.volume} exceeds maximum plausible volume (${Ut}) — likely a zip code or other number`)}if(Kt(e)){let n=e;t.push(`Hyphenated volume "${n.volume}" matches docket number pattern — likely a case number, not a citation volume`)}if(qt(e)){let n=e;t.push(`Small volume (${n.volume}) with unrecognized reporter "${n.reporter}" — likely a paragraph or footnote marker`)}let r=zt(e);return r!==void 0&&r<$&&t.push(`Year ${r} predates US legal reporting (threshold: ${$})`),t}function Xt(e,t){if(t)return e.filter(e=>!Jt(e));for(let t of e){if(t.confidence===It&&t.warnings?.length)continue;let e=Yt(t);if(e.length>0){t.confidence=It;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 Zt=/^(\S+)\s+(.+)\s+(\d+)$/;function Qt(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=yt(r,t?.patterns||[...gt,..._t,...mt,...Ne,...vt,...ht]),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=Ot(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`?Ge(t,i,r):t.patternId===`supra`?Ke(t,i):t.patternId===`shortFormCase`?qe(t,i):je(t,i,r);break;case`statute`:o=ft(t,i);break;case`journal`:o=He(t,i,r);break;case`neutral`:o=Ue(t,i);break;case`publicLaw`:o=We(t,i);break;case`federalRegister`:o=Ve(t,i);break;case`statutesAtLarge`:o=pt(t,i);break;case`constitutional`:o=Be(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=Zt.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=Zt.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)}en(p),Pt(p,r),Ft(p,r);let m=Xt(p,t?.filterFalsePositives??!1);return o&&P(m,o),t?.resolve?Dt(m,e,o?{...t.resolutionOptions,footnoteMap:o}:t.resolutionOptions):m}async function $t(e,t){return Qt(e,t)}function en(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{Et as DocumentResolver,Xt as applyFalsePositiveFilters,c as assertUnreachable,S as cleanText,j as detectFootnotes,je as extractCase,Qt as extractCitations,$t as extractCitationsAsync,Be as extractConstitutional,Ve as extractFederalRegister,He as extractJournal,Ue as extractNeutral,We as extractPublicLaw,ft as extractStatute,pt as extractStatutesAtLarge,o as isCaseCitation,s as isCitationType,i as isFullCitation,a as isShortFormCitation,re as normalizeCourt,H as parsePincite,Dt as resolveCitations,l as spanFromGroupIndex,yt as tokenize};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|