epstein-files 1.1.3__py3-none-any.whl → 1.2.0__py3-none-any.whl

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.
@@ -1,8 +1,8 @@
1
1
  import json
2
2
  import re
3
- from abc import ABC
4
3
  from dataclasses import dataclass, field
5
4
 
5
+ from rich.console import Console
6
6
  from rich.highlighter import RegexHighlighter
7
7
  from rich.text import Text
8
8
 
@@ -12,17 +12,19 @@ from epstein_files.util.constant.urls import ARCHIVE_LINK_COLOR
12
12
  from epstein_files.util.constants import (EMAILER_ID_REGEXES, EPSTEIN_V_ROTHSTEIN_EDWARDS,
13
13
  OSBORNE_LLP, REPLY_REGEX, SENT_FROM_REGEX, VIRGIN_ISLANDS)
14
14
  from epstein_files.util.doc_cfg import *
15
- from epstein_files.util.data import extract_last_name, without_falsey
15
+ from epstein_files.util.data import without_falsey
16
+ from epstein_files.util.env import args
16
17
  from epstein_files.util.logging import logger
17
18
 
18
19
  CIVIL_ATTORNEY = 'civil attorney'
19
20
  CRIMINAL_DEFENSE_ATTORNEY = 'criminal defense attorney'
20
21
  CRIMINAL_DEFENSE_2008 = f"{CRIMINAL_DEFENSE_ATTORNEY} on 2008 case"
21
- EPSTEIN_LAWYER = 'Epstein lawyer'
22
- EPSTEIN_V_ROTHSTEIN_EDWARDS_ATTORNEY = f"{CIVIL_ATTORNEY} working on {EPSTEIN_V_ROTHSTEIN_EDWARDS}"
22
+ EPSTEIN_LAWYER = 'lawyer'
23
+ EPSTEIN_V_ROTHSTEIN_EDWARDS_ATTORNEY = f"{CIVIL_ATTORNEY} in {EPSTEIN_V_ROTHSTEIN_EDWARDS}"
23
24
  ESTATE_EXECUTOR = 'estate executor'
24
25
  EPSTEIN_ESTATE_EXECUTOR = f"Epstein {ESTATE_EXECUTOR}"
25
- QUESTION_MARKS_TXT = Text(QUESTION_MARKS, style='dim')
26
+ MIDEAST = 'mideast'
27
+ QUESTION_MARKS_TXT = Text(QUESTION_MARKS, style='grey50')
26
28
  REGEX_STYLE_PREFIX = 'regex'
27
29
  SIMPLE_NAME_REGEX = re.compile(r"^[-\w ]+$", re.IGNORECASE)
28
30
 
