first commit

This commit is contained in:
2024-10-25 14:16:28 +02:00
commit 925276dbb2
33795 changed files with 4780077 additions and 0 deletions

View File

@@ -0,0 +1 @@
X6Ipck3g

View File

@@ -0,0 +1,2 @@
Order deny,allow
Allow from all

View File

@@ -0,0 +1,6 @@
<IfModule mod_authz_core.c>
Require all denied
<Files ~ "(?i)^.*\.(webp|jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico)$">
Require all granted
</Files>
</IfModule>

View File

@@ -0,0 +1,15 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.webp [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.webp [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.webp [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.webp [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.webp [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.webp [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.webp [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.webp [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/c/$1$2$3.webp [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/c/$1$2.webp [L]
</IfModule>

View File

@@ -0,0 +1,10 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^(.*)\.(jpe?g|png)$ %{ENV:REWRITEBASE}modules/pshowlazyimg/webp-on-demand.php?source=%{SCRIPT_FILENAME} [NC,L]
</IfModule>
<IfModule mod_mime.c>
AddType image/webp .webp
</IfModule>

View File

@@ -0,0 +1,72 @@
PSHOW LAZYIMG CHANGELOG
==========
v2.7 - 2021.05.10
* you can set whether the module should use <picture> tag for faster loading of webp graphics
* fixed small bugs
v2.6 - 2021.04.27
-----
* module has been optimized for best performance
* product images can be converted using cron task or manually by url
* all images will be dynamically converted to webp during first load
* from now clearing shop cache will not remove webp images
* images in webp format are now stored next to the original files
* removed lazy load with low resolution placeholder (due to lower performance)
* removed lazy load with shop logo as placeholder (due to lower performance)
v2.5 - 2020.03.27
-----
* fixed bugs
v2.4 - 2020.03.27
-----
* improved WebP conversion
* fixed bugs
v2.3 - 2020.03.12
-----
* from now module support converting images to WebP format on-the-fly
v2.2 - 2019.07.25
-----
* in case of error, try to lazy load without placeholder
v2.1 - 2019.07.24
-----
* improved placeholder generator
* errors will be logged in /var/logs/*_pshowlazyimg.log
* other small fixes
v2.0 - 2019.07.18
-----
* changed way of loading images
v1.14 - 2019.03.08
-----
* fixed a problem with replacing urls for photos with null
* fixed a problem with update of module
v1.13 - 2019.01.29
-----
* bugs fixes
v1.12 - 2019.01.18
-----
* shop logo as default loading image
* fix for dynamically loaded content
v1.11 - 2019.01.02
-----
* bugs fixes
v1.1 - 2019.01.01
-----
* simplified photos uploading
* added translations
* added the ability to upload own loading pictures
* bugs fixes
v1.0
-----
* first version of the module

View File

@@ -0,0 +1,15 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
require_once dirname(__FILE__) . "/vendor/autoload.php";

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<module>
<name>pshowlazyimg</name>
<displayName><![CDATA[Image Optimizer]]></displayName>
<version><![CDATA[2.7.0]]></version>
<description><![CDATA[All photos will be converted to WebP format and loaded only when they are visible on the screen.]]></description>
<author><![CDATA[PrestaShow.pl]]></author>
<tab><![CDATA[other]]></tab>
<is_configurable>1</is_configurable>
<need_instance>0</need_instance>
<limited_countries></limited_countries>
</module>

View File

@@ -0,0 +1,12 @@
<?php
require_once dirname(__FILE__) . "/../../config.php";
use Prestashow\PrestaCore\Controller\BackupController;
class PShowLazyImgBackupController extends BackupController
{
public $select_menu_tab = 'subtab-PShowLazyImgMain';
}

View File

@@ -0,0 +1,286 @@
<?php
/*
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
require_once dirname(__FILE__) . "/../../config.php";
use Prestashow\PrestaCore\Model\AbstractAdminController;
use Prestashow\PShowLazyImg\Repository\ImageOptimizeRepository;
use Prestashow\PShowLazyImg\Service\WebpService;
use WebPConvert\Convert\ConverterFactory;
class PShowLazyImgMainController extends AbstractAdminController
{
public $default_action = 'index';
public $select_menu_tab = 'subtab-PShowLazyImgMain';
protected $fields = array(
'pshowlazyimg_use_picture_tag',
'pshowlazyimg_other_img',
);
/**
* @var PShowLazyImg
*/
public $module;
public function __construct()
{
parent::__construct();
$this->controller_displayName = $this->trans('Module Management');
}
public function indexAction()
{
$this->action_displayName = 'Module Settings';
if (Tools::getValue('btnSubmit')) {
foreach ($this->fields as $field) {
Configuration::updateValue($field, Tools::getValue($field));
}
$this->alerts[] = array('success', $this->trans('Settings updated'));
}
$this->module->installOrUpdateHtaccess();
$optionLabels = array(
'no' => $this->trans(
'Load normally (all images will be loaded immediately)'
),
'yes_without_placeholder' => $this->trans(
'Load lazily (images will be loaded when it will be visible on the screen)'
),
);
$numOfProductImages = ImageOptimizeRepository::countProductImages();
$numOfProductImagesWithoutWebp = ImageOptimizeRepository::countProductImagesWithoutWebp();
$isFriendlyUrlActive = (bool)Configuration::get('PS_REWRITING_SETTINGS');
$url = $this->context->link->getModuleLink('pshowlazyimg', 'cron');
$url .= $isFriendlyUrlActive ? '?' : '&';
$url .= 'token=' . $this->module->getCronToken();
$fields_form = array(
'form' => array(
'legend' => array(
'title' => $this->trans('Module settings'),
'icon' => 'icon-cogs'
),
'input' => array(
array(
'type' => 'radio',
'name' => 'pshowlazyimg_other_img',
'label' => 'All images',
'values' => array(
array(
'id' => 'no',
'value' => PShowLazyImg::LOAD_NORMAL,
'label' => $optionLabels['no'],
),
array(
'id' => 'yes_without_placeholder',
'value' => PShowLazyImg::LOAD_LAZY_WITHOUT_PLACEHOLDER,
'label' => $optionLabels['yes_without_placeholder'],
),
),
),
array(
'type' => 'radio',
'name' => 'pshowlazyimg_use_picture_tag',
'label' => 'Faster loading of WebP file',
'values' => array(
array(
'id' => 'yes',
'value' => PShowLazyImg::USE_PICTURE_TAG_YES,
'label' => $this->trans(
'Use <picture> tag to load the WebP file immediately if it exists '
. '(faster, but it may cause problems with loading graphics in some templates)'
),
),
array(
'id' => 'no',
'value' => PShowLazyImg::USE_PICTURE_TAG_NO,
'label' => $this->trans(
'Load WebP graphics using redirection (slower but more universal)'
),
),
),
),
),
'submit' => array(
'title' => $this->trans('Save'),
'class' => 'btn btn-default pull-right',
'name' => 'btnSubmit'
)
)
);
$helper = new HelperForm();
$helper->show_toolbar = false;
$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
$helper->default_form_language = $lang->id;
$this->fields_form = array();
$helper->submit_action = 'btnSubmit';
$helper->currentIndex = null;
$helper->token = Tools::getAdminTokenLite('AdminModules');
if (version_compare(_PS_VERSION_, '1.6.0', '<')) {
$helper->currentIndex = $this->context->link->getAdminLink(
'PShowImporterSettings',
false
);
$helper->token = Tools::getAdminTokenLite('PShowImporterSettings');
}
$helper->tpl_vars = array(
'fields_value' => $this->getConfigFieldsValues(),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id
);
$form = $helper->generateForm(array($fields_form));
$this->context->smarty->assign('content', $form);
$this->alerts[] = array(
'info',
$this->trans(
'You can ignore any image using \'data-lazyload-ignore\' in the '
. '<img> tag. Example: <img src="..." data-lazyload-ignore alt="...">'
)
);
$this->alerts[] = array(
'info',
(
$this->trans(
'All images will be dynamically converted when customer open your store address '
. 'in the web browser. Once converted image is stored and served for all next customers. '
)
. '<br><br>'
. $this->trans(
'You can add this URL into CRON (schedule manager) task in your hosting control panel '
. 'to convert all products images to WebP format:'
)
. '<br><a href="' . $url . '">' . $url . '</a><br>'
. $this->trans('Product images converted to WebP format by CRON task:')
. ' <strong>'
. ($numOfProductImages - $numOfProductImagesWithoutWebp) . ' / ' . $numOfProductImages
. '</strong>'
)
);
$imageTestPng = _PS_MODULE_DIR_ . 'pshowlazyimg/image-test/test.png';
$imageTestJpg = _PS_MODULE_DIR_ . 'pshowlazyimg/image-test/test.jpg';
if (!WebpService::getInstance()->reconvertImage($imageTestPng)) {
$this->alerts[] = array(
'warning',
$this->trans(
'Module cannot convert PNG image to WebP format. '
. 'Contact with your hosting provider to enable one or more of the converters listed on the left.'
)
);
} elseif (!WebpService::getInstance()->reconvertImage($imageTestJpg)) {
$this->alerts[] = array(
'warning',
$this->trans(
'Module cannot convert JPG image to WebP format. '
. 'Contact with your hosting provider to enable one or more of the converters listed on the left.'
)
);
} else {
$this->alerts[] = array(
'success',
$this->trans(
'Module is ready to convert images to WebP format.'
)
);
}
$this->context->smarty->assign('converters', $this->getConvertersList());
$this->context->smarty->assign(
'pshowHook_below_side_menu',
$this->context->smarty->fetch(
_PS_MODULE_DIR_ . 'pshowlazyimg/views/templates/side_converters.tpl'
)
);
}
protected function getConfigFieldsValues()
{
$result = array('separator' => '');
foreach ($this->fields as $field) {
$result[$field] = Configuration::get($field);
}
return $result;
}
private function getConvertersList(): array
{
$testConverter = function (string $name): bool {
try {
$converter = ConverterFactory::makeConverter(
$name,
_PS_MODULE_DIR_ . 'pshowlazyimg/image-test/test.png',
_PS_MODULE_DIR_ . 'pshowlazyimg/image-test/test.webp'
);
$converter->checkOperationality();
$converter->checkConvertability();
$converter = ConverterFactory::makeConverter(
$name,
_PS_MODULE_DIR_ . 'pshowlazyimg/image-test/test.jpg',
_PS_MODULE_DIR_ . 'pshowlazyimg/image-test/test.webp'
);
$converter->checkOperationality();
$converter->checkConvertability();
} catch (Exception $e) {
return false;
}
return true;
};
return [
[
'name' => 'cwebp',
'enabled' => $testConverter('cwebp'),
],
[
'name' => 'ffmpeg',
'enabled' => $testConverter('ffmpeg'),
],
[
'name' => 'vips',
'enabled' => $testConverter('vips'),
],
[
'name' => 'imagick',
'enabled' => $testConverter('imagemagick'),
],
[
'name' => 'gmagick',
'enabled' => $testConverter('graphicsmagick'),
],
[
'name' => 'imagickbinary',
'enabled' => $testConverter('imagickbinary'),
],
[
'name' => 'gmagickbinary',
'enabled' => $testConverter('gmagickbinary'),
],
[
'name' => 'gd',
'enabled' => $testConverter('gd'),
],
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
require_once dirname(__FILE__) . "/../../config.php";
use Prestashow\PrestaCore\Controller\SettingsController;
class PShowLazyImgSettingsController extends SettingsController
{
public $select_menu_tab = 'subtab-PShowLazyImgMain';
}

View File

@@ -0,0 +1,11 @@
<?php
require_once dirname(__FILE__) . "/../../config.php";
use Prestashow\PrestaCore\Controller\UpdateController;
class PShowLazyImgUpdateController extends UpdateController {
public $select_menu_tab = 'subtab-PShowLazyImgMain';
}

View File

@@ -0,0 +1,23 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../../');
exit;

View File

@@ -0,0 +1,10 @@
<?php
require_once dirname(__FILE__) . "/../../config.php";
use Prestashow\PShowLazyImg\Controller\Front\CronController;
class PShowLazyImgCronModuleFrontController extends CronController
{
}

View File

@@ -0,0 +1 @@
<?php die("Access denied");

View File

@@ -0,0 +1,23 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../');
exit;

View File

@@ -0,0 +1 @@
<?php die("Access denied");

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

View File

@@ -0,0 +1,23 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../');
exit;

View File

@@ -0,0 +1 @@
<?php return '675ed695-a79b-4b3d-a7fd-f81a7b13d453';

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

View File

@@ -0,0 +1,22 @@
<?php
class FrontController extends FrontControllerCore
{
protected function smartyOutputContent($content)
{
if (Module::isEnabled('pshowlazyimg')) {
ob_start();
parent::smartyOutputContent($content);
$html = ob_get_clean();
ob_flush();
/** @var PShowLazyImg $module */
$module = Module::getInstanceByName('pshowlazyimg');
echo $module->parseOutputContent($html);
return;
}
parent::smartyOutputContent($content);
}
}

View File

@@ -0,0 +1,23 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../../../');
exit;

View File

@@ -0,0 +1,23 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../../');
exit;

View File

@@ -0,0 +1,23 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license https://prestashow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../');
exit;

View File

@@ -0,0 +1,49 @@
<?php
declare(strict_types=1);
define('PLACEHOLDER_BG_COLOR', [255, 255, 255]);
define('PLACEHOLDER_FILE_EXT', 'png');
define('PLACEHOLDER_DIR', dirname(__FILE__) . '/../../img/placeholder/');
@mkdir(PLACEHOLDER_DIR, 0755, true);
if (!is_dir(PLACEHOLDER_DIR)) {
http_response_code(404);
exit;
}
$width = (isset($_GET['w']) && is_numeric($_GET['w'])) ? (int)$_GET['w'] : 100;
$height = (isset($_GET['h']) && is_numeric($_GET['h'])) ? (int)$_GET['h'] : 100;
define('PLACEHOLDER_PATH', sprintf(
'%s%dx%d.%s',
PLACEHOLDER_DIR,
$width,
$height,
PLACEHOLDER_FILE_EXT
));
if (!file_exists(PLACEHOLDER_PATH)) {
$margin = 0;
$im = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($im, PLACEHOLDER_BG_COLOR[0], PLACEHOLDER_BG_COLOR[1], PLACEHOLDER_BG_COLOR[2]);
imagefilledrectangle($im, $margin, $margin, $width - ($margin * 2), $height - ($margin * 2), $white);
// $color = imagecolorallocatealpha($im, 0, 0, 0, 127);
// imagefill($im, 0, 0, $color);
$success = imagepng($im, PLACEHOLDER_PATH);
if (!$success) { // if failed to write image to file
header("Content-type: image/" . PLACEHOLDER_FILE_EXT);
imagepng($im);
imagedestroy($im);
exit;
} else {
imagedestroy($im);
}
}
http_response_code(301);
header(sprintf('Location: ../../img/placeholder/%dx%d.%s', $width, $height, PLACEHOLDER_FILE_EXT));
exit;

View File

@@ -0,0 +1,22 @@
<?php
/**
* File from https://prestashow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2021 PrestaShow.pl
* @license https://prestashow.pl/license
*/
if (!defined('_PS_VERSION_')) {
exit;
}
require_once dirname(__FILE__) . "/config.php";
class PShowLazyImg extends \Prestashow\PShowLazyImg\Module
{
}

View File

@@ -0,0 +1,80 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
bt1GbnRqII3geMNhnIangV3xmVyjgEY7tT4=

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPsmDrpTAwYiuhhb25CMSzPbJ8Ndutq+SuTrHiI2DqLapmqlU5WM//Sm9Z66xXIdRHqTwIo21
OtWrFjynOkjLBFgOWGUdH6x5H1Rr4VZtcNfu9zdYIIiIVf/me7RJQEKWET3lN1CQ+k/tD/UEpXPC
GOTfGRm74ws7TsNMQDOI1m9VrdgOafmkO1zGmKKlwhKNfSfiKjwBo4qPDCyIuFJCDzMoexyUgJyX
Z7NpOl1ydjsG2A0r0o3y8HiPA+hV4wU6CRyNBjnLk1V5QkCXg74C7pedoUKbM1eauI6BVOPpXI4W
4VOBZkGPqWHcuNcL/ZYHK+QGkYFJMiYClZrmijN2/LkjJMr8PZ/IUCWj8Vaw77Qkkg2vE091ZNFV
SADxL+wRTRwJZCYjqN6vj6G64vR3UL8aBvH66zMmHwOd0xnf1f9fE3lsPZAKLrZeVKU+SHVxQ7ol
lv30qfxXT78e59+vUpc6ujyFxXptqNTNfYzb4VavHBSZ2BIGdBUWA046aRu0fHR0iGdUfMyvoRrc
rb4+jjlvtSZNeMKW5lGwSO1t+JtRrQKsdfP5vfKiGK53bHGE9i4bheQ3F/YpDOwy0iqWe8UH6LiN
c50hZxbW3Lxj+UoHVkcbOPqXuHg0lcC5DW4V4Y63hbbMVIO3+/5yA1iLYKks45II4U7ghWrv1H40
PRHteIGVja4WaPC7JeaOPGcgLxy/5sSOm1wPukMkZ0TM8PLSV4DVFue5v3OFioRnMIlJb609cDFi
M7bH+yjE9UWgvPpZn8VYQxUibXqA608r1a0el3zUYUMBjqhFuHHaMVmHWN2znOjyCW==

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPoF2wgo8Ak+3w7P/ZzgrZDkhxNIkAaa2BzMBw4GoAV2Si7/ApiVu9383kN+k14QH0a0ZZk8t
MAme64FRT7tFAbOY0PZ9jkwRBvcb6no5mKKvggdotGoy9qvompaDgBkkiPgenQSpmrrAGAm/FUuc
cxfyBpM22zoE9UDt8Z0cfTN4lap8NFi5TsVyxZLpx/2aXOhCyLfyabgfh1JynfjdyVnS+v9Z1O5v
GnVjCs1DYdbnMQB/tRIEFU30vyCPzmFbHMRqjThqDxr8K2W+zPwoYlyDP4AsiYqDjVZ0hS+dR6/E
GTVTJ1wIQ9Xl2kk+zAwk7Xe/+Adr+EahXMvrMTSGBemj11MvjzfSCXHY4AGdsvGIeBau0a6DSzzm
etjNxfjrllcKIn9pS9NP9kfZ9SFvK2Gluwqhose6XQwPnjh+wjxyOVsqC7VO8N6LuqRnK/5p2Tv1
eG4mgiyiLCC95KRijAhc8SQT21RNNYNs6DVmEuQBYGNk2XwW6t+49OjNt34aqkiS2JWbdeXJpRkM
mtzAbF7zevA+t2OlVaEywPQZabjsdPAhQ6h963dj6oaRZViAbJV38UcAkWuc+8KvXSugW2abKHPH
a4Wh/qvdODZg4P5RviH4k28TFmhDA4rhac9kQsnAEGuokpGlKq8XV5lPyRUcOFDR2YSMODSoAO9T
dDIzyu4kToYXeAg4SovsZUP7iUB2ENHHZtv36+fM5vYPp7Uqz3O/exYtfa06lpPbJK4Rn0kIrY8b
MCsp2gq7Tn3UAfrB3rjaxeYQKauDfxcRUXfF/dRiC0tnb7kcjgvyZXVO

View File

@@ -0,0 +1,54 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cP/jgPve7+rlUOwRokJ2w/Uk4VZadb3OfI+5HX72A27IQiq6sB1Qw6hetKVYvvwWiqFShnlEE
kcsi+UF6dBgeiKaGIGUuFw/bH0rU1n3UTG6MYChvvagtJNvPsjzHRevJa9jVB6EH9v7MeDtBcxFf
cwyN3qVAjRR/KMoHGWCWi4bvuQizzZiUIkekwkHk+r5UNEJs30/WfKqfLWVdUFIYIK7a4aiai0WW
9xG8Y7ECMGhAxWHMZCijFSNtFvVvSRwnnFHObAB3RCmIlxk4JzGbUQh6Dm4tA+qu1lpjlkBIIkjm
LlTccHOChKdcX8LgPnXYIs4UFyHjNEsyaXwUZs02z5aiSsxlBX3eavkMCrl9pYB2eBau0a6DSzzm
etjNxfjrleQIDkidf9Um15m0+iEvL2GpXm5ROn/FsD6eO4FuZkdfg2mT/dv4apG6G+1ooOq+Y5+M
diZ+maxW5uwnyukeXrCNaXWm0LT/QBQJUmuvr2NfkihUbsGQo44+ZtUUYw4MhcEkD178vFVp0ULv
EQRgu3zNzd3dfXz8UhHNnqi4pL3G8QWJpWelEKNBmlEIL5Jxqk4/raCWvrY2X9E7GH8++uY/5X1E
D3s5bAwuVQK57Ec1oYDao7Lvmb56DTY7Uv6vzf568uWZaUgxVJU5Sx2Dbr3KAbKxL5VeGU7I6zJP
Dv+xPEHFbONJ1mkHwWVb7J+OmKD/M0BFcQmsdRDAXZqk3eLTVWlaPzRrNcYBSG0SLVs8gGn6DGvD
SJyXx4LcuXHgUT4R1vX5icdVUzbGw+stDohU07FpHc/9J65ldzLvtMfYTvgBTuGqk26p91RaQv2a
xDYwfGimpi4AkfqhjWD2WzwzRK4tvpPX7varW8UlSN2zPM/KinZxG4+NJVz+3Sj+J+c8kEHphjFg
6CsGdSMziPgeUwefSNrCk01uQvFAohKX6dq6QY9q+dwHtptCpSeAti37fu+Wkba5rnQu2nZvR9Vs
EtYXqqnn7PGipVpU5tBjpezWjV8JZoFVfULzkuEeA6qqoo05h7APKD6i19EW1dBQRDm7/xx8nC7G
idNBOVvfXmBOO/5vnGfKLoj5VGP3uiSsmseT2cbfJtqdP7Vyco/s4ny8pC8mWQ0WVxXlTG1gngGG
3qwY2SRLwVwCH+fC/0xHaLvY46e0ANPyexSTHWg+TqZnrlz/B+bDewuWDzrx43uDmHdnrIMyttww
pahdrP9ohQIcJ+042M2Fwa+XSOKw44xbnnrK0EzUbalE6BosduTXWuIm9OUdYlN6G+RJ1vUv6HtP
4pG3kUTTpv09qntRgFah5eaPmJYcqh9aE1ThCZYVkHCMq5SXNDgSessw21xyBMiu3exF8xEwScbQ
goGCcyebxEXtZvfj39M/qQdhAIjLBjoUKNCATXzklgRzAKsIMzpDlWt+sFeCa2mdNHJmwf8zqSaG
CYBGTGtCXdj9/sGl8R7mVleWD4fie/jX2KkkcJwfuWIkz8bskA1JuDYmmlnnfKp3h9p4zL7z28cY
n+OU0b8nIQQWxFdEvROVu8WBd65WHTiOJQU8CTJl7LFdPnsXhhkugwUW7wylWZVOwwII47ZVrf2W
03a/qmSpcoH7f31KKLQm3572RHtrHyWpLahBmsc2ScT4CwjEwcj0XKWM9Lkeh4c2IEFlslNXDKmD
Ak9c3WUPhb6bwzdwOXgsWRd0bzt3WT2PuwoAMHhl/FElIxBLR618HRg4J0v41ok4VDJHN3e22Q3X
CF5S06NCgKMyGlELmNa9UJVM2dC5jJZid9iYzOwmfUByBoPVP4VnORiNqKZauPiad2XfjNMu8R+Y
RZGJ5JH4gUr5eQUlDbTRDeuEKGT6pVyu+pAet92rt0TdvRq7M6d+vxALAqC+Ka2Pc0+dDgUrhiXe
lx+lHSWYGdsQ6gvN9xS2zxF+5qSziCPENw0hxKGgIiBWyaotp4em2r3Uk8xlPKbHnTuQaX/uBwP0
c3BCYFsZeou6xHvKvgu434Kbr3E8ThcmLVmk/WVFcB6s+LU+jNCjkUSm1GKkVMhLsrzYrJr87v/g
CxU+I+gdFftDOknLhhjM9fE4SJ7qQiStuAvE9/A/FHXa53QGW4NINTSORouuBr7XKeodK8V1OGsT
OumuEsltyGmazoQnQF+K4B6/W2ROajDSHETKZPeg2PtGnjBaawwv0nzHob+7/a6Ea4siob2kV05R
5cebV/D8AWArBJ/qsoCvkAvPz5v/gjLtkZPgVk1vqBTWsNnxaKk5rydmCu/keGBUGevSjlnp9tFz
fXU11q6ttHYYSbcrKfYgJPhEWWDgtwC2duydoTm4d90fCc0gwBgeUfR4Z5RUoq559kVcGU1h6PRf
uaIC7Q+vOYcWKYK2t/HH/Vl5oSNZDfaQFh1kRlAwGYy6bcnj6biJ0G6RTYPuc7RN1zyK3iXSCNrR
hW+YUnkvCyGQhssOJXi5jfxOIkcA1QDdP/JWfAhwoEpGkDj+LqEP54GNXsnTutjBeuiAV6ZyFkuS
sDJ2frydkptOkH2zLGu5bbznR1EzWurRCqHh3WoYYPJBNtNTCErIzDBF46Dz9/QsnEw7Kgq4oi6w
ENPY2TZgcmFUwQ6NAFQIZQbBe3b9mKBqpHk1MLZ1XZizhgSqOp2CYFZ/k1W2OqWTnmkrXnzfn5dp
2NwYH7kmhfUJPJMCCjzwQ8Dra/MBs6p+QuDBbMsDqearOjOCzrmaA1Zm6DV/3ue285oZs0gQQ+fO
kUKZVpua5uLGI46zWUNFhnrSWBUtZfS08r+NiKDhzvSHv29HtKwNN+YLTWxR3fUqFtGmzUdr0FoI
pzFqYMDqNXFwkBe44R5mM2es0b0sW9Yz/8uA4En8CPo6O/g7Y/j3SZw0zc7Cy370qt3F8qFL5iS3
nFpxWUUmlm6+j9BU70BFS2i4aCySo6bTEdEoV8jU1BzIqHHfVOAk/Z0QPCppWzvDsH36DmUMw0j0
8gbukZWX0FouaNda24LB36jWTEYGFRmYYtRO+y8DsLVnwqwnRr97zh5t5LjQAHj+D17lv8dhpR/V
ITvI7HT/3R2oWmsT25jEh6Zkfia116MynHmuTsj6l2pBQbIfPFsVs6y7k0/0dx2izQI8eBXqLkaQ
HXoA1uL5npc4v2RXyyEy8ydMFlw253zIG0m03z7CZQUDC/JfqRa9z5PvypBJK1Yh0UH2Mly8jlb+
aylbwANSk2N8viSwZM3ADpY5q2hUjAScQNj0pSRDg2Gto+uoXL/W5MOXoIzPWVacjGkXTHLSjStE
aMaAD7WbnapnHvFhooBqqkqUdOhVXriIx9vnfizHvq48+NEUYm3CitvIl1jw/TtPjAM1qcwKhLvX
+W/NujkDWA74niUVbReRz2jmKA5womvuR73r5fUV61TxUfB3cb0KYc7dnGtYgpLLfx+y0l0TI18+
j/zs54gyc6G+cqvLwd54jFa2QtOnAE0dNGLu9FzrcBgnoGxGcFCDNAujpfvf862XaKFgINGhWNVn
7Xt0efu3dY6mdTZ82ijhhXm/QMeaVrK6ENGpxSJxG82uQPThPAoDCcwVntgpPlqXkGA/quYww6FP
A4Xe0bRMbJsl/9QED/R7oBsq1pBR4meGqwiKhK+q

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPmLtE8Lct82gmiEjfiq2TAjyBWfwaX5kKKGEwcd0qo0MiE+c4S6KMu976dY3eH9g3ZxmaWjS
GkpIn4YsmiJ73GSmM4OFMk1dVc5F+m36pB+jypWf8FnlHLQGfBZHYoryhkElE1RnnHGKZGEBsDk7
+Ue1BxoBjFqRrHs2PH9abG47q5iiZFR+p42BFYYiajt14ZM8k++pice5X839ekp19iRMoXLkao2m
l8+2ssB5IwS1A+Qya5F2aNjo5RhZUtkyH9JkQUu/X61d1udL5UPcXtxDdZhzsx1J8I7Ig7wsHmwp
fU7BwCnY9BkahoMmG0xWpBHnMugdMVjzvBNJwxgu8Y4Sfhm6DTa9W2vLuWeo222E+g2vE091ZNFV
SADxL+wRTRxtaJq7VmA8d6I8Qeh3+LCaD1LyGOlE9BK4nkON4ZVz/tm8PN67VZAK0LCozQoSbyYR
AYYuNr1yfQLRUKGMujAQfIi1jxJv/HXlmdcpJfyjNMGRpqpT5GDms8EnoFEJUd+sWiupyzTb4ZIk
LcpwOCzlf9FlPh2cLU8HPW/wa4FPspJKpZ0sgU2Pa4DuqSb/Y8LZNZzLxZ9ZqKIA7AUF7JYnEdpN
JnsnM6+/C84zi7mqRd3c4pxRmpLT+nRg30qC1x970U5BPvEmJWaJOFJ9IcUFsfk8IeoaFSvkvsMD
h/IVW42HAwMhbLkGfpgbcsjpAsGLzb/7ExCsiWFNHhAHV2nba1xcB01n8LD5A3UARsFLdhMq53O5
Gw0o9KiKltF1co4WNpMyEKSxxzEYuEGpRU8U6GiKhVnqLFYzlEYJ+jEeJv40ZG==

View File

@@ -0,0 +1,53 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
O+0GeDnH7U6qgen+o/q=

View File

@@ -0,0 +1,38 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
u11HEDQvetp0uiK=

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPn+DvOYNLTwlqpbmgyWmUJkUmAGa6qTUP+295mj3xRcDxHa1Xu0seQbbQ4bEpZDmfP+fkQ5M
EzXxbxJw/aEQFaKctVdTYdv4H56/u6FVMscghpF8bYUwv9N24zzyxnhCB47MRCCv+oq9ZCd9s8HR
qm/3t2gV2dHh9DbdzJyCnHrM8jR4pxZWaZ6g/bfCKc80Yu4NXjMdxMoIsF+pfsngPQuSbCwKUxH/
kzmENHxdZhNxcYNN7/FWhxEEC6WooHe3LYK2mgRvmrxS3TcUOO+Zj3YI3Fm5TB7MOkDHCwmwxXEN
b2mDMC6IyXC5lzpgYCB/Xubr8bfng8e8sfis/+7aJar6mK634cLh92tsWCudK/ydeBau0a6DSzzm
etjNxfjrlfUK3Hk4HcXyt290RiDvKYHq/u0ChHH+wuH3U+4++fBOUMUI1VzI1WKvUwdyWF+erk5U
KyDdgWPOmu5Nyi5Sqtz/6LkXRoIMuBFrRv/UfeQFyvIusnSSnqn4YKX9VVAIxN6Y3CO+BBgmXbKr
VH2SDQP36AIPtkZ96OUEwp/Uxs4OBqMWq0NlMopt6bGGf/TnxoQDiHJjYt4uuCigIgu7YopReUL/
TKACEpcMng/lNec9XxPtZY5t9IzqV4l6kyZH4se2eFXBWaqq5gkjps9gCRRj4IkOtTjMPP8StylV
RLy7cf42R//XsV4HPJEcVmUf2+oYi8KAL/SvQoqs6FsZcOI5S7g77PLthZV50Lf3K7XIl7SbUebQ
EhMsheo4Eys9OrFzv0MMLeKDZFDNO7nER70+NAExjkTOwxhCb2xm

View File

@@ -0,0 +1,225 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
7KYbl0==

View File

@@ -0,0 +1,87 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPqRElZ3BdWC7BmKh4vavh63llAOZrbQsaTFLXzLuGNiqRG2saONuY0DOZUiORnsGXee+HP1C
fYx6Z5duKlTe8c5VPhkgurjX0L7op3jxkvnz/1H5TYDErR/QrrKcg257FO7usujGWAfdSbuWXwvE
WqMP2SzX+jf2jhuZuBAP6iDFWSQkTHHyvviXf3YaIcTyhOkCGUdTyD3wOi8xDWJ7H5G5xgcrKlMi
c57uvp1CvlrRcA+avvVc3V/uqM6GnsNkidW51upwLLXUs09usfJeT3LAfwNH1c0FcnMaPpvyB7Kx
N9gTWjcnlL7aPxZq4KAjiozmnC9KCIWzRAz5yFoYR7sZ6n1nxDxUUxi1z9QWLL/teBau0a6DSzzm
etjNxfjrlWMKWgU4R+YN0GYPQSEvKIHW/tywdN8lfafcpC+qGNuD0JPz531sTx8HcGZTCDyG6eQM
02Ri9w8ItjpAhr2FNbyw24RAT9YqkL8f1GC69wwIljIOwt8oAyhUhdUDD78jmDrg1/xTKSCGhEov
yngvf4ULnU4elvmhuL4vYBnUbKB9nMYZdDx0Q8tJrfBau9YxLFp9Qr/wlHZ79+wpc516/R9gvy/Q
i/3PDyf4pYifXl2xZgRpS60hGfdLsCc08lT20chPtnax7kBmas7VHMVweUAQ5643LfutOHvCXygu
HCVMG024THvnnUGZ69RKE9Fljl8FSkjV6oE3qER0hsZxp22DTJKUstu0GrFYeywFR+ZN3ph/kKQX
gHQ570iRouNdKpPqgz6UFG6y+2ZvFeKE0BdOZkuTwkyJtdoD2pcRY5sJ/sR6x4seCBYqDLmjTtTD
oJ0GXFuY5ZFVflPVMjrkqGx420kAJCdQxQhhSyZCpjFm0HkDhSJa3FuehCLJMvbQqMIusYiWl3zM
2Bb+3HFC8zaiNQI4/sSxABv+qQSjnRyOf7+WKGR6ATO2Y1eFQHklguaMefctjI2DejysWdIcNUqD
0u8XOp0Ne4YX1TBadTcaZ/sW1C9mxCleYmeoxZZ1oPOTgXqsdlqi3kjYLVvMdxx4qfrJX05pmtvX
EtnbxDoLSFmGKE7sfca3LbQmNrwac+QnPGJ6fA1aXTqYFIX3fKZGQOg/iEhmgrDNaEMM1hTTaemA
6DXCwNS5KuZwzn6l2e4ii/eIQgTQXLMVW6d7o7xGedFujiFiDtM2pcQyPBgJ6wEaeIv0KkZauuga
0EtR6IeMix1IHWiWDzMzJMGvGexbsB4Bec+WA2ONbmNJw0WjGY/WmcypkoALQhpxJ82hfTB9adyn
lqKQSHSRdIt9T/poCUFvsBH+WLwfQvOun0QLfL+au69L6H9K5rMq5nElM/OFv5V1a7uqn6EYpvhA
1K3w9X0GwfEJByTpL0n921lfETN3tj2xX0degTKGR0WSXhVwb0HP+qWVsPXkoccRWUCxV9i/xmv1
uyXTm3kstXoEZpZJrcEoe/XZ2KCLX+4LHabNiKq/9JcfhC4kSwAOAxxHhkf0QoOZhohZoCv6s8BL
MNsBzGyIs/pG8OYoPPIZXFOe8/MiKuegQLUipsG/0n9UhUK5vVquyn/t440aiFFkjt+7kjEO+IEb
QqGadlVFGmho6vkEiKkHMShKV4GtHI0gpQjW1ScCuwpj0+COCTXHj1sMCLKTbVWHAravBEGArx2J
VQz/EpRd20bZK+2s9I7CPiUjdR3Df/Pic9qFVpxbCIHWJt8W55t3wNoxOVQcgq9AjS9jdWm+RFSm
FvVvoftNRP+K31q1feojO7Xk5xhxhCmiU7avt3xYWfZvrG97sYbs4iaAWtO04CjfQCrE9BXIJJHL
qYaJlrU2+TzQZMtACVaJhBqhbG+4IgHOsY4+/TUJH6h3TG1nvNTeJ3z/ilLB8fRjWOg2IoUt5q76
UVZJnOCm8czM1PMzX9GeLv9l5xEsB1hAv+ErIHK+peEk1IrTITYBvrszc6gZKl9GaWbqOOFgQVOV
wuuw+6an3iGmjwhUwPveoCui3byQqIWZWqH4lBd2Aym+KJ+pu0t+j9IOEHCWg5Y5lhyLNHlm8i1E
vfxUJqmPek7MjMP4yRtuVrszO65EdlOLh85Kl/h6XeXu6xnXBK5dggC5x12LpHJjQMPvjRntr24I
Bqz1boBlnZtwEcGvBgHfk1FOWaKH0JYiXZRt+pkJoHGbcX977PqGYuTIR87pZkUUtM8RA2TR/e7Z
CCun5RbyKPEMKnfrE+AAsz3XsRgqhAv0G3RRnLNUjq+ph32u/fprADo9Rk6A167k6zXfJLxRch8W
7JsUCauplrL0qVg9sztju7yMMI2mxFxtAoBRYalcWASBH3uSpodBZLYPGGsDoat4p4OLlXL7qCV8
pc6JDO5uQ9Lgk1aDbck/0SJ09wBXCC3UPRYlWRQ8Jv2EWbz9pZ+uHeeV4kk+YrToDpWWo9zzGPWs
3kG4RFrLQCsNmPvuAXeq53BaGXvJ7ScJXzqb9dmuw3W7eg842iBeh6ESI9JaMmKuBQTxkVlkJVVM
vVdzbz0Kzhy7bV8ql5PKs2Zd6DqYnFq/E6FqmosvIEJWCpww39YCVD7qtBQAZqY+8GtyzK2j4Itt
ReNBqJK6yOlQEAFTGMoPYMO1yEA/XkRs/kWjIgE6p8jmcvQjI3CHC5gNgKf82VtDTtJvwU+cgUeP
tc9HSwi+tSCVZJM+Xl2AFKuH3NOQzRp4VNZduQYSk2HkdB/VHnm3vO23D1gEJYkmyFzrAvMVrjJB
v5/DnQLLkCqCDJe5M19sv5OivV+LdOyo2p/1JjeaosMh3ZxRl2vqHVvkmI6UgSFh+eyOdGpGFKLP
dL7Nw/VxEFrA3DrrljR3V91s03OjNHPY26LmChUuu32z2oMDsyoPwgIhvtHkoXrArOnrRHL8ZHT3
6KfZ/ZWJfq4ZUXnS4hNBwGK0FukL1XYYgtirr9YsuQsr4jYLY7s7COIBMO5RiW1n563pUd1RITPp
7XeNgvQSJpwMiXPMX98nNf/vp1XHK0rWl58q35FlTzkeZADPjz3vOKEOIMrYVWmFtiVJ2cIKGX8q
dBjEQ34F9pLznO0UNXfmb7uPw3jWC9IIncw0aGm/dFtEAOOZYBHYM0kMOM95ptq0cTCbr5MgcXCe
BxDXWnyT3JWvsQ+6mnUb/2nw5JDVSpL2GNYqce+O8mhsdFXUvmh3GHWSeKp13knbeb0xcX1NqiPX
32r/yHWuoAZ/lXHfrKkeWI1GR3K9xXkk+VAS9N+Q3gJ3zdGsxrkDtR31VK1ubpcCOGfwCDPIarwH
W2W+hmzFy6Jns3aUA/Y4lB9UDhz69njXifekxRsTbpSq5nazVezP7Udsb4ykpM7vYBJZ6SEQh375
Je32nt5/YnAZ36QhoznM+Z90xOQRClHelVA2zyHpKCBcpJNcyMtHnFKjMZ1gOQcGkKLhVv9CFf9Q
xcsAO7W8XHjkWGtDYXUO67DDx/9RQnq5GuF9PLrg8p4kT7WjSkdtEFdan3HWuU8T0PXo8+AA0ut4
kWAaiNk5+b4s74O1BOTL+ll4hSHRd9uaUJ2wwiYpcApzeG7SbU5y2O33UKbCTR1skfpyRwr1SbZm
/jqCnWXvCZ/aqiApFiOM5rgVPhKPitw9CeJB/2cMnLaH/XEAARYWsmwxAlrtkxvVYvEQ3mlxLnlL
zDdUQTWa/vUUP5jRE1bc2IzFDleQGPccdeRGal0B/UKQKYhzafvuYBfHeAsuikLh8C9LYhzBObgR
y/xGfY/P2kXo7V56v0NYOM7cxmFRQrJ0Wn5nHeDZZ46HnHsX7z5LirhHvFMiqOTiZYTC7qlIMu/O
54SVXeTMMfh7hv4Jp03cmh6lGOLOYO5hRL4vvdMWBBb0rD6Bm0lqVbbwa6s6QtJO35xuEBP09oY0
Mrfx6A3F/ovVoIhHLQdQcGMsX8RA6/qugJ0qxBSLZbkhdrubjy5CldaHIrhyJrEGpo4ckANDRukU
YQkqg+IFMQou33QGJSSv31B1O1uYEgHqgUPfnfAyLAKpG+tDwkt40F02bwSTqaQ3IDZ7RX7mjE4K
53Owx3jTmn5XPN0HOpSPlXyULwVTWV38NkpaoJD6O/I82PqUEDAugiJm1yGKdObNWVSJkfiTI+BI
IMZDOUFQC1SIboLzyxsJIIxJVys8C9dBt2IfyGY5j0v8kXFR6U1qKm3eb1pkSWCX0sXNDHw2WHQZ
TWiI1FKfkLqEt+qa8HSgIwkxn5lhOZ5L15KI0HmB320omoEx9XQLO4KGFsx6UMzF167hjiNufIWs
SXEjFtI9Qlwg1FDLbY2eSi3C1RW1DAOtnBXywVsvmNJG1xbi+IS1QjsyYGIzybZGtHJGkr1+zVYS
gT3+lunH4XeIdhSPGlPt7CcKzw+aD+c5BwxOZSSgwEODXEGf7mUPfSmsRZvpEVAdXHjtctwJEurb
brHaG1bx0tX/QKY9KJvzftPsr5Olmq/ztiW5QNhBBveJtWDn+MIXee8N+GPcwbQjAlNGiEDB8KZz
maenjzIteIPsE9uCjKeMslEuPuBxLkLs8W/brxeD1uN8GShTs3PqWC1pA3Uri7jb1vUh0mKjjPO4
Ya1QS2gegAuojBzoZvTWYeQJYZvh3gNA5Laq/x7HFjxbbGLIVzdueWlvWZZBQEpCkF28MRdQcWHE
4Bp73aeZ3Th5eKfVB8zAPWYI9e58of1vOxhGyl063is60wpo4YPJPmKtVJklcuKYI/N1aYXvBXkl
Ls6w3R/bY2HP6X61N/IYpOQPwp7UrxatyZNhfvd2wfmwiQEj2tLzOfe4Abs9fg47cqong00bOf5g
iP7iyjAdmU75MUVXZlOzFXhCHyADQ7A3oHV3EoPeeVAWGwsflE/8YauHQmqE6qJha+BnoUL1vyS0
ZOAca5kdqojZK/X0xkKQesUSFl7B8hBPj9n9RVBw/2y/SGWprLSuQ+j7TT42YUuF28C8vK34WKGS
+NxYPF2Y/29yguRDauaXgwm/l5BxOHZGOqpgAuJXCUBL/Ocy+wc1Flvk9fSgujgnr50HtORs7e3t
ZqMhxswCLitXm2S3D3jfKgUs1sFdJRo8C4/F2+B++8Bz2noEFfgtw/8+W7HC+oT6a2cHCHJ3QTPT
jGoIwS8kt3TVoBrVW6JJBSTj7Iy/nfRbEJkJv4RQYBXrOuSQFMdCBMi4bbxVUAwEyRN2QrggTvo9
+Tksta7zFz6Z2b+SKS1Lf8pg9OxX8S7Fz9m35joXvNAJCY7IUbiiWbcatE/MiRzNT5atX9sQ2ffc
3AZlScXYZTzeANlYdclrXnwp2JjO3FG34H3KLnI2NPjNe92SE+wJHx4m5/wYAB8dq9oXQ9zoYYDL
oO1C4LtmsfFLi0NFaehEoraCbuNcNWRJl2LIjqPIwsr5yAURyyuMmvLFvYdzj00J4FcwQW+3FGl5
flolu4r/25A55vMlZ17mCWXvUtIHIqC8TJbPEth9KXqz/QQajDVymbwq38pyB1qNmXZIcp791MpZ
xgrg3XpS7Z+MTUP47OtVm9tk8sDmb8UH5UMZRHGdyqBlfJyt9kswKy/EtcFmD2jetuKPJH2Gi1tN
8GhedemlQQl3aKA0ot8ktcQbK2EWM1EHefBXf6Stsz6LdZKKR+bNRUGuDTIUj6rofVByjCTU4I0F
tI7SM7TqE29JSyjYoPNqaz+sIOh/JZh/Vh3NB8jLG1p/GciAxDnbQoLf2cukjlzG4XYT7ENEyztd
UnnJGmkebA8WnYeedqP801mzWAdv2LON0w6JOCLutuNZYIlRm4KwI9o18hhE4q492+AblnJdv2Px
glxbLAeOm7RRv5VlPPgSk0aqgQsS4Ns8kF3zDDC8ppv2YH2Vd8pCBI3GQIL7uuDnOoZ9tN7G7uGX
piTjSjeY2+LfgLGx1KU75HUwW8Sj04GQcvbQiQjvxxLrXjrefYYMPt6lULmwpmuLsOBas4FY83rM
s7ul9fk1Va6q58gmpTWH0iAR2Q4NYJP1sCtKyEVdMd+ZOUrPC2nydP4+LiU9yjG7BrIBv+nFG892
aJMawcHEtgJTXGXxj6vTkiZQLcT7mn7FkT9HQiYCfrjz5xM5qoYbebHgYdu2LlsBS76kAuTLiIaI
tsXvyRAkpV4nVEb9TTkmnsTNHo0W406qnVHZ+WBqBWtRFKj2DAb9/nE4sQuEsLVChBNcNaKi

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPtlOY7jo8N5yjcmTM226KPFlW+HJt0V4tki8NWCqZ44Cd6pZLvjMJiuImv0ibRjBUHJ0PvE/
O4S4Z65xqSqmo18+PJhhuqTbN39ewujDRZeWdzqYXAY5qwl2fX2p/IQ29XerlVqdfW0ebIPI5iP6
5uklMm/S/KzQiC5OBu2aIRYYqGxlIt8HdBKOr3v6R4FFp5pwPKT3SWzkVQUDhkWQE0oCakQ74OEI
P6FOsz7a23VeKX45o2epr7wnBozBCkQzV7iwom1/KJvkQ0EuALrzQDokT2RDRs9qquAuDhAP+mf7
B1K3IYsmcHv6bzTJzUmVwNajsjcSof1mvrjVHva0p55lDmUUAcYQBdvrPjoN1Q6S4Q2vE091ZNFV
SADxL+wRTRx9XkGe7hErNq8Eb1N3+L0a2V+aa4dsfmGijxLGI5OsgsLm7zQ5p9Oi/uq+H5KRxFwS
78aX7nyTN7EXjd0LVdrE9Eo9Tpst3P/sVP2B5ub0UVJe+hvB+5bA2cujHv0tCp9pfQ+4n9kC5eyN
W/yw9BXZY1xsigeCW1dbTEIYzce+gMO8JBooO6GxEr+Hj4x4JW99WbbRPwn3JE360N/btMceY7OY
JxXXpglycZg65bL7Dhzu/wtHeJlr0xcL8Kiw8uNznaZIJGTU6+3UorLPavb1BZXYBkXGa5CNSCnt
alJyA28njo0ek6BIzzp+URyjYsIgc//Mo0LMaLvPSofAXz1c+gN3LyoHhYl6Tm3fHOSiYYeq9Rqj
gECM/HWrTOZbXRpLQbNkQOO94HnoA69YHinXdONJKzk/T0krYuxRuG==

View File

@@ -0,0 +1,98 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
bQoDRc9vnr/QaY7W0OqIfRb4ji9pkLA6C2e=

View File

@@ -0,0 +1,40 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPu+zQf7yWM+dH0p/LhAayi4fekRiTWSck/y3swoOMi+UUVfVevvcrgQid6MmjBDx4HJVg32t
5f3w+jud5UnG8VnQP92FbMoF2GFPQEd6ueB7N+fEPiB2TfXl/nXnNbP/oJj+7PPBlk3r99tVk0uj
ZZSGDYn9dDy8icg1x6joITbNRvqiq7kOULg0J5FElfkkATzt5WpH6PUw3cB/M+9ibAEBT3i4ag4/
/GFAZKa9IvE0bUXWliNkQ0MACS53TEKarn1l1Hnu41lDeqYAXfJVy7xa9gntzm431Q4OW76p+BZ4
EJVGUb1ZY02bvRQ9EUwQaALIxvmQYzk6fFHGdsP/vh0398aUDsOSTTSXOGm+ZwU5zGQWkJW2GOrp
tt2ZUrVkctM+uv8B39Q9j7SBpWVympbJ951k4GwhJIDpZU1D2d13wuMM/0SLY70qPIuJn50vBJgQ
/o767XpCJGJ/wK51yfnZ94Z/847KEBOZ+o1scg+aIl9CaJBwpFuIz7/ZML3LDQZIIsNoeVD025t8
xaaAg/UwYq7t6iKPr2wvcrog12gefc2GGZ5T1BDedwXp9/38WZ9uTvdmtZD+u6PKqBAqBMKbV+dv
asi2WOnCKsLBpsNXw9vNg/AYZeBd760DI8ssk6mX0Lgw+kXYEvTFL7/kpHcbO+Ug4p5hLg66dLJe
qwnac0gzaUKT2W5QFqgf0eDLNOkT7nmdSDYwESLMFxcF4C8DpU5Zj5CLC1paEs9D35QgvP5s0s8n
3JJaNvSH6I71I8ee4QzmK5Rp2wF+GLvHnEnpO8caIwms3T124Wgbh/wPyKeOOjAgmZhZLcDC0q6y
lIm1Ca8VmB3cnT5cYkOFEIeoNBlGUKwuzeIDliTqoaol1uWj6bxsron6zLUpjd3KGBrJAA0vGBk0
2FqBL+5pdXm39KRX1n84BezyGugdf2eusJD4AOOum/VZaxp3ZcwQk5yCU67euD2kLxjVY0fpuVc6
VswWIUsBe9KkkT/9ITsUcCmxHawqMXuOTnESNjjR3+BBzEfPp75+RPubgZTOyF4R7bHQL4zFAELu
vWDCrkhYp8Zva8hrNU1XZ+NL17oZZlDD70efWWp4rShl2y9BhHs60jr8vcLF/reW7lWVIr+1JdJl
lKJmeLsEp7E4R6S53BMQUzefQfKtHHKjZ2LiLurs2WyFN2CR4k7PBJ9FoG3hIij2UFt/ImCi7OxX
+MJ2/cXVeXLmwTPaqLYFyqWoDOPJzJD4ekpZ86w0r8YBJgPP9Vgkdud0e2i4eLA5BrvhEXu/UQBp
y0PDA/Fo9DZj0SfQFbM2MWkAWDnfdtxvYZAVLMdu7V0cgljkuGQM6zXr9BSRFOOaD5ZAgCT4U0TR
9/0pOnzOjdQrM9NEamdq16Of4e7Pq/k02y5+mvikZt2BGcC0t5yMxIUEkfn1aQDtljKwMXAPaYgt
yLKuaWG17I5p5dcmvos5P7V/kRPJ1MBJSH7bvoroZnaudDrgw23YYmkKaXeBgqDEkpjJ/4xs8v4r
KRfaFu+yZx/zfmmjXmHqEk8z2r1Yy2LTbx9qb8GBTRawVFuzHgChUg71wqG5K7Ug9GMFboYbjvH2
jYVHHZRpIFvPuJLe1qcBYR5JJ/iUhdEqPziE/+U1bEJqTMpFi8vGeWP3uMwKRIYT+NyVbigi5Fdb
E+cWXZDVgi0bsMu7UcxZ6M+JG307y76bs51CxqShlYKtog7jPJ6mHzaAruOJPGF2EjkZuivR4a1O
97WdfzPhpuhiA9NOsKZfqwYTUkgfXCP/GPyBvQZJjGKrt/m9lViMXnnhBiLtE1AmV/nFr5p1na8W
frTD+/5zs5AOhHNiqnmqNSov4LZTkBU+CinJE2B4/bJCc9/oKN7Kao1caQavNu/+swNVdvTRw4J8
/rBCNjKtS2UIFaxN3l2jNAqKDcW7l3lBSEvvqkJ769h9XeW5ICoBB1KwpkpM3KzqBWoBSMonjZaB
MeDKgTblxU3vS5nsqjagROCx6cMe1Y8iyohleaIiMUDeVWpfBRoxu1Gugju54uMMaFLg8wNpHLz5
gyECVi/N30mFXdKng6bykaJ/gn8lyUtJ8JYcClWC+puNEZ0V0stp4+l8SlkftXRlE0zBFqgPqirk
ATQpVRaXhViSUYf8a48n+0TSYsLj/AX/KYffgCJJD2fmSSnd5NAjk+I7m78nXdGearnU4McyB4cC
ccTTeC+w7RQe1seRAXOjD0rCbbvWsf6ctXCU8cJcfay4St1ddcOVXj+wA7t8WpWC6hite2TkZtD/
q3wZ/rADOhImTv9b7JLLm3al9+u3ZLZmmaJv1IgvVWjfemfTrdwztew/dnwmNsrkd3Q9vfsHo2Fh
EMdxMBpvfDAjcAF+BKmhTlg0DqeYlLciuNCCaQRreoEpoKZlJgkuKlMaS1CBQrOD7f+M8cSj0L4o
oyJ34IBi8EwssHyRUeDCRFY/AH3IkTjychkL6eVV3+spV/aByDld0RvhfseP1eqWVm9c4Yy9iml/
UIclOm5ui8Rw0oC=

View File

@@ -0,0 +1,82 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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

View File

@@ -0,0 +1,66 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cP/GCjgJnrGgBCRWZXqm7HuE/WsIFpVPf9kEqcMu4nvp9oViPInX+hE9ASJLlrHY5b46HWCTT
mE6MNG34H1iM9QZDOYRlkYTTPMH53X31Cz1wgPTqHjT1jfzOVTZsYQzirdhUGCdT6N32yYNj1JfX
gab5X5beYIyOq6TC9XDn2XxqqUqXWPoVNF+uZWRunl7yEp4TKrdB5LGIBeYQU2p2zs9JXi601nLn
6LdAd/efxCn8NAF9PPK8Ko2UQptPK9UbNbgRDWFgyxH1M8GVrnYEb50upTjpT7BuDYgHlxaMslLf
TZLbX/Vi2hRyjmLrHQWEvcRNfoNIBuEqbCLunr+rmYYQi6bmfIYEKuYIS8VTGpwOeBau0a6DSzzm
etjNxfjrlh2EJ+O+pzQx1CEvjyCvLYGU3FTv/8CEzWMoHvVpTvxo2Zss/6hWieiK8bcl0H7kMV2a
MHMYwAGh58EX4e40uCZknEect1QOg08uth0ufXr4coEGvypfBQcDNZ9YYb4uYir0hQrYO6SXPwlz
3OaScLUMIS5tgjwdZQB4RltUt4hUaKzLe12eM2azeKRdITwGHeEvcDh7ITIvWv6e4UlnUntwKfCR
yUSnWIoSbENQ9MX0tF/u5MKrHYEymZWSUm7CIF1JGywb2Tl6citC0fNLx5HYaXcDeyyVumHj8r63
M8LLpeKqwrICZzfyjqPA59gH86ZN1544N30LN7Gc/bf31DCxSbWHxPMFk35/AIrbXmfwW1GU1b2l
EqqJ1b4b9q1kjRk+7OTWBLGAyLQA41IXrvkfZS04SZ5j/Hm+4jgfeuwjgAICaPl5

View File

@@ -0,0 +1,17 @@
<?php //0058c
// Copyright PrestaShow.pl 2021. All Rights Reserved
// @authors PrestaShow.pl <kontakt@prestashow.pl>
// @license https://prestashow.pl/license
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cPtvf7JzrjkKmlTs874+zm81Ub1lW+C9+KHihHa79RlRJooro/04TkbbZS6C7T33cOCCLE1wQ
DuFFs39NUvqRGDbVJv+ZGD78MtKrGm0oYO6WeNb7WA41Vci/XI4gNzSUzKBSPF/O9PCSMkUeIWyC
DStFsRq4LC0M0qdGCXuGACIFB+CYYgIXWR/nTWFsJuOg0jvXnoP8iUh08wMnrTfXx5GP2XmECGz1
6SDXEq3mntHVWDJ2EmGxDxG6BsK2l1FWccVOKk3l0Sg0T5KdZc1sV5vOuDTIBDT5cG92CuV/h/y2
7UKWhFn+3M7zkV+4FqxyxcR7aJu+WMM0Y0KctjMX8ZRz1AOwWchdcBv3VpM0SQhbYw2vE091ZNFV
SADxL+wRTRuEY6QJPdNKflRy7p/3ELOa3rjZNA/nLjSSs08sWgiUrMqaZXEU0x7XquzNxIAlmPvG
w6K3j++7fQRHZrD8lSKpq5F4gTIb0QjKTfPsk0g25eeFadL+ibYara9ttPG5K7radISVTHVosurv
HJv7ZoqcI1atSpJySKGA5hgoFLTKRSPgCnirRx+EAcLv/imqA5/wDqErbB4L8kFiBC7rVuDE1cIv
hYmo3vR2GyHLBbwAv6+Bqi+STneS+ORSUYRN7qSvP++Ff3ddiv7JZpgJbxOMesUkw2UohCosCAAV
4p9VUfTNuvgyCpFJMNMgLSsmJs6JV/vMk06h8/wMlFGzlfxGSMy6HoWxi+ocgcKdE/dYpzsWFTpe
/TU1lE0u9Z/WugSnrFsWwaDhScHciKLFXejVlz3fWUJODg+wKpk7BkCDTWtdeVYPAle=

View File

@@ -0,0 +1,21 @@
<?php
/*
* File from http://PrestaShow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2018 PrestaShow.pl
* @license http://PrestaShow.pl/license
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../');
exit;

View File

@@ -0,0 +1,16 @@
<?php
global $_MODULE;
$_MODULE = array();
$_MODULE['<{pshowlazyimg}prestashop>pshowlazyimg_82989dde7a24cdc4c55825f9fa126aa8'] = 'PShow Lazy Images';
$_MODULE['<{pshowlazyimg}prestashop>pshowlazyimg_9a821c97838fa5cbff9a6727de5074ee'] = 'Ładuje zdjęcia dopiero, gdy są widoczne na ekranie';
$_MODULE['<{pshowlazyimg}prestashop>main_index_1a11db3d2781e8ee1401eab17b296b6a'] = 'Ustawienia modułu';
$_MODULE['<{pshowlazyimg}prestashop>main_index_d400668e820f2be6d7d1f91c4ea2420d'] = 'Wybierz obrazek';
$_MODULE['<{pshowlazyimg}prestashop>main_index_83b5a65e518c21ed0a5f2b383dd9b617'] = 'Usuń obrazek';
$_MODULE['<{pshowlazyimg}prestashop>main_index_80ebdccece38141cd9c0f9b3b623091f'] = 'Jesteś pewien, że chcesz usunąć ten obrazek?';
$_MODULE['<{pshowlazyimg}prestashop>main_index_5d7864737dd33329786556fed21a09d7'] = 'Ustaw obrazek';
$_MODULE['<{pshowlazyimg}prestashop>main_index_377313a88cd97bbf5da5c9dd0d8a677a'] = 'Wgraj obrazek';
$_MODULE['<{pshowlazyimg}prestashop>main_index_cda5132955c43b0ac7ae8adfa27cc35e'] = 'Wybierz plik';
$_MODULE['<{pshowlazyimg}prestashop>main_index_c9cc8cce247e49bae79f15173ce97354'] = 'Zapisz';
$_MODULE['<{pshowlazyimg}prestashop>pshowlazyimgmaincontroller_4c95b8d9029207d189a32b19c91b9827'] = 'Główny kontroler';
$_MODULE['<{pshowlazyimg}prestashop>pshowlazyimgmaincontroller_b95d3d403307efa40962df363734e941'] = 'Ustawienia modułu';

10
modules/pshowlazyimg/vendor/.htaccess vendored Normal file
View File

@@ -0,0 +1,10 @@
# Apache 2.2
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
</IfModule>

View File

@@ -0,0 +1,7 @@
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit6887aa5a1ca08b93890753d2333f0c93::getLoader();

View File

@@ -0,0 +1,479 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Autoload;
/**
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
* // register classes with namespaces
* $loader->add('Symfony\Component', __DIR__.'/component');
* $loader->add('Symfony', __DIR__.'/framework');
*
* // activate the autoloader
* $loader->register();
*
* // to enable searching the include path (eg. for PEAR packages)
* $loader->setUseIncludePath(true);
*
* In this example, if you try to use a class in the Symfony\Component
* namespace or one of its children (Symfony\Component\Console for instance),
* the autoloader will first look for the class under the component/
* directory, and it will then fallback to the framework/ directory if not
* found before giving up.
*
* This class is loosely based on the Symfony UniversalClassLoader.
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see https://www.php-fig.org/psr/psr-0/
* @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
private $vendorDir;
// PSR-4
private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array();
private $fallbackDirsPsr4 = array();
// PSR-0
private $prefixesPsr0 = array();
private $fallbackDirsPsr0 = array();
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoritative = false;
private $missingClasses = array();
private $apcuPrefix;
private static $registeredLoaders = array();
public function __construct($vendorDir = null)
{
$this->vendorDir = $vendorDir;
}
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
}
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
public function getClassMap()
{
return $this->classMap;
}
/**
* @param array $classMap Class to filename map
*/
public function addClassMap(array $classMap)
{
if ($this->classMap) {
$this->classMap = array_merge($this->classMap, $classMap);
} else {
$this->classMap = $classMap;
}
}
/**
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*/
public function add($prefix, $paths, $prepend = false)
{
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
);
}
return;
}
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
// Register directories for a new namespace.
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 base directories
*/
public function set($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr0 = (array) $paths;
} else {
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
}
}
/**
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*/
public function setPsr4($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr4 = (array) $paths;
} else {
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
}
}
/**
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
*/
public function setUseIncludePath($useIncludePath)
{
$this->useIncludePath = $useIncludePath;
}
/**
* Can be used to check if the autoloader uses the include path to check
* for classes.
*
* @return bool
*/
public function getUseIncludePath()
{
return $this->useIncludePath;
}
/**
* Turns off searching the prefix and fallback directories for classes
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
$this->classMapAuthoritative = $classMapAuthoritative;
}
/**
* Should class lookup fail if not found in the current class map?
*
* @return bool
*/
public function isClassMapAuthoritative()
{
return $this->classMapAuthoritative;
}
/**
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
* The APCu prefix in use, or null if APCu caching is not enabled.
*
* @return string|null
*/
public function getApcuPrefix()
{
return $this->apcuPrefix;
}
/**
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
if (null === $this->vendorDir) {
return;
}
if ($prepend) {
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
} else {
unset(self::$registeredLoaders[$this->vendorDir]);
self::$registeredLoaders[$this->vendorDir] = $this;
}
}
/**
* Unregisters this instance as an autoloader.
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return bool|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
includeFile($file);
return true;
}
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
return false;
}
if (null !== $this->apcuPrefix) {
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
if ($hit) {
return $file;
}
}
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
if (false === $file && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
if (null !== $this->apcuPrefix) {
apcu_add($this->apcuPrefix.$class, $file);
}
if (false === $file) {
// Remember that this class does not exist.
$this->missingClasses[$class] = true;
}
return $file;
}
/**
* Returns the currently registered loaders indexed by their corresponding vendor directories.
*
* @return self[]
*/
public static function getRegisteredLoaders()
{
return self::$registeredLoaders;
}
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
$first = $class[0];
if (isset($this->prefixLengthsPsr4[$first])) {
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
}
}
}
// PSR-4 fallback dirs
foreach ($this->fallbackDirsPsr4 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
return $file;
}
}
// PSR-0 lookup
if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
} else {
// PEAR-like class name
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
}
if (isset($this->prefixesPsr0[$first])) {
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
}
}
}
// PSR-0 fallback dirs
foreach ($this->fallbackDirsPsr0 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
// PSR-0 include paths.
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
return false;
}
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*/
function includeFile($file)
{
include $file;
}

View File

@@ -0,0 +1,347 @@
<?php
namespace Composer;
use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;
class InstalledVersions
{
private static $installed = array (
'root' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'aliases' =>
array (
),
'reference' => '970bfaa19e3da3baf2a2f3d19a339ddc4e01551e',
'name' => 'prestashow-module/pshowlazyimg',
),
'versions' =>
array (
'guzzlehttp/guzzle' =>
array (
'pretty_version' => '5.3.4',
'version' => '5.3.4.0',
'aliases' =>
array (
),
'reference' => 'b87eda7a7162f95574032da17e9323c9899cb6b2',
),
'guzzlehttp/ringphp' =>
array (
'pretty_version' => '1.1.1',
'version' => '1.1.1.0',
'aliases' =>
array (
),
'reference' => '5e2a174052995663dd68e6b5ad838afd47dd615b',
),
'guzzlehttp/streams' =>
array (
'pretty_version' => '3.0.0',
'version' => '3.0.0.0',
'aliases' =>
array (
),
'reference' => '47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5',
),
'prestashow-module/pshowlazyimg' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'aliases' =>
array (
),
'reference' => '970bfaa19e3da3baf2a2f3d19a339ddc4e01551e',
),
'prestashow/presta-core' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'aliases' =>
array (
0 => '9999999-dev',
),
'reference' => 'ef848852f2cf1b47eb9925b4aecf4bc4a7feb118',
),
'react/promise' =>
array (
'pretty_version' => 'v2.8.0',
'version' => '2.8.0.0',
'aliases' =>
array (
),
'reference' => 'f3cff96a19736714524ca0dd1d4130de73dbbbc4',
),
'rosell-dk/image-mime-type-guesser' =>
array (
'pretty_version' => '0.3',
'version' => '0.3.0.0',
'aliases' =>
array (
),
'reference' => '204fd61ca81e3b0ba46c6165dab8f74816b1fe99',
),
'rosell-dk/webp-convert' =>
array (
'pretty_version' => '2.5.0',
'version' => '2.5.0.0',
'aliases' =>
array (
),
'reference' => 'b349da7b6e04a4c269bbbbf7c279e0e433a71fd0',
),
),
);
private static $canGetVendors;
private static $installedByVendor = array();
public static function getInstalledPackages()
{
$packages = array();
foreach (self::getInstalled() as $installed) {
$packages[] = array_keys($installed['versions']);
}
if (1 === \count($packages)) {
return $packages[0];
}
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
}
public static function isInstalled($packageName)
{
foreach (self::getInstalled() as $installed) {
if (isset($installed['versions'][$packageName])) {
return true;
}
}
return false;
}
public static function satisfies(VersionParser $parser, $packageName, $constraint)
{
$constraint = $parser->parseConstraints($constraint);
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
return $provided->matches($constraint);
}
public static function getVersionRanges($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
$ranges = array();
if (isset($installed['versions'][$packageName]['pretty_version'])) {
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
}
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
}
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
}
if (array_key_exists('provided', $installed['versions'][$packageName])) {
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
}
return implode(' || ', $ranges);
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
public static function getVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['version'])) {
return null;
}
return $installed['versions'][$packageName]['version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
public static function getPrettyVersion($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
return null;
}
return $installed['versions'][$packageName]['pretty_version'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
public static function getReference($packageName)
{
foreach (self::getInstalled() as $installed) {
if (!isset($installed['versions'][$packageName])) {
continue;
}
if (!isset($installed['versions'][$packageName]['reference'])) {
return null;
}
return $installed['versions'][$packageName]['reference'];
}
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
}
public static function getRootPackage()
{
$installed = self::getInstalled();
return $installed[0]['root'];
}
public static function getRawData()
{
return self::$installed;
}
public static function reload($data)
{
self::$installed = $data;
self::$installedByVendor = array();
}
private static function getInstalled()
{
if (null === self::$canGetVendors) {
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
}
$installed = array();
if (self::$canGetVendors) {
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
}
}
}
$installed[] = self::$installed;
return $installed;
}
}

