Philadelphia International Airport will reopen two U.S. Transportation Security Administration-run security checkpoints that were closed two weeks ago amid the government shutdown.
PHL’s Terminal A-West and Terminal F security checkpoints are slated to reopen Thursday, the airport announced via social media. Once opened, the checkpoints will operate on their regular schedules, with Terminal A-West running from 5 a.m. to 10:15 p.m., and Terminal F running from 4:30 a.m. to 9:30 p.m.
“We appreciate your patience as we collaborated with the TSA to maintain efficient security operations,” the airport said. “And thank you to our staff for supporting travelers throughout the closure.”
The airport closed those terminals on Nov. 5 at the request of the TSA, which was affected by the then-ongoing shutdown of the federal government. Amid the shutdown, which began Oct. 1, roughly 800 TSA officers continued screening luggage and staffing airport checkpoints without pay, and employees with the agency missed their first full paychecks on Oct. 24, The Inquirer reported.
The checkpoints’ closures, airport officials said, were temporary, though no date for their return was provided at the time they were shuttered. Checkpoints at Terminals A-East, B, C, and D/E remained operational.
The shutdown also brought a flight-reduction order from the Federal Aviation Administration, which required airlines to, in phases, eliminate 10% of their scheduled trips at 40 of the nation’s busiest airports — PHL included. Designed to ease pressure on air traffic controllers, who were experiencing staffing shortages, that order caused a number of flight delays and cancellations at PHL and other airports around the country.
The flight-reduction order was lifted Sunday, when the FAA retracted its mandate following the end of the shutdown last week. Federal legislators on Nov. 12 reached a deal to fund the government through at least Jan. 30, stopping the shutdown after 43 days — the longest stoppage in history.
Flight schedules at PHL were expected to return to normal quickly. That return to normal, as well as the reopening of the two formerly closed TSA checkpoints, comes just ahead of the holiday travel season, which the airport expects to bring about 1 million passengers through its gates between Friday and Dec. 2.
Philadelphia police have arrested a man suspected of killing one person and injuring another in a shooting last month near the sports complex at Broad Street and Packer Avenue in South Philadelphia.
Abou Keita, 22, was arrested Monday on the 2200 block of South Felton Street in Southwest Philadelphia, where police found him inside a parked vehicle. He was taken into custody and has been charged with murder, attempted murder, aggravated assault, and other offenses in connection with the Oct. 9 shooting, officials said.
That incident unfolded just after 6:10 p.m., when police responded to reports of a shooting near the intersection of Packer Avenue and Broad Street. Responding officers found an Audi sedan with 15 bullet holes just south of the intersection, police said.
Police also discovered Hasson Mason, 23, laying in the street with multiple gunshot wounds to his face and body just north of the intersection on Broad. He was taken to Thomas Jefferson University Hospital, where he was pronounced dead.
Another victim, also a 23-year-old man, was found in front of Chickie’s & Pete’s, a popular restaurant near the sports complex on the 1500 block of Packer Avenue, with gunshot wounds to the torso. The victim, whom police did not identify, was taken to Penn Presbyterian Medical Center, where he was listed in stable condition.
Officials previously told The Inquirer that spent shell casings and a discarded ammunition magazine were discovered near the two shooting scenes. The Audi sedan police discovered struck another car on Broad Street, but the driver in the second vehicle was not harmed, police said.
Police have not said what may have led to the shooting.
Following a cybersecurity breach at the University of Pennsylvania last month, an anonymous hacker claimed that they had compromised data for some 1.2 million students, donors, and alumni — a figure that the school now says is inaccurate.
The university said that a forensic investigation into the breach remains ongoing and that a “precise number” for the amount of records that were improperly accessed was not yet available.
A timeline of when that investigation would be concluded was not provided, with the school noting that analysis of the breach would “take time to complete.”
“While our investigation is ongoing, we do not currently have evidence to indicate that information involved in this incident has been used for the purposes of fraud,” the university said.
The incident was reported Oct. 31, when students and alumni received what the school called a “fraudulent” email crudely criticizing Penn’s hiring practices. The message, which also called on recipients to stop donating money to the university, appeared to come from Penn’s Graduate School of Education.
“We have terrible security practices and are completely unmeritocratic,” the email said.
The breach, the university said, came as a result of “sophisticated identity impersonation commonly known as social engineering,” which is a hacking technique in which “bad actors deceive individuals into giving up confidential information.”
Systems accessed included “Penn’s Customer Relationship Management (CRM) system (Salesforce), file repositories (SharePoint and Box), a reporting application (Qlikview), as well as Marketing Cloud,” the school added.
Electronic medical records from Penn Medicine do not appear to have been accessed in the breach. In its update Friday, the university said that it would notify individuals whose information had been accessed once its analysis of the incident was complete.
The data, according to the Daily Pennsylvanian, Penn’s student newspaper, included memos about donors and their families, receipts of bank transactions, and personal information. The DP said that it reviewed documents released by the alleged hacker on LeakForum and that the perpetrator claimed to have accessed data on 1.2 million Penn students, alumni, and donors.
The Verge, a technology publication, reported that among the items obtained was personal information about former President Joe Biden, whose granddaughter had been a student at Penn. The hacker claiming responsibility for the breach told the outlet that they planned to sell some of the data before releasing it publicly.
Beyond disputing the 1.2 million figure, Penn has not commented on what information was accessed.
Following news of the breach, more than a dozen proposed class-action lawsuits were filed against the university in federal and state courts alleging that Penn failed to secure the personal information of those affected.
The litigation is still in its early stages, and Penn hasn’t yet responded to the allegations in court filings. On Monday, attorneys who filed 10 of the 14 federal lawsuits in the Eastern District of Pennsylvania asked the court to consolidate the cases.
On its information page about the incident, Penn warned school community members to “be wary of suspicious calls or emails that could be phishing attempts,” as well as “any embedded links in emails that you are not familiar with.”
It also advised concerned individuals to take steps such as reviewing their credit reports and activating fraud alerts with major credit bureaus.
“We recognize the severity of this incident and are working diligently to address it,” the university said.
Staff writers Abraham Gutman and Susan Snyder contributed to this article.
The Flyers, Sixers, and Xfinity Mobile Arena on Thursday announced a new partnership with Bank of America, which will serve as the arena and teams’ banking partner this season. In addition to naming rights for the Club Level, the deal includes community efforts aimed at benefiting small businesses and youth sports.
“It just is historic on many levels, in that we’re three iconic brands coming together,” said Comcast Spectator chairman and CEO Dan Hilferty. “We’re focused on being key players in Xfinity Mobile Arena, and Bank of America will partner with us on doing some really, really fun things in the community.” Comcast Spectacor owns both the arena and the Flyers.
The deal, for which financial details were not disclosed, is “the most significant partnership” Bank of America has undertaken in its 20-plus years in the Philadelphia market, said Bank of America Greater Philadelphia president Jim Dever. Among its focuses is serving as a presenting partner in the Sixers’ small-business initiatives, such as the Spirit of Small Business Program and the Enrich Program, which benefit independent local businesses with aid and promotion.
“This is an area that’s a prime focus to us, to be able to drive further economic mobility through small business and amplify their mission, and draw more patronage their way,” Dever said.
The company will also head a youth-hockey-focused initiative in which it plans to donate up to $250,000 worth of hockey equipment to Philadelphia-area schools. Additional programs aimed at youth development and small business support will also be established, the organizations said in a statement, but details remain forthcoming.
Tad Brown, CEO of the Sixers and Harris Blitzer Sports & Entertainment, said the partnership would allow the organizations to come together to “amplify all of our resources to benefit our fans and the region.”
Despite its new banking partner, however, Xfinity Mobile Arena will likely remain cashless, and Dever said the organizations were not envisioning ATMs on the premises. Though, the partnership may create a small change for Hilferty.
“I’m going to have to go elsewhere to get my cash,” he joked. “But that’s OK.”
HBO's Task once again brought the Philadelphia region back into the spotlight over its seven-episode run, showcasing a slew of local spots from Ridley Township to Coatesville and beyond.
And with the series wrapped, we can say: Creator Brad Ingelsby did right by Delco, where the series is largely set.
Sure, the accents were pretty great — but as we look back at the show, it's clear that the Philadelphia region was integral to Task. Here, we've rounded up all the local spots — sans private homes — we could identify in Task. Check out the map below to see what locations wound up the show, and why the series takes us there:
Loading…
Aston Township
Mirenda Center at Neumann University
First seen in episode one
Courtesy of Neumann University
Tom (Mark Ruffalo) mans a table at a job fair here while temporarily working as a recruiter for the FBI. Next to his station, the distinctive pillars of the center’s atrium are visible.
Collingdale
Rita’s Italian Ice & Frozen Custard
First seen in episode one
Alejandro A. Alvarez / Staff Photographer
Emily (Silvia Dionicio), Tom’s daughter, works her part-time job here. In the scene where it is shown, Tom orders a black cherry water ice, a flavor choice of which we approve.
Philadelphia
Former Philadelphia Police Department Headquarters
First seen in episode one
Jessica Griffin / Staff Photographer
We get a brief glimpse of the exterior of the former Philadelphia police headquarters, colloquially known as the Roundhouse. Whether the interior is the same building is unclear, but in the show, this appears to be where the FBI’s Philly field office is located.
Bangor
Bangor Quarry
First seen in episode one
Robbie (Tom Pelphrey), Cliff (Raúl Castillo), and Peaches (Owen Teague) head here for a post-robbery swim. On a real-life note, you should not do the same — not only is it dangerous, but it’s also trespassing, according to the Bangor Borough Police Department.
Coatesville
Lincoln Highway and 2nd Avenue
First seen in episode two
TOM GRALISH / Staff Photographer
The Dark Hearts motorcycle gang rides through this intersection in formation, the giveaway being Presence Bank in the background in one shot.
Coatesville
Polish American Citizens Club
First seen in episode two
Courtesy of HBO
Done up as the so-called Lefty’s Taproom in the show, this location serves as the Dark Hearts’ clubhouse and watering hole. In real life, it’s just off Lincoln Highway, lending a bit of realism to the gang’s ride through downtown Coatesville.
Aston Township
Martin’s Taphouse
First seen in episode two
Martin's stands in as the exterior of the Tip Top Lounge in the series, which we see in this episode stacked with motorcycles parked outside the front door.
Sharon Hill
Dixon’s Lounge
First seen in episode two
Courtesy of HBO
While the exterior of the Tip Top Lounge is in Aston, the interior bears a striking resemblance to Delco’s own Dixon’s Lounge. Here, Robbie and Cliff are stood up by an, ahem, “business partner” before walking out on an order of crabfries.
Boothwyn
Willowbrook Shopping Center
First seen in episode two
Isaiah Vazquez / For The Inquirer
Maeve (Emilia Jones) takes Sam (Ben Lewis Doherty) to a fictional “Val-U Corner” store here with the intent of dropping him off for police to find before the plan goes awry. The store is located near the real Blue Cherry Ice Cream and Bakery, which is visible in the background.
Phoenixville
Phoenixville Area High School
First seen in episode two
During his search for his daughter, Emily (Silvia Dionicio), Tom (Mark Ruffalo) finds her in the dugout of a baseball field that, in real life, is at Phoenixville Area High School. Its distinctive backstop is visible from a bird's-eye view in the series.
Philadelphia
Ralph’s Italian Restaurant
First seen in episode three
MICHAEL KLEIN / Staff
Dark Hearts leaders Jayson (Sam Keeley) and Perry (Jamie McShane) walk through the kitchen here to meet with local drug kingpin Freddy Frias (Elvis Nolasco), but in the show, it doesn’t appear to be serving the Italian food we’re used to in real life.
Aston Township
Mount Hope Cemetery
First seen in episode three
Isaiah Vazquez / For The Inquirer
It’s a very quick shot, but it’s there just under four minutes into the episode. In the background, you can see the Commodore Barry Bridge, and graves on a hill in the cemetery in the foreground.
Union Township
Sixpenny Creek Quarry
First seen in episode three
Courtesy of HBO
Robbie (Tom Pelphrey) and Cliff (Raúl Castillo) finally get their meeting with Eryn (Margarita Levieva), their Dark Hearts insider, but it doesn’t go according to plan.
Upper Darby
Llanerch Diner
First seen in episode three
Tom Gralish / Staff Photographer
Taskforce members Aleah (Thuso Mbedu) and Lizzie (Alison Oliver) head to Upper Darby's famed Llanerch Diner for a tip on the drug house robberies they're investigating, and get a break in the case.
Lansdowne
Rosedon Plaza
First seen in episode three
Jose F. Moreno / Staff Photographer
In the background of one shot during the chase for Ray (Peter Patrikios), you can see the old Doc's Deli (Deli Green). That puts Ray in the corner of the Rosedon Plaza parking lot as Lizzie (Alison Oliver) makes the arrest.
Coatesville
Coatesville Police Department
First seen in episode three
Steven M. Falk / For The Inquirer
Whether the interior is the same station isn’t clear, but an exterior shot sets this spot up as the place where the Task team interrogates Ray (Peter Patrikios) and Shelley (Mickey Sumner). Out front, a police cruiser reads “Delaware County Sheriff,” which is a little far from home.
Holmes
The Ridley House
First seen in episode three
Isaiah Vazquez / For The Inquirer
Following the chase and interrogation, Lizzie (Alison Oliver) and Grasso (Fabien Frankel) head to this local bar to unwind. Grasso indicates it is a Barnaby’s, which, in real life, was true at one point – until the location became the Ridley House in 2019.
King of Prussia
Pennsylvania Turnpike on-ramp
First seen in episode four
TOM GRALISH / Staff Photographer
It’s a quick shot as Tom (Mark Ruffalo) drives around at the beginning of the episode, but you can just make out the LasikPlus building on Mall Boulevard in the background. That puts this Pennsylvania Turnpike entrance in King of Prussia.
Malvern
I-76 Exit 320
First seen in episode four
Tom (Mark Ruffalo) appears to take this exit as he is driving to meet his fellow taskforce members.
Marcus Hook
Marcus Hook Community Center
First seen in episode four
Erin Blewett / For The Inquirer
As County Chief Dorsey (Raphael Sbarge) exits the building, you can see a door tagged with “Delaware County Sheriff’s Office.” But the green awning above him is a dead giveaway — that’s the Marcus Hook Community Center.
Aston Township
Rockdale Industrial Center
First seen in episode four
It's disguised as a trucking depot in the series, but this is where Robbie (Tom Pelphrey) and Cliff (Raúl Castillo) travel with Sam (Ben Lewis Doherty) to arrange transportation for their escape into Canada before being confronted by a Good Samaritan.
Chester
Upland Diner
First seen in episode four
Erin Blewett / For The Inquirer
Upland Diner’s parking lot serves as Robbie’s (Tom Pelphrey) holding area during this episode’s drug deal. Unfortunately, we only get an exterior shot of the building, but the restaurant’s vintage-style sign is proudly on display. Great pancakes, for the record.
Newtown Square
Ridley Creek State Park entrance
First seen in episode four
JOSE F. MORENO / Staff Photographer
Cliff (Raúl Castillo) can be seen turning onto North Sandy Flash Drive from Gradyville Road as he heads to the drug deal meeting spot. If you look closely, you can just barely make out a sign for Ridley Creek State Park.
Wilmington, Del.
Beaver Creek
First seen in episode four
It's tough to spot, but the dam that Cliff (Raúl Castillo) parks his car next to during this episode's failed drug deal — or, more accurately, the Dark Hearts' setup — appears to be in Beaver Creek on the Delaware-Pennsylvania border.
Coatesville
City Clock Apartments
First seen in episode four
Steven M. Falk / For The Inquirer
Another brief shot, but the clock face on the tower of the City Clock Apartments is prominently featured. The building formerly was the National Bank of Coatesville, and has been on the National Register of Historic Places since 1977.
Downingtown
Coatesville-Downingtown Bypass
First seen in episode five
FBI Boss Kathleen McGinty (Martha Plimpton) and the rest of the task force swerve across traffic here while looking for Tom (Mark Ruffalo). In the background, you can just make out the sign for Pacer Pool Services & Supplies.
Downingtown
Marsh Creek State Park
First seen in episode five
After surviving his encounter with Robbie (Tom Pelphrey), Tom (Mark Ruffalo) emerges from the woods to see a beautiful summer scene of families enjoying the lake at Marsh Creek State Park.
Boothwyn
I-95 Pennsylvania Welcome Center
First seen in episode five
Erin Blewett / For The Inquirer
FBI boss Kathleen McGinty (Martha Plimpton) stuffs her face with fast food at the center's picnic tables as the task crew looks for their leader. As McGinty explains, she is “an emotional eater.”
Everett
Woy Bridge
First seen in episode five
In what is likely the farthest-flung filming location – at least in relation to the rest of the local spots – we get some shots of Everett’s Woy Bridge in Bedford County as the taskforce closes in on Robbie (Tom Pelphrey).
Milmont Park
Our Lady of Peace Parish
First seen in episode six
RON TARVER / Staff Photographer
Though disguised well as a juvenile detention facility in the show, this little Delco parish provides at least the exterior shots for where Tom (Mark Ruffalo) meets Sam (Ben Lewis Doherty) for the first time.
Coatesville
High Bridge
First seen in episode seven
This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso's (Fabien Frankel) fate with the Dark Hearts.
Media
Delaware County Courthouse and Government Center
First seen in episode seven
Courtesy of Delaware County Government Center and Courthouse
Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.
story continues after advertisement
Explore the map of all locations at your own pace. Tap onHover overa pin to learn more.
That's it for Task. But rest assured, if HBO decides to focus on Philly again, we'll be back. Until then, see youse later.
Staff Contributors
Design and Development: Sam Morris
Reporting: Nick Vadala
Editing: Emily Babay
First seen in episode
(()=>{var fr=Object.create;var _e=Object.defineProperty;var dr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var vr=Object.getPrototypeOf,gr=Object.prototype.hasOwnProperty;var et=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mr=(e,t,r,n)=>{if(t&&typeof t==”object”||typeof t==”function”)for(let i of pr(t))!gr.call(e,i)&&i!==r&&_e(e,i,{get:()=>t[i],enumerable:!(n=dr(t,i))||n.enumerable});return e};var yr=(e,t,r)=>(r=e!=null?fr(vr(e)):{},mr(t||!e||!e.__esModule?_e(r,”default”,{value:e,enumerable:!0}):r,e));var ft=et(I=>{var Sr={0:”Jan.”,1:”Feb.”,2:”March”,3:”April”,4:”May”,5:”June”,6:”July”,7:”Aug.”,8:”Sept.”,9:”Oct.”,10:”Nov.”,11:”Dec.”};function at(e){return e===void 0&&(e=new Date),Sr[e.getMonth()]}var xr={0:”Jan”,1:”Feb”,2:”Mar”,3:”Apr”,4:”May”,5:”Jun”,6:”Jul”,7:”Aug”,8:”Sep”,9:”Oct”,10:”Nov”,11:”Dec”};function lt(e){return e===void 0&&(e=new Date),xr[e.getMonth()]}function ne(e){return e==null}function ht(e){return typeof e==”number”&&isFinite(e)}function Se(e){return ht(e)&&Math.floor(e)===e}var Tr=[“one”,”two”,”three”,”four”,”five”,”six”,”seven”,”eight”,”nine”],Cr=[“million”,”billion”,”trillion”,”quadrillion”,”quintillion”,”sextillion”,”septillion”,”octillion”,”nonillion”,”decillion”],ut=[“th”,”st”,”nd”,”rd”,”th”,”th”,”th”,”th”,”th”,”th”],Lr=[11,12,13];function ct(e){if(ne(e))return””;var t=+e;return Se(t)?Lr.indexOf(t%100)>-1?ut[0]:ut[t%10]:””}var Pr=[“first”,”second”,”third”,”fourth”,”fifth”,”sixth”,”seventh”,”eighth”,”ninth”],Ar=new RegExp(/s+([^s]*)s*$/);I.apdate=function(e){return e===void 0&&(e=new Date),at(e)+” “+e.getDate()+”, “+e.getFullYear()},I.apdatetab=function(e){return e===void 0&&(e=new Date),lt(e)+” “+e.getDate()+”, “+e.getFullYear()},I.apmonth=at,I.apmonthtab=lt,I.apnumber=function(e){if(ne(e))return””;var t=+e;return Se(t)?t=10?e.toString():Tr[t-1]:e.toString()},I.aptime=function(e){e===void 0&&(e=new Date);var t,r,n=e.getHours(),i=e.getMinutes(),o=i===0;if(o){if(n===0)return”midnight”;if(n===12)return”noon”}return n0?n:12):(t=”p.m.”,r=n===12?n:n-12),o?r+” “+t:r+”:”+(i<10?"0"+i:i)+" "+t},I.capfirst=function(e){if(ne(e))return"";var t=String(e);return""+t.charAt(0).toUpperCase()+t.slice(1)},I.intcomma=function(e){if(ne(e))return"";var t,r=+e;return ht(r)?((t=r.toString().split("."))[0]=t[0].replace(/B(?=(d{3})+(?!d))/g,","),t.join(".")):e.toString()},I.intword=function(e){if(ne(e))return"";var t=+e;if(!Se(t))return e.toString();var r=Math.abs(t);if(r<1e6)return e.toString();var n=Math.ceil(Math.log(r+1)/Math.LN10)-1,i=n-n%3,o=t/Math.pow(10,i);return(o=Math.round(10*o)/10)+" "+Cr[Math.floor(i/3)-2]},I.ordinal=function(e,t){if(t===void 0&&(t=!1),ne(e))return"";var r=+e;return Se(r)?t&&r{(function(e,t){typeof We==”object”&&typeof je<"u"?je.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis=h?m:””+Array(h+1-p.length).join(u)+m},K={s:O,z:function(m){var h=-m.utcOffset(),u=Math.abs(h),p=Math.floor(u/60),c=u%60;return(h<=0?"+":"-")+O(p,2,"0")+":"+O(c,2,"0")},m:function m(h,u){if(h.date()<u.date())return-m(u,h);var p=12*(u.year()-h.year())+(u.month()-h.month()),c=h.clone().add(p,f),y=u-c<0,w=h.clone().add(p+(y?-1:1),f);return+(-(p+(u-c)/(y?c-w:w-c))||0)},a:function(m){return m1)return m(w[0])}else{var b=h.name;$[b]=h,c=b}return!p&&c&&(C=c),c||!p&&C},E=function(m,h){if(ie(m))return m.clone();var u=typeof h==”object”?h:{};return u.date=m,u.args=arguments,new te(u)},M=K;M.l=oe,M.i=ie,M.w=function(m,h){return E(m,{locale:h.$L,utc:h.$u,x:h.$x,$offset:h.$offset})};var te=function(){function m(u){this.$L=oe(u.locale,null,!0),this.parse(u),this.$x=this.$x||u.x||{},this[R]=!0}var h=m.prototype;return h.parse=function(u){this.$d=function(p){var c=p.date,y=p.utc;if(c===null)return new Date(NaN);if(M.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c==”string”&&!/Z$/i.test(c)){var w=c.match(F);if(w){var b=w[2]-1||0,A=(w[7]||”0″).substring(0,3);return y?new Date(Date.UTC(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,A)):new Date(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,A)}}return new Date(c)}(u),this.init()},h.init=function(){var u=this.$d;this.$y=u.getFullYear(),this.$M=u.getMonth(),this.$D=u.getDate(),this.$W=u.getDay(),this.$H=u.getHours(),this.$m=u.getMinutes(),this.$s=u.getSeconds(),this.$ms=u.getMilliseconds()},h.$utils=function(){return M},h.isValid=function(){return this.$d.toString()!==x},h.isSame=function(u,p){var c=E(u);return this.startOf(p)<=c&&c<=this.endOf(p)},h.isAfter=function(u,p){return E(u)<this.startOf(p)},h.isBefore=function(u,p){return this.endOf(p)<E(u)},h.$g=function(u,p,c){return M.u(u)?this[p]:this.set(c,u)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(u,p){var c=this,y=!!M.u(p)||p,w=M.p(u),b=function(j,H){var J=M.w(c.$u?Date.UTC(c.$y,H,j):new Date(c.$y,H,j),c);return y?J:J.endOf(a)},A=function(j,H){return M.w(c.toDate()[j].apply(c.toDate("s"),(y?[0,0,0,0]:[23,59,59,999]).slice(H)),c)},k=this.$W,D=this.$M,z=this.$D,X="set"+(this.$u?"UTC":"");switch(w){case l:return y?b(1,0):b(31,11);case f:return y?b(1,D):b(0,D+1);case d:var q=this.$locale().weekStart||0,Q=(k<q?k+7:k)-q;return b(y?z-Q:z+(6-Q),D);case a:case v:return A(X+"Hours",0);case s:return A(X+"Minutes",1);case o:return A(X+"Seconds",2);case i:return A(X+"Milliseconds",3);default:return this.clone()}},h.endOf=function(u){return this.startOf(u,!1)},h.$set=function(u,p){var c,y=M.p(u),w="set"+(this.$u?"UTC":""),b=(c={},c[a]=w+"Date",c[v]=w+"Date",c[f]=w+"Month",c[l]=w+"FullYear",c[s]=w+"Hours",c[o]=w+"Minutes",c[i]=w+"Seconds",c[n]=w+"Milliseconds",c)[y],A=y===a?this.$D+(p-this.$W):p;if(y===f||y===l){var k=this.clone().set(v,1);k.$d[b](A),k.init(),this.$d=k.set(v,Math.min(this.$D,k.daysInMonth())).$d}else b&&this.$d[b](A);return this.init(),this},h.set=function(u,p){return this.clone().$set(u,p)},h.get=function(u){return this[M.p(u)]()},h.add=function(u,p){var c,y=this;u=Number(u);var w=M.p(p),b=function(D){var z=E(y);return M.w(z.date(z.date()+Math.round(D*u)),y)};if(w===f)return this.set(f,this.$M+u);if(w===l)return this.set(l,this.$y+u);if(w===a)return b(1);if(w===d)return b(7);var A=(c={},c[o]=t,c[s]=r,c[i]=e,c)[w]||1,k=this.$d.getTime()+u*A;return M.w(k,this)},h.subtract=function(u,p){return this.add(-1*u,p)},h.format=function(u){var p=this,c=this.$locale();if(!this.isValid())return c.invalidDate||x;var y=u||"YYYY-MM-DDTHH:mm:ssZ",w=M.z(this),b=this.$H,A=this.$m,k=this.$M,D=c.weekdays,z=c.months,X=c.meridiem,q=function(H,J,se,ae){return H&&(H[J]||H(p,y))||se[J].slice(0,ae)},Q=function(H){return M.s(b%12||12,H,"0")},j=X||function(H,J,se){var ae=H{window.addEventListener(“resize”,()=>{rt(),$e()}),window.addEventListener(“scroll”,()=>{$e()})},rt=()=>{wr.setAttribute(“viewBox”,`0 0 ${window.innerWidth} ${window.innerHeight}`)},$e=()=>{let e=document.querySelector(“.js-steps”).dataset.current;re!==e&&(re=e,ot()),!re||re==”all”?it():nt()},nt=()=>{if(re){let e=document.querySelector(`.js-steps-step[data-step=”${re}”] .js-steps-pin`),t=document.querySelector(“.js-map-location.is-current .js-map-pin”);if(t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=document.querySelector(“.js-steps”).getBoundingClientRect(),s=o.top>0?o.top:0,a=r.width/2;ce.setAttribute(“y1”,r.top+a-s),ce.setAttribute(“x1”,r.left+a),ce.setAttribute(“y2”,n.top+a-s),ce.setAttribute(“x2”,n.left+a)}}},it=()=>{ce.classList.add(“is-hidden”)},Mr=()=>{ce.classList.remove(“is-hidden”)},ot=()=>{it(),clearTimeout(tt),tt=setTimeout(()=>{re!==void 0&&re!==”all”&&(nt(),Mr())},1200)},st={init:()=>{br(),rt(),$e()},onChange:()=>{ot()}};var Rn=ft();var ze=e=>{if(e)return e.trim().toLowerCase().normalize(“NFD”).replace(/[u0300-u036f]/g,””).replace(/[^A-Z0-9 ]/gi,””).trim().replace(/ /g,”-“)};var dt=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);var pe=(e,t=null,r=null)=>{r||(r=document.querySelector(“head”));let n=document.createElement(“script”);n.type=”text/javascript”,n.src=e,t&&(n.onload=t),r.appendChild(n)},pt=()=>(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state===”Subscribed”,vt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state;return window.location.host.includes(“zzz-systest”)||window.location.host.includes(“pmn.arcpublishing.com”)||window.location.host.includes(“stage.fusion.inquirer.com”)||typeof t>”u”},gt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.hasAdsFreeReading;return!!(t&&t==1)},Be=()=>window.location.host.includes(“localhost”),xe=(e,t=””)=>{let r=document.querySelector(`template#${e}`);if(!r||!(r instanceof HTMLTemplateElement))return console.log(`Couldn’t find .`),null;let n=r.content.cloneNode(!0).childNodes;if(n.length==0)return console.log(`Template ${r} has no children, returning null.`),null;n.length>1&&console.log(`Template ${r} has multiple children, only returning the first.`);let i=n[0];return i.setAttribute(“data-id”,t),i},Te=(e,t)=>{let r=[…e.querySelectorAll(“[data-populate]”)];e.dataset.populate&&r.unshift(e);let n=r.filter(i=>{let o=i.closest(“[data-populate-context]”);return!o||o==e});for(let i of n){let s=i.dataset.populate.trim().split(/s*,s*/).map(a=>a.split(/s*:s*/));for(let[a,d]of s){let g=a.split(“.”).reduce((x,F)=>x?.[F],t),l=g==null||g==null,v=d?.split(/s+/)||[“innerHTML”];for(let x of v)x.startsWith(“.”)&&i.classList.toggle(x.substring(1),l?!1:g),!l&&(x==”innerHTML”?i.innerHTML=g:x.startsWith(“@”)?i.setAttribute(x.substring(1),g):x.startsWith(“–“)&&i.style.setProperty(x,g))}}};var Er=()=>{gt()&&document.querySelectorAll(“.js-adbox”).forEach(t=>{t.classList.add(“is-hidden”)})},mt={init:()=>{Er()}};var le,yt,kr=()=>{le=document.getElementById(“js-inno-toast”)},Dr=e=>{if(!le)return;le.innerHTML=e,le.classList.add(“inno-toast–active”);let t=()=>{le.addEventListener(“transitionend”,$r,{once:!0}),le.classList.remove(“inno-toast–active”)};clearTimeout(yt),yt=setTimeout(t,5e3)},$r=()=>{le.innerHTML=””},ue={init:()=>{kr()},showToast:Dr};var Ce,wt=!1,zr=async()=>new Promise(e=>{setTimeout(()=>{console.log(“simulating createShareLink for localhost”),e(“https://inquirer.com/interactives”),Br()},100)}),Br=()=>{let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||setTimeout(()=>{let t=e?.querySelector(“span”);t&&(t.innerHTML=”Gift link copied to clipboard“)},20)},Fr=()=>{let e=window.services?.createShareLink;e&&(Ce=e),Be()&&(Ce=zr),Ce&&Or()},Hr=async e=>{let t=”text/plain”,r=async()=>{try{return await Ce(window.location.pathname)}catch{e.dataset.state=”error”,ue.showToast(“Hmm, we couldn’t generate a gift link…”)}},n=new ClipboardItem({[t]:r()});await navigator.clipboard.write([n]).catch(i=>{console.log(i),ue.showToast(“Couldn’t copy to clipboard, try again?”),e.dataset.state=”error”}),ue.showToast(“Gift link copied to clipboard!”),e.dataset.state=”complete”},Or=()=>{document.querySelectorAll(“.js-gift”).forEach(t=>{(pt()||Be()||vt())&&t.classList.add(“is-available”)}),document.querySelectorAll(“.js-gift-button”).forEach(t=>{t instanceof HTMLButtonElement&&t.addEventListener(“click”,()=>{t.classList.contains(“disabled”)||(t.dataset.state=”loading”,wt=!0,Hr(t),setTimeout(()=>{t.dataset.state=”ready”},2e3))})});let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||Rr(e)},Rr=e=>{new MutationObserver(r=>{for(let n of r){let i=[…n.addedNodes].at(0);if(!(i instanceof HTMLElement))return;wt&&ue.showToast(i.outerHTML)}}).observe(e,{subtree:!0,childList:!0})},bt={init:()=>{Fr()}};var Ur=()=>{window.addEventListener(“message”,e=>{if(e.data[“datawrapper-height”]){let t=e.data[“datawrapper-height”];for(let r in t)document.querySelector(`#datawrapper-chart-${r}`).setAttribute(“height”,t[r])}})},Ir=()=>{document.querySelectorAll(“.js-datawrapper-graphic”).forEach(e=>{pe(`https://datawrapper.dwcdn.net/${e.dataset.id}/embed.js`,null,e)})},qr=()=>{window.addEventListener(“message”,e=>{let t=e.data;document.querySelectorAll(`iframe[src*=”${t.id}”]`).forEach(n=>{n.style.height=`${t.height}px`})},!1)},Gr=()=>{document.querySelectorAll(“.js-pym-graphic”).forEach(e=>{if(typeof window{new window.pym.Parent(e.id,e.dataset.iframe)};typeof window.pym>”u”?pe(“https://pym.nprapps.org/pym.v1.min.js”,t):t()}})},Mt={init:()=>{Ur(),Ir(),Gr(),qr()}};var ve,Nr=()=>{document.querySelectorAll(“.js-hover”).forEach(e=>{e.addEventListener(“click”,()=>{St(e)}),e.addEventListener(“mouseenter”,()=>{St(e)}),e.addEventListener(“mouseout”,()=>{xt(e)})}),window.addEventListener(“scroll”,()=>{ve!==null&&Zr()})},Zr=()=>{(ve>window.scrollY+100||ve{xt(e)})},St=e=>{e.classList.add(“is-visible”),ve=window.scrollY},xt=e=>{e.classList.remove(“is-visible”),ve=null},Tt={init:()=>{Nr()}};var N=Uint8Array,he=Uint16Array,Wr=Int32Array,Ct=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Lt=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),jr=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pt=function(e,t){for(var r=new he(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var i=new Wr(r[30]),n=1;n<30;++n)for(var o=r[n];o<r[n+1];++o)i[o]=o-r[n]<<5|n;return{b:r,r:i}},At=Pt(Ct,2),Et=At.b,Jr=At.r;Et[28]=258,Jr[258]=28;var kt=Pt(Lt,0),Yr=kt.b,Vn=kt.r,Oe=new he(32768);for(S=0;S>1|(S&21845)<>2|(_&13107)<>4|(_&3855)<>8|(_&255)<>1;var _,S,ge=function(e,t,r){for(var n=e.length,i=0,o=new he(t);i<n;++i)e[i]&&++o[e[i]-1];var s=new he(t);for(i=1;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(r){a=new he(1<<t);var d=15-t;for(i=0;i<n;++i)if(e[i])for(var f=i<<4|e[i],g=t-e[i],l=s[e[i]-1]++<<g,v=l|(1<<g)-1;l>d]=f}else for(a=new he(n),i=0;i>15-e[i]);return a},me=new N(288);for(S=0;S<144;++S)me[S]=8;var S;for(S=144;S<256;++S)me[S]=9;var S;for(S=256;S<280;++S)me[S]=7;var S;for(S=280;S<288;++S)me[S]=8;var S,Dt=new N(32);for(S=0;S<32;++S)Dt[S]=5;var S;var Vr=ge(me,9,1);var Kr=ge(Dt,5,1),Fe=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},Y=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<>(t&7)&r},He=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<>(t&7)},Xr=function(e){return(e+7)/8|0},Qr=function(e,t,r){return(t==null||te.length)&&(r=e.length),new N(e.subarray(t,r))};var _r=[“unexpected EOF”,”invalid block type”,”invalid length/literal”,”invalid distance”,”stream finished”,”no stream handler”,,”no callback”,”invalid UTF-8 data”,”extra field too long”,”date not in range 1980-2099″,”filename too long”,”stream finishing”,”invalid zip data”],G=function(e,t,r){var n=new Error(t||_r[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,G),!r)throw n;return n},Re=function(e,t,r,n){var i=e.length,o=n?n.length:0;if(!i||t.f&&!t.l)return r||new N(0);var s=!r,a=s||t.i!=2,d=t.i;s&&(r=new N(i*3));var f=function(ae){var Xe=r.length;if(ae>Xe){var Qe=new N(Math.max(Xe*2,ae));Qe.set(r),r=Qe}},g=t.f||0,l=t.p||0,v=t.b||0,x=t.l,F=t.d,P=t.m,V=t.n,O=i*8;do{if(!x){g=Y(e,l,1);var K=Y(e,l+1,3);if(l+=3,K)if(K==1)x=Vr,F=Kr,P=9,V=5;else if(K==2){var ie=Y(e,l,31)+257,oe=Y(e,l+10,15)+4,E=ie+Y(e,l+5,31)+1;l+=14;for(var M=new N(E),te=new N(19),U=0;U<oe;++U)te[jr[U]]=Y(e,l+U*3,7);l+=oe*3;for(var m=Fe(te),h=(1<<m)-1,u=ge(te,m,1),U=0;U>4;if(C<16)M[U++]=C;else{var c=0,y=0;for(C==16?(y=3+Y(e,l,3),l+=2,c=M[U-1]):C==17?(y=3+Y(e,l,7),l+=3):C==18&&(y=11+Y(e,l,127),l+=7);y–;)M[U++]=c}}var w=M.subarray(0,ie),b=M.subarray(ie);P=Fe(w),V=Fe(b),x=ge(w,P,1),F=ge(b,V,1)}else G(1);else{var C=Xr(l)+4,$=e[C-4]|e[C-3]<i){d&&G(0);break}a&&f(v+$),r.set(e.subarray(C,R),v),t.b=v+=$,t.p=l=R*8,t.f=g;continue}if(l>O){d&&G(0);break}}a&&f(v+131072);for(var A=(1<<P)-1,k=(1<>4;if(l+=c&15,l>O){d&&G(0);break}if(c||G(2),z264){var U=z-257,q=Ct[U];X=Y(e,l,(1<>4;Q||G(3),l+=Q&15;var b=Yr[j];if(j>3){var q=Lt[j];b+=He(e,l)&(1<O){d&&G(0);break}a&&f(v+131072);var H=v+X;if(v<b){var J=o-b,se=Math.min(b,H);for(J+v<0&&G(3);v<se;++v)r[v]=n[J+v]}for(;v<H;++v)r[v]=r[v-b]}}t.l=x,t.p=D,t.b=v,t.f=g,x&&(g=1,t.m=P,t.d=F,t.n=V)}while(!g);return v!=r.length&&s?Qr(r,0,v):r.subarray(0,v)};var en=new N(0);var tn=function(e){(e[0]!=31||e[1]!=139||e[2]!=8)&&G(6,"invalid gzip data");var t=e[3],r=10;t&4&&(r+=(e[10]|e[11]<>3&1)+(t>>4&1);n>0;n-=!e[r++]);return r+(t&2)},rn=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<>>0};var nn=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<>5&1)==+!t&&G(6,”invalid zlib data: “+(e[1]&32?”need”:”unexpected”)+” dictionary”),(e[1]>>3&4)+2};function on(e,t){return Re(e,{i:2},t&&t.out,t&&t.dictionary)}function sn(e,t){var r=tn(e);return r+8>e.length&&G(6,”invalid gzip data”),Re(e.subarray(r,-8),{i:2},t&&t.out||new N(rn(e)),t&&t.dictionary)}function an(e,t){return Re(e.subarray(nn(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}function $t(e,t){return e[0]==31&&e[1]==139&&e[2]==8?sn(e,t):(e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31?on(e,t):an(e,t)}var ln=typeof TextDecodercn(e,”name”,{value:t,configurable:!0}),B=(e,t,r)=>new Promise((n,i)=>{var o=d=>{try{a(r.next(d))}catch(f){i(f)}},s=d=>{try{a(r.throw(d))}catch(f){i(f)}},a=d=>d.done?n(d.value):Promise.resolve(d.value).then(o,s);a((r=r.apply(e,t)).next())}),Qn=T((e,t)=>{let r=!1,n=””,i=L.GridLayer.extend({createTile:T((o,s)=>{let a=document.createElement(“img”),d=new AbortController,f=d.signal;return a.cancel=()=>{d.abort()},r||(e.getHeader().then(g=>{g.tileType===1?console.error(“Error: archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles. See https://github.com/protomaps/PMTiles/tree/main/js for details.”):g.tileType===2?n=”image/png”:g.tileType===3?n=”image/jpeg”:g.tileType===4?n=”image/webp”:g.tileType===5&&(n=”image/avif”)}),r=!0),e.getZxy(o.z,o.x,o.y,f).then(g=>{if(g){let l=new Blob([g.data],{type:n}),v=window.URL.createObjectURL(l);a.src=v,a.cancel=void 0,s(void 0,a)}}).catch(g=>{if(g.name!==”AbortError”)throw g}),a},”createTile”),_removeTile:T(function(o){let s=this._tiles[o];s&&(s.el.cancel&&s.el.cancel(),s.el.width=0,s.el.height=0,s.el.deleted=!0,L.DomUtil.remove(s.el),delete this._tiles[o],this.fire(“tileunload”,{tile:s.el,coords:this._keyToTileCoords(o)}))},”_removeTile”)});return new i(t)},”leafletRasterLayer”),hn=T(e=>(t,r)=>{if(r instanceof AbortController)return e(t,r);let n=new AbortController;return e(t,n).then(i=>r(void 0,i.data,i.cacheControl||””,i.expires||””),i=>r(i)).catch(i=>r(i)),{cancel:T(()=>n.abort(),”cancel”)}},”v3compat”),zt=class{constructor(t){this.tilev4=T((r,n)=>B(this,null,function*(){if(r.type===”json”){let x=r.url.substr(10),F=this.tiles.get(x);if(F||(F=new Le(x),this.tiles.set(x,F)),this.metadata)return{data:yield F.getTileJson(r.url)};let P=yield F.getHeader();return(P.minLon>=P.maxLon||P.minLat>=P.maxLat)&&console.error(`Bounds of PMTiles archive ${P.minLon},${P.minLat},${P.maxLon},${P.maxLat} are not valid.`),{data:{tiles:[`${r.url}/{z}/{x}/{y}`],minzoom:P.minZoom,maxzoom:P.maxZoom,bounds:[P.minLon,P.minLat,P.maxLon,P.maxLat]}}}let i=new RegExp(/pmtiles://(.+)/(d+)/(d+)/(d+)/),o=r.url.match(i);if(!o)throw new Error(“Invalid PMTiles protocol URL”);let s=o[1],a=this.tiles.get(s);a||(a=new Le(s),this.tiles.set(s,a));let d=o[2],f=o[3],g=o[4],l=yield a.getHeader(),v=yield a?.getZxy(+d,+f,+g,n.signal);if(v)return{data:new Uint8Array(v.data),cacheControl:v.cacheControl,expires:v.expires};if(l.tileType===1){if(this.errorOnMissingTile)throw new Error(“Tile not found.”);return{data:new Uint8Array}}return{data:null}}),”tilev4″),this.tile=hn(this.tilev4),this.tiles=new Map,this.metadata=t?.metadata||!1,this.errorOnMissingTile=t?.errorOnMissingTile||!1}add(t){this.tiles.set(t.source.getKey(),t)}get(t){return this.tiles.get(t)}};T(zt,”Protocol”);var Bt=zt;function Ft(e,t){return(t>>>0)*4294967296+(e>>>0)}T(Ft,”toNum”);function Ht(e,t){let r=t.buf,n=r[t.pos++],i=(n&112)>>4;if(n<128||(n=r[t.pos++],i|=(n&127)<<3,n<128)||(n=r[t.pos++],i|=(n&127)<<10,n<128)||(n=r[t.pos++],i|=(n&127)<<17,n<128)||(n=r[t.pos++],i|=(n&127)<<24,n<128)||(n=r[t.pos++],i|=(n&1)<<31,n<128))return Ft(e,i);throw new Error("Expected varint not more than 10 bytes")}T(Ht,"readVarintRemainder");function fe(e){let t=e.buf,r=t[e.pos++],n=r&127;return r<128||(r=t[e.pos++],n|=(r&127)<<7,r<128)||(r=t[e.pos++],n|=(r&127)<<14,r<128)||(r=t[e.pos++],n|=(r&127)<<21,r<128)?n:(r=t[e.pos],n|=(r&15)<<28,Ht(n,e))}T(fe,"readVarint");function Ie(e,t,r,n){if(n===0){r===1&&(t[0]=e-1-t[0],t[1]=e-1-t[1]);let i=t[0];t[0]=t[1],t[1]=i}}T(Ie,"rotate");function Ot(e,t){let r=ye(2,e),n=t,i=t,o=t,s=[0,0],a=1;for(;a26)throw new Error(“Tile zoom level exceeds max safe number limit (26)”);if(t>ye(2,e)-1||r>ye(2,e)-1)throw new Error(“tile x/y outside zoom level bounds”);let n=fn[e],i=ye(2,e),o=0,s=0,a=0,d=[t,r],f=i/2;for(;f>0;)o=(d[0]&f)>0?1:0,s=(d[1]&f)>0?1:0,a+=f*f*(3*o^s),Ie(f,d,o,s),f=f/2;return n+a}T(Rt,”zxyToTileId”);function dn(e){let t=0,r=0;for(let n=0;n<27;n++){let i=(1<<n)*(1<e)return Ot(n,e-t);t+=i}throw new Error(“Tile zoom level exceeds max safe number limit (26)”)}T(dn,”tileIdToZxy”);var pn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.None=1]=”None”,e[e.Gzip=2]=”Gzip”,e[e.Brotli=3]=”Brotli”,e[e.Zstd=4]=”Zstd”,e))(pn||{});function Pe(e,t){return B(this,null,function*(){if(t===1||t===0)return e;if(t===2){if(typeof globalThis.DecompressionStream>”u”)return $t(new Uint8Array(e));let r=new Response(e).body;if(!r)throw new Error(“Failed to read response stream”);let n=r.pipeThrough(new globalThis.DecompressionStream(“gzip”));return new Response(n).arrayBuffer()}throw new Error(“Compression method not supported”)})}T(Pe,”defaultDecompress”);var vn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.Mvt=1]=”Mvt”,e[e.Png=2]=”Png”,e[e.Jpeg=3]=”Jpeg”,e[e.Webp=4]=”Webp”,e[e.Avif=5]=”Avif”,e))(vn||{});function Ut(e){return e===1?”.mvt”:e===2?”.png”:e===3?”.jpg”:e===4?”.webp”:e===5?”.avif”:””}T(Ut,”tileTypeExt”);var gn=127;function It(e,t){let r=0,n=e.length-1;for(;r>1,o=t-e[i].tileId;if(o>0)r=i+1;else if(o=0&&(e[n].runLength===0||t-e[n].tileId-1,o=/Chrome|Chromium|Edg|OPR|Brave/.test(n);this.chromeWindowsNoCache=!1,i&&o&&(this.chromeWindowsNoCache=!0)}getKey(){return this.url}setHeaders(t){this.customHeaders=t}getBytes(t,r,n,i){return B(this,null,function*(){let o,s;n?s=n:(o=new AbortController,s=o.signal);let a=new Headers(this.customHeaders);a.set(“range”,`bytes=${t}-${t+r-1}`);let d;this.mustReload?d=”reload”:this.chromeWindowsNoCache&&(d=”no-store”);let f=yield fetch(this.url,{signal:s,cache:d,headers:a});if(t===0&&f.status===416){let v=f.headers.get(“Content-Range”);if(!v||!v.startsWith(“bytes */”))throw new Error(“Missing content-length on 416 response”);let x=+v.substr(8);f=yield fetch(this.url,{signal:s,cache:”reload”,headers:{range:`bytes=0-${x-1}`}})}let g=f.headers.get(“Etag”);if(g!=null&&g.startsWith(“W/”)&&(g=null),f.status===416||i&&g&&g!==i)throw this.mustReload=!0,new Ue(`Server returned non-matching ETag ${i} after one retry. Check browser extensions and servers for issues that may affect correct ETag headers.`);if(f.status>=300)throw new Error(`Bad response code: ${f.status}`);let l=f.headers.get(“Content-Length”);if(f.status===200&&(!l||+l>r))throw o&&o.abort(),new Error(“Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.”);return{data:yield f.arrayBuffer(),etag:g||void 0,cacheControl:f.headers.get(“Cache-Control”)||void 0,expires:f.headers.get(“Expires”)||void 0}})}};T(qt,”FetchSource”);var yn=qt;function W(e,t){let r=e.getUint32(t+4,!0),n=e.getUint32(t+0,!0);return r*ye(2,32)+n}T(W,”getUint64″);function Gt(e,t){let r=new DataView(e),n=r.getUint8(7);if(n>3)throw new Error(`Archive is spec version ${n} but this library supports up to spec version 3`);return{specVersion:n,rootDirectoryOffset:W(r,8),rootDirectoryLength:W(r,16),jsonMetadataOffset:W(r,24),jsonMetadataLength:W(r,32),leafDirectoryOffset:W(r,40),leafDirectoryLength:W(r,48),tileDataOffset:W(r,56),tileDataLength:W(r,64),numAddressedTiles:W(r,72),numTileEntries:W(r,80),numTileContents:W(r,88),clustered:r.getUint8(96)===1,internalCompression:r.getUint8(97),tileCompression:r.getUint8(98),tileType:r.getUint8(99),minZoom:r.getUint8(100),maxZoom:r.getUint8(101),minLon:r.getInt32(102,!0)/1e7,minLat:r.getInt32(106,!0)/1e7,maxLon:r.getInt32(110,!0)/1e7,maxLat:r.getInt32(114,!0)/1e7,centerZoom:r.getUint8(118),centerLon:r.getInt32(119,!0)/1e7,centerLat:r.getInt32(123,!0)/1e7,etag:t}}T(Gt,”bytesToHeader”);function qe(e){let t={buf:new Uint8Array(e),pos:0},r=fe(t),n=[],i=0;for(let o=0;o<r;o++){let s=fe(t);n.push({tileId:i+s,offset:0,length:0,runLength:1}),i+=s}for(let o=0;o<r;o++)n[o].runLength=fe(t);for(let o=0;o<r;o++)n[o].length=fe(t);for(let o=0;o0?n[o].offset=n[o-1].offset+n[o-1].length:n[o].offset=s-1}return n}T(qe,”deserializeIndex”);var Nt=class extends Error{};T(Nt,”EtagMismatch”);var Ue=Nt;function Ge(e,t){return B(this,null,function*(){let r=yield e.getBytes(0,16384);if(new DataView(r.data).getUint16(0,!0)!==19792)throw new Error(“Wrong magic number for PMTiles archive”);let n=r.data.slice(0,gn),i=Gt(n,r.etag),o=r.data.slice(i.rootDirectoryOffset,i.rootDirectoryOffset+i.rootDirectoryLength),s=`${e.getKey()}|${i.etag||””}|${i.rootDirectoryOffset}|${i.rootDirectoryLength}`,a=qe(yield t(o,i.internalCompression));return[i,[s,a.length,a]]})}T(Ge,”getHeaderAndRoot”);function Ne(e,t,r,n,i){return B(this,null,function*(){let o=yield e.getBytes(r,n,void 0,i.etag),s=yield t(o.data,i.internalCompression),a=qe(s);if(a.length===0)throw new Error(“Empty directory is invalid”);return a})}T(Ne,”getDirectory”);var wn=class{constructor(t=100,r=!0,n=Pe){this.cache=new Map,this.maxCacheEntries=t,this.counter=1,this.decompress=n}getHeader(t){return B(this,null,function*(){let r=t.getKey(),n=this.cache.get(r);if(n)return n.lastUsed=this.counter++,n.data;let i=yield Ge(t,this.decompress);return i[1]&&this.cache.set(i[1][0],{lastUsed:this.counter++,data:i[1][2]}),this.cache.set(r,{lastUsed:this.counter++,data:i[0]}),this.prune(),i[0]})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,s.data;let a=yield Ne(t,this.decompress,r,n,i);return this.cache.set(o,{lastUsed:this.counter++,data:a}),this.prune(),a})}prune(){if(this.cache.size>this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{Ge(t,this.decompress).then(a=>{a[1]&&this.cache.set(a[1][0],{lastUsed:this.counter++,data:Promise.resolve(a[1][2])}),o(a[0]),this.prune()}).catch(a=>{s(a)})});return this.cache.set(r,{lastUsed:this.counter++,data:i}),i})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,yield s.data;let a=new Promise((d,f)=>{Ne(t,this.decompress,r,n,i).then(g=>{d(g),this.prune()}).catch(g=>{f(g)})});return this.cache.set(o,{lastUsed:this.counter++,data:a}),a})}prune(){if(this.cache.size>=this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{this.getHeader(t).then(s=>{i(),this.invalidations.delete(r)}).catch(s=>{o(s)})});this.invalidations.set(r,n)})}};T(Zt,”SharedPromiseCache”);var bn=Zt,Wt=class{constructor(t,r,n){typeof t==”string”?this.source=new yn(t):this.source=t,n?this.decompress=n:this.decompress=Pe,r?this.cache=r:this.cache=new bn}getHeader(){return B(this,null,function*(){return yield this.cache.getHeader(this.source)})}getZxyAttempt(t,r,n,i){return B(this,null,function*(){let o=Rt(t,r,n),s=yield this.cache.getHeader(this.source);if(ts.maxZoom)return;let a=s.rootDirectoryOffset,d=s.rootDirectoryLength;for(let f=0;f0){let v=yield this.source.getBytes(s.tileDataOffset+l.offset,l.length,i,s.etag);return{data:yield this.decompress(v.data,s.tileCompression),cacheControl:v.cacheControl,expires:v.expires}}a=s.leafDirectoryOffset+l.offset,d=l.length}else return}throw new Error(“Maximum directory depth exceeded”)})}getZxy(t,r,n,i){return B(this,null,function*(){try{return yield this.getZxyAttempt(t,r,n,i)}catch(o){if(o instanceof Ue)return this.cache.invalidate(this.source),yield this.getZxyAttempt(t,r,n,i);throw o}})}getMetadataAttempt(){return B(this,null,function*(){let t=yield this.cache.getHeader(this.source),r=yield this.source.getBytes(t.jsonMetadataOffset,t.jsonMetadataLength,void 0,t.etag),n=yield this.decompress(r.data,t.internalCompression),i=new TextDecoder(“utf-8″);return JSON.parse(i.decode(n))})}getMetadata(){return B(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(t){if(t instanceof Ue)return this.cache.invalidate(this.source),yield this.getMetadataAttempt();throw t}})}getTileJson(t){return B(this,null,function*(){let r=yield this.getHeader(),n=yield this.getMetadata(),i=Ut(r.tileType);return{tilejson:”3.0.0″,scheme:”xyz”,tiles:[`${t}/{z}/{x}/{y}${i}`],vector_layers:n.vector_layers,attribution:n.attribution,description:n.description,name:n.name,version:n.version,bounds:[r.minLon,r.minLat,r.maxLon,r.maxLat],center:[r.centerLon,r.centerLat,r.centerZoom],minzoom:r.minZoom,maxzoom:r.maxZoom}})}};T(Wt,”PMTiles”);var Le=Wt;var we=[{name:”Mirenda Center at Neumann University”,town:”Aston Township”,coordinates:”39.87518295957942, -75.44287264018742″,photo:”CUFT75EQJFCNXF6TBJWB47IZBE”,description:”Tom (Mark Ruffalo) mans a table at a job fair here while temporarily working as a recruiter for the FBI. Next to his station, the distinctive pillars of the centeru2019s atrium are visible.”,episode:”1″},{name:”Rita’s Italian Ice & Frozen Custard”,town:”Collingdale”,coordinates:”39.91438144966683, -75.27198755476991″,photo:”PVN6FY7AZVH57NJJ5QZMPSORVQ”,description:”Emily (Silvia Dionicio), Tomu2019s daughter, works her part-time job here. In the scene where it is shown, Tom orders a black cherry water ice, a flavor choice of which we approve.”,episode:”1″},{name:”Former Philadelphia Police Department Headquarters”,town:”Philadelphia”,coordinates:”39.95454212611587, -75.15196309318775″,photo:”L7RTCVGETVB6BGP3OI6FGI75II”,description:”We get a brief glimpse of the exterior of the former Philadelphia police headquarters, colloquially known as the Roundhouse. Whether the interior is the same building is unclear, but in the show, this appears to be where the FBIu2019s Philly field office is located.”,episode:”1″},{name:”Bangor Quarry”,town:”Bangor”,coordinates:”40.870304770450126, -75.20395382209078″,photo:””,description:”Robbie (Tom Pelphrey), Cliff (RaxFAl Castillo), and Peaches (Owen Teague) head here for a post-robbery swim. On a real-life note, you should not do the same u2014 not only is it dangerous, but itu2019s also trespassing, according to the Bangor Borough Police Department.”,episode:”1″},{name:”Lincoln Highway and 2nd Avenue”,town:”Coatesville”,coordinates:”39.98367030794463, -75.82206085300957″,photo:”DKXFYZ5EGBEHJJKLSUGLQQDAR4″,description:”The Dark Hearts motorcycle gang rides through this intersection in formation, the giveaway being Presence Bank in the background in one shot.”,episode:”2″},{name:”Polish American Citizens Club”,town:”Coatesville”,coordinates:”39.98079295642107, -75.83090353169075″,photo:”WICMTOVTBFE3HANVTH2PSHED5M”,description:”Done up as the so-called Leftyu2019s Taproom in the show, this location serves as the Dark Heartsu2019 clubhouse and watering hole. In real life, itu2019s just off Lincoln Highway, lending a bit of realism to the gangu2019s ride through downtown Coatesville.”,episode:”2″},{name:”Martin’s Taphouse”,town:”Aston Township”,coordinates:”39.89042265129427, -75.43449503510138″,photo:””,description:”Martin’s stands in as the exterior of the Tip Top Lounge in the series, which we see in this episode stacked with motorcycles parked outside the front door.”,episode:”2″},{name:”Dixon’s Lounge”,town:”Sharon Hill”,coordinates:”39.897139107273794, -75.27191565278125″,photo:”BHMNCU4FFJGOBPUKYCZBB2XEOA”,description:”While the exterior of the Tip Top Lounge is in Aston, the interior bears a striking resemblance to Delcou2019s own Dixonu2019s Lounge. Here, Robbie and Cliff are stood up by an, ahem, u201Cbusiness partneru201D before walking out on an order of crabfries.”,episode:”2″},{name:”Willowbrook Shopping Center”,town:”Boothwyn”,coordinates:”39.83646391291799, -75.44319408140227″,photo:”ZU5QXUIDONETHIPPADUJYMAKCY”,description:”Maeve (Emilia Jones) takes Sam (Ben Lewis Doherty) to a fictional u201CVal-U Corneru201D store here with the intent of dropping him off for police to find before the plan goes awry. The store is located near the real Blue Cherry Ice Cream and Bakery, which is visible in the background.”,episode:”2″},{name:”Phoenixville Area High School”,town:”Phoenixville”,coordinates:”40.11868357112564, -75.51793551723154″,photo:””,description:”During his search for his daughter, Emily (Silvia Dionicio), Tom (Mark Ruffalo) finds her in the dugout of a baseball field that, in real life, is at Phoenixville Area High School. Its distinctive backstop is visible from a bird’s-eye view in the series.”,episode:”2″},{name:”Ralph’s Italian Restaurant”,town:”Philadelphia”,coordinates:”39.94006065749021, -75.15774535245488″,photo:”GMDZYMAHRNFGPBTYLRABBDJYHM”,description:”Dark Hearts leaders Jayson (Sam Keeley) and Perry (Jamie McShane) walk through the kitchen here to meet with local drug kingpin Freddy Frias (Elvis Nolasco), but in the show, it doesnu2019t appear to be serving the Italian food weu2019re used to in real life.”,episode:”3″},{name:”Mount Hope Cemetery”,town:”Aston Township”,coordinates:”39.871593701306836, -75.4390865914003″,photo:”4PCNSW4SPBAW7L2WFSJ2STJ3IM”,description:”Itu2019s a very quick shot, but itu2019s there just under four minutes into the episode. In the background, you can see the Commodore Barry Bridge, and graves on a hill in the cemetery in the foreground.”,episode:”3″},{name:”Sixpenny Creek Quarry”,town:”Union Township”,coordinates:”40.23700358370588, -75.78650582204335″,photo:”PLM34YOMIRCPPDVCGTFXM5FGME”,description:”Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) finally get their meeting with Eryn (Margarita Levieva), their Dark Hearts insider, but it doesnu2019t go according to plan.”,episode:”3″},{name:”Llanerch Diner”,town:”Upper Darby”,coordinates:”39.96894828437008, -75.29301814827437″,photo:”6QXQDIMGKVDR5J64W4PVS3WP3E”,description:”Taskforce members Aleah (Thuso Mbedu) and Lizzie (Alison Oliver) head to Upper Darby’s famed Llanerch Diner for a tip on the drug house robberies they’re investigating, and get a break in the case.”,episode:”3″},{name:”Rosedon Plaza”,town:”Lansdowne”,coordinates:”39.94225704587108, -75.26528827286353″,photo:”SCB2N67GLFACZO33OOA7CLXQMM”,description:”In the background of one shot during the chase for Ray (Peter Patrikios), you can see the old Doc’s Deli (Deli Green). That puts Ray in the corner of the Rosedon Plaza parking lot as Lizzie (Alison Oliver) makes the arrest.”,episode:”3″},{name:”Coatesville Police Department”,town:”Coatesville”,coordinates:”39.982144078230384, -75.82033869646108″,photo:”XTADWTS6UNEDHOJGNIMWPBBOLE”,description:”Whether the interior is the same station isnu2019t clear, but an exterior shot sets this spot up as the place where the Task team interrogates Ray (Peter Patrikios) and Shelley (Mickey Sumner). Out front, a police cruiser reads u201CDelaware County Sheriff,u201D which is a little far from home.”,episode:”3″},{name:”The Ridley House”,town:”Holmes”,coordinates:”39.89753600427107, -75.31137880453917″,photo:”F2JJYIIZWFA3FFTHDPSXFI5M5A”,description:”Following the chase and interrogation, Lizzie (Alison Oliver) and Grasso (Fabien Frankel) head to this local bar to unwind. Grasso indicates it is a Barnabyu2019s, which, in real life, was true at one point u2013 until the location became the Ridley House in 2019.”,episode:”3″},{name:”Pennsylvania Turnpike on-ramp”,town:”King of Prussia”,coordinates:”40.08960425823238, -75.39689126886788″,photo:”BURLUGM6TRDX3CE46XSFYGJK7M”,description:”Itu2019s a quick shot as Tom (Mark Ruffalo) drives around at the beginning of the episode, but you can just make out the LasikPlus building on Mall Boulevard in the background. That puts this Pennsylvania Turnpike entrance in King of Prussia.”,episode:”4″},{name:”I-76 Exit 320″,town:”Malvern”,coordinates:”40.073716457225665, -75.52365668680957″,photo:””,description:”Tom (Mark Ruffalo) appears to take this exit as he is driving to meet his fellow taskforce members.”,episode:”4″},{name:”Marcus Hook Community Center”,town:”Marcus Hook”,coordinates:”39.81198192114949, -75.41200706776057″,photo:”B76EM6PKTFEB7KFWEUWGOWYDL4″,description:”As County Chief Dorsey (Raphael Sbarge) exits the building, you can see a door tagged with u201CDelaware County Sheriffu2019s Office.u201D But the green awning above him is a dead giveaway u2014 thatu2019s the Marcus Hook Community Center.”,episode:”4″},{name:”Rockdale Industrial Center”,town:”Aston Township “,coordinates:”39.885281970146785, -75.44479191780039″,photo:””,description:”It’s disguised as a trucking depot in the series, but this is where Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) travel with Sam (Ben Lewis Doherty) to arrange transportation for their escape into Canada before being confronted by a Good Samaritan. “,episode:”4″},{name:”Upland Diner”,town:”Chester”,coordinates:”39.85816357241053, -75.37189095611281″,photo:”PVJMMBSI2ZBGJNQO46VYY5P6GQ”,description:”Upland Dineru2019s parking lot serves as Robbieu2019s (Tom Pelphrey) holding area during this episodeu2019s drug deal. Unfortunately, we only get an exterior shot of the building, but the restaurantu2019s vintage-style sign is proudly on display. Great pancakes, for the record.”,episode:”4″},{name:”Ridley Creek State Park entrance”,town:”Newtown Square”,coordinates:”39.95853496065017, -75.43948479664033″,photo:”KOSWCMRRHRAB7MLGNLQIF535UM”,description:”Cliff (RaxFAl Castillo) can be seen turning onto North Sandy Flash Drive from Gradyville Road as he heads to the drug deal meeting spot. If you look closely, you can just barely make out a sign for Ridley Creek State Park.”,episode:”4″},{name:”Beaver Creek”,town:”Wilmington, Del.”,coordinates:”39.839261612846315, -75.57139152554225″,photo:””,description:”It’s tough to spot, but the dam that Cliff (RaxFAl Castillo) parks his car next to during this episode’s failed drug deal u2014 or, more accurately, the Dark Hearts’ setup u2014 appears to be in Beaver Creek on the Delaware-Pennsylvania border.”,episode:”4″},{name:”City Clock Apartments”,town:”Coatesville”,coordinates:”39.98382540387415, -75.8211284189516″,photo:”3BYXFXCYUFFRZBUSN5UAPYVYOA”,description:”Another brief shot, but the clock face on the tower of the City Clock Apartments is prominently featured. The building formerly was the National Bank of Coatesville, and has been on the National Register of Historic Places since 1977.”,episode:”4″},{name:”Coatesville-Downingtown Bypass”,town:”Downingtown”,coordinates:”40.01895444780408, -75.70181027552258″,photo:””,description:”FBI Boss Kathleen McGinty (Martha Plimpton) and the rest of the task force swerve across traffic here while looking for Tom (Mark Ruffalo). In the background, you can just make out the sign for Pacer Pool Services & Supplies.”,episode:”5″},{name:”Marsh Creek State Park”,town:”Downingtown”,coordinates:”40.06782560219195, -75.72000193749815″,photo:”NT5JGVMLZFDJTGHC6M7BZFI7Y4″,description:”After surviving his encounter with Robbie (Tom Pelphrey), Tom (Mark Ruffalo) emerges from the woods to see a beautiful summer scene of families enjoying the lake at Marsh Creek State Park.”,episode:”5″},{name:”I-95 Pennsylvania Welcome Center”,town:”Boothwyn”,coordinates:”39.82418322018552, -75.43745107822149″,photo:”5HPTTXFG3ZA2HGAW54OXM4D5ZY”,description:”FBI boss Kathleen McGinty (Martha Plimpton) stuffs her face with fast food at the center’s picnic tables as the task crew looks for their leader. As McGinty explains, she is u201Can emotional eater.u201D”,episode:”5″},{name:”Woy Bridge”,town:”Everett”,coordinates:”40.0150517796881, -78.304498566625″,photo:””,description:”In what is likely the farthest-flung filming location u2013 at least in relation to the rest of the local spots u2013 we get some shots of Everettu2019s Woy Bridge in Bedford County as the taskforce closes in on Robbie (Tom Pelphrey).”,episode:”5″},{name:”Our Lady of Peace Parish”,town:”Milmont Park”,coordinates:”39.88193514095659, -75.33589782814482″,photo:”HGPPGXLRFZFUFE5WBNNXP3DXFM”,description:”Though disguised well as a juvenile detention facility in the show, this little Delco parish provides at least the exterior shots for where Tom (Mark Ruffalo) meets Sam (Ben Lewis Doherty) for the first time.”,episode:”6″},{name:”High Bridge”,town:”Coatesville”,coordinates:”39.98390784773821, -75.82749681114403″,photo:””,description:”This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso’s (Fabien Frankel) fate with the Dark Hearts.”,episode:”7″},{name:”Delaware County Courthouse and Government Center”,town:”Media”,coordinates:”39.92029464476607, -75.39155431097433″,photo:”NWW6JA6A4FBAJHW7ZIXSIPZ2YA”,description:”Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.”,episode:”7″}];var Z=63710088e-1,ai={centimeters:Z*100,centimetres:Z*100,degrees:360/(2*Math.PI),feet:Z*3.28084,inches:Z*39.37,kilometers:Z/1e3,kilometres:Z/1e3,meters:Z,metres:Z,miles:Z/1609.344,millimeters:Z*1e3,millimetres:Z*1e3,nauticalmiles:Z/1852,radians:1,yards:Z*1.0936};function xn(e,t,r={}){let n={type:”Feature”};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function jt(e,t,r={}){return xn({type:”MultiPoint”,coordinates:e},t,r)}function Ze(e,t,r){if(e!==null)for(var n,i,o,s,a,d,f,g=0,l=0,v,x=e.type,F=x===”FeatureCollection”,P=x===”Feature”,V=F?e.features.length:1,O=0;O<V;O++){f=F?e.features[O].geometry:P?e.geometry:e,v=f?f.type==="GeometryCollection":!1,a=v?f.geometries.length:1;for(var K=0;K<a;K++){var C=0,$=0;if(s=v?f.geometries[K]:f,s!==null){d=s.coordinates;var R=s.type;switch(g=r&&(R==="Polygon"||R==="MultiPolygon")?1:0,R){case null:break;case"Point":if(t(d,l,O,C,$)===!1)return!1;l++,C++;break;case"LineString":case"MultiPoint":for(n=0;n<d.length;n++){if(t(d[n],l,O,C,$)===!1)return!1;l++,R==="MultiPoint"&&C++}R==="LineString"&&C++;break;case"Polygon":case"MultiLineString":for(n=0;n<d.length;n++){for(i=0;i<d[n].length-g;i++){if(t(d[n][i],l,O,C,$)===!1)return!1;l++}R==="MultiLineString"&&C++,R==="Polygon"&&$++}R==="Polygon"&&C++;break;case"MultiPolygon":for(n=0;n<d.length;n++){for($=0,i=0;i<d[n].length;i++){for(o=0;o<d[n][i].length-g;o++){if(t(d[n][i][o],l,O,C,$)===!1)return!1;l++}$++}C++}break;case"GeometryCollection":for(n=0;n{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]<n[0]&&(r[2]=n[0]),r[3]{pe(“https://interactives.inquirer.com/storage/dependencies/maplibre/5.3.0/maplibre-gl.js”,()=>{let e=new Bt;be=window.maplibregl,be.addProtocol(“pmtiles”,e.tile);let t=”https://interactives.inquirer.com/melish/1.2″,r=`${t}/us-latest.pmtiles`,n=new Le(r);e.add(n),n.getHeader().then(async()=>{let o=await(await fetch(`${t}/styles/neutral.json`)).json();ee=new be.Map({container:”map”,zoom:13,center:[-75.165222,39.952583],cooperativeGestures:!0,attributionControl:!1,padding,style:{…o,sources:{openmaptiles:{type:”vector”,url:`pmtiles://${r}`}}}}),ee.scrollZoom.disable(),ee.touchPitch.disable(),ee.addControl(new be.NavigationControl({showCompass:!1,showZoom:!0,visualizePitch:!1}),”bottom-right”),ee.on(“load”,()=>{Cn(),Ee!==”all”?Ae=we.filter(s=>parseInt(s.episode)parseFloat(d)).reverse(),s.id=ze(s.name),s.photo&&(s.imageSrc=`https://interactives.inquirer.com/secondbank/arc/${s.photo}/650.webp`);let a=xe(“js-map-stub”);Te(a,s),a.addEventListener(“click”,()=>{Yt(a)}),a.addEventListener(“mouseover”,()=>{Yt(a)}),a.addEventListener(“mouseout”,()=>{Xt()}),new be.Marker({element:a}).setLngLat(s.coordinates).addTo(ee)}document.querySelector(“.js-map”).classList.add(“is-loaded”),Kt=!0,Me!=””&&(er(Me),_t(Me))})})})},Yt=e=>{Xt(),e.classList.add(“is-highlight”)},Xt=()=>{document.querySelectorAll(“.js-map-location”).forEach(e=>{e.classList.remove(“is-highlight”)})},Cn=()=>{Ee=document.querySelector(“.js-steps”).dataset.episodeForPage},Qt=()=>{let e=window.innerWidth>960;padding={top:50,bottom:e?50:window.innerHeight/2,left:e?window.innerWidth/2+50:50,right:50}},Ln=()=>{window.addEventListener(“resize”,()=>{Qt()})},_t=e=>{if(Me=null,e==null){let t=we.filter(r=>r.episode==Ee);ee.fitBounds(Vt(t),{animate:!0})}else if(e.step==”all”)ee.fitBounds(Vt(Ae),{animate:!0});else{let t=we.filter(r=>ze(r.name)==e.step);t.length>0&&ee.flyTo({center:t[0].coordinates,padding,zoom:13,animate:!0,duration:1e3})}},er=e=>{document.querySelectorAll(“.js-map-location”).forEach(t=>{t.classList.remove(“is-current”)}),e&&e.step!==”all”&&document.querySelector(`.js-map-location[data-id=”${e.step}”]`).classList.add(“is-current”)},Vt=e=>{let t=jt(e.map(n=>n.coordinates));return Jt(t)},ke={init:()=>{Tn(),Qt(),Ln()},update:e=>{Kt?(_t(e),er(e)):Me=e}};var Je=yr(tr());var Pn=async()=>{let t=await(await fetch(“https://interactives.inquirer.com/pepper/2025-task-locations/data.json”)).json();t=t.nav,console.log(t);let r=(0,Je.default)();t=t.filter(i=>r.isAfter((0,Je.default)(`${i.date} 22:00`))),t=t.filter(i=>i.link);let n=document.querySelector(“.js-nav-links”);for(let i of t){i.text=`Episode ${i.episode}`;let o=xe(“js-nav-link-stub”);Te(o,i),n.appendChild(o)}},rr={init:()=>{Pn()}};var De,An=(e,t)=>{De=De||window.PMNdataLayer,De?De.push({event:”misc_event”,eventAction:e,eventLabel:t}):window.location.hostname.includes(“localhost”)?console.log(“Analytics event:”,e,t,”(not actually being sent due to localhost)”):console.log(“Failed to push analytics event”,e,t)},nr={event:(e,t)=>{An(e,t)}};var ir=1,Ye=class{constructor(t){this.el=t,this.contentPosition=”default”,this.possibleSteps=new Array,this.currentStep=null,this.offset=window.innerHeight*.5,this.instanceOfSteps=ir,this.hasMap=!!t.dataset.map,ir++,this.setOffset(),this.setPossibleSteps(),this.updateContent(),this.bindings()}setPossibleSteps(){this.el.querySelectorAll(“.js-steps-step”).forEach(t=>{t.dataset.step&&this.possibleSteps.push(t.dataset.step)})}bindings(){window.addEventListener(“scroll”,()=>{this.updateContent()}),window.addEventListener(“resize”,()=>{this.updateContent(),this.setOffset()})}setOffset(){window.innerWidth>960?this.offset=window.innerHeight*.5:this.offset=window.innerHeight*.8}updateContent(){this.updateCurrentStep()}updateCurrentStep(){let t,r;if(this.el.querySelectorAll(“.js-steps-step”).forEach((i,o)=>{i.getBoundingClientRect().top{let a=”is-“+o,d=”is-“+s;this.possibleSteps.indexOf(o){document.querySelectorAll(“.js-steps”).forEach(e=>{new Ye(e)})}};var En=()=>{},sr={init:()=>{En()}};var de,Ve,Ke=!0,kn=()=>{de=document.querySelectorAll(“.js-video-autoplay”)},Dn=()=>{window.addEventListener(“resize”,()=>{ar()}),window.addEventListener(“scroll”,()=>{ar()}),de.forEach(e=>{e.addEventListener(“volumechange”,t=>{e.muted!==Ke&&!dt()&&(Ke=e.muted,$n())})})},ar=()=>{let e;de.forEach((t,r)=>{let n=t.getBoundingClientRect(),i=n.height/2;n.y-i&&(e=t)}),e!==Ve&&(Ve=e,de.forEach(t=>{t.pause()}),e?e.play():Ve=null)},$n=()=>{de.forEach(e=>{e.muted=Ke})},lr={init:()=>{kn(),de&&Dn()}};var ur={init:()=>{st.init?.(),mt.init?.(),bt.init?.(),Mt.init?.(),Tt.init?.(),ke.init?.(),rr.init?.(),or.init?.(),sr.init?.(),lr.init?.(),ue.init?.()}};var zn=()=>{},cr={init:()=>{zn()}};var Bn=document.querySelector(“.js-inno”),hr=()=>{ur.init(),cr.init()};Bn?hr():new MutationObserver((t,r)=>{if(document.querySelector(“.js-inno”)){r.disconnect(),hr();return}}).observe(document,{attributes:!0,childList:!0,subtree:!0});})();
Convicted former Philadelphia mob boss John Stanfa made headlines as part of a bloody mafia power struggle in the 1990s, which is now being chronicled in the newly released Netflix docuseries,Mob War: Philadelphia vs. The Mafia.
He was missing one thing that many of his contemporaries had — at least in the papers.
A nickname.
Don of the Philadelphia La Cosa Nostra from 1990 to 1995, when he was convicted on racketeering, murder, and conspiracy charges that netted him five life sentences, Stanfa went without an official street name during his time at the top. In September 1993, the Daily News set out to change that with a “Name the Don” contest encouraging readers to send in their best handles for Stanfa.
“Philadelphia mobsters have had nicknames since there’s been a Philadelphia mob,” the People Paper wrote in a contest announcement. “But poor John Stanfa, the acknowledged leader of the local Cosa Nostra, has suffered long enough. Our godfather needs a nickname — and fast.”
A classic Daily News stunt, yes — but its timing was somewhat, well, insensitive. Just days before the contest was announced, Stanfa was the target in a brazen morning rush-hour shooting on the Schuylkill Expressway in Grays Ferry. His then-23-year-old son, Joseph, was seriously injured with a gunshot wound to the face.
That shooting, the Daily News reported, signaled an “all-out war” for control of the local mafia, escalating the then-ongoing feud between Stanfa’s crew and a group of young upstarts referred to by the press as the “Young Turks,” purportedly led by Joseph “Skinny Joey” Merlino. The month before, Merlino was injured in a shooting on the 600 block of Catharine Street, and his friend Michael “Mikey Chang” Ciancaglini was killed.
Stanfa was uninjured in the expressway shooting. His son survived and was never implicated in Stanfa’s underworld dealings.
Still, some of the Daily News’ audience was game to participate in the contest, though the total number of submissions was not reported. Some of the potential monikers were directly inspired by the attempt on his life, including “Nine Lives,” “The Dodger,” and “Johnny Wheels.”
Others poked fun at his appearance, like “Sourpuss,” “Stoneface,” and “Big Baldy.” And some — such as “Johnny Meatballs,” “The Grocer,” and “Sticky Buns” — focused on Stanfa’s work in the food business, thanks to his involvement in a South Philly-based Italian food importer.
The contest, however, was not without its detractors. It was, after all, a controversial move — this was a mob boss being roasted, and one who was nearly killed only days before the Daily News began soliciting jokes at his expense. And it didn’t help that the paper went directly to some law enforcement officials to ask for their suggestions.
“I don’t think I should be in the business of characterizing Mr. Stanfa,” said Joel Friedman, then-head of the U.S. Organized Crime Strike Force in Philly. ”I am in the business of investigating criminal activity, and prosecuting it.”
Regular folks were upset, too — largely over the perception that the contest mocked Italian Americans at large. One reader, retired high school principal Richard Capozzola, took particular umbrage, postulating that the Daily News “wouldn’t have done it if [Stanfa] weren’t Italian.”
“How much more insulting can your paper be to the Italian-American community of Philadelphia?” said Arthur Gajarsa, of the National Italian-American Foundation. “Would you dare run a contest involving any other ethnic criminal element?”
The outcry became so significant that after almost two weeks, the Daily News’ editor at the time, Zachary Stalberg, addressed it in a note to readers. The message: Relax.
“I think people understand that nothing in our handling of the contest mocked those of Italian descent,” Stalberg wrote. “And I think people know it’s OK to be intrigued by the mob, even if you hate their business.”
By mid-September, the Daily News had a winner with John “Tightlips” Stanfa. That entry came from South Philadelphia resident Brian Baratta, who won, of course, a videotape box set of The Godfather I, II, and III for his effort.
“‘Tightlips’ certainly is descriptive of this strong and silent guy,” the Daily News wrote of the winning entry. “John Stanfa doesn’t talk to the cops, the feds, or the press.”
With that, the contest was over — but it wasn’t so quickly forgotten, and not just in Philadelphia.
In 1995, ahead of Stanfa’s trial, the Daily News sent reporter Kitty Caparella to Italy to investigate the mob boss’ family tree. While in Caccamo, on Sicily’s Tyrrhenian coast, Caparella was approached by a police officer, editor Stalberg wrote in a note that year.
The officer, Stalberg said, pulled out the 1993 Daily News issue advertising the “Name the Don” contest.
Hit man-turned-government informant John Veasey, whose testimony helped bring down mob boss John Stanfa and a dozen of his top associates in the 1990s, says he’s on the road to redemption.
The new Netflix docuseries Mob War: Philadelphia vs. The Mafia, now streaming, chronicles a violent 1990s power struggle in the local La Cosa Nostra through the eyes of investigators and former crime family members who were there.
Veasey, a South Philly native, was a central figure in the ’90s Philly mob, having admitted to participating in two high-profile murders. He went on to serve nearly 11 years in prison after becoming a government witness against Stanfa and other top mob associates in a federal racketeering trial, and was released in 2005. He has since denounced the mob life, and, in the Netflix series, calls joining the mafia the “worst decision” he ever made.
While he became a feared killer, Veasey was also something of a folk hero after Stanfa’s 1995 trial. The jury, according to Inquirer and Daily News reports from the time, was enamored with his frank and sometimes graphic testimony, which was a key component of federal prosecutors’ case against Stanfa and others.
Veasey agreed to become an FBI informant in January 1994 after his brother, William “Billy” Veasey, told him Stanfa had taken a contract out on his life, reports from the time indicate. In agreeing to work with federal authorities, Veasey admitted to being one of the shooters behind two then-recent mob killings: Michael “Mikey Chang” Ciancaglini and Frank Baldino Sr.
Ciancaglini was killed in August 1993 in a shooting that also wounded Joseph “Skinny Joey” Merlino. The pair were the purported leaders of the so-called “Young Turks” faction who opposed the rule of Stanfa, reports indicated. Merlino has long denied having been behind a faction of the city’s mob and has never been convicted of mob violence.
Ahead of that shooting, Veasey testified, Stanfa had given orders to “kill anybody aligned with Merlino” and circulated a list of about a dozen people who were to be killed. Veasey undertook the hit with fellow mob enforcer Philip Colletti in a white Ford Taurus that, shockingly, was leased in Colletti’s name.
Veasey also admitted to burning the vehicle, badly burning his hand in the process. Knowing he needed an explanation to have his injury treated, Veasey returned to his house and poured lighter fluid into a barbecue grill, and intentionally lit his injured hand on fire.
“I screamed and told the neighbors I had burned it trying to light the grill,” he told jurors during the Stanfa trial. The cover, he says in the Netflix docuseries, wasn’t a great one — the grill he used was electric, arousing the suspicion of police.
Likewise, Veasey was the triggerman in the killing of Frank Baldino Sr., a then-suspected low-level mob associate who was killed outside the Melrose Diner in September 1993.
Baldino was shot multiple times in his car in the diner’s parking lot, and died en route to Thomas Jefferson University Hospital. Veasey later tipped off authorities to the location of the murder weapons, which divers found in a pond at FDR Park in April 1994, reports from the time indicate.
The attempted murder of John Veasey
In January 1994, police found Veasey grievously injured near Sixth and Sigel Streets, having somehow survived a brutal assassination attempt in which he was shot four times and stabbed seven. The attempted murder, he later testified, was undertaken by Stanfa associates Frank Martines and Vincent “Al Pajamas” Pagano in an apartment above a meat store near where Veasey was found.
“One bullet fragmented in the back of my head. One went in the back and out through my forehead,” Veasey later said of the shooting. ”One hit the back of my head and bounced into my neck. And one is still in my chest, in my rib cage.”
His assailants, Veasey said, had targeted him because they believed he was working with the FBI — which he had been for a few days by the time the attack happened.
The shots failed to kill Veasey, who in the struggle wrestled a knife away from Pagano and used it to stab Martines near the eye. The ordeal lasted about 18 minutes, according to a Daily News report, and ended with Martines and Pagano letting Veasey go in exchange for their lives.
After he escaped, Veasey attempted to stop a car for help. But because of the way he looked, he said, no one would help him.
Eventually, police arrived but believed Veasey would die.
“I could hear them talking, saying I was DOA,” Veasey said. “I’m saying, ‘I’m alive, I’m alive. Everyone is giving up on me tonight.’”
Veasey later said he left the mob that night, putting his time in the mafia at just over five months, the Daily News reported. He had been recruited in August 1993, days before the Ciancaglini murder, after landing a job at a construction company owned by Stanfa’s brother-in-law.
“I wouldn’t recommend this life to an enemy,” he later said of the mob.
Hours before Veasey was set to take the stand for Stanfa’s trial in October 1995, his brother, Billy, was shot and killed on the 1700 block of Oregon Avenue. The killing, authorities speculated, could have been ordered by Stanfa as a way to silence Veasey, or by suspected Young Turks leader Merlino as revenge for the Ciancaglini and Baldino murders.
Ultimately, it only delayed Veasey’s testimony by five days.
From the stand, Veasey referred to himself as a triggerman and divulged his involvement with the murders of Ciancaglini and Baldino.
Veasey’s testimony at trial
In total, Veasey testified for about two and a half days, which he wrapped up with two pieces of information: That he refused to kill kids, and he did not like gambling. He also mocked Sergio Battaglia, a would-be Stanfa hit man who, despite going on a number of hits, never actually killed anyone, according to an Inquirer report.
Battaglia “went on a hundred hits and didn’t shoot nobody,” Veasey said.
He quickly became well-liked by the jury, who seemed to hang on his every word, The Inquirer reported. Among his more graphic accounts from the witness stand was the “drilling” of Joseph “Joe Fudge” DeSimone, a mob associate who had wanted to kill Veasey, to which Veasey took less-than-kindly.
Veasey testified that he had warned Stanfa of a coming altercation with DeSimone, and at one point persuaded another mob associate to bring DeSimone over to Veasey’s house to settle their dispute. Veasey was on house arrest at the time.
DeSimone arrived, kicking off a violent encounter with an electric drill.
“I smacked him in the face with the drill. I stuck the drill in his chest and in his legs. I stuck it in his head, and from the rotation of the drill, clumps of hair was going out,” Veasey testified. “Then I hit him in the knee with a baseball bat. I chambered the gun … gave it to him and asked, ‘Do you still want to kill me?’”
Veasey said that DeSimone declined.
The testimony was not only well received by jurors, but it was considered a success by prosecutors. Though violent, Veasey appeared relatable to the jury and seemed to have a secret weapon against the defense.
Former mob hit man John Veasey’s biography details his work for one of the city’s mob organizations, the hits he carried out, the attempt on his life, and more.
The reformed hit man
Stanfa was ultimately found guilty and sentenced to five consecutive life terms. Veasey, meanwhile, spent almost 11 years in prison, and was released in 2005. By 2012, he was back in the news, this time for a detailed account of his story in The Hit Man: A True Story of Murder, Redemption and the Melrose Diner, a book by former Inquirer reporter Ralph Cipriano.
By then, Veasey was working as a car salesman in the Midwest, and claimed to have turned over a new leaf.
“I never respected the Mafia or what it stood for,” Veasey said in an interview with The Inquirer in 2012. “My only regret was being dumb enough to join … I always said they either rat or kill each other.”
More than 30 years ago, Philadelphia was the battleground in a brutal mob war as a group of young mafia upstarts challenged the rule of the established La Cosa Nostra leadership.
Known as the Young Turks, that group consisted mostly of younger men who were the sons, brothers, and nephews of former crime family members who were dead or in prison, and was purportedly led by Joseph “Skinny Joey” Merlino and Michael “Mikey Chang” Ciancaglini. They believed that mob boss John Stanfa, a Sicilian immigrant who preferred to keep a low profile, was an outsider who was not fit to lead. Instead, their bloodlines and connections gave them the right to rule their hometown neighborhoods.
Now, a new docuseries from Netflix, Mob War: Philadelphia vs. The Mafia, examines that conflict, complete with interviews from the law enforcement agents and former mobsters who were there, vintage 1990s Philly TV news footage, and the perspective of a hitman-turned-informant who made headlines. The goal, said director Raïssa Botterman, is to show the human element behind the violence.
“They’ve committed crimes, but they’re still humans, and understanding who they were and having their versions of events” is important, she said. “Whether it’s fighting against crime or it’s committing crimes, [we’re] trying to get a more holistic picture of what’s going on.”
Notably missing from the series is Merlino, who Botterman said declined to participate. Merlino has long denied having been behind a faction of the city’s mob and has never been convicted of mob-related violence.
Likewise, Merlino declined through a representative to comment about Mob Wars.
Throughout the ’90s, mob violence regularly dominated Inquirer and Daily News headlines, and resulted in several high-profile deaths and criminal trials, and a new mob leader in the city.
By most accounts, the first strike in the brewing mob war happened in January 1992 with the killing of Felix “Tom Mix” Bocchino, a Stanfa loyalist, on the 1200 block of Mifflin Street. Bocchino, 73, was shot four times in his 1977 Buick, and authorities believed he was targeted by members of the Young Turks faction, according to an Inquirer report from the time.
Retaliation was swift. Two months later, gunmen attempted to assassinate Michael Ciancaglini at his home near 12th and McKean Streets — just steps south of where Bocchino was killed. In that incident, the Daily News reported, Ciancaglini was returning home from a basketball game when two men carrying shotguns began chasing him. He made it inside, and the gunmen fired shotgun blasts through the front door and window.
Ciancaglini was not injured, and neither were his wife and two children, who were inside the house. Law enforcement sources told the People Paper that Ciancaglini “had something to do with Bocchino’s death,” but Ciancaglini’s attorney maintained his client was in the dark about the attempt on his life.
“He don’t know why. He don’t know who. And he don’t know what,” attorney Joseph C. Santaguida told The Inquirer following the shooting.
In March 1993, almost exactly a year after the attempt on Michael Ciancaglini’s life, older brother Joseph Ciancaglini, 35, was shot at the Warfield Breakfast and Lunch Express in Grays Ferry. The attempted hit on Stanfa’s underboss was captured on FBI surveillance video.
Though he survived, Joseph Ciancaglini became permanently paralyzed.
On Aug. 5, 1993, the warfare arrived on the 600 block of Catharine Street with an afternoon shooting that injured Merlino and killed Michael Ciancaglini. The pair were walking down the block when two gunmen began firing, striking Merlino in the leg and buttocks, and Ciancaglini in the heart, reports from the time indicate. Ciancaglini died at Thomas Jefferson University Hospital, while Merlino was placed in stable condition at the Hospital of the University of Pennsylvania.
window.addEventListener(“message”,function(a){if(void 0!==a.data[“datawrapper-height”]){var e=document.querySelectorAll(“iframe”);for(var t in a.data[“datawrapper-height”])for(var r,i=0;r=e[i];i++)if(r.contentWindow===a.source){var d=a.data[“datawrapper-height”][t]+”px”;r.style.height=d}}});
The car used in the shooting, meanwhile, was found some 35 blocks away, burned to a crisp. It had been leased to Philip Colletti, a mob associate who later admitted his role in the crime.
Hundreds attended Ciancaglini’s viewing at the Carto Funeral Home at Broad and Jackson days later; some neighborhood residents were not surprised by his killing, The Inquirer reported.
“Why’d he get killed? The same reason the rest of these hoods in South Philly do,” said one South Philly hairdresser. “Most Italians are good, hard-working people, and these people give us a bad name.”
By the end of August 1993, the Young Turks struck back — this time with a botched assassination attempt on Stanfa himself that ended up wounding the mob boss’ son, Joseph, who was 23 and not involved with mafia activities.
That attempt took place during the morning rush hour as Stanfa and his son traveled from their home in Medford to their food importing business in South Philadelphia. As they drove toward the Vare Avenue off-ramp on the Schuylkill Expressway, gunmen ambushed them from a van that had been modified with makeshift gunports, allowing the assailants to fire from concealment.
The attackers, police later learned, had not cut eye holes in the van, and fired on the Stanfas wildly, missing their intended target. The younger Stanfa, however, was struck in the face, leaving a bullet lodged in his neck though he survived.
The van was found near 29th and Mifflin Streets as police attempted to reconstruct possible escape routes. It was littered with spent cartridges, and had “a number of punctures in it,” leading police to believe that a shooter lost control of his weapon, tearing bullet holes into the vehicle.
Stanfa’s vehicle, meanwhile, was heavily damaged, with at least 10 bullet holes running from the front hood to the right rear fender. A tire was shredded, and a window panel in the rear-passenger side — where Joseph had been sitting — was shattered. Stanfa, The Inquirer reported at the time, had his driver hide the car in the garage of the restaurant where Joseph Ciancaglini had been shot, requiring police to obtain a warrant to examine it.
“You’ve got to understand: This is an all-out mob war,” said Col. Justin J. Dintino, superintendent of the New Jersey State Police. ”They’re going to take their shot whenever the opportunity presents itself.”
In September 1993, the opportunity presented itself at the Melrose Diner, where Frank Baldino Sr., a reportedly low-level associate of the Young Turks, was shot to death in his car. His last meal was a $6.95 chopped steak dinner, the Daily News reported.
Gunmen approached Baldino’s vehicle, investigators said, and “pumped several bullets” through its closed window, striking him in the head and torso. The assailants fled west on Passyunk Avenue in a rainstorm, and Baldino died while en route to the hospital.
Baldino was not considered to be a major player in the local mob. His killing, friends and investigators said, was something of a shock — even former mobster Nicholas “Nicky Crow” Caramandi, who was in hiding at the time, denounced it.
“This guy was not a gangster,” Caramandi told The Inquirer. “He wouldn’t hurt anybody. He was not a threat. It should never have happened.”
Though mob violence cooled as 1993 wore on, it didn’t fully stop, and late one Friday in January 1994, police found John Veasey near Sixth and Sigel Streets, grievously injured.
He had three bullet wounds to his head, one to his chest, and seven stab wounds, having fought off his attackers in an assassination attempt in the apartment above a nearby meat store. Somehow Veasey, then 28, had survived, and was placed in critical but stable condition at Jefferson Hospital.
“He’s a tough kid,” one underworld source told The Inquirer. “He knows a lot, and what he knows can hurt a lot of people.”
Veasey, it turned out, had gone to the FBI days before and copped to the Ciancaglini and Baldino killings at the behest of his brother, William “Billy” Veasey, who had told him there was a contract out on John Veasey’s life.
His assailants, Veasey told police, were Stanfa loyalists Frank Martines and Vincent “Al Pajamas” Pagano, both of which later surrendered.
The pair, John Veasey said, had lured him to a mob-run “numbers house” under the guise of protecting him. But once inside, Martines pulled a gun and shot him in the head and chest, telling him, “Bye, John-John.” When that failed to kill Veasey, a battle ensued in which Veasey wrestled a knife away from Pagano, and used it to slash Martines in the eye.
“I have a real powerful neck, real, real big,” Veasey later said of his survival, according to a Daily News report. “I was not knocked out. It wasn’t sending any messages to the brain.”
Following the attack on Veasey, Stanfa and 23 associates were indicted on federal racketeering charges and imprisoned by March 1994. As the legal proceedings wore on, mob violence in the city trickled almost to a stop — with one notable exception.
On Oct. 5, 1995, just hours before Veasey was set to take the witness stand against Stanfa and his codefendants, his brother Billy was shot and killed on the 1700 block of Oregon Avenue.
Veasey was distraught, but his resolve to testify was hardened by the killing, law enforcement sources said. Five days later, he did just that.
Delivering his testimony in what The Inquirer called “South Philadelphia tough-guy jargon,” Veasey made the federal government’s case clear — in some cases, graphically so — for jurors. Calling himself a triggerman for Stanfa, he testified that the mob boss had given orders in 1993 to kill anyone who was aligned with Merlino and the Young Turks faction, and that a hit list with more than a dozen names had been circulated to mob members.
“A couple of [defense] lawyers tried to catch him up in semantics,” one federal source told The Inquirer of Veasey. “John doesn’t even know what semantics means.”
By November 1995, Stanfa and his associates were convicted on all counts, including murder, extortion, gambling, and kidnapping. Stanfa received five life sentences, and, at 84, remains in prison.
With that, the Young Turks had officially won the war. According to Inquirer and Daily News reports from the time, Ralph Natale had been installed as the head of the Philadelphia mob but focused his efforts on South Jersey, allegedly leaving Merlino and his cohorts to run South Philadelphia.
Following Natale’s arrest on a parole violation in 1998, Daily News and Inquirer reports from the time indicate, Merlino purportedly took over as acting mob boss, and later cut out Natale completely. Merlino himself was arrested on drug conspiracy charges in 1999, and Natale served as a government witness against him.
Ultimately, Merlino received a 14-year sentence after being convicted of racketeering. He was acquitted of drug trafficking and murder charges, the latter for which prosecutors initially considered pursuing the death penalty. With credit for two and a half years served, he was to spend nine more years in prison.
“It ain’t bad,” Merlino said of the verdict, according to an Inquirer report. “Nine’s better than a death penalty.”
“Mob Wars” is a three-part series on Netflix. Its release date is Wednesday, Oct. 22.
The Philadelphia region is once again back in the spotlight at HBO, this time courtesy of Task, from the makers of Mare of Easttown. The show was spotted last year filming everywhere from Center City to Coatesville.
And, boy, did we make the cut.
story continues after advertisement
With the show underway, it's clear that the Philadelphia region is integral to Task. Here, we'll be rounding up all the local spots — sans private homes — we can identify in Task, updating each Sunday after episodes air. Check out the map below to see what locations wound up in the show, and why the series takes us there.
Loading…
Coatesville
High Bridge
This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso's (Fabien Frankel) fate with the Dark Hearts.
Media
Delaware County Courthouse and Government Center
Courtesy of Delaware County Government Center and Courthouse
Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.
West Chester
Stroud Preserve
David Swanson / Staff Photographer
The last we see of Maeve (Emilia Jones) in the series, she is driving past Stroud Preserve's Creek Road parking lot with her cousins in tow. Where they're heading is anybody's guess, but we hope it's somewhere with fewer Dark Hearts members.
story continues after advertisement
That was every location we could spot in this week’s episode. Let us know below if we missed anything.
Otherwise, explore the map of all locations featured to date. Tap onHover overa pin to learn more.
What did we miss?
Did you spot any locations in this week’s episode that we missed? Let us know.
That's it for Task. But rest assured, if HBO decides to focus on Philly again, we'll be back. Until then, see youse later.
Staff Contributors
Design and Development: Sam Morris
Reporting: Nick Vadala
Editing: Emily Babay
First seen in episode
(()=>{var gr=Object.create;var et=Object.defineProperty;var mr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var wr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty;var tt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Mr=(e,t,r,n)=>{if(t&&typeof t==”object”||typeof t==”function”)for(let i of yr(t))!br.call(e,i)&&i!==r&&et(e,i,{get:()=>t[i],enumerable:!(n=mr(t,i))||n.enumerable});return e};var Sr=(e,t,r)=>(r=e!=null?gr(wr(e)):{},Mr(t||!e||!e.__esModule?et(r,”default”,{value:e,enumerable:!0}):r,e));var dt=tt(U=>{var Lr={0:”Jan.”,1:”Feb.”,2:”March”,3:”April”,4:”May”,5:”June”,6:”July”,7:”Aug.”,8:”Sept.”,9:”Oct.”,10:”Nov.”,11:”Dec.”};function lt(e){return e===void 0&&(e=new Date),Lr[e.getMonth()]}var Pr={0:”Jan”,1:”Feb”,2:”Mar”,3:”Apr”,4:”May”,5:”Jun”,6:”Jul”,7:”Aug”,8:”Sep”,9:”Oct”,10:”Nov”,11:”Dec”};function ut(e){return e===void 0&&(e=new Date),Pr[e.getMonth()]}function ne(e){return e==null}function ft(e){return typeof e==”number”&&isFinite(e)}function Se(e){return ft(e)&&Math.floor(e)===e}var kr=[“one”,”two”,”three”,”four”,”five”,”six”,”seven”,”eight”,”nine”],Dr=[“million”,”billion”,”trillion”,”quadrillion”,”quintillion”,”sextillion”,”septillion”,”octillion”,”nonillion”,”decillion”],ct=[“th”,”st”,”nd”,”rd”,”th”,”th”,”th”,”th”,”th”,”th”],Ar=[11,12,13];function ht(e){if(ne(e))return””;var t=+e;return Se(t)?Ar.indexOf(t%100)>-1?ct[0]:ct[t%10]:””}var Er=[“first”,”second”,”third”,”fourth”,”fifth”,”sixth”,”seventh”,”eighth”,”ninth”],$r=new RegExp(/s+([^s]*)s*$/);U.apdate=function(e){return e===void 0&&(e=new Date),lt(e)+” “+e.getDate()+”, “+e.getFullYear()},U.apdatetab=function(e){return e===void 0&&(e=new Date),ut(e)+” “+e.getDate()+”, “+e.getFullYear()},U.apmonth=lt,U.apmonthtab=ut,U.apnumber=function(e){if(ne(e))return””;var t=+e;return Se(t)?t=10?e.toString():kr[t-1]:e.toString()},U.aptime=function(e){e===void 0&&(e=new Date);var t,r,n=e.getHours(),i=e.getMinutes(),o=i===0;if(o){if(n===0)return”midnight”;if(n===12)return”noon”}return n0?n:12):(t=”p.m.”,r=n===12?n:n-12),o?r+” “+t:r+”:”+(i<10?"0"+i:i)+" "+t},U.capfirst=function(e){if(ne(e))return"";var t=String(e);return""+t.charAt(0).toUpperCase()+t.slice(1)},U.intcomma=function(e){if(ne(e))return"";var t,r=+e;return ft(r)?((t=r.toString().split("."))[0]=t[0].replace(/B(?=(d{3})+(?!d))/g,","),t.join(".")):e.toString()},U.intword=function(e){if(ne(e))return"";var t=+e;if(!Se(t))return e.toString();var r=Math.abs(t);if(r<1e6)return e.toString();var n=Math.ceil(Math.log(r+1)/Math.LN10)-1,i=n-n%3,o=t/Math.pow(10,i);return(o=Math.round(10*o)/10)+" "+Dr[Math.floor(i/3)-2]},U.ordinal=function(e,t){if(t===void 0&&(t=!1),ne(e))return"";var r=+e;return Se(r)?t&&r{(function(e,t){typeof je==”object”&&typeof Je<"u"?Je.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis=h?m:””+Array(h+1-p.length).join(u)+m},K={s:O,z:function(m){var h=-m.utcOffset(),u=Math.abs(h),p=Math.floor(u/60),c=u%60;return(h<=0?"+":"-")+O(p,2,"0")+":"+O(c,2,"0")},m:function m(h,u){if(h.date()<u.date())return-m(u,h);var p=12*(u.year()-h.year())+(u.month()-h.month()),c=h.clone().add(p,f),y=u-c<0,w=h.clone().add(p+(y?-1:1),f);return+(-(p+(u-c)/(y?c-w:w-c))||0)},a:function(m){return m1)return m(w[0])}else{var b=h.name;$[b]=h,c=b}return!p&&c&&(C=c),c||!p&&C},D=function(m,h){if(ie(m))return m.clone();var u=typeof h==”object”?h:{};return u.date=m,u.args=arguments,new te(u)},M=K;M.l=oe,M.i=ie,M.w=function(m,h){return D(m,{locale:h.$L,utc:h.$u,x:h.$x,$offset:h.$offset})};var te=function(){function m(u){this.$L=oe(u.locale,null,!0),this.parse(u),this.$x=this.$x||u.x||{},this[I]=!0}var h=m.prototype;return h.parse=function(u){this.$d=function(p){var c=p.date,y=p.utc;if(c===null)return new Date(NaN);if(M.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c==”string”&&!/Z$/i.test(c)){var w=c.match(F);if(w){var b=w[2]-1||0,k=(w[7]||”0″).substring(0,3);return y?new Date(Date.UTC(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,k)):new Date(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,k)}}return new Date(c)}(u),this.init()},h.init=function(){var u=this.$d;this.$y=u.getFullYear(),this.$M=u.getMonth(),this.$D=u.getDate(),this.$W=u.getDay(),this.$H=u.getHours(),this.$m=u.getMinutes(),this.$s=u.getSeconds(),this.$ms=u.getMilliseconds()},h.$utils=function(){return M},h.isValid=function(){return this.$d.toString()!==x},h.isSame=function(u,p){var c=D(u);return this.startOf(p)<=c&&c<=this.endOf(p)},h.isAfter=function(u,p){return D(u)<this.startOf(p)},h.isBefore=function(u,p){return this.endOf(p)<D(u)},h.$g=function(u,p,c){return M.u(u)?this[p]:this.set(c,u)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(u,p){var c=this,y=!!M.u(p)||p,w=M.p(u),b=function(j,H){var J=M.w(c.$u?Date.UTC(c.$y,H,j):new Date(c.$y,H,j),c);return y?J:J.endOf(a)},k=function(j,H){return M.w(c.toDate()[j].apply(c.toDate("s"),(y?[0,0,0,0]:[23,59,59,999]).slice(H)),c)},A=this.$W,E=this.$M,z=this.$D,X="set"+(this.$u?"UTC":"");switch(w){case l:return y?b(1,0):b(31,11);case f:return y?b(1,E):b(0,E+1);case d:var q=this.$locale().weekStart||0,Q=(A<q?A+7:A)-q;return b(y?z-Q:z+(6-Q),E);case a:case v:return k(X+"Hours",0);case s:return k(X+"Minutes",1);case o:return k(X+"Seconds",2);case i:return k(X+"Milliseconds",3);default:return this.clone()}},h.endOf=function(u){return this.startOf(u,!1)},h.$set=function(u,p){var c,y=M.p(u),w="set"+(this.$u?"UTC":""),b=(c={},c[a]=w+"Date",c[v]=w+"Date",c[f]=w+"Month",c[l]=w+"FullYear",c[s]=w+"Hours",c[o]=w+"Minutes",c[i]=w+"Seconds",c[n]=w+"Milliseconds",c)[y],k=y===a?this.$D+(p-this.$W):p;if(y===f||y===l){var A=this.clone().set(v,1);A.$d[b](k),A.init(),this.$d=A.set(v,Math.min(this.$D,A.daysInMonth())).$d}else b&&this.$d[b](k);return this.init(),this},h.set=function(u,p){return this.clone().$set(u,p)},h.get=function(u){return this[M.p(u)]()},h.add=function(u,p){var c,y=this;u=Number(u);var w=M.p(p),b=function(E){var z=D(y);return M.w(z.date(z.date()+Math.round(E*u)),y)};if(w===f)return this.set(f,this.$M+u);if(w===l)return this.set(l,this.$y+u);if(w===a)return b(1);if(w===d)return b(7);var k=(c={},c[o]=t,c[s]=r,c[i]=e,c)[w]||1,A=this.$d.getTime()+u*k;return M.w(A,this)},h.subtract=function(u,p){return this.add(-1*u,p)},h.format=function(u){var p=this,c=this.$locale();if(!this.isValid())return c.invalidDate||x;var y=u||"YYYY-MM-DDTHH:mm:ssZ",w=M.z(this),b=this.$H,k=this.$m,A=this.$M,E=c.weekdays,z=c.months,X=c.meridiem,q=function(H,J,se,ae){return H&&(H[J]||H(p,y))||se[J].slice(0,ae)},Q=function(H){return M.s(b%12||12,H,"0")},j=X||function(H,J,se){var ae=H{window.addEventListener(“resize”,()=>{nt(),$e()}),window.addEventListener(“scroll”,()=>{$e()})},nt=()=>{xr.setAttribute(“viewBox”,`0 0 ${window.innerWidth} ${window.innerHeight}`)},$e=()=>{let e=document.querySelector(“.js-steps”).dataset.current;re!==e&&(re=e,st()),!re||re==”all”?ot():it()},it=()=>{if(re){let e=document.querySelector(`.js-steps-step[data-step=”${re}”] .js-steps-pin`),t=document.querySelector(“.js-map-location.is-current .js-map-pin”);if(t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=document.querySelector(“.js-steps”).getBoundingClientRect(),s=o.top>0?o.top:0,a=r.width/2;ce.setAttribute(“y1”,r.top+a-s),ce.setAttribute(“x1”,r.left+a),ce.setAttribute(“y2”,n.top+a-s),ce.setAttribute(“x2”,n.left+a)}}},ot=()=>{ce.classList.add(“is-hidden”)},Cr=()=>{ce.classList.remove(“is-hidden”)},st=()=>{ot(),clearTimeout(rt),rt=setTimeout(()=>{re!==void 0&&re!==”all”&&(it(),Cr())},1200)},at={init:()=>{Tr(),nt(),$e()},onChange:()=>{st()}};var Wn=dt();var ze=e=>{if(e)return e.trim().toLowerCase().normalize(“NFD”).replace(/[u0300-u036f]/g,””).replace(/[^A-Z0-9 ]/gi,””).trim().replace(/ /g,”-“)};var pt=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);var pe=(e,t=null,r=null)=>{r||(r=document.querySelector(“head”));let n=document.createElement(“script”);n.type=”text/javascript”,n.src=e,t&&(n.onload=t),r.appendChild(n)},vt=()=>(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state===”Subscribed”,gt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state;return window.location.host.includes(“zzz-systest”)||window.location.host.includes(“pmn.arcpublishing.com”)||window.location.host.includes(“stage.fusion.inquirer.com”)||typeof t>”u”},mt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.hasAdsFreeReading;return!!(t&&t==1)},Be=()=>window.location.host.includes(“localhost”),xe=(e,t=””)=>{let r=document.querySelector(`template#${e}`);if(!r||!(r instanceof HTMLTemplateElement))return console.log(`Couldn’t find .`),null;let n=r.content.cloneNode(!0).childNodes;if(n.length==0)return console.log(`Template ${r} has no children, returning null.`),null;n.length>1&&console.log(`Template ${r} has multiple children, only returning the first.`);let i=n[0];return i.setAttribute(“data-id”,t),i},Te=(e,t)=>{let r=[…e.querySelectorAll(“[data-populate]”)];e.dataset.populate&&r.unshift(e);let n=r.filter(i=>{let o=i.closest(“[data-populate-context]”);return!o||o==e});for(let i of n){let s=i.dataset.populate.trim().split(/s*,s*/).map(a=>a.split(/s*:s*/));for(let[a,d]of s){let g=a.split(“.”).reduce((x,F)=>x?.[F],t),l=g==null||g==null,v=d?.split(/s+/)||[“innerHTML”];for(let x of v)x.startsWith(“.”)&&i.classList.toggle(x.substring(1),l?!1:g),!l&&(x==”innerHTML”?i.innerHTML=g:x.startsWith(“@”)?i.setAttribute(x.substring(1),g):x.startsWith(“–“)&&i.style.setProperty(x,g))}}};var zr=()=>{mt()&&document.querySelectorAll(“.js-adbox”).forEach(t=>{t.classList.add(“is-hidden”)})},yt={init:()=>{zr()}};var wt=async(e,t)=>(await fetch(`https://inq-junto.herokuapp.com/${e}`,{method:”POST”,headers:{“Content-Type”:”application/json”},mode:”cors”,body:JSON.stringify(t)})).json(),Fe=()=>{let t=document.querySelector(“.js-inno”).dataset.junto;if(t)return t;throw new Error(“no junto id found”)},bt={getDefaultId:()=>Fe(),vote:(e,t=Fe())=>{wt(“vote”,{poll:t,ballot:e})},results:async(e=Fe())=>await wt(“results”,{poll:e})};var Br=()=>{document.querySelectorAll(“.js-form”).forEach(e=>{e.addEventListener(“submit”,t=>{t.preventDefault(),Fr(e)})})},Fr=e=>{let t=e.dataset.id,r=new FormData(e),n=new Object;for(let i of r)n[`form-${t}-${i[0]}`]=i[1];bt.vote({…n,[`form-${t}`]:Object.values(n).join(“///”)}),e.classList.add(“has-submitted”),e.querySelector(“.js-button-label”).textContent=”Form submitted!”,setTimeout(()=>{e.querySelector(“.js-form-button”).disabled=!0},500)},Mt={init:()=>{Br()}};var le,St,Hr=()=>{le=document.getElementById(“js-inno-toast”)},Or=e=>{if(!le)return;le.innerHTML=e,le.classList.add(“inno-toast–active”);let t=()=>{le.addEventListener(“transitionend”,Ir,{once:!0}),le.classList.remove(“inno-toast–active”)};clearTimeout(St),St=setTimeout(t,5e3)},Ir=()=>{le.innerHTML=””},ue={init:()=>{Hr()},showToast:Or};var Ce,xt=!1,Rr=async()=>new Promise(e=>{setTimeout(()=>{console.log(“simulating createShareLink for localhost”),e(“https://inquirer.com/interactives”),Ur()},100)}),Ur=()=>{let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||setTimeout(()=>{let t=e?.querySelector(“span”);t&&(t.innerHTML=”Gift link copied to clipboard“)},20)},qr=()=>{let e=window.services?.createShareLink;e&&(Ce=e),Be()&&(Ce=Rr),Ce&&Nr()},Gr=async e=>{let t=”text/plain”,r=async()=>{try{return await Ce(window.location.pathname)}catch{e.dataset.state=”error”,ue.showToast(“Hmm, we couldn’t generate a gift link…”)}},n=new ClipboardItem({[t]:r()});await navigator.clipboard.write([n]).catch(i=>{console.log(i),ue.showToast(“Couldn’t copy to clipboard, try again?”),e.dataset.state=”error”}),ue.showToast(“Gift link copied to clipboard!”),e.dataset.state=”complete”},Nr=()=>{document.querySelectorAll(“.js-gift”).forEach(t=>{(vt()||Be()||gt())&&t.classList.add(“is-available”)}),document.querySelectorAll(“.js-gift-button”).forEach(t=>{t instanceof HTMLButtonElement&&t.addEventListener(“click”,()=>{t.classList.contains(“disabled”)||(t.dataset.state=”loading”,xt=!0,Gr(t),setTimeout(()=>{t.dataset.state=”ready”},2e3))})});let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||Wr(e)},Wr=e=>{new MutationObserver(r=>{for(let n of r){let i=[…n.addedNodes].at(0);if(!(i instanceof HTMLElement))return;xt&&ue.showToast(i.outerHTML)}}).observe(e,{subtree:!0,childList:!0})},Tt={init:()=>{qr()}};var Zr=()=>{window.addEventListener(“message”,e=>{if(e.data[“datawrapper-height”]){let t=e.data[“datawrapper-height”];for(let r in t)document.querySelector(`#datawrapper-chart-${r}`).setAttribute(“height”,t[r])}})},jr=()=>{document.querySelectorAll(“.js-datawrapper-graphic”).forEach(e=>{pe(`https://datawrapper.dwcdn.net/${e.dataset.id}/embed.js`,null,e)})},Jr=()=>{window.addEventListener(“message”,e=>{let t=e.data;document.querySelectorAll(`iframe[src*=”${t.id}”]`).forEach(n=>{n.style.height=`${t.height}px`})},!1)},Yr=()=>{document.querySelectorAll(“.js-pym-graphic”).forEach(e=>{if(typeof window{new window.pym.Parent(e.id,e.dataset.iframe)};typeof window.pym>”u”?pe(“https://pym.nprapps.org/pym.v1.min.js”,t):t()}})},Ct={init:()=>{Zr(),jr(),Yr(),Jr()}};var ve,Vr=()=>{document.querySelectorAll(“.js-hover”).forEach(e=>{e.addEventListener(“click”,()=>{Lt(e)}),e.addEventListener(“mouseenter”,()=>{Lt(e)}),e.addEventListener(“mouseout”,()=>{Pt(e)})}),window.addEventListener(“scroll”,()=>{ve!==null&&Kr()})},Kr=()=>{(ve>window.scrollY+100||ve{Pt(e)})},Lt=e=>{e.classList.add(“is-visible”),ve=window.scrollY},Pt=e=>{e.classList.remove(“is-visible”),ve=null},kt={init:()=>{Vr()}};var N=Uint8Array,he=Uint16Array,Xr=Int32Array,Dt=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),At=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Qr=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Et=function(e,t){for(var r=new he(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var i=new Xr(r[30]),n=1;n<30;++n)for(var o=r[n];o<r[n+1];++o)i[o]=o-r[n]<<5|n;return{b:r,r:i}},$t=Et(Dt,2),zt=$t.b,_r=$t.r;zt[28]=258,_r[258]=28;var Bt=Et(At,0),en=Bt.b,ii=Bt.r,Ie=new he(32768);for(S=0;S>1|(S&21845)<>2|(_&13107)<>4|(_&3855)<>8|(_&255)<>1;var _,S,ge=function(e,t,r){for(var n=e.length,i=0,o=new he(t);i<n;++i)e[i]&&++o[e[i]-1];var s=new he(t);for(i=1;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(r){a=new he(1<<t);var d=15-t;for(i=0;i<n;++i)if(e[i])for(var f=i<<4|e[i],g=t-e[i],l=s[e[i]-1]++<<g,v=l|(1<<g)-1;l>d]=f}else for(a=new he(n),i=0;i>15-e[i]);return a},me=new N(288);for(S=0;S<144;++S)me[S]=8;var S;for(S=144;S<256;++S)me[S]=9;var S;for(S=256;S<280;++S)me[S]=7;var S;for(S=280;S<288;++S)me[S]=8;var S,Ft=new N(32);for(S=0;S<32;++S)Ft[S]=5;var S;var tn=ge(me,9,1);var rn=ge(Ft,5,1),He=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},Y=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<>(t&7)&r},Oe=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<>(t&7)},nn=function(e){return(e+7)/8|0},on=function(e,t,r){return(t==null||te.length)&&(r=e.length),new N(e.subarray(t,r))};var sn=[“unexpected EOF”,”invalid block type”,”invalid length/literal”,”invalid distance”,”stream finished”,”no stream handler”,,”no callback”,”invalid UTF-8 data”,”extra field too long”,”date not in range 1980-2099″,”filename too long”,”stream finishing”,”invalid zip data”],G=function(e,t,r){var n=new Error(t||sn[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,G),!r)throw n;return n},Re=function(e,t,r,n){var i=e.length,o=n?n.length:0;if(!i||t.f&&!t.l)return r||new N(0);var s=!r,a=s||t.i!=2,d=t.i;s&&(r=new N(i*3));var f=function(ae){var Qe=r.length;if(ae>Qe){var _e=new N(Math.max(Qe*2,ae));_e.set(r),r=_e}},g=t.f||0,l=t.p||0,v=t.b||0,x=t.l,F=t.d,P=t.m,V=t.n,O=i*8;do{if(!x){g=Y(e,l,1);var K=Y(e,l+1,3);if(l+=3,K)if(K==1)x=tn,F=rn,P=9,V=5;else if(K==2){var ie=Y(e,l,31)+257,oe=Y(e,l+10,15)+4,D=ie+Y(e,l+5,31)+1;l+=14;for(var M=new N(D),te=new N(19),R=0;R<oe;++R)te[Qr[R]]=Y(e,l+R*3,7);l+=oe*3;for(var m=He(te),h=(1<<m)-1,u=ge(te,m,1),R=0;R>4;if(C<16)M[R++]=C;else{var c=0,y=0;for(C==16?(y=3+Y(e,l,3),l+=2,c=M[R-1]):C==17?(y=3+Y(e,l,7),l+=3):C==18&&(y=11+Y(e,l,127),l+=7);y–;)M[R++]=c}}var w=M.subarray(0,ie),b=M.subarray(ie);P=He(w),V=He(b),x=ge(w,P,1),F=ge(b,V,1)}else G(1);else{var C=nn(l)+4,$=e[C-4]|e[C-3]<i){d&&G(0);break}a&&f(v+$),r.set(e.subarray(C,I),v),t.b=v+=$,t.p=l=I*8,t.f=g;continue}if(l>O){d&&G(0);break}}a&&f(v+131072);for(var k=(1<<P)-1,A=(1<>4;if(l+=c&15,l>O){d&&G(0);break}if(c||G(2),z264){var R=z-257,q=Dt[R];X=Y(e,l,(1<>4;Q||G(3),l+=Q&15;var b=en[j];if(j>3){var q=At[j];b+=Oe(e,l)&(1<O){d&&G(0);break}a&&f(v+131072);var H=v+X;if(v<b){var J=o-b,se=Math.min(b,H);for(J+v<0&&G(3);v<se;++v)r[v]=n[J+v]}for(;v<H;++v)r[v]=r[v-b]}}t.l=x,t.p=E,t.b=v,t.f=g,x&&(g=1,t.m=P,t.d=F,t.n=V)}while(!g);return v!=r.length&&s?on(r,0,v):r.subarray(0,v)};var an=new N(0);var ln=function(e){(e[0]!=31||e[1]!=139||e[2]!=8)&&G(6,"invalid gzip data");var t=e[3],r=10;t&4&&(r+=(e[10]|e[11]<>3&1)+(t>>4&1);n>0;n-=!e[r++]);return r+(t&2)},un=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<>>0};var cn=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<>5&1)==+!t&&G(6,”invalid zlib data: “+(e[1]&32?”need”:”unexpected”)+” dictionary”),(e[1]>>3&4)+2};function hn(e,t){return Re(e,{i:2},t&&t.out,t&&t.dictionary)}function fn(e,t){var r=ln(e);return r+8>e.length&&G(6,”invalid gzip data”),Re(e.subarray(r,-8),{i:2},t&&t.out||new N(un(e)),t&&t.dictionary)}function dn(e,t){return Re(e.subarray(cn(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}function Ht(e,t){return e[0]==31&&e[1]==139&&e[2]==8?fn(e,t):(e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31?hn(e,t):dn(e,t)}var pn=typeof TextDecodergn(e,”name”,{value:t,configurable:!0}),B=(e,t,r)=>new Promise((n,i)=>{var o=d=>{try{a(r.next(d))}catch(f){i(f)}},s=d=>{try{a(r.throw(d))}catch(f){i(f)}},a=d=>d.done?n(d.value):Promise.resolve(d.value).then(o,s);a((r=r.apply(e,t)).next())}),ai=T((e,t)=>{let r=!1,n=””,i=L.GridLayer.extend({createTile:T((o,s)=>{let a=document.createElement(“img”),d=new AbortController,f=d.signal;return a.cancel=()=>{d.abort()},r||(e.getHeader().then(g=>{g.tileType===1?console.error(“Error: archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles. See https://github.com/protomaps/PMTiles/tree/main/js for details.”):g.tileType===2?n=”image/png”:g.tileType===3?n=”image/jpeg”:g.tileType===4?n=”image/webp”:g.tileType===5&&(n=”image/avif”)}),r=!0),e.getZxy(o.z,o.x,o.y,f).then(g=>{if(g){let l=new Blob([g.data],{type:n}),v=window.URL.createObjectURL(l);a.src=v,a.cancel=void 0,s(void 0,a)}}).catch(g=>{if(g.name!==”AbortError”)throw g}),a},”createTile”),_removeTile:T(function(o){let s=this._tiles[o];s&&(s.el.cancel&&s.el.cancel(),s.el.width=0,s.el.height=0,s.el.deleted=!0,L.DomUtil.remove(s.el),delete this._tiles[o],this.fire(“tileunload”,{tile:s.el,coords:this._keyToTileCoords(o)}))},”_removeTile”)});return new i(t)},”leafletRasterLayer”),mn=T(e=>(t,r)=>{if(r instanceof AbortController)return e(t,r);let n=new AbortController;return e(t,n).then(i=>r(void 0,i.data,i.cacheControl||””,i.expires||””),i=>r(i)).catch(i=>r(i)),{cancel:T(()=>n.abort(),”cancel”)}},”v3compat”),Ot=class{constructor(t){this.tilev4=T((r,n)=>B(this,null,function*(){if(r.type===”json”){let x=r.url.substr(10),F=this.tiles.get(x);if(F||(F=new Le(x),this.tiles.set(x,F)),this.metadata)return{data:yield F.getTileJson(r.url)};let P=yield F.getHeader();return(P.minLon>=P.maxLon||P.minLat>=P.maxLat)&&console.error(`Bounds of PMTiles archive ${P.minLon},${P.minLat},${P.maxLon},${P.maxLat} are not valid.`),{data:{tiles:[`${r.url}/{z}/{x}/{y}`],minzoom:P.minZoom,maxzoom:P.maxZoom,bounds:[P.minLon,P.minLat,P.maxLon,P.maxLat]}}}let i=new RegExp(/pmtiles://(.+)/(d+)/(d+)/(d+)/),o=r.url.match(i);if(!o)throw new Error(“Invalid PMTiles protocol URL”);let s=o[1],a=this.tiles.get(s);a||(a=new Le(s),this.tiles.set(s,a));let d=o[2],f=o[3],g=o[4],l=yield a.getHeader(),v=yield a?.getZxy(+d,+f,+g,n.signal);if(v)return{data:new Uint8Array(v.data),cacheControl:v.cacheControl,expires:v.expires};if(l.tileType===1){if(this.errorOnMissingTile)throw new Error(“Tile not found.”);return{data:new Uint8Array}}return{data:null}}),”tilev4″),this.tile=mn(this.tilev4),this.tiles=new Map,this.metadata=t?.metadata||!1,this.errorOnMissingTile=t?.errorOnMissingTile||!1}add(t){this.tiles.set(t.source.getKey(),t)}get(t){return this.tiles.get(t)}};T(Ot,”Protocol”);var It=Ot;function Rt(e,t){return(t>>>0)*4294967296+(e>>>0)}T(Rt,”toNum”);function Ut(e,t){let r=t.buf,n=r[t.pos++],i=(n&112)>>4;if(n<128||(n=r[t.pos++],i|=(n&127)<<3,n<128)||(n=r[t.pos++],i|=(n&127)<<10,n<128)||(n=r[t.pos++],i|=(n&127)<<17,n<128)||(n=r[t.pos++],i|=(n&127)<<24,n<128)||(n=r[t.pos++],i|=(n&1)<<31,n<128))return Rt(e,i);throw new Error("Expected varint not more than 10 bytes")}T(Ut,"readVarintRemainder");function fe(e){let t=e.buf,r=t[e.pos++],n=r&127;return r<128||(r=t[e.pos++],n|=(r&127)<<7,r<128)||(r=t[e.pos++],n|=(r&127)<<14,r<128)||(r=t[e.pos++],n|=(r&127)<<21,r<128)?n:(r=t[e.pos],n|=(r&15)<<28,Ut(n,e))}T(fe,"readVarint");function qe(e,t,r,n){if(n===0){r===1&&(t[0]=e-1-t[0],t[1]=e-1-t[1]);let i=t[0];t[0]=t[1],t[1]=i}}T(qe,"rotate");function qt(e,t){let r=ye(2,e),n=t,i=t,o=t,s=[0,0],a=1;for(;a26)throw new Error(“Tile zoom level exceeds max safe number limit (26)”);if(t>ye(2,e)-1||r>ye(2,e)-1)throw new Error(“tile x/y outside zoom level bounds”);let n=yn[e],i=ye(2,e),o=0,s=0,a=0,d=[t,r],f=i/2;for(;f>0;)o=(d[0]&f)>0?1:0,s=(d[1]&f)>0?1:0,a+=f*f*(3*o^s),qe(f,d,o,s),f=f/2;return n+a}T(Gt,”zxyToTileId”);function wn(e){let t=0,r=0;for(let n=0;n<27;n++){let i=(1<<n)*(1<e)return qt(n,e-t);t+=i}throw new Error(“Tile zoom level exceeds max safe number limit (26)”)}T(wn,”tileIdToZxy”);var bn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.None=1]=”None”,e[e.Gzip=2]=”Gzip”,e[e.Brotli=3]=”Brotli”,e[e.Zstd=4]=”Zstd”,e))(bn||{});function Pe(e,t){return B(this,null,function*(){if(t===1||t===0)return e;if(t===2){if(typeof globalThis.DecompressionStream>”u”)return Ht(new Uint8Array(e));let r=new Response(e).body;if(!r)throw new Error(“Failed to read response stream”);let n=r.pipeThrough(new globalThis.DecompressionStream(“gzip”));return new Response(n).arrayBuffer()}throw new Error(“Compression method not supported”)})}T(Pe,”defaultDecompress”);var Mn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.Mvt=1]=”Mvt”,e[e.Png=2]=”Png”,e[e.Jpeg=3]=”Jpeg”,e[e.Webp=4]=”Webp”,e[e.Avif=5]=”Avif”,e))(Mn||{});function Nt(e){return e===1?”.mvt”:e===2?”.png”:e===3?”.jpg”:e===4?”.webp”:e===5?”.avif”:””}T(Nt,”tileTypeExt”);var Sn=127;function Wt(e,t){let r=0,n=e.length-1;for(;r>1,o=t-e[i].tileId;if(o>0)r=i+1;else if(o=0&&(e[n].runLength===0||t-e[n].tileId-1,o=/Chrome|Chromium|Edg|OPR|Brave/.test(n);this.chromeWindowsNoCache=!1,i&&o&&(this.chromeWindowsNoCache=!0)}getKey(){return this.url}setHeaders(t){this.customHeaders=t}getBytes(t,r,n,i){return B(this,null,function*(){let o,s;n?s=n:(o=new AbortController,s=o.signal);let a=new Headers(this.customHeaders);a.set(“range”,`bytes=${t}-${t+r-1}`);let d;this.mustReload?d=”reload”:this.chromeWindowsNoCache&&(d=”no-store”);let f=yield fetch(this.url,{signal:s,cache:d,headers:a});if(t===0&&f.status===416){let v=f.headers.get(“Content-Range”);if(!v||!v.startsWith(“bytes */”))throw new Error(“Missing content-length on 416 response”);let x=+v.substr(8);f=yield fetch(this.url,{signal:s,cache:”reload”,headers:{range:`bytes=0-${x-1}`}})}let g=f.headers.get(“Etag”);if(g!=null&&g.startsWith(“W/”)&&(g=null),f.status===416||i&&g&&g!==i)throw this.mustReload=!0,new Ue(`Server returned non-matching ETag ${i} after one retry. Check browser extensions and servers for issues that may affect correct ETag headers.`);if(f.status>=300)throw new Error(`Bad response code: ${f.status}`);let l=f.headers.get(“Content-Length”);if(f.status===200&&(!l||+l>r))throw o&&o.abort(),new Error(“Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.”);return{data:yield f.arrayBuffer(),etag:g||void 0,cacheControl:f.headers.get(“Cache-Control”)||void 0,expires:f.headers.get(“Expires”)||void 0}})}};T(Zt,”FetchSource”);var Tn=Zt;function Z(e,t){let r=e.getUint32(t+4,!0),n=e.getUint32(t+0,!0);return r*ye(2,32)+n}T(Z,”getUint64″);function jt(e,t){let r=new DataView(e),n=r.getUint8(7);if(n>3)throw new Error(`Archive is spec version ${n} but this library supports up to spec version 3`);return{specVersion:n,rootDirectoryOffset:Z(r,8),rootDirectoryLength:Z(r,16),jsonMetadataOffset:Z(r,24),jsonMetadataLength:Z(r,32),leafDirectoryOffset:Z(r,40),leafDirectoryLength:Z(r,48),tileDataOffset:Z(r,56),tileDataLength:Z(r,64),numAddressedTiles:Z(r,72),numTileEntries:Z(r,80),numTileContents:Z(r,88),clustered:r.getUint8(96)===1,internalCompression:r.getUint8(97),tileCompression:r.getUint8(98),tileType:r.getUint8(99),minZoom:r.getUint8(100),maxZoom:r.getUint8(101),minLon:r.getInt32(102,!0)/1e7,minLat:r.getInt32(106,!0)/1e7,maxLon:r.getInt32(110,!0)/1e7,maxLat:r.getInt32(114,!0)/1e7,centerZoom:r.getUint8(118),centerLon:r.getInt32(119,!0)/1e7,centerLat:r.getInt32(123,!0)/1e7,etag:t}}T(jt,”bytesToHeader”);function Ge(e){let t={buf:new Uint8Array(e),pos:0},r=fe(t),n=[],i=0;for(let o=0;o<r;o++){let s=fe(t);n.push({tileId:i+s,offset:0,length:0,runLength:1}),i+=s}for(let o=0;o<r;o++)n[o].runLength=fe(t);for(let o=0;o<r;o++)n[o].length=fe(t);for(let o=0;o0?n[o].offset=n[o-1].offset+n[o-1].length:n[o].offset=s-1}return n}T(Ge,”deserializeIndex”);var Jt=class extends Error{};T(Jt,”EtagMismatch”);var Ue=Jt;function Ne(e,t){return B(this,null,function*(){let r=yield e.getBytes(0,16384);if(new DataView(r.data).getUint16(0,!0)!==19792)throw new Error(“Wrong magic number for PMTiles archive”);let n=r.data.slice(0,Sn),i=jt(n,r.etag),o=r.data.slice(i.rootDirectoryOffset,i.rootDirectoryOffset+i.rootDirectoryLength),s=`${e.getKey()}|${i.etag||””}|${i.rootDirectoryOffset}|${i.rootDirectoryLength}`,a=Ge(yield t(o,i.internalCompression));return[i,[s,a.length,a]]})}T(Ne,”getHeaderAndRoot”);function We(e,t,r,n,i){return B(this,null,function*(){let o=yield e.getBytes(r,n,void 0,i.etag),s=yield t(o.data,i.internalCompression),a=Ge(s);if(a.length===0)throw new Error(“Empty directory is invalid”);return a})}T(We,”getDirectory”);var Cn=class{constructor(t=100,r=!0,n=Pe){this.cache=new Map,this.maxCacheEntries=t,this.counter=1,this.decompress=n}getHeader(t){return B(this,null,function*(){let r=t.getKey(),n=this.cache.get(r);if(n)return n.lastUsed=this.counter++,n.data;let i=yield Ne(t,this.decompress);return i[1]&&this.cache.set(i[1][0],{lastUsed:this.counter++,data:i[1][2]}),this.cache.set(r,{lastUsed:this.counter++,data:i[0]}),this.prune(),i[0]})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,s.data;let a=yield We(t,this.decompress,r,n,i);return this.cache.set(o,{lastUsed:this.counter++,data:a}),this.prune(),a})}prune(){if(this.cache.size>this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{Ne(t,this.decompress).then(a=>{a[1]&&this.cache.set(a[1][0],{lastUsed:this.counter++,data:Promise.resolve(a[1][2])}),o(a[0]),this.prune()}).catch(a=>{s(a)})});return this.cache.set(r,{lastUsed:this.counter++,data:i}),i})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,yield s.data;let a=new Promise((d,f)=>{We(t,this.decompress,r,n,i).then(g=>{d(g),this.prune()}).catch(g=>{f(g)})});return this.cache.set(o,{lastUsed:this.counter++,data:a}),a})}prune(){if(this.cache.size>=this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{this.getHeader(t).then(s=>{i(),this.invalidations.delete(r)}).catch(s=>{o(s)})});this.invalidations.set(r,n)})}};T(Yt,”SharedPromiseCache”);var Ln=Yt,Vt=class{constructor(t,r,n){typeof t==”string”?this.source=new Tn(t):this.source=t,n?this.decompress=n:this.decompress=Pe,r?this.cache=r:this.cache=new Ln}getHeader(){return B(this,null,function*(){return yield this.cache.getHeader(this.source)})}getZxyAttempt(t,r,n,i){return B(this,null,function*(){let o=Gt(t,r,n),s=yield this.cache.getHeader(this.source);if(ts.maxZoom)return;let a=s.rootDirectoryOffset,d=s.rootDirectoryLength;for(let f=0;f0){let v=yield this.source.getBytes(s.tileDataOffset+l.offset,l.length,i,s.etag);return{data:yield this.decompress(v.data,s.tileCompression),cacheControl:v.cacheControl,expires:v.expires}}a=s.leafDirectoryOffset+l.offset,d=l.length}else return}throw new Error(“Maximum directory depth exceeded”)})}getZxy(t,r,n,i){return B(this,null,function*(){try{return yield this.getZxyAttempt(t,r,n,i)}catch(o){if(o instanceof Ue)return this.cache.invalidate(this.source),yield this.getZxyAttempt(t,r,n,i);throw o}})}getMetadataAttempt(){return B(this,null,function*(){let t=yield this.cache.getHeader(this.source),r=yield this.source.getBytes(t.jsonMetadataOffset,t.jsonMetadataLength,void 0,t.etag),n=yield this.decompress(r.data,t.internalCompression),i=new TextDecoder(“utf-8″);return JSON.parse(i.decode(n))})}getMetadata(){return B(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(t){if(t instanceof Ue)return this.cache.invalidate(this.source),yield this.getMetadataAttempt();throw t}})}getTileJson(t){return B(this,null,function*(){let r=yield this.getHeader(),n=yield this.getMetadata(),i=Nt(r.tileType);return{tilejson:”3.0.0″,scheme:”xyz”,tiles:[`${t}/{z}/{x}/{y}${i}`],vector_layers:n.vector_layers,attribution:n.attribution,description:n.description,name:n.name,version:n.version,bounds:[r.minLon,r.minLat,r.maxLon,r.maxLat],center:[r.centerLon,r.centerLat,r.centerZoom],minzoom:r.minZoom,maxzoom:r.maxZoom}})}};T(Vt,”PMTiles”);var Le=Vt;var we=[{name:”Mirenda Center at Neumann University”,town:”Aston Township”,coordinates:”39.87518295957942, -75.44287264018742″,photo:”CUFT75EQJFCNXF6TBJWB47IZBE”,description:”Tom (Mark Ruffalo) mans a table at a job fair here while temporarily working as a recruiter for the FBI. Next to his station, the distinctive pillars of the centeru2019s atrium are visible.”,episode:”1″},{name:”Rita’s Italian Ice & Frozen Custard”,town:”Collingdale”,coordinates:”39.91438144966683, -75.27198755476991″,photo:”PVN6FY7AZVH57NJJ5QZMPSORVQ”,description:”Emily (Silvia Dionicio), Tomu2019s daughter, works her part-time job here. In the scene where it is shown, Tom orders a black cherry water ice, a flavor choice of which we approve.”,episode:”1″},{name:”Former Philadelphia Police Department Headquarters”,town:”Philadelphia”,coordinates:”39.95454212611587, -75.15196309318775″,photo:”L7RTCVGETVB6BGP3OI6FGI75II”,description:”We get a brief glimpse of the exterior of the former Philadelphia police headquarters, colloquially known as the Roundhouse. Whether the interior is the same building is unclear, but in the show, this appears to be where the FBIu2019s Philly field office is located.”,episode:”1″},{name:”Bangor Quarry”,town:”Bangor”,coordinates:”40.870304770450126, -75.20395382209078″,photo:””,description:”Robbie (Tom Pelphrey), Cliff (RaxFAl Castillo), and Peaches (Owen Teague) head here for a post-robbery swim. On a real-life note, you should not do the same u2014 not only is it dangerous, but itu2019s also trespassing, according to the Bangor Borough Police Department.”,episode:”1″},{name:”Lincoln Highway and 2nd Avenue”,town:”Coatesville”,coordinates:”39.98367030794463, -75.82206085300957″,photo:”DKXFYZ5EGBEHJJKLSUGLQQDAR4″,description:”The Dark Hearts motorcycle gang rides through this intersection in formation, the giveaway being Presence Bank in the background in one shot.”,episode:”2″},{name:”Polish American Citizens Club”,town:”Coatesville”,coordinates:”39.98079295642107, -75.83090353169075″,photo:”WICMTOVTBFE3HANVTH2PSHED5M”,description:”Done up as the so-called Leftyu2019s Taproom in the show, this location serves as the Dark Heartsu2019 clubhouse and watering hole. In real life, itu2019s just off Lincoln Highway, lending a bit of realism to the gangu2019s ride through downtown Coatesville.”,episode:”2″},{name:”Martin’s Taphouse”,town:”Aston Township”,coordinates:”39.89042265129427, -75.43449503510138″,photo:””,description:”Martin’s stands in as the exterior of the Tip Top Lounge in the series, which we see in this episode stacked with motorcycles parked outside the front door.”,episode:”2″},{name:”Dixon’s Lounge”,town:”Sharon Hill”,coordinates:”39.897139107273794, -75.27191565278125″,photo:”BHMNCU4FFJGOBPUKYCZBB2XEOA”,description:”While the exterior of the Tip Top Lounge is in Aston, the interior bears a striking resemblance to Delcou2019s own Dixonu2019s Lounge. Here, Robbie and Cliff are stood up by an, ahem, u201Cbusiness partneru201D before walking out on an order of crabfries.”,episode:”2″},{name:”Willowbrook Shopping Center”,town:”Boothwyn”,coordinates:”39.83646391291799, -75.44319408140227″,photo:”ZU5QXUIDONETHIPPADUJYMAKCY”,description:”Maeve (Emilia Jones) takes Sam (Ben Lewis Doherty) to a fictional u201CVal-U Corneru201D store here with the intent of dropping him off for police to find before the plan goes awry. The store is located near the real Blue Cherry Ice Cream and Bakery, which is visible in the background.”,episode:”2″},{name:”Phoenixville Area High School”,town:”Phoenixville”,coordinates:”40.11868357112564, -75.51793551723154″,photo:””,description:”During his search for his daughter, Emily (Silvia Dionicio), Tom (Mark Ruffalo) finds her in the dugout of a baseball field that, in real life, is at Phoenixville Area High School. Its distinctive backstop is visible from a bird’s-eye view in the series.”,episode:”2″},{name:”Ralph’s Italian Restaurant”,town:”Philadelphia”,coordinates:”39.94006065749021, -75.15774535245488″,photo:”GMDZYMAHRNFGPBTYLRABBDJYHM”,description:”Dark Hearts leaders Jayson (Sam Keeley) and Perry (Jamie McShane) walk through the kitchen here to meet with local drug kingpin Freddy Frias (Elvis Nolasco), but in the show, it doesnu2019t appear to be serving the Italian food weu2019re used to in real life.”,episode:”3″},{name:”Mount Hope Cemetery”,town:”Aston Township”,coordinates:”39.871593701306836, -75.4390865914003″,photo:”4PCNSW4SPBAW7L2WFSJ2STJ3IM”,description:”Itu2019s a very quick shot, but itu2019s there just under four minutes into the episode. In the background, you can see the Commodore Barry Bridge, and graves on a hill in the cemetery in the foreground.”,episode:”3″},{name:”Sixpenny Creek Quarry”,town:”Union Township”,coordinates:”40.23700358370588, -75.78650582204335″,photo:”PLM34YOMIRCPPDVCGTFXM5FGME”,description:”Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) finally get their meeting with Eryn (Margarita Levieva), their Dark Hearts insider, but it doesnu2019t go according to plan.”,episode:”3″},{name:”Llanerch Diner”,town:”Upper Darby”,coordinates:”39.96894828437008, -75.29301814827437″,photo:”6QXQDIMGKVDR5J64W4PVS3WP3E”,description:”Taskforce members Aleah (Thuso Mbedu) and Lizzie (Alison Oliver) head to Upper Darby’s famed Llanerch Diner for a tip on the drug house robberies they’re investigating, and get a break in the case.”,episode:”3″},{name:”Rosedon Plaza”,town:”Lansdowne”,coordinates:”39.94225704587108, -75.26528827286353″,photo:”SCB2N67GLFACZO33OOA7CLXQMM”,description:”In the background of one shot during the chase for Ray (Peter Patrikios), you can see the old Doc’s Deli (Deli Green). That puts Ray in the corner of the Rosedon Plaza parking lot as Lizzie (Alison Oliver) makes the arrest.”,episode:”3″},{name:”Coatesville Police Department”,town:”Coatesville”,coordinates:”39.982144078230384, -75.82033869646108″,photo:”XTADWTS6UNEDHOJGNIMWPBBOLE”,description:”Whether the interior is the same station isnu2019t clear, but an exterior shot sets this spot up as the place where the Task team interrogates Ray (Peter Patrikios) and Shelley (Mickey Sumner). Out front, a police cruiser reads u201CDelaware County Sheriff,u201D which is a little far from home.”,episode:”3″},{name:”The Ridley House”,town:”Holmes”,coordinates:”39.89753600427107, -75.31137880453917″,photo:”F2JJYIIZWFA3FFTHDPSXFI5M5A”,description:”Following the chase and interrogation, Lizzie (Alison Oliver) and Grasso (Fabien Frankel) head to this local bar to unwind. Grasso indicates it is a Barnabyu2019s, which, in real life, was true at one point u2013 until the location became the Ridley House in 2019.”,episode:”3″},{name:”Pennsylvania Turnpike on-ramp”,town:”King of Prussia”,coordinates:”40.08960425823238, -75.39689126886788″,photo:”BURLUGM6TRDX3CE46XSFYGJK7M”,description:”Itu2019s a quick shot as Tom (Mark Ruffalo) drives around at the beginning of the episode, but you can just make out the LasikPlus building on Mall Boulevard in the background. That puts this Pennsylvania Turnpike entrance in King of Prussia.”,episode:”4″},{name:”I-76 Exit 320″,town:”Malvern”,coordinates:”40.073716457225665, -75.52365668680957″,photo:””,description:”Tom (Mark Ruffalo) appears to take this exit as he is driving to meet his fellow taskforce members.”,episode:”4″},{name:”Marcus Hook Community Center”,town:”Marcus Hook”,coordinates:”39.81198192114949, -75.41200706776057″,photo:”B76EM6PKTFEB7KFWEUWGOWYDL4″,description:”As County Chief Dorsey (Raphael Sbarge) exits the building, you can see a door tagged with u201CDelaware County Sheriffu2019s Office.u201D But the green awning above him is a dead giveaway u2014 thatu2019s the Marcus Hook Community Center.”,episode:”4″},{name:”Rockdale Industrial Center”,town:”Aston Township “,coordinates:”39.885281970146785, -75.44479191780039″,photo:””,description:”It’s disguised as a trucking depot in the series, but this is where Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) travel with Sam (Ben Lewis Doherty) to arrange transportation for their escape into Canada before being confronted by a Good Samaritan. “,episode:”4″},{name:”Upland Diner”,town:”Chester”,coordinates:”39.85816357241053, -75.37189095611281″,photo:”PVJMMBSI2ZBGJNQO46VYY5P6GQ”,description:”Upland Dineru2019s parking lot serves as Robbieu2019s (Tom Pelphrey) holding area during this episodeu2019s drug deal. Unfortunately, we only get an exterior shot of the building, but the restaurantu2019s vintage-style sign is proudly on display. Great pancakes, for the record.”,episode:”4″},{name:”Ridley Creek State Park entrance”,town:”Newtown Square”,coordinates:”39.95853496065017, -75.43948479664033″,photo:”KOSWCMRRHRAB7MLGNLQIF535UM”,description:”Cliff (RaxFAl Castillo) can be seen turning onto North Sandy Flash Drive from Gradyville Road as he heads to the drug deal meeting spot. If you look closely, you can just barely make out a sign for Ridley Creek State Park.”,episode:”4″},{name:”Beaver Creek”,town:”Wilmington, Del.”,coordinates:”39.839261612846315, -75.57139152554225″,photo:””,description:”It’s tough to spot, but the dam that Cliff (RaxFAl Castillo) parks his car next to during this episode’s failed drug deal u2014 or, more accurately, the Dark Hearts’ setup u2014 appears to be in Beaver Creek on the Delaware-Pennsylvania border.”,episode:”4″},{name:”City Clock Apartments”,town:”Coatesville”,coordinates:”39.98382540387415, -75.8211284189516″,photo:”3BYXFXCYUFFRZBUSN5UAPYVYOA”,description:”Another brief shot, but the clock face on the tower of the City Clock Apartments is prominently featured. The building formerly was the National Bank of Coatesville, and has been on the National Register of Historic Places since 1977.”,episode:”4″},{name:”Coatesville-Downingtown Bypass”,town:”Downingtown”,coordinates:”40.01895444780408, -75.70181027552258″,photo:””,description:”FBI Boss Kathleen McGinty (Martha Plimpton) and the rest of the task force swerve across traffic here while looking for Tom (Mark Ruffalo). In the background, you can just make out the sign for Pacer Pool Services & Supplies.”,episode:”5″},{name:”Marsh Creek State Park”,town:”Downingtown”,coordinates:”40.06782560219195, -75.72000193749815″,photo:”NT5JGVMLZFDJTGHC6M7BZFI7Y4″,description:”After surviving his encounter with Robbie (Tom Pelphrey), Tom (Mark Ruffalo) emerges from the woods to see a beautiful summer scene of families enjoying the lake at Marsh Creek State Park.”,episode:”5″},{name:”I-95 Pennsylvania Welcome Center”,town:”Boothwyn”,coordinates:”39.82418322018552, -75.43745107822149″,photo:”5HPTTXFG3ZA2HGAW54OXM4D5ZY”,description:”FBI boss Kathleen McGinty (Martha Plimpton) stuffs her face with fast food at the center’s picnic tables as the task crew looks for their leader. As McGinty explains, she is u201Can emotional eater.u201D”,episode:”5″},{name:”Woy Bridge”,town:”Everett”,coordinates:”40.0150517796881, -78.304498566625″,photo:””,description:”In what is likely the farthest-flung filming location u2013 at least in relation to the rest of the local spots u2013 we get some shots of Everettu2019s Woy Bridge in Bedford County as the taskforce closes in on Robbie (Tom Pelphrey).”,episode:”5″},{name:”Wissahickon Valley Park”,town:”Philadelphia”,coordinates:”40.05627328492142, -75.21733258122025″,photo:”GIK3XIGHEBGOFNM4S2PBSJFG3M”,description:”Many of the series’ woodsy scenes appear to have been filmed in the Wissahickon, though few u2014 if any u2014 notable landmarks make an appearance. Crews were spotted filming around the park last year, and many Inquirer readers have written in to say the recognize certain parts of the creek and landscape in this episode.”,episode:”6″},{name:”Our Lady of Peace Parish”,town:”Milmont Park”,coordinates:”39.88193514095659, -75.33589782814482″,photo:”HGPPGXLRFZFUFE5WBNNXP3DXFM”,description:”Though disguised well as a juvenile detention facility in the show, this little Delco parish provides at least the exterior shots for where Tom (Mark Ruffalo) meets Sam (Ben Lewis Doherty) for the first time.”,episode:”6″},{name:”High Bridge”,town:”Coatesville”,coordinates:”39.98390784773821, -75.82749681114403″,photo:””,description:”This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso’s (Fabien Frankel) fate with the Dark Hearts.”,episode:”7″},{name:”Delaware County Courthouse and Government Center”,town:”Media”,coordinates:”39.92029464476607, -75.39155431097433″,photo:”NWW6JA6A4FBAJHW7ZIXSIPZ2YA”,description:”Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.”,episode:”7″},{name:”Stroud Preserve”,town:”West Chester”,coordinates:”39.95296099101273, -75.64754780607977″,photo:”6ZJWJVNYQFAZJJPFWLZE4ZWXVY”,description:”The last we see of Maeve (Emilia Jones) in the series, she is driving past Stroud Preserve’s Creek Road parking lot with her cousins in tow. Where they’re heading is anybody’s guess, but we hope it’s somewhere with fewer Dark Hearts members.”,episode:”7″}];var W=63710088e-1,gi={centimeters:W*100,centimetres:W*100,degrees:360/(2*Math.PI),feet:W*3.28084,inches:W*39.37,kilometers:W/1e3,kilometres:W/1e3,meters:W,metres:W,miles:W/1609.344,millimeters:W*1e3,millimetres:W*1e3,nauticalmiles:W/1852,radians:1,yards:W*1.0936};function Dn(e,t,r={}){let n={type:”Feature”};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function Kt(e,t,r={}){return Dn({type:”MultiPoint”,coordinates:e},t,r)}function Ze(e,t,r){if(e!==null)for(var n,i,o,s,a,d,f,g=0,l=0,v,x=e.type,F=x===”FeatureCollection”,P=x===”Feature”,V=F?e.features.length:1,O=0;O<V;O++){f=F?e.features[O].geometry:P?e.geometry:e,v=f?f.type==="GeometryCollection":!1,a=v?f.geometries.length:1;for(var K=0;K<a;K++){var C=0,$=0;if(s=v?f.geometries[K]:f,s!==null){d=s.coordinates;var I=s.type;switch(g=r&&(I==="Polygon"||I==="MultiPolygon")?1:0,I){case null:break;case"Point":if(t(d,l,O,C,$)===!1)return!1;l++,C++;break;case"LineString":case"MultiPoint":for(n=0;n<d.length;n++){if(t(d[n],l,O,C,$)===!1)return!1;l++,I==="MultiPoint"&&C++}I==="LineString"&&C++;break;case"Polygon":case"MultiLineString":for(n=0;n<d.length;n++){for(i=0;i<d[n].length-g;i++){if(t(d[n][i],l,O,C,$)===!1)return!1;l++}I==="MultiLineString"&&C++,I==="Polygon"&&$++}I==="Polygon"&&C++;break;case"MultiPolygon":for(n=0;n<d.length;n++){for($=0,i=0;i<d[n].length;i++){for(o=0;o<d[n][i].length-g;o++){if(t(d[n][i][o],l,O,C,$)===!1)return!1;l++}$++}C++}break;case"GeometryCollection":for(n=0;n{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]<n[0]&&(r[2]=n[0]),r[3]{pe(“https://interactives.inquirer.com/storage/dependencies/maplibre/5.3.0/maplibre-gl.js”,()=>{let e=new It;be=window.maplibregl,be.addProtocol(“pmtiles”,e.tile);let t=”https://interactives.inquirer.com/melish/1.2″,r=`${t}/us-latest.pmtiles`,n=new Le(r);e.add(n),n.getHeader().then(async()=>{let o=await(await fetch(`${t}/styles/neutral.json`)).json();ee=new be.Map({container:”map”,zoom:13,center:[-75.165222,39.952583],cooperativeGestures:!0,attributionControl:!1,padding,style:{…o,sources:{openmaptiles:{type:”vector”,url:`pmtiles://${r}`}}}}),ee.scrollZoom.disable(),ee.touchPitch.disable(),ee.addControl(new be.NavigationControl({showCompass:!1,showZoom:!0,visualizePitch:!1}),”bottom-right”),ee.on(“load”,()=>{En(),De!==”all”?ke=we.filter(s=>parseInt(s.episode)parseFloat(d)).reverse(),s.id=ze(s.name),s.photo&&(s.imageSrc=`https://interactives.inquirer.com/secondbank/arc/${s.photo}/650.webp`);let a=xe(“js-map-stub”);Te(a,s),a.addEventListener(“click”,()=>{Qt(a)}),a.addEventListener(“mouseover”,()=>{Qt(a)}),a.addEventListener(“mouseout”,()=>{tr()}),new be.Marker({element:a}).setLngLat(s.coordinates).addTo(ee)}document.querySelector(“.js-map”).classList.add(“is-loaded”),er=!0,Me!=””&&(ir(Me),nr(Me))})})})},Qt=e=>{tr(),e.classList.add(“is-highlight”)},tr=()=>{document.querySelectorAll(“.js-map-location”).forEach(e=>{e.classList.remove(“is-highlight”)})},En=()=>{De=document.querySelector(“.js-steps”).dataset.episodeForPage},rr=()=>{let e=window.innerWidth>960;padding={top:50,bottom:e?50:window.innerHeight/2,left:e?window.innerWidth/2+50:50,right:50}},$n=()=>{window.addEventListener(“resize”,()=>{rr()})},nr=e=>{if(Me=null,e==null){let t=we.filter(r=>r.episode==De);ee.fitBounds(_t(t),{animate:!0})}else if(e.step==”all”)ee.fitBounds(_t(ke),{animate:!0});else{let t=we.filter(r=>ze(r.name)==e.step);t.length>0&&ee.flyTo({center:t[0].coordinates,padding,zoom:13,animate:!0,duration:1e3})}},ir=e=>{document.querySelectorAll(“.js-map-location”).forEach(t=>{t.classList.remove(“is-current”)}),e&&e.step!==”all”&&document.querySelector(`.js-map-location[data-id=”${e.step}”]`).classList.add(“is-current”)},_t=e=>{let t=Kt(e.map(n=>n.coordinates));return Xt(t)},Ae={init:()=>{An(),rr(),$n()},update:e=>{er?(nr(e),ir(e)):Me=e}};var Ye=Sr(or());var zn=async()=>{let t=await(await fetch(“https://interactives.inquirer.com/pepper/2025-task-locations/data.json”)).json();t=t.nav,console.log(t);let r=(0,Ye.default)();t=t.filter(i=>r.isAfter((0,Ye.default)(`${i.date} 22:00`))),t=t.filter(i=>i.link);let n=document.querySelector(“.js-nav-links”);for(let i of t){i.text=`Episode ${i.episode}`;let o=xe(“js-nav-link-stub”);Te(o,i),n.appendChild(o)}},sr={init:()=>{zn()}};var Ee,Bn=(e,t)=>{Ee=Ee||window.PMNdataLayer,Ee?Ee.push({event:”misc_event”,eventAction:e,eventLabel:t}):window.location.hostname.includes(“localhost”)?console.log(“Analytics event:”,e,t,”(not actually being sent due to localhost)”):console.log(“Failed to push analytics event”,e,t)},ar={event:(e,t)=>{Bn(e,t)}};var lr=1,Ve=class{constructor(t){this.el=t,this.contentPosition=”default”,this.possibleSteps=new Array,this.currentStep=null,this.offset=window.innerHeight*.5,this.instanceOfSteps=lr,this.hasMap=!!t.dataset.map,lr++,this.setOffset(),this.setPossibleSteps(),this.updateContent(),this.bindings()}setPossibleSteps(){this.el.querySelectorAll(“.js-steps-step”).forEach(t=>{t.dataset.step&&this.possibleSteps.push(t.dataset.step)})}bindings(){window.addEventListener(“scroll”,()=>{this.updateContent()}),window.addEventListener(“resize”,()=>{this.updateContent(),this.setOffset()})}setOffset(){window.innerWidth>960?this.offset=window.innerHeight*.5:this.offset=window.innerHeight*.8}updateContent(){this.updateCurrentStep()}updateCurrentStep(){let t,r;if(this.el.querySelectorAll(“.js-steps-step”).forEach((i,o)=>{i.getBoundingClientRect().top{let a=”is-“+o,d=”is-“+s;this.possibleSteps.indexOf(o){document.querySelectorAll(“.js-steps”).forEach(e=>{new Ve(e)})}};var Fn=()=>{},cr={init:()=>{Fn()}};var de,Ke,Xe=!0,Hn=()=>{de=document.querySelectorAll(“.js-video-autoplay”)},On=()=>{window.addEventListener(“resize”,()=>{hr()}),window.addEventListener(“scroll”,()=>{hr()}),de.forEach(e=>{e.addEventListener(“volumechange”,t=>{e.muted!==Xe&&!pt()&&(Xe=e.muted,In())})})},hr=()=>{let e;de.forEach((t,r)=>{let n=t.getBoundingClientRect(),i=n.height/2;n.y-i&&(e=t)}),e!==Ke&&(Ke=e,de.forEach(t=>{t.pause()}),e?e.play():Ke=null)},In=()=>{de.forEach(e=>{e.muted=Xe})},fr={init:()=>{Hn(),de&&On()}};var dr={init:()=>{at.init?.(),yt.init?.(),Mt.init?.(),Tt.init?.(),Ct.init?.(),kt.init?.(),Ae.init?.(),sr.init?.(),ur.init?.(),cr.init?.(),fr.init?.(),ue.init?.()}};var Rn=()=>{},pr={init:()=>{Rn()}};var Un=document.querySelector(“.js-inno”),vr=()=>{dr.init(),pr.init()};Un?vr():new MutationObserver((t,r)=>{if(document.querySelector(“.js-inno”)){r.disconnect(),vr();return}}).observe(document,{attributes:!0,childList:!0,subtree:!0});})();
Think you know your news? There’s only one way to find out. Welcome back to our weekly News Quiz — a quick way to see if your reading habits are sinking in and to put your local news knowledge to the test.
Question 1 of 10
After decades as the Mann Center for the Performing Arts, Philadelphia's arts center in Fairmount Park is getting a new name. What is it called now?
CorrectIncorrect. XX% of other readers got this question right.
The Pittsburgh-based Highmark insurance company will join the Mann nameplate starting immediately under the terms of a 12-year deal. The arts center will use the moniker "Highmark Mann" for short, and its new name comes with a renovation slated for completion in the spring.
Question 2 of 10
This Eagles player announced his retirement Monday on social media after 11 seasons in the NFL:
CorrectIncorrect. XX% of other readers got this question right.
Smith, 33, wrote that he “knew this day would come — but now that it’s here, I’m feeling so many emotions I never expected." The 6-foot-4, 270-pound outside linebacker signed with the Eagles on Sept. 5, one day after their season-opening victory over the Dallas Cowboys.
Subscribe to The Philadelphia Inquirer
Our reporting is directly supported by reader subscriptions. If you want more journalism like this story, please subscribe today.
How many of the eateries on The 76, The Inquirer's annual list of the most vital restaurants in the Philadelphia area, are fresh additions this year?
CorrectIncorrect. XX% of other readers got this question right.
More than half of the list is fresh — classics that Inquirer scouts felt deserved their time in the spotlight, or new and new-to-us spots that reflect the shifting energy of the dining scene.
Question 4 of 10
A plan to convert Chester County's Pennhurst State School and Hospital into one of these facilities is drawing outrage from local residents:
CorrectIncorrect. XX% of other readers got this question right.
A plan to convert Pennhurst into a massive data center has outraged and mobilized local residents, as well as people in neighboring communities in an area known for rolling hills, farms, and an overall rural character. The pushback comes as both President Donald Trump and Pennsylvania Gov. Josh Shapiro champion data center development.
Question 5 of 10
The Philadelphia Zoo is adding a new attraction that will serve as the first of its kind on the institution’s campus in its more than 150-year history. What is it?
CorrectIncorrect. XX% of other readers got this question right.
The 10-story amusement ride — dubbed the “Pherris Wheel” by zoo officials — will open Nov. 20 and sit just past the zoo’s main entrance, offering a gondola’s-eye view of the animal park below, Boathouse Row, the Philadelphia Art Museum, and the skyline below.
story continues after advertisement
Question 6 of 10
How much money did Temple University get as part of a record-making gift it recently received from an alumnus who almost didn't get accepted into the school?
CorrectIncorrect. XX% of other readers got this question right.
Christopher Barnett, who made his money in real estate and healthcare, has donated $55 million to the school, surpassing the $27.5 million given by philanthropists Sidney and Caroline Kimmel in April. Barnett was rejected from Temple nearly two decades ago, but he talked his way in after showing up unannounced at the office of the director of transfer admissions.
Question 7 of 10
A Delco-based tattooer won a scrapple sculpting contest at Reading Terminal Market late last week. His scrapple-fied sculpture depicted:
CorrectIncorrect. XX% of other readers got this question right.
Patrick Moser was crowned champion for his version of the Eagles’ Tush Push, which he called the “Mush Push.” The sculpture, judges said, was advanced, ambitious, and pushed scrapple “to its absolute limits.” Moser was awarded a pig trophy named “Scrappy” and a $100 Reading Terminal Market gift card.
Question 8 of 10
Following the Phillies' tragic knockout in game four of the National League Division Series, where is team manager Rob Thomson going next season?
CorrectIncorrect. XX% of other readers got this question right.
With one year left on his contract, Thomson will be back to manage the Phillies next season. Questions arose about Thomson’s job security last week after the Phillies lost in the divisional round of the playoffs for the second year in a row.
Question 9 of 10
Iron Hill Brewery abruptly closed all its stores and filed for liquidation bankruptcy earlier this month. That leaves one question: What happens to all their beer now?
CorrectIncorrect. XX% of other readers got this question right.
The final destination of Iron Hill's beer will play out during the bankruptcy process, which could take several months to just over a year. If the beer is able to be sold, proceeds would go toward paying the company's debts.
Question 10 of 10
This dive bar made The Inquirer's list of the 20 happiest places in Philly, thanks in part to its welcoming bartenders:
CorrectIncorrect. XX% of other readers got this question right.
Money can’t buy happiness, but it can buy good food and a fun beverage, which is a pretty neat shortcut. Dirty Franks, one reader wrote, not only has $2 beers but bartenders so warm that they sometimes think of them as "additional mothers."
Your Results
You have skipped .
You scored XX out of 10.
The average reader scored XX out of 10
Seems like you’ve been skimming more than reading there, buddy. There’s always next week.
You’ve read some articles (or made some educated guesses) but we wouldn’t come to you first for our local news recaps. Better luck next week!
Do you work here? You’re a local news stan with the latest updates on Philly happenings. Your friends definitely ask you for summaries on what’s going on and it shows.