@@ -38,20 +40,20 @@ CATEGORY_STYLE_MAPPING = {
38
40
 
39
41
  CATEGORY_STYLES = {
40
42
  JSON: 'dark_red',
41
- JUNK: 'grey19',
42
43
  'letter': 'medium_orchid1'
43
44
  }
44
45
 
46
+ debug_console = Console(color_system='256')
47
+
45
48
 
46
49
  @dataclass(kw_only=True)
47
50
  class BaseHighlight:
48
51
  """
49
- Regex and style information.
52
+ Regex and style information for things we want to highlight.
50
53
 
51
54
  Attributes:
52
- label (str): RegexHighlighter match group name, defaults to 1st 'emailers' key if only 1 emailer provided
55
+ label (str): RegexHighlighter match group name
53
56
  pattern (str): regex pattern identifying strings matching this group
54
- regex (re.Pattern): matches self.pattern
55
57
  style (str): Rich style to apply to text matching this group
56
58
  theme_style_name (str): The style name that must be a part of the rich.Console's theme
57
59
  """
@@ -79,9 +81,6 @@ class HighlightedText(BaseHighlight):
79
81
  Attributes:
80
82
  label (str): RegexHighlighter match group name, defaults to 1st 'emailers' key if only 1 emailer provided
81
83
  patterns (list[str]): regex patterns identifying strings matching this group
82
- regex (re.Pattern): matches self.pattern
83
- style (str): Rich style to apply to text matching this group
84
- theme_style_name (str): The style name that must be a part of the rich.Console's theme
85
84
  """
86
85
  patterns: list[str] = field(default_factory=list)
87
86
  _pattern: str = field(init=False)
@@ -112,6 +111,7 @@ class HighlightedNames(HighlightedText):
112
111
  """
113
112
  category: str = ''
114
113
  emailers: dict[str, str | None] = field(default_factory=dict)
114
+ should_match_first_last_name: bool = True
115
115
 
116
116
  def __post_init__(self):
117
117
  if not (self.emailers or self.patterns):
@@ -126,40 +126,42 @@ class HighlightedNames(HighlightedText):
126
126
  self._pattern = '|'.join([self._emailer_pattern(e) for e in self.emailers] + self.patterns)
127
127
  self.regex = re.compile(fr"\b({self._match_group_var}({self._pattern})s?)\b", re.IGNORECASE)
128
128
 
129
- def get_info(self, name: str) -> str | None:
130
- """Label and additional info for 'name' if 'name' is in self.emailers."""
131
- info_pieces = [
132
- self.category or ('' if len(self.emailers) == 1 else self.label.replace('_', ' ')),
133
- self.emailers.get(name),
134
- ]
129
+ def category_str(self) -> str:
130
+ if self.category:
131
+ return self.category
132
+ elif len(self.emailers) == 1 and self.label == [k for k in self.emailers.keys()][0]:
133
+ return ''
134
+ else:
135
+ return self.label.replace('_', ' ')
135
136
 
137
+ def info_for(self, name: str, include_category: bool = False) -> str | None:
138
+ """Label and additional info for 'name' if 'name' is in self.emailers."""
139
+ info_pieces = [self.category_str()] if include_category else []
140
+ info_pieces.append(self.emailers.get(name) or '')
136
141
  info_pieces = without_falsey(info_pieces)
137
142
  return ', '.join(info_pieces) if info_pieces else None
138
143
 
139
144
  def _emailer_pattern(self, name: str) -> str:
140
145
  """Pattern matching 'name'. Extends value in EMAILER_ID_REGEXES with first/last name if it exists."""
141
- name = remove_question_marks(name)
142
- last_name = extract_last_name(name)
143
- first_name = name.removesuffix(f" {last_name}")
146
+ if not self.should_match_first_last_name:
147
+ return name
144
148
 
145
149
  if name in EMAILER_ID_REGEXES:
146
- pattern = EMAILER_ID_REGEXES[name].pattern
150
+ name_patterns = [EMAILER_ID_REGEXES[name].pattern]
151
+ else:
152
+ name_patterns = [remove_question_marks(name).replace(' ', r"\s+")]
147
153
 
148
- # Include regex for first and last names
149
- for partial_name in [first_name, last_name]:
150
- if SIMPLE_NAME_REGEX.match(partial_name) and partial_name.lower() not in NAMES_TO_NOT_HIGHLIGHT:
151
- pattern += fr"|{partial_name}"
154
+ if ' ' in name:
155
+ for partial_name in [extract_first_name(name), extract_last_name(name)]:
156
+ if partial_name.lower() not in NAMES_TO_NOT_HIGHLIGHT and SIMPLE_NAME_REGEX.match(partial_name):
157
+ name_patterns.append(partial_name.replace(' ', r"\s+"))
152
158
 
153
- return pattern
154
- elif ' ' not in name:
155
- return name
159
+ pattern = '|'.join(name_patterns)
156
160
 
157
- name_patterns = [
158
- n.replace(' ', r"\s+") for n in [name, first_name, last_name]
159
- if n.lower() not in NAMES_TO_NOT_HIGHLIGHT
160
- ]
161
+ if args.deep_debug:
162
+ debug_console.print(Text('').append(f"{name:25s}", style=self.style).append(f" '{pattern}'", style='dim'))
161
163
 
162
- return '|'.join(name_patterns)
164
+ return pattern
163
165
 
164
166
  def __str__(self) -> str:
165
167
  return super().__str__()
@@ -211,7 +213,7 @@ HIGHLIGHTED_NAMES = [
211
213
  ManualHighlight(
212
214
  label='email_subject',
213
215
  style='light_yellow3',
214
- pattern=r"^(> )?Subject: (?P<email_subject>.*)",
216
+ pattern=r"^(> )?(Classification|Flag|Subject): (?P<email_subject>.*)",
215
217
  ),
216
218
  HighlightedNames(
217
219
  label=ACADEMIA,
@@ -225,31 +227,35 @@ HIGHLIGHTED_NAMES = [
225
227
  LAWRENCE_KRAUSS: 'theoretical physicist',
226
228
  LINDA_STONE: f'ex-Microsoft, {MIT_MEDIA_LAB}',
227
229
  MARK_TRAMO: 'professor of neurology at UCLA',
228
- 'Nancy Dahl': 'wife of Lawrence Krauss',
230
+ 'Nancy Dahl': f'wife of {LAWRENCE_KRAUSS}',
229
231
  NEAL_KASSELL: 'professor of neurosurgery at University of Virginia',
232
+ NOAM_CHOMSKY: f"professor of linguistics at MIT",
230
233
  PETER_ATTIA: 'longevity medicine',
231
234
  ROBERT_TRIVERS: 'evolutionary biology',
232
235
  ROGER_SCHANK: 'Teachers College, Columbia University',
236
+ 'Valeria Chomsky': f"wife of {NOAM_CHOMSKY}",
233
237
  },
234
238
  patterns=[
235
- r"Alain Forget",
239
+ r"Bard\s+((Early )?College|High School|Schools)",
236
240
  r"Brotherton",
237
241
  r"Carl\s*Sagan",
238
242
  r"Columbia",
243
+ r"Dan(iel|ny) Kahneman",
239
244
  r"David Grosof",
240
245
  r"J(ames|im)\s*Watson",
241
246
  r"(Lord\s*)?Martin\s*Rees",
242
247
  r"Massachusetts\s*Institute\s*of\s*Technology",
243
248
  r"Media\s*Lab",
244
- r"Minsky",
249
+ r"(Marvin\s*)?Minsky",
245
250
  r"MIT(\s*Media\s*Lab)?",
246
- r"((Noam|Valeria)\s*)?Chomsky",
247
251
  r"Norman\s*Finkelstein",
252
+ r"Oxford(?! Analytica)",
248
253
  r"Praluent",
254
+ r"Princeton(\s*University)?",
249
255
  r"Regeneron",
250
256
  r"(Richard\s*)?Dawkins",
251
257
  r"Sanofi",
252
- r"Stanford",
258
+ r"Stanford(\s*University)?(\s*Hospital)?",
253
259
  r"(Stephen\s*)?Hawking",
254
260
  r"(Steven?\s*)?Pinker",
255
261
  r"UCLA",
@@ -284,33 +290,51 @@ HIGHLIGHTED_NAMES = [
284
290
  r"Zimbabwe(an)?",
285
291
  ],
286
292
  ),
293
+ HighlightedNames(
294
+ label=BILL_GATES,
295
+ style='turquoise4',
296
+ emailers={
297
+ BORIS_NIKOLIC: f'biotech VC partner of {BILL_GATES}, {EPSTEIN_ESTATE_EXECUTOR}',
298
+ },
299
+ patterns=[
300
+ r"BG",
301
+ r"b?g?C3",
302
+ r"(Bill\s*((and|or|&)\s*Melinda\s*)?)?Gates(\s*Foundation)?",
303
+ r"Melinda(\s*Gates)?",
304
+ r"Microsoft",
305
+ r"MSFT",
306
+ ],
307
+ ),
287
308
  HighlightedNames(
288
309
  label='bitcoin',
289
310
  style='orange1 bold',
290
311
  emailers={
291
- 'Jeffrey Wernick': 'former COO of Parler, involved in numerous crypto companies like Bitforex',
312
+ JEFFREY_WERNICK: 'former COO of Parler, involved in numerous crypto companies like Bitforex',
292
313
  JEREMY_RUBIN: 'developer/researcher',
293
314
  JOI_ITO: f"former head of {MIT_MEDIA_LAB} and MIT Digital Currency Initiative",
294
315
  ANTHONY_SCARAMUCCI: 'Skybridge Capital, FTX investor',
295
316
  },
296
317
  patterns=[
297
318
  r"Balaji",
298
- r"bitcoin",
319
+ r"bitcoin(\s*Foundation)?",
299
320
  r"block ?chain(\s*capital)?",
300
321
  r"Brock(\s*Pierce)?",
301
322
  r"coins?",
302
323
  r"cr[iy]?pto(currenc(y|ies))?",
324
+ r"Digital\s*Currenc(ies|y)(\s*Initiative)?",
303
325
  r"e-currency",
304
- r"(Gavin )?Andressen",
326
+ r"(Gavin )?Andress?en",
305
327
  r"(Howard\s+)?Lutnic?k",
306
328
  r"Libra",
307
329
  r"Madars",
330
+ r"Mi(chael|ke)\s*Novogratz",
308
331
  r"(Patrick\s*)?Murck",
309
332
  r"(Ross\s*)?Ulbricht",
310
333
  r"Silk\s*Road",
311
334
  r"SpanCash",
312
335
  r"Tether",
313
336
  r"virtual\s*currenc(ies|y)",
337
+ r"Wladimir( van der Laan)?",
314
338
  r"(zero\s+knowledge\s+|zk)pro(of|tocols?)",
315
339
  ],
316
340
  ),
@@ -320,10 +344,10 @@ HIGHLIGHTED_NAMES = [
320
344
  emailers={
321
345
  ALIREZA_ITTIHADIEH: 'CEO Freestream Aircraft Limited',
322
346
  BARBRO_C_EHNBOM: 'Swedish pharmaceuticals, SALSS',
323
- 'David Mitchell': 'president of New York real estate development firm Mitchell Holdings',
347
+ 'David Mitchell': 'Mitchell Holdings New York real estate developer',
324
348
  FRED_HADDAD: "co-founder of Heck's in West Virginia",
325
349
  GERALD_BARTON: "Maryland property developer Landmark Land Company",
326
- GORDON_GETTY: 'heir of oil tycoon J. Paul Getty',
350
+ GORDON_GETTY: 'heir to oil tycoon J. Paul Getty',
327
351
  NICHOLAS_RIBIS: 'Hilton CEO, former president of Trump Organization',
328
352
  'Philip Kafka': 'president of Prince Concepts (and son of Terry Kafka?)',
329
353
  ROBERT_LAWRENCE_KUHN: 'investment banker, China expert',
@@ -380,7 +404,7 @@ HIGHLIGHTED_NAMES = [
380
404
  r"Ministry\sof\sState\sSecurity",
381
405
  r"Mongolian?",
382
406
  r"MSS",
383
- r"North\s*Korea",
407
+ r"North\s*Korean?",
384
408
  r"Peking",
385
409
  r"PRC",
386
410
  r"Pyongyang",
@@ -390,10 +414,10 @@ HIGHLIGHTED_NAMES = [
390
414
  ],
391
415
  ),
392
416
  HighlightedNames(
393
- label=DEEPAK_CHOPRA,
417
+ label='deepak',
394
418
  style='dark_sea_green4',
395
419
  emailers={
396
- CAROLYN_RANGEL: 'assistant',
420
+ CAROLYN_RANGEL: f"Deepak Chopra's assistant {QUESTION_MARKS}",
397
421
  DEEPAK_CHOPRA: 'woo woo',
398
422
  },
399
423
  ),
@@ -405,6 +429,7 @@ HIGHLIGHTED_NAMES = [
405
429
  },
406
430
  patterns=[
407
431
  r"(Al\s*)?Franken",
432
+ r"Al\s*Gore",
408
433
  r"(Barac?k )?Obama",
409
434
  r"((Bill|Hillart?y)\s*)?Clinton",
410
435
  r"((Chuck|Charles)\s*)?S(ch|hc)umer",
@@ -416,6 +441,7 @@ HIGHLIGHTED_NAMES = [
416
441
  r"Eric Holder",
417
442
  r"George\s*Mitchell",
418
443
  r"(George\s*)?Soros",
444
+ r"Hakeem\s*Jeffries",
419
445
  r"Hill?ary",
420
446
  r"HRC",
421
447
  r"(Jo(e|seph)\s*)?Biden",
@@ -426,35 +452,43 @@ HIGHLIGHTED_NAMES = [
426
452
  r"(Nancy )?Pelosi",
427
453
  r"Ron\s*Dellums",
428
454
  r"Schumer",
429
- r"(Tim\s*)?Geithner",
455
+ r"(Tim(othy)?\s*)?Geithner",
456
+ r"Tom McMillen",
430
457
  r"Vernon\s*Jordan",
431
458
  ],
432
459
  ),
433
460
  HighlightedNames(
434
- label='Dubin family',
461
+ label='Dubins',
435
462
  style='medium_orchid1',
436
463
  emailers={
437
464
  GLENN_DUBIN: "Highbridge Capital Management, married to Epstein's ex-gf Eva",
438
465
  EVA: "possibly Epstein's ex-girlfriend (?)",
466
+ 'Eva Dubin': f"Epstein's ex-girlfriend now married to {GLENN_DUBIN}",
439
467
  },
440
468
  patterns=[r"((Celina|Eva( Anderss?on)?|Glenn) )?Dubin"],
441
469
  ),
442
470
  HighlightedNames(
443
471
  label='employee',
444
- style='deep_sky_blue4',
472
+ style='medium_purple4',
445
473
  emailers={
446
474
  'Alfredo Rodriguez': "Epstein's butler, stole the journal",
447
475
  ERIC_ROTH: 'jet decorator',
448
476
  GWENDOLYN_BECK: 'Epstein fund manager in the 90s',
477
+ JANUSZ_BANASIAK: "Epstein's house manager",
449
478
  JEAN_HUGUEN: 'interior design at Alberto Pinto Cabinet',
450
- LAWRANCE_VISOSKI: 'pilot',
451
- LESLEY_GROFF: 'assistant',
479
+ LAWRANCE_VISOSKI: "Epstein's pilot",
480
+ LESLEY_GROFF: f"Epstein's assistant",
452
481
  'Linda Pinto': 'interior design at Alberto Pinto Cabinet',
453
482
  MERWIN_DELA_CRUZ: None, # HOUSE_OVERSIGHT_032652 Groff says "Jojo and Merwin both requested off Nov. 25 and 26"
454
- NADIA_MARCINKO: 'pilot',
483
+ NADIA_MARCINKO: "Epstein's pilot",
455
484
  'Sean J. Lancaster': 'airplane reseller',
485
+ ZUBAIR_KHAN: 'cybersecurity firm Tranchulas CEO, InsightsPod founder, Islamabad/Dubai',
456
486
  },
457
- patterns=[r"Merwin"],
487
+ patterns=[
488
+ r"Adriana\s*Ross",
489
+ r"Merwin",
490
+ r"(Sarah\s*)?Kellen", r"Vickers", # Married name is Metiers
491
+ ],
458
492
  ),
459
493
  HighlightedNames(
460
494
  label=ENTERTAINER,
@@ -464,7 +498,6 @@ HIGHLIGHTED_NAMES = [
464
498
  'Barry Josephson': 'American film producer, editor FamilySecurityMatters.org',
465
499
  BILL_SIEGEL: 'documentary film producer and director',
466
500
  DAVID_BLAINE: 'famous magician',
467
- HENRY_HOLT: f"{MICHAEL_WOLFF}'s book publisher",
468
501
  'Richard Merkin': 'painter, illustrator and arts educator',
469
502
  STEVEN_PFEIFFER: 'Associate Director at Independent Filmmaker Project (IFP)',
470
503
  },
@@ -493,14 +526,28 @@ HIGHLIGHTED_NAMES = [
493
526
  r"Zach Braff",
494
527
  ],
495
528
  ),
529
+ HighlightedNames(
530
+ label='Epstein',
531
+ style='blue1',
532
+ emailers={
533
+ JEFFREY_EPSTEIN: None,
534
+ MARK_EPSTEIN: 'brother of Jeffrey',
535
+ },
536
+ patterns=[
537
+ r"JEGE",
538
+ r"LSJ",
539
+ ],
540
+ ),
496
541
  HighlightedNames(
497
542
  label=EPSTEIN_LAWYER,
498
543
  style='purple',
499
544
  emailers={
500
545
  'Alan S Halperin': 'partner at Paul, Weiss',
546
+ ALAN_DERSHOWITZ: 'Harvard Law School professor',
501
547
  ARDA_BESKARDES: 'NYC immigration attorney allegedly involved in sex-trafficking operations',
502
548
  BENNET_MOSKOWITZ: f'represented the {EPSTEIN_ESTATE_EXECUTOR}s',
503
549
  BRAD_KARP: 'head of the law firm Paul Weiss',
550
+ 'Connie Zaguirre': f"office of {ROBERT_D_CRITTON_JR}",
504
551
  DAVID_SCHOEN: f"{CRIMINAL_DEFENSE_ATTORNEY} after 2019 arrest",
505
552
  DEBBIE_FEIN: EPSTEIN_V_ROTHSTEIN_EDWARDS_ATTORNEY,
506
553
  'Erika Kellerhals': 'attorney in St. Thomas',
@@ -509,24 +556,26 @@ HIGHLIGHTED_NAMES = [
509
556
  JACKIE_PERCZEK: CRIMINAL_DEFENSE_2008,
510
557
  JAY_LEFKOWITZ: f"Kirkland & Ellis partner, {CRIMINAL_DEFENSE_2008}",
511
558
  JESSICA_CADWELL: f'paralegal to {ROBERT_D_CRITTON_JR}', # house_oversight_030464
559
+ KEN_STARR: 'head of the Monica Lewinsky investigation against Bill Clinton',
512
560
  LILLY_SANCHEZ: CRIMINAL_DEFENSE_ATTORNEY,
513
561
  MARTIN_WEINBERG: CRIMINAL_DEFENSE_ATTORNEY,
514
562
  MICHAEL_MILLER: 'Steptoe LLP partner',
515
563
  REID_WEINGARTEN: 'Steptoe LLP partner',
516
564
  ROBERT_D_CRITTON_JR: CRIMINAL_DEFENSE_ATTORNEY,
517
- 'Robert Gold': 'helped Epstein track down millions belonging to wealthy Spanish families',
565
+ 'Robert Gold': 'helped Epstein track down money belonging to Spanish families',
518
566
  'Roy Black': CRIMINAL_DEFENSE_2008,
519
567
  SCOTT_J_LINK: CRIMINAL_DEFENSE_ATTORNEY,
520
- TONJA_HADDAD_COLEMAN: f'{EPSTEIN_V_ROTHSTEIN_EDWARDS_ATTORNEY}, maybe daughter of Fred Haddad?',
568
+ TONJA_HADDAD_COLEMAN: f'{EPSTEIN_V_ROTHSTEIN_EDWARDS_ATTORNEY}, relation of Fred Haddad?',
521
569
  },
522
570
  patterns=[
523
571
  r"(Barry (E. )?)?Krischer",
572
+ r"dersh",
524
573
  r"Kate Kelly",
525
574
  r"Kirkland\s*&\s*Ellis",
526
575
  r"(Leon\s*)?Jaworski",
527
576
  r"Michael J. Pike",
528
577
  r"Paul,?\s*Weiss",
529
- r"Steptoe(\s*LLP)?",
578
+ r"Steptoe(\s*& Johnson)?(\s*LLP)?",
530
579
  r"Wein(berg|garten)",
531
580
  ],
532
581
  ),
@@ -544,10 +593,12 @@ HIGHLIGHTED_NAMES = [
544
593
  style='light_sky_blue3',
545
594
  emailers={
546
595
  ANDRZEJ_DUDA: 'former president of Poland',
596
+ "Edward Rod Larsen": f"son of {TERJE_ROD_LARSEN}",
597
+ 'Fabrice Aidan': f'diplomat who worked with {TERJE_ROD_LARSEN}',
547
598
  MIROSLAV_LAJCAK: 'Russia-friendly Slovakian politician, friend of Steve Bannon',
548
599
  PETER_MANDELSON: 'UK politics',
549
600
  TERJE_ROD_LARSEN: 'Norwegian diplomat',
550
- THORBJORN_JAGLAND: 'former prime minister of Norway and head of the Nobel Peace Prize Committee',
601
+ THORBJORN_JAGLAND: 'former prime minister of Norway, Nobel Peace Prize Committee',
551
602
  },
552
603
  patterns=[
553
604
  r"(Angela )?Merk(el|le)",
@@ -572,6 +623,7 @@ HIGHLIGHTED_NAMES = [
572
623
  r"Germany?",
573
624
  r"Gillard",
574
625
  r"Gree(ce|k)",
626
+ r"Ibiza",
575
627
  r"Ital(ian|y)",
576
628
  r"Jacques",
577
629
  r"Kiev",
@@ -590,32 +642,18 @@ HIGHLIGHTED_NAMES = [
590
642
  r"Polish",
591
643
  r"pope",
592
644
  r"(Sebastian )?Kurz",
593
- r"(Vi(c|k)tor\s+)?Orbah?n",
594
- r"Edward Rod Larsen",
645
+ r"Stockholm",
595
646
  r"Strasbourg",
596
647
  r"Strauss[- ]?Kahn",
597
648
  r"Swed(en|ish)(?![-\s]+American Life Scienc)",
598
- r"Switzerland",
649
+ r"Swi(ss|tzerland)",
599
650
  r"(Tony\s)?Blair",
600
651
  r"U\.K\.",
601
652
  r"Ukrain(e|ian)",
653
+ r"(Vi(c|k)tor\s+)?Orbah?n",
602
654
  r"Vienna",
603
655
  r"Zug",
604
- ],
605
- ),
606
- HighlightedNames(
607
- label='famous lawyer',
608
- style='medium_purple3',
609
- emailers={
610
- ALAN_DERSHOWITZ: 'Harvard Law School professor and all around (in)famous American lawyer',
611
- 'Fabrice Aidan': f'diplomat who worked with {TERJE_ROD_LARSEN}',
612
- KEN_STARR: 'head of the Monica Lewinsky investigation against Bill Clinton',
613
- },
614
- patterns=[
615
- r"(David\s*)?Bo[il]es",
616
- r"dersh",
617
- r"(Gloria\s*)?Allred",
618
- r"(Mi(chael|ke)\s*)?Avenatti",
656
+ r"Zurich",
619
657
  ],
620
658
  ),
621
659
  HighlightedNames(
@@ -650,6 +688,7 @@ HIGHLIGHTED_NAMES = [
650
688
  r"B\s*of\s*A",
651
689
  r"Boothbay(\sFund\sManagement)?",
652
690
  r"Chase\s*Bank",
691
+ r"Conrad B",
653
692
  r"Credit\s*Suisse",
654
693
  r"DB",
655
694
  r"Deutsche?\s*(Asset|Bank)",
@@ -661,13 +700,14 @@ HIGHLIGHTED_NAMES = [
661
700
  r"HSBC",
662
701
  r"Invesco",
663
702
  r"(Janet\s*)?Yellen",
664
- r"(Jerome\s*)?Powell(?!M\. Cabot)",
703
+ r"(Jerome\s*)?Powell(?! M\. Cabot)",
665
704
  r"(Jimmy\s*)?Cayne",
666
705
  r"JPMC?",
667
706
  r"j\.?p\.?\s*morgan(\.?com|\s*Chase)?",
668
707
  r"Madoff",
669
708
  r"Merrill(\s*Lynch)?",
670
- r"(Michael\s*)?(Cembalest|Milken)",
709
+ r"(Michael\s*)?Cembalest",
710
+ r"(Mi(chael|ke)\s*)?Milken(\s*Conference)?",
671
711
  r"Mizrahi\s*Bank",
672
712
  r"MLPF&S",
673
713
  r"Morgan Stanley",
@@ -681,11 +721,11 @@ HIGHLIGHTED_NAMES = [
681
721
  ],
682
722
  ),
683
723
  HighlightedNames(
684
- label='friend',
724
+ label=FRIEND,
685
725
  style='tan',
686
726
  emailers={
687
727
  DANGENE_AND_JENNIE_ENTERPRISE: 'founders of the members-only CORE club',
688
- DAVID_STERN: f'emailed Epstein from Moscow, appears to know chairman of {DEUTSCHE_BANK}',
728
+ DAVID_STERN: f'emailed Epstein from Moscow, knows chairman of {DEUTSCHE_BANK} (?)',
689
729
  JONATHAN_FARKAS: "heir to the Alexander's department store fortune",
690
730
  'linkspirit': 'Skype username of someone Epstein communicated with',
691
731
  'Peter Thomas Roth': 'student of Epstein at Dalton, skincare company founder',
@@ -694,6 +734,7 @@ HIGHLIGHTED_NAMES = [
694
734
  },
695
735
  patterns=[
696
736
  r"Andrew Farkas",
737
+ r"Jonanthan and Kimberly Farkus",
697
738
  r"Thomas\s*(J\.?\s*)?Barrack(\s*Jr)?",
698
739
  ],
699
740
  ),
@@ -708,7 +749,7 @@ HIGHLIGHTED_NAMES = [
708
749
  LISA_NEW: f'professor of poetry, wife of {LARRY_SUMMERS}, AKA "Elisa New"',
709
750
  'Lisa Randall': 'theoretical physicist',
710
751
  MARTIN_NOWAK: 'professor of mathematics and biology',
711
- MOSHE_HOFFMAN: 'lecturer and research scholar in behavioral and evolutionary economics',
752
+ MOSHE_HOFFMAN: 'behavioral and evolutionary economics',
712
753
  },
713
754
  patterns=[
714
755
  r"Cambridge",
@@ -726,7 +767,6 @@ HIGHLIGHTED_NAMES = [
726
767
  emailers={
727
768
  ANIL_AMBANI: 'chairman of Reliance Group',
728
769
  VINIT_SAHNI: None,
729
- ZUBAIR_KHAN: 'cybersecurity firm Tranchulas CEO, InsightsPod founder, Islamabad/Dubai',
730
770
  },
731
771
  patterns=[
732
772
  r"Abraaj",
@@ -747,7 +787,7 @@ HIGHLIGHTED_NAMES = [
747
787
  label='Israel',
748
788
  style='dodger_blue2',
749
789
  emailers={
750
- EHUD_BARAK: 'former primer minister',
790
+ EHUD_BARAK: 'former prime minister of Israel, Epstein business partner',
751
791
  'Mitchell Bard': 'director of the American-Israeli Cooperative Enterprise (AICE)',
752
792
  'Nili Priell Barak': 'wife of Ehud Barak',
753
793
  },
@@ -785,7 +825,9 @@ HIGHLIGHTED_NAMES = [
785
825
  label=JOURNALIST,
786
826
  style='bright_yellow',
787
827
  emailers={
788
- EDWARD_JAY_EPSTEIN: 'no relation, wrote about the kinds of crimes Epstein was involved in',
828
+ 'Alain Forget': 'author of "How To Get Out Of This World ALIVE"',
829
+ EDWARD_JAY_EPSTEIN: 'no relation, wrote books about spies',
830
+ HENRY_HOLT: f"{MICHAEL_WOLFF}'s book publisher",
789
831
  JAMES_HILL: 'ABC News',
790
832
  JENNIFER_JACQUET: 'Future Science',
791
833
  JOHN_BROCKMAN: 'literary agent and author specializing in scientific literature',
@@ -800,24 +842,30 @@ HIGHLIGHTED_NAMES = [
800
842
  r"Arianna(\s*Huffington)?",
801
843
  r"(Arthur\s*)?Kretchmer",
802
844
  r'Associated\s*Press',
845
+ r"Axios",
803
846
  r"BBC",
804
- r"Bloomberg",
805
847
  r"Breitbart",
848
+ r"BuzzFeed",
849
+ r"CBS(\s*(4|Corp|News))?"
806
850
  r"Charlie\s*Rose",
807
851
  r"China\s*Daily",
808
852
  r"CNBC",
809
853
  r"CNN(politics?)?",
810
- r"Con[cs]hita",
811
- r"Sarnoff",
812
- r"(?<!Virgin[-\s]Islands[-\s])Daily\s*(Beast|Mail|News|Telegraph)",
854
+ r"Con[cs]hita", r"Sarnoff",
855
+ r"Daily Business Review",
856
+ r"(?<!Virgin[-\s]Islands[-\s])(The\s*)?Daily\s*(Beast|Mail|News|Telegraph)",
813
857
  r"(David\s*)?(Pecker|Pegg)",
814
858
  r"David\s*Brooks",
815
859
  r"Ed\s*Krassenstein",
816
860
  r"(Emily\s*)?Michot",
817
861
  r"Ezra\s*Klein",
862
+ r"Forbes",
863
+ r"Fortune\s*Magazine",
864
+ r"Fox\s*News(\.com)?",
818
865
  r"FrontPage Magazine",
819
866
  r"FT",
820
867
  r"(George\s*)?Stephanopoulus",
868
+ r"Ger(ald|ry)\s*Baker",
821
869
  r"Globe\s*and\s*Mail",
822
870
  r"Good\s*Morning\s*America",
823
871
  r"Graydon(\s*Carter)?",
@@ -829,20 +877,29 @@ HIGHLIGHTED_NAMES = [
829
877
  r"(Katie\s*)?Couric",
830
878
  r"Keith\s*Larsen",
831
879
  r"L\.?A\.?\s*Times",
880
+ r"Law(360|\.com|fare)",
881
+ r"(Les\s*)?Moonves",
882
+ r"MarketWatch",
832
883
  r"Miami\s*Herald",
884
+ r"(Mi(chael|ke)\s*)?Bloomberg",
833
885
  r"(Michele\s*)?Dargan",
886
+ r"Morning News USA",
834
887
  r"(National\s*)?Enquirer",
888
+ r"News(max|week)",
835
889
  r"NYer",
836
890
  r"Palm\s*Beach\s*(Daily\s*News|Post)",
837
891
  r"PERVERSION\s*OF\s*JUSTICE",
838
892
  r"Politico",
839
893
  r"Pro\s*Publica",
894
+ r"Reuters",
840
895
  r"(Sean\s*)?Hannity",
841
896
  r"Sulzberger",
842
897
  r"SunSentinel",
843
898
  r"Susan Edelman",
844
899
  r"(The\s*)?Financial\s*Times",
845
900
  r"The\s*Guardian",
901
+ r"TheHill",
902
+ r"(The\s*)?Mail\s*On\s*Sunday",
846
903
  r"(The\s*)?N(ew\s*)?Y(ork\s*)?(P(ost)?|T(imes)?)",
847
904
  r"(The\s*)?New\s*Yorker",
848
905
  r"(The\s*)?Wall\s*Street\s*Journal",
@@ -857,6 +914,18 @@ HIGHLIGHTED_NAMES = [
857
914
  r"[-\w.]+@(bbc|independent|mailonline|mirror|thetimes)\.co\.uk",
858
915
  ],
859
916
  ),
917
+ HighlightedNames(
918
+ label=JUNK,
919
+ style='gray46',
920
+ emailers={
921
+ 'asmallworld@travel.asmallworld.net': None,
922
+ "digest-noreply@quora.com": None,
923
+ 'editorialstaff@flipboard.com': None,
924
+ 'How To Academy': None,
925
+ 'Jokeland': None,
926
+ },
927
+ should_match_first_last_name=False,
928
+ ),
860
929
  HighlightedNames(
861
930
  label='Latin America',
862
931
  style='yellow',
@@ -866,11 +935,12 @@ HIGHLIGHTED_NAMES = [
866
935
  r"Bra[sz]il(ian)?",
867
936
  r"Caracas",
868
937
  r"Castro",
938
+ r"Chile",
869
939
  r"Colombian?",
870
940
  r"Cuban?",
871
941
  r"El\s*Salvador",
872
942
  r"((Enrique )?Pena )?Nieto",
873
- r"Lat(in)?\s*Am(erica)?",
943
+ r"Lat(in)?\s*Am(erican?)?",
874
944
  r"Lula",
875
945
  r"Mexic(an|o)",
876
946
  r"(Nicolas\s+)?Maduro",
@@ -881,7 +951,7 @@ HIGHLIGHTED_NAMES = [
881
951
  ],
882
952
  ),
883
953
  HighlightedNames(
884
- label='law enforcement',
954
+ label='government',
885
955
  style='color(24) bold',
886
956
  emailers={
887
957
  ANN_MARIE_VILLAFANA: 'Southern District of Florida (SDFL) U.S. Attorney',
@@ -911,6 +981,7 @@ HIGHLIGHTED_NAMES = [
911
981
  r"FINRA",
912
982
  r"FOIA",
913
983
  r"FTC",
984
+ r"(General\s*)?P(a|e)traeus",
914
985
  r"IRS",
915
986
  r"(James\s*)?Comey",
916
987
  r"Jeff(rey)?\s*Sessions",
@@ -950,6 +1021,7 @@ HIGHLIGHTED_NAMES = [
950
1021
  label=LOBBYIST,
951
1022
  style='light_coral',
952
1023
  emailers={
1024
+ BOB_CROWE: 'partner at Nelson Mullins',
953
1025
  'Joshua Cooper Ramo': 'co-CEO of Henry Kissinger Associates',
954
1026
  KATHERINE_KEATING: 'Daughter of former Australian PM',
955
1027
  MOHAMED_WAHEED_HASSAN: 'former president of the Maldives',
@@ -959,14 +1031,13 @@ HIGHLIGHTED_NAMES = [
959
1031
  'Stanley Rosenberg': 'former President of the Massachusetts Senate',
960
1032
  },
961
1033
  patterns=[
962
- r"[BR]ob Crowe",
963
1034
  r"CSIS",
964
1035
  r"(Kevin\s*)?Rudd",
965
1036
  r"Stanley Rosenberg",
966
1037
  ],
967
1038
  ),
968
1039
  HighlightedNames(
969
- label='mideast',
1040
+ label=MIDEAST,
970
1041
  style='dark_sea_green4',
971
1042
  emailers={
972
1043
  ANAS_ALRASHEED: 'former information minister of Kuwait (???)',
@@ -990,6 +1061,7 @@ HIGHLIGHTED_NAMES = [
990
1061
  r"Basiji?",
991
1062
  r"Beirut",
992
1063
  r"Benghazi",
1064
+ r"Brunei",
993
1065
  r"Cairo",
994
1066
  r"Chagoury",
995
1067
  r"Damascus",
@@ -1049,7 +1121,7 @@ HIGHLIGHTED_NAMES = [
1049
1121
  r"sheikh",
1050
1122
  r"shia",
1051
1123
  r"(Sultan\s*)?Yacoub",
1052
- r"Sultan",
1124
+ r"Sultan(?! Ahmed)",
1053
1125
  r"Syrian?",
1054
1126
  r"(Tarek\s*)?El\s*Sayed",
1055
1127
  r"Tehran",
@@ -1078,21 +1150,23 @@ HIGHLIGHTED_NAMES = [
1078
1150
  },
1079
1151
  patterns=[
1080
1152
  r"\w+@mc2mm.com",
1081
- r"model(ed|ing)",
1153
+ r"MC2",
1082
1154
  r"(Nicole\s*)?Junkerman", # Also a venture fund manager now
1155
+ r"Tigrane",
1083
1156
  ],
1084
1157
  ),
1085
1158
  HighlightedNames(
1086
1159
  label=PUBLICIST,
1087
1160
  style='orange_red1',
1088
1161
  emailers={
1089
- AL_SECKEL: 'husband of Isabel Maxwell, Mindshift conference organizer who fell off a cliff',
1090
- 'Barnaby Marsh': 'co-founder of Saint Partners, a philanthropy services company',
1091
- CHRISTINA_GALBRAITH: f"{REPUTATION_MGMT}, worked with Tyler Shears",
1092
- IAN_OSBORNE: f'{OSBORNE_LLP} reputation repairer hired by Epstein in 2011',
1162
+ AL_SECKEL: "Isabel Maxwell's husband, Mindshift conference, fell off a cliff",
1163
+ 'Barnaby Marsh': 'co-founder of philanthropy services company Saint Partners',
1164
+ CHRISTINA_GALBRAITH: f"{EPSTEIN_FOUNDATION} Media/PR, worked with {TYLER_SHEARS}", # Title in 031441
1165
+ IAN_OSBORNE: f'{OSBORNE_LLP} reputation repairer hired in 2011',
1166
+ MATTHEW_HILTZIK: 'crisis PR at Hiltzik Strategies',
1093
1167
  MICHAEL_SITRICK: 'crisis PR',
1094
1168
  'Owen Blicksilver': 'OBPR, Inc.',
1095
- PEGGY_SIEGAL: 'socialite',
1169
+ PEGGY_SIEGAL: 'socialite, movie promoter',
1096
1170
  'R. Couri Hay': None,
1097
1171
  ROSS_GOW: 'Acuity Reputation Management',
1098
1172
  TYLER_SHEARS: f"{REPUTATION_MGMT}, worked on with {CHRISTINA_GALBRAITH}",
@@ -1100,6 +1174,7 @@ HIGHLIGHTED_NAMES = [
1100
1174
  patterns=[
1101
1175
  r"(Matt(hew)? )?Hiltzi[gk]",
1102
1176
  REPUTATION_MGMT,
1177
+ r"Reputation.com",
1103
1178
  ],
1104
1179
  ),
1105
1180
  HighlightedNames(
@@ -1123,7 +1198,7 @@ HIGHLIGHTED_NAMES = [
1123
1198
  r"(?<!Merwin Dela )Cruz",
1124
1199
  r"Devin\s*Nunes",
1125
1200
  r"(Don\s*)?McGa[hn]n",
1126
- r"Fox\s*News",
1201
+ r"Gary\s*Cohn",
1127
1202
  r"George\s*(H\.?\s*)?(W\.?\s*)?Bush",
1128
1203
  r"(George\s*)?Nader",
1129
1204
  r"GOP",
@@ -1131,7 +1206,7 @@ HIGHLIGHTED_NAMES = [
1131
1206
  r"Kissinger",
1132
1207
  r"Kobach",
1133
1208
  r"Kolfage",
1134
- r"Kudlow",
1209
+ r"(Larry\s*)?Kudlow",
1135
1210
  r"Lewandowski",
1136
1211
  r"(Marco\s)?Rubio",
1137
1212
  r"(Mark\s*)Meadows",
@@ -1160,7 +1235,7 @@ HIGHLIGHTED_NAMES = [
1160
1235
  style='indian_red',
1161
1236
  emailers={
1162
1237
  ARIANE_DE_ROTHSCHILD: 'heiress',
1163
- JOHNNY_EL_HACHEM: f'works with {ARIANE_DE_ROTHSCHILD}',
1238
+ JOHNNY_EL_HACHEM: f'Edmond de Rothschild Private Equity',
1164
1239
  },
1165
1240
  patterns=['AdR'],
1166
1241
  ),
@@ -1169,7 +1244,7 @@ HIGHLIGHTED_NAMES = [
1169
1244
  style='red bold',
1170
1245
  emailers={
1171
1246
  'Dasha Zhukova': 'art collector, daughter of Alexander Zhukov',
1172
- MASHA_DROKOVA: 'silicon valley VC, former Putin Youth',
1247
+ MASHA_DROKOVA: 'silicon valley VC, former Putin Youth member',
1173
1248
  RENATA_BOLOTOVA: 'former aspiring model, now fund manager at New York State Insurance Fund',
1174
1249
  SVETLANA_POZHIDAEVA: "Epstein's Russian assistant who was recommended for a visa by Sergei Belyakov (FSB) and David Blaine",
1175
1250
  },
@@ -1186,7 +1261,7 @@ HIGHLIGHTED_NAMES = [
1186
1261
  r"KGB",
1187
1262
  r"Kislyak",
1188
1263
  r"Kremlin",
1189
- r"Kuznetsova",
1264
+ r"(Anastasia\s*)?Kuznetsova",
1190
1265
  r"Lavrov",
1191
1266
  r"Lukoil",
1192
1267
  r"Moscow",
@@ -1208,7 +1283,6 @@ HIGHLIGHTED_NAMES = [
1208
1283
  r"(Vitaly\s*)?Churkin",
1209
1284
  ],
1210
1285
  ),
1211
-
1212
1286
  HighlightedNames(
1213
1287
  label='Southeast Asia',
1214
1288
  style='light_salmon3 bold',
@@ -1218,9 +1292,10 @@ HIGHLIGHTED_NAMES = [
1218
1292
  r"Cambodian?",
1219
1293
  r"Laos",
1220
1294
  r"Malaysian?",
1295
+ r"Maldives",
1221
1296
  r"Myan?mar",
1222
1297
  r"Philippines",
1223
- r"South\s*Korea",
1298
+ r"South\s*Korean?",
1224
1299
  r"Tai(pei|wan)",
1225
1300
  r"Thai(land)?",
1226
1301
  r"Vietnam(ese)?",
@@ -1245,7 +1320,10 @@ HIGHLIGHTED_NAMES = [
1245
1320
  r"Eric\s*Schmidt",
1246
1321
  r"Greylock(\s*Partners)?",
1247
1322
  r"(?<!(ustin|Moshe)\s)Hoffmand?",
1323
+ r"(Jeff\s*)?Bezos",
1324
+ r"Larry Page",
1248
1325
  r"LinkedIn",
1326
+ r"(Marc\s*)?Andreess?en",
1249
1327
  r"(Mark\s*)?Zuckerberg",
1250
1328
  r"Masa(yoshi)?(\sSon)?",
1251
1329
  r"Najeev",
@@ -1273,15 +1351,15 @@ HIGHLIGHTED_NAMES = [
1273
1351
  r"\bDJ?T\b",
1274
1352
  r"Donald J. Tramp",
1275
1353
  r"(Donald\s+(J\.\s+)?)?Trump(ism|\s*(Org(anization)?|Properties)(\s*LLC)?)?",
1276
- r"Don(ald| *Jr)(?! Rubin)",
1354
+ r"Don(ald| *Jr)(?! (B|Rubin))",
1277
1355
  r"Ivank?a",
1278
- r"Jared",
1279
- r"Kushner",
1356
+ r"Jared", r"(?<!Tony )Kushner",
1280
1357
  r"(Madeleine\s*)?Westerhout",
1281
1358
  r"Mar[-\s]*a[-\s]*Lago",
1282
1359
  r"(Marla\s*)?Maples",
1283
1360
  r"(Matt(hew)? )?Calamari",
1284
1361
  r"\bMatt C\b",
1362
+ r"Michael\s*Cohen",
1285
1363
  r"Melania",
1286
1364
  r"(Michael (J.? )?)?Boccio",
1287
1365
  r"Paul Rampell",
@@ -1295,6 +1373,8 @@ HIGHLIGHTED_NAMES = [
1295
1373
  label='victim',
1296
1374
  style='orchid1',
1297
1375
  patterns=[
1376
+ r"(David\s*)?Bo[il]es",
1377
+ r"(Gloria\s*)?Allred",
1298
1378
  r"(Jane|Tiffany)\s*Doe",
1299
1379
  r"Katie\s*Johnson",
1300
1380
  r"(Virginia\s+((L\.?|Roberts)\s+)?)?Giuffre",
@@ -1313,18 +1393,19 @@ HIGHLIGHTED_NAMES = [
1313
1393
  patterns=[
1314
1394
  r"(Alan(\s*P.)?|MINTZ)\s*FRAADE",
1315
1395
  r"(J\.?\s*)?(Stan(ley)?\s*)?Pottinger",
1396
+ r"(Mi(chael|ke)\s*)?Avenatti",
1316
1397
  r"Paul\s*(G.\s*)?Cassell",
1317
1398
  r"Rothstein\s*Rosenfeldt\s*Adler",
1318
1399
  r"(Scott\s*)?Rothstein",
1319
1400
  ],
1320
1401
  ),
1321
1402
  HighlightedNames(
1322
- label=VIRGIN_ISLANDS,
1403
+ label='USVI',
1323
1404
  style='sea_green1',
1324
1405
  emailers={
1325
- CECILE_DE_JONGH: 'first lady 2007-2015',
1326
- KENNETH_E_MAPP: 'Governor',
1327
- STACEY_PLASKETT: 'non-voting member of Congress',
1406
+ CECILE_DE_JONGH: 'Virgin Islands first lady 2007-2015',
1407
+ KENNETH_E_MAPP: 'Virgin Islands Governor',
1408
+ STACEY_PLASKETT: 'Virgin Islands non-voting member of Congress',
1328
1409
  },
1329
1410
  patterns=[
1330
1411
  r"Antigua",
@@ -1345,48 +1426,35 @@ HIGHLIGHTED_NAMES = [
1345
1426
  r"(West\s*)?Palm\s*Beach(?!\s*(Daily|Post))",
1346
1427
  ],
1347
1428
  ),
1348
- HighlightedNames(
1349
- label=BILL_GATES,
1350
- style='turquoise4',
1351
- emailers={
1352
- BORIS_NIKOLIC: f'biotech VC partner of {BILL_GATES}, {EPSTEIN_ESTATE_EXECUTOR}',
1353
- },
1354
- patterns=[
1355
- r"BG",
1356
- r"b?g?C3",
1357
- r"(Bill\s*((and|or)\s*Melinda\s*)?)?Gates",
1358
- r"Melinda(\s*Gates)?",
1359
- r"Microsoft",
1360
- r"MSFT",
1361
- ],
1362
- ),
1429
+
1430
+ # Individuals
1363
1431
  HighlightedNames(
1364
1432
  label=STEVE_BANNON,
1365
1433
  style='color(58)',
1366
- category=POLITICS,
1434
+ category='Republican',
1367
1435
  emailers={
1368
- STEVE_BANNON: "Trump campaign manager, memecoin grifter, convicted criminal",
1436
+ SEAN_BANNON: f"{STEVE_BANNON}'s brother",
1437
+ STEVE_BANNON: "Trump campaign manager, memecoin grifter",
1369
1438
  },
1370
1439
  patterns=[
1371
1440
  r"(American\s*)?Dharma",
1372
- r"((Steve|Sean)\s*)?Bannon?",
1441
+ r"Biosphere",
1373
1442
  ],
1374
1443
  ),
1375
1444
  HighlightedNames(
1376
1445
  style='dark_olive_green3',
1377
1446
  category=FINANCE,
1378
- emailers={STEVEN_HOFFENBERG: "Epstein's ponzi scheme partner at Towers Financial, prison for 18 years"},
1447
+ emailers={STEVEN_HOFFENBERG: "Epstein's Towers Financial ponzi scheme partner, prison 18 years"},
1379
1448
  patterns=[r"(steven?\s*)?hoffenberg?w?"],
1380
1449
  ),
1381
- HighlightedNames(emailers={GHISLAINE_MAXWELL: None}, patterns=[r"gmax(1@ellmax.com)?", r"TerraMar"], style='deep_pink3'),
1382
- HighlightedNames(emailers={JABOR_Y: '"an influential man in Qatar"'}, category='mideast', style='spring_green1'),
1383
- HighlightedNames(emailers={JEFFREY_EPSTEIN: None}, patterns=[r"JEGE", r"LSJ", r"Mark (L. )?Epstein"], style='blue1'),
1384
- HighlightedNames(emailers={KATHRYN_RUEMMLER: 'former Obama legal counsel'}, style='magenta2'),
1385
- HighlightedNames(emailers={MELANIE_WALKER: 'doctor'}, style='pale_violet_red1'),
1386
- HighlightedNames(emailers={PAULA: "Epstein's ex-girlfriend who is now in the opera world"}, label='paula', style='pink1'),
1387
- HighlightedNames(emailers={PRINCE_ANDREW: 'British royal family'}, style='dodger_blue1'),
1388
- HighlightedNames(emailers={SOON_YI_PREVIN: 'wife of Woody Allen'}, style='hot_pink'),
1389
- HighlightedNames(emailers={SULTAN_BIN_SULAYEM: 'CEO of DP World, chairman of ports in Dubai'}, style='green1'),
1450
+ HighlightedNames(emailers={GHISLAINE_MAXWELL: None}, patterns=[r"gmax(1@ellmax.com)?", r"(The )?TerraMar Project"], style='deep_pink3', category='Epstein'),
1451
+ HighlightedNames(emailers={JABOR_Y: '"an influential man in Qatar"'}, category=MIDEAST, style='spring_green1'),
1452
+ HighlightedNames(emailers={KATHRYN_RUEMMLER: 'former Obama legal counsel'}, style='magenta2', category=FRIEND),
1453
+ HighlightedNames(emailers={MELANIE_WALKER: f"doctor, friend of {BILL_GATES}"}, style='pale_violet_red1', category=FRIEND),
1454
+ HighlightedNames(emailers={PAULA: "Epstein's ex-girlfriend who is now in the opera world"}, label='paula', style='pink1', category=FRIEND),
1455
+ HighlightedNames(emailers={PRINCE_ANDREW: 'British royal family'}, style='dodger_blue1', category='Europe'),
1456
+ HighlightedNames(emailers={SOON_YI_PREVIN: 'wife of Woody Allen'}, style='hot_pink', category=FRIEND),
1457
+ HighlightedNames(emailers={SULTAN_BIN_SULAYEM: 'CEO of DP World, chairman of ports in Dubai'}, style='green1', category=MIDEAST),
1390
1458
 
1391
1459
  # HighlightedText not HighlightedNames bc of word boundary issue
1392
1460
  HighlightedText(
@@ -1409,7 +1477,7 @@ HIGHLIGHTED_TEXTS = [
1409
1477
  HighlightedText(
1410
1478
  label='header_field',
1411
1479
  style='plum4',
1412
- patterns=[r'^(> )?(Date|From|Sent|To|C[cC]|Importance|Subject|Bee|B[cC]{2}|Attachments):'],
1480
+ patterns=[r'^(> )?(Date|From|Sent|To|C[cC]|Importance|Reply-To|Subject|Bee|B[cC]{2}|Attachments|Flag|Classification):'],
1413
1481
  ),
1414
1482
  HighlightedText(
1415
1483
  label='http_links',
@@ -1456,6 +1524,7 @@ HIGHLIGHTED_TEXTS = [
1456
1524
  ]
1457
1525
 
1458
1526
  ALL_HIGHLIGHTS = HIGHLIGHTED_NAMES + HIGHLIGHTED_TEXTS
1527
+ JUNK_EMAILERS = [name for name in [hn for hn in HIGHLIGHTED_NAMES if hn.label == JUNK][0].emailers.keys()]
1459
1528
 
1460
1529
 
1461
1530
  class EpsteinHighlighter(RegexHighlighter):
@@ -1464,23 +1533,6 @@ class EpsteinHighlighter(RegexHighlighter):
1464
1533
  highlights = [highlight_group.regex for highlight_group in ALL_HIGHLIGHTS]
1465
1534
 
1466
1535
 
1467
- def get_category_txt_for_name(name: str | None) -> Text | None:
1468
- highlight_group = _get_highlight_group_for_name(name)
1469
-
1470
- if highlight_group and isinstance(highlight_group, HighlightedNames):
1471
- category = highlight_group.category or highlight_group.label
1472
-
1473
- if category != name:
1474
- return styled_category(category)
1475
-
1476
-
1477
- def get_info_for_name(name: str | None) -> str | None:
1478
- highlight_group = _get_highlight_group_for_name(name)
1479
-
1480
- if highlight_group and isinstance(highlight_group, HighlightedNames) and name:
1481
- return highlight_group.get_info(name)
1482
-
1483
-
1484
1536
  def get_style_for_category(category: str) -> str | None:
1485
1537
  if category in CATEGORY_STYLES:
1486
1538
  return CATEGORY_STYLES[category]
@@ -1494,20 +1546,27 @@ def get_style_for_category(category: str) -> str | None:
1494
1546
  return highlight_group.style
1495
1547
 
1496
1548
 
1497
- def get_style_for_name(name: str | None, default_style: str = DEFAULT, allow_bold: bool = True) -> str:
1498
- highlight_group = _get_highlight_group_for_name(name or UNKNOWN)
1549
+ def get_style_for_name(name: str | None, default_style: str = DEFAULT_NAME_STYLE, allow_bold: bool = True) -> str:
1550
+ highlight_group = get_highlight_group_for_name(name or UNKNOWN)
1499
1551
  style = highlight_group.style if highlight_group else default_style
1500
- return style if allow_bold else style.replace('bold', '').strip()
1552
+ style = style if allow_bold else style.replace('bold', '').strip()
1553
+ logger.debug(f"get_style_for_name('{name}', '{default_style}', '{allow_bold}') yielded '{style}'")
1554
+ return style
1501
1555
 
1502
1556
 
1503
1557
  def styled_category(category: str | None) -> Text:
1504
1558
  if not category:
1505
1559
  return QUESTION_MARKS_TXT
1506
1560
 
1507
- return Text(category, get_style_for_category(category) or 'wheat4')
1561
+ category_str = 'resumé' if category == 'resume' else category.lower()
1562
+ return Text(category_str, get_style_for_category(category) or 'wheat4')
1563
+
1508
1564
 
1565
+ def styled_name(name: str | None, default_style: str = DEFAULT_NAME_STYLE) -> Text:
1566
+ return Text(name or UNKNOWN, style=get_style_for_name(name, default_style=default_style))
1509
1567
 
1510
- def _get_highlight_group_for_name(name: str | None) -> HighlightedNames | None:
1568
+
1569
+ def get_highlight_group_for_name(name: str | None) -> HighlightedNames | None:
1511
1570
  if name is None:
1512
1571
  return None
1513
1572
 
@@ -1520,6 +1579,9 @@ def _print_highlighted_names_repr() -> None:
1520
1579
  for hn in HIGHLIGHTED_NAMES:
1521
1580
  if isinstance(hn, HighlightedNames):
1522
1581
  print(indented(repr(hn)) + ',')
1582
+ print(f"pattern: '{hn.regex.pattern}'")
1523
1583
 
1524
1584
  import sys
1525
1585
  sys.exit()
1586
+
1587
+ #_print_highlighted_names_repr()