View File

@@ -0,0 +1,21 @@
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,254 @@
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'GuzzleHttp\\BatchResults' => $vendorDir . '/guzzlehttp/guzzle/src/BatchResults.php',
'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php',
'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php',
'GuzzleHttp\\Collection' => $vendorDir . '/guzzlehttp/guzzle/src/Collection.php',
'GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php',
'GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php',
'GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php',
'GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php',
'GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php',
'GuzzleHttp\\Event\\AbstractEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractEvent.php',
'GuzzleHttp\\Event\\AbstractRequestEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php',
'GuzzleHttp\\Event\\AbstractRetryableEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php',
'GuzzleHttp\\Event\\AbstractTransferEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php',
'GuzzleHttp\\Event\\BeforeEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/BeforeEvent.php',
'GuzzleHttp\\Event\\CompleteEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/CompleteEvent.php',
'GuzzleHttp\\Event\\Emitter' => $vendorDir . '/guzzlehttp/guzzle/src/Event/Emitter.php',
'GuzzleHttp\\Event\\EmitterInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/EmitterInterface.php',
'GuzzleHttp\\Event\\EndEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/EndEvent.php',
'GuzzleHttp\\Event\\ErrorEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/ErrorEvent.php',
'GuzzleHttp\\Event\\EventInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/EventInterface.php',
'GuzzleHttp\\Event\\HasEmitterInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/HasEmitterInterface.php',
'GuzzleHttp\\Event\\HasEmitterTrait' => $vendorDir . '/guzzlehttp/guzzle/src/Event/HasEmitterTrait.php',
'GuzzleHttp\\Event\\ListenerAttacherTrait' => $vendorDir . '/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php',
'GuzzleHttp\\Event\\ProgressEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/ProgressEvent.php',
'GuzzleHttp\\Event\\RequestEvents' => $vendorDir . '/guzzlehttp/guzzle/src/Event/RequestEvents.php',
'GuzzleHttp\\Event\\SubscriberInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/SubscriberInterface.php',
'GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php',
'GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php',
'GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php',
'GuzzleHttp\\Exception\\CouldNotRewindStreamException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/CouldNotRewindStreamException.php',
'GuzzleHttp\\Exception\\ParseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ParseException.php',
'GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php',
'GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php',
'GuzzleHttp\\Exception\\StateException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/StateException.php',
'GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php',
'GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php',
'GuzzleHttp\\Exception\\XmlParseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/XmlParseException.php',
'GuzzleHttp\\HasDataTrait' => $vendorDir . '/guzzlehttp/guzzle/src/HasDataTrait.php',
'GuzzleHttp\\Message\\AbstractMessage' => $vendorDir . '/guzzlehttp/guzzle/src/Message/AbstractMessage.php',
'GuzzleHttp\\Message\\AppliesHeadersInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php',
'GuzzleHttp\\Message\\FutureResponse' => $vendorDir . '/guzzlehttp/guzzle/src/Message/FutureResponse.php',
'GuzzleHttp\\Message\\MessageFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageFactory.php',
'GuzzleHttp\\Message\\MessageFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php',
'GuzzleHttp\\Message\\MessageInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageInterface.php',
'GuzzleHttp\\Message\\MessageParser' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageParser.php',
'GuzzleHttp\\Message\\Request' => $vendorDir . '/guzzlehttp/guzzle/src/Message/Request.php',
'GuzzleHttp\\Message\\RequestInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/RequestInterface.php',
'GuzzleHttp\\Message\\Response' => $vendorDir . '/guzzlehttp/guzzle/src/Message/Response.php',
'GuzzleHttp\\Message\\ResponseInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/ResponseInterface.php',
'GuzzleHttp\\Mimetypes' => $vendorDir . '/guzzlehttp/guzzle/src/Mimetypes.php',
'GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php',
'GuzzleHttp\\Post\\MultipartBody' => $vendorDir . '/guzzlehttp/guzzle/src/Post/MultipartBody.php',
'GuzzleHttp\\Post\\PostBody' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostBody.php',
'GuzzleHttp\\Post\\PostBodyInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostBodyInterface.php',
'GuzzleHttp\\Post\\PostFile' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostFile.php',
'GuzzleHttp\\Post\\PostFileInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostFileInterface.php',
'GuzzleHttp\\Query' => $vendorDir . '/guzzlehttp/guzzle/src/Query.php',
'GuzzleHttp\\QueryParser' => $vendorDir . '/guzzlehttp/guzzle/src/QueryParser.php',
'GuzzleHttp\\RequestFsm' => $vendorDir . '/guzzlehttp/guzzle/src/RequestFsm.php',
'GuzzleHttp\\RingBridge' => $vendorDir . '/guzzlehttp/guzzle/src/RingBridge.php',
'GuzzleHttp\\Ring\\Client\\ClientUtils' => $vendorDir . '/guzzlehttp/ringphp/src/Client/ClientUtils.php',
'GuzzleHttp\\Ring\\Client\\CurlFactory' => $vendorDir . '/guzzlehttp/ringphp/src/Client/CurlFactory.php',
'GuzzleHttp\\Ring\\Client\\CurlHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/CurlHandler.php',
'GuzzleHttp\\Ring\\Client\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php',
'GuzzleHttp\\Ring\\Client\\Middleware' => $vendorDir . '/guzzlehttp/ringphp/src/Client/Middleware.php',
'GuzzleHttp\\Ring\\Client\\MockHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/MockHandler.php',
'GuzzleHttp\\Ring\\Client\\StreamHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/StreamHandler.php',
'GuzzleHttp\\Ring\\Core' => $vendorDir . '/guzzlehttp/ringphp/src/Core.php',
'GuzzleHttp\\Ring\\Exception\\CancelledException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/CancelledException.php',
'GuzzleHttp\\Ring\\Exception\\CancelledFutureAccessException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/CancelledFutureAccessException.php',
'GuzzleHttp\\Ring\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/ConnectException.php',
'GuzzleHttp\\Ring\\Exception\\RingException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/RingException.php',
'GuzzleHttp\\Ring\\Future\\BaseFutureTrait' => $vendorDir . '/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php',
'GuzzleHttp\\Ring\\Future\\CompletedFutureArray' => $vendorDir . '/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php',
'GuzzleHttp\\Ring\\Future\\CompletedFutureValue' => $vendorDir . '/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php',
'GuzzleHttp\\Ring\\Future\\FutureArray' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureArray.php',
'GuzzleHttp\\Ring\\Future\\FutureArrayInterface' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php',
'GuzzleHttp\\Ring\\Future\\FutureInterface' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureInterface.php',
'GuzzleHttp\\Ring\\Future\\FutureValue' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureValue.php',
'GuzzleHttp\\Ring\\Future\\MagicFutureTrait' => $vendorDir . '/guzzlehttp/ringphp/src/Future/MagicFutureTrait.php',
'GuzzleHttp\\Stream\\AppendStream' => $vendorDir . '/guzzlehttp/streams/src/AppendStream.php',
'GuzzleHttp\\Stream\\AsyncReadStream' => $vendorDir . '/guzzlehttp/streams/src/AsyncReadStream.php',
'GuzzleHttp\\Stream\\BufferStream' => $vendorDir . '/guzzlehttp/streams/src/BufferStream.php',
'GuzzleHttp\\Stream\\CachingStream' => $vendorDir . '/guzzlehttp/streams/src/CachingStream.php',
'GuzzleHttp\\Stream\\DroppingStream' => $vendorDir . '/guzzlehttp/streams/src/DroppingStream.php',
'GuzzleHttp\\Stream\\Exception\\CannotAttachException' => $vendorDir . '/guzzlehttp/streams/src/Exception/CannotAttachException.php',
'GuzzleHttp\\Stream\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/streams/src/Exception/SeekException.php',
'GuzzleHttp\\Stream\\FnStream' => $vendorDir . '/guzzlehttp/streams/src/FnStream.php',
'GuzzleHttp\\Stream\\GuzzleStreamWrapper' => $vendorDir . '/guzzlehttp/streams/src/GuzzleStreamWrapper.php',
'GuzzleHttp\\Stream\\InflateStream' => $vendorDir . '/guzzlehttp/streams/src/InflateStream.php',
'GuzzleHttp\\Stream\\LazyOpenStream' => $vendorDir . '/guzzlehttp/streams/src/LazyOpenStream.php',
'GuzzleHttp\\Stream\\LimitStream' => $vendorDir . '/guzzlehttp/streams/src/LimitStream.php',
'GuzzleHttp\\Stream\\MetadataStreamInterface' => $vendorDir . '/guzzlehttp/streams/src/MetadataStreamInterface.php',
'GuzzleHttp\\Stream\\NoSeekStream' => $vendorDir . '/guzzlehttp/streams/src/NoSeekStream.php',
'GuzzleHttp\\Stream\\NullStream' => $vendorDir . '/guzzlehttp/streams/src/NullStream.php',
'GuzzleHttp\\Stream\\PumpStream' => $vendorDir . '/guzzlehttp/streams/src/PumpStream.php',
'GuzzleHttp\\Stream\\Stream' => $vendorDir . '/guzzlehttp/streams/src/Stream.php',
'GuzzleHttp\\Stream\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/streams/src/StreamDecoratorTrait.php',
'GuzzleHttp\\Stream\\StreamInterface' => $vendorDir . '/guzzlehttp/streams/src/StreamInterface.php',
'GuzzleHttp\\Stream\\Utils' => $vendorDir . '/guzzlehttp/streams/src/Utils.php',
'GuzzleHttp\\Subscriber\\Cookie' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Cookie.php',
'GuzzleHttp\\Subscriber\\History' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/History.php',
'GuzzleHttp\\Subscriber\\HttpError' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/HttpError.php',
'GuzzleHttp\\Subscriber\\Mock' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Mock.php',
'GuzzleHttp\\Subscriber\\Prepare' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Prepare.php',
'GuzzleHttp\\Subscriber\\Redirect' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Redirect.php',
'GuzzleHttp\\ToArrayInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ToArrayInterface.php',
'GuzzleHttp\\Transaction' => $vendorDir . '/guzzlehttp/guzzle/src/Transaction.php',
'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
'GuzzleHttp\\Url' => $vendorDir . '/guzzlehttp/guzzle/src/Url.php',
'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
'ImageMimeTypeGuesser\\Detectors\\AbstractDetector' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/AbstractDetector.php',
'ImageMimeTypeGuesser\\Detectors\\ExifImageType' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/ExifImageType.php',
'ImageMimeTypeGuesser\\Detectors\\FInfo' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/FInfo.php',
'ImageMimeTypeGuesser\\Detectors\\GetImageSize' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/GetImageSize.php',
'ImageMimeTypeGuesser\\Detectors\\MimeContentType' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/MimeContentType.php',
'ImageMimeTypeGuesser\\Detectors\\SniffFirstFourBytes' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/SniffFirstFourBytes.php',
'ImageMimeTypeGuesser\\Detectors\\Stack' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/Detectors/Stack.php',
'ImageMimeTypeGuesser\\GuessFromExtension' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/GuessFromExtension.php',
'ImageMimeTypeGuesser\\ImageMimeTypeGuesser' => $vendorDir . '/rosell-dk/image-mime-type-guesser/src/ImageMimeTypeGuesser.php',
'PShowLazyImg' => $baseDir . '/pshowlazyimg.php',
'Prestashow\\PShowLazyImg\\Controller\\Front\\CronController' => $baseDir . '/src/Controller/Front/CronController.php',
'Prestashow\\PShowLazyImg\\Entity\\ImageOptimize' => $baseDir . '/src/Entity/ImageOptimize.php',
'Prestashow\\PShowLazyImg\\Migrations\\Version1' => $baseDir . '/src/Migrations/Version1.php',
'Prestashow\\PShowLazyImg\\Migrations\\Version2' => $baseDir . '/src/Migrations/Version2.php',
'Prestashow\\PShowLazyImg\\Module' => $baseDir . '/src/Module.php',
'Prestashow\\PShowLazyImg\\Repository\\ImageOptimizeRepository' => $baseDir . '/src/Repository/ImageOptimizeRepository.php',
'Prestashow\\PShowLazyImg\\Service\\HtaccessService' => $baseDir . '/src/Service/HtaccessService.php',
'Prestashow\\PShowLazyImg\\Service\\HtmlManipulate' => $baseDir . '/src/Service/HtmlManipulate.php',
'Prestashow\\PShowLazyImg\\Service\\UrlDispatcher' => $baseDir . '/src/Service/UrlDispatcher.php',
'Prestashow\\PShowLazyImg\\Service\\WebpService' => $baseDir . '/src/Service/WebpService.php',
'Prestashow\\PrestaCore\\Controller\\BackupController' => $vendorDir . '/prestashow/presta-core/Controller/BackupController.php',
'Prestashow\\PrestaCore\\Controller\\HookController' => $vendorDir . '/prestashow/presta-core/Controller/HookController.php',
'Prestashow\\PrestaCore\\Controller\\SettingsController' => $vendorDir . '/prestashow/presta-core/Controller/SettingsController.php',
'Prestashow\\PrestaCore\\Controller\\UpdateController' => $vendorDir . '/prestashow/presta-core/Controller/UpdateController.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\AbstractMigration' => $vendorDir . '/prestashow/presta-core/Database/Migrations/AbstractMigration.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\MigrationCoreTool' => $vendorDir . '/prestashow/presta-core/Database/Migrations/MigrationCoreTool.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\MigrationTool' => $vendorDir . '/prestashow/presta-core/Database/Migrations/MigrationTool.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\Version0' => $vendorDir . '/prestashow/presta-core/Database/Migrations/Version0.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\Version1' => $vendorDir . '/prestashow/presta-core/Database/Migrations/Version1.php',
'Prestashow\\PrestaCore\\Entity\\Hook' => $vendorDir . '/prestashow/presta-core/Entity/Hook.php',
'Prestashow\\PrestaCore\\Entity\\Notification' => $vendorDir . '/prestashow/presta-core/Entity/Notification.php',
'Prestashow\\PrestaCore\\Entity\\NotificationRead' => $vendorDir . '/prestashow/presta-core/Entity/NotificationRead.php',
'Prestashow\\PrestaCore\\Exception\\PrestashowException' => $vendorDir . '/prestashow/presta-core/Exception/PrestashowException.php',
'Prestashow\\PrestaCore\\Exception\\UpdateException' => $vendorDir . '/prestashow/presta-core/Exception/UpdateException.php',
'Prestashow\\PrestaCore\\Model\\AbstractAdminController' => $vendorDir . '/prestashow/presta-core/Model/AbstractAdminController.php',
'Prestashow\\PrestaCore\\Model\\AbstractDemoContent' => $vendorDir . '/prestashow/presta-core/Model/AbstractDemoContent.php',
'Prestashow\\PrestaCore\\Model\\AbstractEntity' => $vendorDir . '/prestashow/presta-core/Model/AbstractEntity.php',
'Prestashow\\PrestaCore\\Model\\AbstractModule' => $vendorDir . '/prestashow/presta-core/Model/AbstractModule.php',
'Prestashow\\PrestaCore\\Model\\AbstractRepository' => $vendorDir . '/prestashow/presta-core/Model/AbstractRepository.php',
'Prestashow\\PrestaCore\\Model\\AbstractService' => $vendorDir . '/prestashow/presta-core/Model/AbstractService.php',
'Prestashow\\PrestaCore\\Model\\DemoObjectModel' => $vendorDir . '/prestashow/presta-core/Model/DemoObjectModel.php',
'Prestashow\\PrestaCore\\Model\\ModuleSettings' => $vendorDir . '/prestashow/presta-core/Model/ModuleSettings.php',
'Prestashow\\PrestaCore\\Service\\DatabaseService' => $vendorDir . '/prestashow/presta-core/Service/DatabaseService.php',
'Prestashow\\PrestaCore\\Service\\DemoContentService' => $vendorDir . '/prestashow/presta-core/Service/DemoContentService.php',
'Prestashow\\PrestaCore\\Service\\IniService' => $vendorDir . '/prestashow/presta-core/Service/IniService.php',
'Prestashow\\PrestaCore\\Service\\ToolsService' => $vendorDir . '/prestashow/presta-core/Service/ToolsService.php',
'Prestashow\\PrestaCore\\Service\\UpdateService' => $vendorDir . '/prestashow/presta-core/Service/UpdateService.php',
'Prestashow\\PrestaCore\\Util\\HookOverrideFix' => $vendorDir . '/prestashow/presta-core/Util/HookOverrideFix.php',
'React\\Promise\\CancellablePromiseInterface' => $vendorDir . '/react/promise/src/CancellablePromiseInterface.php',
'React\\Promise\\CancellationQueue' => $vendorDir . '/react/promise/src/CancellationQueue.php',
'React\\Promise\\Deferred' => $vendorDir . '/react/promise/src/Deferred.php',
'React\\Promise\\Exception\\LengthException' => $vendorDir . '/react/promise/src/Exception/LengthException.php',
'React\\Promise\\ExtendedPromiseInterface' => $vendorDir . '/react/promise/src/ExtendedPromiseInterface.php',
'React\\Promise\\FulfilledPromise' => $vendorDir . '/react/promise/src/FulfilledPromise.php',
'React\\Promise\\LazyPromise' => $vendorDir . '/react/promise/src/LazyPromise.php',
'React\\Promise\\Promise' => $vendorDir . '/react/promise/src/Promise.php',
'React\\Promise\\PromiseInterface' => $vendorDir . '/react/promise/src/PromiseInterface.php',
'React\\Promise\\PromisorInterface' => $vendorDir . '/react/promise/src/PromisorInterface.php',
'React\\Promise\\RejectedPromise' => $vendorDir . '/react/promise/src/RejectedPromise.php',
'React\\Promise\\UnhandledRejectionException' => $vendorDir . '/react/promise/src/UnhandledRejectionException.php',
'WebPConvert\\Convert\\ConverterFactory' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/ConverterFactory.php',
'WebPConvert\\Convert\\Converters\\AbstractConverter' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/AbstractConverter.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\AutoQualityTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/AutoQualityTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\DestinationPreparationTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/DestinationPreparationTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\LoggerTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/LoggerTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\OptionsTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/OptionsTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\WarningLoggerTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/WarningLoggerTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\CloudConverterTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/CloudConverterTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\CurlTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/CurlTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\EncodingAutoTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/EncodingAutoTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\ExecTrait' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/ExecTrait.php',
'WebPConvert\\Convert\\Converters\\Cwebp' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Cwebp.php',
'WebPConvert\\Convert\\Converters\\Ewww' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Ewww.php',
'WebPConvert\\Convert\\Converters\\FFMpeg' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/FFMpeg.php',
'WebPConvert\\Convert\\Converters\\Gd' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Gd.php',
'WebPConvert\\Convert\\Converters\\Gmagick' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Gmagick.php',
'WebPConvert\\Convert\\Converters\\GmagickBinary' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/GmagickBinary.php',
'WebPConvert\\Convert\\Converters\\GraphicsMagick' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/GraphicsMagick.php',
'WebPConvert\\Convert\\Converters\\ImageMagick' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/ImageMagick.php',
'WebPConvert\\Convert\\Converters\\Imagick' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Imagick.php',
'WebPConvert\\Convert\\Converters\\ImagickBinary' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/ImagickBinary.php',
'WebPConvert\\Convert\\Converters\\Stack' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Stack.php',
'WebPConvert\\Convert\\Converters\\Vips' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Vips.php',
'WebPConvert\\Convert\\Converters\\Wpc' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Converters/Wpc.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailedException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailedException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConversionSkippedException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConversionSkippedException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConverterNotOperationalException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConverterNotOperationalException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConverterNotOperational\\InvalidApiKeyException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConverterNotOperational/InvalidApiKeyException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConverterNotOperational\\SystemRequirementsNotMetException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConverterNotOperational/SystemRequirementsNotMetException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\FileSystemProblemsException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/FileSystemProblemsException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\FileSystemProblems\\CreateDestinationFileException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/FileSystemProblems/CreateDestinationFileException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\FileSystemProblems\\CreateDestinationFolderException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/FileSystemProblems/CreateDestinationFolderException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInputException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInputException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInput\\ConverterNotFoundException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInput/ConverterNotFoundException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInput\\InvalidImageTypeException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInput/InvalidImageTypeException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInput\\TargetNotFoundException' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInput/TargetNotFoundException.php',
'WebPConvert\\Convert\\Helpers\\JpegQualityDetector' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Helpers/JpegQualityDetector.php',
'WebPConvert\\Convert\\Helpers\\PhpIniSizes' => $vendorDir . '/rosell-dk/webp-convert/src/Convert/Helpers/PhpIniSizes.php',
'WebPConvert\\Exceptions\\InvalidInputException' => $vendorDir . '/rosell-dk/webp-convert/src/Exceptions/InvalidInputException.php',
'WebPConvert\\Exceptions\\InvalidInput\\InvalidImageTypeException' => $vendorDir . '/rosell-dk/webp-convert/src/Exceptions/InvalidInput/InvalidImageTypeException.php',
'WebPConvert\\Exceptions\\InvalidInput\\TargetNotFoundException' => $vendorDir . '/rosell-dk/webp-convert/src/Exceptions/InvalidInput/TargetNotFoundException.php',
'WebPConvert\\Exceptions\\WebPConvertException' => $vendorDir . '/rosell-dk/webp-convert/src/Exceptions/WebPConvertException.php',
'WebPConvert\\Helpers\\BinaryDiscovery' => $vendorDir . '/rosell-dk/webp-convert/src/Helpers/BinaryDiscovery.php',
'WebPConvert\\Helpers\\FileExists' => $vendorDir . '/rosell-dk/webp-convert/src/Helpers/FileExists.php',
'WebPConvert\\Helpers\\InputValidator' => $vendorDir . '/rosell-dk/webp-convert/src/Helpers/InputValidator.php',
'WebPConvert\\Helpers\\MimeType' => $vendorDir . '/rosell-dk/webp-convert/src/Helpers/MimeType.php',
'WebPConvert\\Helpers\\PathChecker' => $vendorDir . '/rosell-dk/webp-convert/src/Helpers/PathChecker.php',
'WebPConvert\\Helpers\\Sanitize' => $vendorDir . '/rosell-dk/webp-convert/src/Helpers/Sanitize.php',
'WebPConvert\\Loggers\\BaseLogger' => $vendorDir . '/rosell-dk/webp-convert/src/Loggers/BaseLogger.php',
'WebPConvert\\Loggers\\BufferLogger' => $vendorDir . '/rosell-dk/webp-convert/src/Loggers/BufferLogger.php',
'WebPConvert\\Loggers\\EchoLogger' => $vendorDir . '/rosell-dk/webp-convert/src/Loggers/EchoLogger.php',
'WebPConvert\\Options\\ArrayOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/ArrayOption.php',
'WebPConvert\\Options\\BooleanOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/BooleanOption.php',
'WebPConvert\\Options\\Exceptions\\InvalidOptionTypeException' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Exceptions/InvalidOptionTypeException.php',
'WebPConvert\\Options\\Exceptions\\InvalidOptionValueException' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Exceptions/InvalidOptionValueException.php',
'WebPConvert\\Options\\Exceptions\\OptionNotFoundException' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Exceptions/OptionNotFoundException.php',
'WebPConvert\\Options\\GhostOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/GhostOption.php',
'WebPConvert\\Options\\IntegerOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/IntegerOption.php',
'WebPConvert\\Options\\IntegerOrNullOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php',
'WebPConvert\\Options\\MetadataOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/MetadataOption.php',
'WebPConvert\\Options\\Option' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Option.php',
'WebPConvert\\Options\\Options' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Options.php',
'WebPConvert\\Options\\QualityOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/QualityOption.php',
'WebPConvert\\Options\\SensitiveArrayOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php',
'WebPConvert\\Options\\SensitiveStringOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/SensitiveStringOption.php',
'WebPConvert\\Options\\StringOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/StringOption.php',
'WebPConvert\\Serve\\Exceptions\\ServeFailedException' => $vendorDir . '/rosell-dk/webp-convert/src/Serve/Exceptions/ServeFailedException.php',
'WebPConvert\\Serve\\Header' => $vendorDir . '/rosell-dk/webp-convert/src/Serve/Header.php',
'WebPConvert\\Serve\\Report' => $vendorDir . '/rosell-dk/webp-convert/src/Serve/Report.php',
'WebPConvert\\Serve\\ServeConvertedWebP' => $vendorDir . '/rosell-dk/webp-convert/src/Serve/ServeConvertedWebP.php',
'WebPConvert\\Serve\\ServeConvertedWebPWithErrorHandling' => $vendorDir . '/rosell-dk/webp-convert/src/Serve/ServeConvertedWebPWithErrorHandling.php',
'WebPConvert\\Serve\\ServeFile' => $vendorDir . '/rosell-dk/webp-convert/src/Serve/ServeFile.php',
'WebPConvert\\WebPConvert' => $vendorDir . '/rosell-dk/webp-convert/src/WebPConvert.php',
);

