Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Friday 1 February 2019

A popular genealogy website just helped solve a serial killer cold case in Oregon

On Thursday, detectives in Portland, Ore. announced that a long-cold local murder case finally came to a resolution, 40 years after the fact.

In 1979, 20-year-old Anna Marie Hlavka was found dead in the Portland apartment she shared with her fiance and sister. According to police, she was strangled to death and sexually assaulted. Police followed a number of leads and kept tabs on the case for decades without a breakthrough.

Last May, detectives with Portland’s Cold Case Homicide Detail dug back into the case using the methodology made famous when investigators last year tracked down the man believed to be the Golden State Killer.

Around that time, detectives working the Hlavka case reached out to a company called Parabon NanoLabs to determine if their case could be solved the same way, by cross-referencing the suspect’s DNA with public DNA profiles uploaded to GEDmatch, a popular free ancestry and genealogy database.

“Most of our cases are cold cases, many of which are decades old like Anna Marie’s case,” Parabon Chief Genetic Genealogist CeCe Moore told TechCrunch in an email interview.

Many law enforcement agencies are already familiar with a Parabon service called Snapshot Phenotype, which allows the company to predict aspects of a person’s physical appearance using only DNA. At Parabon, Moore’s team has successfully identified 33 individuals for law enforcement since its launch in May 2018. The team works both cold cases and active investigations.

Moore explained how her team takes a suspect’s DNA and uploads it into GEDmatch. There, the team can identify potential relatives, usually distant cousins and not-close relatives.

“We build their family trees and then try to determine who might be related to all of these different people and their ancestors,” Moore said. “When we are successful, we reverse engineer the family tree of the unknown suspect based on the trees of the people who share DNA with him in GEDMatch.”

According to the police bureau’s report, the breakthrough led them to Texas:

The forensic genealogist was able to map three of the four familial lines of the killer and identified the killer as Jerry Walter McFadden, born March 21, 1948. McFadden was a convicted murderer and was executed by the State of Texas in October 1999. Due to McFadden’s execution date, his DNA profile was never entered into the FBI CODIS database for comparison.

Detectives travelled to Texas to interview McFadden’s family members and obtain a confirmatory DNA standard to compare with the DNA evidence in the Hlavka murder. Detectives obtained DNA standards with their consent from members of McFadden’s family. Detectives also learned McFadden traveled to the Pacific Northwest in 1979 with an acquaintance from their home town. The woman reported dropping him off in Portland and having no further contact with him.

The case is the latest example of how the popularity of at-home DNA test kits — and the data they yield, often uploaded into open online genealogy databases — is a windfall for investigators. In the instance of McFadden, the DNA trail led to some surprising connections.

“In an earlier case I worked on [the 1981 murder of Ginny Freeman of Brazos, Texas], genetic genealogy analysis also led to a man who had been executed in 1999 in Texas, James Otto Earhart,” Moore told TechCrunch.

“It is really strange to think that these two serial killers that we identified through genetic genealogy a few months apart decades after their crimes, were on Texas death row together and executed the same year.



from TechCrunch https://tcrn.ch/2Sge0ZI
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support