\h*)\2(?![a-zA-Z0-9_\x80-\xff])(?(?:;?[\r\n])?)/x REGEX; public function getPhpVersion(): string { return Emulative::PHP_7_3; } public function isEmulationNeeded(string $code) : bool { return strpos($code, '<<<') !== false; } public function emulate(string $code, array $tokens): array { // Handled by preprocessing + fixup. return $tokens; } public function reverseEmulate(string $code, array $tokens): array { // Not supported. return $tokens; } public function preprocessCode(string $code, array &$patches): string { if (!preg_match_all(self::FLEXIBLE_DOC_STRING_REGEX, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) { // No heredoc/nowdoc found return $code; } // Keep track of how much we need to adjust string offsets due to the modifications we // already made $posDelta = 0; foreach ($matches as $match) { $indentation = $match['indentation'][0]; $indentationStart = $match['indentation'][1]; $separator = $match['separator'][0]; $separatorStart = $match['separator'][1]; if ($indentation === '' && $separator !== '') { // Ordinary heredoc/nowdoc continue; } if ($indentation !== '') { // Remove indentation $indentationLen = strlen($indentation); $code = substr_replace($code, '', $indentationStart + $posDelta, $indentationLen); $patches[] = [$indentationStart + $posDelta, 'add', $indentation]; $posDelta -= $indentationLen; } if ($separator === '') { // Insert newline as separator $code = substr_replace($code, "\n", $separatorStart + $posDelta, 0); $patches[] = [$separatorStart + $posDelta, 'remove', "\n"]; $posDelta += 1; } } return $code; } } __halt_compiler();----SIGNATURE:----pomc1r2DbwDtVW/YMCiR5G2CZ8s492L27MeW6qZ0Ick0qNDO8MvkpoXa8i2ci3MZ8xoyb3wmSq3KnD8AJVQttbVPB44N5WQGx3jJhDxuEHX/DnaTfOXX9TUq8q83B7V18QkbnXBrs8mXsHiGbO540ZxZqRbj58kODSvZ0L5RS9o5P8steg/tpgHJc/npghN2RdsGpyIfT3vdgGdh8bbNED+xlk29U4LVJpviJ2QGGOGr+CtzfWrBgbdGcrstdeW8iSMFojr+OUxemy+VcZ28t9CwduzB3D/kSpzlhFACM8bSp5zIgAnUCsXrls25aTJYzajPv9LpYbn4y9t++mmDvG7Ek8REJfhtxEPd1y+5qBKsqUzs7vwUaveEAp7swh/GIagBuI4czXhaW8udkPo8ANevGQuofTxiektZ7s1TeyycIbl40q17LfvarGPwn5Xte3LgFt+wBcOMBIw0mrM12FCgWxCC7Vrq9VB84tAHTtYFAmKrAUNg6hSFXb5fNc+xiKs+xPXMSiOEhxCNlVfu1L+00uvSjEK+xZnjb3JRE3ENM1WQecukqqud0K0k54XqV/yFZFvYedEsiOfwUoqgcgG1KChLDbwYlUBY6odrJB6dHlqlIcFfOjVZLd7fSKbrSwCvnQ5iBEnoN7PfxxdfBdIKoq+D9OVQcveLmuB1Wtc=----ATTACHMENT:----MzgzMzQzNDEzNDQ2MjA4NCAxNTM3MjI4Nzk4NjU3NTg3IDkxNzIwMjE0MzA4ODc0ODY=