View File

@@ -0,0 +1,11 @@
<?php
// autoload_files.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php',
'e367ad40bc44b2c85fb4932b406939f7' => $vendorDir . '/prestashow/presta-core/functions.php',
);

View File

@@ -0,0 +1,9 @@
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);

View File

@@ -0,0 +1,17 @@
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'WebPConvert\\' => array($vendorDir . '/rosell-dk/webp-convert/src'),
'React\\Promise\\' => array($vendorDir . '/react/promise/src'),
'Prestashow\\PrestaCore\\' => array($vendorDir . '/prestashow/presta-core'),
'Prestashow\\PShowLazyImg\\' => array($baseDir . '/src'),
'ImageMimeTypeGuesser\\' => array($vendorDir . '/rosell-dk/image-mime-type-guesser/src'),
'GuzzleHttp\\Stream\\' => array($vendorDir . '/guzzlehttp/streams/src'),
'GuzzleHttp\\Ring\\' => array($vendorDir . '/guzzlehttp/ringphp/src'),
'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
);

View File

@@ -0,0 +1,73 @@
<?php
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit6887aa5a1ca08b93890753d2333f0c93
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit6887aa5a1ca08b93890753d2333f0c93', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit6887aa5a1ca08b93890753d2333f0c93', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit6887aa5a1ca08b93890753d2333f0c93::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit6887aa5a1ca08b93890753d2333f0c93::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire6887aa5a1ca08b93890753d2333f0c93($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire6887aa5a1ca08b93890753d2333f0c93($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}

View File

@@ -0,0 +1,332 @@
<?php
// autoload_static.php @generated by Composer
namespace Composer\Autoload;
class ComposerStaticInit6887aa5a1ca08b93890753d2333f0c93
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
'e367ad40bc44b2c85fb4932b406939f7' => __DIR__ . '/..' . '/prestashow/presta-core/functions.php',
);
public static $prefixLengthsPsr4 = array (
'W' =>
array (
'WebPConvert\\' => 12,
),
'R' =>
array (
'React\\Promise\\' => 14,
),
'P' =>
array (
'Prestashow\\PrestaCore\\' => 22,
'Prestashow\\PShowLazyImg\\' => 24,
),
'I' =>
array (
'ImageMimeTypeGuesser\\' => 21,
),
'G' =>
array (
'GuzzleHttp\\Stream\\' => 18,
'GuzzleHttp\\Ring\\' => 16,
'GuzzleHttp\\' => 11,
),
);
public static $prefixDirsPsr4 = array (
'WebPConvert\\' =>
array (
0 => __DIR__ . '/..' . '/rosell-dk/webp-convert/src',
),
'React\\Promise\\' =>
array (
0 => __DIR__ . '/..' . '/react/promise/src',
),
'Prestashow\\PrestaCore\\' =>
array (
0 => __DIR__ . '/..' . '/prestashow/presta-core',
),
'Prestashow\\PShowLazyImg\\' =>
array (
0 => __DIR__ . '/../..' . '/src',
),
'ImageMimeTypeGuesser\\' =>
array (
0 => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src',
),
'GuzzleHttp\\Stream\\' =>
array (
0 => __DIR__ . '/..' . '/guzzlehttp/streams/src',
),
'GuzzleHttp\\Ring\\' =>
array (
0 => __DIR__ . '/..' . '/guzzlehttp/ringphp/src',
),
'GuzzleHttp\\' =>
array (
0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
),
);
public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'GuzzleHttp\\BatchResults' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BatchResults.php',
'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php',
'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php',
'GuzzleHttp\\Collection' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Collection.php',
'GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php',
'GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php',
'GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php',
'GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php',
'GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php',
'GuzzleHttp\\Event\\AbstractEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractEvent.php',
'GuzzleHttp\\Event\\AbstractRequestEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php',
'GuzzleHttp\\Event\\AbstractRetryableEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php',
'GuzzleHttp\\Event\\AbstractTransferEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php',
'GuzzleHttp\\Event\\BeforeEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/BeforeEvent.php',
'GuzzleHttp\\Event\\CompleteEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/CompleteEvent.php',
'GuzzleHttp\\Event\\Emitter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/Emitter.php',
'GuzzleHttp\\Event\\EmitterInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/EmitterInterface.php',
'GuzzleHttp\\Event\\EndEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/EndEvent.php',
'GuzzleHttp\\Event\\ErrorEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/ErrorEvent.php',
'GuzzleHttp\\Event\\EventInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/EventInterface.php',
'GuzzleHttp\\Event\\HasEmitterInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/HasEmitterInterface.php',
'GuzzleHttp\\Event\\HasEmitterTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/HasEmitterTrait.php',
'GuzzleHttp\\Event\\ListenerAttacherTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php',
'GuzzleHttp\\Event\\ProgressEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/ProgressEvent.php',
'GuzzleHttp\\Event\\RequestEvents' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/RequestEvents.php',
'GuzzleHttp\\Event\\SubscriberInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/SubscriberInterface.php',
'GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php',
'GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php',
'GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php',
'GuzzleHttp\\Exception\\CouldNotRewindStreamException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/CouldNotRewindStreamException.php',
'GuzzleHttp\\Exception\\ParseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ParseException.php',
'GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php',
'GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php',
'GuzzleHttp\\Exception\\StateException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/StateException.php',
'GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php',
'GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php',
'GuzzleHttp\\Exception\\XmlParseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/XmlParseException.php',
'GuzzleHttp\\HasDataTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HasDataTrait.php',
'GuzzleHttp\\Message\\AbstractMessage' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/AbstractMessage.php',
'GuzzleHttp\\Message\\AppliesHeadersInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php',
'GuzzleHttp\\Message\\FutureResponse' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/FutureResponse.php',
'GuzzleHttp\\Message\\MessageFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageFactory.php',
'GuzzleHttp\\Message\\MessageFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php',
'GuzzleHttp\\Message\\MessageInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageInterface.php',
'GuzzleHttp\\Message\\MessageParser' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageParser.php',
'GuzzleHttp\\Message\\Request' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/Request.php',
'GuzzleHttp\\Message\\RequestInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/RequestInterface.php',
'GuzzleHttp\\Message\\Response' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/Response.php',
'GuzzleHttp\\Message\\ResponseInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/ResponseInterface.php',
'GuzzleHttp\\Mimetypes' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Mimetypes.php',
'GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php',
'GuzzleHttp\\Post\\MultipartBody' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/MultipartBody.php',
'GuzzleHttp\\Post\\PostBody' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostBody.php',
'GuzzleHttp\\Post\\PostBodyInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostBodyInterface.php',
'GuzzleHttp\\Post\\PostFile' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostFile.php',
'GuzzleHttp\\Post\\PostFileInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostFileInterface.php',
'GuzzleHttp\\Query' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Query.php',
'GuzzleHttp\\QueryParser' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/QueryParser.php',
'GuzzleHttp\\RequestFsm' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestFsm.php',
'GuzzleHttp\\RingBridge' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RingBridge.php',
'GuzzleHttp\\Ring\\Client\\ClientUtils' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/ClientUtils.php',
'GuzzleHttp\\Ring\\Client\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/CurlFactory.php',
'GuzzleHttp\\Ring\\Client\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/CurlHandler.php',
'GuzzleHttp\\Ring\\Client\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php',
'GuzzleHttp\\Ring\\Client\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/Middleware.php',
'GuzzleHttp\\Ring\\Client\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/MockHandler.php',
'GuzzleHttp\\Ring\\Client\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/StreamHandler.php',
'GuzzleHttp\\Ring\\Core' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Core.php',
'GuzzleHttp\\Ring\\Exception\\CancelledException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/CancelledException.php',
'GuzzleHttp\\Ring\\Exception\\CancelledFutureAccessException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/CancelledFutureAccessException.php',
'GuzzleHttp\\Ring\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/ConnectException.php',
'GuzzleHttp\\Ring\\Exception\\RingException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/RingException.php',
'GuzzleHttp\\Ring\\Future\\BaseFutureTrait' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php',
'GuzzleHttp\\Ring\\Future\\CompletedFutureArray' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php',
'GuzzleHttp\\Ring\\Future\\CompletedFutureValue' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php',
'GuzzleHttp\\Ring\\Future\\FutureArray' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureArray.php',
'GuzzleHttp\\Ring\\Future\\FutureArrayInterface' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php',
'GuzzleHttp\\Ring\\Future\\FutureInterface' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureInterface.php',
'GuzzleHttp\\Ring\\Future\\FutureValue' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureValue.php',
'GuzzleHttp\\Ring\\Future\\MagicFutureTrait' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/MagicFutureTrait.php',
'GuzzleHttp\\Stream\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/AppendStream.php',
'GuzzleHttp\\Stream\\AsyncReadStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/AsyncReadStream.php',
'GuzzleHttp\\Stream\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/BufferStream.php',
'GuzzleHttp\\Stream\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/CachingStream.php',
'GuzzleHttp\\Stream\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/DroppingStream.php',
'GuzzleHttp\\Stream\\Exception\\CannotAttachException' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Exception/CannotAttachException.php',
'GuzzleHttp\\Stream\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Exception/SeekException.php',
'GuzzleHttp\\Stream\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/FnStream.php',
'GuzzleHttp\\Stream\\GuzzleStreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/streams/src/GuzzleStreamWrapper.php',
'GuzzleHttp\\Stream\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/InflateStream.php',
'GuzzleHttp\\Stream\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/LazyOpenStream.php',
'GuzzleHttp\\Stream\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/LimitStream.php',
'GuzzleHttp\\Stream\\MetadataStreamInterface' => __DIR__ . '/..' . '/guzzlehttp/streams/src/MetadataStreamInterface.php',
'GuzzleHttp\\Stream\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/NoSeekStream.php',
'GuzzleHttp\\Stream\\NullStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/NullStream.php',
'GuzzleHttp\\Stream\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/PumpStream.php',
'GuzzleHttp\\Stream\\Stream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Stream.php',
'GuzzleHttp\\Stream\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/streams/src/StreamDecoratorTrait.php',
'GuzzleHttp\\Stream\\StreamInterface' => __DIR__ . '/..' . '/guzzlehttp/streams/src/StreamInterface.php',
'GuzzleHttp\\Stream\\Utils' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Utils.php',
'GuzzleHttp\\Subscriber\\Cookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Cookie.php',
'GuzzleHttp\\Subscriber\\History' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/History.php',
'GuzzleHttp\\Subscriber\\HttpError' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/HttpError.php',
'GuzzleHttp\\Subscriber\\Mock' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Mock.php',
'GuzzleHttp\\Subscriber\\Prepare' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Prepare.php',
'GuzzleHttp\\Subscriber\\Redirect' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Redirect.php',
'GuzzleHttp\\ToArrayInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ToArrayInterface.php',
'GuzzleHttp\\Transaction' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Transaction.php',
'GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php',
'GuzzleHttp\\Url' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Url.php',
'GuzzleHttp\\Utils' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Utils.php',
'ImageMimeTypeGuesser\\Detectors\\AbstractDetector' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/AbstractDetector.php',
'ImageMimeTypeGuesser\\Detectors\\ExifImageType' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/ExifImageType.php',
'ImageMimeTypeGuesser\\Detectors\\FInfo' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/FInfo.php',
'ImageMimeTypeGuesser\\Detectors\\GetImageSize' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/GetImageSize.php',
'ImageMimeTypeGuesser\\Detectors\\MimeContentType' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/MimeContentType.php',
'ImageMimeTypeGuesser\\Detectors\\SniffFirstFourBytes' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/SniffFirstFourBytes.php',
'ImageMimeTypeGuesser\\Detectors\\Stack' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/Detectors/Stack.php',
'ImageMimeTypeGuesser\\GuessFromExtension' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/GuessFromExtension.php',
'ImageMimeTypeGuesser\\ImageMimeTypeGuesser' => __DIR__ . '/..' . '/rosell-dk/image-mime-type-guesser/src/ImageMimeTypeGuesser.php',
'PShowLazyImg' => __DIR__ . '/../..' . '/pshowlazyimg.php',
'Prestashow\\PShowLazyImg\\Controller\\Front\\CronController' => __DIR__ . '/../..' . '/src/Controller/Front/CronController.php',
'Prestashow\\PShowLazyImg\\Entity\\ImageOptimize' => __DIR__ . '/../..' . '/src/Entity/ImageOptimize.php',
'Prestashow\\PShowLazyImg\\Migrations\\Version1' => __DIR__ . '/../..' . '/src/Migrations/Version1.php',
'Prestashow\\PShowLazyImg\\Migrations\\Version2' => __DIR__ . '/../..' . '/src/Migrations/Version2.php',
'Prestashow\\PShowLazyImg\\Module' => __DIR__ . '/../..' . '/src/Module.php',
'Prestashow\\PShowLazyImg\\Repository\\ImageOptimizeRepository' => __DIR__ . '/../..' . '/src/Repository/ImageOptimizeRepository.php',
'Prestashow\\PShowLazyImg\\Service\\HtaccessService' => __DIR__ . '/../..' . '/src/Service/HtaccessService.php',
'Prestashow\\PShowLazyImg\\Service\\HtmlManipulate' => __DIR__ . '/../..' . '/src/Service/HtmlManipulate.php',
'Prestashow\\PShowLazyImg\\Service\\UrlDispatcher' => __DIR__ . '/../..' . '/src/Service/UrlDispatcher.php',
'Prestashow\\PShowLazyImg\\Service\\WebpService' => __DIR__ . '/../..' . '/src/Service/WebpService.php',
'Prestashow\\PrestaCore\\Controller\\BackupController' => __DIR__ . '/..' . '/prestashow/presta-core/Controller/BackupController.php',
'Prestashow\\PrestaCore\\Controller\\HookController' => __DIR__ . '/..' . '/prestashow/presta-core/Controller/HookController.php',
'Prestashow\\PrestaCore\\Controller\\SettingsController' => __DIR__ . '/..' . '/prestashow/presta-core/Controller/SettingsController.php',
'Prestashow\\PrestaCore\\Controller\\UpdateController' => __DIR__ . '/..' . '/prestashow/presta-core/Controller/UpdateController.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\AbstractMigration' => __DIR__ . '/..' . '/prestashow/presta-core/Database/Migrations/AbstractMigration.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\MigrationCoreTool' => __DIR__ . '/..' . '/prestashow/presta-core/Database/Migrations/MigrationCoreTool.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\MigrationTool' => __DIR__ . '/..' . '/prestashow/presta-core/Database/Migrations/MigrationTool.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\Version0' => __DIR__ . '/..' . '/prestashow/presta-core/Database/Migrations/Version0.php',
'Prestashow\\PrestaCore\\Database\\Migrations\\Version1' => __DIR__ . '/..' . '/prestashow/presta-core/Database/Migrations/Version1.php',
'Prestashow\\PrestaCore\\Entity\\Hook' => __DIR__ . '/..' . '/prestashow/presta-core/Entity/Hook.php',
'Prestashow\\PrestaCore\\Entity\\Notification' => __DIR__ . '/..' . '/prestashow/presta-core/Entity/Notification.php',
'Prestashow\\PrestaCore\\Entity\\NotificationRead' => __DIR__ . '/..' . '/prestashow/presta-core/Entity/NotificationRead.php',
'Prestashow\\PrestaCore\\Exception\\PrestashowException' => __DIR__ . '/..' . '/prestashow/presta-core/Exception/PrestashowException.php',
'Prestashow\\PrestaCore\\Exception\\UpdateException' => __DIR__ . '/..' . '/prestashow/presta-core/Exception/UpdateException.php',
'Prestashow\\PrestaCore\\Model\\AbstractAdminController' => __DIR__ . '/..' . '/prestashow/presta-core/Model/AbstractAdminController.php',
'Prestashow\\PrestaCore\\Model\\AbstractDemoContent' => __DIR__ . '/..' . '/prestashow/presta-core/Model/AbstractDemoContent.php',
'Prestashow\\PrestaCore\\Model\\AbstractEntity' => __DIR__ . '/..' . '/prestashow/presta-core/Model/AbstractEntity.php',
'Prestashow\\PrestaCore\\Model\\AbstractModule' => __DIR__ . '/..' . '/prestashow/presta-core/Model/AbstractModule.php',
'Prestashow\\PrestaCore\\Model\\AbstractRepository' => __DIR__ . '/..' . '/prestashow/presta-core/Model/AbstractRepository.php',
'Prestashow\\PrestaCore\\Model\\AbstractService' => __DIR__ . '/..' . '/prestashow/presta-core/Model/AbstractService.php',
'Prestashow\\PrestaCore\\Model\\DemoObjectModel' => __DIR__ . '/..' . '/prestashow/presta-core/Model/DemoObjectModel.php',
'Prestashow\\PrestaCore\\Model\\ModuleSettings' => __DIR__ . '/..' . '/prestashow/presta-core/Model/ModuleSettings.php',
'Prestashow\\PrestaCore\\Service\\DatabaseService' => __DIR__ . '/..' . '/prestashow/presta-core/Service/DatabaseService.php',
'Prestashow\\PrestaCore\\Service\\DemoContentService' => __DIR__ . '/..' . '/prestashow/presta-core/Service/DemoContentService.php',
'Prestashow\\PrestaCore\\Service\\IniService' => __DIR__ . '/..' . '/prestashow/presta-core/Service/IniService.php',
'Prestashow\\PrestaCore\\Service\\ToolsService' => __DIR__ . '/..' . '/prestashow/presta-core/Service/ToolsService.php',
'Prestashow\\PrestaCore\\Service\\UpdateService' => __DIR__ . '/..' . '/prestashow/presta-core/Service/UpdateService.php',
'Prestashow\\PrestaCore\\Util\\HookOverrideFix' => __DIR__ . '/..' . '/prestashow/presta-core/Util/HookOverrideFix.php',
'React\\Promise\\CancellablePromiseInterface' => __DIR__ . '/..' . '/react/promise/src/CancellablePromiseInterface.php',
'React\\Promise\\CancellationQueue' => __DIR__ . '/..' . '/react/promise/src/CancellationQueue.php',
'React\\Promise\\Deferred' => __DIR__ . '/..' . '/react/promise/src/Deferred.php',
'React\\Promise\\Exception\\LengthException' => __DIR__ . '/..' . '/react/promise/src/Exception/LengthException.php',
'React\\Promise\\ExtendedPromiseInterface' => __DIR__ . '/..' . '/react/promise/src/ExtendedPromiseInterface.php',
'React\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/react/promise/src/FulfilledPromise.php',
'React\\Promise\\LazyPromise' => __DIR__ . '/..' . '/react/promise/src/LazyPromise.php',
'React\\Promise\\Promise' => __DIR__ . '/..' . '/react/promise/src/Promise.php',
'React\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/react/promise/src/PromiseInterface.php',
'React\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/react/promise/src/PromisorInterface.php',
'React\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/react/promise/src/RejectedPromise.php',
'React\\Promise\\UnhandledRejectionException' => __DIR__ . '/..' . '/react/promise/src/UnhandledRejectionException.php',
'WebPConvert\\Convert\\ConverterFactory' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/ConverterFactory.php',
'WebPConvert\\Convert\\Converters\\AbstractConverter' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/AbstractConverter.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\AutoQualityTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/AutoQualityTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\DestinationPreparationTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/DestinationPreparationTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\LoggerTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/LoggerTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\OptionsTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/OptionsTrait.php',
'WebPConvert\\Convert\\Converters\\BaseTraits\\WarningLoggerTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/WarningLoggerTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\CloudConverterTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/CloudConverterTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\CurlTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/CurlTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\EncodingAutoTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/EncodingAutoTrait.php',
'WebPConvert\\Convert\\Converters\\ConverterTraits\\ExecTrait' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/ConverterTraits/ExecTrait.php',
'WebPConvert\\Convert\\Converters\\Cwebp' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Cwebp.php',
'WebPConvert\\Convert\\Converters\\Ewww' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Ewww.php',
'WebPConvert\\Convert\\Converters\\FFMpeg' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/FFMpeg.php',
'WebPConvert\\Convert\\Converters\\Gd' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Gd.php',
'WebPConvert\\Convert\\Converters\\Gmagick' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Gmagick.php',
'WebPConvert\\Convert\\Converters\\GmagickBinary' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/GmagickBinary.php',
'WebPConvert\\Convert\\Converters\\GraphicsMagick' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/GraphicsMagick.php',
'WebPConvert\\Convert\\Converters\\ImageMagick' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/ImageMagick.php',
'WebPConvert\\Convert\\Converters\\Imagick' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Imagick.php',
'WebPConvert\\Convert\\Converters\\ImagickBinary' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/ImagickBinary.php',
'WebPConvert\\Convert\\Converters\\Stack' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Stack.php',
'WebPConvert\\Convert\\Converters\\Vips' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Vips.php',
'WebPConvert\\Convert\\Converters\\Wpc' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Converters/Wpc.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailedException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailedException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConversionSkippedException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConversionSkippedException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConverterNotOperationalException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConverterNotOperationalException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConverterNotOperational\\InvalidApiKeyException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConverterNotOperational/InvalidApiKeyException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\ConverterNotOperational\\SystemRequirementsNotMetException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/ConverterNotOperational/SystemRequirementsNotMetException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\FileSystemProblemsException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/FileSystemProblemsException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\FileSystemProblems\\CreateDestinationFileException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/FileSystemProblems/CreateDestinationFileException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\FileSystemProblems\\CreateDestinationFolderException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/FileSystemProblems/CreateDestinationFolderException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInputException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInputException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInput\\ConverterNotFoundException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInput/ConverterNotFoundException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInput\\InvalidImageTypeException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInput/InvalidImageTypeException.php',
'WebPConvert\\Convert\\Exceptions\\ConversionFailed\\InvalidInput\\TargetNotFoundException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Exceptions/ConversionFailed/InvalidInput/TargetNotFoundException.php',
'WebPConvert\\Convert\\Helpers\\JpegQualityDetector' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Helpers/JpegQualityDetector.php',
'WebPConvert\\Convert\\Helpers\\PhpIniSizes' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Convert/Helpers/PhpIniSizes.php',
'WebPConvert\\Exceptions\\InvalidInputException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Exceptions/InvalidInputException.php',
'WebPConvert\\Exceptions\\InvalidInput\\InvalidImageTypeException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Exceptions/InvalidInput/InvalidImageTypeException.php',
'WebPConvert\\Exceptions\\InvalidInput\\TargetNotFoundException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Exceptions/InvalidInput/TargetNotFoundException.php',
'WebPConvert\\Exceptions\\WebPConvertException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Exceptions/WebPConvertException.php',
'WebPConvert\\Helpers\\BinaryDiscovery' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Helpers/BinaryDiscovery.php',
'WebPConvert\\Helpers\\FileExists' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Helpers/FileExists.php',
'WebPConvert\\Helpers\\InputValidator' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Helpers/InputValidator.php',
'WebPConvert\\Helpers\\MimeType' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Helpers/MimeType.php',
'WebPConvert\\Helpers\\PathChecker' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Helpers/PathChecker.php',
'WebPConvert\\Helpers\\Sanitize' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Helpers/Sanitize.php',
'WebPConvert\\Loggers\\BaseLogger' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Loggers/BaseLogger.php',
'WebPConvert\\Loggers\\BufferLogger' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Loggers/BufferLogger.php',
'WebPConvert\\Loggers\\EchoLogger' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Loggers/EchoLogger.php',
'WebPConvert\\Options\\ArrayOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/ArrayOption.php',
'WebPConvert\\Options\\BooleanOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/BooleanOption.php',
'WebPConvert\\Options\\Exceptions\\InvalidOptionTypeException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Exceptions/InvalidOptionTypeException.php',
'WebPConvert\\Options\\Exceptions\\InvalidOptionValueException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Exceptions/InvalidOptionValueException.php',
'WebPConvert\\Options\\Exceptions\\OptionNotFoundException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Exceptions/OptionNotFoundException.php',
'WebPConvert\\Options\\GhostOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/GhostOption.php',
'WebPConvert\\Options\\IntegerOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/IntegerOption.php',
'WebPConvert\\Options\\IntegerOrNullOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php',
'WebPConvert\\Options\\MetadataOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/MetadataOption.php',
'WebPConvert\\Options\\Option' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Option.php',
'WebPConvert\\Options\\Options' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Options.php',
'WebPConvert\\Options\\QualityOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/QualityOption.php',
'WebPConvert\\Options\\SensitiveArrayOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php',
'WebPConvert\\Options\\SensitiveStringOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/SensitiveStringOption.php',
'WebPConvert\\Options\\StringOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/StringOption.php',
'WebPConvert\\Serve\\Exceptions\\ServeFailedException' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Serve/Exceptions/ServeFailedException.php',
'WebPConvert\\Serve\\Header' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Serve/Header.php',
'WebPConvert\\Serve\\Report' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Serve/Report.php',
'WebPConvert\\Serve\\ServeConvertedWebP' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Serve/ServeConvertedWebP.php',
'WebPConvert\\Serve\\ServeConvertedWebPWithErrorHandling' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Serve/ServeConvertedWebPWithErrorHandling.php',
'WebPConvert\\Serve\\ServeFile' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Serve/ServeFile.php',
'WebPConvert\\WebPConvert' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/WebPConvert.php',
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit6887aa5a1ca08b93890753d2333f0c93::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit6887aa5a1ca08b93890753d2333f0c93::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit6887aa5a1ca08b93890753d2333f0c93::$classMap;
}, null, ClassLoader::class);
}
}

View File

@@ -0,0 +1 @@
<?php die("Access denied");

View File

@@ -0,0 +1,427 @@
{
"packages": [
{
"name": "guzzlehttp/guzzle",
"version": "5.3.4",
"version_normalized": "5.3.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "b87eda7a7162f95574032da17e9323c9899cb6b2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b87eda7a7162f95574032da17e9323c9899cb6b2",
"reference": "b87eda7a7162f95574032da17e9323c9899cb6b2",
"shasum": ""
},
"require": {
"guzzlehttp/ringphp": "^1.1",
"php": ">=5.4.0",
"react/promise": "^2.2"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.0"
},
"time": "2019-10-30T09:32:00+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
"homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
"rest",
"web service"
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/5.3"
},
"install-path": "../guzzlehttp/guzzle"
},
{
"name": "guzzlehttp/ringphp",
"version": "1.1.1",
"version_normalized": "1.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/RingPHP.git",
"reference": "5e2a174052995663dd68e6b5ad838afd47dd615b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/RingPHP/zipball/5e2a174052995663dd68e6b5ad838afd47dd615b",
"reference": "5e2a174052995663dd68e6b5ad838afd47dd615b",
"shasum": ""
},
"require": {
"guzzlehttp/streams": "~3.0",
"php": ">=5.4.0",
"react/promise": "~2.0"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "~4.0"
},
"suggest": {
"ext-curl": "Guzzle will use specific adapters if cURL is present"
},
"time": "2018-07-31T13:22:33+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"GuzzleHttp\\Ring\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.",
"support": {
"issues": "https://github.com/guzzle/RingPHP/issues",
"source": "https://github.com/guzzle/RingPHP/tree/1.1.1"
},
"abandoned": true,
"install-path": "../guzzlehttp/ringphp"
},
{
"name": "guzzlehttp/streams",
"version": "3.0.0",
"version_normalized": "3.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/streams.git",
"reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5",
"reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
},
"time": "2014-10-12T19:18:40+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"GuzzleHttp\\Stream\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Provides a simple abstraction over streams of data",
"homepage": "http://guzzlephp.org/",
"keywords": [
"Guzzle",
"stream"
],
"support": {
"issues": "https://github.com/guzzle/streams/issues",
"source": "https://github.com/guzzle/streams/tree/master"
},
"abandoned": true,
"install-path": "../guzzlehttp/streams"
},
{
"name": "prestashow/presta-core",
"version": "dev-master",
"version_normalized": "dev-master",
"source": {
"type": "git",
"url": "https://matt:4_ry3g3ez3-VGiT8Adig@gitlab.layersshow.com/prestashow/lib/presta-core.git",
"reference": "ef848852f2cf1b47eb9925b4aecf4bc4a7feb118"
},
"require": {
"guzzlehttp/guzzle": "~5.0"
},
"time": "2021-04-26T19:31:25+00:00",
"default-branch": true,
"type": "library",
"installation-source": "source",
"autoload": {
"files": [
"functions.php"
],
"psr-4": {
"Prestashow\\PrestaCore\\": "./"
}
},
"license": [
"proprietary"
],
"authors": [
{
"name": "PrestaShow.pl",
"email": "kontakt@prestashow.pl",
"homepage": "https://prestashow.pl"
}
],
"install-path": "../prestashow/presta-core"
},
{
"name": "react/promise",
"version": "v2.8.0",
"version_normalized": "2.8.0.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
},
"time": "2020-05-12T15:16:56+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"React\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com"
}
],
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
"keywords": [
"promise",
"promises"
],
"support": {
"issues": "https://github.com/reactphp/promise/issues",
"source": "https://github.com/reactphp/promise/tree/v2.8.0"
},
"install-path": "../react/promise"
},
{
"name": "rosell-dk/image-mime-type-guesser",
"version": "0.3",
"version_normalized": "0.3.0.0",
"source": {
"type": "git",
"url": "https://github.com/rosell-dk/image-mime-type-guesser.git",
"reference": "204fd61ca81e3b0ba46c6165dab8f74816b1fe99"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rosell-dk/image-mime-type-guesser/zipball/204fd61ca81e3b0ba46c6165dab8f74816b1fe99",
"reference": "204fd61ca81e3b0ba46c6165dab8f74816b1fe99",
"shasum": ""
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.11",
"phpunit/phpunit": "^5.7.27",
"squizlabs/php_codesniffer": "3.*"
},
"time": "2019-03-29T09:33:28+00:00",
"type": "library",
"extra": {
"scripts-descriptions": {
"ci": "Run tests before CI",
"phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'",
"phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'",
"cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard",
"cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.",
"test": "Launches the preconfigured PHPUnit"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"ImageMimeTypeGuesser\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bjørn Rosell",
"homepage": "https://www.bitwise-it.dk/contact",
"role": "Project Author"
}
],
"description": "Guess mime type of images",
"keywords": [
"image",
"images",
"mime",
"mime type"
],
"support": {
"issues": "https://github.com/rosell-dk/image-mime-type-guesser/issues",
"source": "https://github.com/rosell-dk/image-mime-type-guesser/tree/0.3"
},
"install-path": "../rosell-dk/image-mime-type-guesser"
},
{
"name": "rosell-dk/webp-convert",
"version": "2.5.0",
"version_normalized": "2.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/rosell-dk/webp-convert.git",
"reference": "b349da7b6e04a4c269bbbbf7c279e0e433a71fd0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rosell-dk/webp-convert/zipball/b349da7b6e04a4c269bbbbf7c279e0e433a71fd0",
"reference": "b349da7b6e04a4c269bbbbf7c279e0e433a71fd0",
"shasum": ""
},
"require": {
"php": "^5.6 | ^7.0 | ^8.0",
"rosell-dk/image-mime-type-guesser": "^0.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.11",
"phpunit/phpunit": "^9.3",
"squizlabs/php_codesniffer": "3.*"
},
"suggest": {
"ext-gd": "to use GD extension for converting. Note: Gd must be compiled with webp support",
"ext-imagick": "to use Imagick extension for converting. Note: Gd must be compiled with webp support",
"ext-vips": "to use Vips extension for converting.",
"php-stan/php-stan": "Suggested for dev, in order to analyse code before committing"
},
"time": "2021-05-06T15:18:48+00:00",
"type": "library",
"extra": {
"scripts-descriptions": {
"ci": "Run tests before CI",
"phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'",
"phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'",
"cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard",
"cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.",
"test": "Launches the preconfigured PHPUnit"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"WebPConvert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bjørn Rosell",
"homepage": "https://www.bitwise-it.dk/contact",
"role": "Project Author"
},
{
"name": "Martin Folkers",
"homepage": "https://twobrain.io",
"role": "Collaborator"
}
],
"description": "Convert JPEG & PNG to WebP with PHP",
"keywords": [
"Webp",
"cwebp",
"gd",
"image conversion",
"images",
"imagick",
"jpg",
"jpg2webp",
"png",
"png2webp"
],
"support": {
"issues": "https://github.com/rosell-dk/webp-convert/issues",
"source": "https://github.com/rosell-dk/webp-convert/tree/2.5.0"
},
"funding": [
{
"url": "https://github.com/rosell-dk",
"type": "github"
},
{
"url": "https://ko-fi.com/rosell",
"type": "ko_fi"
}
],
"install-path": "../rosell-dk/webp-convert"
}
],
"dev": false,
"dev-package-names": []
}

View File

@@ -0,0 +1,88 @@
<?php return array (
'root' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'aliases' =>
array (
),
'reference' => '970bfaa19e3da3baf2a2f3d19a339ddc4e01551e',
'name' => 'prestashow-module/pshowlazyimg',
),
'versions' =>
array (
'guzzlehttp/guzzle' =>
array (
'pretty_version' => '5.3.4',
'version' => '5.3.4.0',
'aliases' =>
array (
),
'reference' => 'b87eda7a7162f95574032da17e9323c9899cb6b2',
),
'guzzlehttp/ringphp' =>
array (
'pretty_version' => '1.1.1',
'version' => '1.1.1.0',
'aliases' =>
array (
),
'reference' => '5e2a174052995663dd68e6b5ad838afd47dd615b',
),
'guzzlehttp/streams' =>
array (
'pretty_version' => '3.0.0',
'version' => '3.0.0.0',
'aliases' =>
array (
),
'reference' => '47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5',
),
'prestashow-module/pshowlazyimg' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'aliases' =>
array (
),
'reference' => '970bfaa19e3da3baf2a2f3d19a339ddc4e01551e',
),
'prestashow/presta-core' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'aliases' =>
array (
0 => '9999999-dev',
),
'reference' => 'ef848852f2cf1b47eb9925b4aecf4bc4a7feb118',
),
'react/promise' =>
array (
'pretty_version' => 'v2.8.0',
'version' => '2.8.0.0',
'aliases' =>
array (
),
'reference' => 'f3cff96a19736714524ca0dd1d4130de73dbbbc4',
),
'rosell-dk/image-mime-type-guesser' =>
array (
'pretty_version' => '0.3',
'version' => '0.3.0.0',
'aliases' =>
array (
),
'reference' => '204fd61ca81e3b0ba46c6165dab8f74816b1fe99',
),
'rosell-dk/webp-convert' =>
array (
'pretty_version' => '2.5.0',
'version' => '2.5.0.0',
'aliases' =>
array (
),
'reference' => 'b349da7b6e04a4c269bbbbf7c279e0e433a71fd0',
),
),
);

View File

@@ -0,0 +1,52 @@
language: php
php:
- 5.4
- 5.5
- 5.6
- 7.0
- 7.1
- 7.2
- hhvm
- nightly
env:
global:
- TEST_COMMAND="composer test"
before_script:
- curl --version
- pear config-set php_ini ~/.phpenv/versions/`php -r 'echo phpversion();'`/etc/php.ini || echo 'Error modifying PEAR'
- pecl install uri_template || echo 'Error installing uri_template'
# To be removed when this issue will be resolved: https://github.com/composer/composer/issues/5355
- if [[ "$COMPOSER_FLAGS" == *"--prefer-lowest"* ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-stable --quiet; fi
- travis_retry composer update ${COMPOSER_FLAGS} --prefer-dist --no-interaction
- ~/.nvm/nvm.sh install v0.6.14
- ~/.nvm/nvm.sh run v0.6.14
script: $TEST_COMMAND
matrix:
allow_failures:
- php: hhvm
- php: nightly
fast_finish: true
include:
- php: 5.4
env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" COVERAGE=true TEST_COMMAND="composer test-ci"
before_deploy:
- make package
deploy:
provider: releases
api_key:
secure: UpypqlYgsU68QT/x40YzhHXvzWjFwCNo9d+G8KAdm7U9+blFfcWhV1aMdzugvPMl6woXgvJj7qHq5tAL4v6oswCORhpSBfLgOQVFaica5LiHsvWlAedOhxGmnJqMTwuepjBCxXhs3+I8Kof1n4oUL9gKytXjOVCX/f7XU1HiinU=
file:
- build/artifacts/guzzle.phar
- build/artifacts/guzzle.zip
on:
repo: guzzle/guzzle
tags: true
all_branches: true
php: 5.4

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
Copyright (c) 2011-2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,70 @@
Guzzle, PHP HTTP client and webservice framework
================================================
[![Build Status](https://secure.travis-ci.org/guzzle/guzzle.svg?branch=master)](http://travis-ci.org/guzzle/guzzle)
Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
trivial to integrate with web services.
- Manages things like persistent connections, represents query strings as
collections, simplifies sending streaming POST requests with fields and
files, and abstracts away the underlying HTTP transport layer.
- Can send both synchronous and asynchronous requests using the same interface
without requiring a dependency on a specific event loop.
- Pluggable HTTP adapters allows Guzzle to integrate with any method you choose
for sending HTTP requests over the wire (e.g., cURL, sockets, PHP's stream
wrapper, non-blocking event loops like ReactPHP.
- Guzzle makes it so that you no longer need to fool around with cURL options,
stream contexts, or sockets.
```php
$client = new GuzzleHttp\Client();
$response = $client->get('http://guzzlephp.org');
$res = $client->get('https://api.github.com/user', ['auth' => ['user', 'pass']]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'
var_export($res->json());
// Outputs the JSON decoded data
// Send an asynchronous request.
$req = $client->createRequest('GET', 'http://httpbin.org', ['future' => true]);
$client->send($req)->then(function ($response) {
echo 'I completed! ' . $response;
});
```
Get more information and answers with the
[Documentation](http://guzzlephp.org/),
[Forums](https://groups.google.com/forum/?hl=en#!forum/guzzle),
and [Gitter](https://gitter.im/guzzle/guzzle).
### Installing via Composer
The recommended way to install Guzzle is through
[Composer](http://getcomposer.org).
```bash
# Install Composer
curl -sS https://getcomposer.org/installer | php
```
Next, run the Composer command to install the latest stable version of Guzzle:
```bash
composer.phar require guzzlehttp/guzzle
```
After installing, you need to require Composer's autoloader:
```php
require 'vendor/autoload.php';
```
### Documentation
More information can be found in the online documentation at
http://guzzlephp.org/.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
<?php die("Access denied");

View File

@@ -0,0 +1,38 @@
{
"name": "guzzlehttp/guzzle",
"type": "library",
"description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
"keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"],
"homepage": "http://guzzlephp.org/",
"license": "MIT",
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"require": {
"php": ">=5.4.0",
"guzzlehttp/ringphp": "^1.1",
"react/promise": "^2.2"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.0"
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"GuzzleHttp\\Tests\\": "tests/"
}
},
"scripts": {
"test": "make test",
"test-ci": "make coverage"
}
}

View File

@@ -0,0 +1 @@
<?php die("Access denied");

View File

@@ -0,0 +1 @@
<?php die("Access denied");

View File

@@ -0,0 +1,148 @@
<?php
namespace GuzzleHttp;
/**
* Represents the result of a batch operation. This result container is
* iterable, countable, and you can can get a result by value using the
* getResult function.
*
* Successful results are anything other than exceptions. Failure results are
* exceptions.
*
* @package GuzzleHttp
*/
class BatchResults implements \Countable, \IteratorAggregate, \ArrayAccess
{
private $hash;
/**
* @param \SplObjectStorage $hash Hash of key objects to result values.
*/
public function __construct(\SplObjectStorage $hash)
{
$this->hash = $hash;
}
/**
* Get the keys that are available on the batch result.
*
* @return array
*/
public function getKeys()
{
return iterator_to_array($this->hash);
}
/**
* Gets a result from the container for the given object. When getting
* results for a batch of requests, provide the request object.
*
* @param object $forObject Object to retrieve the result for.
*
* @return mixed|null
*/
public function getResult($forObject)
{
return isset($this->hash[$forObject]) ? $this->hash[$forObject] : null;
}
/**
* Get an array of successful results.
*
* @return array
*/
public function getSuccessful()
{
$results = [];
foreach ($this->hash as $key) {
if (!($this->hash[$key] instanceof \Exception)) {
$results[] = $this->hash[$key];
}
}
return $results;
}
/**
* Get an array of failed results.
*
* @return array
*/
public function getFailures()
{
$results = [];
foreach ($this->hash as $key) {
if ($this->hash[$key] instanceof \Exception) {
$results[] = $this->hash[$key];
}
}
return $results;
}
/**
* Allows iteration over all batch result values.
*
* @return \ArrayIterator
*/
public function getIterator()
{
$results = [];
foreach ($this->hash as $key) {
$results[] = $this->hash[$key];
}
return new \ArrayIterator($results);
}
/**
* Counts the number of elements in the batch result.
*
* @return int
*/
public function count()
{
return count($this->hash);
}
/**
* Checks if the batch contains a specific numerical array index.
*
* @param int $key Index to access
*
* @return bool
*/
public function offsetExists($key)
{
return $key < count($this->hash);
}
/**
* Allows access of the batch using a numerical array index.
*
* @param int $key Index to access.
*
* @return mixed|null
*/
public function offsetGet($key)
{
$i = -1;
foreach ($this->hash as $obj) {
if ($key === ++$i) {
return $this->hash[$obj];
}
}
return null;
}
public function offsetUnset($key)
{
throw new \RuntimeException('Not implemented');
}
public function offsetSet($key, $value)
{
throw new \RuntimeException('Not implemented');
}
}

View File

@@ -0,0 +1,362 @@
<?php
namespace GuzzleHttp;
use GuzzleHttp\Event\HasEmitterTrait;
use GuzzleHttp\Message\MessageFactory;
use GuzzleHttp\Message\MessageFactoryInterface;
use GuzzleHttp\Message\RequestInterface;
use GuzzleHttp\Message\FutureResponse;
use GuzzleHttp\Ring\Core;
use GuzzleHttp\Ring\Future\FutureInterface;
use GuzzleHttp\Exception\RequestException;
use React\Promise\FulfilledPromise;
use React\Promise\RejectedPromise;
/**
* HTTP client
*/
class Client implements ClientInterface
{
use HasEmitterTrait;
/** @var MessageFactoryInterface Request factory used by the client */
private $messageFactory;
/** @var Url Base URL of the client */
private $baseUrl;
/** @var array Default request options */
private $defaults;
/** @var callable Request state machine */
private $fsm;
/**
* Clients accept an array of constructor parameters.
*
* Here's an example of creating a client using an URI template for the
* client's base_url and an array of default request options to apply
* to each request:
*
* $client = new Client([
* 'base_url' => [
* 'http://www.foo.com/{version}/',
* ['version' => '123']
* ],
* 'defaults' => [
* 'timeout' => 10,
* 'allow_redirects' => false,
* 'proxy' => '192.168.16.1:10'
* ]
* ]);
*
* @param array $config Client configuration settings
* - base_url: Base URL of the client that is merged into relative URLs.
* Can be a string or an array that contains a URI template followed
* by an associative array of expansion variables to inject into the
* URI template.
* - handler: callable RingPHP handler used to transfer requests
* - message_factory: Factory used to create request and response object
* - defaults: Default request options to apply to each request
* - emitter: Event emitter used for request events
* - fsm: (internal use only) The request finite state machine. A
* function that accepts a transaction and optional final state. The
* function is responsible for transitioning a request through its
* lifecycle events.
*/
public function __construct(array $config = [])
{
$this->configureBaseUrl($config);
$this->configureDefaults($config);
if (isset($config['emitter'])) {
$this->emitter = $config['emitter'];
}
$this->messageFactory = isset($config['message_factory'])
? $config['message_factory']
: new MessageFactory();
if (isset($config['fsm'])) {
$this->fsm = $config['fsm'];
} else {
if (isset($config['handler'])) {
$handler = $config['handler'];
} elseif (isset($config['adapter'])) {
$handler = $config['adapter'];
} else {
$handler = Utils::getDefaultHandler();
}
$this->fsm = new RequestFsm($handler, $this->messageFactory);
}
}
public function getDefaultOption($keyOrPath = null)
{
return $keyOrPath === null
? $this->defaults
: Utils::getPath($this->defaults, $keyOrPath);
}
public function setDefaultOption($keyOrPath, $value)
{
Utils::setPath($this->defaults, $keyOrPath, $value);
}
public function getBaseUrl()
{
return (string) $this->baseUrl;
}
public function createRequest($method, $url = null, array $options = [])
{
$options = $this->mergeDefaults($options);
// Use a clone of the client's emitter
$options['config']['emitter'] = clone $this->getEmitter();
$url = $url || (is_string($url) && strlen($url))
? $this->buildUrl($url)
: (string) $this->baseUrl;
return $this->messageFactory->createRequest($method, $url, $options);
}
public function get($url = null, $options = [])
{
return $this->send($this->createRequest('GET', $url, $options));
}
public function head($url = null, array $options = [])
{
return $this->send($this->createRequest('HEAD', $url, $options));
}
public function delete($url = null, array $options = [])
{
return $this->send($this->createRequest('DELETE', $url, $options));
}
public function put($url = null, array $options = [])
{
return $this->send($this->createRequest('PUT', $url, $options));
}
public function patch($url = null, array $options = [])
{
return $this->send($this->createRequest('PATCH', $url, $options));
}
public function post($url = null, array $options = [])
{
return $this->send($this->createRequest('POST', $url, $options));
}
public function options($url = null, array $options = [])
{
return $this->send($this->createRequest('OPTIONS', $url, $options));
}
public function send(RequestInterface $request)
{
$isFuture = $request->getConfig()->get('future');
$trans = new Transaction($this, $request, $isFuture);
$fn = $this->fsm;
try {
$fn($trans);
if ($isFuture) {
// Turn the normal response into a future if needed.
return $trans->response instanceof FutureInterface
? $trans->response
: new FutureResponse(new FulfilledPromise($trans->response));
}
// Resolve deep futures if this is not a future
// transaction. This accounts for things like retries
// that do not have an immediate side-effect.
while ($trans->response instanceof FutureInterface) {
$trans->response = $trans->response->wait();
}
return $trans->response;
} catch (\Exception $e) {
if ($isFuture) {
// Wrap the exception in a promise
return new FutureResponse(new RejectedPromise($e));
}
throw RequestException::wrapException($trans->request, $e);
} catch (\TypeError $error) {
$exception = new \Exception($error->getMessage(), $error->getCode(), $error);
if ($isFuture) {
// Wrap the exception in a promise
return new FutureResponse(new RejectedPromise($exception));
}
throw RequestException::wrapException($trans->request, $exception);
}
}
/**
* Get an array of default options to apply to the client
*
* @return array
*/
protected function getDefaultOptions()
{
$settings = [
'allow_redirects' => true,
'exceptions' => true,
'decode_content' => true,
'verify' => true
];
// Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
// We can only trust the HTTP_PROXY environment variable in a CLI
// process due to the fact that PHP has no reliable mechanism to
// get environment variables that start with "HTTP_".
if (php_sapi_name() == 'cli' && getenv('HTTP_PROXY')) {
$settings['proxy']['http'] = getenv('HTTP_PROXY');
}
if ($proxy = getenv('HTTPS_PROXY')) {
$settings['proxy']['https'] = $proxy;
}
return $settings;
}
/**
* Expand a URI template and inherit from the base URL if it's relative
*
* @param string|array $url URL or an array of the URI template to expand
* followed by a hash of template varnames.
* @return string
* @throws \InvalidArgumentException
*/
private function buildUrl($url)
{
// URI template (absolute or relative)
if (!is_array($url)) {
return strpos($url, '://')
? (string) $url
: (string) $this->baseUrl->combine($url);
}
if (!isset($url[1])) {
throw new \InvalidArgumentException('You must provide a hash of '
. 'varname options in the second element of a URL array.');
}
// Absolute URL
if (strpos($url[0], '://')) {
return Utils::uriTemplate($url[0], $url[1]);
}
// Combine the relative URL with the base URL
return (string) $this->baseUrl->combine(
Utils::uriTemplate($url[0], $url[1])
);
}
private function configureBaseUrl(&$config)
{
if (!isset($config['base_url'])) {
$this->baseUrl = new Url('', '');
} elseif (!is_array($config['base_url'])) {
$this->baseUrl = Url::fromString($config['base_url']);
} elseif (count($config['base_url']) < 2) {
throw new \InvalidArgumentException('You must provide a hash of '
. 'varname options in the second element of a base_url array.');
} else {
$this->baseUrl = Url::fromString(
Utils::uriTemplate(
$config['base_url'][0],
$config['base_url'][1]
)
);
$config['base_url'] = (string) $this->baseUrl;
}
}
private function configureDefaults($config)
{
if (!isset($config['defaults'])) {
$this->defaults = $this->getDefaultOptions();
} else {
$this->defaults = array_replace(
$this->getDefaultOptions(),
$config['defaults']
);
}
// Add the default user-agent header
if (!isset($this->defaults['headers'])) {
$this->defaults['headers'] = [
'User-Agent' => Utils::getDefaultUserAgent()
];
} elseif (!Core::hasHeader($this->defaults, 'User-Agent')) {
// Add the User-Agent header if one was not already set
$this->defaults['headers']['User-Agent'] = Utils::getDefaultUserAgent();
}
}
/**
* Merges default options into the array passed by reference.
*
* @param array $options Options to modify by reference
*
* @return array
*/
private function mergeDefaults($options)
{
$defaults = $this->defaults;
// Case-insensitively merge in default headers if both defaults and
// options have headers specified.
if (!empty($defaults['headers']) && !empty($options['headers'])) {
// Create a set of lowercased keys that are present.
$lkeys = [];
foreach (array_keys($options['headers']) as $k) {
$lkeys[strtolower($k)] = true;
}
// Merge in lowercase default keys when not present in above set.
foreach ($defaults['headers'] as $key => $value) {
if (!isset($lkeys[strtolower($key)])) {
$options['headers'][$key] = $value;
}
}
// No longer need to merge in headers.
unset($defaults['headers']);
}
$result = array_replace_recursive($defaults, $options);
foreach ($options as $k => $v) {
if ($v === null) {
unset($result[$k]);
}
}
return $result;
}
/**
* @deprecated Use {@see GuzzleHttp\Pool} instead.
* @see GuzzleHttp\Pool
*/
public function sendAll($requests, array $options = [])
{
Pool::send($this, $requests, $options);
}
/**
* @deprecated Use GuzzleHttp\Utils::getDefaultHandler
*/
public static function getDefaultHandler()
{
return Utils::getDefaultHandler();
}
/**
* @deprecated Use GuzzleHttp\Utils::getDefaultUserAgent
*/
public static function getDefaultUserAgent()
{
return Utils::getDefaultUserAgent();
}
}

View File

@@ -0,0 +1,150 @@
<?php
namespace GuzzleHttp;
use GuzzleHttp\Event\HasEmitterInterface;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Message\RequestInterface;
use GuzzleHttp\Message\ResponseInterface;
/**
* Client interface for sending HTTP requests
*/
interface ClientInterface extends HasEmitterInterface
{
const VERSION = '5.3.1';
/**
* Create and return a new {@see RequestInterface} object.
*
* Use an absolute path to override the base path of the client, or a
* relative path to append to the base path of the client. The URL can
* contain the query string as well. Use an array to provide a URL
* template and additional variables to use in the URL template expansion.
*
* @param string $method HTTP method
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return RequestInterface
*/
public function createRequest($method, $url = null, array $options = []);
/**
* Send a GET request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function get($url = null, $options = []);
/**
* Send a HEAD request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function head($url = null, array $options = []);
/**
* Send a DELETE request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function delete($url = null, array $options = []);
/**
* Send a PUT request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function put($url = null, array $options = []);
/**
* Send a PATCH request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function patch($url = null, array $options = []);
/**
* Send a POST request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function post($url = null, array $options = []);
/**
* Send an OPTIONS request
*
* @param string|array|Url $url URL or URI template
* @param array $options Array of request options to apply.
*
* @return ResponseInterface
* @throws RequestException When an error is encountered
*/
public function options($url = null, array $options = []);
/**
* Sends a single request
*
* @param RequestInterface $request Request to send
*
* @return \GuzzleHttp\Message\ResponseInterface
* @throws \LogicException When the handler does not populate a response
* @throws RequestException When an error is encountered
*/
public function send(RequestInterface $request);
/**
* Get default request options of the client.
*
* @param string|null $keyOrPath The Path to a particular default request
* option to retrieve or pass null to retrieve all default request
* options. The syntax uses "/" to denote a path through nested PHP
* arrays. For example, "headers/content-type".
*
* @return mixed
*/
public function getDefaultOption($keyOrPath = null);
/**
* Set a default request option on the client so that any request created
* by the client will use the provided default value unless overridden
* explicitly when creating a request.
*
* @param string|null $keyOrPath The Path to a particular configuration
* value to set. The syntax uses a path notation that allows you to
* specify nested configuration values (e.g., 'headers/content-type').
* @param mixed $value Default request option value to set
*/
public function setDefaultOption($keyOrPath, $value);
/**
* Get the base URL of the client.
*
* @return string Returns the base URL if present
*/
public function getBaseUrl();
}

View File

@@ -0,0 +1,236 @@
<?php
namespace GuzzleHttp;
/**
* Key value pair collection object
*/
class Collection implements
\ArrayAccess,
\IteratorAggregate,
\Countable,
ToArrayInterface
{
use HasDataTrait;
/**
* @param array $data Associative array of data to set
*/
public function __construct(array $data = [])
{
$this->data = $data;
}
/**
* Create a new collection from an array, validate the keys, and add default
* values where missing
*
* @param array $config Configuration values to apply.
* @param array $defaults Default parameters
* @param array $required Required parameter names
*
* @return self
* @throws \InvalidArgumentException if a parameter is missing
*/
public static function fromConfig(
array $config = [],
array $defaults = [],
array $required = []
) {
$data = $config + $defaults;
if ($missing = array_diff($required, array_keys($data))) {
throw new \InvalidArgumentException(
'Config is missing the following keys: ' .
implode(', ', $missing));
}
return new self($data);
}
/**
* Removes all key value pairs
*/
public function clear()
{
$this->data = [];
}
/**
* Get a specific key value.
*
* @param string $key Key to retrieve.
*
* @return mixed|null Value of the key or NULL
*/
public function get($key)
{
return isset($this->data[$key]) ? $this->data[$key] : null;
}
/**
* Set a key value pair
*
* @param string $key Key to set
* @param mixed $value Value to set
*/
public function set($key, $value)
{
$this->data[$key] = $value;
}
/**
* Add a value to a key. If a key of the same name has already been added,
* the key value will be converted into an array and the new value will be
* pushed to the end of the array.
*
* @param string $key Key to add
* @param mixed $value Value to add to the key
*/
public function add($key, $value)
{
if (!array_key_exists($key, $this->data)) {
$this->data[$key] = $value;
} elseif (is_array($this->data[$key])) {
$this->data[$key][] = $value;
} else {
$this->data[$key] = array($this->data[$key], $value);
}
}
/**
* Remove a specific key value pair
*
* @param string $key A key to remove
*/
public function remove($key)
{
unset($this->data[$key]);
}
/**
* Get all keys in the collection
*
* @return array
*/
public function getKeys()
{
return array_keys($this->data);
}
/**
* Returns whether or not the specified key is present.
*
* @param string $key The key for which to check the existence.
*
* @return bool
*/
public function hasKey($key)
{
return array_key_exists($key, $this->data);
}
/**
* Checks if any keys contains a certain value
*
* @param string $value Value to search for
*
* @return mixed Returns the key if the value was found FALSE if the value
* was not found.
*/
public function hasValue($value)
{
return array_search($value, $this->data, true);
}
/**
* Replace the data of the object with the value of an array
*
* @param array $data Associative array of data
*/
public function replace(array $data)
{
$this->data = $data;
}
/**
* Add and merge in a Collection or array of key value pair data.
*
* @param Collection|array $data Associative array of key value pair data
*/
public function merge($data)
{
foreach ($data as $key => $value) {
$this->add($key, $value);
}
}
/**
* Overwrite key value pairs in this collection with all of the data from
* an array or collection.
*
* @param array|\Traversable $data Values to override over this config
*/
public function overwriteWith($data)
{
if (is_array($data)) {
$this->data = $data + $this->data;
} elseif ($data instanceof Collection) {
$this->data = $data->toArray() + $this->data;
} else {
foreach ($data as $key => $value) {
$this->data[$key] = $value;
}
}
}
/**
* Returns a Collection containing all the elements of the collection after
* applying the callback function to each one.
*
* The callable should accept three arguments:
* - (string) $key
* - (string) $value
* - (array) $context
*
* The callable must return a the altered or unaltered value.
*
* @param callable $closure Map function to apply
* @param array $context Context to pass to the callable
*
* @return Collection
*/
public function map(callable $closure, array $context = [])
{
$collection = new static();
foreach ($this as $key => $value) {
$collection[$key] = $closure($key, $value, $context);
}
return $collection;
}
/**
* Iterates over each key value pair in the collection passing them to the
* callable. If the callable returns true, the current value from input is
* returned into the result Collection.
*
* The callable must accept two arguments:
* - (string) $key
* - (string) $value
*
* @param callable $closure Evaluation function
*
* @return Collection
*/
public function filter(callable $closure)
{
$collection = new static();
foreach ($this->data as $key => $value) {
if ($closure($key, $value)) {
$collection[$key] = $value;
}
}
return $collection;
}
}

View File

@@ -0,0 +1,248 @@
<?php
namespace GuzzleHttp\Cookie;
use GuzzleHttp\Message\RequestInterface;
use GuzzleHttp\Message\ResponseInterface;
use GuzzleHttp\ToArrayInterface;
/**
* Cookie jar that stores cookies an an array
*/
class CookieJar implements CookieJarInterface, ToArrayInterface
{
/** @var SetCookie[] Loaded cookie data */
private $cookies = [];
/** @var bool */
private $strictMode;
/**
* @param bool $strictMode Set to true to throw exceptions when invalid
* cookies are added to the cookie jar.
* @param array $cookieArray Array of SetCookie objects or a hash of arrays
* that can be used with the SetCookie constructor
*/
public function __construct($strictMode = false, $cookieArray = [])
{
$this->strictMode = $strictMode;
foreach ($cookieArray as $cookie) {
if (!($cookie instanceof SetCookie)) {
$cookie = new SetCookie($cookie);
}
$this->setCookie($cookie);
}
}
/**
* Create a new Cookie jar from an associative array and domain.
*
* @param array $cookies Cookies to create the jar from
* @param string $domain Domain to set the cookies to
*
* @return self
*/
public static function fromArray(array $cookies, $domain)
{
$cookieJar = new self();
foreach ($cookies as $name => $value) {
$cookieJar->setCookie(new SetCookie([
'Domain' => $domain,
'Name' => $name,
'Value' => $value,
'Discard' => true
]));
}
return $cookieJar;
}
/**
* Quote the cookie value if it is not already quoted and it contains
* problematic characters.
*
* @param string $value Value that may or may not need to be quoted
*
* @return string
*/
public static function getCookieValue($value)
{
if (substr($value, 0, 1) !== '"' &&
substr($value, -1, 1) !== '"' &&
strpbrk($value, ';,')
) {
$value = '"' . $value . '"';
}
return $value;
}
public function toArray()
{
return array_map(function (SetCookie $cookie) {
return $cookie->toArray();
}, $this->getIterator()->getArrayCopy());
}
public function clear($domain = null, $path = null, $name = null)
{
if (!$domain) {
$this->cookies = [];
return;
} elseif (!$path) {
$this->cookies = array_filter(
$this->cookies,
function (SetCookie $cookie) use ($path, $domain) {
return !$cookie->matchesDomain($domain);
}
);
} elseif (!$name) {
$this->cookies = array_filter(
$this->cookies,
function (SetCookie $cookie) use ($path, $domain) {
return !($cookie->matchesPath($path) &&
$cookie->matchesDomain($domain));
}
);
} else {
$this->cookies = array_filter(
$this->cookies,
function (SetCookie $cookie) use ($path, $domain, $name) {
return !($cookie->getName() == $name &&
$cookie->matchesPath($path) &&
$cookie->matchesDomain($domain));
}
);
}
}
public function clearSessionCookies()
{
$this->cookies = array_filter(
$this->cookies,
function (SetCookie $cookie) {
return !$cookie->getDiscard() && $cookie->getExpires();
}
);
}
public function setCookie(SetCookie $cookie)
{
// Only allow cookies with set and valid domain, name, value
$result = $cookie->validate();
if ($result !== true) {
if ($this->strictMode) {
throw new \RuntimeException('Invalid cookie: ' . $result);
} else {
$this->removeCookieIfEmpty($cookie);
return false;
}
}
// Resolve conflicts with previously set cookies
foreach ($this->cookies as $i => $c) {
// Two cookies are identical, when their path, and domain are
// identical.
if ($c->getPath() != $cookie->getPath() ||
$c->getDomain() != $cookie->getDomain() ||
$c->getName() != $cookie->getName()
) {
continue;
}
// The previously set cookie is a discard cookie and this one is
// not so allow the new cookie to be set
if (!$cookie->getDiscard() && $c->getDiscard()) {
unset($this->cookies[$i]);
continue;
}
// If the new cookie's expiration is further into the future, then
// replace the old cookie
if ($cookie->getExpires() > $c->getExpires()) {
unset($this->cookies[$i]);
continue;
}
// If the value has changed, we better change it
if ($cookie->getValue() !== $c->getValue()) {
unset($this->cookies[$i]);
continue;
}
// The cookie exists, so no need to continue
return false;
}
$this->cookies[] = $cookie;
return true;
}
public function count()
{
return count($this->cookies);
}
public function getIterator()
{
return new \ArrayIterator(array_values($this->cookies));
}
public function extractCookies(
RequestInterface $request,
ResponseInterface $response
) {
if ($cookieHeader = $response->getHeaderAsArray('Set-Cookie')) {
foreach ($cookieHeader as $cookie) {
$sc = SetCookie::fromString($cookie);
if (!$sc->getDomain()) {
$sc->setDomain($request->getHost());
}
$this->setCookie($sc);
}
}
}
public function addCookieHeader(RequestInterface $request)
{
$values = [];
$scheme = $request->getScheme();
$host = $request->getHost();
$path = $request->getPath();
foreach ($this->cookies as $cookie) {
if ($cookie->matchesPath($path) &&
$cookie->matchesDomain($host) &&
!$cookie->isExpired() &&
(!$cookie->getSecure() || $scheme == 'https')
) {
$values[] = $cookie->getName() . '='
. self::getCookieValue($cookie->getValue());
}
}
if ($values) {
$request->setHeader('Cookie', implode('; ', $values));
}
}
/**
* If a cookie already exists and the server asks to set it again with a
* null value, the cookie must be deleted.
*
* @param SetCookie $cookie
*/
private function removeCookieIfEmpty(SetCookie $cookie)
{
$cookieValue = $cookie->getValue();
if ($cookieValue === null || $cookieValue === '') {
$this->clear(
$cookie->getDomain(),
$cookie->getPath(),
$cookie->getName()
);
}
}
}

View File

@@ -0,0 +1,75 @@
<?php
namespace GuzzleHttp\Cookie;
use GuzzleHttp\Message\RequestInterface;
use GuzzleHttp\Message\ResponseInterface;
/**
* Stores HTTP cookies.
*
* It extracts cookies from HTTP requests, and returns them in HTTP responses.
* CookieJarInterface instances automatically expire contained cookies when
* necessary. Subclasses are also responsible for storing and retrieving
* cookies from a file, database, etc.
*
* @link http://docs.python.org/2/library/cookielib.html Inspiration
*/
interface CookieJarInterface extends \Countable, \IteratorAggregate
{
/**
* Add a Cookie header to a request.
*
* If no matching cookies are found in the cookie jar, then no Cookie
* header is added to the request.
*
* @param RequestInterface $request Request object to update
*/
public function addCookieHeader(RequestInterface $request);
/**
* Extract cookies from an HTTP response and store them in the CookieJar.
*
* @param RequestInterface $request Request that was sent
* @param ResponseInterface $response Response that was received
*/
public function extractCookies(
RequestInterface $request,
ResponseInterface $response
);
/**
* Sets a cookie in the cookie jar.
*
* @param SetCookie $cookie Cookie to set.
*
* @return bool Returns true on success or false on failure
*/
public function setCookie(SetCookie $cookie);
/**
* Remove cookies currently held in the cookie jar.
*
* Invoking this method without arguments will empty the whole cookie jar.
* If given a $domain argument only cookies belonging to that domain will
* be removed. If given a $domain and $path argument, cookies belonging to
* the specified path within that domain are removed. If given all three
* arguments, then the cookie with the specified name, path and domain is
* removed.
*
* @param string $domain Clears cookies matching a domain
* @param string $path Clears cookies matching a domain and path
* @param string $name Clears cookies matching a domain, path, and name
*
* @return CookieJarInterface
*/
public function clear($domain = null, $path = null, $name = null);
/**
* Discard all sessions cookies.
*
* Removes cookies that don't have an expire field or a have a discard
* field set to true. To be called when the user agent shuts down according
* to RFC 2965.
*/
public function clearSessionCookies();
}

View File

@@ -0,0 +1,86 @@
<?php
namespace GuzzleHttp\Cookie;
use GuzzleHttp\Utils;
/**
* Persists non-session cookies using a JSON formatted file
*/
class FileCookieJar extends CookieJar
{
/** @var string filename */
private $filename;
/**
* Create a new FileCookieJar object
*
* @param string $cookieFile File to store the cookie data
*
* @throws \RuntimeException if the file cannot be found or created
*/
public function __construct($cookieFile)
{
$this->filename = $cookieFile;
if (file_exists($cookieFile)) {
$this->load($cookieFile);
}
}
/**
* Saves the file when shutting down
*/
public function __destruct()
{
$this->save($this->filename);
}
/**
* Saves the cookies to a file.
*
* @param string $filename File to save
* @throws \RuntimeException if the file cannot be found or created
*/
public function save($filename)
{
$json = [];
foreach ($this as $cookie) {
if ($cookie->getExpires() && !$cookie->getDiscard()) {
$json[] = $cookie->toArray();
}
}
if (false === file_put_contents($filename, json_encode($json), LOCK_EX)) {
// @codeCoverageIgnoreStart
throw new \RuntimeException("Unable to save file {$filename}");
// @codeCoverageIgnoreEnd
}
}
/**
* Load cookies from a JSON formatted file.
*
* Old cookies are kept unless overwritten by newly loaded ones.
*
* @param string $filename Cookie file to load.
* @throws \RuntimeException if the file cannot be loaded.
*/
public function load($filename)
{
$json = file_get_contents($filename);
if (false === $json) {
// @codeCoverageIgnoreStart
throw new \RuntimeException("Unable to load file {$filename}");
// @codeCoverageIgnoreEnd
}
$data = Utils::jsonDecode($json, true);
if (is_array($data)) {
foreach (Utils::jsonDecode($json, true) as $cookie) {
$this->setCookie(new SetCookie($cookie));
}
} elseif (strlen($data)) {
throw new \RuntimeException("Invalid cookie file: {$filename}");
}
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace GuzzleHttp\Cookie;
use GuzzleHttp\Utils;
/**
* Persists cookies in the client session
*/
class SessionCookieJar extends CookieJar
{
/** @var string session key */
private $sessionKey;
/**
* Create a new SessionCookieJar object
*
* @param string $sessionKey Session key name to store the cookie data in session
*/
public function __construct($sessionKey)
{
$this->sessionKey = $sessionKey;
$this->load();
}
/**
* Saves cookies to session when shutting down
*/
public function __destruct()
{
$this->save();
}
/**
* Save cookies to the client session
*/
public function save()
{
$json = [];
foreach ($this as $cookie) {
if ($cookie->getExpires() && !$cookie->getDiscard()) {
$json[] = $cookie->toArray();
}
}
$_SESSION[$this->sessionKey] = json_encode($json);
}
/**
* Load the contents of the client session into the data array
*/
protected function load()
{
$cookieJar = isset($_SESSION[$this->sessionKey])
? $_SESSION[$this->sessionKey]
: null;
$data = Utils::jsonDecode($cookieJar, true);
if (is_array($data)) {
foreach ($data as $cookie) {
$this->setCookie(new SetCookie($cookie));
}
} elseif (strlen($data)) {
throw new \RuntimeException("Invalid cookie data");
}
}
}

View File

@@ -0,0 +1,373 @@
<?php
namespace GuzzleHttp\Cookie;
use GuzzleHttp\ToArrayInterface;
/**
* Set-Cookie object
*/
class SetCookie implements ToArrayInterface
{
/** @var array */
private static $defaults = [
'Name' => null,
'Value' => null,
'Domain' => null,
'Path' => '/',
'Max-Age' => null,
'Expires' => null,
'Secure' => false,
'Discard' => false,
'HttpOnly' => false
];
/** @var array Cookie data */
private $data;
/**
* Create a new SetCookie object from a string
*
* @param string $cookie Set-Cookie header string
*
* @return self
*/
public static function fromString($cookie)
{
// Create the default return array
$data = self::$defaults;
// Explode the cookie string using a series of semicolons
$pieces = array_filter(array_map('trim', explode(';', $cookie)));
// The name of the cookie (first kvp) must include an equal sign.
if (empty($pieces) || !strpos($pieces[0], '=')) {
return new self($data);
}
// Add the cookie pieces into the parsed data array
foreach ($pieces as $part) {
$cookieParts = explode('=', $part, 2);
$key = trim($cookieParts[0]);
$value = isset($cookieParts[1])
? trim($cookieParts[1], " \n\r\t\0\x0B\"")
: true;
// Only check for non-cookies when cookies have been found
if (empty($data['Name'])) {
$data['Name'] = $key;
$data['Value'] = $value;
} else {
foreach (array_keys(self::$defaults) as $search) {
if (!strcasecmp($search, $key)) {
$data[$search] = $value;
continue 2;
}
}
$data[$key] = $value;
}
}
return new self($data);
}
/**
* @param array $data Array of cookie data provided by a Cookie parser
*/
public function __construct(array $data = [])
{
$this->data = array_replace(self::$defaults, $data);
// Extract the Expires value and turn it into a UNIX timestamp if needed
if (!$this->getExpires() && $this->getMaxAge()) {
// Calculate the Expires date
$this->setExpires(time() + $this->getMaxAge());
} elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
$this->setExpires($this->getExpires());
}
}
public function __toString()
{
$str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
foreach ($this->data as $k => $v) {
if ($k != 'Name' && $k != 'Value' && $v !== null && $v !== false) {
if ($k == 'Expires') {
$str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
} else {
$str .= ($v === true ? $k : "{$k}={$v}") . '; ';
}
}
}
return rtrim($str, '; ');
}
public function toArray()
{
return $this->data;
}
/**
* Get the cookie name
*
* @return string
*/
public function getName()
{
return $this->data['Name'];
}
/**
* Set the cookie name
*
* @param string $name Cookie name
*/
public function setName($name)
{
$this->data['Name'] = $name;
}
/**
* Get the cookie value
*
* @return string
*/
public function getValue()
{
return $this->data['Value'];
}
/**
* Set the cookie value
*
* @param string $value Cookie value
*/
public function setValue($value)
{
$this->data['Value'] = $value;
}
/**
* Get the domain
*
* @return string|null
*/
public function getDomain()
{
return $this->data['Domain'];
}
/**
* Set the domain of the cookie
*
* @param string $domain
*/
public function setDomain($domain)
{
$this->data['Domain'] = $domain;
}
/**
* Get the path
*
* @return string
*/
public function getPath()
{
return $this->data['Path'];
}
/**
* Set the path of the cookie
*
* @param string $path Path of the cookie
*/
public function setPath($path)
{
$this->data['Path'] = $path;
}
/**
* Maximum lifetime of the cookie in seconds
*
* @return int|null
*/
public function getMaxAge()
{
return $this->data['Max-Age'];
}
/**
* Set the max-age of the cookie
*
* @param int $maxAge Max age of the cookie in seconds
*/
public function setMaxAge($maxAge)
{
$this->data['Max-Age'] = $maxAge;
}
/**
* The UNIX timestamp when the cookie Expires
*
* @return mixed
*/
public function getExpires()
{
return $this->data['Expires'];
}
/**
* Set the unix timestamp for which the cookie will expire
*
* @param int $timestamp Unix timestamp
*/
public function setExpires($timestamp)
{
$this->data['Expires'] = is_numeric($timestamp)
? (int) $timestamp
: strtotime($timestamp);
}
/**
* Get whether or not this is a secure cookie
*
* @return null|bool
*/
public function getSecure()
{
return $this->data['Secure'];
}
/**
* Set whether or not the cookie is secure
*
* @param bool $secure Set to true or false if secure
*/
public function setSecure($secure)
{
$this->data['Secure'] = $secure;
}
/**
* Get whether or not this is a session cookie
*
* @return null|bool
*/
public function getDiscard()
{
return $this->data['Discard'];
}
/**
* Set whether or not this is a session cookie
*
* @param bool $discard Set to true or false if this is a session cookie
*/
public function setDiscard($discard)
{
$this->data['Discard'] = $discard;
}
/**
* Get whether or not this is an HTTP only cookie
*
* @return bool
*/
public function getHttpOnly()
{
return $this->data['HttpOnly'];
}
/**
* Set whether or not this is an HTTP only cookie
*
* @param bool $httpOnly Set to true or false if this is HTTP only
*/
public function setHttpOnly($httpOnly)
{
$this->data['HttpOnly'] = $httpOnly;
}
/**
* Check if the cookie matches a path value
*
* @param string $path Path to check against
*
* @return bool
*/
public function matchesPath($path)
{
return !$this->getPath() || 0 === stripos($path, $this->getPath());
}
/**
* Check if the cookie matches a domain value
*
* @param string $domain Domain to check against
*
* @return bool
*/
public function matchesDomain($domain)
{
// Remove the leading '.' as per spec in RFC 6265.
// http://tools.ietf.org/html/rfc6265#section-5.2.3
$cookieDomain = ltrim($this->getDomain(), '.');
// Domain not set or exact match.
if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) {
return true;
}
// Matching the subdomain according to RFC 6265.
// http://tools.ietf.org/html/rfc6265#section-5.1.3
if (filter_var($domain, FILTER_VALIDATE_IP)) {
return false;
}
return (bool) preg_match('/\.' . preg_quote($cookieDomain) . '$/i', $domain);
}
/**
* Check if the cookie is expired
*
* @return bool
*/
public function isExpired()
{
return $this->getExpires() !== null && time() > $this->getExpires();
}
/**
* Check if the cookie is valid according to RFC 6265
*
* @return bool|string Returns true if valid or an error message if invalid
*/
public function validate()
{
// Names must not be empty, but can be 0
$name = $this->getName();
if (empty($name) && !is_numeric($name)) {
return 'The cookie name must not be empty';
}
// Check if any of the invalid characters are present in the cookie name
if (preg_match("/[=,; \t\r\n\013\014]/", $name)) {
return "Cookie name must not cannot invalid characters: =,; \\t\\r\\n\\013\\014";
}
// Value must not be empty, but can be 0
$value = $this->getValue();
if (empty($value) && !is_numeric($value)) {
return 'The cookie value must not be empty';
}
// Domains must not be empty, but can be 0
// A "0" is not a valid internet domain, but may be used as server name
// in a private network.
$domain = $this->getDomain();
if (empty($domain) && !is_numeric($domain)) {
return 'The cookie domain must not be empty';
}
return true;
}
}

View File

@@ -0,0 +1 @@
<?php die("Access denied");

View File

@@ -0,0 +1,20 @@
<?php
namespace GuzzleHttp\Event;
/**
* Basic event class that can be extended.
*/
abstract class AbstractEvent implements EventInterface
{
private $propagationStopped = false;
public function isPropagationStopped()
{
return $this->propagationStopped;
}
public function stopPropagation()
{
$this->propagationStopped = true;
}
}

View File

@@ -0,0 +1,61 @@
<?php
namespace GuzzleHttp\Event;
use GuzzleHttp\Transaction;
use GuzzleHttp\ClientInterface;
use GuzzleHttp\Message\RequestInterface;
/**
* Base class for request events, providing a request and client getter.
*/
abstract class AbstractRequestEvent extends AbstractEvent
{
/** @var Transaction */
protected $transaction;
/**
* @param Transaction $transaction
*/
public function __construct(Transaction $transaction)
{
$this->transaction = $transaction;
}
/**
* Get the HTTP client associated with the event.
*
* @return ClientInterface
*/
public function getClient()
{
return $this->transaction->client;
}
/**
* Get the request object
*
* @return RequestInterface
*/
public function getRequest()
{
return $this->transaction->request;
}
/**
* Get the number of transaction retries.
*
* @return int
*/
public function getRetryCount()
{
return $this->transaction->retries;
}
/**
* @return Transaction
*/
public function getTransaction()
{
return $this->transaction;
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace GuzzleHttp\Event;
/**
* Abstract request event that can be retried.
*/
class AbstractRetryableEvent extends AbstractTransferEvent
{
/**
* Mark the request as needing a retry and stop event propagation.
*
* This action allows you to retry a request without emitting the "end"
* event multiple times for a given request. When retried, the request
* emits a before event and is then sent again using the client that sent
* the original request.
*
* When retrying, it is important to limit the number of retries you allow
* to prevent infinite loops.
*
* This action can only be taken during the "complete" and "error" events.
*
* @param int $afterDelay If specified, the amount of time in milliseconds
* to delay before retrying. Note that this must
* be supported by the underlying RingPHP handler
* to work properly. Set to 0 or provide no value
* to retry immediately.
*/
public function retry($afterDelay = 0)
{
// Setting the transition state to 'retry' will cause the next state
// transition of the transaction to retry the request.
$this->transaction->state = 'retry';
if ($afterDelay) {
$this->transaction->request->getConfig()->set('delay', $afterDelay);
}
$this->stopPropagation();
}
}

View File

@@ -0,0 +1,63 @@
<?php
namespace GuzzleHttp\Event;
use GuzzleHttp\Message\ResponseInterface;
use GuzzleHttp\Ring\Future\FutureInterface;
/**
* Event that contains transfer statistics, and can be intercepted.
*/
abstract class AbstractTransferEvent extends AbstractRequestEvent
{
/**
* Get all transfer information as an associative array if no $name
* argument is supplied, or gets a specific transfer statistic if
* a $name attribute is supplied (e.g., 'total_time').
*
* @param string $name Name of the transfer stat to retrieve
*
* @return mixed|null|array
*/
public function getTransferInfo($name = null)
{
if (!$name) {
return $this->transaction->transferInfo;
}
return isset($this->transaction->transferInfo[$name])
? $this->transaction->transferInfo[$name]
: null;
}
/**
* Returns true/false if a response is available.
*
* @return bool
*/
public function hasResponse()
{
return !($this->transaction->response instanceof FutureInterface);
}
/**
* Get the response.
*
* @return ResponseInterface|null
*/
public function getResponse()
{
return $this->hasResponse() ? $this->transaction->response : null;
}
/**
* Intercept the request and associate a response
*
* @param ResponseInterface $response Response to set
*/
public function intercept(ResponseInterface $response)
{
$this->transaction->response = $response;
$this->transaction->exception = null;
$this->stopPropagation();
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace GuzzleHttp\Event;
use GuzzleHttp\Message\ResponseInterface;
/**
* Event object emitted before a request is sent.
*
* This event MAY be emitted multiple times (i.e., if a request is retried).
* You MAY change the Response associated with the request using the
* intercept() method of the event.
*/
class BeforeEvent extends AbstractRequestEvent
{
/**
* Intercept the request and associate a response
*
* @param ResponseInterface $response Response to set
*/
public function intercept(ResponseInterface $response)
{
$this->transaction->response = $response;
$this->transaction->exception = null;
$this->stopPropagation();
}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace GuzzleHttp\Event;
/**
* Event object emitted after a request has been completed.
*
* This event MAY be emitted multiple times for a single request. You MAY
* change the Response associated with the request using the intercept()
* method of the event.
*
* This event allows the request to be retried if necessary using the retry()
* method of the event.
*/
class CompleteEvent extends AbstractRetryableEvent {}

View File

@@ -0,0 +1,145 @@
<?php
namespace GuzzleHttp\Event;
/**
* Guzzle event emitter.
*
* Some of this class is based on the Symfony EventDispatcher component, which
* ships with the following license:
*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @link https://github.com/symfony/symfony/tree/master/src/Symfony/Component/EventDispatcher
*/
class Emitter implements EmitterInterface
{
/** @var array */
private $listeners = [];
/** @var array */
private $sorted = [];
public function on($eventName, callable $listener, $priority = 0)
{
if ($priority === 'first') {
$priority = isset($this->listeners[$eventName])
? max(array_keys($this->listeners[$eventName])) + 1
: 1;
} elseif ($priority === 'last') {
$priority = isset($this->listeners[$eventName])
? min(array_keys($this->listeners[$eventName])) - 1
: -1;
}
$this->listeners[$eventName][$priority][] = $listener;
unset($this->sorted[$eventName]);
}
public function once($eventName, callable $listener, $priority = 0)
{
$onceListener = function (
EventInterface $event
) use (&$onceListener, $eventName, $listener, $priority) {
$this->removeListener($eventName, $onceListener);
$listener($event, $eventName);
};
$this->on($eventName, $onceListener, $priority);
}
public function removeListener($eventName, callable $listener)
{
if (empty($this->listeners[$eventName])) {
return;
}
foreach ($this->listeners[$eventName] as $priority => $listeners) {
if (false !== ($key = array_search($listener, $listeners, true))) {
unset(
$this->listeners[$eventName][$priority][$key],
$this->sorted[$eventName]
);
}
}
}
public function listeners($eventName = null)
{
// Return all events in a sorted priority order
if ($eventName === null) {
foreach (array_keys($this->listeners) as $eventName) {
if (empty($this->sorted[$eventName])) {
$this->listeners($eventName);
}
}
return $this->sorted;
}
// Return the listeners for a specific event, sorted in priority order
if (empty($this->sorted[$eventName])) {
$this->sorted[$eventName] = [];
if (isset($this->listeners[$eventName])) {
krsort($this->listeners[$eventName], SORT_NUMERIC);
foreach ($this->listeners[$eventName] as $listeners) {
foreach ($listeners as $listener) {
$this->sorted[$eventName][] = $listener;
}
}
}
}
return $this->sorted[$eventName];
}
public function hasListeners($eventName)
{
return !empty($this->listeners[$eventName]);
}
public function emit($eventName, EventInterface $event)
{
if (isset($this->listeners[$eventName])) {
foreach ($this->listeners($eventName) as $listener) {
$listener($event, $eventName);
if ($event->isPropagationStopped()) {
break;
}
}
}
return $event;
}
public function attach(SubscriberInterface $subscriber)
{
foreach ($subscriber->getEvents() as $eventName => $listeners) {
if (is_array($listeners[0])) {
foreach ($listeners as $listener) {
$this->on(
$eventName,
[$subscriber, $listener[0]],
isset($listener[1]) ? $listener[1] : 0
);
}
} else {
$this->on(
$eventName,
[$subscriber, $listeners[0]],
isset($listeners[1]) ? $listeners[1] : 0
);
}
}
}
public function detach(SubscriberInterface $subscriber)
{
foreach ($subscriber->getEvents() as $eventName => $listener) {
$this->removeListener($eventName, [$subscriber, $listener[0]]);
}
}
}

View File

@@ -0,0 +1,96 @@
<?php
namespace GuzzleHttp\Event;
/**
* Guzzle event emitter.
*/
interface EmitterInterface
{
/**
* Binds a listener to a specific event.
*
* @param string $eventName Name of the event to bind to.
* @param callable $listener Listener to invoke when triggered.
* @param int|string $priority The higher this value, the earlier an event
* listener will be triggered in the chain (defaults to 0). You can
* pass "first" or "last" to dynamically specify the event priority
* based on the current event priorities associated with the given
* event name in the emitter. Use "first" to set the priority to the
* current highest priority plus one. Use "last" to set the priority to
* the current lowest event priority minus one.
*/
public function on($eventName, callable $listener, $priority = 0);
/**
* Binds a listener to a specific event. After the listener is triggered
* once, it is removed as a listener.
*
* @param string $eventName Name of the event to bind to.
* @param callable $listener Listener to invoke when triggered.
* @param int $priority The higher this value, the earlier an event
* listener will be triggered in the chain (defaults to 0)
*/
public function once($eventName, callable $listener, $priority = 0);
/**
* Removes an event listener from the specified event.
*
* @param string $eventName The event to remove a listener from
* @param callable $listener The listener to remove
*/
public function removeListener($eventName, callable $listener);
/**
* Gets the listeners of a specific event or all listeners if no event is
* specified.
*
* @param string $eventName The name of the event. Pass null (the default)
* to retrieve all listeners.
*
* @return array The event listeners for the specified event, or all event
* listeners by event name. The format of the array when retrieving a
* specific event list is an array of callables. The format of the array
* when retrieving all listeners is an associative array of arrays of
* callables.
*/
public function listeners($eventName = null);
/**
* Checks if the emitter has listeners by the given name.
*
* @param string $eventName The name of the event to check.
*
* @return bool
*/
public function hasListeners($eventName);
/**
* Emits an event to all registered listeners.
*
* Each event that is bound to the emitted eventName receives a
* EventInterface, the name of the event, and the event emitter.
*
* @param string $eventName The name of the event to dispatch.
* @param EventInterface $event The event to pass to the event handlers/listeners.
*
* @return EventInterface Returns the provided event object
*/
public function emit($eventName, EventInterface $event);
/**
* Attaches an event subscriber.
*
* The subscriber is asked for all the events it is interested in and added
* as an event listener for each event.
*
* @param SubscriberInterface $subscriber Subscriber to attach.
*/
public function attach(SubscriberInterface $subscriber);
/**
* Detaches an event subscriber.
*
* @param SubscriberInterface $subscriber Subscriber to detach.
*/
public function detach(SubscriberInterface $subscriber);
}

View File

@@ -0,0 +1,28 @@
<?php
namespace GuzzleHttp\Event;
/**
* A terminal event that is emitted when a request transaction has ended.
*
* This event is emitted for both successful responses and responses that
* encountered an exception. You need to check if an exception is present
* in your listener to know the difference.
*
* You MAY intercept the response associated with the event if needed, but keep
* in mind that the "complete" event will not be triggered as a result.
*/
class EndEvent extends AbstractTransferEvent
{
/**
* Get the exception that was encountered (if any).
*
* This method should be used to check if the request was sent successfully
* or if it encountered errors.
*
* @return \Exception|null
*/
public function getException()
{
return $this->transaction->exception;
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace GuzzleHttp\Event;
use GuzzleHttp\Exception\RequestException;
/**
* Event emitted when an error occurs while sending a request.
*
* This event MAY be emitted multiple times. You MAY intercept the exception
* and inject a response into the event to rescue the request using the
* intercept() method of the event.
*
* This event allows the request to be retried using the "retry" method of the
* event.
*/
class ErrorEvent extends AbstractRetryableEvent
{
/**
* Get the exception that was encountered
*
* @return RequestException
*/
public function getException()
{
return $this->transaction->exception;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace GuzzleHttp\Event;
/**
* Base event interface used when dispatching events to listeners using an
* event emitter.
*/
interface EventInterface
{
/**
* Returns whether or not stopPropagation was called on the event.
*
* @return bool
* @see Event::stopPropagation
*/
public function isPropagationStopped();
/**
* Stops the propagation of the event, preventing subsequent listeners
* registered to the same event from being invoked.
*/
public function stopPropagation();
}

View File

@@ -0,0 +1,15 @@
<?php
namespace GuzzleHttp\Event;
/**
* Holds an event emitter
*/
interface HasEmitterInterface
{
/**
* Get the event emitter of the object
*
* @return EmitterInterface
*/
public function getEmitter();
}

View File

@@ -0,0 +1,20 @@
<?php
namespace GuzzleHttp\Event;
/**
* Trait that implements the methods of HasEmitterInterface
*/
trait HasEmitterTrait
{
/** @var EmitterInterface */
private $emitter;
public function getEmitter()
{
if (!$this->emitter) {
$this->emitter = new Emitter();
}
return $this->emitter;
}
}

View File

@@ -0,0 +1,88 @@
<?php
namespace GuzzleHttp\Event;
/**
* Trait that provides methods for extract event listeners specified in an array
* and attaching them to an emitter owned by the object or one of its direct
* dependencies.
*/
trait ListenerAttacherTrait
{
/**
* Attaches event listeners and properly sets their priorities and whether
* or not they are are only executed once.
*
* @param HasEmitterInterface $object Object that has the event emitter.
* @param array $listeners Array of hashes representing event
* event listeners. Each item contains
* "name", "fn", "priority", & "once".
*/
private function attachListeners(HasEmitterInterface $object, array $listeners)
{
$emitter = $object->getEmitter();
foreach ($listeners as $el) {
if ($el['once']) {
$emitter->once($el['name'], $el['fn'], $el['priority']);
} else {
$emitter->on($el['name'], $el['fn'], $el['priority']);
}
}
}
/**
* Extracts the allowed events from the provided array, and ignores anything
* else in the array. The event listener must be specified as a callable or
* as an array of event listener data ("name", "fn", "priority", "once").
*
* @param array $source Array containing callables or hashes of data to be
* prepared as event listeners.
* @param array $events Names of events to look for in the provided $source
* array. Other keys are ignored.
* @return array
*/
private function prepareListeners(array $source, array $events)
{
$listeners = [];
foreach ($events as $name) {
if (isset($source[$name])) {
$this->buildListener($name, $source[$name], $listeners);
}
}
return $listeners;
}
/**
* Creates a complete event listener definition from the provided array of
* listener data. Also works recursively if more than one listeners are
* contained in the provided array.
*
* @param string $name Name of the event the listener is for.
* @param array|callable $data Event listener data to prepare.
* @param array $listeners Array of listeners, passed by reference.
*
* @throws \InvalidArgumentException if the event data is malformed.
*/
private function buildListener($name, $data, &$listeners)
{
static $defaults = ['priority' => 0, 'once' => false];
// If a callable is provided, normalize it to the array format.
if (is_callable($data)) {
$data = ['fn' => $data];
}
// Prepare the listener and add it to the array, recursively.
if (isset($data['fn'])) {
$data['name'] = $name;
$listeners[] = $data + $defaults;
} elseif (is_array($data)) {
foreach ($data as $listenerData) {
$this->buildListener($name, $listenerData, $listeners);
}
} else {
throw new \InvalidArgumentException('Each event listener must be a '
. 'callable or an associative array containing a "fn" key.');
}
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace GuzzleHttp\Event;
use GuzzleHttp\Transaction;
/**
* Event object emitted when upload or download progress is made.
*
* You can access the progress values using their corresponding public
* properties:
*
* - $downloadSize: The number of bytes that will be downloaded (if known)
* - $downloaded: The number of bytes that have been downloaded
* - $uploadSize: The number of bytes that will be uploaded (if known)
* - $uploaded: The number of bytes that have been uploaded
*/
class ProgressEvent extends AbstractRequestEvent
{
/** @var int Amount of data to be downloaded */
public $downloadSize;
/** @var int Amount of data that has been downloaded */
public $downloaded;
/** @var int Amount of data to upload */
public $uploadSize;
/** @var int Amount of data that has been uploaded */
public $uploaded;
/**
* @param Transaction $transaction Transaction being sent.
* @param int $downloadSize Amount of data to download (if known)
* @param int $downloaded Amount of data that has been downloaded
* @param int $uploadSize Amount of data to upload (if known)
* @param int $uploaded Amount of data that had been uploaded
*/
public function __construct(
Transaction $transaction,
$downloadSize,
$downloaded,
$uploadSize,
$uploaded
) {
parent::__construct($transaction);
$this->downloadSize = $downloadSize;
$this->downloaded = $downloaded;
$this->uploadSize = $uploadSize;
$this->uploaded = $uploaded;
}
}

View File

@@ -0,0 +1,56 @@
<?php
namespace GuzzleHttp\Event;
/**
* Contains methods used to manage the request event lifecycle.
*/
final class RequestEvents
{
// Generic event priorities
const EARLY = 10000;
const LATE = -10000;
// "before" priorities
const PREPARE_REQUEST = -100;
const SIGN_REQUEST = -10000;
// "complete" and "error" response priorities
const VERIFY_RESPONSE = 100;
const REDIRECT_RESPONSE = 200;
/**
* Converts an array of event options into a formatted array of valid event
* configuration.
*
* @param array $options Event array to convert
* @param array $events Event names to convert in the options array.
* @param mixed $handler Event handler to utilize
*
* @return array
* @throws \InvalidArgumentException if the event config is invalid
* @internal
*/
public static function convertEventArray(
array $options,
array $events,
$handler
) {
foreach ($events as $name) {
if (!isset($options[$name])) {
$options[$name] = [$handler];
} elseif (is_callable($options[$name])) {
$options[$name] = [$options[$name], $handler];
} elseif (is_array($options[$name])) {
if (isset($options[$name]['fn'])) {
$options[$name] = [$options[$name], $handler];
} else {
$options[$name][] = $handler;
}
} else {
throw new \InvalidArgumentException('Invalid event format');
}
}
return $options;
}
}

Some files were not shown because too many files have changed in this diff Show More